From 010f8105851eec6582d74c1684e8b7e091cb6fa2 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 06:38:13 +1000 Subject: [PATCH 01/23] Create docusite with docusaurus --- README.md | 15 + docusite/.gitignore | 20 + docusite/README.md | 41 + docusite/babel.config.js | 3 + docusite/blog/2021-08-01-mdx-blog-post.mdx | 20 + .../docusaurus-plushie-banner.jpeg | Bin 0 -> 96122 bytes docusite/blog/2022-12-26-welcome/index.md | 25 + docusite/blog/2023-04-13-long-blog-post.md | 26 + docusite/blog/authors.yml | 10 + docusite/docs/hello.md | 44 + docusite/docs/intro.md | 32 + docusite/docs/tree.md | 136 + docusite/docusaurus.config.js | 152 + docusite/package-lock.json | 12651 ++++++++++++++++ docusite/package.json | 43 + docusite/sidebars.js | 33 + .../src/components/HomepageFeatures/index.js | 65 + .../HomepageFeatures/styles.module.css | 11 + docusite/src/css/custom.css | 30 + docusite/src/pages/how-to-site.md | 73 + docusite/src/pages/index.js | 41 + docusite/src/pages/index.module.css | 23 + docusite/static/.nojekyll | 0 .../static/img/docusaurus-social-card.jpg | Bin 0 -> 55746 bytes docusite/static/img/docusaurus.png | Bin 0 -> 5142 bytes docusite/static/img/favicon.ico | Bin 0 -> 3626 bytes docusite/static/img/logo.svg | 1 + docusite/static/img/logo_CES.png | Bin 0 -> 302629 bytes .../static/img/undraw_docusaurus_mountain.svg | 171 + .../static/img/undraw_docusaurus_react.svg | 1178 ++ .../static/img/undraw_docusaurus_tree.svg | 40 + 31 files changed, 14884 insertions(+) create mode 100644 docusite/.gitignore create mode 100644 docusite/README.md create mode 100644 docusite/babel.config.js create mode 100644 docusite/blog/2021-08-01-mdx-blog-post.mdx create mode 100644 docusite/blog/2022-12-26-welcome/docusaurus-plushie-banner.jpeg create mode 100644 docusite/blog/2022-12-26-welcome/index.md create mode 100644 docusite/blog/2023-04-13-long-blog-post.md create mode 100644 docusite/blog/authors.yml create mode 100644 docusite/docs/hello.md create mode 100644 docusite/docs/intro.md create mode 100644 docusite/docs/tree.md create mode 100644 docusite/docusaurus.config.js create mode 100644 docusite/package-lock.json create mode 100644 docusite/package.json create mode 100644 docusite/sidebars.js create mode 100644 docusite/src/components/HomepageFeatures/index.js create mode 100644 docusite/src/components/HomepageFeatures/styles.module.css create mode 100644 docusite/src/css/custom.css create mode 100644 docusite/src/pages/how-to-site.md create mode 100644 docusite/src/pages/index.js create mode 100644 docusite/src/pages/index.module.css create mode 100644 docusite/static/.nojekyll create mode 100644 docusite/static/img/docusaurus-social-card.jpg create mode 100644 docusite/static/img/docusaurus.png create mode 100644 docusite/static/img/favicon.ico create mode 100644 docusite/static/img/logo.svg create mode 100644 docusite/static/img/logo_CES.png create mode 100644 docusite/static/img/undraw_docusaurus_mountain.svg create mode 100644 docusite/static/img/undraw_docusaurus_react.svg create mode 100644 docusite/static/img/undraw_docusaurus_tree.svg diff --git a/README.md b/README.md index 307895e..8c65620 100644 --- a/README.md +++ b/README.md @@ -227,3 +227,18 @@ tree -L 3 $GISDATA |Dataset|source|local|progress| |---|---|---|---| | Daily surface water | [10.1029/2018wr023060](http://dx.doi.org/10.1029/2018wr023060) | $GISDATA/water/ModisDailyWater/ |done| + + +## Documentation with docusaurus +https://docusaurus.io/docs + +Install [Node.js](https://nodejs.org/en/download) + +Then npx docusaurus + +```sh +npx create-docusaurus@latest ~/sandbox/my-docusite classic +cd ~/sandbox/my-docusite +npx docusaurus start +``` + diff --git a/docusite/.gitignore b/docusite/.gitignore new file mode 100644 index 0000000..b2d6de3 --- /dev/null +++ b/docusite/.gitignore @@ -0,0 +1,20 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/docusite/README.md b/docusite/README.md new file mode 100644 index 0000000..aaba2fa --- /dev/null +++ b/docusite/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +Using SSH: + +``` +$ USE_SSH=true yarn deploy +``` + +Not using SSH: + +``` +$ GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docusite/babel.config.js b/docusite/babel.config.js new file mode 100644 index 0000000..e00595d --- /dev/null +++ b/docusite/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/docusite/blog/2021-08-01-mdx-blog-post.mdx b/docusite/blog/2021-08-01-mdx-blog-post.mdx new file mode 100644 index 0000000..0d7ba72 --- /dev/null +++ b/docusite/blog/2021-08-01-mdx-blog-post.mdx @@ -0,0 +1,20 @@ +--- +slug: mdx-blog-post +title: MDX Blog Post +authors: [jrfep] +tags: [docusaurus] +--- + +Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). + +:::tip + +Use the power of React to create interactive blog posts. + +```js + +``` + + + +::: diff --git a/docusite/blog/2022-12-26-welcome/docusaurus-plushie-banner.jpeg b/docusite/blog/2022-12-26-welcome/docusaurus-plushie-banner.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..11bda0928456b12f8e53d0ba5709212a4058d449 GIT binary patch literal 96122 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 literal 0 HcmV?d00001 diff --git a/docusite/blog/2022-12-26-welcome/index.md b/docusite/blog/2022-12-26-welcome/index.md new file mode 100644 index 0000000..d37f6e6 --- /dev/null +++ b/docusite/blog/2022-12-26-welcome/index.md @@ -0,0 +1,25 @@ +--- +slug: welcome +title: Welcome +authors: [jrfep, adasanchez] +tags: [facebook, hello, docusaurus] +--- + +[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). + +Simply add Markdown files (or folders) to the `blog` directory. + +Regular blog authors can be added to `authors.yml`. + +The blog post date can be extracted from filenames, such as: + +- `2019-05-30-welcome.md` +- `2019-05-30-welcome/index.md` + +A blog post folder can be convenient to co-locate blog post images: + +![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) + +The blog supports tags as well! + +**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/docusite/blog/2023-04-13-long-blog-post.md b/docusite/blog/2023-04-13-long-blog-post.md new file mode 100644 index 0000000..38c6120 --- /dev/null +++ b/docusite/blog/2023-04-13-long-blog-post.md @@ -0,0 +1,26 @@ +--- +slug: very-first-blog-post +title: Start of a journey +authors: jrfep +tags: [hello, docusaurus] +--- + +I have been documenting these datasets for the past three years, adding details and details, and the list keeps growing... + +I always had the feeling these docs needed to be shared in a more reader-friendly site. It seems the time has arrived... + + + +Long time ago I started to use markdown for the documentation of each dataset and adopted a consistent folder structure to help me navigate the datasets. Also I started using git and GitHub to keep track of the updates and changes. + +So I think I already had most of the ingredients that I needed. I was just lacking a cool system to bring this all together in an organised way. + +Over the years I have experimented with different approaches to build websites: php, content management systems, flask, hugo, jekyll, quarto, etc. So many options. + +Since all these documents were already in markdown and the code was not supposed to be re-run constantly I just need a very straightforward, no non-sense system that transforms this collection into a clear structure with easy navigation. Blog post would be nice to add some comments to the growing collection of documents, but they should not distract that much from the main feature. + +How did I get the idea of using docusaurus? + +Maybe from here: https://dev.to/mxglt/some-great-tools-to-create-a-static-site-from-your-markdown-documentation-mke or here: https://dev.to/mxglt/docusaurus-or-the-simpliest-way-to-do-a-technical-documentation-4om4 + +So is this the way to get this share this site? \ No newline at end of file diff --git a/docusite/blog/authors.yml b/docusite/blog/authors.yml new file mode 100644 index 0000000..ff12453 --- /dev/null +++ b/docusite/blog/authors.yml @@ -0,0 +1,10 @@ +adasanchez: + name: Ada Sánchez-Mercado + title: mi Ada + image_url: https://github.com/adasanchez.png + +jrfep: + name: José R. Ferrer-Paris + title: Factotum + url: https://github.com/jrfep + image_url: https://github.com/jrfep.png diff --git a/docusite/docs/hello.md b/docusite/docs/hello.md new file mode 100644 index 0000000..8844170 --- /dev/null +++ b/docusite/docs/hello.md @@ -0,0 +1,44 @@ +--- +sidebar_label: 'GIS data' +sidebar_position: 1 +--- + +# GIS data + +GIS data for analysis at the [Centre for Ecosystem Science](https://www.unsw.edu.au/research/ecosystem) at the [University of New South Wales, Sydney](https://www.unsw.edu.au/) + +Maintained by [@jrfep](https://github.com/jrfep) + +## Why? + +This is a repository for the documentation of steps for data access, import, and preparation from different sources. + +Each one of these sources is used for one or more analyses and projects, and thus these lines of codes are used and re-used, modified and improved over and over, thus it makes sense to keep this repo here. + +These datasets have been used for: + +- IUCN Red List of Ecosystem projects +- IUCN Global Ecosystem Typology projects +- Ecosystem monitoring for adaptative management +- Species occupancy and distribution analysis in tropical countries +- Deforestation analysis in tropical countries[^1] + + +## How? + +We run these steps prior to analysis in different environments: + +- on the Katana HPC at UNSW, +- on a Desktop using Linux Solus, +- on a laptop running MacOS. + +Thus we have tried to adapt the code for both Linux and MacOS. We run a bash script to detect the host and set up programing environment variables for the other steps. + +## Workflow on Katana @ UNSW + +For some computations we use the computational cluster Katana supported by Research Technology Services at UNSW Sydney. https://doi.org/10.26190/669x-a286 + +Please check [Katana User’s documentation](https://unsw-restech.github.io/index.html). + +## Footnotes +[^1]: Ok, just Venezuela for now, but it could be replicated elsewhere... \ No newline at end of file diff --git a/docusite/docs/intro.md b/docusite/docs/intro.md new file mode 100644 index 0000000..64c726d --- /dev/null +++ b/docusite/docs/intro.md @@ -0,0 +1,32 @@ +--- +sidebar_position: 2 +--- + +# First steps + +I work mostly in Linux or Mac operating systems, and use bash (or equivalent) in the terminal for most of the data preparation steps. + +## Set up your environment + +I have written a text file with the `bash` commands required to set up computing environment variables, for example the exact location of the GIS data folder is stored in the variable `$GISDATA`, etc. + +The file is called `project-env.sh` and is located in the `env` folder of the repository, I start my session by sourcing that file into the terminal from the repository folder: + +```sh +cd $PATH_TO_REPOSITORY +source env/project-env.sh +``` + +## Setting the path + +Next I create a folder for the dataset and navigate to that folder to do all the data preparation steps. + +I use the `mkdir` command with argument `-p` to create the folder. + +I follow some simple rules to organise my folders. I always start with `$GISDATA` folder, then I select a group name for the type of variable and in each group I have subfolder for `global` and `regional` data sets. I choose a short but meaningful folder name for each datasetm, for example: + +```sh +mkdir -p $GISDATA/vegetation/regional/Peru-vegetacion +cd $GISDATA/vegetation/regional/Peru-vegetacion +``` + diff --git a/docusite/docs/tree.md b/docusite/docs/tree.md new file mode 100644 index 0000000..651a5c8 --- /dev/null +++ b/docusite/docs/tree.md @@ -0,0 +1,136 @@ +--- +sidebar_position: 3 +--- +# Folder structure + +We have explored so many datasets that our folder tree keeps growing and growing. I have made my best effort to add documentation for each dataset, sometimes a very thin placeholder, sometimes a more meticulous guide, sometimes I forget or procrastinate... but they will be there eventually. + +Expand the menus on the left to navigate the intructions for the datasets. + +### What a tree! + +
This tree listing gives an overview of the datasets available in `$GISDATA` in Katana + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +tree -L 3 $GISDATA + +/srv/scratch/cesdata/gisdata +├── admin +│   └── global +│   └── World-Bank +├── antroposphere +│   └── global +│   └── Earthstats +├── climate +│   └── global +│   ├── CHELSA +│   ├── CRU_TS +│   └── Terraclimate +├── cryosphere +│   └── global +│   ├── GLIMS_2019 +│   ├── LIAG_Ice +│   ├── Modis-MOD10A2-V006 +│   ├── Modis-MOD10C2 +│   ├── RGI_6.0 +│   ├── SeaIceIndex +│   ├── SMMR_SeaIceTrends +│   ├── subglacial-lakes +│   ├── VIIRS-VNP10A1F-V001 +│   └── WGI_2012 +├── ecological +│   └── global +│   ├── EcologicalMarineUnits +│   ├── FAO-GEZ +│   └── NatureMap +├── ecoregions +│   ├── global +│   │   ├── FEOW +│   │   ├── LME +│   │   ├── MEOW +│   │   └── TEOW +│   └── regional +│   ├── Canada +│   └── IBRAv7 +├── ecosystems +│   ├── global +│   │   ├── WCMC-coral-reefs +│   │   ├── WCMC-mangroves-2000 +│   │   ├── WCMC-mangroves-GMW +│   │   └── WCMC-mangrove-types +│   └── regional +│   ├── MAES +│   └── worldbank-Central-America +├── fire +│   └── regional +│   └── australia-forest-fire-2011-16 +├── forest +│   ├── global +│   │   ├── 3d-forest-JPL +│   │   └── GFC +│   └── regional +│   ├── Boreal-Forest-Monitoring +│   └── China +├── hydrology +│   └── global +│   ├── GIRES +│   ├── HydroATLAS +│   └── HydroLAKES +├── landcover +│   └── global +│   ├── FROM-GLC10 +│   ├── GLC2000 +│   ├── GlobCover +│   └── Modis +├── land-surface-temperature +│   └── global +│   ├── Modis-. +│   └── Modis-MOD11A2.006 +├── plant-traits +│   └── global +│   └── TRY-leaf-trait-maps +├── protected +│   └── global +│   └── WDPA +├── radiation +│   └── global +│   └── glUV +├── soil +│   ├── global +│   │   └── permafrost +│   └── regional +│   ├── circumpolar_permafrost +│   └── soil-landscape-grid-australia +├── species-dist +│   └── global +│   ├── BOTW +│   └── IUCN_RLTS +├── topography +│   └── global +│   ├── EarthEnv-topography +│   ├── GMBA-Mountain-Inventory +│   ├── GME-Mountain-Inventory +│   └── SRTM30-plus +├── vegcover +│   └── global +│   └── Modis-MOD44B.006 +├── vegetation +│   └── regional +│   ├── IVC-EcoVeg +│   └── NVIS-Australia +├── veglayer +│   ├── global +│   │   └── WHRC-tropics +│   └── regional +│   └── TERN-Vegetation-height +└── water + └── global + └── ModisDailyWater + +111 directories, 0 files + +``` + +
+ diff --git a/docusite/docusaurus.config.js b/docusite/docusaurus.config.js new file mode 100644 index 0000000..7a33854 --- /dev/null +++ b/docusite/docusaurus.config.js @@ -0,0 +1,152 @@ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'GIS data of the Centre for Ecosystem Science', + tagline: 'Spatial data for global ecosystem analyses', + favicon: 'img/favicon.ico', + + // Set the production url of your site here + url: 'https://your-docusaurus-test-site.com', + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', + + // GitHub pages deployment config. + // If you aren't using GitHub pages, you don't need these. + organizationName: 'unsw-edu-au', // Usually your GitHub org/user name. + projectName: 'cesdata', // Usually your repo name. + + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + presets: [ + [ + 'classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + sidebarPath: require.resolve('./sidebars.js'), + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + // editUrl: + // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + }, + blog: { + showReadingTime: true, + // Please change this to your repo. + // Remove this to remove the "edit this page" links. + //editUrl: + // 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + // Replace with your project's social card + image: 'img/docusaurus-social-card.jpg', + navbar: { + title: 'cesdata/gisdata', + logo: { + alt: 'My Site Logo', + src: 'img/logo_CES.png', + }, + items: [ + { + type: 'docSidebar', + sidebarId: 'tutorialSidebar', + position: 'left', + label: 'Tutorial', + }, + {to: '/blog', label: 'Blog', position: 'left'}, + { + href: 'https://github.com/unsw-edu-au/cesdata', + label: 'GitHub', + position: 'right', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Docs', + items: [ + { + label: 'Tutorial', + to: '/docs/intro', + }, + ], + }, + { + title: 'Community', + items: [ + { + label: 'Stack Overflow', + href: 'https://stackoverflow.com/questions/tagged/docusaurus', + }, + { + label: 'Discord', + href: 'https://discordapp.com/invite/docusaurus', + }, + { + label: 'Twitter', + href: 'https://twitter.com/docusaurus', + }, + ], + }, + { + title: 'How to', + items: [ + { + label: 'Set up this site', + to: 'how-to-site', + }, + { + label: 'Use Katana@UNSW', + href: 'https://unsw-restech.github.io/index.html', + }, + ], + }, + { + title: 'More', + items: [ + { + label: 'Blog', + to: '/blog', + }, + { + label: 'GitHub', + href: 'https://github.com/jrfep', + }, + ], + }, + ], + copyright: `Copyright © ${new Date().getFullYear()} José R. Ferrer-Paris / Centre for Ecosystem Science. Built with Docusaurus.`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +}; + +module.exports = config; diff --git a/docusite/package-lock.json b/docusite/package-lock.json new file mode 100644 index 0000000..c2c9296 --- /dev/null +++ b/docusite/package-lock.json @@ -0,0 +1,12651 @@ +{ + "name": "docusite", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "docusite", + "version": "0.0.0", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/preset-classic": "2.4.0", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.7.4.tgz", + "integrity": "sha512-daoLpQ3ps/VTMRZDEBfU8ixXd+amZcNJ4QSP3IERGyzqnL5Ch8uSRFt/4G8pUvW9c3o6GA4vtVv4I4lmnkdXyg==", + "dependencies": { + "@algolia/autocomplete-shared": "1.7.4" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.7.4.tgz", + "integrity": "sha512-s37hrvLEIfcmKY8VU9LsAXgm2yfmkdHT3DnA3SgHaY93yjZ2qL57wzb5QweVkYuEBZkT2PIREvRoLXC2sxTbpQ==", + "dependencies": { + "@algolia/autocomplete-shared": "1.7.4" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.7.4.tgz", + "integrity": "sha512-2VGCk7I9tA9Ge73Km99+Qg87w0wzW4tgUruvWAn/gfey1ZXgmxZtyIRBebk35R1O8TbK77wujVtCnpsGpRy1kg==" + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.17.0.tgz", + "integrity": "sha512-myRSRZDIMYB8uCkO+lb40YKiYHi0fjpWRtJpR/dgkaiBlSD0plRyB6lLOh1XIfmMcSeBOqDE7y9m8xZMrXYfyQ==", + "dependencies": { + "@algolia/cache-common": "4.17.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.17.0.tgz", + "integrity": "sha512-g8mXzkrcUBIPZaulAuqE7xyHhLAYAcF2xSch7d9dABheybaU3U91LjBX6eJTEB7XVhEsgK4Smi27vWtAJRhIKQ==" + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.17.0.tgz", + "integrity": "sha512-PT32ciC/xI8z919d0oknWVu3kMfTlhQn3MKxDln3pkn+yA7F7xrxSALysxquv+MhFfNAcrtQ/oVvQVBAQSHtdw==", + "dependencies": { + "@algolia/cache-common": "4.17.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.17.0.tgz", + "integrity": "sha512-sSEHx9GA6m7wrlsSMNBGfyzlIfDT2fkz2u7jqfCCd6JEEwmxt8emGmxAU/0qBfbhRSuGvzojoLJlr83BSZAKjA==", + "dependencies": { + "@algolia/client-common": "4.17.0", + "@algolia/client-search": "4.17.0", + "@algolia/transporter": "4.17.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.17.0.tgz", + "integrity": "sha512-84ooP8QA3mQ958hQ9wozk7hFUbAO+81CX1CjAuerxBqjKIInh1fOhXKTaku05O/GHBvcfExpPLIQuSuLYziBXQ==", + "dependencies": { + "@algolia/client-common": "4.17.0", + "@algolia/client-search": "4.17.0", + "@algolia/requester-common": "4.17.0", + "@algolia/transporter": "4.17.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.17.0.tgz", + "integrity": "sha512-jHMks0ZFicf8nRDn6ma8DNNsdwGgP/NKiAAL9z6rS7CymJ7L0+QqTJl3rYxRW7TmBhsUH40wqzmrG6aMIN/DrQ==", + "dependencies": { + "@algolia/requester-common": "4.17.0", + "@algolia/transporter": "4.17.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.17.0.tgz", + "integrity": "sha512-RMzN4dZLIta1YuwT7QC9o+OeGz2cU6eTOlGNE/6RcUBLOU3l9tkCOdln5dPE2jp8GZXPl2yk54b2nSs1+pAjqw==", + "dependencies": { + "@algolia/client-common": "4.17.0", + "@algolia/requester-common": "4.17.0", + "@algolia/transporter": "4.17.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.17.0.tgz", + "integrity": "sha512-x4P2wKrrRIXszT8gb7eWsMHNNHAJs0wE7/uqbufm4tZenAp+hwU/hq5KVsY50v+PfwM0LcDwwn/1DroujsTFoA==", + "dependencies": { + "@algolia/client-common": "4.17.0", + "@algolia/requester-common": "4.17.0", + "@algolia/transporter": "4.17.0" + } + }, + "node_modules/@algolia/events": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@algolia/events/-/events-4.0.1.tgz", + "integrity": "sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==" + }, + "node_modules/@algolia/logger-common": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.17.0.tgz", + "integrity": "sha512-DGuoZqpTmIKJFDeyAJ7M8E/LOenIjWiOsg1XJ1OqAU/eofp49JfqXxbfgctlVZVmDABIyOz8LqEoJ6ZP4DTyvw==" + }, + "node_modules/@algolia/logger-console": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.17.0.tgz", + "integrity": "sha512-zMPvugQV/gbXUvWBCzihw6m7oxIKp48w37QBIUu/XqQQfxhjoOE9xyfJr1KldUt5FrYOKZJVsJaEjTsu+bIgQg==", + "dependencies": { + "@algolia/logger-common": "4.17.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.17.0.tgz", + "integrity": "sha512-aSOX/smauyTkP21Pf52pJ1O2LmNFJ5iHRIzEeTh0mwBeADO4GdG94cAWDILFA9rNblq/nK3EDh3+UyHHjplZ1A==", + "dependencies": { + "@algolia/requester-common": "4.17.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.17.0.tgz", + "integrity": "sha512-XJjmWFEUlHu0ijvcHBoixuXfEoiRUdyzQM6YwTuB8usJNIgShua8ouFlRWF8iCeag0vZZiUm4S2WCVBPkdxFgg==" + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.17.0.tgz", + "integrity": "sha512-bpb/wDA1aC6WxxM8v7TsFspB7yBN3nqCGs2H1OADolQR/hiAIjAxusbuMxVbRFOdaUvAIqioIIkWvZdpYNIn8w==", + "dependencies": { + "@algolia/requester-common": "4.17.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.17.0.tgz", + "integrity": "sha512-6xL6H6fe+Fi0AEP3ziSgC+G04RK37iRb4uUUqVAH9WPYFI8g+LYFq6iv5HS8Cbuc5TTut+Bwj6G+dh/asdb9uA==", + "dependencies": { + "@algolia/cache-common": "4.17.0", + "@algolia/logger-common": "4.17.0", + "@algolia/requester-common": "4.17.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.4.tgz", + "integrity": "sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", + "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.4", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.4", + "@babel/types": "^7.21.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", + "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "dependencies": { + "@babel/types": "^7.21.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz", + "integrity": "sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==", + "dependencies": { + "@babel/compat-data": "^7.21.4", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz", + "integrity": "sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz", + "integrity": "sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "dependencies": { + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/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/@babel/highlight/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/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", + "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "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.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.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==", + "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==", + "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-class-static-block": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@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-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "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==", + "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==", + "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==", + "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==", + "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==", + "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==", + "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-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "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-private-property-in-object": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", + "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@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-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "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-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-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "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.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", + "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "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.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", + "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "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.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "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-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^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-transform-for-of": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", + "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", + "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dependencies": { + "@babel/helper-module-transforms": "^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-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-constant-elements": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz", + "integrity": "sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz", + "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^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-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz", + "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==", + "dependencies": { + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-plugin-utils": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", + "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "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-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", + "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "dependencies": { + "@babel/compat-data": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", + "@babel/plugin-proposal-async-generator-functions": "^7.20.7", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.21.0", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.21.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@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.20.0", + "@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-transform-arrow-functions": "^7.20.7", + "@babel/plugin-transform-async-to-generator": "^7.20.7", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.21.0", + "@babel/plugin-transform-classes": "^7.21.0", + "@babel/plugin-transform-computed-properties": "^7.20.7", + "@babel/plugin-transform-destructuring": "^7.21.3", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.21.0", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.20.11", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-modules-systemjs": "^7.20.11", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.21.3", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.20.5", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.20.7", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.21.4", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz", + "integrity": "sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-syntax-jsx": "^7.21.4", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-typescript": "^7.21.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-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.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.21.0.tgz", + "integrity": "sha512-TDD4UJzos3JJtM+tHX+w2Uc+KWj7GV+VKKFdMVd2Rx8sdA19hcc3P3AHFYd5LVOw+pYuSd5lICC3gm52B6Rwxw==", + "dependencies": { + "core-js-pure": "^3.25.1", + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.4.tgz", + "integrity": "sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.4", + "@babel/types": "^7.21.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.4.tgz", + "integrity": "sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.3.3.tgz", + "integrity": "sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==" + }, + "node_modules/@docsearch/react": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.3.3.tgz", + "integrity": "sha512-pLa0cxnl+G0FuIDuYlW+EBK6Rw2jwLw9B1RHIeS4N4s2VhsfJ/wzeCi3CWcs5yVfxLd5ZK50t//TMA5e79YT7Q==", + "dependencies": { + "@algolia/autocomplete-core": "1.7.4", + "@algolia/autocomplete-preset-algolia": "1.7.4", + "@docsearch/css": "3.3.3", + "algoliasearch": "^4.0.0" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@docusaurus/core": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-2.4.0.tgz", + "integrity": "sha512-J55/WEoIpRcLf3afO5POHPguVZosKmJEQWKBL+K7TAnfuE7i+Y0NPLlkKtnWCehagGsgTqClfQEexH/UT4kELA==", + "dependencies": { + "@babel/core": "^7.18.6", + "@babel/generator": "^7.18.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.18.6", + "@babel/preset-env": "^7.18.6", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@babel/runtime": "^7.18.6", + "@babel/runtime-corejs3": "^7.18.6", + "@babel/traverse": "^7.18.8", + "@docusaurus/cssnano-preset": "2.4.0", + "@docusaurus/logger": "2.4.0", + "@docusaurus/mdx-loader": "2.4.0", + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-common": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "@slorber/static-site-generator-webpack-plugin": "^4.0.7", + "@svgr/webpack": "^6.2.1", + "autoprefixer": "^10.4.7", + "babel-loader": "^8.2.5", + "babel-plugin-dynamic-import-node": "^2.3.3", + "boxen": "^6.2.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "clean-css": "^5.3.0", + "cli-table3": "^0.6.2", + "combine-promises": "^1.1.0", + "commander": "^5.1.0", + "copy-webpack-plugin": "^11.0.0", + "core-js": "^3.23.3", + "css-loader": "^6.7.1", + "css-minimizer-webpack-plugin": "^4.0.0", + "cssnano": "^5.1.12", + "del": "^6.1.1", + "detect-port": "^1.3.0", + "escape-html": "^1.0.3", + "eta": "^2.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "html-minifier-terser": "^6.1.0", + "html-tags": "^3.2.0", + "html-webpack-plugin": "^5.5.0", + "import-fresh": "^3.3.0", + "leven": "^3.1.0", + "lodash": "^4.17.21", + "mini-css-extract-plugin": "^2.6.1", + "postcss": "^8.4.14", + "postcss-loader": "^7.0.0", + "prompts": "^2.4.2", + "react-dev-utils": "^12.0.1", + "react-helmet-async": "^1.3.0", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2", + "react-loadable-ssr-addon-v5-slorber": "^1.0.1", + "react-router": "^5.3.3", + "react-router-config": "^5.1.1", + "react-router-dom": "^5.3.3", + "rtl-detect": "^1.0.4", + "semver": "^7.3.7", + "serve-handler": "^6.1.3", + "shelljs": "^0.8.5", + "terser-webpack-plugin": "^5.3.3", + "tslib": "^2.4.0", + "update-notifier": "^5.1.0", + "url-loader": "^4.1.1", + "wait-on": "^6.0.1", + "webpack": "^5.73.0", + "webpack-bundle-analyzer": "^4.5.0", + "webpack-dev-server": "^4.9.3", + "webpack-merge": "^5.8.0", + "webpackbar": "^5.0.2" + }, + "bin": { + "docusaurus": "bin/docusaurus.mjs" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/cssnano-preset": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-2.4.0.tgz", + "integrity": "sha512-RmdiA3IpsLgZGXRzqnmTbGv43W4OD44PCo+6Q/aYjEM2V57vKCVqNzuafE94jv0z/PjHoXUrjr69SaRymBKYYw==", + "dependencies": { + "cssnano-preset-advanced": "^5.3.8", + "postcss": "^8.4.14", + "postcss-sort-media-queries": "^4.2.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/logger": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-2.4.0.tgz", + "integrity": "sha512-T8+qR4APN+MjcC9yL2Es+xPJ2923S9hpzDmMtdsOcUGLqpCGBbU1vp3AAqDwXtVgFkq+NsEk7sHdVsfLWR/AXw==", + "dependencies": { + "chalk": "^4.1.2", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/mdx-loader": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-2.4.0.tgz", + "integrity": "sha512-GWoH4izZKOmFoC+gbI2/y8deH/xKLvzz/T5BsEexBye8EHQlwsA7FMrVa48N063bJBH4FUOiRRXxk5rq9cC36g==", + "dependencies": { + "@babel/parser": "^7.18.8", + "@babel/traverse": "^7.18.8", + "@docusaurus/logger": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@mdx-js/mdx": "^1.6.22", + "escape-html": "^1.0.3", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "image-size": "^1.0.1", + "mdast-util-to-string": "^2.0.0", + "remark-emoji": "^2.2.0", + "stringify-object": "^3.3.0", + "tslib": "^2.4.0", + "unified": "^9.2.2", + "unist-util-visit": "^2.0.3", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/module-type-aliases": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-2.4.0.tgz", + "integrity": "sha512-YEQO2D3UXs72qCn8Cr+RlycSQXVGN9iEUyuHwTuK4/uL/HFomB2FHSU0vSDM23oLd+X/KibQ3Ez6nGjQLqXcHg==", + "dependencies": { + "@docusaurus/react-loadable": "5.5.2", + "@docusaurus/types": "2.4.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "@types/react-router-dom": "*", + "react-helmet-async": "*", + "react-loadable": "npm:@docusaurus/react-loadable@5.5.2" + }, + "peerDependencies": { + "react": "*", + "react-dom": "*" + } + }, + "node_modules/@docusaurus/plugin-content-blog": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.4.0.tgz", + "integrity": "sha512-YwkAkVUxtxoBAIj/MCb4ohN0SCtHBs4AS75jMhPpf67qf3j+U/4n33cELq7567hwyZ6fMz2GPJcVmctzlGGThQ==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/logger": "2.4.0", + "@docusaurus/mdx-loader": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-common": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "cheerio": "^1.0.0-rc.12", + "feed": "^4.2.2", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "reading-time": "^1.5.0", + "tslib": "^2.4.0", + "unist-util-visit": "^2.0.3", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-docs": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.4.0.tgz", + "integrity": "sha512-ic/Z/ZN5Rk/RQo+Io6rUGpToOtNbtPloMR2JcGwC1xT2riMu6zzfSwmBi9tHJgdXH6CB5jG+0dOZZO8QS5tmDg==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/logger": "2.4.0", + "@docusaurus/mdx-loader": "2.4.0", + "@docusaurus/module-type-aliases": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "@types/react-router-config": "^5.0.6", + "combine-promises": "^1.1.0", + "fs-extra": "^10.1.0", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-content-pages": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.4.0.tgz", + "integrity": "sha512-Pk2pOeOxk8MeU3mrTU0XLIgP9NZixbdcJmJ7RUFrZp1Aj42nd0RhIT14BGvXXyqb8yTQlk4DmYGAzqOfBsFyGw==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/mdx-loader": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "fs-extra": "^10.1.0", + "tslib": "^2.4.0", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-debug": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-2.4.0.tgz", + "integrity": "sha512-KC56DdYjYT7Txyux71vXHXGYZuP6yYtqwClvYpjKreWIHWus5Zt6VNi23rMZv3/QKhOCrN64zplUbdfQMvddBQ==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils": "2.4.0", + "fs-extra": "^10.1.0", + "react-json-view": "^1.21.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-analytics": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.4.0.tgz", + "integrity": "sha512-uGUzX67DOAIglygdNrmMOvEp8qG03X20jMWadeqVQktS6nADvozpSLGx4J0xbkblhJkUzN21WiilsP9iVP+zkw==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-gtag": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.4.0.tgz", + "integrity": "sha512-adj/70DANaQs2+TF/nRdMezDXFAV/O/pjAbUgmKBlyOTq5qoMe0Tk4muvQIwWUmiUQxFJe+sKlZGM771ownyOg==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-google-tag-manager": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-2.4.0.tgz", + "integrity": "sha512-E66uGcYs4l7yitmp/8kMEVQftFPwV9iC62ORh47Veqzs6ExwnhzBkJmwDnwIysHBF1vlxnzET0Fl2LfL5fRR3A==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/plugin-sitemap": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.4.0.tgz", + "integrity": "sha512-pZxh+ygfnI657sN8a/FkYVIAmVv0CGk71QMKqJBOfMmDHNN1FeDeFkBjWP49ejBqpqAhjufkv5UWq3UOu2soCw==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/logger": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-common": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "fs-extra": "^10.1.0", + "sitemap": "^7.1.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/preset-classic": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-2.4.0.tgz", + "integrity": "sha512-/5z5o/9bc6+P5ool2y01PbJhoGddEGsC0ej1MF6mCoazk8A+kW4feoUd68l7Bnv01rCnG3xy7kHUQP97Y0grUA==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/plugin-content-blog": "2.4.0", + "@docusaurus/plugin-content-docs": "2.4.0", + "@docusaurus/plugin-content-pages": "2.4.0", + "@docusaurus/plugin-debug": "2.4.0", + "@docusaurus/plugin-google-analytics": "2.4.0", + "@docusaurus/plugin-google-gtag": "2.4.0", + "@docusaurus/plugin-google-tag-manager": "2.4.0", + "@docusaurus/plugin-sitemap": "2.4.0", + "@docusaurus/theme-classic": "2.4.0", + "@docusaurus/theme-common": "2.4.0", + "@docusaurus/theme-search-algolia": "2.4.0", + "@docusaurus/types": "2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/react-loadable": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@docusaurus/theme-classic": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-2.4.0.tgz", + "integrity": "sha512-GMDX5WU6Z0OC65eQFgl3iNNEbI9IMJz9f6KnOyuMxNUR6q0qVLsKCNopFUDfFNJ55UU50o7P7o21yVhkwpfJ9w==", + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/mdx-loader": "2.4.0", + "@docusaurus/module-type-aliases": "2.4.0", + "@docusaurus/plugin-content-blog": "2.4.0", + "@docusaurus/plugin-content-docs": "2.4.0", + "@docusaurus/plugin-content-pages": "2.4.0", + "@docusaurus/theme-common": "2.4.0", + "@docusaurus/theme-translations": "2.4.0", + "@docusaurus/types": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-common": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "copy-text-to-clipboard": "^3.0.1", + "infima": "0.2.0-alpha.43", + "lodash": "^4.17.21", + "nprogress": "^0.2.0", + "postcss": "^8.4.14", + "prism-react-renderer": "^1.3.5", + "prismjs": "^1.28.0", + "react-router-dom": "^5.3.3", + "rtlcss": "^3.5.0", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-common": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-2.4.0.tgz", + "integrity": "sha512-IkG/l5f/FLY6cBIxtPmFnxpuPzc5TupuqlOx+XDN+035MdQcAh8wHXXZJAkTeYDeZ3anIUSUIvWa7/nRKoQEfg==", + "dependencies": { + "@docusaurus/mdx-loader": "2.4.0", + "@docusaurus/module-type-aliases": "2.4.0", + "@docusaurus/plugin-content-blog": "2.4.0", + "@docusaurus/plugin-content-docs": "2.4.0", + "@docusaurus/plugin-content-pages": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-common": "2.4.0", + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router-config": "*", + "clsx": "^1.2.1", + "parse-numeric-range": "^1.3.0", + "prism-react-renderer": "^1.3.5", + "tslib": "^2.4.0", + "use-sync-external-store": "^1.2.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-search-algolia": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.4.0.tgz", + "integrity": "sha512-pPCJSCL1Qt4pu/Z0uxBAuke0yEBbxh0s4fOvimna7TEcBLPq0x06/K78AaABXrTVQM6S0vdocFl9EoNgU17hqA==", + "dependencies": { + "@docsearch/react": "^3.1.1", + "@docusaurus/core": "2.4.0", + "@docusaurus/logger": "2.4.0", + "@docusaurus/plugin-content-docs": "2.4.0", + "@docusaurus/theme-common": "2.4.0", + "@docusaurus/theme-translations": "2.4.0", + "@docusaurus/utils": "2.4.0", + "@docusaurus/utils-validation": "2.4.0", + "algoliasearch": "^4.13.1", + "algoliasearch-helper": "^3.10.0", + "clsx": "^1.2.1", + "eta": "^2.0.0", + "fs-extra": "^10.1.0", + "lodash": "^4.17.21", + "tslib": "^2.4.0", + "utility-types": "^3.10.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/theme-translations": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-2.4.0.tgz", + "integrity": "sha512-kEoITnPXzDPUMBHk3+fzEzbopxLD3fR5sDoayNH0vXkpUukA88/aDL1bqkhxWZHA3LOfJ3f0vJbOwmnXW5v85Q==", + "dependencies": { + "fs-extra": "^10.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "node_modules/@docusaurus/types": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-2.4.0.tgz", + "integrity": "sha512-xaBXr+KIPDkIaef06c+i2HeTqVNixB7yFut5fBXPGI2f1rrmEV2vLMznNGsFwvZ5XmA3Quuefd4OGRkdo97Dhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "commander": "^5.1.0", + "joi": "^17.6.0", + "react-helmet-async": "^1.3.0", + "utility-types": "^3.10.0", + "webpack": "^5.73.0", + "webpack-merge": "^5.8.0" + }, + "peerDependencies": { + "react": "^16.8.4 || ^17.0.0", + "react-dom": "^16.8.4 || ^17.0.0" + } + }, + "node_modules/@docusaurus/utils": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-2.4.0.tgz", + "integrity": "sha512-89hLYkvtRX92j+C+ERYTuSUK6nF9bGM32QThcHPg2EDDHVw6FzYQXmX6/p+pU5SDyyx5nBlE4qXR92RxCAOqfg==", + "dependencies": { + "@docusaurus/logger": "2.4.0", + "@svgr/webpack": "^6.2.1", + "escape-string-regexp": "^4.0.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.1.0", + "github-slugger": "^1.4.0", + "globby": "^11.1.0", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "micromatch": "^4.0.5", + "resolve-pathname": "^3.0.0", + "shelljs": "^0.8.5", + "tslib": "^2.4.0", + "url-loader": "^4.1.1", + "webpack": "^5.73.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-common": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-2.4.0.tgz", + "integrity": "sha512-zIMf10xuKxddYfLg5cS19x44zud/E9I7lj3+0bv8UIs0aahpErfNrGhijEfJpAfikhQ8tL3m35nH3hJ3sOG82A==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + }, + "peerDependencies": { + "@docusaurus/types": "*" + }, + "peerDependenciesMeta": { + "@docusaurus/types": { + "optional": true + } + } + }, + "node_modules/@docusaurus/utils-validation": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-2.4.0.tgz", + "integrity": "sha512-IrBsBbbAp6y7mZdJx4S4pIA7dUyWSA0GNosPk6ZJ0fX3uYIEQgcQSGIgTeSC+8xPEx3c16o03en1jSDpgQgz/w==", + "dependencies": { + "@docusaurus/logger": "2.4.0", + "@docusaurus/utils": "2.4.0", + "joi": "^17.6.0", + "js-yaml": "^4.1.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.14" + } + }, + "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/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dependencies": { + "@jest/schemas": "^29.4.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/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz", + "integrity": "sha512-AMxuLxPz2j5/6TpF/XSdKpQP1NlG0z11dFOlq+2IP/lSgl11GY8ji6S/rgsViN/L0BDvHvUMruRb7ub+24LUYA==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@mdx-js/mdx/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/@mdx-js/mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/react": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-1.6.22.tgz", + "integrity": "sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": "^16.13.1 || ^17.0.0" + } + }, + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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/@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "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.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@slorber/static-site-generator-webpack-plugin": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@slorber/static-site-generator-webpack-plugin/-/static-site-generator-webpack-plugin-4.0.7.tgz", + "integrity": "sha512-Ug7x6z5lwrz0WqdnNFOMYrDQNTPAprvHLSh6+/fmml3qUiz6l5eq+2MzLKWtn/q5K5NpSiFsZTP/fck/3vjSxA==", + "dependencies": { + "eval": "^0.1.8", + "p-map": "^4.0.0", + "webpack-sources": "^3.2.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-7.0.0.tgz", + "integrity": "sha512-iiZaIvb3H/c7d3TH2HBeK91uI2rMhZNwnsIrvd7ZwGLkFw6mmunOCoVnjdYua662MqGFxlN9xTq4fv9hgR4VXQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-7.0.0.tgz", + "integrity": "sha512-sQQmyo+qegBx8DfFc04PFmIO1FP1MHI1/QEpzcIcclo5OAISsOJPW76ZIs0bDyO/DBSJEa/tDa1W26pVtt0FRw==", + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", + "dependencies": { + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@svgr/core": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", + "dependencies": { + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", + "dependencies": { + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" + } + }, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", + "dependencies": { + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" + } + }, + "node_modules/@svgr/webpack": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", + "dependencies": { + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "peer": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/hast": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", + "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/history": { + "version": "4.7.11", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.10", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz", + "integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/mdast": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", + "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==" + }, + "node_modules/@types/node": { + "version": "18.15.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-5.0.3.tgz", + "integrity": "sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/react": { + "version": "18.0.35", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.35.tgz", + "integrity": "sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-router": { + "version": "5.1.20", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", + "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*" + } + }, + "node_modules/@types/react-router-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@types/react-router-config/-/react-router-config-5.0.7.tgz", + "integrity": "sha512-pFFVXUIydHlcJP6wJm7sDii5mD/bCmmAY0wQzq+M+uX7bqS95AQqHZWP1iNMKrWVQSuHIzj5qi9BvrtLX2/T4w==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "^5.1.0" + } + }, + "node_modules/@types/react-router-dom": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", + "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "dependencies": { + "@types/history": "^4.7.11", + "@types/react": "*", + "@types/react-router": "*" + } + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-pSAff4IAxJjfAXUG6tFkO7dsSbTmf8CtUpfhhZ5VhkRpC4628tJhh3+V6H1E+/Gs9piSzYKT5yzHO5M4GG9jkw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/unist": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", + "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==" + }, + "node_modules/@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "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/accepts/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/accepts/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/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/algoliasearch": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.17.0.tgz", + "integrity": "sha512-JMRh2Mw6sEnVMiz6+APsi7lx9a2jiDFF+WUtANaUVCv6uSU9UOLdo5h9K3pdP6frRRybaM2fX8b1u0nqICS9aA==", + "dependencies": { + "@algolia/cache-browser-local-storage": "4.17.0", + "@algolia/cache-common": "4.17.0", + "@algolia/cache-in-memory": "4.17.0", + "@algolia/client-account": "4.17.0", + "@algolia/client-analytics": "4.17.0", + "@algolia/client-common": "4.17.0", + "@algolia/client-personalization": "4.17.0", + "@algolia/client-search": "4.17.0", + "@algolia/logger-common": "4.17.0", + "@algolia/logger-console": "4.17.0", + "@algolia/requester-browser-xhr": "4.17.0", + "@algolia/requester-common": "4.17.0", + "@algolia/requester-node-http": "4.17.0", + "@algolia/transporter": "4.17.0" + } + }, + "node_modules/algoliasearch-helper": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.12.0.tgz", + "integrity": "sha512-/j1U3PEwdan0n6P/QqSnSpNSLC5+cEMvyljd5CnmNmUjDlGrys+vFEOwjVEnqELIiAGMHEA/Nl3CiKVFBUYqyQ==", + "dependencies": { + "@algolia/events": "^4.0.1" + }, + "peerDependencies": { + "algoliasearch": ">= 3.1 < 6" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/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/ansi-align/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/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "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": "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/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/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "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==" + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", + "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "dependencies": { + "follow-redirects": "^1.14.7" + } + }, + "node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-apply-mdx-type-prop/-/babel-plugin-apply-mdx-type-prop-1.6.22.tgz", + "integrity": "sha512-VefL+8o+F/DfK24lPZMtJctrCVOfgbqLAGZSkxwhazQv4VxPg3Za/i40fu22KR2m8eEda+IfSOlPLUSIiLcnCQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@babel/core": "^7.11.6" + } + }, + "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/babel-plugin-extract-import-names/-/babel-plugin-extract-import-names-1.6.22.tgz", + "integrity": "sha512-yJ9BsJaISua7d8zNT7oRG1ZLBJCIdZ4PZqmH8qa9N5AK01ifk3fnkc98AXhtzE7UkfCsEumvoQWgoYLhOnJ7jQ==", + "dependencies": { + "@babel/helper-plugin-utils": "7.10.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/base16": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/boxen": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-6.2.1.tgz", + "integrity": "sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw==", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^6.2.0", + "chalk": "^4.1.2", + "cli-boxes": "^3.0.0", + "string-width": "^5.0.1", + "type-fest": "^2.5.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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/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/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "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/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001478", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz", + "integrity": "sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==", + "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/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/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/cli-table3/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/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/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-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/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==" + }, + "node_modules/combine-promises": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/combine-promises/-/combine-promises-1.1.0.tgz", + "integrity": "sha512-ZI9jvcLDxqwaXEixOhArm3r7ReIivsXkpbyEWyeOhzz1QS0iSgBPnWvEqvIQtYyamGCYA88gFhmUrs9hrrQ0pg==", + "engines": { + "node": ">=10" + } + }, + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz", + "integrity": "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "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/compressible/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/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/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "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/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==" + }, + "node_modules/content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-text-to-clipboard": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.1.0.tgz", + "integrity": "sha512-PFM6BnjLnOON/lB3ta/Jg7Ywsv+l9kQGD4TWDCSlRBGmqnnTM5MrDkhAFgw+8HZt0wW6Q2BBE4cmy9sq+s9Qng==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/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==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/core-js": { + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz", + "integrity": "sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz", + "integrity": "sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==", + "dependencies": { + "browserslist": "^4.21.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.30.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.1.tgz", + "integrity": "sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg==", + "hasInstallScript": true, + "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": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz", + "integrity": "sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=3" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "peer": true + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "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/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", + "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", + "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.19", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-4.2.2.tgz", + "integrity": "sha512-s3Of/4jKfw1Hj9CxEO1E5oXhQAxlayuHO2y/ML+C6I9sQ7FdzfEV6QgMLN3vI+qFsjJGIAFLKtQK7t8BOXAIyA==", + "dependencies": { + "cssnano": "^5.1.8", + "jest-worker": "^29.1.2", + "postcss": "^8.4.17", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-advanced": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/cssnano-preset-advanced/-/cssnano-preset-advanced-5.3.10.tgz", + "integrity": "sha512-fnYJyCS9jgMU+cmHO1rPSPf9axbQyD7iUhLO5Df6O4G+fKIOMps+ZbU0PdGFejFBBZ3Pftf18fn1eG7MAPUSWQ==", + "dependencies": { + "autoprefixer": "^10.4.12", + "cssnano-preset-default": "^5.2.14", + "postcss-discard-unused": "^5.1.0", + "postcss-merge-idents": "^5.1.1", + "postcss-reduce-idents": "^5.2.0", + "postcss-zindex": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "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/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/detab": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detab/-/detab-2.0.4.tgz", + "integrity": "sha512-8zdsQA5bIkoRECvCrNKPla84lyoR7DSAyf7p0YgXzBO9PDJx8KntPUay7NS6yp+KdxdVtiE5SpHKtbp2ZQyA9g==", + "dependencies": { + "repeat-string": "^1.5.4" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/detect-port": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.5.1.tgz", + "integrity": "sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==", + "dependencies": { + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" + } + }, + "node_modules/detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dependencies": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "bin": { + "detect": "bin/detect-port", + "detect-port": "bin/detect-port" + }, + "engines": { + "node": ">= 4.2.1" + } + }, + "node_modules/detect-port-alt/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/detect-port-alt/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "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==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.5.0.tgz", + "integrity": "sha512-USawdAUzRkV6xrqTjiAEp6M9YagZEzWcSUaZTcIFAiyQWW1SoI6KyId8y2+/71wbgHKQAKd+iupLv4YvEwYWvA==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dot-prop/node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "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.4.361", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.361.tgz", + "integrity": "sha512-VocVwjPp05HUXzf3xmL0boRn5b0iyqC7amtDww84Jb1QJNPBc7F69gJyEeXRoriLBC4a5pSyckdllrXAg4mmRA==" + }, + "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/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/emoticon": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/emoticon/-/emoticon-3.2.0.tgz", + "integrity": "sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "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/es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "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-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eta": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/eta/-/eta-2.0.1.tgz", + "integrity": "sha512-46E2qDPDm7QA+usjffUWz9KfXsxVZclPOuKsXs4ZWZdI/X1wpDF7AO424pt7fdYohCzWsIkXAhNGXSlwo5naAg==", + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "url": "https://github.com/eta-dev/eta?sponsor=1" + } + }, + "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/eval": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eval/-/eval-0.1.8.tgz", + "integrity": "sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==", + "dependencies": { + "@types/node": "*", + "require-like": ">= 0.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "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/execa/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/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/express/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/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "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-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==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/feed": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", + "integrity": "sha512-u5/sxGfiMfZNtJ3OvQpXcvotFpYkL0n9u9mM2vkui2nGo8b4wvDkJ8gAkYqbA8QpGyFCv3RK0Z+Iv+9veCS9bQ==", + "dependencies": { + "xml-js": "^1.6.11" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/filesize": { + "version": "8.0.7", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", + "integrity": "sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "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": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "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/flux": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", + "dependencies": { + "fbemitter": "^3.0.0", + "fbjs": "^3.0.1" + }, + "peerDependencies": { + "react": "^15.0.2 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "dependencies": { + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dependencies": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "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": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, + "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.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "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-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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": "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/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "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/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "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/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/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/gray-matter/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/gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hast-to-hyperscript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-9.0.1.tgz", + "integrity": "sha512-zQgLKqF+O2F72S1aa4y2ivxzSlko3MAvxkwG8ehGmNiqd98BIN3JM1rAJPmplEyLmGLO2QZYJtIneOSZ2YbJuA==", + "dependencies": { + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-6.0.1.tgz", + "integrity": "sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==", + "dependencies": { + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.5.tgz", + "integrity": "sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-6.0.1.tgz", + "integrity": "sha512-ZMuiYA+UF7BXBtsTBNcLBF5HzXzkyE6MLzJnL605LKE8GJylNjGc4jjxazAHUtcwT5/CEt6afRKViYB4X66dig==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", + "integrity": "sha512-Lu5m6Lgm/fWuz8eWnrKezHtVY83JeRGaNQ2kn9aJgqaxvVkFCZQBEhgodZUDUvoodgyROHDb3r5IxAEdl6suJQ==", + "dependencies": { + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-6.0.0.tgz", + "integrity": "sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "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/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/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/hpack.js/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/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-void-elements": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz", + "integrity": "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "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-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/immer": { + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "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==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "engines": { + "node": ">=4" + } + }, + "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/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infima": { + "version": "0.2.0-alpha.43", + "resolved": "https://registry.npmjs.org/infima/-/infima-0.2.0-alpha.43.tgz", + "integrity": "sha512-2uw57LvUqW0rK/SWYnd/2rRfxNA5DDNOh33jxF7fy46VWoNhGxiUQyVZHbBMjQ33mQem0cjdDVwgWVAmlRfgyQ==", + "engines": { + "node": ">=12" + } + }, + "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==", + "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/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "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/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/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/is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/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-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "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-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "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-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "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/jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dependencies": { + "@jest/types": "^29.5.0", + "@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-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.5.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/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.9.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.9.1.tgz", + "integrity": "sha512-FariIi9j6QODKATGBrEX7HZcja8Bsh3rfdGYy/Sb65sGlZWK/QWesU1ghk7aJWDj95knjXlQfSmzFSPPkLVsfw==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@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": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "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==" + }, + "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==" + }, + "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": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "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/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "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/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "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==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "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.flow": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" + }, + "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/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "peer": true + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-squeeze-paragraphs/-/mdast-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-zxdPn69hkQ1rm4J+2Cs2j6wDEv7O17TfXTJ33tl/+JPIoEmtV9t2ZzBM5LPHE8QlHsmVD8t3vPKCyY3oH+H8MQ==", + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz", + "integrity": "sha512-BW3LM9SEMnjf4HXXVApZMt8gLQWVNXc3jryK0nJu/rOXPOnlkUjmdkDlmxMirpbU9ILncGFIwLH/ubnWBbcdgA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.0.tgz", + "integrity": "sha512-yK6o8xVJlQerz57kvPROwTMgx5WtGwC2ZxDtOUsnGl49rHjYkfQoPNZPCKH73VdLE1BwBu/+Fx/NL8NYMUw2aA==", + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "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/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/mime-db": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", + "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.18", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", + "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "dependencies": { + "mime-db": "~1.33.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/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", + "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "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/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/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "engines": { + "node": ">=10" + } + }, + "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/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "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/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/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "dependencies": { + "lodash": "^4.17.21" + } + }, + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "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-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + }, + "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/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/nprogress": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz", + "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "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.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "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/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": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "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-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-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "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": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", + "dependencies": { + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "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/parse-numeric-range": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", + "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "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/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "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-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "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-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "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/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==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/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/pkg-up/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/pkg-up/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/pkg-up/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/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-unused": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-5.1.0.tgz", + "integrity": "sha512-KwLWymI9hbwXmJa0dkrzpRbSJEh0vVUd7r8t0yOGPcfKzyJJxFM8kLyC5Ev9avji6nY95pOp1W6HqIrfT+0VGw==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-loader": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.2.4.tgz", + "integrity": "sha512-F88rpxxNspo5hatIc+orYwZDtHFaVFOSIVAx+fBfJC1GmhWbVmPWtmg2gXKE1OxJbneOSGn8PWdIwsZFcruS+w==", + "dependencies": { + "cosmiconfig": "^8.1.3", + "cosmiconfig-typescript-loader": "^4.3.0", + "klona": "^2.0.6", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "ts-node": ">=10", + "typescript": ">=4", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/postcss-loader/node_modules/cosmiconfig": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/postcss-merge-idents": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-5.1.1.tgz", + "integrity": "sha512-pCijL1TREiCoog5nQp7wUe+TUonA2tC2sQ54UGeMmryK3UFGIYKqDyjnqd6RcuI4znFn9hWSLNN8xKE/vWcUQw==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-idents": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-5.2.0.tgz", + "integrity": "sha512-BTrLjICoSB6gxbc58D5mdBK8OhXRDqud/zodYfdSi52qvDHdMwk+9kB9xsM8yJThH/sZU5A6QVSmMmaN001gIg==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sort-media-queries": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-4.3.0.tgz", + "integrity": "sha512-jAl8gJM2DvuIJiI9sL1CuiHtKM4s5aEIomkU8G3LFvbP+p8i7Sz8VV63uieTgoewGqKbi+hxBTiOKJlB35upCg==", + "dependencies": { + "sort-css-media-queries": "2.1.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.4.16" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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/postcss-zindex": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-5.1.0.tgz", + "integrity": "sha512-fgFMf0OtVSBR1va1JNHYgMxYk73yhn/qb4uQDq1DLGYolz8gHCyr/sesEuGUaYs58E3ZJRcpoGuPVoB7Meiq9A==", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-react-renderer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.3.5.tgz", + "integrity": "sha512-IJ+MSwBWKG+SM3b2SUfdrhC+gu01QkV2KmRQgREThBfSQRoufqRfxfHUxpG1WcaFjP+kojcFyO9Qqtpgt3qLCg==", + "peerDependencies": { + "react": ">=0.14.9" + } + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "engines": { + "node": ">=6" + } + }, + "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": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "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/property-information": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", + "integrity": "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==", + "dependencies": { + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pure-color": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-base16-styling": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", + "dependencies": { + "base16": "^1.0.0", + "lodash.curry": "^4.0.1", + "lodash.flow": "^3.3.0", + "pure-color": "^1.2.0" + } + }, + "node_modules/react-dev-utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", + "integrity": "sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==", + "dependencies": { + "@babel/code-frame": "^7.16.0", + "address": "^1.1.2", + "browserslist": "^4.18.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "detect-port-alt": "^1.1.6", + "escape-string-regexp": "^4.0.0", + "filesize": "^8.0.6", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.5.0", + "global-modules": "^2.0.0", + "globby": "^11.0.4", + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/react-dev-utils/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-dev-utils/node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/react-dev-utils/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-dev-utils/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/react-dev-utils/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-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-error-overlay": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz", + "integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==" + }, + "node_modules/react-fast-compare": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.1.tgz", + "integrity": "sha512-xTYf9zFim2pEif/Fw16dBiXpe0hoy5PxcD8+OwBnTtNLfIm3g6WxhKNurY+6OmdH1u6Ta/W/Vl6vjbYP1MFnDg==" + }, + "node_modules/react-helmet-async": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/react-helmet-async/-/react-helmet-async-1.3.0.tgz", + "integrity": "sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "invariant": "^2.2.4", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.2.0", + "shallowequal": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.6.0 || ^17.0.0 || ^18.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-json-view": { + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", + "dependencies": { + "flux": "^4.0.1", + "react-base16-styling": "^0.6.0", + "react-lifecycles-compat": "^3.0.4", + "react-textarea-autosize": "^8.3.2" + }, + "peerDependencies": { + "react": "^17.0.0 || ^16.3.0 || ^15.5.4", + "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4" + } + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-loadable": { + "name": "@docusaurus/react-loadable", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-5.5.2.tgz", + "integrity": "sha512-A3dYjdBGuy0IGT+wyLIGIKLRE+sAk1iNk0f1HjNDysO7u8lhL4N3VEm+FAubmJbAztn94F7MxBTPmnixbiyFdQ==", + "dependencies": { + "@types/react": "*", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/react-loadable-ssr-addon-v5-slorber": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-loadable-ssr-addon-v5-slorber/-/react-loadable-ssr-addon-v5-slorber-1.0.1.tgz", + "integrity": "sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==", + "dependencies": { + "@babel/runtime": "^7.10.3" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "react-loadable": "*", + "webpack": ">=4.41.1 || 5.x" + } + }, + "node_modules/react-router": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", + "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "hoist-non-react-statics": "^3.1.0", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.2", + "react-is": "^16.6.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-config": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/react-router-config/-/react-router-config-5.1.1.tgz", + "integrity": "sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==", + "dependencies": { + "@babel/runtime": "^7.1.2" + }, + "peerDependencies": { + "react": ">=15", + "react-router": ">=5" + } + }, + "node_modules/react-router-dom": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", + "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "dependencies": { + "@babel/runtime": "^7.12.13", + "history": "^4.9.0", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.2", + "react-router": "5.3.4", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.4.1.tgz", + "integrity": "sha512-aD2C+qK6QypknC+lCMzteOdIjoMbNlgSFmJjCV+DrfTPwp59i/it9mMNf2HDzvRjQgKAyBDPyLJhcrzElf2U4Q==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "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/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reading-time": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", + "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/recursive-readdir": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", + "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", + "dependencies": { + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "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/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "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/registry-auth-token": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.2.tgz", + "integrity": "sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==", + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "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/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remark-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/remark-emoji/-/remark-emoji-2.2.0.tgz", + "integrity": "sha512-P3cj9s5ggsUvWw5fS2uzCHJMGuXYRb0NnZqYlNecewXt8QBU9n5vW3DUUKOhepS8F9CwdMx9B8a3i7pqFWAI5w==", + "dependencies": { + "emoticon": "^3.2.0", + "node-emoji": "^1.10.0", + "unist-util-visit": "^2.0.3" + } + }, + "node_modules/remark-footnotes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz", + "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==" + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-mdx/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/remark-mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-squeeze-paragraphs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz", + "integrity": "sha512-8qRqmL9F4nuLPIgl92XUuxI3pFxize+F1H0e/W3llTk0UsjJaj01+RrirkMw7P21RKe4X6goQhYRSvNWX+70Rw==", + "dependencies": { + "mdast-squeeze-paragraphs": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/renderkid/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/renderkid/node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-like": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/require-like/-/require-like-0.1.2.tgz", + "integrity": "sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==", + "engines": { + "node": "*" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.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-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "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==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rtl-detect": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", + "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + }, + "node_modules/rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "dependencies": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss/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/rtlcss/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/rtlcss/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/rtlcss/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/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/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", + "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "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/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/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/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-handler": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", + "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "dependencies": { + "bytes": "3.0.0", + "content-disposition": "0.5.2", + "fast-url-parser": "1.1.3", + "mime-types": "2.1.18", + "minimatch": "3.1.2", + "path-is-inside": "1.0.2", + "path-to-regexp": "2.2.1", + "range-parser": "1.2.0" + } + }, + "node_modules/serve-handler/node_modules/path-to-regexp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz", + "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==" + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-index/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/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/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "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/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "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/sirv": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", + "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", + "dependencies": { + "@polka/url": "^1.0.0-next.20", + "mrmime": "^1.0.0", + "totalist": "^1.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/sitemap": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.1.tgz", + "integrity": "sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==", + "dependencies": { + "@types/node": "^17.0.5", + "@types/sax": "^1.2.1", + "arg": "^5.0.0", + "sax": "^1.2.4" + }, + "bin": { + "sitemap": "dist/cli.js" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.6.0" + } + }, + "node_modules/sitemap/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "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/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sort-css-media-queries": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.1.0.tgz", + "integrity": "sha512-IeWvo8NkNiY2vVYdPa27MCQiR0MN0M80johAYFVxWWXQ44KU84WNxjslwBHmc/7ZL2ccwkM7/e6S5aiKZXm7jA==", + "engines": { + "node": ">= 6.3.0" + } + }, + "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.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "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/space-separated-tokens": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz", + "integrity": "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility" + }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/std-env": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", + "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==" + }, + "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-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/string-width/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/string-width/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "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-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-to-object": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz", + "integrity": "sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "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/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/svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==" + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/svgo/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/svgo/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/svgo/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/svgo/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.16.9", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.9.tgz", + "integrity": "sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", + "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/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/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/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==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "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-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "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/totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", + "engines": { + "node": ">=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/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead" + }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "peer": true + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/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/type-is/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/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", + "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz", + "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-2.1.0.tgz", + "integrity": "sha512-J8NYPyBm4baYLdCbjmf1bhPu45Cr1MWTm77qd9istEkzWpnN6O9tMsEbB2JhNnBCqGENRqEWomQ+He6au0B27Q==", + "dependencies": { + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.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.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/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/update-notifier/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/update-notifier/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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/update-notifier/node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/update-notifier/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/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/url-loader": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", + "dependencies": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } + } + }, + "node_modules/url-loader/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/url-loader/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/url-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "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/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" + }, + "node_modules/utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==", + "engines": { + "node": ">= 4" + } + }, + "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/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "peer": true + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "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/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/wait-on": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz", + "integrity": "sha512-zht+KASY3usTY5u2LgaNqn/Cd8MukxLGjdcZxT2ns5QzDmTFc4XoWBgC+C/na+sMRZTuVygQoMYwdcVjHnYIVw==", + "dependencies": { + "axios": "^0.25.0", + "joi": "^17.6.0", + "lodash": "^4.17.21", + "minimist": "^1.2.5", + "rxjs": "^7.5.4" + }, + "bin": { + "wait-on": "bin/wait-on" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/web-namespaces": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz", + "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/webpack": { + "version": "5.79.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.79.0.tgz", + "integrity": "sha512-3mN4rR2Xq+INd6NnYuL9RC9GAmc1ROPKJoHhrZ4pAjdMFEkJJWrsPw8o2JjCIyQyTu7rTXYn4VG6OpyB3CobZg==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-bundle-analyzer": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.8.0.tgz", + "integrity": "sha512-ZzoSBePshOKhr+hd8u6oCkZVwpVaXgpw23ScGLFpR6SjYI7+7iIWYarjN6OEYOfRt8o7ZyZZQk0DuMizJ+LEIg==", + "dependencies": { + "@discoveryjs/json-ext": "0.5.7", + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "bin": { + "webpack-bundle-analyzer": "lib/bin/analyzer.js" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/webpack-bundle-analyzer/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/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/webpack-dev-middleware/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/webpack-dev-middleware/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/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.2.tgz", + "integrity": "sha512-5i6TrGBRxG4vnfDpB6qSQGfnB6skGBXNL5/542w2uRGLimX6qeE5BQMLrzIC3JYV/xlGOv+s+hTleI9AZKUQNw==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "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 + } + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/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/webpack/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/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "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/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + }, + "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/wrap-ansi/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/wrap-ansi/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/wrap-ansi/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "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/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "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/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "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" + } + }, + "node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/docusite/package.json b/docusite/package.json new file mode 100644 index 0000000..7a37a8a --- /dev/null +++ b/docusite/package.json @@ -0,0 +1,43 @@ +{ + "name": "docusite", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "2.4.0", + "@docusaurus/preset-classic": "2.4.0", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.0" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=16.14" + } +} diff --git a/docusite/sidebars.js b/docusite/sidebars.js new file mode 100644 index 0000000..9ab54c2 --- /dev/null +++ b/docusite/sidebars.js @@ -0,0 +1,33 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + 'intro', + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], + */ +}; + +module.exports = sidebars; diff --git a/docusite/src/components/HomepageFeatures/index.js b/docusite/src/components/HomepageFeatures/index.js new file mode 100644 index 0000000..a152bf8 --- /dev/null +++ b/docusite/src/components/HomepageFeatures/index.js @@ -0,0 +1,65 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; + +const FeatureList = [ + { + title: 'Use and reuse', + Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, + description: ( + <> + This documentation explains how we use and reuse freely available geospatial data + in our projects. We focus in freely available data and open source software to make our workflows + reproducible and portable for other users. Feel free to use it yourself and share with others. + + ), + }, + { + title: 'Global and regional', + Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, + description: ( + <> + We have compiled global data sources for global analysis, but also some regional or national datasets + that we use for more specific analysis. + + ), + }, + { + title: 'Find GIS data!', + Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, + description: ( + <> + We do not provide access to the data but we try to include easy to follow instructions + for data access and download, and some initial data preparation steps. + + ), + }, +]; + +function Feature({Svg, title, description}) { + return ( +
+
+ +
+
+

{title}

+

{description}

+
+
+ ); +} + +export default function HomepageFeatures() { + return ( +
+
+
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/docusite/src/components/HomepageFeatures/styles.module.css b/docusite/src/components/HomepageFeatures/styles.module.css new file mode 100644 index 0000000..b248eb2 --- /dev/null +++ b/docusite/src/components/HomepageFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/docusite/src/css/custom.css b/docusite/src/css/custom.css new file mode 100644 index 0000000..2bc6a4c --- /dev/null +++ b/docusite/src/css/custom.css @@ -0,0 +1,30 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #2e8555; + --ifm-color-primary-dark: #29784c; + --ifm-color-primary-darker: #277148; + --ifm-color-primary-darkest: #205d3b; + --ifm-color-primary-light: #33925d; + --ifm-color-primary-lighter: #359962; + --ifm-color-primary-lightest: #3cad6e; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #25c2a0; + --ifm-color-primary-dark: #21af90; + --ifm-color-primary-darker: #1fa588; + --ifm-color-primary-darkest: #1a8870; + --ifm-color-primary-light: #29d5b0; + --ifm-color-primary-lighter: #32d8b4; + --ifm-color-primary-lightest: #4fddbf; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} diff --git a/docusite/src/pages/how-to-site.md b/docusite/src/pages/how-to-site.md new file mode 100644 index 0000000..231a5c5 --- /dev/null +++ b/docusite/src/pages/how-to-site.md @@ -0,0 +1,73 @@ +--- +title: How to set up this site +--- + +# We built this site with Rock'n'Roll + +Well, not quite but near enough... + +We built this awesome documentation site using https://docusaurus.io/docs + +First we installed [Node.js](https://nodejs.org/en/download/) (recommended version 16.14 or above). + +:::warning npx version + +Make sure we deactivate conda to use the downloaded npx version: + +```sh +conda deactivate +which npx +npx -v +``` + +This sites works with `9.5.1`. + +::: + +Then we _npx_ docusaurus: + +```sh +npx create-docusaurus@latest $REPO_PATH/docusite classic +``` +You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. + +The command also installs all necessary dependencies you need to run Docusaurus. + + +## Start your site + +Run the development server: + +```sh +cd $REPO_PATH/docusite +npx docusaurus start +``` + +The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. + +The `npx docusaurus start` (apparently you could use `npm run start` also[^1]) command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. + +The I started with opening `docs/intro.md` and editing some lines: the site **reloads automatically** and displays your changes. Feels like magic! + +## My experience so far + +From there I just trial-ed and error-ed enough to get most of what we needed, a lot of what we wanted and all that I could. + +I have done most of this using just markdown, because I just haven't got much time to properly learn react.js, but that's OK, you don't need React to write simple standalone pages. + +I am using the **classic template** because I just don't have time to explore and tweak templates and themes. + +### Where to locate stuff + +The `docusaurus.config.js` file is the place for titles and bottom menus, logos and icons, and other configuration stuff. + +I haven't touch the sidebars.js, I just don't have time for that much customisation. [^2] + +The `pages/index.js` looks scary, I only edited a couple of lines with the main text, but the funny thing is that the feature list is located in `/src/components/index.js`, so that is the place to edit those boxes. + +This `how-to-site` file is in the `pages` folder, which is the place for stand-alone pages. All other stuff is neatly organised in the `docs` folder. The documents in the `docs` folder appear automatically in the left hand side menu, but we have to create explicit links for the ones in the `pages` folder, for example in the `docusaurus.config.js` if we want these to appear in the bottom bar. + + + +[^1]: But I have not clue yet what is the difference between npx and npm... +[^2]: This is kind of a theme here \ No newline at end of file diff --git a/docusite/src/pages/index.js b/docusite/src/pages/index.js new file mode 100644 index 0000000..20a428a --- /dev/null +++ b/docusite/src/pages/index.js @@ -0,0 +1,41 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Layout from '@theme/Layout'; +import HomepageFeatures from '@site/src/components/HomepageFeatures'; + +import styles from './index.module.css'; + +function HomepageHeader() { + const {siteConfig} = useDocusaurusContext(); + return ( +
+
+

{siteConfig.title}

+

{siteConfig.tagline}

+
+ + Best place to start is at the beginning! + +
+
+
+ ); +} + +export default function Home() { + const {siteConfig} = useDocusaurusContext(); + return ( + + +
+ +
+
+ ); +} diff --git a/docusite/src/pages/index.module.css b/docusite/src/pages/index.module.css new file mode 100644 index 0000000..9f71a5d --- /dev/null +++ b/docusite/src/pages/index.module.css @@ -0,0 +1,23 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 996px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/docusite/static/.nojekyll b/docusite/static/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docusite/static/img/docusaurus-social-card.jpg b/docusite/static/img/docusaurus-social-card.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ffcb448210e1a456cb3588ae8b396a597501f187 GIT binary patch literal 55746 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 fgzs%Vr*-jYG(YMS<ttdtee# literal 0 HcmV?d00001 diff --git a/docusite/static/img/docusaurus.png b/docusite/static/img/docusaurus.png new file mode 100644 index 0000000000000000000000000000000000000000..f458149e3c8f53335f28fbc162ae67f55575c881 GIT binary patch literal 5142 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 F{0H{b<4^zq literal 0 HcmV?d00001 diff --git a/docusite/static/img/favicon.ico b/docusite/static/img/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c01d54bcd39a5f853428f3cd5aa0f383d963c484 GIT binary patch literal 3626 zcmb`Je@s(X6vrR`EK3%b%orErlDW({vnABqA zcfaS{d+xbU5JKp0*;0YOg+;Fl!eT)XRuapIwFLL`=imZCSon$`se`_<%@MB=M~KG+ z=EW^FL`w|Bo>*ktlaS^(fut!95`iG5u=SZ8nfDHO#GaTlH1-XG^;vsjUb^gWTVz0+ z^=WR1wv9-2oeR=_;fL0H7rNWqAzGtO(D;`~cX(RcN0w2v24Y8)6t`cS^_ghs`_ho? z{0ka~1Dgo8TfAP$r*ua?>$_V+kZ!-(TvEJ7O2f;Y#tezt$&R4 zLI}=-y@Z!grf*h3>}DUL{km4R>ya_I5Ag#{h_&?+HpKS!;$x3LC#CqUQ8&nM?X))Q zXAy2?`YL4FbC5CgJu(M&Q|>1st8XXLZ|5MgwgjP$m_2Vt0(J z&Gu7bOlkbGzGm2sh?X`){7w69Y$1#@P@7DF{ZE=4%T0NDS)iH`tiPSKpDNW)zmtn( zw;4$f>k)4$LBc>eBAaTZeCM2(iD+sHlj!qd z2GjRJ>f_Qes(+mnzdA^NH?^NB(^o-%Gmg$c8MNMq&`vm@9Ut;*&$xSD)PKH{wBCEC z4P9%NQ;n2s59ffMn8*5)5AAg4-93gBXBDX`A7S& zH-|%S3Wd%T79fk-e&l`{!?lve8_epXhE{d3Hn$Cg!t=-4D(t$cK~7f&4s?t7wr3ZP z*!SRQ-+tr|e1|hbc__J`k3S!rMy<0PHy&R`v#aJv?`Y?2{avK5sQz%=Us()jcNuZV z*$>auD4cEw>;t`+m>h?f?%VFJZj8D|Y1e_SjxG%J4{-AkFtT2+ZZS5UScS~%;dp!V>)7zi`w(xwSd*FS;Lml=f6hn#jq)2is4nkp+aTrV?)F6N z>DY#SU0IZ;*?Hu%tSj4edd~kYNHMFvS&5}#3-M;mBCOCZL3&;2obdG?qZ>rD|zC|Lu|sny76pn2xl|6sk~Hs{X9{8iBW zwiwgQt+@hi`FYMEhX2 \ No newline at end of file diff --git a/docusite/static/img/logo_CES.png b/docusite/static/img/logo_CES.png new file mode 100644 index 0000000000000000000000000000000000000000..f3dd1ae57a9301b6e20fb0c8bc0b545a7ce30db5 GIT binary patch literal 302629 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

-A&o_$xC;7LM??8oXfjCJEe+nwmLc{aV0zFnPY^ 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%0A`1;9mDM!G|s+rW#!7GgL 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 z

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 literal 0 HcmV?d00001 diff --git a/docusite/static/img/undraw_docusaurus_mountain.svg b/docusite/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000..af961c4 --- /dev/null +++ b/docusite/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docusite/static/img/undraw_docusaurus_react.svg b/docusite/static/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000..f4832fc --- /dev/null +++ b/docusite/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,1178 @@ + +Powered by React + + + + + + + + diff --git a/docusite/static/img/undraw_docusaurus_tree.svg b/docusite/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000..d9161d3 --- /dev/null +++ b/docusite/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From c64e51eea49789d01f6cb4cd2c3c9b518f479bf8 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 06:58:59 +1000 Subject: [PATCH 02/23] Move markdown documents to docusite --- doc/admin/global/EEZ-borders.md | 23 --- doc/admin/global/TM-World-Borders.md | 15 -- doc/admin/global/World-Bank-Official.md | 21 --- doc/anthroposphere/global/Anthromes.md | 45 ----- doc/anthroposphere/global/Aquastat-v5.0.md | 26 --- .../global/Earthstats-crops-pastures.md | 19 -- doc/anthroposphere/global/GHSL-settlements.md | 28 --- .../global/GLAD-GLCLUC-2000-2020.md | 54 ------ .../global/GRIP-road-database.md | 11 -- .../global/Gridded-Livestock-World-2010.md | 26 --- doc/anthroposphere/global/HANPP.md | 14 -- doc/anthroposphere/global/Irrigation-areas.md | 13 -- .../global/Land-Use-2000-consistent.md | 15 -- .../regional/Plantations-Australia.md | 14 -- doc/biotic-interactions/global/GloBI.md | 16 -- doc/climate-classification/global/GEnS.md | 20 --- .../global/Holdridge.md | 13 -- ...\266ppen-Geiger-climate-classification.md" | 56 ------ doc/climate/global/CHELSA-climatologies.md | 39 ----- doc/climate/global/CHIRPS.md | 36 ---- doc/climate/global/CMCC-BioClimInd.md | 35 ---- doc/climate/global/CRU-TS.md | 56 ------ doc/climate/global/CliMond.md | 105 ----------- doc/climate/global/ERA5.md | 42 ----- doc/climate/global/GHCN-M.md | 18 -- doc/climate/global/Terraclimate.md | 62 ------- doc/climate/global/WorldClim.md | 47 ----- doc/climate/regional/ALA-spatial-layers.md | 13 -- .../VIIRS-Snow-Cover-Products.md | 0 doc/cryosphere/global/Alpine-Biome.md | 21 --- doc/cryosphere/global/GlaThiDa.md | 32 ---- .../global/Global-land-ice-measurements.md | 152 ---------------- .../global/Global-river-ice-dataset.md | 38 ---- doc/cryosphere/global/Lake-ice-phenology.md | 43 ----- .../global/Modis-Snow-Cover-Products.md | 164 ------------------ .../global/Modis-sea-ice-products.md | 44 ----- .../global/PyGEM-OGGM-Glacier-projections.md | 51 ------ .../global/Randolph-Glacier-Inventory.md | 117 ------------- .../Sea-ice-climatologies-SMMR-SSMIS.md | 114 ------------ doc/cryosphere/global/Sea-ice-index.md | 28 --- .../global/World-Glacier-Inventory.md | 56 ------ .../global/subglacial-lakes-inventory.md | 46 ----- doc/cryosphere/regional/CCAMLR.md | 15 -- doc/cryosphere/regional/IPG-Chile.md | 20 --- doc/cryosphere/regional/NGI-Argentina.md | 22 --- .../global/Ecological-Marine-Units.md | 58 ------- doc/ecological/global/FAO-GEZ.md | 26 --- .../global/NatureMap-IUCN-habitats.md | 44 ----- doc/ecoregions/global/FEOW-ecoregions.md | 60 ------- .../global/Large-Marine-Ecosystems.md | 51 ------ doc/ecoregions/global/MEOW-ecoregions.md | 67 ------- doc/ecoregions/global/OneEarth-bioregions.md | 14 -- doc/ecoregions/global/RESOLVE-ecoregions.md | 105 ----------- doc/ecoregions/global/TNC-ecoregions.md | 23 --- doc/ecoregions/global/WWF-ecoregions.md | 25 --- .../regional/Canada-ecoprovinces.md | 43 ----- doc/ecoregions/regional/IBRA-v7.md | 20 --- doc/ecosystems/global/EarthEnv-TCF-2021.md | 38 ---- doc/ecosystems/global/Functional-Biomes.md | 7 - .../global/Global-intertidal-change.md | 41 ----- doc/ecosystems/global/WCMC-coral-reefs.md | 23 --- doc/ecosystems/global/WCMC-kelp.md | 30 ---- doc/ecosystems/global/WCMC-mangrove-2000.md | 58 ------- doc/ecosystems/global/WCMC-mangrove-GMW.md | 106 ----------- doc/ecosystems/global/WCMC-mangrove-types.md | 66 ------- doc/ecosystems/global/tidal-flats.md | 4 - doc/ecosystems/regional/CAM-ecosystems-map.md | 43 ----- .../regional/Colombia-Terr-Eco-2015.md | 76 -------- doc/ecosystems/regional/EU-RLH.md | 16 -- .../regional/Ecosystem-types-Europe.md | 50 ------ .../Myanmar-Terrestrial-Ecosystems.md | 23 --- .../global/Global-Fire-Emission-Database.md | 30 ---- doc/fire/global/Modis-burned-area.md | 72 -------- doc/fire/global/sensores_Modis_FIRMS.sh | 89 ---------- doc/fire/regional/Fire-Australia-Forest.md | 29 ---- doc/ocean/global/OceanColorData.md | 23 --- doc/plant-traits/global/TRY-database.md | 14 -- .../global/TRY-leaf-trait-maps-2018.md | 39 ----- doc/radiation/global/glUV-B.md | 42 ----- doc/soil/global/COPERNICUS-SWI.md | 14 -- doc/soil/global/Global-permafrost-zonation.md | 31 ---- doc/soil/global/HWSD-v1.2.md | 52 ------ doc/soil/global/isric-soil-grids.md | 106 ----------- doc/soil/regional/Circum-arctic-permafrost.md | 45 ----- doc/soil/regional/Soil-australia.md | 41 ----- 85 files changed, 3589 deletions(-) delete mode 100644 doc/admin/global/EEZ-borders.md delete mode 100644 doc/admin/global/TM-World-Borders.md delete mode 100644 doc/admin/global/World-Bank-Official.md delete mode 100644 doc/anthroposphere/global/Anthromes.md delete mode 100644 doc/anthroposphere/global/Aquastat-v5.0.md delete mode 100644 doc/anthroposphere/global/Earthstats-crops-pastures.md delete mode 100644 doc/anthroposphere/global/GHSL-settlements.md delete mode 100644 doc/anthroposphere/global/GLAD-GLCLUC-2000-2020.md delete mode 100644 doc/anthroposphere/global/GRIP-road-database.md delete mode 100644 doc/anthroposphere/global/Gridded-Livestock-World-2010.md delete mode 100644 doc/anthroposphere/global/HANPP.md delete mode 100644 doc/anthroposphere/global/Irrigation-areas.md delete mode 100644 doc/anthroposphere/global/Land-Use-2000-consistent.md delete mode 100644 doc/anthroposphere/regional/Plantations-Australia.md delete mode 100644 doc/biotic-interactions/global/GloBI.md delete mode 100644 doc/climate-classification/global/GEnS.md delete mode 100644 doc/climate-classification/global/Holdridge.md delete mode 100644 "doc/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" delete mode 100644 doc/climate/global/CHELSA-climatologies.md delete mode 100644 doc/climate/global/CHIRPS.md delete mode 100644 doc/climate/global/CMCC-BioClimInd.md delete mode 100644 doc/climate/global/CRU-TS.md delete mode 100644 doc/climate/global/CliMond.md delete mode 100644 doc/climate/global/ERA5.md delete mode 100644 doc/climate/global/GHCN-M.md delete mode 100644 doc/climate/global/Terraclimate.md delete mode 100644 doc/climate/global/WorldClim.md delete mode 100644 doc/climate/regional/ALA-spatial-layers.md rename doc/{cryosphere/to-do => cryosphere-to-do}/VIIRS-Snow-Cover-Products.md (100%) delete mode 100644 doc/cryosphere/global/Alpine-Biome.md delete mode 100644 doc/cryosphere/global/GlaThiDa.md delete mode 100644 doc/cryosphere/global/Global-land-ice-measurements.md delete mode 100644 doc/cryosphere/global/Global-river-ice-dataset.md delete mode 100644 doc/cryosphere/global/Lake-ice-phenology.md delete mode 100644 doc/cryosphere/global/Modis-Snow-Cover-Products.md delete mode 100644 doc/cryosphere/global/Modis-sea-ice-products.md delete mode 100644 doc/cryosphere/global/PyGEM-OGGM-Glacier-projections.md delete mode 100644 doc/cryosphere/global/Randolph-Glacier-Inventory.md delete mode 100644 doc/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md delete mode 100644 doc/cryosphere/global/Sea-ice-index.md delete mode 100644 doc/cryosphere/global/World-Glacier-Inventory.md delete mode 100644 doc/cryosphere/global/subglacial-lakes-inventory.md delete mode 100644 doc/cryosphere/regional/CCAMLR.md delete mode 100644 doc/cryosphere/regional/IPG-Chile.md delete mode 100644 doc/cryosphere/regional/NGI-Argentina.md delete mode 100644 doc/ecological/global/Ecological-Marine-Units.md delete mode 100644 doc/ecological/global/FAO-GEZ.md delete mode 100644 doc/ecological/global/NatureMap-IUCN-habitats.md delete mode 100644 doc/ecoregions/global/FEOW-ecoregions.md delete mode 100644 doc/ecoregions/global/Large-Marine-Ecosystems.md delete mode 100644 doc/ecoregions/global/MEOW-ecoregions.md delete mode 100644 doc/ecoregions/global/OneEarth-bioregions.md delete mode 100644 doc/ecoregions/global/RESOLVE-ecoregions.md delete mode 100644 doc/ecoregions/global/TNC-ecoregions.md delete mode 100644 doc/ecoregions/global/WWF-ecoregions.md delete mode 100644 doc/ecoregions/regional/Canada-ecoprovinces.md delete mode 100644 doc/ecoregions/regional/IBRA-v7.md delete mode 100644 doc/ecosystems/global/EarthEnv-TCF-2021.md delete mode 100644 doc/ecosystems/global/Functional-Biomes.md delete mode 100644 doc/ecosystems/global/Global-intertidal-change.md delete mode 100644 doc/ecosystems/global/WCMC-coral-reefs.md delete mode 100644 doc/ecosystems/global/WCMC-kelp.md delete mode 100644 doc/ecosystems/global/WCMC-mangrove-2000.md delete mode 100644 doc/ecosystems/global/WCMC-mangrove-GMW.md delete mode 100644 doc/ecosystems/global/WCMC-mangrove-types.md delete mode 100644 doc/ecosystems/global/tidal-flats.md delete mode 100644 doc/ecosystems/regional/CAM-ecosystems-map.md delete mode 100644 doc/ecosystems/regional/Colombia-Terr-Eco-2015.md delete mode 100644 doc/ecosystems/regional/EU-RLH.md delete mode 100644 doc/ecosystems/regional/Ecosystem-types-Europe.md delete mode 100644 doc/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md delete mode 100644 doc/fire/global/Global-Fire-Emission-Database.md delete mode 100644 doc/fire/global/Modis-burned-area.md delete mode 100644 doc/fire/global/sensores_Modis_FIRMS.sh delete mode 100644 doc/fire/regional/Fire-Australia-Forest.md delete mode 100644 doc/ocean/global/OceanColorData.md delete mode 100644 doc/plant-traits/global/TRY-database.md delete mode 100644 doc/plant-traits/global/TRY-leaf-trait-maps-2018.md delete mode 100644 doc/radiation/global/glUV-B.md delete mode 100644 doc/soil/global/COPERNICUS-SWI.md delete mode 100644 doc/soil/global/Global-permafrost-zonation.md delete mode 100644 doc/soil/global/HWSD-v1.2.md delete mode 100644 doc/soil/global/isric-soil-grids.md delete mode 100644 doc/soil/regional/Circum-arctic-permafrost.md delete mode 100644 doc/soil/regional/Soil-australia.md diff --git a/doc/admin/global/EEZ-borders.md b/doc/admin/global/EEZ-borders.md deleted file mode 100644 index d988803..0000000 --- a/doc/admin/global/EEZ-borders.md +++ /dev/null @@ -1,23 +0,0 @@ -# EEZ boundaries - -https://www.marineregions.org/eez.php - -## Citation -> Flanders Marine Institute (2019). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 11. Available online at https://www.marineregions.org/. https://doi.org/10.14284/386 - - ## Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/admin/global/EEZ/ -cd $GISDATA/admin/global/EEZ/ - -# register and download -mv ~/Downloads/World_EEZ_v11_20191118_gpkg.zip $GISDATA/admin/global/EEZ/ - -unzip -u World_EEZ_v11_20191118_gpkg.zip - -module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 proj/7.2.0 - -ogr2ogr -f "GPKG" eez-valid.gpkg World_EEZ_v11_20191118_gpkg/eez_v11.gpkg -nlt PROMOTE_TO_MULTI -makevalid -simplify 0.0001 -``` diff --git a/doc/admin/global/TM-World-Borders.md b/doc/admin/global/TM-World-Borders.md deleted file mode 100644 index 811330b..0000000 --- a/doc/admin/global/TM-World-Borders.md +++ /dev/null @@ -1,15 +0,0 @@ -# thematicmapping World Borders Dataset - -http://thematicmapping.org/downloads/world_borders.php - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/admin/global/TMWB/ -cd $GISDATA/admin/global/TMWB/ - -wget --continue http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip -wget --continue http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip - - unzip -u TM_WORLD_BORDERS-0.3.zip - unzip -u TM_WORLD_BORDERS_SIMPL-0.3.zip -``` diff --git a/doc/admin/global/World-Bank-Official.md b/doc/admin/global/World-Bank-Official.md deleted file mode 100644 index 97e3c9d..0000000 --- a/doc/admin/global/World-Bank-Official.md +++ /dev/null @@ -1,21 +0,0 @@ -# World Bank Official Boundaries - -https://datacatalog.worldbank.org/dataset/world-bank-official-boundaries - - - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - - -mkdir -p $GISDATA/admin/global/World-Bank/ -cd $GISDATA/admin/global/World-Bank/ - -for ARCH in wb_countries_admin0_10m.zip wb_disputed_areas_admin0_10m.zip wb_disputed_areas_admin0_10m.zip wb_adm0_boundary_lines_10m.zip wb_adm0_boundary_lines_disputed_areas_10m.zip wb_coastlines_10m.zip wb_land_10m.zip wb_boundaries.gdb.zip wb_boundaries_geojson_highres.zip wb_boundaries_geojson_lowres.zip wb_boundaries_topojson.zip wb_boundaries_wgs84.zip -do - wget --continue https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/779551/${ARCH} -done - -``` diff --git a/doc/anthroposphere/global/Anthromes.md b/doc/anthroposphere/global/Anthromes.md deleted file mode 100644 index c948a29..0000000 --- a/doc/anthroposphere/global/Anthromes.md +++ /dev/null @@ -1,45 +0,0 @@ -# Anthromes maps and datasets - -Data in 5 arc minute global geographic raster grids in .zip files with accompanying metadata. - -Description of source dataset from Ellis et al. (2010) "Global data for human population density and percentage cover by urban, crop and pasture lands at 5′ resolution were obtained using the updated version of the HYDE 3.1 data model (http://www.pbl.nl/hyde), based on Klein Goldewijk & van Drecht (2006). Global 5′ data for rice cover in 2000 were obtained from Monfreda et al. (2008)." - -#### Citation - -> Ellis, E. C., K. Klein Goldewijk, S. Siebert, D. Lightman, and N. Ramankutty. 2010. Anthropogenic transformation of the biomes, 1700 to 2000. Global Ecology and Biogeography 19(5):589-606. [download] -> Klein Goldewijk, K. & van Drecht, G. (2006) HYDE 3: current and historical population and land cover. Integrated modelling of global environmental change. An overview of IMAGE 2.4 (ed. by A.F. Bouwman, T. Kram and K. Klein Goldewijk), pp. 93–111. Netherlands Environmental Assessment Agency (MNP), Bilthoven, The Netherlands. -> Monfreda, C., Ramankutty, N. & Foley, J.A. (2008) Farming the planet: 2. Geographic distribution of crop areas, yields, physi- ological types, and net primary production in the year 2000. Global Biogeochemical Cycles, 22, GB1022. - -#### Data access - -http://ecotope.org/anthromes/v2/data/ - -#### Data preparation - -```sh -mkdir -p $GISDATA/biomas/Anthromes -cd $GISDATA/biomas/Anthromes - -wget --continue http://ecotope.org/files/anthromes/v2/data/input_data/anthromes_2_input_data_ESRI_GRID.zip - -cd $WORKDIR -unzip $GISDATA/biomas/Anthromes/anthromes_2_input_data_ESRI_GRID.zip - - -## Fix geographic limits to 90 (NS) and 180 (EW) -for k in cult irrig past rice urban -do - gdalwarp -te -180 -90 180 90 $WORKDIR/2000/p_${k}/ Anthromes_p_${k}.tif -done - -grass --text -c Anthromes_p_${k}.tif $GISDB/raw/Anthromes - -for k in cult irrig past rice urban -do - r.in.gdal input=Anthromes_p_${k}.tif output=p_${k} -done - -rm -r 1700 1800 1900 2000 methods_smaller.jpg Readme.txt -rm Anthromes*tif -exit -``` diff --git a/doc/anthroposphere/global/Aquastat-v5.0.md b/doc/anthroposphere/global/Aquastat-v5.0.md deleted file mode 100644 index b012534..0000000 --- a/doc/anthroposphere/global/Aquastat-v5.0.md +++ /dev/null @@ -1,26 +0,0 @@ -# Global Map of Irrigation Areas, v 5.0 - -https://www.lap.uni-bonn.de/research/downloads/gmia/siebert_et_al_2013_gmia5 - -#### Citation -> Siebert, S., Henrich, V., Frenken, K., Burke, J. (2013): **Update of the Global Map of Irrigation Areas to version 5**. Project report, 178 p. (4 MB) -> Siebert, S., Döll, P., Hoogeveen, J., Faures, J.-M., Frenken, K., Feick, S. (2005): *Development and validation of the global map of irrigation areas*. **Hydrology and Earth System Sciences**, 9, 535-547. - -#### Data download: -http://www.fao.org/aquastat/en/geospatial-information/global-maps-irrigated-areas - -For the GIS-users the map is distributed in two different formats: as zipped ASCII-grid that can be easily imported in most GIS-software that supports raster data or grids; and, to accommodate people who use GIS-software that doesn't support raster data or grids, as a zipped ESRI shape files. It should be noted, however, that the values in the ASCII-grids have a precision of 6 decimals while the values in the shape-file have a precision of 2 decimals. For model calculations it is therefore recommended to use the grid-version. As a service to those people who would need to know the absolute area equipped for irrigation, another ASCII-grid is available in which the area equipped for irrigation is expressed in hectares per cell. Non-GIS-users can download the map as PDF-file in two different resolutions. - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/Aquastat-v5 -cd $GISDATA/antroposphere/global/Aquastat-v5 - -wget --continue 'https://firebasestorage.googleapis.com/v0/b/fao-aquastat.appspot.com/o/GIS%2Fgmia_v5_aei_pct_asc.zip?alt=media&token=e448ce53-296f-4756-90c1-75c87f74e569' --output-document=gmia_v5_aei_pct_asc.zip - -unzip -u gmia_v5_aei_pct_asc.zip - - -``` diff --git a/doc/anthroposphere/global/Earthstats-crops-pastures.md b/doc/anthroposphere/global/Earthstats-crops-pastures.md deleted file mode 100644 index b2e37d8..0000000 --- a/doc/anthroposphere/global/Earthstats-crops-pastures.md +++ /dev/null @@ -1,19 +0,0 @@ -# Cropland and Pasture Area in 2000 - -### Citation - -> Ramankutty, N., A.T. Evan, C. Monfreda, and J.A. Foley (2008), Farming the planet: 1. Geographic distribution of global agricultural lands in the year 2000. Global Biogeochemical Cycles 22, GB1003, doi:10.1029/2007GB002952. - -### Data download and preparation - -http://www.earthstat.org/cropland-pasture-area-2000/ - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/Earthstats -cd $GISDATA/antroposphere/global/Earthstats - -wget --continue -b https://s3.us-east-2.amazonaws.com/earthstatdata/CroplandPastureArea2000_Geotiff.zip -unzip -u CroplandPastureArea2000_Geotiff.zip -``` diff --git a/doc/anthroposphere/global/GHSL-settlements.md b/doc/anthroposphere/global/GHSL-settlements.md deleted file mode 100644 index 97599e0..0000000 --- a/doc/anthroposphere/global/GHSL-settlements.md +++ /dev/null @@ -1,28 +0,0 @@ -# GHSL - Global Human Settlement Layer - -https://ghsl.jrc.ec.europa.eu/dataToolsOverview.php - -Documentation: https://ghsl.jrc.ec.europa.eu/documents/GHSL_Data_Package_2019.pdf?t=1478q532234372 - -## Citation -Dataset: -> Pesaresi, Martino; Florczyk, Aneta; Schiavina, Marcello; Melchiorri, Michele; Maffenini, Luca (2019): GHS settlement grid, updated and refined REGIO model 2014 in application to GHS-BUILT R2018A and GHS-POP R2019A, multitemporal (1975-1990-2000-2015), R2019A. European Commission, Joint Research Centre (JRC) [Dataset] doi:10.2905/42E8BE89-54FF-464E-BE7B-BF9E64DA5218 PID: http://data.europa.eu/89h/42e8be89-54ff-464e-be7b-bf9e64da5218 - -Concept & Methodology: -> Florczyk, Aneta J.; Corbane, Christina; Ehrlich, Daniele; Freire, Sergio; Kemper, Thomas; Maffenini, Luca; Melchiorri, Michele; Pesaresi, Martino; Politis, Panagiotis; Schiavina, Marcello; Sabo, Filip; Zanchetta, Luigi (2019): GHSL Data Package 2019, EUR 29788 EN, Publications Office of the European Union, Luxembourg, ISBN 978-92-76-13187-8 doi:10.2760/0726, JRC 117104 - -## Data access and download - -Choose from different products , times and resolutions - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/GHSL -cd $GISDATA/antroposphere/global/GHSL - -wget --continue -b https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/GHS_BUILT_LDSMT_GLOBE_R2018A/GHS_BUILT_LDS2000_GLOBE_R2018A_54009_1K/V2-0/GHS_BUILT_LDS2000_GLOBE_R2018A_54009_1K_V2_0.zip -wget --continue -b https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/GHS_BUILT_LDSMT_GLOBE_R2018A/GHS_BUILT_LDSMT_GLOBE_R2018A_3857_30/V2-0/GHS_BUILT_LDSMT_GLOBE_R2018A_3857_30_V2_0.zip - -wget --continue -b https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/GHS_SMOD_POP_GLOBE_R2019A/GHS_SMOD_POP2000_GLOBE_R2019A_54009_1K/V2-0/GHS_SMOD_POP2000_GLOBE_R2019A_54009_1K_V2_0.zip -``` diff --git a/doc/anthroposphere/global/GLAD-GLCLUC-2000-2020.md b/doc/anthroposphere/global/GLAD-GLCLUC-2000-2020.md deleted file mode 100644 index c6d0819..0000000 --- a/doc/anthroposphere/global/GLAD-GLCLUC-2000-2020.md +++ /dev/null @@ -1,54 +0,0 @@ -# Global Land Cover and Land Use Change, 2000-2020 -Datasets: https://glad.umd.edu/dataset/GLCLUC2020 -Tool: https://glad.umd.edu/ard/home - -## Citation -> Potapov P., Hansen M.C., Pickens A., Hernandez-Serna A., Tyukavina A., Turubanova S., Zalles V., Li X., Khan A., Stolle F., Harris N., Song X.-P., Baggett A., Kommareddy I., Kommareddy A. (2022) The global 2000-2020 land cover and land use change dataset derived from the Landsat archive: first results. Frontiers in Remote Sensing [https://doi.org/10.3389/frsen.2022.856903] - -> P. Potapov, X. Li, A. Hernandez-Serna, A. Tyukavina, M.C. Hansen, A. Kommareddy, A. Pickens, S. Turubanova, H. Tang, C.E. Silva, J. Armston, R. Dubayah, J. B. Blair, M. Hofton (2020) Mapping and monitoring global forest canopy height through integration of GEDI and Landsat data. Remote Sensing of Environment, 112165. https://doi.org/10.1016/j.rse.2020.112165  - -P. Potapov, S. Turubanova, M.C. Hansen, A. Tyukavina, V. Zalles, A. Khan, X.-P. Song, A. Pickens, Q. Shen, J. Cortez. (2021) Global maps of cropland extent and change show accelerated cropland expansion in the twenty-first century. Nature Food. https://doi.org/10.1038/s43016-021-00429-z  - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/GLAD-GLCLUC -cd $GISDATA/antroposphere/global/GLAD-GLCLUC - -wget -b --continue https://glad.umd.edu/users/Potapov/GLCLUC2020/10d_tiles.zip - -SRV=https://glad.umd.edu/users/Potapov/GLCLUC2020/ -for YEAR in 2000 2020 -do - VAR=Forest_height_${YEAR} - curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/${YEAR}_[0-1]0N_0[5-7]0W.tif -done - -for YEAR in 2000 2020 -do - VAR=Forest_extent_${YEAR} - curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/[0-1]0N_0[5-7]0W.tif -done - - -for VAR in Built-up_change_2000_2020 -do - curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/Change_[0-2]0N_0[5-8]0W.tif -done - - -for SFX in loss gain -do - VAR=Forest_height_${SFX}_2000_2020 - curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/net${SFX}_[0-1]0N_0[5-7]0W.tif -done - -mkdir -p $GISDATA/antroposphere/global/GLAD-GLCLUC/Croplands -cd $GISDATA/antroposphere/global/GLAD-GLCLUC/Croplands - -for YEAR in 2003 2007 2011 2015 2019 -do - wget -b --continue https://glad.geog.umd.edu/Potapov/Global_Crop/Data/Global_cropland_NW_${YEAR}.tif -done -``` \ No newline at end of file diff --git a/doc/anthroposphere/global/GRIP-road-database.md b/doc/anthroposphere/global/GRIP-road-database.md deleted file mode 100644 index 2018a66..0000000 --- a/doc/anthroposphere/global/GRIP-road-database.md +++ /dev/null @@ -1,11 +0,0 @@ -# GRIP global roads database - -https://www.globio.info/download-grip-dataset - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/GRIP-roads -cd $GISDATA/antroposphere/global/GRIP-roads - -``` diff --git a/doc/anthroposphere/global/Gridded-Livestock-World-2010.md b/doc/anthroposphere/global/Gridded-Livestock-World-2010.md deleted file mode 100644 index 6ee0be5..0000000 --- a/doc/anthroposphere/global/Gridded-Livestock-World-2010.md +++ /dev/null @@ -1,26 +0,0 @@ -# Gridded Livestock of the World – Latest – 2010 (GLW 3) - -#### Citation - -For version GLW 2: - -> Robinson TP, Wint GRW, Conchedda G, Van Boeckel TP, Ercoli V, Palamara E, et al. (2014) Mapping the Global Distribution of Livestock. PLoS ONE 9(5): e96084. https://doi.org/10.1371/journal.pone.0096084 - -For GLW 3: -> Gilbert, M., Nicolas, G., Cinardi, G. et al. *Global distribution data for cattle, buffaloes, horses, sheep, goats, pigs, chickens and ducks in 2010*. **Sci Data** 5, 180227 (2018). DOI: [10.1038/sdata.2018.227](https://doi.org/10.1038/sdata.2018.227) -> Gilbert, Marius; Nicolas, Gaëlle; Cinardi, Giusepina; Van Boeckel, Thomas P.; Vanwambeke, Sophie; Wint, William G. R.; Robinson, Timothy P., 2018, "Global cattle distribution in 2010 (5 minutes of arc)", https://doi.org/10.7910/DVN/GIVQ75, Harvard Dataverse, V3 - -From the original publication -> Two versions of each species distribution are produced. In the first version, livestock numbers are disaggregated within census polygons according to weights established by statistical models using high resolution spatial covariates (dasymetric weighting). In the second version, animal numbers are distributed homogeneously with equal densities within their census polygons (areal weighting) to provide spatial data layers free of any assumptions linking them to other spatial variables. - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/GLW3 -cd $GISDATA/antroposphere/global/GLW3 - -#mv ~/Downloads/dataverse_files*.zip $GISDATA/antroposphere/global/GLW3 -#unzip dataverse_files.zip # and repeat for each file... -#rm dataverse_files.zip - -``` diff --git a/doc/anthroposphere/global/HANPP.md b/doc/anthroposphere/global/HANPP.md deleted file mode 100644 index 2605628..0000000 --- a/doc/anthroposphere/global/HANPP.md +++ /dev/null @@ -1,14 +0,0 @@ -# Global HANPP 2000 -> Haberl, H., K.-H. Erb, F. Krausmann, V. Gaube, A. Bondeau, C. Plutzar, S. Gingrich, W. Lucht and M. Fischer-Kowalski, (2007). Quantifying and mapping the global human appropriation of net primary production in Earth's terrestrial ecosystems. Proceedings of the National Acadademy of Sciences of the United States of America 104, 12942-12947. - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/HANPP-2000 -cd $GISDATA/antroposphere/global/HANPP-2000 - -wget --continue https://boku.ac.at/fileadmin/data/H03000/H73000/H73700/Data_Download/Data/Global_HANPP_Download_as_package.zip -unzip -u Global_HANPP_Download_as_package.zip -unzip -u 3Download\ as\ package/2all\ ASCII\ grids/all_grids.zip - -``` diff --git a/doc/anthroposphere/global/Irrigation-areas.md b/doc/anthroposphere/global/Irrigation-areas.md deleted file mode 100644 index 298d7cb..0000000 --- a/doc/anthroposphere/global/Irrigation-areas.md +++ /dev/null @@ -1,13 +0,0 @@ -# Global Irrigation Areas - -https://zenodo.org/record/4659476 - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/Irrigation-Areas -cd $GISDATA/antroposphere/global/Irrigation-Areas - -wget --continue "https://zenodo.org/record/4659476/files/v3b_combined_2015.tif?download=1" --output-document v3b_combined_2015.tif -unzip -u CroplandPastureArea2000_Geotiff.zip -``` diff --git a/doc/anthroposphere/global/Land-Use-2000-consistent.md b/doc/anthroposphere/global/Land-Use-2000-consistent.md deleted file mode 100644 index 93a5e23..0000000 --- a/doc/anthroposphere/global/Land-Use-2000-consistent.md +++ /dev/null @@ -1,15 +0,0 @@ -# Global 5 min resolution land-use for the year 2000 consistent with national census data - -> Karl-Heinz Erb , Veronika Gaube , Fridolin Krausmann , Christoph Plutzar , Alberte Bondeau & Helmut Haberl (2007) A comprehensive global 5 min resolution land-use data set for the year 2000 consistent with national census data, Journal of Land Use Science, 2:3, 191-224, DOI: 10.1080/17474230701622981 - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/antroposphere/global/Consistent-Land-Use-2000 -cd $GISDATA/antroposphere/global/Consistent-Land-Use-2000 - -wget --continue https://boku.ac.at/fileadmin/data/H03000/H73000/H73700/Data_Download/Data/Land_Use_Download_as_package.zip -unzip -u Land_Use_Download_as_package.zip -unzip -u 2Download\ as\ package/1all\ data\ as\ ascii-files/ascii_landuse.zip - -``` diff --git a/doc/anthroposphere/regional/Plantations-Australia.md b/doc/anthroposphere/regional/Plantations-Australia.md deleted file mode 100644 index cbe9307..0000000 --- a/doc/anthroposphere/regional/Plantations-Australia.md +++ /dev/null @@ -1,14 +0,0 @@ -# Australia's plantations 2016 - -https://www.awe.gov.au/abares/forestsaustralia/forest-data-maps-and-tools/spatial-data/australias-plantations - -## Refernce -> - - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -https://www.awe.gov.au/sites/default/files/abares/forestsaustralia/documents/datasets/AustraliasPlantations_2016.zip -``` diff --git a/doc/biotic-interactions/global/GloBI.md b/doc/biotic-interactions/global/GloBI.md deleted file mode 100644 index ed78cf9..0000000 --- a/doc/biotic-interactions/global/GloBI.md +++ /dev/null @@ -1,16 +0,0 @@ -# GloBI - -> Data indexed by GloBI is generously provided by researchers and collections openly sharing their datasets. When using this data, please make sure to attribute the original data contributors, including citing the specific datasets in derivative work. Each record indexed by GloBI contains a reference and dataset citation. Also, please consider to contribute to improve access to existing species interaction data. - -> Species interaction datasets indexed by GloBI can be accessed in various ways. For most, this website and its pages may be helpful to poke around the data. Other projects like GoMexSI, Encyclopedia of Life, and Ecosystem Explorer present GloBI data in a human readable format. - -```sh - -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/biotic-interactions/global/GloBI -cd $GISDATA/biotic-interactions/global/GloBI - -wget --continue https://zenodo.org/record/6604060/files/interactions.tsv.gz - -wget --continue https://zenodo.org/record/6604060/files/neo4j-graphdb.zip -``` diff --git a/doc/climate-classification/global/GEnS.md b/doc/climate-classification/global/GEnS.md deleted file mode 100644 index ad57c67..0000000 --- a/doc/climate-classification/global/GEnS.md +++ /dev/null @@ -1,20 +0,0 @@ -# Global Environmental Stratification - GEnS v3 -Bioclimatic stratification of the world: - -## Citation -> Metzger, Marc J. (2018). The Global Environmental Stratification: A high-resolution bioclimate map of the world. The University of Edinburgh. https://doi.org/10.7488/ds/2354 - -## Data download and preparation - -```sh -mkdir -p $GISDATA/climate-classification/global/GEnS - - -cd $GISDATA/climate-classification/global/GEnS -nohup wget --continue http://datashare.is.ed.ac.uk/download/DS_10283_3089.zip & -unzip DS_10283_3089.zip -unzip GEnSv3.zip - -##module add python/2.7.15 perl/5.28.0 gdal/2.3.2 -##GEnSv3/gens_v3.tif -``` diff --git a/doc/climate-classification/global/Holdridge.md b/doc/climate-classification/global/Holdridge.md deleted file mode 100644 index c8213a7..0000000 --- a/doc/climate-classification/global/Holdridge.md +++ /dev/null @@ -1,13 +0,0 @@ -# Holdridge Life Zones (Ecological Zones) - -UNEP/GRID - -## Citation -> -## Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate-classification/global/Holdridge -cd $GISDATA/climate-classification/global/Holdridge -``` diff --git "a/doc/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" "b/doc/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" deleted file mode 100644 index fb0a804..0000000 --- "a/doc/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" +++ /dev/null @@ -1,56 +0,0 @@ -# Present and future Köppen-Geiger climate classification maps - -Webpage at http://www.gloh2o.org/koppen/ - -#### Citation -> Beck, H., Zimmermann, N., McVicar, T. et al. Present and future Köppen-Geiger climate classification maps at 1-km resolution. Sci Data 5, 180214 (2018). https://doi.org/10.1038/sdata.2018.214 - -#### Data access - -Data is available at https://doi.org/10.6084/m9.figshare.6396959 - - -#### Data download and preparation - -```sh -mkdir -p $GISDATA//climate-classification/global/koppengeiger_1km -cd $GISDATA//climate-classification/global/koppengeiger_1km -wget --continue https://figshare.com/ndownloader/files/12407516 --output-document=Beck_KG_V1.zip - -#ls *zip -#cd $WORKDIR -#unzip -u $GISDATA//climate-classification/global/koppengeiger_1km/Beck_KG_V1.zip -``` - -|map nr|Code|Description|color code|matching EFG| -|---|---|---|---|---| -| 1 | Af | Tropical, rainforest | [0 0 255]|T1.1| -| 2 | Am | Tropical, monsoon | [0 120 255]|---| -| 3 | Aw | Tropical, savannah | [70 170 250]|---| -| 4 | BWh | Arid, desert, hot | [255 0 0]|---| -| 5 | BWk | Arid, desert, cold | [255 150 150]|---| -| 6 | BSh | Arid, steppe, hot | [245 165 0]|---| -| 7 | BSk | Arid, steppe, cold | [255 220 100]|---| -| 8 | Csa | Temperate, dry summer, hot summer | [255 255 0]|---| -| 9 | Csb | Temperate, dry summer, warm summer | [200 200 0]|---| -| 10 | Csc | Temperate, dry summer, cold summer | [150 150 0]|---| -| 11 | Cwa | Temperate, dry winter, hot summer | [150 255 150]|---| -| 12 | Cwb | Temperate, dry winter, warm summer | [100 200 100]|---| -| 13 | Cwc | Temperate, dry winter, cold summer | [50 150 50]|---| -| 14 | Cfa | Temperate, no dry season, hot summer | [200 255 80]|---| -| 15 | Cfb | Temperate, no dry season, warm summer | [100 255 80]|---| -| 16 | Cfc | Temperate, no dry season, cold summer | [50 200 0]|---| -| 17 | Dsa | Cold, dry summer, hot summer | [255 0 255]|---| -| 18 | Dsb | Cold, dry summer, warm summer | [200 0 200]|---| -| 19 | Dsc | Cold, dry summer, cold summer | [150 50 150]|---| -| 20 | Dsd | Cold, dry summer, very cold winter | [150 100 150]|---| -| 21 | Dwa | Cold, dry winter, hot summer | [170 175 255]|---| -| 22 | Dwb | Cold, dry winter, warm summer | [90 120 220]|---| -| 23 | Dwc | Cold, dry winter, cold summer | [75 80 180]|---| -| 24 | Dwd | Cold, dry winter, very cold winter | [50 0 135]|---| -| 25 | Dfa | Cold, no dry season, hot summer | [0 255 255]|---| -| 26 | Dfb | Cold, no dry season, warm summer | [55 200 255]|---| -| 27 | Dfc | Cold, no dry season, cold summer | [0 125 125]|---| -| 28 | Dfd | Cold, no dry season, very cold winter | [0 70 95]|---| -| 29 | ET | Polar, tundra | [178 178 178]| T6.3| -| 30 | EF | Polar, frost | [102 102 102]|---| diff --git a/doc/climate/global/CHELSA-climatologies.md b/doc/climate/global/CHELSA-climatologies.md deleted file mode 100644 index 0f839d8..0000000 --- a/doc/climate/global/CHELSA-climatologies.md +++ /dev/null @@ -1,39 +0,0 @@ -# CHELSA Version 1.2 - -Links to: -/ [Map visualization]() -/ [Webpage](http://chelsa-climate.org/) - - -## Citation -> Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, H.P. & Kessler, M. (2017) Climatologies at high resolution for the earth’s land surface areas. Scientific Data 4, 170122. - -## Technical specification - -Technical specification at https://chelsa-climate.org/wp-admin/download-page/CHELSA_tech_specification.pdf - -## Data access - -Originally accessible to download from Dryad: -> Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, H.P., Kessler, M. (2017) Data from: Climatologies at high resolution for the earth’s land surface areas. Dryad Digital Repository. https://doi.org/10.5061/dryad.kd1d4 - - -On February 2021 the recommended method is to use the [download server](https://envicloud.wsl.ch/#/?prefix=chelsa%2Fchelsa_V1). - -Once in the server, is easy to select the files needed, and download a list of files paths for download with several tools. Here I use wget - -## Data download and preparation - -```bash -source proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate/global/CHELSA -cd $GISDATA/climate/global/CHELSA - -# scp downloaded file with document links: envidatS3paths.txt -wget -b -nH -x --cut-dirs=3 --continue -i envidatS3paths.txt -wget -b -nH -x --cut-dirs=3 --continue -i envidatS3paths3.txt -wget -b -nH -x --cut-dirs=3 --continue -i envidatS3paths4.txt -grep -h swe envidatS3paths* > links -wget -b -nH -x --cut-dirs=3 --continue -i links - -``` diff --git a/doc/climate/global/CHIRPS.md b/doc/climate/global/CHIRPS.md deleted file mode 100644 index 7b708d8..0000000 --- a/doc/climate/global/CHIRPS.md +++ /dev/null @@ -1,36 +0,0 @@ -# The Climate Hazards Group InfraRed Precipitation with Station ([CHIRPS](http:/ -/chg.geog.ucsb.edu/data/chirps)) - -Quasi-global distribution (50S-50N), gridded 0.05 degree resolution, 1981 to near-real time precipitation time series. - -https://www.chc.ucsb.edu/data/chirps - -old links: -[README](ftp://ftp.chg.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/README-CHIRPS.txt), [FAQ](http://chg-wiki.geog.ucsb.edu/wiki/CHIRPS_FAQ), [Publication](http://pubs.usgs.gov/ds/832/) - -Publication: https://www.nature.com/articles/sdata201566 - -https://data.chc.ucsb.edu/products/CHIRPS-2.0/ -https://data.chc.ucsb.edu/products/CHIRPS-2.0/README-CHIRPS.txt - -```sh -source proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate/global/CHIRPS -cd $GISDATA/climate/global/CHIRPS - -# all in one file: -wget --continue https://data.chc.ucsb.edu/products/CHIRPS-2.0/global_monthly/netcdf/chirps-v2.0.monthly.nc - - -``` - - -Time steps are months (days since 1980-1-1 0:0:0), and they are stored as bands: - -```sh -module add python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 -gdalinfo chirps-v2.0.monthly.nc - - -gdalwarp NETCDF:$GISDATA/climate/global/CHIRPS/chirps-v2.0.monthly.nc:precip -t_srs EPSG:4326 -te -74 0 -58 13 -of 'GTiff' Test1.tif -``` diff --git a/doc/climate/global/CMCC-BioClimInd.md b/doc/climate/global/CMCC-BioClimInd.md deleted file mode 100644 index f9f1ce2..0000000 --- a/doc/climate/global/CMCC-BioClimInd.md +++ /dev/null @@ -1,35 +0,0 @@ -# CMCC-BioClimInd -The complete CMCC-BioClimInd dataset is available through PANGAEA (https://doi.org/10.1594/PANGAEA.904278). It consists in 805 files in NetCDF4 format with a 0.5° by 0.5° grid resolution and global coverage (except Antarctica). Files represent 35 bioclimatic indicators calculated for a 40-years historical interval (1960–1999) under climate reanalysis and for two future 40-years time intervals (2040–2079 and 2060–2099) under 6 ESMs’ projections and 2 RCPs (except RCP4.5 for CMCC-CESM). - - The individual file names follow this structure: “BIOx institute-model rcp yyyy zz.nc” - where x identifies the code of the bioclimatic indicator, institute-model (see Table 3, first column) identifies the source of data (short name for historical observation or for the producing Center and/or ESMs), rcp is the Representative Concentration Pathway (RCP 4.5 or RCP 8.5), yyyy is the starting year of time interval and zz the last two digits of the ending year of the time interval. - - ## Citation - - ```sh - @misc{noce2019cang, - author={Sergio {Noce} and Luca {Caporaso} and Monia {Santini}}, - title={{CMCC-BioClimInd. A new globaldataset of bioclimatic indicators}}, - year={2019}, - doi={10.1594/PANGAEA.904278}, - url={https://doi.org/10.1594/PANGAEA.904278}, - organization={Fondazione Centro Euromediterraneo sui Cambiamenti Climatici}, - abstract={CMCC-BioClimInd is a new global gridded dataset of bioclimatic indicators at 0.5{\textdegree} by 0.5 {\textdegree}resolution for historical and future conditions. The dataset provides a set of 35 bioclimatic indices, expressed as mean values over each time interval, derived from post-processing both climate reanalysis for historical period (1960-1999) and an ensemble of 11 bias corrected CMIP5 simulations under two emission scenarios for future climate projections alongtwo periods (2040-2079 and 2060-2099). This new dataset complements the availability of spatialized bioclimatic information, crucial aspect in many ecological and environmental wide scale applications and for several disciplines, including forestry, biodiversity conservation, plant and landscape ecology. The data of individual indices are publicly available for download in the commonly used Network Common Data Form 4 (NetCDF4) format.}, - type={data set}, - publisher={PANGAEA} - } - - ``` - - ## Data download and preparation - - ```sh - source proyectos/UNSW/cesdata/env/project-env.sh - mkdir -p $GISDATA/climate/global/CMCC-BioClimInd - cd $GISDATA/climate/global/CMCC-BioClimInd - -for k in $(seq 1 35) -do - wget --continue https://hs.pangaea.de/model/NoceS-etal_2019/BIO${k}.zip -done - ``` diff --git a/doc/climate/global/CRU-TS.md b/doc/climate/global/CRU-TS.md deleted file mode 100644 index e5d6254..0000000 --- a/doc/climate/global/CRU-TS.md +++ /dev/null @@ -1,56 +0,0 @@ -# [CRU TS v. 4.03](https://crudata.uea.ac.uk/cru/data/hrg/) - -High-resolution gridded datasets of the Climatic Research Unit. - -## Citation - -> Harris, I., Jones, P.D., Osborn, T.J. and Lister, D.H. (2014), Updated high-resolution grids of monthly climatic observations - the CRU TS3.10 Dataset. International Journal of Climatology 34, 623-642 [doi:10.1002/joc.3711](http://dx.doi.org/10.1002/joc.3711) -> [Revised appendix](https://crudata.uea.ac.uk/cru/data/hrg/Revised_Appendix_3_CLD.pdf) - -## Data access - -Data is available at: -> -Documentation: - -Metadata: - - -## Data download and preparation - -```sh -mkdir -p $GISDATA/climate/global/CRU_TS -cd $GISDATA/climate/global/CRU_TS -wget https://crudata.uea.ac.uk/cru/data/hrg/cru_ts_4.03/Release_Notes_CRU_TS4.03.txt - - -for VAR in cld dtr frs pet pre tmn tmp tmx vap wet -do - mkdir -p $GISDATA/climate/global/CRU_TS/$VAR - cd $GISDATA/climate/global/CRU_TS/$VAR - wget --continue https://crudata.uea.ac.uk/cru/data/hrg/cru_ts_4.03/cruts.1905011326.v4.03/${VAR}/ -O ${VAR}.list - - for ARCH in $(grep nc.gz ${VAR}.list | sed -n 's/.*href="\([^"]*\).*/\1/p') - do - wget --continue https://crudata.uea.ac.uk/cru/data/hrg/cru_ts_4.03/cruts.1905011326.v4.03/${VAR}/${ARCH} - done -done - -``` - - - - -```sh -cd $WORKDIR -ls $GISDATA/climate/global/CRU_TS - -cp $GISDATA/climate/global/CRU_TS/cru_ts4.03.1901.2018.pre.dat.nc.gz . -gunzip cru_ts4.03.1901.2018.pre.dat.nc.gz - -cp $GISDATA/climate/global/CRU_TS/cru_ts4.03.1901.2018.pet.dat.nc.gz . -gunzip cru_ts4.03.1901.2018.pet.dat.nc.gz - -gdalinfo NETCDF:"cru_ts4.03.1901.2018.pre.dat.nc" -sd 1 | less - -``` diff --git a/doc/climate/global/CliMond.md b/doc/climate/global/CliMond.md deleted file mode 100644 index 7f45b16..0000000 --- a/doc/climate/global/CliMond.md +++ /dev/null @@ -1,105 +0,0 @@ -# Global climatologies for bioclimatic modelling - -urls https://www.climond.org -versions v1.2 -released 2014 - -> Kriticos D.J., Webber B.L., Leriche A., Ota N., Macadam I., Bathols J. & Scott J.K. (2012) *CliMond: global high resolution historical and future scenario climate surfaces for bioclimatic modelling*. **Methods in Ecology and Evolution**, 3: 53-64. DOI: [10.1111/j.2041-210X.2011.00134.x](http://doi.org/10.1111/j.2041-210X.2011.00134.x) -> Kriticos D.J., Jarošik V. and Ota N. (2014) *Extending the suite of Bioclim variables: a proposed registry system and case study using principal components analysis.* **Methods in Ecology and Evolution**, Online Early, DOI: [10.1111/2041-210X.12244] - -## Data access and download - -```bash -source proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate/global/CliMond -cd $GISDATA/climate/global/CliMond -``` - -Go to the webpage, login open developer tools -> network, then copy link as cURL, then we pipe the result to get a list of links to the zipfiles... -```sh -mkdir -p $GISDATA/climate/global/CliMond/Bioclim -cd $GISDATA/climate/global/CliMond/Bioclim - -curl 'https://www.climond.org/Core/Authenticated/Bioclim.aspx' \ - -H 'Connection: keep-alive' \ - -H 'Cache-Control: max-age=0' \ - -H 'sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ - -H 'sec-ch-ua-mobile: ?0' \ - -H 'Upgrade-Insecure-Requests: 1' \ - -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ - -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ - -H 'Sec-Fetch-Site: same-origin' \ - -H 'Sec-Fetch-Mode: navigate' \ - -H 'Sec-Fetch-User: ?1' \ - -H 'Sec-Fetch-Dest: document' \ - -H 'Referer: https://www.climond.org/BioclimData.aspx' \ - -H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ - -H 'Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; __utma=96693453.810068548.1659574627.1659574627.1659578286.2; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; .ASPXROLES=ZGK7zMXZPBtFYi7Q1SSOiGZTVBZZcBw5yRU0GIxkuQm_PdK3anr6NgJGw1aU9o2zsxlKihFzxYKErHUxC_tVdCstG5vGzIDa2JFNg1cT88jlBNBjG76rOPRLKxzo2yGwQmBUbA-yH6bS_cMgYkDp0Z92cTGaxkZxg0z03ALuuMONxIcmp0CHHQ-WH9SH34r5ZZr--Pk-pR9Oog9R39DegVIjnPpGLBVLaibA_jgoFvy4va5zoZjqEVxTuNypktnRhbRKZI2m1dW_Wk4oFsSa_rjbuy8DzT0g555uoV6nX3DOINHU1CURhw_J_aFYbXofR3knh_GhPnWRn-caU7Cst-D3tX_4QNOZHEp0dpz9a8LLa9VGIQAlNcQzpIDnfSYWr7NzT-V61qbVOAX0gMmlgeXpxm7V-rQZasZ-G1UhMUNxiraevAXlMYwgN30wEihWMD-QEL3jfoMecBvATWk1RuVktsNuD-8dK3XsE-fci27qFBTghE-rS0ByU4QJdNq85HQ7Y8Rg9Q1DNGfH8kIW8M3UvI8l5ncyzbKIElc00rpRrEuQnxkwG4pD2RxdMhZd0; __utmb=96693453.7.9.1659578653981' \ - --compressed | grep href | grep zip > links - -``` - -Then we use wget to go through the list of links - -```sh - -wget --force-html --input-file=links --base=https://www.climond.org/Core/Authenticated/ \ - --header='Connection: keep-alive' \ - --header='Cache-Control: max-age=0' \ - --header='sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ - --header='sec-ch-ua-mobile: ?0' \ - --header='Upgrade-Insecure-Requests: 1' \ - --header='User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ - --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ - --header='Sec-Fetch-Site: same-origin' \ - --header='Sec-Fetch-Mode: navigate' \ - --header='Sec-Fetch-User: ?1' \ - --header='Sec-Fetch-Dest: document' \ - --header='Referer: https://www.climond.org/BioclimData.aspx' \ - --header='Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ - --header='Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; __utma=96693453.810068548.1659574627.1659574627.1659578286.2; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; .ASPXROLES=ZGK7zMXZPBtFYi7Q1SSOiGZTVBZZcBw5yRU0GIxkuQm_PdK3anr6NgJGw1aU9o2zsxlKihFzxYKErHUxC_tVdCstG5vGzIDa2JFNg1cT88jlBNBjG76rOPRLKxzo2yGwQmBUbA-yH6bS_cMgYkDp0Z92cTGaxkZxg0z03ALuuMONxIcmp0CHHQ-WH9SH34r5ZZr--Pk-pR9Oog9R39DegVIjnPpGLBVLaibA_jgoFvy4va5zoZjqEVxTuNypktnRhbRKZI2m1dW_Wk4oFsSa_rjbuy8DzT0g555uoV6nX3DOINHU1CURhw_J_aFYbXofR3knh_GhPnWRn-caU7Cst-D3tX_4QNOZHEp0dpz9a8LLa9VGIQAlNcQzpIDnfSYWr7NzT-V61qbVOAX0gMmlgeXpxm7V-rQZasZ-G1UhMUNxiraevAXlMYwgN30wEihWMD-QEL3jfoMecBvATWk1RuVktsNuD-8dK3XsE-fci27qFBTghE-rS0ByU4QJdNq85HQ7Y8Rg9Q1DNGfH8kIW8M3UvI8l5ncyzbKIElc00rpRrEuQnxkwG4pD2RxdMhZd0; __utmb=96693453.7.9.1659578653981' -``` - -```sh -mkdir -p $GISDATA/climate/global/CliMond/RawClimate -cd $GISDATA/climate/global/CliMond/RawClimate - -curl 'https://www.climond.org/Core/Authenticated/RawClimate.aspx' \ - -H 'Connection: keep-alive' \ - -H 'Cache-Control: max-age=0' \ - -H 'sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ - -H 'sec-ch-ua-mobile: ?0' \ - -H 'Upgrade-Insecure-Requests: 1' \ - -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ - -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ - -H 'Sec-Fetch-Site: same-origin' \ - -H 'Sec-Fetch-Mode: navigate' \ - -H 'Sec-Fetch-User: ?1' \ - -H 'Sec-Fetch-Dest: document' \ - -H 'Referer: https://www.climond.org/RawClimateData.aspx' \ - -H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ - -H 'Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; __utma=96693453.810068548.1659574627.1659578286.1659582642.3; .ASPXROLES=i2fL3QoXsDgQp10QzMOP7M3-_P-4Tyc5R29msFiaPzWRTeJo-LVblELrMdUJB569_6NXcihDMXhKHg5CF2yleM6hHJhqH4KjEtgXYzWhhLSzZe8yxWthyIEujJqjQskOGO0AfxiN4kZ2H80axWbIsP1CHLeTp3kquDDPFvhySyRJxta93s0ueVrRU51RLdOAqwov4v0B0KPl1tMPOgp1-T2upjwSKQak9nzn8hIfP9pFYP-ce9c02uvRARe6_is4fkoSRvbWM864qi1QQFYnjxMtFKBjLhalM9Kb3W-vAYGqZTUHWFqE_PbOFZDZ_aLCSI9l1_PTL0DjSNXn4Zu0c63hQrXCg-fQ_w5sM6ueGchCQBy6ZXb6VfoKFohjiyy8ap4aXCO6x1XZ6ioxpjdzqHz_D55PkIxtwtkMZ8z642jnjbtxCCLsvc9tqN4weBu-zkqs8yvieP0ZmqQPhPkTBahGXtsKbhoqS9kNibelNR-hkQjISSARwMKX3nXm_x2axaoI7aE3xTDd-1i_VIrh4Su_XjonkF8WwUulWbBg77SLYeVGITFbmItwGtat1m7Q0; __utmb=96693453.2.10.1659582642' \ - --compressed | grep href | grep zip > links - -``` - -Then we use wget to go through the list of links - -```sh - -wget --force-html --input-file=links --base=https://www.climond.org/Core/Authenticated/ \ - --header='Connection: keep-alive' \ - --header='Cache-Control: max-age=0' \ - --header='sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ - --header='sec-ch-ua-mobile: ?0' \ - --header='Upgrade-Insecure-Requests: 1' \ - --header='User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ - --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ - --header='Sec-Fetch-Site: same-origin' \ - --header='Sec-Fetch-Mode: navigate' \ - --header='Sec-Fetch-User: ?1' \ - --header='Sec-Fetch-Dest: document' \ - --header='Referer: https://www.climond.org/RawClimateData.aspx' \ - --header='Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ - --header='Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; __utma=96693453.810068548.1659574627.1659578286.1659582642.3; .ASPXROLES=i2fL3QoXsDgQp10QzMOP7M3-_P-4Tyc5R29msFiaPzWRTeJo-LVblELrMdUJB569_6NXcihDMXhKHg5CF2yleM6hHJhqH4KjEtgXYzWhhLSzZe8yxWthyIEujJqjQskOGO0AfxiN4kZ2H80axWbIsP1CHLeTp3kquDDPFvhySyRJxta93s0ueVrRU51RLdOAqwov4v0B0KPl1tMPOgp1-T2upjwSKQak9nzn8hIfP9pFYP-ce9c02uvRARe6_is4fkoSRvbWM864qi1QQFYnjxMtFKBjLhalM9Kb3W-vAYGqZTUHWFqE_PbOFZDZ_aLCSI9l1_PTL0DjSNXn4Zu0c63hQrXCg-fQ_w5sM6ueGchCQBy6ZXb6VfoKFohjiyy8ap4aXCO6x1XZ6ioxpjdzqHz_D55PkIxtwtkMZ8z642jnjbtxCCLsvc9tqN4weBu-zkqs8yvieP0ZmqQPhPkTBahGXtsKbhoqS9kNibelNR-hkQjISSARwMKX3nXm_x2axaoI7aE3xTDd-1i_VIrh4Su_XjonkF8WwUulWbBg77SLYeVGITFbmItwGtat1m7Q0; __utmb=96693453.2.10.1659582642' -``` diff --git a/doc/climate/global/ERA5.md b/doc/climate/global/ERA5.md deleted file mode 100644 index 060d234..0000000 --- a/doc/climate/global/ERA5.md +++ /dev/null @@ -1,42 +0,0 @@ -# ERA5-Land Hourly - ECMWF Climate Reanalysis - -https://cds.climate.copernicus.eu/cdsapp - -## Citation -> Muñoz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). (), doi:10.24381/cds.e2161bac - - -## Data access and download - -https://confluence.ecmwf.int/display/CKB/How+to+download+ERA5 - -## Use in `earth engine` - - -```js -ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY") open_in_new -``` - -example with snow cover: - -```js -var dataset = ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY") - .filter(ee.Filter.date('2020-12-01', '2020-12-02')); - -var visualization = { - bands: ['snow_cover'], - min: 0.0, - max: 100.0, - palette: [ - "#000080","#0000D9","#4000FF","#8000FF","#0080FF","#00FFFF", - "#00FF80","#80FF00","#DAFF00","#FFFF00","#FFF500","#FFDA00", - "#FFB000","#FFA400","#FF4F00","#FF2500","#FF0A00","#FF00FF", - ] -}; - - -Map.setCenter(-69, 11.2, 2); - -Map.addLayer(dataset, visualization, "Air temperature [K] at 2m height"); - -``` diff --git a/doc/climate/global/GHCN-M.md b/doc/climate/global/GHCN-M.md deleted file mode 100644 index 76bc897..0000000 --- a/doc/climate/global/GHCN-M.md +++ /dev/null @@ -1,18 +0,0 @@ -# GLOBAL HISTORICAL CLIMATOLOGY NETWORK - MONTHLY (GHCN-M) Version 4 - -https://www.ncei.noaa.gov/pub/data/ghcn/v4/readme.txt - -> GHCN-M version 4 currently contains monthly mean temperature for over 25,000 stations across the globe. - -> There are currently three versions of GHCN-M version 4 , QCU: Quality Control, Unadjusted; QCF: Quality Control, Adjusted, using the Pairwise Homogeneity Algorithm (PHA, Menne and Williams, 2009); QFE: Quality Control, Adjusted, Estimated using the Pairwise Homogeneity Algorithm. Only the years 1961-2010 are provided. This is to help maximize station coverage when calculating normals. For more information, see Williams et al, 2012. - -```sh - -source proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate/global/GHCN-M -cd $GISDATA/climate/global/GHCN-M - -wget https://www.ncei.noaa.gov/pub/data/ghcn/v4/ghcnm.tavg.latest.qcf.tar.gz - -wget https://www.ncei.noaa.gov/data/ghcnm/v4beta/archive/ghcn-m_v4.00.00_prcp_s16970101_e20220831_c20220907.tar.gz -``` diff --git a/doc/climate/global/Terraclimate.md b/doc/climate/global/Terraclimate.md deleted file mode 100644 index 13224db..0000000 --- a/doc/climate/global/Terraclimate.md +++ /dev/null @@ -1,62 +0,0 @@ -# Terraclimate - -TerraClimate is a dataset of monthly climate and climatic water balance for global terrestrial surfaces from 1958-2019. All data have monthly temporal resolution and a ~4-km (1/24th degree) spatial resolution. - -## Citation - ->Abatzoglou, J.T., S.Z. Dobrowski, S.A. Parks, K.C. Hegewisch, 2018, Terraclimate, a high-resolution global dataset of monthly climate and climatic water balance from 1958-2015, Scientific Data, 5, 170191 . DOI:10.1038/sdata.2017.191 - -## Data access - -Data and documentation is available at: -> http://www.climatologylab.org/terraclimate.html - - -## Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate/global/Terraclimate -cd $GISDATA/climate/global/Terraclimate -``` - -### Climatologies (1961-1990 and 1981-2010; and +2C and +4C future scenarios)​ - -Using the data catalogs to extract all links: - -```sh -mkdir -p $GISDATA/climate/global/Terraclimate/summaries -cd $GISDATA/climate/global/Terraclimate/summaries - -wget http://thredds.northwestknowledge.net:8080/thredds/catalog/TERRACLIMATE_ALL/summaries/catalog.html - -#xpath -q -e "//a/@href/data()" catalog.html - -sed -n "s/.*href='\([^']*\).*/\1/p" catalog.html > enlaces - -for GRP in TerraClimate19611990 TerraClimate4C TerraClimate2C TerraClimate19812010 -do - for VAR in ppt pet # ws vpd vap tmin tmax swe srad soil q ppt pet def aet - do - wget --continue http://thredds.northwestknowledge.net:8080/thredds/fileServer/TERRACLIMATE_ALL/summaries/${GRP}_${VAR}.nc - done -done -``` - - -### Variables per year - -Use [wget script](http://www.climatologylab.org/wget-terraclimate.html) to download individual netCDF files for individual variables and years : - -```sh -for VAR in ppt pet #PDSI ws vpd vap tmin tmax swe srad soil q ppt pet def aet -do - mkdir -p $GISDATA/climate/global/Terraclimate/per-year/$VAR - cd $GISDATA/climate/global/Terraclimate/per-year/$VAR - for YEAR in $(seq 2000 2021) - do - wget -c -nd https://climate.northwestknowledge.net/TERRACLIMATE-DATA/TerraClimate_${VAR}_${YEAR}.nc - done -done -``` - diff --git a/doc/climate/global/WorldClim.md b/doc/climate/global/WorldClim.md deleted file mode 100644 index e7ef968..0000000 --- a/doc/climate/global/WorldClim.md +++ /dev/null @@ -1,47 +0,0 @@ -# WorldClim-2.1 - -Interpolated monthly climate data for minimum, mean, and maximum temperature, precipitation, solar radiation, wind speed, water vapor pressure, and for total precipitation. There are also 19 bioclimatic variables. -urls: - -version 2.1 -https://worldclim.org/data/index.html - -version 1.4 -https://worldclim.org/data/v1.4/worldclim14.html - - -## Reference -> Fick, S.E. and R.J. Hijmans, 2017. WorldClim 2: new 1km spatial resolution climate surfaces for global land areas. International Journal of Climatology 37 (12): 4302-4315 [show] - -## Data access and download - -```bash -source proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate/global/WorldClim -cd $GISDATA/climate/global/WorldClim - -``` - -For the historical data, focusing on 30 arcsecond resolution: - -```bash -mkdir -p $GISDATA/climate/global/WorldClim/v2.1/Historical -cd $GISDATA/climate/global/WorldClim/v2.1/Historical -wget https://worldclim.org/data/worldclim21.html -grep href worldclim21.html | grep "_30s_" > links -wget --continue -b --input-file=links --force-html - -``` - -For the future climate projections (CMIP6) data, at 30 arcsecond: - -```bash -mkdir -p $GISDATA/climate/global/WorldClim/v2.1/CMIP6 -cd $GISDATA/climate/global/WorldClim/v2.1/CMIP6 - -wget https://worldclim.org/data/cmip6/cmip6_clim30s.html -grep href cmip6_clim30s.html | grep ".tif" > links -wget -b --continue --input-file=links --force-html - - -``` diff --git a/doc/climate/regional/ALA-spatial-layers.md b/doc/climate/regional/ALA-spatial-layers.md deleted file mode 100644 index 7fdacee..0000000 --- a/doc/climate/regional/ALA-spatial-layers.md +++ /dev/null @@ -1,13 +0,0 @@ - - -https://spatial.ala.org.au/ws/layers/index - -```sh - -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/climate/regional/ALA-spatial-layers/ -cd $GISDATA/climate/regional/ALA-spatial-layers/ - -wget https://spatial.ala.org.au/ws/layers - -``` diff --git a/doc/cryosphere/to-do/VIIRS-Snow-Cover-Products.md b/doc/cryosphere-to-do/VIIRS-Snow-Cover-Products.md similarity index 100% rename from doc/cryosphere/to-do/VIIRS-Snow-Cover-Products.md rename to doc/cryosphere-to-do/VIIRS-Snow-Cover-Products.md diff --git a/doc/cryosphere/global/Alpine-Biome.md b/doc/cryosphere/global/Alpine-Biome.md deleted file mode 100644 index c5a9b94..0000000 --- a/doc/cryosphere/global/Alpine-Biome.md +++ /dev/null @@ -1,21 +0,0 @@ -## *Alpine biomes* - -Maps created by Testolin et al 2020 by modelling the regional treeline elevation. Available at https://doi.org/10.6084/m9.figshare.11710002.v1 - - -> Testolin, R., Attorre, F. and Jiménez‐Alfaro, B. (2020), Global distribution and bioclimatic characterization of alpine biomes. Ecography, 43: 779-788. doi:10.1111/ecog.05012 - -> Testolin, Riccardo; Attorre, Fabio; Jiménez-Alfaro, Borja (2020): Global distribution and bioclimatic characterization of alpine biomes. figshare. Dataset. https://doi.org/10.6084/m9.figshare.11710002.v1 - - -## Data download and preparation - -```sh -DPATH=cryosphere/global -DNAME=Alpine-biomes - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -wget -b --continue https://ndownloader.figshare.com/articles/11710002/versions/1 --output-document=Global-alpine-biomes.zip -``` diff --git a/doc/cryosphere/global/GlaThiDa.md b/doc/cryosphere/global/GlaThiDa.md deleted file mode 100644 index bb18304..0000000 --- a/doc/cryosphere/global/GlaThiDa.md +++ /dev/null @@ -1,32 +0,0 @@ -# Glacier Thickness Database (GlaThiDa) 3.1.0 - -https://www.gtn-g.ch/glathida/ - -> Internationally collected, standardized dataset on glacier thickness from in-situ and remotely sensed observations, based on data submissions, literature review and airborne data from NASA’s Operation IceBridge. - -> Bug reports, data submissions, and other issues should be posted to the issue tracker at https://gitlab.com/wgms/glathida/-/issues. - -## Citation - -> GlaThiDa Consortium (2020): Glacier Thickness Database 3.1.0. World Glacier Monitoring Service, Zurich, Switzerland. DOI: 10.5904/wgms-glathida-2020-10 - -## Related publications: -> Welty, E., Zemp, M., Navarro, F., Huss, M., Fürst, J.J., Gärtner-Roer, I., Landmann, J., Machguth, H., Naegeli, K., Andreassen, L.M., Farinotti, D., Li, H., and GlaThiDa Contributors (2020): Worldwide version-controlled database of glacier thickness observations. Earth System Science Data, DOI: 10.5194/essd-2020-87 -> Gärtner-Roer, I., Naegeli, K., Huss, M., Knecht, T., Machguth, H., Zemp, M. (2014): A database of worldwide glacier thickness observations. Global and Planetary Change. DOI: 10.1016/j.gloplacha.2014.09.003 - -## Metadata -**Scientific data identifier for version 2020**: DOI 10.5904/wgms-glathida-2020-10 -**Title**: Glacier Thickness Database (GlaThiDa) 3.1.0 -**Publisher**: World Glacier Monitoring Service (WGMS) -**Release date**: 2020-10-06 -**Rights**: All data submitted to GTN-G are considered public domain for non-commercial use and are made digitally available through the operational services at no cost. The date are open access for scientific and educational purposes under the requirement of correct citation (see above), which corresponds to a CC BY 4.0 license by Creative Commons. - -## Data access - -````sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/cryosphere/global/GlaThiDa -cd $GISDATA/cryosphere/global/GlaThiDa -wget --continue http://www.gtn-g.ch/database/glathida-3.1.0.zip - -``` diff --git a/doc/cryosphere/global/Global-land-ice-measurements.md b/doc/cryosphere/global/Global-land-ice-measurements.md deleted file mode 100644 index d6d6e12..0000000 --- a/doc/cryosphere/global/Global-land-ice-measurements.md +++ /dev/null @@ -1,152 +0,0 @@ -# GLIMS Glacier database -Global Land Ice Measurements from Space initiative (GLIMS) - -[Webpage](http://glims.colorado.edu/glacierdata/) - -#### Citation - -> GLIMS and NSIDC (2005, updated 2018): Global Land Ice Measurements -from Space glacier database. Compiled and made available by the -international GLIMS community and the National Snow and Ice Data Center, -Boulder CO, U.S.A. DOI:10.7265/N5V98602 - -> Raup, B.H.; A. Racoviteanu; S.J.S. Khalsa; C. Helm; R. Armstrong; Y. - Arnaud (2007). "The GLIMS Geospatial Glacier Database: a New Tool for - Studying Glacier Change". Global and Planetary Change 56:101--110. - (doi:10.1016/j.gloplacha.2006.07.018) - -#### Data access - -http://www.glims.org/download/ - -#### Data download and preparation - -```sh -DPATH=cryosphere/global -DNAME=GLIMS_2019 - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -wget --continue http://www.glims.org/download/glims_db_20191217.zip -``` - - -We import this dataset in postgis for further data preparation and selection - -```sh -mkdir -p $WORKDIR/GLIMS -cd $WORKDIR/GLIMS -unzip $GISDATA/$DPATH/$DNAME/glims_db_20191217.zip - cd $WORKDIR/GLIMS/glims_download* - -psql gisdata jferrer -c "CREATE SCHEMA glims" -for SHPFILE in images lines polygons points -do - ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=glims -nlt PROMOTE_TO_MULTI glims_$SHPFILE.shp glims_$SHPFILE -nln $SHPFILE - done -cd $WORKDIR -rm -r $WORKDIR/GLIMS - -``` - -Or we can filter them using ogr2ogr -Then we create a table with the most recent glacier outlines filtering by record status ("okay") and glacier status ("exists") : - -```sh -cd glims_download* - -module add python/3.8.3 perl/5.28.0 geos/3.8.1 gdal/3.2.1 - -ogr2ogr -f "GPKG" -sql "SELECT glac_id, glac_name, anlys_time FROM glims_polygons WHERE rec_status = 'okay' AND glac_stat = 'exists' AND line_type = 'glac_bound'" valid_glaciers.gpkg glims_polygons.shp -nlt PROMOTE_TO_MULTI -nln valid_glaciers -makevalid - -``` - -This way we can summarize information according to documented variables, for example, just `psql gisdata` and: - -```sql - select line_type,count(*) from glims.polygons group by line_type; -select count(distinct glac_id),count(*) from glims.polygons; - -select glac_stat,rec_status, count(distinct glac_id) from glims.polygons group by glac_stat,rec_status; - - -``` - -We now extract some features to a new table (in `psql gisdata`). This will create a list with the most recent glacier outlines - -```sql - --- order by anlys_time --- filter by rec_status = "okay" & glac_stat = "exists" -CREATE table glims.valid_glaciers AS( -WITH summary AS ( - SELECT p.glac_id, - p.glac_name, - p.wkb_geometry, - ROW_NUMBER() OVER(PARTITION BY p.glac_id - ORDER BY p.anlys_time DESC) AS rk - FROM glims.polygons p - WHERE rec_status = 'okay' AND glac_stat = 'exists' AND line_type = 'glac_bound' - ) -SELECT s.* - FROM summary s -WHERE s.rk = 1); --- 319732 records -``` - -This will create a list of points with the centroid of the features labeled as "internal rock" - -```sql - -CREATE table glims.valid_nunataks AS( - SELECT p.glac_id, - p.glac_name, - st_centroid(p.wkb_geometry) AS wkb_geometry - FROM glims.polygons p - WHERE rec_status = 'okay' AND glac_stat = 'exists' AND line_type = 'intrnl_rock' - ); --- 447 records -``` - - -In R we can retrieve the data for any area of interest using following script (`R --vanilla`): - -```{r} -require(sf) -require(dplyr) - -glims <- read_sf("dist-records/glims_download_56134/glims_points.shp") -glims_pols <- read_sf("dist-records/glims_download_56134/glims_polygons.shp") - -glims_pols %>% st_drop_geometry() %>% group_by(rec_status,glac_stat,line_type) %>% summarise(n=n(),n_ids=n_distinct(glac_id)) - -glims_pols %>% st_drop_geometry() %>% group_by(glac_id) %>% summarise(n=n()) %>% arrange(desc(n)) - -slc <- glims_pols %>% filter(glac_id=='G302228E64270S') - -require("RPostgreSQL") - -work.dir <- Sys.getenv("WORKDIR") -setwd(work.dir) - -drv <- dbDriver("PostgreSQL") ## remember to update .pgpass file -con <- dbConnect(drv, dbname = "gisdata", - host = ifelse( system("hostname -s",intern=T)=="terra","localhost","terra.ad.unsw.edu.au"), - port = 5432, - user = "jferrer") - -# Area of interest POLYGON((-80 -10,-69 -10,-69 12,-80 12,-80 -10) -T6.2.ss <- st_read(con, query="SELECT * FROM glims.valid_nunataks WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-80 -10,-69 -10,-69 12,-80 12,-80 -10))') ") - -T6.1.ss <- st_read(con, query="SELECT * FROM glims.valid_glaciers WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-80 -10,-69 -10,-69 12,-80 12,-80 -10))')") - -# all centroids in 'lower' latitudes -T6.2 <- st_read(con, query="SELECT glac_id,wkb_geometry FROM glims.valid_nunataks WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-180 -60,-180 60,180 60,180 -60,-180 -60))')") - -T6.1 <- st_read(con, query="SELECT glac_id,ST_Centroid(wkb_geometry) as cents FROM glims.valid_glaciers WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-180 -60,-180 60,180 60,180 -60,-180 -60))')") - -dbDisconnect(con) -save(file='Glaciers-Northern-South-America.rda',T6.1,T6.2,T6.1.ss,T6.2.ss) - -``` diff --git a/doc/cryosphere/global/Global-river-ice-dataset.md b/doc/cryosphere/global/Global-river-ice-dataset.md deleted file mode 100644 index b6e856b..0000000 --- a/doc/cryosphere/global/Global-river-ice-dataset.md +++ /dev/null @@ -1,38 +0,0 @@ -# Global river ice - - -#### Citation - -> Yang, X., Pavelsky, T.M. & Allen, G.H. *The past and future of global river ice*. **Nature** 577, 69–73 (2020). https://doi.org/10.1038/s41586-019-1848-1 - -#### Data access - -The following data and code are available -* The [global river ice dataset](https://doi.org/10.5281/zenodo.3372709) -* *in situ* [river ice records](https://doi.org/10.5281/zenodo.3372754). -* [Google Eath Engine code](https://github.com/seanyx/global-river-ice-dataset-from-Landsat). - -#### Data download and preparation - -```sh -mkdir -p $GISDATA/cryosphere/global/Global-River-Ice -cd $GISDATA/cryosphere/global/Global-River-Ice -wget --continue 'https://zenodo.org/record/3372754/files/landsat_river_ice_validation.csv?download=1' --output-document=landsat_river_ice_validation.csv -wget --continue 'https://zenodo.org/record/3372709/files/global_river_ice_dataset.csv?download=1' --output-document=global_river_ice_dataset.csv - -``` - -Since these are based on landsat products, we will need the WRS-2 shapefiles which can be found on the USGS Landsat website. This is the descending orbit (daytime) data for Landsat 4-8, but ascending data and data for Landsat 1-3 are also available: https://www.usgs.gov/land-resources/nli/landsat/landsat-path-row-shapefiles-and-kml-files - -```sh -wget --continue https://prd-wret.s3-us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/WRS2_descending_0.zip -unzip -u WRS2_descending_0.zip - -wget --continue https://prd-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/atoms/files/WRS2_ascending_0.zip -unzip -u WRS2_ascending_0.zip - - -``` - -#### Notes -* diff --git a/doc/cryosphere/global/Lake-ice-phenology.md b/doc/cryosphere/global/Lake-ice-phenology.md deleted file mode 100644 index 83353ab..0000000 --- a/doc/cryosphere/global/Lake-ice-phenology.md +++ /dev/null @@ -1,43 +0,0 @@ -# Global Lake and River Ice Phenology Database - -The data set was prepared by the North Temperate Lakes Long-Term Ecological Research program at the Center for Limnology at the University of Wisconsin-Madison from data submitted by participants in the Lake Ice Analysis Group ([LIAG](https://lter.limnology.wisc.edu/project/lake-ice-international-collaborations)). - -#### Citation - -> Benson, B., J. Magnuson, and S. Sharma. 2000, updated 2013. Global Lake and River Ice Phenology Database, Version 1. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5W66HP8. [Date Accessed]. - -#### Data access - -There are at least two alternative pages for data access -* http://nsidc.org/data/lake_river_ice/freezethaw.html -* https://nsidc.org/data/g01377 - -#### Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -DPATH=cryosphere/global -DNAME=LIAG_Ice - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - - -## download complete table: -wget ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01377/liag_freeze_thaw_table.csv -wget ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01377/liag_physical_character_table.csv - -## or, if downloaded using the form at -## http://nsidc.org/data/lake_river_ice/freezethaw.html -## mv ~/Downloads/liag_ice.csv.gz . -## mv ~/Downloads/liag_info.csv.gz . -## cd $WORKDIR -## cp $GISDATA/monitoring/LIAG_Ice/liag_ice.csv.gz . -## gunzip liag_ice.csv.gz -``` - -#### Notes -* Only data contributed by members of LIAG, thus no data from southern hemisphere, Alaska, etc. -* Apparently last updated in 2013 diff --git a/doc/cryosphere/global/Modis-Snow-Cover-Products.md b/doc/cryosphere/global/Modis-Snow-Cover-Products.md deleted file mode 100644 index 0a50fbf..0000000 --- a/doc/cryosphere/global/Modis-Snow-Cover-Products.md +++ /dev/null @@ -1,164 +0,0 @@ -# MODIS/Terra Snow Cover 8-Day L3 Global 0.05Deg CMG, Version 6 - -https://nsidc.org/data/mod10c2/versions/6 -Data Set ID: MOD10C2 - -> This data set is generated from Normalized Difference Snow Index (NDSI) snow cover. Snow covered land typically has a very high reflectance in visible bands and very low reflectance in the shortwave infrared; the NDSI reveals the magnitude of this difference. MOD10A2 eight-day maximum snow extent observations at 500 m resolution are mapped into 0.05 degrees (approx. 5 km) CMG cells, binned by observation type (e.g. snow, snow-free land, cloud, etc.), and tallied. Snow and cloud cover percentages are generated by computing the ratio of snow or cloud observation counts to the total number of land observations mapped into the CMG cell. - - -## Citation -> Hall, D. K. and G. A. Riggs. 2016. MODIS/Terra Snow Cover 8-Day L3 Global 0.05Deg CMG, Version 6. [Indicate subset used]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. doi: https://doi.org/10.5067/MODIS/MOD10C2.006. [Date Accessed]. - - -Download script (python) available, add login details for earthdata in ~/.netrc as follow: -machine urs.earthdata.nasa.gov login ***** password ***** - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/cryosphere/global/Modis-MOD10C2/ -cd $GISDATA/cryosphere/global/Modis-MOD10C2/ -## scp nsidc-download_MOD10C2.006_2021-03-29.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/Modis-MOD10C2/ - -python nsidc-download_MOD10C2.006_2021-03-29.py -``` - -This downloads 1932 files - -# MODIS/Terra Snow Cover 8-Day L3 Global 500m SIN Grid, Version 6 -https://nsidc.org/data/mod10a2/versions/6 -Data Set ID: MOD10A2 - -We repeat the same procedure, this will download 590880 files! -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/cryosphere/global/Modis-MOD10A2/ -cd $GISDATA/cryosphere/global/Modis-MOD10A2/ -## scp nsidc-download_MOD10A2.006_2021-03-30.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/Modis-MOD10A2/ - -## manual edit to add bounding box, start and end dates, filename match, etc... -less nsidc-download_MOD10A2.006_2021-03-30.py - -for YEAR in $(seq 2010 2020) -do - cd $GISDATA/cryosphere/global/Modis-MOD10A2/$YEAR - for k in $(ls | cut -d. -f2 | uniq | grep ^A) - do - echo $k - mkdir -p $k - mv *${k}*.hdf $k - mv *${k}*.xml $k - done -done - -``` - - -Maximum_Snow_Extent: -> The maximum snow extent during the eight-day period plus other values. Cells with snow on any day during the period are mapped as snow. Clouds are only reported if all eight days were obscured by clouds. Cells with no snow are filled with the observation that occurred most often. Possible values are: 0: missing data 1: no decision 11: night 25: no snow 37: lake 39: ocean 50: cloud 100: lake ice 200: snow 254: detector saturated 255: fill - -Eight_Day_Snow_Cover: -> Snow chronology bit flags. Each day has its own bit that is set to: on (1), if snow was observed on that day; or off (0), for no snow, cloud, or missing data. Days/bits are ordered across the byte from right to left: bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 day 8 day 7 day 6 day 5 day 4 day 3 day 2 day 1 To retrieve the bit flags, convert the integer stored in the SDS into its binary representation. For example, if a cell contains the value 229, expressing that number in binary yields: 11100101. Read from right to left, the flags indicate that snow was observed in the cell on days 1, 3, 6, 7, and 8 of the compositing period, while no snow was observed on days 2, 4, and 5. - - -Bounding box example -137,-5,138,-4 - -Bounding box tropical glaciers --100,-25,138,20 - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -cd $WORKDIR -qsub -l select=1:ncpus=2:mem=16gb,walltime=12:00:00 -J 2019-2021 $SCRIPTDIR/inc/pbs/download-cryosphere-modis-products.pbs -qsub -l select=1:ncpus=2:mem=16gb,walltime=12:00:00 -J 2000-2018 $SCRIPTDIR/inc/pbs/download-cryosphere-modis-products.pbs - -``` - -## Virtual raster datasets - -```sh -ssh $zID@katana.restech.unsw.edu.au -qsub -I -l select=1:ncpus=1:mem=120gb,walltime=12:00:00 - -module add python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -cd $GISDATA/cryosphere/global/Modis-MOD10A2/ -export VAR=MOD10A2 -export VRS=006 - -# gdalinfo 2019.01.01/MOD11A2.A2019001.h01v08.006.2019010204437.hdf - -# gdalinfo HDF4_EOS:EOS_GRID:"2019.01.01/MCD12Q1.A2019001.h01v08.006.2020212125329.hdf":MODIS_Grid_8Day_1km_LST:LST_Day_1km - -for YEAR in $(seq 2000 2010) -do - mkdir -p $GISDATA/cryosphere/global/Modis-${VAR}/index/${YEAR} - cd $GISDATA/cryosphere/global/Modis-${VAR}/index/${YEAR} - for FECHA in $(grep ^A$YEAR $GISDATA/cryosphere/global/Modis-${VAR}/links) - do - echo $FECHA - [ -e index_${VAR}_${VRS}_${FECHA}_Maximum_Snow_Extent.vrt ] && echo "listo" || gdalbuildvrt index_${VAR}_${VRS}_${FECHA}_Maximum_Snow_Extent.vrt -sd 1 $GISDATA/cryosphere/global/Modis-${VAR}/$FECHA/*hdf - [ -e index_${VAR}_${VRS}_${FECHA}_Eight_Day_Snow_Cover.vrt ] && echo "listo" || gdalbuildvrt index_${VAR}_${VRS}_${FECHA}_Eight_Day_Snow_Cover.vrt -sd 2 $GISDATA/cryosphere/global/Modis-${VAR}/$FECHA/*hdf - - done - -done - -export VAR=MOD11A2 -export VRS=006 - -cd $GISDATA/land-surface-temperature/global/Modis-${VAR}.${VRS}/index/ - - -``` - - -## example for Myanmar -```sh -mkdir -p ~/tmp/alpine/Myanmar -cd ~/tmp/alpine/Myanmar - -for k in $(ls /opt/gisdata/sensores/Modis/MOD10C2/*hdf) -do - for BAND in Eight_Day_CMG_Snow_Cover Snow_Spatial_QA Eight_Day_CMG_Clear_Index - do - export j=$(basename $k | sed -e s/.hdf/.tif/ -e s/MOD10C2/${BAND}/) - - gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te 92 25 99 29 -t_srs EPSG:4326 HDF4_EOS:EOS_GRID:"${k}":MOD_CMG_Snow_5km:${BAND} ${j} - done -done - -gdalinfo $k -export BAND=Eight_Day_CMG_Snow_Cover -export WEEK=A2000049 - -gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -t_srs EPSG:4326 HDF4_EOS:EOS_GRID:"MOD10C2.${WEEK}.006.2016064132927.hdf":MOD_CMG_Snow_5km:${BAND} MOD10C2-${WEEK}-${BAND}.tif - -cd $WORKDIR -grass -c $GISDATA/sensores/Modis/MOD10C2/MOD10C2-${WEEK}-${BAND}.tif $GISDB/MODIS_snow -r.in.gdal input=$GISDATA/sensores/Modis/MOD10C2/MOD10C2-${WEEK}-${BAND}.tif output=MOD10C2_${WEEK}_${BAND} - -``` - -In google earth engine -https://developers.google.com/earth-engine/datasets/catalog/MODIS_006_MOD10A1 - -Hall, D. K., V. V. Salomonson, and G. A. Riggs. 2016. MODIS/Terra Snow Cover Daily L3 Global 500m Grid. Version 6. Boulder, Colorado USA: NASA National Snow and Ice Data Center Distributed Active Archive Center. -https://doi.org/10.5067/MODIS/MOD10A1.006 - -Global EASE-Grid 8-day Blended SSM/I and MODIS Snow Cover, Version 1 -https://cmr.earthdata.nasa.gov/search/concepts/C1386250333-NSIDCV0.html - -Read https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0321_blended_ssmi_modis/readme.txt -%ftp sidads.colorado.edu - (login as anonymous, and use your e-mail address as password) -ftp>cd /pub/DATASETS/nsidc0321_blended_ssmi_modis/ -ftp>get north.tar diff --git a/doc/cryosphere/global/Modis-sea-ice-products.md b/doc/cryosphere/global/Modis-sea-ice-products.md deleted file mode 100644 index 071dd83..0000000 --- a/doc/cryosphere/global/Modis-sea-ice-products.md +++ /dev/null @@ -1,44 +0,0 @@ -# Modis Sea Ice extent and temperature - -There are multiple Modis products. An overview is available [here](https://nsidc.org/data/modis/data_summaries). - -## MODIS/Terra Sea Ice Extent Daily L3 Global 1km EASE-Grid Day, Version 6 - -Product ID **MOD29P1D**: daily 1 km resolution sea ice extent, ice surface temperature, and quality assessment data gridded to the Equal Area Scalable Earth Grid (EASE-Grid). - - -#### Citation -> Hall, D. K. and G. A. Riggs. 2015. MODIS/Terra Sea Ice Extent Daily L3 Global 1km EASE-Grid Day, Version 6. [Indicate subset used]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. doi: https://doi.org/10.5067/MODIS/MOD29P1D.006. [Date Accessed] - -#### Data access - -Data is available at https://nsidc.org/data/MOD29P1D/versions/6 - -Use Earth-data login details. - -There is an option for a using a download script in python. - -#### Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -DPATH=cryosphere/global -DNAME=Modis-MOD10C2 - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -mv ~/Downloads/nsidc-download_MOD29P1D.006_2020-02-22.py $GISDATA/sensores/Modis_SeaIce - -``` - -```sh - -mkdir -p $GISDATA/cryosphere/global/Modis-MOD10C2/ -cd $GISDATA/cryosphere/global/Modis-MOD10C2/ -## scp nsidc-download_MOD10C2.006_2021-03-29.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/Modis-MOD10C2/ - -python nsidc-download_MOD10C2.006_2021-03-29.py -``` diff --git a/doc/cryosphere/global/PyGEM-OGGM-Glacier-projections.md b/doc/cryosphere/global/PyGEM-OGGM-Glacier-projections.md deleted file mode 100644 index 3a3e8db..0000000 --- a/doc/cryosphere/global/PyGEM-OGGM-Glacier-projections.md +++ /dev/null @@ -1,51 +0,0 @@ -# Global PyGEM-OGGM Glacier Projections with RCP and SSP Scenarios, Version 1 (HMA2_GGP) - -https://nsidc.org/data/hma2_ggp/versions/1 - -> This data set comprises results from a hybrid glacier evolution model that uses the mass balance module of the Python Glacier Evolution Model (PyGEM) and the glacier dynamics module of the Open Global Glacier Model (OGGM). Output parameters include projections of glacier mass change, fixed runoff, and various mass balance components at regionally aggregated and glacier scales. - - - -## Citation - -> Rounce, D., R. Hock, and F. Maussion. (2022). Global PyGEM-OGGM Glacier Projections with RCP and SSP Scenarios, Version 1 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/P8BN9VO9N5C7. Date Accessed 03-19-2023. - -@article{ -doi:10.1126/science.abo1324, -author = {David R. Rounce and Regine Hock and Fabien Maussion and Romain Hugonnet and William Kochtitzky and Matthias Huss and Etienne Berthier and Douglas Brinkerhoff and Loris Compagno and Luke Copland and Daniel Farinotti and Brian Menounos and Robert W. McNabb }, -title = {Global glacier change in the 21st century: Every increase in temperature matters}, -journal = {Science}, -volume = {379}, -number = {6627}, -pages = {78-83}, -year = {2023}, -doi = {10.1126/science.abo1324}, -URL = {https://www.science.org/doi/abs/10.1126/science.abo1324}, -eprint = {https://www.science.org/doi/pdf/10.1126/science.abo1324}, -abstract = {Glacier mass loss affects sea level rise, water resources, and natural hazards. We present global glacier projections, excluding the ice sheets, for shared socioeconomic pathways calibrated with data for each glacier. Glaciers are projected to lose 26 ± 6\% (+1.5°C) to 41 ± 11\% (+4°C) of their mass by 2100, relative to 2015, for global temperature change scenarios. This corresponds to 90 ± 26 to 154 ± 44 millimeters sea level equivalent and will cause 49 ± 9 to 83 ± 7\% of glaciers to disappear. Mass loss is linearly related to temperature increase and thus reductions in temperature increase reduce mass loss. Based on climate pledges from the Conference of the Parties (COP26), global mean temperature is projected to increase by +2.7°C, which would lead to a sea level contribution of 115 ± 40 millimeters and cause widespread deglaciation in most mid-latitude regions by 2100. Mountain glaciers, perennial ice masses excluding the Greenland and Antarctic ice sheets, are a critical water resource for nearly two billion people and are threatened by global warming. Rounce et al. projected how those glaciers will be affected under global temperature increases of 1.5° to 4°C, finding losses of one quarter to nearly one half of their mass by 2100 (see the Perspective by Aðalgeirsdóttir and James). Their calculations suggest that glaciers will lose substantially more mass and contribute more to sea level rise than current estimates indicate. —HJS Glaciers are melting more rapidly than expected due to global warming.}} - -## User Guide - -https://nsidc.org/sites/default/files/documents/user-guide/hma2_ggp-v001-userguide_0.pdf - -## Data access - -Instructions for Programmatic Data Access are here: https://nsidc.org/data/user-resources/help-center/programmatic-data-access-guide - -````sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/cryosphere/global/PyGEM-OGGM -cd $GISDATA/cryosphere/global/PyGEM-OGGM - - -for VAR in mass_annual_mad_50sets_2000_2100 mass_annual_50sets_2000_2100 -do - for SCN in ssp119 ssp126 ssp245 ssp370 ssp585 - do - wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --keep-session-cookies --no-check-certificate --auth-no-challenge=on -r --reject "index.html*" -np -e robots=off -nd --continue https://n5eil01u.ecs.nsidc.org/HMA/HMA2_GGP.001/2000.01.01/R16_glac_${VAR}-${SCN}.nc - done -done - -gdalwarp NETCDF:$GISDATA/climate/global/CHIRPS/chirps-v2.0.monthly.nc:precip -t_srs EPSG:4326 -te -74 0 -58 13 -of 'GTiff' Test1.tif - -``` diff --git a/doc/cryosphere/global/Randolph-Glacier-Inventory.md b/doc/cryosphere/global/Randolph-Glacier-Inventory.md deleted file mode 100644 index dd73f5b..0000000 --- a/doc/cryosphere/global/Randolph-Glacier-Inventory.md +++ /dev/null @@ -1,117 +0,0 @@ -# Randolph Glacier Inventory, version 6.0 - - -> The Randolph Glacier Inventory (RGI 6.0) is a global inventory of glacier outlines. It is supplemental to the Global Land Ice Measurements from Space initiative (GLIMS). Production of the RGI was motivated by the Fifth Assessment Report of the Intergovernmental Panel on Climate Change (IPCC AR5). Future updates will be made to the RGI and the GLIMS Glacier Database in parallel during a transition period. As all these data are incorporated into the GLIMS Glacier Database and as download tools are developed to obtain GLIMS data in the RGI data format, the RGI will evolve into a downloadable subset of GLIMS, offering complete one-time coverage, version control, and a standard set of attributes. - -> For more details, and for a complete list of contributors, please see the RGI 6.0 Technical Report (PDF format). For the glacier regions used see the GTN-G Glacier Regions. - -> Global inventory of glacier outlines. It is supplemental to the Global Land Ice Measurements from Space initiative (GLIMS). RGI Version 6.0: released July 28, 2017. - -[Website](https://www.glims.org/RGI/) / -[user guidelines](http://www.glims.org/RGI/00_rgi60_TechnicalNote.pdf) - -## Citation ->RGI Consortium (2017). Randolph Glacier Inventory – A Dataset of Global Glacier Outlines: Version 6.0: Technical Report, Global Land Ice Measurements from Space, Colorado, USA. Digital Media. DOI: https://doi.org/10.7265/N5-RGI-60 - -## Data access - -To download data from the [Randolph Glacier Inventory 6.0](https://www.glims.org/RGI/), check the [user guidelines](http://www.glims.org/RGI/00_rgi60_TechnicalNote.pdf) - -http://www.glims.org/RGI/rgi60_dl.html - -## Data download and preparation - -RGI Version 6.0: released July 28, 2017. - -```sh -DPATH=cryosphere/global -DNAME=RGI_6.0 - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -wget --continue https://www.glims.org/RGI/rgi60_files/00_rgi60.zip -##Additionally download the geotiff -wget --continue http://www.glims.org/RGI/rgi60_files/00_rgi60_30-30grid.tif - -``` - -```sh -cd $WORKDIR -cp $GISDATA/$DPATH/$DNAME/00_rgi60.zip $WORKDIR - unzip 00_rgi60.zip - unzip 00_rgi60_attribs.zip - unzip 16_rgi60_LowLatitudes.zip - -grep RGI60-16.013[8-9] 16_rgi60_LowLatitudes.csv -``` - - -We import this dataset in postgis for further data preparation and selection - -```sh -mkdir -p $WORKDIR/RGI60 -cd $WORKDIR/RGI60 -for ZIPFILE in $(ls *zip) -do - unzip -u $ZIPFILE -done - -psql gisdata jferrer -c "CREATE SCHEMA rgi60" -for SHPFILE in 00_rgi60_O1Regions 00_rgi60_O2Regions -do - ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=rgi60 -nlt PROMOTE_TO_MULTI $SHPFILE.shp $SHPFILE - done - -## one by one to test for errors: - ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=rgi60 -nlt PROMOTE_TO_MULTI 01_rgi60_Alaska.shp 01_rgi60_Alaska -nln rgi60_total - psql gisdata jferrer -c "ALTER TABLE rgi60.rgi60_total DROP column ogc_fid" - -## some files have old encodings - file 19_rgi60_AntarcticSubantarctic.dbf - dbfdump 19_rgi60_AntarcticSubantarctic.dbf > test - file test - iconv -f ISO-8859-1 -t utf-8 test > test.utf8.txt - -## easily fixed with: - echo "ISO-8859-1" > 19_rgi60_AntarcticSubantarctic.cpg - echo "ISO-8859-1" > 07_rgi60_Svalbard.cpg - echo "ISO-8859-1" > 08_rgi60_Scandinavia.cpg - - - ## now we can proceed with all files -for SHPFILE in 02_rgi60_WesternCanadaUS.shp 03_rgi60_ArcticCanadaNorth.shp 04_rgi60_ArcticCanadaSouth.shp 05_rgi60_GreenlandPeriphery.shp 06_rgi60_Iceland.shp 09_rgi60_RussianArctic.shp 10_rgi60_NorthAsia.shp 11_rgi60_CentralEurope.shp 12_rgi60_CaucasusMiddleEast.shp 13_rgi60_CentralAsia.shp 14_rgi60_SouthAsiaWest.shp 15_rgi60_SouthAsiaEast.shp 16_rgi60_LowLatitudes.shp 17_rgi60_SouthernAndes.shp 18_rgi60_NewZealand.shp 07_rgi60_Svalbard.shp 08_rgi60_Scandinavia.shp 19_rgi60_AntarcticSubantarctic.shp -do - echo $SHPFILE - ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=rgi60 -lco OVERWRITE=yes -nlt PROMOTE_TO_MULTI $SHPFILE -nln rgi60_tmp - psql gisdata jferrer -c "ALTER TABLE rgi60.rgi60_tmp DROP column ogc_fid" - psql gisdata jferrer -c "INSERT INTO rgi60.rgi60_total SELECT * FROM rgi60.rgi60_tmp" - echo " |--> Listo\n" -done -psql gisdata jferrer -c "DROP TABLE rgi60.rgi60_tmp" - psql gisdata jferrer -c "ALTER TABLE rgi60.rgi60_total ADD CONSTRAINT rgi_idx PRIMARY KEY (rgiid)" -rm * -``` - -This way we can summarize information according to documented variables, for example, just `psql gisdata` and: - -```sql -SELECT o1region,o2region,count(*) as nr from rgi60.rgi60_total group by o1region,o2region order by o1region,o2region; -SELECT o1region,count(*) as nr from rgi60.rgi60_total group by o1region order by o1region; -select count(distinct rgiid),count(distinct glimsid),count(*) from rgi60.rgi60_total; - -``` - -Explore the RGI 6.0 database: - -```sql - -select ogc_fid,rgi_code,wgms_code,full_name from rgi60."00_rgi60_o2regions" where rgi_code like '16%'; -select rgiid,glimsid,bgndate,enddate,o2region,area,status,linkages,name from rgi60.rgi60_total - where o1region like '16%'; - - select o1region,o2region,count(distinct rgiid),sum(area) from rgi60.rgi60_total - where o1region like '16%' - group by o1region,o2region; - -``` diff --git a/doc/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md b/doc/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md deleted file mode 100644 index dde7e0a..0000000 --- a/doc/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md +++ /dev/null @@ -1,114 +0,0 @@ -# Sea Ice Trends and Climatologies from SMMR and SSM/I-SSMIS, Version 3 - -[Webpage](https://nsidc.org/data/NSIDC-0192/versions/3) - -Ice cover or sea ice concentration is measured as the percentage of the ocean surface covered by ice. Ice persistence is the percentage of months over the data set time period that ice existed at a location (sea ice concentration > 15 %). - -Along with one historical data file from the Electrically Scanning Microwave Radiometer (ESMR), these data are derived from the Scanning Multichannel Microwave Radiometer (SMMR), the Special Sensor Microwave/Imager (SSM/I), and the Special Sensor Microwave Imager/Sounder (SSMIS). - -#### Citation -> Stroeve, J. and W. N. Meier. 2018. *Sea Ice Trends and Climatologies from SMMR and SSM/I-SSMIS, Version 3*. [Indicate subset used]. Boulder, Colorado USA. **NASA National Snow and Ice Data Center Distributed Active Archive Center**. doi: [10.5067/IJ0T7HFHB9Y6](https://doi.org/10.5067/IJ0T7HFHB9Y6). [Date Accessed]. - -#### Data access - -Data is available at https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0192_seaice_trends_climo_v3/ -Use Earth-data login details - - -#### Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/cryosphere/global/SMMR_SeaIceTrends -cd $GISDATA/cryosphere/global/SMMR_SeaIceTrends - - - -## Update ~/.netrc with login and password and use --auth-no-challenge=on - -for HEMISPHERE in n s -do - for MONTH in jan feb mar apr may jun jul aug sep oct nov dec - do - ## Another option, update ~/.netrc with login and password - wget --auth-no-challenge=on --continue https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0192_seaice_trends_climo_v3/monthly-climatology/mean.${MONTH}.1979-2019.${HEMISPHERE} - wget --auth-no-challenge=on --continue https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0192_seaice_trends_climo_v3/ice-persistence/persistence.${MONTH}.1979-2019.${HEMISPHERE} - done -done - - -``` - -See [this advice](https://nsidc.org/support/22256950-How-do-I-import-the-sea-ice-trends-data-into-ArcGIS-) on data format. - -For the northern hemisphere - - -```sh - -for VAR in persistence mean -do - for MONTH in jan feb mar apr may jun jul aug sep oct nov dec - do - mv $VAR.$MONTH.1979-2018.n $VAR.$MONTH.1979-2018.n.bil - echo "nrows 448 - ncols 304 - nbands 1 - nbits 8 - layout bil - byteorder I - ulxmap -3837500 - ulymap 5837500 - xdim 25000 - ydim 25000" > $VAR.$MONTH.1979-2018.n.hdr - ## EPSG:3411 - gdalwarp $VAR.$MONTH.1979-2018.n.bil -s_srs "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs" $VAR.$MONTH.1979-2018.n.tif - done -done -``` - -For the southern hemisphere - -```sh -for VAR in persistence mean -do - for MONTH in jan feb mar apr may jun jul aug sep oct nov dec - do - mv $VAR.$MONTH.1979-2018.s $VAR.$MONTH.1979-2018.s.bil - echo "nrows 332 - ncols 316 - nbands 1 - nbits 8 - layout bil - byteorder I - ulxmap -3937500 - ulymap 4337500 - xdim 25000 - ydim 25000" > $VAR.$MONTH.1979-2018.s.hdr - # EPSG:3412 - gdalwarp $VAR.$MONTH.1979-2018.s.bil -s_srs "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs" $VAR.$MONTH.1979-2018.s.tif - done -done - -``` - -Combining both - -```sh -for VAR in persistence mean -do - for MONTH in jan feb mar apr may jun jul aug sep oct nov dec - do - gdalwarp $VAR.$MONTH.1979-2018.n.tif $VAR.$MONTH.1979-2018.s.tif -t_srs "+proj=latlong +datum=WGS84" -te -180 -90 180 90 $VAR.$MONTH.1979-2018.tif - done -done - -``` - -#### Notes -* Pole hole: area not measured due to orbit inclination. For calculations it is considered to have > 15 % ice concentration. For total ice-covered area, the pixels under the pole hole are not used. In the Southern Hemisphere this does not affect sea ice data set. -* For SMMR, the hole is 611 km in radius and is located poleward of 84.5 degrees North. For SSM/I and SSMIS, the hole is 311 km in radius and is located poleward of 87.2 degrees North. This means there is a discontinuity in the Northern Hemisphere ice-covered area time series across the instrument transitions. -* The temporal coverage for this data set is 26 October 1978 to 31 December 2018. -* Spatial resolution is 25 km x 25 km diff --git a/doc/cryosphere/global/Sea-ice-index.md b/doc/cryosphere/global/Sea-ice-index.md deleted file mode 100644 index f636b68..0000000 --- a/doc/cryosphere/global/Sea-ice-index.md +++ /dev/null @@ -1,28 +0,0 @@ -# Sea Ice Index, Version 3 - -[Webpage](https://nsidc.org/data/G02135/versions/3) - - -#### Citation -> Fetterer, F., K. Knowles, W. N. Meier, M. Savoie, and A. K. Windnagel. 2017, updated daily. Sea Ice Index, Version 3. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5K072F8. [Date Accessed]. - -#### Data access - -Data is available at ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/ -Use Earth-data login details - - -#### Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/cryosphere/global/SeaIceIndex -cd $GISDATA/cryosphere/global/SeaIceIndex - -wget -b --continue -np -nH --recursive --cut-dirs=3 ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/north/monthly/geotiff/ - -wget -b --continue -np -nH --recursive --cut-dirs=3 ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/south/monthly/geotiff/ - -``` diff --git a/doc/cryosphere/global/World-Glacier-Inventory.md b/doc/cryosphere/global/World-Glacier-Inventory.md deleted file mode 100644 index 7845f17..0000000 --- a/doc/cryosphere/global/World-Glacier-Inventory.md +++ /dev/null @@ -1,56 +0,0 @@ -# World Glacier Inventory, Version 1 - -The World Glacier Inventory ([WGI](https://nsidc.org/data/g01130)) represents a a snapshot of the glacier distribution in the second half of the 20th century. It contains information for over 130,000 glaciers, based primarily on aerial photographs and maps, most glaciers have a single data entry. It is based on the World Glacier Monitoring Service (WGMS 1989). - -#### Citation -> WGMS, and National Snow and Ice Data Center (comps.). 1999, updated 2012. World Glacier Inventory, Version 1. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5/NSIDC-WGI-2012-02. [Date Accessed]. - -#### Data access -Available at: ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01130/ - -#### Data download and preparation - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -DPATH=cryosphere/global -DNAME=WGI_2012 - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -wget --continue ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01130/wgi_shapefile_feb2012.zip - -``` - -We import this dataset in postgis for further data preparation and selection - -```sh -psql gisdata jferrer -c "CREATE SCHEMA wgi" - -ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=wgi -nlt PROMOTE_TO_MULTI $GISDATA/inventories/WGI_2012/wgi_shapefile_feb2012.shp WGI_2012 - -``` - -This way we can summarize information according to documented variables, for example: - -```sql -SELECT prim_class,count(*) as nr from wgi.wgi_shapefile_feb2012 group by prim_class; -``` - -En el que ''prim_class'' es una de las siguientes: - -| Code | Name | Description | -|---|---|---| -|0 | Miscellaneous | Any type not listed below. | -|1 | Continental Ice Sheet | Inundates areas of continental size. | -|2 | Ice Field | Ice masses of the sheet or blanket type with a thickness that is insufficient to obscure the subsurface topography. | -|3 | Ice Cap | Dome-shaped ice masses with radial flow. | -|4 | Outlet Glacier | Drains an ice sheet, ice field, or ice cap, usually of valley glacier form; the catchment area may not be easily defined. | -|5 | Valley Glacier | Flows down a valley; the catchment area is well defined. | -|6 | Mountain Glacier | Cirque, niche type, crater type, or hanging glacier; also includes ice aprons and groups of small units. | -|7 | Glacieret and Snowfield | Small ice masses of indefinite shape in hollows, river beds, or on protected slopes that have developed from snow drift, avalanches, and/or particularly heavy accumulation in certain years. Usually no marked flow pattern is visible; and it has been in existence for at least two consecutive years. | -|8 | Ice Shelf | Floating ice sheet of considerable thickness attached to a coast nourished by a glacier or glaciers; snow accumulation on its surface or bottom freezing. | -|9 | Rock Glacier | Lava-stream-like debris mass containing ice in several possible forms and moving slowly downslope. | diff --git a/doc/cryosphere/global/subglacial-lakes-inventory.md b/doc/cryosphere/global/subglacial-lakes-inventory.md deleted file mode 100644 index 884dca9..0000000 --- a/doc/cryosphere/global/subglacial-lakes-inventory.md +++ /dev/null @@ -1,46 +0,0 @@ -# Inventory of Subglacial lakes - -Point location of known subglacial lakes in both hemispheres. - -#### Citation - -This was assembled by D. Keith from following sources. - -> Wright, A., & Siegert, M. (2012). *A fourth inventory of Antarctic subglacial lakes*. **Antarctic Science**, 24(6), 659-664. doi:[10.1017/S095410201200048X](http://dx.doi.org/10.1017/S095410201200048X) - -> Siegert Martin J., Ross Neil and Le Brocq Anne M. Recent advances in understanding Antarctic subglacial lakes and hydrology374Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences https://doi.org/10.1098/rsta.2014.0306 - -> Palmer, S. J., Dowdeswell, J. A., Christoffersen, P., Young, D. A., Blankenship, D. D., Greenbaum, J. S., Benham, T., Bamber, J., and Siegert, M. J. ( 2013), Greenland subglacial lakes detected by radar, Geophys. Res. Lett., 40, 6154– 6159, doi:10.1002/2013GL058383. - -> Thór Marteinsson, V., Rúnarsson, Á., Stefánsson, A. et al. Microbial communities in the subglacial waters of the Vatnajökull ice cap, Iceland. ISME J 7, 427–437 (2013). https://doi.org/10.1038/ismej.2012.97 - -> Livingstone, S., Utting, D., Ruffell, A. et al. Discovery of relict subglacial lakes and their geometry and mechanism of drainage. Nat Commun 7, ncomms11767 (2016). https://doi.org/10.1038/ncomms11767 - -> Bowling, J.S., Livingstone, S.J., Sole, A.J. et al. Distribution and dynamics of Greenland subglacial lakes. Nat Commun 10, 2810 (2019). https://doi.org/10.1038/s41467-019-10821-w - -#### Data access - -A spreadsheet with the original data from the *A fourth inventory of Antarctic subglacial lakes* is available at: -* https://www.cambridge.org/core/journals/antarctic-science/article/fourth-inventory-of-antarctic-subglacial-lakes/81B35C31B0DFCE1B3A0705B779D3AF58#fndtn-supplementary-materials - -The zipfiles were provided directly by D. Keith (pers. comm.). - -#### Data download and preparation - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -DPATH=cryosphere/global -DNAME=subglacial-lakes - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -## scp /opt/gisdata/inventories/subglacial_lakes/* $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/subglacial-lakes - - -``` - -#### Notes diff --git a/doc/cryosphere/regional/CCAMLR.md b/doc/cryosphere/regional/CCAMLR.md deleted file mode 100644 index 0ec7626..0000000 --- a/doc/cryosphere/regional/CCAMLR.md +++ /dev/null @@ -1,15 +0,0 @@ -# CCAMLR Public Data Repository - - Commission for the Conservation of Antarctic Marine Living Resources (CCAMLR) -https://www.ccamlr.org/ - -## Public data Repository - -https://github.com/ccamlr/data - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/cryosphere/regional/CCAMLR -cd $GISDATA/cryosphere/regional/CCAMLR -git clone git@github.com:ccamlr/data.git -``` diff --git a/doc/cryosphere/regional/IPG-Chile.md b/doc/cryosphere/regional/IPG-Chile.md deleted file mode 100644 index 1dfaeb4..0000000 --- a/doc/cryosphere/regional/IPG-Chile.md +++ /dev/null @@ -1,20 +0,0 @@ -# Inventario Publico de Glaciares - Chile - -https://dga.mop.gob.cl/Paginas/InventarioGlaciares.aspx -https://www.ide.cl/index.php/noticias/item/2167-inventario-publico-de-glaciares-2022-disponible-para-la-ciudadania - -````sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -DPATH=cryosphere/regional -DNAME=IPG-Chile - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -## Download error -# wget --continue https://dga.mop.gob.cl/estudiospublicaciones/mapoteca/Documents/IPG2022.zip - -## copy from local download -# scp ~/Downloads/IPG2022.zip $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/regional/IPG-Chile/ -``` diff --git a/doc/cryosphere/regional/NGI-Argentina.md b/doc/cryosphere/regional/NGI-Argentina.md deleted file mode 100644 index 33c537d..0000000 --- a/doc/cryosphere/regional/NGI-Argentina.md +++ /dev/null @@ -1,22 +0,0 @@ -# Inventario Nacional de Glaciares - Argentina - -https://www.glaciaresargentinos.gob.ar/ - -> Zalazar, L., Ferri, L., Castro, M., Gargantini, H., Gimenez, M., Pitte, P., . . . Villalba, R. (2020). Spatial distribution and characteristics of Andean ice masses in Argentina: Results from the first National Glacier Inventory. Journal of Glaciology, 66(260), 938-949. doi:10.1017/jog.2020.55 - -> IANIGLA-Inventario Nacional de Glaciares. 2018. Resumen ejecutivo de los resultados del Inventario Nacional de Glaciares. IANIGLA-CONICET, Ministerio de Ambiente y Desarrollo Sustentable de la Nación. Pp. 27. - -Register and download from https://www.glaciaresargentinos.gob.ar/?page_id=2571 - -````sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -DPATH=cryosphere/regional -DNAME=NGI-Argentina - -mkdir -p $GISDATA/$DPATH/$DNAME/ -cd $GISDATA/$DPATH/$DNAME/ - -## copy from local download -# scp ~/Downloads/00-Shapefile-Completo.zip $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/regional/NGI-Argentina/ -``` diff --git a/doc/ecological/global/Ecological-Marine-Units.md b/doc/ecological/global/Ecological-Marine-Units.md deleted file mode 100644 index b5e9e0b..0000000 --- a/doc/ecological/global/Ecological-Marine-Units.md +++ /dev/null @@ -1,58 +0,0 @@ -# Ecological Marine Units - -Webpage at https://www.esri.com/en-us/about/science/ecological-marine-units/overview - -#### Citation -> Sayre, R.G., D.J. Wright, S.P. Breyer, K.A. Butler, K. Van Graafeiland, M.J. Costello, P.T. Harris, K.L. Goodin, J.M. Guinotte, Z. Basher, M.T. Kavanaugh, P.N. Halpin, M.E. Monaco, N. Cressie, P. Aniello, C.E. Frye, and D. Stephens. 2017. A three-​dimensional mapping of the ocean based on environmental data. Oceanography 30(1):90–103, https://doi.org/10.5670/oceanog.2017.116 - -#### Data access - -Data is available at https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/ and https://esri.maps.arcgis.com/home/item.html?id=20a0247deee0432aa2f4790b89615ae9 - -#### Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecological/global/EcologicalMarineUnits -cd $GISDATA/ecological/global/EcologicalMarineUnits - -wget --continue https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/GlobalEcologicalMarineUnits.mpk - - -cd $WORKDIR -7z x $GISDATA/stratification/EcologicalMarineUnits/EMUGlobalOcean.mpk - -ogrinfo v104/emuglobal.gdb -ogrinfo -geom=NO v104/emuglobal.gdb EMUMaster | head -ogrinfo -geom=NO v104/emuglobal.gdb EMUoptimized | head - -psql gisdata -c "CREATE SCHEMA emu" -## not sure what is the difference between both, will use 'optimized' for now -ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=emu v104/emuglobal.gdb emuoptimized -##ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=emu v104/emuglobal.gdb emumaster - -``` - -Explore in PostGIS `psql -d gisdata` - -```sql -\dt emu. --- several fields to explore -\x -select * from emu.emuoptimized limit 1; -\x -select depth_lvl,count(*) from emu.emuoptimized group by depth_lvl ; -select cluster37, nameemu,count(*) from emu.emuoptimized group by cluster37,nameemu order by nameemu; -\x -select * from emu.emuoptimized where depth_lvl=24 limit 1; --- points are 3D but I am not sure how to interpret the third coordinate -select st_astext(wkb_geometry) from emu.emuoptimized where depth_lvl=94 limit 5; -select st_astext(wkb_geometry) from emu.emuoptimized where cluster37=36 limit 5; - -select st_z(wkb_geometry) as z, count(*) from emu.emuoptimized group by z; - -``` - -#### Notes -* [how-to in ArcGIS](https://community.esri.com/groups/ecological-marine-units/blog/2017/01/03/getting-started-with-ecological-marne-units-emu-s-using-arcgis-desktop) diff --git a/doc/ecological/global/FAO-GEZ.md b/doc/ecological/global/FAO-GEZ.md deleted file mode 100644 index af0aedc..0000000 --- a/doc/ecological/global/FAO-GEZ.md +++ /dev/null @@ -1,26 +0,0 @@ -# FAO-GEZ -The Global Forest Resources Assessment (FRA) of the Food and Agriculture Organization of the United Nations (FAO) presents global and regional forest data by global ecological zone (GEZ). The GEZ spa... - -#### Citation - -> FAO (2012) Global Ecological Zones for FAO Forest Reporting: 2010 Update - -#### Data - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecological/global/FAO-GEZ -cd $GISDATA/ecological/global/FAO-GEZ -wget -b --continue 'http://www.fao.org/geonetwork/srv/en/resources.get?id=47105&fname=gez2010.zip&access=private' --output-document=gez2010.zip - -``` - -```sh -cd $WORKDIR - unzip $GISDATA/ecosystems/FAO-GEZ/gez2010.zip - - ogrinfo -al -geom=no gez_2010_wgs84.shp | less - -``` diff --git a/doc/ecological/global/NatureMap-IUCN-habitats.md b/doc/ecological/global/NatureMap-IUCN-habitats.md deleted file mode 100644 index ef7e789..0000000 --- a/doc/ecological/global/NatureMap-IUCN-habitats.md +++ /dev/null @@ -1,44 +0,0 @@ -# A global map of terrestrial habitat types - -#### Citation - - -Data paper: -> Jung, M., Dahal, P.R., Butchart, S.H.M. et al. A global map of terrestrial habitat types. Sci Data 7, 256 (2020). https://doi.org/10.1038/s41597-020-00599-8 - -Zenodo dataset: -> Martin Jung, Prabhat Raj Dahal, Stuart H. M. Butchart, Paul F. Donald, Xavier De Lamo, Myroslava Lesiv, … Piero Visconti. (2020). A global map of terrestrial habitat types (Version 001_full) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3673586 -> Martin Jung, Prabhat Raj Dahal, Stuart H. M. Butchart, Paul F. Donald, Xavier De Lamo, Myroslava Lesiv, … Piero Visconti. (2020). A global map of terrestrial habitat types (Version 003) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3925749 - -#### Data - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecological/global/NatureMap -cd $GISDATA/ecological/global/NatureMap - -# version 1` -wget -b --continue 'https://zenodo.org/record/3673586/files/iucn_habitatclassification_composite_ver001.zip?download=1' --output-document=iucn_habitatclassification_composite_ver001.zip - -# version 3 -for k in iucn_habitatclassification_composite_lvl1_ver003.zip iucn_habitatclassification_composite_lvl2_ver003.zip lvl1_frac_1km_ver003.zip lvl2_frac_1km_ver003.zip iucn_habitatclassification_code_ver003.zip -do - wget -b --continue 'https://zenodo.org/record/3925749/files/'${k}'?download=1' --output-document=${k} -done -``` - -```sh -cd $WORKDIR - unzip $GISDATA/ecosystems/NatureMap/iucn_habitatclassification_composite_lvl2_ver003.zip - gdalinfo iucn_habitatclassification_composite_lvl2_ver003.tif - -## 1km aggregations - unzip $GISDATA/ecosystems/NatureMap/lvl2_frac_1km_ver003.zip - - unzip $GISDATA/ecosystems/NatureMap/iucn_habitatclassification_code_ver003.zip - -gdalwarp -te -180 -90 180 90 lvl2_frac_1km_ver003/iucn_habitatclassification_fraction_lvl2__108_Forest\ –\ Subtropical-tropical\ swamp__ver003.tif NatureMap-108-1km.tif - -``` diff --git a/doc/ecoregions/global/FEOW-ecoregions.md b/doc/ecoregions/global/FEOW-ecoregions.md deleted file mode 100644 index 2e9bd70..0000000 --- a/doc/ecoregions/global/FEOW-ecoregions.md +++ /dev/null @@ -1,60 +0,0 @@ -# Fresh water ecoregions of the world (FEOW) - -Direct download - -https://www.feow.org/ - -https://geospatial.tnc.org/datasets/38da4656e8074e1c820c42cc21cd76cd_0 - -## Citation -> Abell R, Thieme ML, Revenga C, Bryer M, Kottelat M, Bogutskaya N, Coad B, Mandrak N, Contreras Balderas S, Bussing W, Stiassny MLJ, Skelton P, Allen GR, Unmack P, Naseka A, Ng R, Sindorf N, Robertson J, Armijo E, Higgins JV, Heibel TJ, Wikramanayake E, Olson D, López HL, Reis RE, Lundberg JG, Sabaj Pérez MH, Petry P (2008) Freshwater ecoregions of the world: A new map of biogeographic units for freshwater biodiversity conservation, BioScience 58: 403–414. DOI:10.1641/B580507 - - -## Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/global/FEOW/ -cd $GISDATA/ecoregions/global/FEOW/ - -# version from FEOW.org -wget --continue https://www.feow.org/files/downloads/GIS_hs_snapped.zip - -# version from TNC: no direct download? copy from local version -#export LOCALUSER=... -#export LOCALHOST=... -#export LOCALPATH=... -# scp ${LOCALUSER}@${LOCALHOST}:$LOCALPATH/'Freshwater_Ecoregions_Of_the_World_(FEOW)-fgdb.zip' $GISDATA/ecoregions/global/FEOW/ - -``` - -Create a new geopackage file with valid topology and assign the (implied) projection information: -```sh -module add python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 -unzip -u GIS_hs_snapped.zip -unzip -u Freshwater_Ecoregions_Of_the_World_\(FEOW\)-fgdb.zip - -ogrinfo c4be086f842b4fbbab544a047bc90dcb.gdb Freshwater_Ecoregions |less - - -if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] -then - ## ogr2ogr -f "GPKG" feow_hs_valid.gpkg GIS_hs_snapped feow_hydrosheds -nlt PROMOTE_TO_MULTI -a_srs "+proj=longlat +datum=WGS84" -makevalid - - ogr2ogr -f "GPKG" feow_all_valid.gpkg c4be086f842b4fbbab544a047bc90dcb.gdb Freshwater_Ecoregions -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid - -fi - -``` - - -```sh - - -psql gisdata -c "CREATE SCHEMA FEOW" -ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=feow GIS_hs_snapped feow_hydrosheds -nlt PROMOTE_TO_MULTI - -## this one is in pseudomercator... -ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=feow c4be086f842b4fbbab544a047bc90dcb.gdb/ -nln fw_ecoregions -nlt PROMOTE_TO_MULTI -``` diff --git a/doc/ecoregions/global/Large-Marine-Ecosystems.md b/doc/ecoregions/global/Large-Marine-Ecosystems.md deleted file mode 100644 index 3acb5dc..0000000 --- a/doc/ecoregions/global/Large-Marine-Ecosystems.md +++ /dev/null @@ -1,51 +0,0 @@ -# Large Marine Ecosystems of the World - -https://ioc.unesco.org/topics/large-marine-ecosystems -https://celebrating200years.noaa.gov/breakthroughs/ecosystems/lme_map.jpg -https://www.lmehub.net/#patagonian-shelf -https://iwlearn.net/marine/lmes/list -https://www.marineregions.org/sources.php#ecosystems - - -## Citation -> Pope, Addy. (2017). Large Marine Ecosystems of the World, [Dataset]. University of Edinburgh. https://doi.org/10.7488/ds/1902. - - -## Data download and preparation - -https://datashare.ed.ac.uk/handle/10283/2552 - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecoregions/global/LME/ -cd $GISDATA/ecoregions/global/LME/ - -wget --continue 'https://datashare.ed.ac.uk/bitstream/handle/10283/2552/lmes_64.zip?sequence=1&isAllowed=y' --output-document=lmes_64.zip -## use --no-check-certificate if necessary - - -``` - - -```sh -qsub -I -l select=1:ncpus=2:mem=120gb,walltime=12:00:00 - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 - -export WD=$GISDATA/ecoregions/global/LME/ -cd $WD -unzip -u $WD/lmes_64.zip - -if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] - then - ogr2ogr -f "GPKG" lmes_64_valid.gpkg $WD/lmes_64.shp lmes_64 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid - else - ogr2ogr -f "GPKG" lmes_64_valid.gpkg $WD/lmes_64.shp lmes_64 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -fi - -``` diff --git a/doc/ecoregions/global/MEOW-ecoregions.md b/doc/ecoregions/global/MEOW-ecoregions.md deleted file mode 100644 index d19f7d7..0000000 --- a/doc/ecoregions/global/MEOW-ecoregions.md +++ /dev/null @@ -1,67 +0,0 @@ -# MEOW : Marine ecoregions of the world - -#### Citation - -> Spalding MD, Fox HE, Allen GR, Davidson N, Ferdaña ZA, Finlayson M, Halpern BS, Jorge MA, Lombana A, Lourie SA, Martin KD, McManus E, Molnar J, Recchia CA, Robertson J (2007). Marine Ecoregions of the World: a bioregionalization of coast and shelf areas. BioScience 57: 573-583. doi: 10.1641/B570707. Data URL: http://data.unep-wcmc.org/datasets/38 - -> The Nature Conservancy (2012). Marine Ecoregions and Pelagic Provinces of the World. GIS layers developed by The Nature Conservancy with multiple partners, combined from Spalding et al. (2007) and Spalding et al. (2012). Cambridge (UK): The Nature Conservancy. DOIs: 10.1641/B570707; 10.1016/j.ocecoaman.2011.12.016. Data URL: http://data.unep-wcmc.org/datasets/38 - -> Spalding MD, Agostini VN, Rice J, Grant SM (2012). Pelagic provinces of the world): a biogeographic classification of the world’s surface pelagic waters. Ocean and Coastal Management 60: 19-30. DOI: 10.1016/j.ocecoaman.2011.12.016. Data URL: http://data.unep-wcmc.org/datasets/38 - -#### Data download and preparation - -We download the versions available at: -* -* - - - -#### Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/global/MEOW/ -cd $GISDATA/ecoregions/global/MEOW/ - -wget --continue 'https://c402277.ssl.cf1.rackcdn.com/publications/351/files/original/MEOW_FINAL.zip?1349120553' --output-document=MEOW_FINAL.zip - -wget --continue 'https://datadownload-production.s3.amazonaws.com/WCMC036_MEOW_PPOW_2007_2012_v1.zip' -``` - - -```sh -qsub -I -l select=1:ncpus=2:mem=120gb,walltime=12:00:00 - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 - -export WD=$GISDATA/ecoregions/global/MEOW/ -cd $WD -unzip -u $WD/MEOW_FINAL.zip -unzip -u $WD/WCMC036_MEOW_PPOW_2007_2012_v1.zip - -if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] -then - ogr2ogr -f "GPKG" meow_ecos_valid.gpkg $WD/MEOW/meow_ecos.shp meow_ecos -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid -fi - -if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] -then - ogr2ogr -f "GPKG" meow_ppow_valid.gpkg $WD/DataPack-14_001_WCMC036_MEOW_PPOW_2007_2012_v1/01_Data/WCMC-036-MEOW-PPOW-2007-2012.shp WCMC-036-MEOW-PPOW-2007-2012 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid -nln meow_ppow - ogr2ogr -f "GPKG" meow_ppow_noCoast_valid.gpkg $WD/DataPack-14_001_WCMC036_MEOW_PPOW_2007_2012_v1/01_Data/WCMC-036-MEOW-PPOW-2007-2012-NoCoast.shp WCMC-036-MEOW-PPOW-2007-2012-NoCoast -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid -nln meow_ppow_no_coast -fi - -``` - - -```sh -cd $WORKDIR -unzip $GISDATA/biogeografia/MEOW/MEOW_FINAL.zip - -psql gisdata -c "CREATE SCHEMA MEOW" -ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=meow MEOW/meow_ecos.shp -nlt PROMOTE_TO_MULTI - - -``` diff --git a/doc/ecoregions/global/OneEarth-bioregions.md b/doc/ecoregions/global/OneEarth-bioregions.md deleted file mode 100644 index 65c2ca8..0000000 --- a/doc/ecoregions/global/OneEarth-bioregions.md +++ /dev/null @@ -1,14 +0,0 @@ -# Bioregions 2020 - -https://www.oneearth.org/bioregions-2020/ -https://www.oneearth.org/bioregions/ - -*Citation*: - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/global/ -cd $GISDATA/ecoregions/global/ - -``` diff --git a/doc/ecoregions/global/RESOLVE-ecoregions.md b/doc/ecoregions/global/RESOLVE-ecoregions.md deleted file mode 100644 index 395361f..0000000 --- a/doc/ecoregions/global/RESOLVE-ecoregions.md +++ /dev/null @@ -1,105 +0,0 @@ -# Biogeography and ecoregions - - -## [RESOLVE ecoregions](https://ecoregions2017.appspot.com) - -*Citation*: Dinerstein E, Olson D, Joshi A, Vynne C, Burgess ND, Wikramanayake E, Hahn N, Palminteri S, Hedao P, Noss R, Hansen M, Locke H, Ellis EE, Jones B, Barber CV, Hayes R, Kormos C, Martin V, Crist E, Sechrest W, Price L, Baillie JEM, Weeden D, Suckling K, Davis C, Sizer N, Moore R, Thau D, Birch T, Potapov P, Turubanova S, Tyukavina A, de Souza N, Pintea L, Brito JC, Llewellyn Barnekow Lillesø JP, van Breugel P, Graudal L, Voge M, Al-Shammari KF, Saleem M (2017) An Ecoregion-Based Approach to Protecting Half the Terrestrial Realm, BioScience 67: 534–545. [DOI: 10.1093/biosci/bix014](https://doi.org/10.1093/biosci/bix014) - -[Documentation](https://developers.google.com/earth-engine/datasets/catalog/RESOLVE_ECOREGIONS_2017) - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/global/TEOW/ -cd $GISDATA/ecoregions/global/TEOW/ - -wget -b --continue https://storage.googleapis.com/teow2016/Ecoregions2017.zip - -``` - - - - -```sh -qsub -I -l select=1:ncpus=12:mem=120gb,walltime=24:00:00 - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 - -export WD=$GISDATA/ecoregions/global/TEOW/ -export OUTPUT=$WD/teow2017-valid-output -cd $WD -unzip -u $WD/Ecoregions2017.zip - -ogr2ogr -f "CSV" $OUTPUT Ecoregions2017.shp -sql "SELECT ECO_BIOME_,ECO_ID,ECO_NAME FROM Ecoregions2017" - -cd $OUTPUT - -for BIOME in $(cut ${OUTPUT}/Ecoregions2017.csv -d, -f1 | tail -n+2 | sort | uniq) -do - mkdir -p $OUTPUT/$BIOME - cd $OUTPUT/$BIOME - grep $BIOME $OUTPUT/Ecoregions2017.csv > list - for ECOID in $(cut list -d, -f2 | sed -s s/'"'//g) - do - if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] - then - ogr2ogr -f "GPKG" teow_${ECOID}_valid.gpkg $WD/Ecoregions2017.shp Ecoregions2017 -where "ECO_ID='${ECOID}'" -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid - else - ogr2ogr -f "GPKG" teow_${ECOID}.gpkg $WD/Ecoregions2017.shp Ecoregions2017 -where "ECO_ID='${ECOID}'" -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" - fi - echo $BIOME $ECOID done! $(date) - done -done - -if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] -then - ogr2ogr -f "GPKG" teow_2017_valid.gpkg $WD/Ecoregions2017.shp Ecoregions2017 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid -else - echo " update GDAL version" -fi -``` - - - - -```sql - -cd $WORKDIR -unzip $GISDATA/biogeografia/RESOLVE_Ecoregions/Ecoregions2017.zip - -psql gisdata -c "CREATE SCHEMA resolve" -ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" Ecoregions2017.shp -lco SCHEMA=resolve -nlt PROMOTE_TO_MULTI -``` - -Now in `psql gisdata`: - -```sql - -CREATE UNIQUE INDEX CONCURRENTLY ecoregions2017_idx -ON resolve.Ecoregions2017 (eco_name, eco_biome_, eco_id); - -CREATE TABLE IF NOT EXISTS resolve.typology_xwalk ( - eco_name character varying(150), - eco_biome_ character varying(254), - eco_id numeric(11,0), - efg_code varchar(10), - version varchar(10), - map_code varchar(20), - map_version varchar(10), - occurrence smallint, - contributors text[], - FOREIGN KEY (eco_name, eco_biome_, eco_id) REFERENCES resolve.Ecoregions2017 (eco_name, eco_biome_, eco_id), - PRIMARY KEY (map_code, map_version, eco_id) -); - - - -``` - -Use script xwalk-resolve-ecoregions.R to populate the table. - - -` select * from resolve.typology_xwalk where efg_code='TF1.4'; ` diff --git a/doc/ecoregions/global/TNC-ecoregions.md b/doc/ecoregions/global/TNC-ecoregions.md deleted file mode 100644 index ba4612d..0000000 --- a/doc/ecoregions/global/TNC-ecoregions.md +++ /dev/null @@ -1,23 +0,0 @@ -# TNC terrestrial ecoregions - -http://maps.tnc.org/gis_data.html - -This is the master spatial data layer for TNC's terrestrial ecoregions of the world, exported from the geodatabase listed above. Note that it includes Mangroves, Inland Water, and Rock and Ice MHTs, although they are not being handled by terrestrial assessments. This layer is based on WWF's ecoregions outside the United States, and loosely based on Bailey's ecoregions (from the USDA Forest Service) within the United States. - -##Metadata -http://maps.tnc.org/files/metadata/TerrEcos.xml - -##GIS data - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/global/TEOW/ -cd $GISDATA/ecoregions/global/TEOW/ - -wget -b --continue http://maps.tnc.org/files/shp/terr-ecoregions-TNC.zip -``` - - -ls /opt/gisdata/vectorial/TNC/ diff --git a/doc/ecoregions/global/WWF-ecoregions.md b/doc/ecoregions/global/WWF-ecoregions.md deleted file mode 100644 index 8bd3728..0000000 --- a/doc/ecoregions/global/WWF-ecoregions.md +++ /dev/null @@ -1,25 +0,0 @@ - -# Terrestrial ecoregions according to WWF - -http://www.worldwildlife.org/publications/terrestrial-ecoregions-of-the-world - -Terrestrial Ecoregions of the World (TEOW) is a biogeographic regionalization of the Earth's terrestrial biodiversity. Our biogeographic units are ecoregions, which are defined as relatively large units of land or water containing a distinct assemblage of natural communities sharing a large majority of species, dynamics, and environmental conditions. There are 867 terrestrial ecoregions, classified into 14 different biomes such as forests, grasslands, or deserts. Ecoregions represent the original distribution of distinct assemblages of species and communities. - -##GIS data -## - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/global/TEOW/ -cd $GISDATA/ecoregions/global/TEOW/ - -wget -b -o wwf-wget-log --continue 'http://assets.worldwildlife.org/publications/15/files/original/official_teow.zip?1349272619&_ga=1.109260037.1823268057.1469281022' --output-document=official_teow.zip -``` - -cd /opt/gisdata/vectorial/WWF/ -unzip official_teow.zip - -cd /opt/gisdata/vectorial/WWF/official/ -ogr2ogr -spat -90 -60 -25 15 SAM_terr_ecos.shp wwf_terr_ecos.shp -ogr2ogr -spat -138 3 -40 60 NAC_terr_ecos.shp wwf_terr_ecos.shp diff --git a/doc/ecoregions/regional/Canada-ecoprovinces.md b/doc/ecoregions/regional/Canada-ecoprovinces.md deleted file mode 100644 index 0f139b8..0000000 --- a/doc/ecoregions/regional/Canada-ecoprovinces.md +++ /dev/null @@ -1,43 +0,0 @@ -# Terrestrial Ecoprovinces of Canada - - -Ecological Framework Levels -Level Number of Units Definition -Ecozone 15 At the top of the hierarchy, it defines the ecological mosaic of Canada on a sub-continental scale. They represent an area of the earth's surface representative of large and very generalized ecological units characterized by interactive and adjusting abiotic and biotic factors. Canada is divided into 15 terrestrial ecozones. -Ecoprovince 53 A subdivision of an ecozone characterized by major assemblages of structural or surface forms, faunal realms, and vegetation, hydrology, soil, and macro climate. For example, the Newfoundland ecoprovince (no. 6.4) is one of six ecoprovinces within the Boreal Shield Ecozone. -Ecoregion 194 A subdivision of an ecoprovince characterized by distinctive regional ecological factors, including climate, physiography, vegetation, soil, water, and fauna. For example, the Maritime Barrens ecoregion (no. 114) is one of nine ecoregions within the Newfoundland ecoprovince. -Ecodistrict 1021 A subdivision of an ecoregion characterized by a distinctive assemblages of relief, landforms, geology, soil, vegetation, water bodies and fauna. For example, the Jeddore Lake ecodistrict (no. 473) is one of five within the Maritime Barrens ecoregion. - -https://open.canada.ca/data/en/dataset/98fa7335-fbfe-4289-9a0e-d6bf3874b424 - -> Marshall, I.B., Schut, P.H., and Ballard, M. 1999. A National Ecological Framework for Canada: Attribute Data. Agriculture and Agri-Food Canada, Research Branch, Centre for Land and Biological Resources Research and Environment Canada, State of the Environment Directorate, Ecozone Analysis Branch. Ottawa/Hull. http://sis.agr.gc.ca/cansis/nsdb/ecostrat/1999report/index.html (accessed July 4, 2017). - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/regional/Canada -cd $GISDATA/ecoregions/regional/Canada - -##mv ~/Downloads/ECOPROVINCE_V2_2_GDB.zip $GISDATA/vegetation/Canada - -wget --continue http://www.agr.gc.ca/atlas/supportdocument_documentdesupport/aafcEcostratification/en/ISO_19131_National_Ecological_Framework_for_Canada_Data_Product_Specification.pdf - -wget -b --continue http://www.agr.gc.ca/atlas/data_donnees/bio/aafcEcostratification/gml/ECOPROVINCE_V2_2_GML.zip - -wget -b --continue http://www.agr.gc.ca/atlas/data_donnees/bio/aafcEcostratification/gml/ECODISTRICT_V2_2_GML.zip - -``` - -Import data into postgis - -```sh -unzip ECOPROVINCE_V2_2_GML.zip -unzip ECODISTRICT_V2_2_GML.zip -psql gisdata -c "CREATE SCHEMA opencanada" -ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=opencanada $GISDATA/vegetation/Canada/BIO_CA_TER_ECOPROVINCE_V2_2/BIO_CA_TER_ECOPROVINCE_V2_2.gml -ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=opencanada $GISDATA/vegetation/Canada/BIO_CA_TER_ECODISTRICT_V2_2/BIO_CA_TER_ECODISTRICT_V2_2.gml - - -select distinct ecozone_id,ecoprovince_id,ecoregion_id,ecodistrict_id from opencanada.bio_ca_ter_ecodistrict_v2_2 order by ecozone_id,ecoprovince_id,ecoregion_id,ecodistrict_id; - -``` diff --git a/doc/ecoregions/regional/IBRA-v7.md b/doc/ecoregions/regional/IBRA-v7.md deleted file mode 100644 index cc35de4..0000000 --- a/doc/ecoregions/regional/IBRA-v7.md +++ /dev/null @@ -1,20 +0,0 @@ - -# Interim Biogeographic Regionalisation for Australia (IBRA), Version 7 (Regions) - -Details on -https://www.environment.gov.au/fed/catalog/search/resource/details.page?uuid=%7B4A2321F0-DD57-454E-BE34-6FD4BDE64703%7D - -```sh - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecoregions/regional/IBRAv7 -cd $GISDATA/ecoregions/regional/IBRAv7 - -# version from environment.gov.au: no direct download? copy from local version -#export LOCALUSER=... -#export LOCALHOST=... -#export LOCALPATH=... -# scp ${LOCALUSER}@${LOCALHOST}:$LOCALPATH/ $GISDATA/ecoregions/regional/IBRAv7/ - -``` diff --git a/doc/ecosystems/global/EarthEnv-TCF-2021.md b/doc/ecosystems/global/EarthEnv-TCF-2021.md deleted file mode 100644 index b716600..0000000 --- a/doc/ecosystems/global/EarthEnv-TCF-2021.md +++ /dev/null @@ -1,38 +0,0 @@ -# EarthEnv Tropical Cloud Forests - -## citation - -> Karger, D.N., Kessler, M., Lehnert, M. et al. Limited protection and ongoing loss of tropical cloud forest biodiversity and ecosystems worldwide. Nat Ecol Evol (2021). https://doi.org/10.1038/s41559-021-01450-y -> Wilson AM, Jetz W (2016) *Remotely Sensed High-Resolution Global Cloud Dynamics for Predicting Ecosystem and Biodiversity Distributions*. **PLoS Biol** 14(3): e1002415. doi:[10.1371/journal.pbio.1002415](http://doi.org/10.1371/journal.pbio.1002415). [Dataset available on-line](http://www.earthenv.org/) - -## data access -- older version: https://earthenv.org//cloud -- newer version: https://www.earthenv.org/cloudforest - -## data preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/ecosystems/global/EarthEnv-TCF-2021 -cd $GISDATA/ecosystems/global/EarthEnv-TCF-2021 - -wget --continue https://data.earthenv.org/tcf/tcf_ensemble_mnv16_2001-2018.tif -wget --continue https://data.earthenv.org/tcf/tcf_ensemble_mn_sd_2001-2018_v16.zip - -# for the older data: -wget http://www.earthenv.org//cloud - grep .tif cloud > links - wget --continue --force-html -i links - -``` - -The model used locations of known cloud forests were obtained from the Tropical Montane Cloud Forest Sites database Tropical Montane Cloud Forest Sites database. This data can be obtained from https://www.unep-wcmc.org/resources-and-data/tropical-montane-cloud-forest-sites, download requires registration. Once downloaded we move the data to this directory: - -```sh -scp Tropical_Montane_Cloud_Forest_Sites_1997.zip $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/ecosystems/global/EarthEnv-TCF-2021 - -``` - -Description of data here: - -https://www.earthenv.org/metadata/Cloud_DataDescription.pdf diff --git a/doc/ecosystems/global/Functional-Biomes.md b/doc/ecosystems/global/Functional-Biomes.md deleted file mode 100644 index cf00739..0000000 --- a/doc/ecosystems/global/Functional-Biomes.md +++ /dev/null @@ -1,7 +0,0 @@ -# Functional Biomes of the World - -## Citation - -> Higgins, S.I., Buitenwerf, R. and Moncrieff, G.R. (2016), Defining functional biomes and monitoring their change globally. Glob Change Biol, 22: 3583-3593. https://doi.org/10.1111/gcb.13367 - -> Higgins, Steven I.; Buitenwerf, Robert; Moncrieff, Glenn; Moncrieff, Glenn R. (2017), Data from: Defining functional biomes and monitoring their change globally, Dryad, Dataset, https://doi.org/10.5061/dryad.3pm63 diff --git a/doc/ecosystems/global/Global-intertidal-change.md b/doc/ecosystems/global/Global-intertidal-change.md deleted file mode 100644 index ab683c6..0000000 --- a/doc/ecosystems/global/Global-intertidal-change.md +++ /dev/null @@ -1,41 +0,0 @@ -# Global intertidal change - -https://www.globalintertidalchange.org/data-viewer/tidal-wetland-change - -## Citation - -Murray, N. J., T. A. Worthington, P. Bunting, S. Duce, V. Hagger, C. E. Lovelock, R. Lucas, M. I. Saunders, M. Sheaves, M. Spalding, N. J. Waltham & M. B. Lyons (2022). "High-resolution mapping of losses and gains of Earth's tidal wetlands." Science. 376, 744-749. doi:10.1126/science.abm9583 - -## Data description - -The principal data products from the global intertidal change analysis of the Landsat archive is a set of change maps, comprising: - -"loss", 0-1 - integer representing loss, where 1 (loss) and 0 (no loss). - -"lossYear", 01:19, 3 - integer representing the end year of the time-step of analysis (e.g., 19 = 2017-2019). - -"lossType", 2,3,5 - integer representing intertidal ecosystem type: Tidal flat (2), Mangrove (3), Tidal marsh (5)). - -"gain", 0-1 - integer representing gain, where 1 (gain) and 0 (no gain). - -"gainYear", 01:19, 3 - integer representing the end year of the time-step of analysis (e.g., 19 = 2017-2019). - -"gainType", 2,3,5 - integer representing intertidal ecosystem type: Tidal flat (2), Mangrove (3), Tidal marsh (5)). - -In addition, we provide two tidal wetland extent data layers: - -"twprobability_start", 0-100 - integer which represents the agreement of random forest decision trees for the tidal wetland class in t1 of the analysis, 1999-2001 - -"twprobability_end", 0-100 - integer which represents the agreement of random forest decision trees for the tidal wetland class in t7 of the analysis, 2017-2019 - -## Data access - -For analysis, the dataset is made directly available in Google Earth Engine via the Earth Engine data catalogue (dataset link): - -```{js} -ee.ImageCollection("JCU/Murray/GIC/global_tidal_wetland_change/2019") - - -The dataset is also available as shards on GCP Cloud Storage and can be downloaded using the `gsutil` command `gsutil -m cp "gs://gic-archive/gic-2019-v1-0/v1-0-1/*.tif" "PATH-TO-LOCAL-FOLDER"` - -The datasets generated for this study are available for viewing at the Global Intertidal Change website. diff --git a/doc/ecosystems/global/WCMC-coral-reefs.md b/doc/ecosystems/global/WCMC-coral-reefs.md deleted file mode 100644 index 869014d..0000000 --- a/doc/ecosystems/global/WCMC-coral-reefs.md +++ /dev/null @@ -1,23 +0,0 @@ -# Global-Coral-Reefs-2018 - -#### citation - -> UNEP-WCMC, WorldFish Centre, WRI, TNC (2018). Global distribution of warm-water coral reefs, compiled from multiple sources including the Millennium Coral Reef Mapping Project. Version 4.0. Cambridge (UK): UN Environment World Conservation Monitoring Centre. URL: http://data.unep-wcmc.org/datasets/1 - -> IMaRS-USF (Institute for Marine Remote Sensing-University of South Florida) (2005). Millennium Coral Reef Mapping Project. Unvalidated maps. These maps are unendorsed by IRD, but were further interpreted by UNEP World Conservation Monitoring Centre. Cambridge (UK): UNEP World Conservation Monitoring Centre - -> Spalding MD, Ravilious C, Green EP (2001). World Atlas of Coral Reefs. Berkeley (California, USA): The University of California Press. 436 pp. - -> IMaRS-USF, IRD (Institut de Recherche pour le Developpement) (2005). Millennium Coral Reef Mapping Project. Validated maps. Cambridge (UK): UNEP World Conservation Monitoring Centre - -#### data access -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecosystems/global/WCMC-coral-reefs -cd $GISDATA/ecosystems/global/WCMC-coral-reefs - -wget --continue http://wcmc.io/WCMC_008 --output-document=WCMC_008.zip - -``` diff --git a/doc/ecosystems/global/WCMC-kelp.md b/doc/ecosystems/global/WCMC-kelp.md deleted file mode 100644 index 131e3aa..0000000 --- a/doc/ecosystems/global/WCMC-kelp.md +++ /dev/null @@ -1,30 +0,0 @@ -# Kelpforest-potential-dist -Modelled Global Distribution of the Kelp Biome - -## citation - -> Jayathilake D.R.M., Costello MJ. 2020. A modelled global distribution of the kelp biome. Biological Conservation 252, 108815. https://doi.org/10.1016/j.biocon.2020.108815 - -> Jayathilake D.R.M., Costello M.J. 2021. Version 2 of the world map of laminarian kelp benefits from more Arctic data and makes it the largest marine biome. Biological Conservation online. https://doi.org/10.1016/j.biocon.2021.109099 - - -## data access - -The map is available at WCMC: https://data.unep-wcmc.org/datasets/49 - -This seems to be the original version 1. For the version 2, I haven't found the map, but the validation and training points are available in additional FigShare repositories: -https://doi.org/10.17608/k6.auckland.12278786.v2 -https://doi.org/10.17608/k6.auckland.12272033.v1 - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecosystems/global/WCMC-kelp -cd $GISDATA/ecosystems/global/WCMC-kelp - -wget --continue http://wcmc.io/UniAuk-004 --output-document=UniAuk-004-ModelledDistributionKelpBiome.zip -wget https://auckland.figshare.com/ndownloader/files/22623905 --output-document=validation-data.csv -wget https://auckland.figshare.com/ndownloader/files/22623896 --output-document=training-data.csv - -``` diff --git a/doc/ecosystems/global/WCMC-mangrove-2000.md b/doc/ecosystems/global/WCMC-mangrove-2000.md deleted file mode 100644 index 74da070..0000000 --- a/doc/ecosystems/global/WCMC-mangrove-2000.md +++ /dev/null @@ -1,58 +0,0 @@ -# Global Distribution of Mangroves USGS, version 1.3 - -> This dataset shows the global distribution of mangrove forests, derived from earth observation satellite imagery. The dataset was created using Global Land Survey (GLS) data and the Landsat archive. Approximately 1,000 Landsat scenes were interpreted using hybrid supervised and unsupervised digital image classification techniques. See Giri et al. (2011) for full details. - - -## Citation - -> Giri C, Ochieng E, Tieszen LL, Zhu Z, Singh A, Loveland T, Masek J, Duke N (2011). *Status and distribution of mangrove forests of the world using earth observation satellite data* (version 1.3, updated by UNEP-WCMC). **Global Ecology and Biogeography** 20: 154-159. doi: [10.1111/j.1466-8238.2010.00584.x] . - -> Giri, C., E. Ochieng, L.L.Tieszen, Z. Zhu, A. Singh, T. Loveland, J. Masek, and N. Duke. 2013. **Global Mangrove Forests Distribution, 2000**. Palisades, NY: NASA Socioeconomic Data and Applications Center (SEDAC). https://doi.org/10.7927/H4J67DW8. Accessed DAY MONTH YEAR - - -## Data access -Available at WCMC: -http://data.unep-wcmc.org/datasets/4 - -Available at SEDAC: -https://sedac.ciesin.columbia.edu/data/set/lulc-global-mangrove-forests-distribution-2000 - - -## Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecosystems/global/WCMC-mangroves-2000 -cd $GISDATA/ecosystems/global/WCMC-mangroves-2000 - -wget --continue http://wcmc.io/WCMC_010 --output-document=WCMC-mangroves-2000.zip - -``` - -Check download and use `makevalid` to avoid problems when intersecting this layer -```sh -unzip $GISDATA/ecosystems/global/WCMC-mangroves-2000/WCMC-mangroves-2000.zip - -tree WCMC010_MangrovesUSGS2011_v1_4/ - -# qsub -I -l select=1:ncpus=12:mem=120gb,walltime=24:00:00 - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 - -export WD=$GISDATA/ecosystems/global/WCMC-mangroves-2000/ -export OUTPUT=$WD/USGS-valid-output -mkdir -p $OUTPUT -cd $OUTPUT -if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] - then - ogr2ogr -f "GPKG" MangroveUSGS2011_valid.gpkg $WD/WCMC010_MangrovesUSGS2011_v1_4/01_Data/14_001_WCMC010_MangroveUSGS2011_v1_4.shp 14_001_WCMC010_MangroveUSGS2011_v1_4 -nlt PROMOTE_TO_MULTI -makevalid - else - echo " ogr version does not support -makevalid flag" - ##ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI - fi - -``` diff --git a/doc/ecosystems/global/WCMC-mangrove-GMW.md b/doc/ecosystems/global/WCMC-mangrove-GMW.md deleted file mode 100644 index 83192a3..0000000 --- a/doc/ecosystems/global/WCMC-mangrove-GMW.md +++ /dev/null @@ -1,106 +0,0 @@ -# Global Mangrove Watch (1996 - 2016) - -> The GMW aims to provide geospatial information about mangrove extent and changes to the Ramsar Convention, national wetland practitioners, decision makers and NGOs. It is part of the Ramsar Science and Technical Review Panel (STRP) work plan for 2016-2018 and a Pilot Project to the Ramsar Global Wetlands Observation System (GWOS), which is implemented under the GEO-Wetlands Initiative. The primary objective of the GMW has been to provide countries lacking a national mangrove monitoring system with first cut mangrove extent and change maps, to help safeguard against further mangrove forest loss and degradation. - -> The GMW has generated a global baseline map of mangroves for 2010 using ALOS PALSAR and Landsat (optical) data, and changes from this baseline for six epochs between 1996 and 2016 derived from JERS-1 SAR, ALOS PALSAR and ALOS-2 PALSAR-2. Annual maps are planned from 2018 and onwards. - -## Citation - -> Bunting P., Rosenqvist A., Lucas R., Rebelo L-M., Hilarides L., Thomas N., Hardy A., Itoh T., Shimada M. and Finlayson C.M. (2018). The Global Mangrove Watch – a New 2010 Global Baseline of Mangrove Extent. Remote Sensing 10(10): 1669. doi: 10.3390/rs1010669. - -> Thomas N, Lucas R, Bunting P, Hardy A, Rosenqvist A, Simard M. (2017). Distribution and drivers of global mangrove forest change, 1996-2010. PLOS ONE 12: e0179302. doi: 10.1371/journal.pone.0179302 - -## Data access -Available at WCMC: -http://data.unep-wcmc.org/datasets/45 - - -## Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecosystems/global/WCMC-mangroves-GMW -cd $GISDATA/ecosystems/global/WCMC-mangroves-GMW - -wget --continue http://wcmc.io/GMW_001 --output-document=WCMC-mangroves-GMW.zip - -``` - -```sh -qsub -I -l select=1:ncpus=12:mem=120gb,walltime=24:00:00 - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 - -export WD=$GISDATA/ecosystems/global/WCMC-mangroves-GMW - -cd $WD -unzip -u $WD/WCMC-mangroves-GMW.zip -export OUTPUT=$WD/GMW-valid-output -mkdir -p $OUTPUT -cd $OUTPUT -for YEAR in 2016 1996 2007 2008 2009 2010 2015 -do - echo $YEAR - if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] - then - ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI -makevalid - else - echo " ogr version does not support -makevalid flag" - ##ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI - fi - - echo GMW $YEAR done! $(date) - -done -``` - - -Alternative approach using PostGIS (in localhost) - -```sh -export WD=$GISDATA/ecosystems/global/WCMC-mangroves-GMW - -cd $WD -unzip -u $WD/WCMC-mangroves-GMW.zip - -psql gisdata -c "CREATE SCHEMA wcmc" - -for YEAR in 2016 1996 2007 2008 2009 2010 2015 -do - echo $YEAR - ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" $WD/01_Data/GMW_${YEAR}_v2.shp -lco SCHEMA=wcmc -nlt PROMOTE_TO_MULTI -nln gmw_${YEAR} - - echo GMW $YEAR done! $(date) - -done - -``` - - -```sql - -\dt wcmc. - -SELECT ogc_fid,ST_AREA(wkb_geometry),ST_AsText(ST_CENTROID(wkb_geometry)) FROM wcmc.gmw_2016 where ST_IsValid(wkb_geometry) LIMIT 10; - --- SELECT ST_IsValid(wkb_geometry) as valid,count(*) FROM wcmc.gmw_2016 GROUP BY valid; --- SELECT ogc_fid,ST_AREA(ST_MakeValid(wkb_geometry)),ST_AsText(ST_CENTROID(wkb_geometry)),ST_IsValid(wkb_geometry) FROM wcmc.gmw_2016 where NOT ST_IsValid(wkb_geometry) LIMIT 10; - --- this throws many lines of warnings -UPDATE wcmc.gmw_2016 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- UPDATE 63099 - -UPDATE wcmc.gmw_2015 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- - -UPDATE wcmc.gmw_1996 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- - -UPDATE wcmc.gmw_2007 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- -UPDATE wcmc.gmw_2008 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- -UPDATE wcmc.gmw_2009 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- -UPDATE wcmc.gmw_2010 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- - - -``` diff --git a/doc/ecosystems/global/WCMC-mangrove-types.md b/doc/ecosystems/global/WCMC-mangrove-types.md deleted file mode 100644 index e47723c..0000000 --- a/doc/ecosystems/global/WCMC-mangrove-types.md +++ /dev/null @@ -1,66 +0,0 @@ -# Mangrove-Typology-2020 -A global biophysical typology of mangroves - -## Citation - -> Worthington, T.A., zu Ermgassen, P.S.E., Friess, D.A., Krauss, K.W., Lovelock, C.E., Thorley, J., Tingey, R., Woodroffe, C.D., Bunting, P., Cormier, N., Lagomasino, D., Lucas, R., Murray, N.J., Sutherland, W.J., Spalding, M., 2020. A global biophysical typology of mangroves and its relevance for ecosystem structure and deforestation. Sci. Rep. 10, 14652. https://doi.org/10.1038/s41598-020-71194-5 - -## Data access - -Available at WCMC: -https://data.unep-wcmc.org/datasets/48 - -## Data download and preparation - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecosystems/global/WCMC-mangrove-types -cd $GISDATA/ecosystems/global/WCMC-mangrove-types - -wget --continue https://wcmc.io/TNC-006 --output-document=WCMC-mangrove-types.zip - -``` - -Check download -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -cd $GISDATA/ecosystems/global/WCMC-mangrove-types - - -unzip -u $GISDATA/ecosystems/global/WCMC-mangrove-types/WCMC-mangrove-types.zip -tree TNC-006_BiophysicalTypologyMangroves/ - - -``` - - -```sh -qsub -I -l select=1:ncpus=4:mem=120gb,walltime=8:00:00 - -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 - -cd $GISDATA/ecosystems/global/WCMC-mangrove-types -unzip -u $WD/WCMC-mangrove-types.zip - -export WD=$GISDATA/ecosystems/global/WCMC-mangrove-types/TNC-006_BiophysicalTypologyMangroves/01_Data -export OUTPUT=$GISDATA/ecosystems/global/WCMC-mangrove-types/TNC-BioPhys-Mangrove-valid-output -mkdir -p $OUTPUT -cd $OUTPUT -for YEAR in 2016 1996 2010 2007 -do - echo $YEAR - if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] - then - ogr2ogr -f "GPKG" Mangrove_Typology_v2_2_${YEAR}_valid.gpkg $WD/Mangrove_Typology_v2_2_${YEAR}.shp Mangrove_Typology_v2_2_${YEAR} -nlt PROMOTE_TO_MULTI -makevalid - else - echo " ogr version does not support -makevalid flag" - ##ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI - fi - echo $YEAR done! $(date) -done -``` diff --git a/doc/ecosystems/global/tidal-flats.md b/doc/ecosystems/global/tidal-flats.md deleted file mode 100644 index 67edf1d..0000000 --- a/doc/ecosystems/global/tidal-flats.md +++ /dev/null @@ -1,4 +0,0 @@ -# Intertidal Change Explorer - -## Citation -> Murray N. J., Phinn S. R., DeWitt M., Ferrari R., Johnston R., Lyons M. B., Clinton N., Thau D. & Fuller R. A. (2019) The global distribution and trajectory of tidal flats. Nature. 565:222-225. http://dx.doi.org/10.1038/s41586-018-0805-8 diff --git a/doc/ecosystems/regional/CAM-ecosystems-map.md b/doc/ecosystems/regional/CAM-ecosystems-map.md deleted file mode 100644 index c4d55b8..0000000 --- a/doc/ecosystems/regional/CAM-ecosystems-map.md +++ /dev/null @@ -1,43 +0,0 @@ -# MAP OF THE ECOSYSTEMS OF CENTRAL AMERICA - -Full map and GIS title and authors: - -World Bank and CCAD. 2000. "Ecosystems of Central America (GIS map files at 1:250,000)." World Bank, Comisión Centroamerica de Ambiente y Desarrollo (CCAD), World Institute for Conservation and Environment (WICE), and the Centro Agronómico Tropical de Investigación y Enseñanza (CIAT), Washington, D.C. (http://www.worldbank.org/ca-env). - -Full final document title and authors: - -Vreugdenhil, D., J. Meerman, A. Meyrat, L. Diego Gómez, and D. J. Graham. 2002. Map of the Ecosystems of Central America: Final Report. World Bank, Washington, D.C. - - -https://www.birdlist.org/cam/themes/ecosystems_map.htm - -CAM ECOSYSTEMS MAP -DOWNLOAD PAGE -https://www.birdlist.org/cam/themes/map_download_page.htm - - -http://www.projectmosquitia.com/files/Manual_Mapa_Ecosistemas.pdf - -http://www.bio-nica.info/Biblioteca/Vreugdenhil2002MapEcosystems.pdf - -http://documents.worldbank.org/curated/en/386971468223450848/Descripcion-de-los-ecosistemas - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecosystems/regional/worldbank-Central-America/ -cd $GISDATA/ecosystems/regional/worldbank-Central-America/ - -wget --continue https://www.birdlist.org/cam/themes/map_download_page.htm -grep href map_download_page.htm | grep zip > enlaces1 -wget -b --continue --force-html --base=https://www.birdlist.org/cam/themes/ -i enlaces1 -grep href map_download_page.htm | grep pdf > enlaces2 -wget --continue --force-html --base=https://www.birdlist.org/cam/themes/ -i enlaces2 - - -ls *utm* - ls *lam* - -``` diff --git a/doc/ecosystems/regional/Colombia-Terr-Eco-2015.md b/doc/ecosystems/regional/Colombia-Terr-Eco-2015.md deleted file mode 100644 index 2fcfa77..0000000 --- a/doc/ecosystems/regional/Colombia-Terr-Eco-2015.md +++ /dev/null @@ -1,76 +0,0 @@ -## Ecosistemas terrestres de Colombia - -> Etter A., Andrade A., Saavedra K., Amaya P. y P. Arévalo 2017. Risk assessment of Colombian continental ecosystems: An application of the Red List of Ecosystems methodology (v. 2.0). Final Report. Pontificia Universidad Javeriana and Conservación Internacional-Colombia. Bogotá. 138 pp. Final Report. Pontificia Universidad Javeriana and Conservación Internacional-Colombia. Bogotá. 138 pp. [Report](https://www.researchgate.net/publication/325498072_Risk_assessment_of_Colombian_continental_ecosystems_An_application_of_the_Red_List_of_Ecosystems_methodology_v_20). [Summary](https://iucnrle.org/static/media/uploads/references/published-assessments/Brochures/brochure_lre_colombia_v_2.0.pdf) - -Files provided by Andrés Etter -()- Alaska to Patagonia project - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecosystems/regional/Colombia -cd $GISDATA/ecosystems/regional/Colombia - -## -``` - -Original projection in WGS_1984_UTM_Zone_18N, o EPSG 32618 - -```sh -ogrinfo -al -geom=NO EcoOri_12052015_2014_TodosCriterios.shp | less - - -``` -This gets the data in the original projection and promoted to multi-geometry - -```sh - - psql gisdata jferrer -c "CREATE SCHEMA colombia_rle" - ## exclude shape_area column to avoid column precision error -ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -nlt PROMOTE_TO_MULTI -lco SCHEMA=ecocolombia $GISDATA/ecosistemas/RLEDB/Colombia/EcoOri_12052015_2014_TodosCriterios.shp -sql "SELECT COD, A1P, A1E, A2aP, A2aE, A2bP, A2bE, A3P, A3E, C2, D2, B1ai, B1aiiV1, B1aiiV2, B1aiii, B2ai, B2aiiV1, B2aiiV2, B2aiii, C2Precp, EvFinal FROM EcoOri_12052015_2014_TodosCriterios" - - -``` - -#### Crosswalk - -We checked the file `GETcrosswalk_Colombia_AEtter.xlsx` - -```sh -cp ~/proyectos/UNSW/ecosphere-db/input/xwalks/GETcrosswalk_Colombia_AEtter.xlsx $GISDATA/ecosistemas/RLEDB/Colombia -``` - -Run `R --vanilla`: - -```{r} -require(gdata) -require(dplyr) -require(readxl) -require(tidyr) -require("RPostgreSQL") - -gis.data <- Sys.getenv("GISDATA") - -XW <- read_excel(sprintf("%s/ecosistemas/RLEDB/Colombia/GETcrosswalk_Colombia_AEtter.xlsx",gis.data),sheet=3) %>% select(1:51) -colnames(XW)[2] <- "fullcode" - -XW %>% pivot_longer(cols=3:51, names_to = "EFG name", values_to = "membership") %>% filter(!is.na(membership)) %>% mutate(code=gsub("^[A-Za-z_]+-","",fullcode),EFG=gsub(" ","",gsub("(^[A-Za-z 0-9]+.[0-9]+)[A-Za-z -,/-]+","\\1",`EFG name`))) -> rslt - -drv <- dbDriver("PostgreSQL") ## remember to update .pgpass file -con <- dbConnect(drv, dbname = "gisdata", port = 5432,user = "jferrer", - host = ifelse( system("hostname -s",intern=T)=="terra","localhost","terra.ad.unsw.edu.au")) - -rslts <- dbWriteTable(con,c("ecocolombia","iucnget_xwalk"),rslt) -dbDisconnect(con) -``` - -Now we can make some queries in `psql`: - -```sql -select cod,evfinal,ST_Area(wkb_geometry),ST_Centroid(wkb_geometry) from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T1.3'); -select cod,evfinal,ST_Centroid(wkb_geometry) from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T6.1'); -select cod,evfinal,ST_Centroid(wkb_geometry) from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T6.5'); - -select fullcode,cod,EFG from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T6.5'); - -``` diff --git a/doc/ecosystems/regional/EU-RLH.md b/doc/ecosystems/regional/EU-RLH.md deleted file mode 100644 index 0523b9d..0000000 --- a/doc/ecosystems/regional/EU-RLH.md +++ /dev/null @@ -1,16 +0,0 @@ -# European Red List of habitats data deliverables - -https://forum.eionet.europa.eu/european-red-list-habitats/library/project-deliverables-data - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/ecosystems/regional/EU-RLH -cd $GISDATA/ecosystems/regional/EU-RLH - -wget --continue https://forum.eionet.europa.eu/european-red-list-habitats/library/project-deliverables-data/geodatabases/zip_export/do_export --output-document=geodatabases.zip - -unzip -u geodatabases.zip -# for some obscure reason this is read-protected -chmod 740 Geodatabases/* -chmod 640 Geodatabases/*/*.* -``` diff --git a/doc/ecosystems/regional/Ecosystem-types-Europe.md b/doc/ecosystems/regional/Ecosystem-types-Europe.md deleted file mode 100644 index a7315f3..0000000 --- a/doc/ecosystems/regional/Ecosystem-types-Europe.md +++ /dev/null @@ -1,50 +0,0 @@ -# Ecosystem types of Europe - -> The dataset combines the Copernicus land service portfolio and marine bathymetry and seabed information with the non-spatial EUNIS habitat classification for a better biological characterization of ecosystems across Europe. As such it represents probabilities of EUNIS habitat presence for each MAES ecosystem type. - -> European Commision Technical report – 2016 – 095; Mapping and Assessment of Ecosystems and their Services — Mapping and assessing the condition of Europe's ecosystems: progress and challenges — 3rd Report – Final, March 2016 https://www.eea.europa.eu/data-and-maps/data/ecosystem-types-of-europe-1 - -http://cmshare.eea.europa.eu/s/KscZR3EcKrGmPbK/download - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/ecosystems/regional/MAES -cd $GISDATA/ecosystems/regional/MAES - -wget --continue http://cmshare.eea.europa.eu/s/KscZR3EcKrGmPbK/download --output-document="Ecosystem types of Europe - version 3.1 Full map.zip" -``` - - - -```sh -cd $GISDATA/ecosystems/regional/MAES -unzip -u Ecosystem\ types\ of\ Europe\ -\ version\ 3.1\ Full\ map.zip - -dbfdump Ecosystem\ types\ of\ Europe\ -\ version\ 3.1\ Full\ map/eea_r_3035_100_m_etm-full_2012_v3-1_r00.tif.vat.dbf - - -``` - -```{r} -require(foreign) -require(raster) -r0 <- raster(dir(sprintf("%s/ecosystems/regional/MAES/Ecosystem types of Europe - version 3.1 Full map",gis.data),pattern='tif$',full.names = T)) - -EUNIS.table <- read.dbf(dir(sprintf("%s/ecosystems/regional/MAES/Ecosystem types of Europe - version 3.1 Full map",gis.data),pattern='dbf$',full.names = T)) - -``` - -F - Heathland, scrub and tundra -30 7810607.00000000000 F1 Tundra -31 8550877.00000000000 F2 Arctic, alpine and subalpine scrub - 32 5448621.00000000000 F3 Temperate and mediterranean-montane scrub - 33 411768.00000000000 F4 Temperate shrub heathland - 34 4996471.00000000000 F5 Maquis, arborescent matorral and thermo-Mediterranean brushes - 35 1070059.00000000000 F6 Garrigue - 36 1791083.00000000000 F7 Spiny Mediterranean heaths (phrygana, hedgehog-heaths and related coastal cliff vegetation) - 37 95399.00000000000 F8 Thermo-Atlantic xerophytic scrub - 38 10687.00000000000 F9 Riverine and fen scrubs - 40 6371004.00000000000 FB Shrub plantations diff --git a/doc/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md b/doc/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md deleted file mode 100644 index f0780a5..0000000 --- a/doc/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md +++ /dev/null @@ -1,23 +0,0 @@ -# Map of the terrestrial ecosystems of Myanmar, Version 1.0 - -## Citation for this map - -> Murray, Nicholas; Keith, David A.; TIzard, Robert; Duncan, Adam; Htut, Win Thuya; Hlaing, Nyan; et al. (2020): Map of the terrestrial ecosystems of Myanmar, Version 1.0. figshare. Dataset. https://doi.org/10.6084/m9.figshare.12364067.v3 - -> Murray, N.J., Keith, D.A., Tizard, R., Duncan, A., Htut, W.T., Hlaing, N., Oo, A.H., Ya, K.Z., Grantham, H. (2020) Threatened Ecosystems of Myanmar. An IUCN Red List of Ecosystems Assessment. Version 1.0. Wildlife Conservation Society. ISBN: 978-0-9903852-5-7. - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/ecosystems/regional/Myanmar -cd $GISDATA/ecosystems/regional/Myanmar - -wget --continue https://ndownloader.figshare.com/files/24190931 --output-document=MMR_EcosystemsMap.zip - - -unzip -u MMR_EcosystemsMap.zip - -ogrinfo MMR_EcosystemsMap_v1_1.shp -al -geom=no - -``` diff --git a/doc/fire/global/Global-Fire-Emission-Database.md b/doc/fire/global/Global-Fire-Emission-Database.md deleted file mode 100644 index 14aaa73..0000000 --- a/doc/fire/global/Global-Fire-Emission-Database.md +++ /dev/null @@ -1,30 +0,0 @@ -# Global Fire Emissions Database, Version 4.1 (GFEDv4) - -#### Citation - -> Randerson, J.T., G.R. van der Werf, L. Giglio, G.J. Collatz, and P.S. Kasibhatla. 2017. Global Fire Emissions Database, Version 4.1 (GFEDv4). ORNL DAAC, Oak Ridge, Tennessee, USA. https://doi.org/10.3334/ORNLDAAC/1293 - -#### Documentation - -https://daac.ornl.gov/VEGETATION/guides/fire_emissions_v4_R1.html - -#### Data availability - -Sign in to ORNL DAAC -https://daac.ornl.gov/cgi-bin/dsviewer.pl?ds_id=1293 - - - -#### Data preparation - - -```sh - -mkdir -p $GISDATA/fire/GFEDv4 -cd $GISDATA/fire/GFEDv4 -mv ~/Downloads/fire_emissions_v4_R1_1293.zip $GISDATA/fire/GFEDv4 - -cd $WORKDIR - unzip $GISDATA/fire/GFEDv4/fire_emissions_v4_R1_1293.zip - -``` diff --git a/doc/fire/global/Modis-burned-area.md b/doc/fire/global/Modis-burned-area.md deleted file mode 100644 index e0f9bbc..0000000 --- a/doc/fire/global/Modis-burned-area.md +++ /dev/null @@ -1,72 +0,0 @@ -Burned Area Products (MCD64A1) -Global fire location product (MCD14ML) - - -The latest version (Collection 6.1) of the MODIS Global Burned Area Product was released in 2017. - -http://modis-fire.umd.edu/ba.html - -MODIS Burned Area Product User's Guide at -http://modis-fire.umd.edu/files/MODIS_C6_Fire_User_Guide_B.pdf -https://modis-fire.umd.edu/files/MODIS_C61_BA_User_Guide_1.1.pdf - -MODIS Collection 6 and Collection 6.1 Active Fire Product User's Guide v1.0 (May 2021): -https://modis-fire.umd.edu/files/MODIS_C6_C6.1_Fire_User_Guide_1.0.pdf - - -```sh - -mkdir -p $GISDATA/fire/global/MCD64A1/HDF -cd $GISDATA/fire/global/MCD64A1/HDF - -touch ~/.wgetrc -## user and password from user guide (chapter 4) -echo "user=XXXX" > ~/.wgetrc -echo "password=XXXX" >> ~/.wgetrc - -SRV=fuoco.geog.umd.edu -VRS=C61 -PRD=MCD64A1 - -mkdir -p $GISDATA/fire/global/MCD64A1/HDF/ -cd $GISDATA/fire/global/MCD64A1/HDF/ - -sftp fire@fuoco.geog.umd.edu -cd data/MODIS/C61/MCD64A1/HDF/ -lmkdir h30v12 -lmkdir h29v12 -lmkdir h29v13 -lmkdir h28v13 - -lcd ../h30v12 -get h30v12/MCD64A1.A2014* -lcd ../h29v12 -get h29v12/MCD64A1.A2014* -lcd ../h29v13 -get h29v13/MCD64A1.A2014* -lcd ../h28v13 -get h28v13/MCD64A1.A2014* -bye - -rm ~/.wgetrc - -``` - - - -```sh -mkdir -p $GISDATA/fire/global/MCD14ML/ -cd $GISDATA/fire/global/MCD14ML/ -sftp fire@fuoco.geog.umd.edu -cd data/MODIS/C6/MCD14ML -ls MCD14ML.200* -progress -get -p MCD14ML.200* -get -p MCD14ML.202* -get -p MCD14ML.201* - - - - -``` - diff --git a/doc/fire/global/sensores_Modis_FIRMS.sh b/doc/fire/global/sensores_Modis_FIRMS.sh deleted file mode 100644 index 9cea18e..0000000 --- a/doc/fire/global/sensores_Modis_FIRMS.sh +++ /dev/null @@ -1,89 +0,0 @@ -## modis burned area -##http://modis-fire.umd.edu/BA_getdata.html -##active fires -##ftp://fuoco.geog.umd.edu/ ## user fire, passwd burnt -## o mejor la página de FIRMS -## https://earthdata.nasa.gov/data/near-real-time-data/firms/active-fire-data - -mkdir -p ~/sensores/Modis/FIRMS -cd ~/sensores/Modis/FIRMS - -## alli consultamos https://firms.modaps.eosdis.nasa.gov/download/request.php -## y llenamos el formulario -## -74 -58 0 13 -##Area of Interest: Custom Polygon (View Map) -##Date Range: 2004-01-01 TO 2004-12-31 -##Data Format: shp -##Request Date: 2014-04-04 21:23:50 -##cd ~/CEBA/data/gisdata/FIRMS -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114461396662301_MCD14ML.zip - - -## Area of Interest: Custom Polygon (View Map) -## Date Range: 2005-01-01 TO 2005-12-31 -## Data Format: shp -## Request Date: 2014-04-05 07:02:55 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114481396698301_MCD14ML.zip - -## Area of Interest: Custom Polygon (View Map) -## Date Range: 2000-01-01 TO 2000-12-31 -## Data Format: shp -## Request Date: 2014-04-06 18:42:39 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114571396824306_MCD14ML.zip - -## Date Range: 2001-01-01 TO 2001-12-31 -## Request Date: 2014-04-06 19:00:14 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114581396827901_MCD14ML.zip - - -##Date Range: 2002-01-01 to 2002-12-31 -##Date of Request: 2014-09-15 12:03:24 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms150621410799501_MCD14ML.zip - -##Date Range: 2003-01-01 TO 2003-12-31 -##Request Date: 2014-09-15 16:18:12 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms150821410814100_MCD14ML.zip - -##Date Range: 2006-01-01 TO 2006-12-31 -##Request Date: 2014-09-15 17:09:43 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms150831410817502_MCD14ML.zip - - -## Date Range: 2007-01-01 TO 2007-12-31 -## Request Date: 2015-01-27 10:24:22 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182491422373753_MCD14ML.zip -## Date Range: 2008-01-01 TO 2008-12-31 -## Request Date: 2015-01-27 10:29:03 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182501422373770_MCD14ML.zip - -## Date Range: 2009-01-01 TO 2009-12-31 -## Request Date: 2015-01-27 11:00:26 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182531422377101_MCD14ML.zip - -##Date Range: 2010-01-01 TO 2010-12-31 -## Request Date: 2015-01-27 11:02:04 -wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182541422377112_MCD14ML.zip - -## Date Range: 2011-01-01 TO 2011-12-31 -## Request Date: 2015-01-27 11:03:04 -wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182551422377124_MCD14ML.zip -wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms183431422636301_MCD14ML.zip - -##Date Range: 2012-01-01 TO 2012-12-31 -## Request Date: 2015-01-27 13:32:35 -wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182651422384301_MCD14ML.zip -##Date Range: 2013-01-01 TO 2013-12-31 -## Request Date: 2015-01-27 13:34:23 -wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182661422384314_MCD14ML.zip -##Date Range: 2014-01-01 TO 2014-12-31 -## Request Date: 2015-01-27 13:35:57 -wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182671422384327_MCD14MDT.zip - -##Date Range: 2015-01-01 to 2015-12-31 -##Date of Request: 2016-03-16 10:00:38 -wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms315181458124226_MCD14DT.zip -##Date Range: 2016-01-01 to 2016-03-16 -##Date of Request: 2016-03-16 10:03:10 -wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms315171458124201_MCD14ML.zip -############### -## diff --git a/doc/fire/regional/Fire-Australia-Forest.md b/doc/fire/regional/Fire-Australia-Forest.md deleted file mode 100644 index 9179042..0000000 --- a/doc/fire/regional/Fire-Australia-Forest.md +++ /dev/null @@ -1,29 +0,0 @@ -# Fires in Australia's forests - -## 2019-2020 - -https://www.awe.gov.au/abares/forestsaustralia/forest-data-maps-and-tools/fire-data#fire-area-and-area-of-forest-in-fire-area-by-jurisdiction - -## 2011–16 (2018) - -https://data.gov.au/data/dataset/fires-in-australia-s-forests-2011-16-2018 - -Continental spatial dataset of the extent and frequency of planned and unplanned fires occurring in forest in the five financial years between July 2011 and June 2016, assembled for Australia's State of the Forests Report 2018. - -https://www.agriculture.gov.au/abares/forestsaustralia/sofr/sofr-2018 - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - - - -mkdir -p $GISDATA/fire/regional/australia-forest-fire-2011-16 -cd $GISDATA/fire/regional/australia-forest-fire-2011-16 -wget --continue https://data.gov.au/dataset/c0cd6f5a-6b0f-4cd0-8980-1ca5b2c31006/resource/e99002e3-05b5-4a4f-8c1c-823d1b3e9713/download/fire_publish.zip - -wget --continue https://www.awe.gov.au/sites/default/files/abares/forestsaustralia/documents/datasets/sofr2018/fire_publish.zip - -unzip fire_publish.zip - -``` diff --git a/doc/ocean/global/OceanColorData.md b/doc/ocean/global/OceanColorData.md deleted file mode 100644 index 5518336..0000000 --- a/doc/ocean/global/OceanColorData.md +++ /dev/null @@ -1,23 +0,0 @@ - -Let's try these -https://oceandata.sci.gsfc.nasa.gov/directdataaccess/Level-3%20Mapped/Terra-MODIS/1999/355/ - -Download instructions here: https://oceancolor.gsfc.nasa.gov/data/download_methods/ - -Login details for earthdata in ~/.netrc as follow: - -```sh -echo "machine urs.earthdata.nasa.gov login USERNAME password PASSWD" > ~/.netrc ; > ~/.urs_cookies -chmod 0600 ~/.netrc -``` -where USERNAME and PASSWD are your Earthdata Login credentials. - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/ocean/global/OceanColorData -cd $GISDATA/ocean/global/OceanColorData - -wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --auth-no-challenge=on --content-disposition https://oceandata.sci.gsfc.nasa.gov/ob/getfile/TERRA_MODIS.19991221_20000320.L3m.SNWI.SST4.sst4.9km.nc -wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --auth-no-challenge=on --content-disposition https://oceandata.sci.gsfc.nasa.gov/ob/getfile/AQUA_MODIS.20020101_20021231.L3m.YR.SST4.sst4.9km.nc - -``` diff --git a/doc/plant-traits/global/TRY-database.md b/doc/plant-traits/global/TRY-database.md deleted file mode 100644 index ae961ce..0000000 --- a/doc/plant-traits/global/TRY-database.md +++ /dev/null @@ -1,14 +0,0 @@ - - -Kattge, J, Boenisch, G, Diaz, S, et al. TRY plant trait database - enhanced coverage and open access. Glob Change Biol. 2020; 26: 119-188. https://doi.org/10.1111/gcb.14904 - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - -mkdir -p $GISDATA/plant-traits/global/TRY-Plant-traits -cd $GISDATA/plant-traits/global/TRY-Plant-traits - - - -``` diff --git a/doc/plant-traits/global/TRY-leaf-trait-maps-2018.md b/doc/plant-traits/global/TRY-leaf-trait-maps-2018.md deleted file mode 100644 index e47621b..0000000 --- a/doc/plant-traits/global/TRY-leaf-trait-maps-2018.md +++ /dev/null @@ -1,39 +0,0 @@ -Reference for publication -Moreno-Martínez, Á., Camps-Valls, G., Kattge, J., Robinson, N., Reichstein, M., Bodegom, P. V., Kramer, K., Cornelissen, J. H. C., Reich, P. B., Bahn, M., Niinemets, Ü., Peñuelas, J., Craine, J., Cerabolini, B., Minden, V., Laughlin, D. C., Sack, L., Allred, B., Baraloto, C., Byun, C., Soudzilovskaia, N. A., Running, S. W. (2018). A methodology to derive global maps of leaf traits using remote sensing and climate data. Remote Sensing of Environment, 218, 69-88. https://doi.org/10.1016/j.rse.2018.09.006 - -Reference to data package: Moreno-Martínez, Á., Camps-Valls, G., Kattge, J., Robinson, N., Reichstein, M., Bodegom, P. V., Running, S. W. (2020) Global maps of leaf traits at 3km resolution. TRY File Archive https://www.try-db.org/TryWeb/Data.php#59 -DOI: 10.17871/TRY.59 - -Reference to data package: Moreno-Martínez, Á., Camps-Valls, G., Kattge, J., Robinson, N., Reichstein, M., Bodegom, P. V., Running, S. W. (2020) Global maps of leaf traits at 1km resolution. TRY File Archive https://www.try-db.org/TryWeb/Data.php#60 -DOI: 10.17871/TRY.60 - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/plant-traits/global/TRY-leaf-trait-maps/ -cd $GISDATA/plant-traits/global/TRY-leaf-trait-maps/ - -## need to update request to get correct link -wget -b --continue https://www.try-db.org/tmpdnld/Try2021343953Global_trait_maps_vs2_3km_res.zip - -wget --continue https://www.try-db.org/tmpdnld/Try20213431213Global_trait_maps_vs2_1km_res.zip - -``` - -```sh -cd $WORKDIR -unzip $GISDATA/species-traits/TRY-leaf-trait-maps/Try2021343953Global_trait_maps_vs2_3km_res.zip -ls Global_trait_maps_Moreno_Martinez_2018_Version2_3km_resolution/ -unzip Global_trait_maps_Moreno_Martinez_2018_Version2_3km_resolution/SLA_3km_v1.zip - -``` - -```r - require(raster) - -r0 <- raster("SLA_3km_v1.tif") -values(r0)[values(r0)<0] <- NA -plot(r0) - -``` diff --git a/doc/radiation/global/glUV-B.md b/doc/radiation/global/glUV-B.md deleted file mode 100644 index d925b85..0000000 --- a/doc/radiation/global/glUV-B.md +++ /dev/null @@ -1,42 +0,0 @@ -# glUV: a global UV‐B radiation data set - -[Webpage](https://www.ufz.de/gluv/) - -#### Citation -> Beckmann M., Václavík T., Manceur A.M., Šprtová L., von Wehrden H., Welk E., Cord A.F. (2014) glUV: A global UV-B radiation dataset for macroecological studies, Methods in Ecology and Evolution, 5: 372–383. doi: 10.1111/2041-210X.12168 - - -#### Data access - -Data available on-line at https://www.ufz.de/gluv/index.php?en=32435 - -#### Data download and preparation - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/radiation/global/glUV -cd $GISDATA/radiation/global/glUV - -export BASEURL=https://www.ufz.de/export/data/443 - -for VAR in 56459_UVB1_Annual_Mean_UV-B.asc 56460_UVB2_UV-B_Seasonality.asc 56461_UVB3_Mean_UV-B_of_Highest_Month.asc 56462_UVB4_Mean_UV-B_of_Lowest_Month.asc 56463_UVB5_Sum_of_UV-B_Radiation_of_Highest_Quarter.asc 56464_UVB6_Sum_of_UV-B_Radiation_of_Lowest_Quarter.asc -do - echo $VAR - curl -C - -O ${BASEURL}/${VAR} -done - -for VAR in 56465_glUV_January_monthly_mean.asc 56466_glUV_February_monthly_mean.asc 56467_glUV_March_monthly_mean.asc 56468_glUV_April_monthly_mean.asc 56468_glUV_April_monthly_mean.asc 56469_glUV_May_monthly_mean.asc 56470_glUV_June_monthly_mean.asc 56471_glUV_July_monthly_mean.asc 56472_glUV_August_monthly_mean.asc 56473_glUV_September_monthly_mean.asc 56474_glUV_October_monthly_means.asc 56475_glUV_November_monthly_means.asc 56476_glUV_December_monthly_means.asc -do - curl -C - -O ${BASEURL}/${VAR} -done - -tar -cjvf glUV-files.tar.bz2 *asc - -rm *asc - - - -``` diff --git a/doc/soil/global/COPERNICUS-SWI.md b/doc/soil/global/COPERNICUS-SWI.md deleted file mode 100644 index 38d206a..0000000 --- a/doc/soil/global/COPERNICUS-SWI.md +++ /dev/null @@ -1,14 +0,0 @@ -## Soil Water Index - -Available from the [Copernicus Global Land Service](https://land.copernicus.eu/global/products/swi). Need to log in to VITO COPERNICUS GLOBAL LAND DATA ,search for the SWI product at global scale, with 0.1 degree or 12.5km resolution, based on SSM observations from MetOp-ASCAT. Then place an order for the data set, download link from the order e-mail. [User manual](https://land.copernicus.eu/global/sites/cgls.vito.be/files/products/CGLOPS1_PUM_SWIV3-SWI10-SWI-TS_I2.60.pdf) - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/soil/global/COPERNICUS-SWI -cd $GISDATA/soil/global/COPERNICUS-SWI - -wget --user=$COPERNICUSUSR --password=$COPERNICUSPWD ftp://ftp.copernicus.vgt.vito.be/C0061185/SWI_TS_201906300000_ASCAT_V3.0.1/ -wget --user=$COPERNICUSUSR --password=$COPERNICUSPWD --continue --force-html -i index.html - -``` diff --git a/doc/soil/global/Global-permafrost-zonation.md b/doc/soil/global/Global-permafrost-zonation.md deleted file mode 100644 index 5232167..0000000 --- a/doc/soil/global/Global-permafrost-zonation.md +++ /dev/null @@ -1,31 +0,0 @@ -# Global Permafrost Zonation Index Map - -http://www.geo.uzh.ch/microsite/cryodata/pf_global/ - -#### Citation -> Gruber, S. 2012: *Derivation and analysis of a high-resolution estimate of global permafrost zonation*, **The Cryosphere**, 6, 221-233. doi:[10.5194/tc-6-221-2012](http://www.the-cryosphere.net/6/221/) - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/soil/global/permafrost -cd $GISDATA/soil/global/permafrost - -wget --continue http://www.geo.uzh.ch/microsite/cryodata/pf_global/PF_global_ArcGIS.tar -wget --continue http://www.geo.uzh.ch/microsite/cryodata/pf_global/PZI.flt -wget --continue http://www.geo.uzh.ch/microsite/cryodata/pf_global/PZI.hdr -``` - - -```sh -module add python/3.8.3 perl/5.28.0 geos gdal/3.2.1 -gdalinfo PZI.flt -``` - - -```{r} -require(raster) -r0 <- raster("/srv/scratch/cesdata/gisdata/soil/global/permafrost/PZI.flt") - -``` diff --git a/doc/soil/global/HWSD-v1.2.md b/doc/soil/global/HWSD-v1.2.md deleted file mode 100644 index cdb5f9b..0000000 --- a/doc/soil/global/HWSD-v1.2.md +++ /dev/null @@ -1,52 +0,0 @@ -# HWSD-v1.2 - -Harmonized World Soil Database, version 1.2. Raster database with harmonized soil property data. - -http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/ - -## Citation -> Fischer, G., F. Nachtergaele, S. Prieler, H.T. van Velthuizen, L. Verelst, D. Wiberg, 2008. Global Agro-ecological Zones Assessment for Agriculture (GAEZ 2008). IIASA, Laxenburg, Austria and FAO, Rome, Italy. - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/soil/global/HWSD-v1.2 -cd $GISDATA/soil/global/HWSD-v1.2 - -for layer in sq1 sq2 sq3 sq4 sq5 sq6 sq7 -do - wget --continue https://www.fao.org/fileadmin/user_upload/soils/docs/HWSD/Soil_Quality_data/${layer}.asc -done - -for layer in HWSD_RASTER HWSD -do - wget --continue https://www.fao.org/fileadmin/user_upload/soils/HWSD%20Viewer/${layer}.zip -done -wget https://www.fao.org/docrep/018/aq361e/aq361e.pdf -unzip -u HWSD_RASTER.zip - -unzip -u HWSD.zip -``` - -Raster maps: - -sq1.asc Nutrient availability -sq2.asc Nutrient retention capacity -sq3.asc Rooting conditions -sq4.asc Oxygen availability to roots -sq5.asc Excess salts. -sq6.asc Toxicity -sq7.asc Workability (constraining field management) - -Note that the classes used in the Soil Quality evaluation are: - -1: No or slight limitations -2: Moderate limitations -3: Sever limitations -4: Very severe limitations -5: Mainly non-soil -6: Permafrost area -7: Water bodies - -> Remember that classes are qualitative not quantitative. Only classes 1 to 4 are corresponding to an assessment of soil limitations for plant growth. Class 1 is generally rated between 80 and 100% of the growth potential, class 2 between 60 and 80%, class 3 between 40 and 60%, and class 4 less than 40%. diff --git a/doc/soil/global/isric-soil-grids.md b/doc/soil/global/isric-soil-grids.md deleted file mode 100644 index d304a4b..0000000 --- a/doc/soil/global/isric-soil-grids.md +++ /dev/null @@ -1,106 +0,0 @@ -# ISRIC SoilGrids - -SoilGrids — global gridded soil information -A system for digital soil mapping based on global compilation of soil profile data and environmental layers - -> SoilGridsTM (hereafter SoilGrids) is a system for global digital soil mapping that uses state-of-the-art machine learning methods to map the spatial distribution of soil properties across the globe. SoilGrids prediction models are fitted using over 230 000 soil profile observations from the WoSIS database and a series of environmental covariates. Covariates were selected from a pool of over 400 environmental layers from Earth observation derived products and other environmental information including climate, land cover and terrain morphology. The outputs of SoilGrids are global soil property maps at six standard depth intervals (according to the GlobalSoilMap IUSS working group and its specifications) at a spatial resolution of 250 meters. Prediction uncertainty is quantified by the lower and upper limits of a 90% prediction interval. The additional uncertainty layer displayed at soilgrids.org is the ratio between the inter-quantile range and the median. The SoilGrids maps are publicly available under the CC-BY 4.0 License. - -Maps of the following soil properties are available: pH, soil organic carbon content, bulk density, coarse fragments content, sand content, silt content, clay content, cation exchange capacity (CEC), total nitrogen as well as soil organic carbon density and soil organic carbon stock. - - - -www.globalsoilmap.net -https://www.isric.org/projects/globalsoilmapnet -https://www.isric.org/explore/soilgrids - -https://git.wur.nl/isric/soilgrids/soilgrids.notebooks/activity - - -## Citation -> Poggio, L., de Sousa, L. M., Batjes, N. H., Heuvelink, G. B. M., Kempen, B., Ribeiro, E., and Rossiter, D.: SoilGrids 2.0: producing soil information for the globe with quantified spatial uncertainty, SOIL, 7, 217–240, 2021. DOI - -## Data access and preparation - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/soil/global/ISRIC-SoilGrids -cd $GISDATA/soil/global/ISRIC-SoilGrids - -module add python/3.9.9 perl geos gdal/3.2.1 - -IGH="+proj=igh +lat_0=0 +lon_0=0 +datum=WGS84 +units=m +no_defs" # proj string for Homolosine projection -SG_URL="/vsicurl?max_retry=3&retry_delay=1&list_dir=no&url=https://files.isric.org/soilgrids/latest/data" -CELL_SIZE="250 250" - -``` - -Detailed instructions here: - -https://git.wur.nl/isric/soilgrids/soilgrids.notebooks/-/blob/master/markdown/webdav_from_bash.md - -> To local VRT in homolosine (directly from the webdav connection) -> The first step is to obtain a VRT for the area of interest in the Homolosine projection. We suggest to use VRT for the intermediate steps to save space and computation times. -```{bash} -gdal_translate -of VRT -tr $CELL_SIZE -co "TILED=YES" -co "COMPRESS=DEFLATE" -co "PREDICTOR=2" -co "BIGTIFF=YES" \ - $SG_URL"/ocs/ocs_0-30cm_mean.vrt" "ocs_0-5cm_mean.vrt" -``` - -> To a VRT in, for example, LatLong -> The following command will generate a VRT in the projection of your choice: - -```{bash} -gdalwarp -overwrite -t_srs EPSG:4326 -of VRT "ocs_0-5cm_mean.vrt" "ocs_0-5cm_mean_4326.vrt" -``` - -> To a final Geotiff ->The following command will generate a Geotiff in the projection of your choice for the area of interest defined above - -```{bash} -gdal_translate ocs_0-5cm_mean_4326.vrt ocs_0-5cm_mean_4326.tif \ - -co "TILED=YES" -co "COMPRESS=DEFLATE" -co "PREDICTOR=2" -co "BIGTIFF=YES" -``` - -List of variables: bdod cec cfvo clay nitrogen ocd ocs phh2o sand silt soc wrb # landmask -Depths: 0-5cm 5-15cm 15-30cm 30-60cm 60-100cm 100-200cm -stats: mean uncertainty Q0.05 Q0.5 Q0.95 - -We prepared a PBS script to download and reproject several layers: - -```{bash} -source ~/proyectos/UNSW/cesdata/env/project-env.sh -cd $WORKDIR -echo "bdod -cec -cfvo -clay -nitrogen -ocd -ocs -phh2o -sand -silt -soc -wrb" > $GISDATA/soil/global/ISRIC-SoilGrids/varlist - -qsub -l select=1:ncpus=2:mem=60gb,walltime=20:00:00 -J 1-3 $SCRIPTDIR/inc/pbs/download-soilgrids-from-vrt.pbs -qsub -l select=1:ncpus=2:mem=80gb,walltime=20:00:00 -J 4-7 $SCRIPTDIR/inc/pbs/download-soilgrids-from-vrt.pbs -qsub -l select=1:ncpus=2:mem=100gb,walltime=20:00:00 -J 8-12 $SCRIPTDIR/inc/pbs/download-soilgrids-from-vrt.pbs - -``` - - - -https://git.wur.nl/isric/soilgrids/soilgrids.notebooks/-/blob/master/markdown/webdav_from_R.md - -```{r} -library(rgdal) -library(gdalUtils) -igh='+proj=igh +lat_0=0 +lon_0=0 +datum=WGS84 +units=m +no_defs' # proj string for Homolosine projection - -sg_url="/vsicurl?max_retry=3&retry_delay=1&list_dir=no&url=https://files.isric.org/soilgrids/latest/data/" -gdal_translate(paste0(sg_url,'ocs/ocs_0-30cm_mean.vrt'), - "./crop_roi_igh_r.tif", - verbose=TRUE) - -``` diff --git a/doc/soil/regional/Circum-arctic-permafrost.md b/doc/soil/regional/Circum-arctic-permafrost.md deleted file mode 100644 index a67a108..0000000 --- a/doc/soil/regional/Circum-arctic-permafrost.md +++ /dev/null @@ -1,45 +0,0 @@ -# Raster Circumpolar Arctic Permafrost and Ground Ice Conditions - -#### Citation -> Brown, J., O. Ferrians, J. A. Heginbottom, and E. Melnikov. 2002. Circum-Arctic Map of Permafrost and Ground-Ice Conditions, Version 2. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/. [Date Accessed]. - - -#### Data access - -Circum-Arctic Map of Permafrost and Ground-Ice Conditions, Version 2 -Data Set ID: GGD318 -https://nsidc.org/data/GGD318/versions/2 - -FTP: ftp://sidads.colorado.edu/pub/DATASETS/fgdc/ggd318_map_circumarctic/ - -#### Data download and preparation - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/soil/regional/circumpolar_permafrost -cd $GISDATA/soil/regional/circumpolar_permafrost -wget ftp://sidads.colorado.edu/pub/DATASETS/fgdc/ggd318_map_circumarctic/ -O index -wget -b --continue -i index --force-html - -``` - -Raster file projection is different as the vector files projection. This approach allow to import all files in the same projection, but it gives some errors, and results are hopelessly wrong when transformed to *Plate Carrée*. - -```sh -ogrinfo -al -so permaice.shp - -## This one has better resolution: -gdalwarp nhipa.byte -s_srs "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228.00000 +b=6371228.000 +units=m +no_defs" -t_srs treeline.prj nhipa.tif -##gdalwarp nhipa.byte -s_srs treeline.prj nhipa.tif - -##gdalwarp nlipa.byte -s_srs "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228.00000 +b=6371228.000 +units=m +no_defs" -t_srs treeline.prj nlipa.tif - -## This is coarse scale, geographical coordinates? -##gdalwarp llipa.byte -s_srs "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228.00000 +b=6371228.000 +units=m +no_defs" -t_srs treeline.prj llipa.tif - -gdalinfo nhipa.tif - -``` diff --git a/doc/soil/regional/Soil-australia.md b/doc/soil/regional/Soil-australia.md deleted file mode 100644 index 51cfbe3..0000000 --- a/doc/soil/regional/Soil-australia.md +++ /dev/null @@ -1,41 +0,0 @@ -# Soil and Landscape Grid of Australia -## - -## Available data - -https://www.clw.csiro.au/aclep/soilandlandscapegrid/GetData-DAP.html - -## Data download: - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/soil/regional/soil-landscape-grid-australia -cd $GISDATA/soil/regional/soil-landscape-grid-australia - -for VAR in AWC Bulk-Density Clay Depth_of_Regolith Depth_of_Soil ECEC SOC Sand Silt Total_N Total_P pHc -do - wget ftp://qld.auscover.org.au/tern-soils/Products/National_digital_soil_property_maps/${VAR}/ --output-document=${VAR}.list - grep tif ${VAR}.list >> enlaces -done -wget --continue -i enlaces --force-html - -``` - -File name conventions: https://www.clw.csiro.au/aclep/soilandlandscapegrid/MetaData/ASLG_File_Naming_Conventions.html - - -Can we compress these files? - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/soil/regional/soil-landscape-grid-australia -cd $GISDATA/soil/regional/soil-landscape-grid-australia -gzip SOC_100_200_EV_N_P_AU_TRN_C_20140801.tif ## minimal compression because it is already using LZW - - -``` From ea926861bdd842f4f0e33edbdac755d805889410 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 06:59:54 +1000 Subject: [PATCH 03/23] move markdown documents to docusite --- docusite/docs/admin/_category_.json | 9 + docusite/docs/admin/global/EEZ-borders.md | 23 +++ .../docs/admin/global/TM-World-Borders.md | 15 ++ .../docs/admin/global/World-Bank-Official.md | 21 +++ docusite/docs/anthroposphere/_category_.json | 8 + .../docs/anthroposphere/global/Anthromes.md | 45 +++++ .../anthroposphere/global/Aquastat-v5.0.md | 26 +++ .../global/Earthstats-crops-pastures.md | 19 ++ .../anthroposphere/global/GHSL-settlements.md | 28 +++ .../global/GLAD-GLCLUC-2000-2020.md | 54 ++++++ .../global/GRIP-road-database.md | 11 ++ .../global/Gridded-Livestock-World-2010.md | 26 +++ docusite/docs/anthroposphere/global/HANPP.md | 14 ++ .../anthroposphere/global/Irrigation-areas.md | 13 ++ .../global/Land-Use-2000-consistent.md | 15 ++ .../regional/Plantations-Australia.md | 14 ++ .../docs/biotic-interactions/global/GloBI.md | 16 ++ .../climate-classification/global/GEnS.md | 20 +++ .../global/Holdridge.md | 13 ++ ...\266ppen-Geiger-climate-classification.md" | 56 ++++++ .../climate/global/CHELSA-climatologies.md | 38 ++++ docusite/docs/climate/global/CHIRPS.md | 36 ++++ .../docs/climate/global/CMCC-BioClimInd.md | 35 ++++ docusite/docs/climate/global/CRU-TS.md | 56 ++++++ docusite/docs/climate/global/CliMond.md | 105 +++++++++++ docusite/docs/climate/global/ERA5.md | 42 +++++ docusite/docs/climate/global/GHCN-M.md | 18 ++ docusite/docs/climate/global/Terraclimate.md | 62 +++++++ docusite/docs/climate/global/WorldClim.md | 47 +++++ .../climate/regional/ALA-spatial-layers.md | 13 ++ .../docs/cryosphere/global/Alpine-Biome.md | 21 +++ docusite/docs/cryosphere/global/GlaThiDa.md | 32 ++++ .../global/Global-land-ice-measurements.md | 152 ++++++++++++++++ .../global/Global-river-ice-dataset.md | 38 ++++ .../cryosphere/global/Lake-ice-phenology.md | 43 +++++ .../global/Modis-Snow-Cover-Products.md | 164 ++++++++++++++++++ .../global/Modis-sea-ice-products.md | 44 +++++ .../global/PyGEM-OGGM-Glacier-projections.md | 51 ++++++ .../global/Randolph-Glacier-Inventory.md | 117 +++++++++++++ .../Sea-ice-climatologies-SMMR-SSMIS.md | 114 ++++++++++++ .../docs/cryosphere/global/Sea-ice-index.md | 28 +++ .../global/World-Glacier-Inventory.md | 56 ++++++ .../global/subglacial-lakes-inventory.md | 46 +++++ docusite/docs/cryosphere/regional/CCAMLR.md | 15 ++ .../docs/cryosphere/regional/IPG-Chile.md | 20 +++ .../docs/cryosphere/regional/NGI-Argentina.md | 22 +++ .../global/Ecological-Marine-Units.md | 58 +++++++ docusite/docs/ecological/global/FAO-GEZ.md | 26 +++ .../global/NatureMap-IUCN-habitats.md | 44 +++++ .../docs/ecoregions/global/FEOW-ecoregions.md | 60 +++++++ .../global/Large-Marine-Ecosystems.md | 51 ++++++ .../docs/ecoregions/global/MEOW-ecoregions.md | 67 +++++++ .../ecoregions/global/OneEarth-bioregions.md | 14 ++ .../ecoregions/global/RESOLVE-ecoregions.md | 105 +++++++++++ .../docs/ecoregions/global/TNC-ecoregions.md | 23 +++ .../docs/ecoregions/global/WWF-ecoregions.md | 25 +++ .../regional/Canada-ecoprovinces.md | 43 +++++ docusite/docs/ecoregions/regional/IBRA-v7.md | 20 +++ .../ecosystems/global/EarthEnv-TCF-2021.md | 38 ++++ .../ecosystems/global/Functional-Biomes.md | 7 + .../global/Global-intertidal-change.md | 41 +++++ .../ecosystems/global/WCMC-coral-reefs.md | 23 +++ docusite/docs/ecosystems/global/WCMC-kelp.md | 30 ++++ .../ecosystems/global/WCMC-mangrove-2000.md | 58 +++++++ .../ecosystems/global/WCMC-mangrove-GMW.md | 106 +++++++++++ .../ecosystems/global/WCMC-mangrove-types.md | 66 +++++++ .../docs/ecosystems/global/tidal-flats.md | 4 + .../ecosystems/regional/CAM-ecosystems-map.md | 43 +++++ .../regional/Colombia-Terr-Eco-2015.md | 76 ++++++++ docusite/docs/ecosystems/regional/EU-RLH.md | 16 ++ .../regional/Ecosystem-types-Europe.md | 50 ++++++ .../Myanmar-Terrestrial-Ecosystems.md | 23 +++ .../global/Global-Fire-Emission-Database.md | 30 ++++ .../docs/fire/global/Modis-burned-area.md | 72 ++++++++ .../docs/fire/global/sensores_Modis_FIRMS.sh | 89 ++++++++++ .../fire/regional/Fire-Australia-Forest.md | 29 ++++ docusite/docs/ocean/global/OceanColorData.md | 23 +++ .../docs/plant-traits/global/TRY-database.md | 14 ++ .../global/TRY-leaf-trait-maps-2018.md | 39 +++++ docusite/docs/radiation/global/glUV-B.md | 42 +++++ docusite/docs/soil/global/COPERNICUS-SWI.md | 14 ++ .../soil/global/Global-permafrost-zonation.md | 31 ++++ docusite/docs/soil/global/HWSD-v1.2.md | 52 ++++++ docusite/docs/soil/global/isric-soil-grids.md | 106 +++++++++++ .../soil/regional/Circum-arctic-permafrost.md | 45 +++++ docusite/docs/soil/regional/Soil-australia.md | 41 +++++ 86 files changed, 3605 insertions(+) create mode 100644 docusite/docs/admin/_category_.json create mode 100644 docusite/docs/admin/global/EEZ-borders.md create mode 100644 docusite/docs/admin/global/TM-World-Borders.md create mode 100644 docusite/docs/admin/global/World-Bank-Official.md create mode 100644 docusite/docs/anthroposphere/_category_.json create mode 100644 docusite/docs/anthroposphere/global/Anthromes.md create mode 100644 docusite/docs/anthroposphere/global/Aquastat-v5.0.md create mode 100644 docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md create mode 100644 docusite/docs/anthroposphere/global/GHSL-settlements.md create mode 100644 docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md create mode 100644 docusite/docs/anthroposphere/global/GRIP-road-database.md create mode 100644 docusite/docs/anthroposphere/global/Gridded-Livestock-World-2010.md create mode 100644 docusite/docs/anthroposphere/global/HANPP.md create mode 100644 docusite/docs/anthroposphere/global/Irrigation-areas.md create mode 100644 docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md create mode 100644 docusite/docs/anthroposphere/regional/Plantations-Australia.md create mode 100644 docusite/docs/biotic-interactions/global/GloBI.md create mode 100644 docusite/docs/climate-classification/global/GEnS.md create mode 100644 docusite/docs/climate-classification/global/Holdridge.md create mode 100644 "docusite/docs/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" create mode 100644 docusite/docs/climate/global/CHELSA-climatologies.md create mode 100644 docusite/docs/climate/global/CHIRPS.md create mode 100644 docusite/docs/climate/global/CMCC-BioClimInd.md create mode 100644 docusite/docs/climate/global/CRU-TS.md create mode 100644 docusite/docs/climate/global/CliMond.md create mode 100644 docusite/docs/climate/global/ERA5.md create mode 100644 docusite/docs/climate/global/GHCN-M.md create mode 100644 docusite/docs/climate/global/Terraclimate.md create mode 100644 docusite/docs/climate/global/WorldClim.md create mode 100644 docusite/docs/climate/regional/ALA-spatial-layers.md create mode 100644 docusite/docs/cryosphere/global/Alpine-Biome.md create mode 100644 docusite/docs/cryosphere/global/GlaThiDa.md create mode 100644 docusite/docs/cryosphere/global/Global-land-ice-measurements.md create mode 100644 docusite/docs/cryosphere/global/Global-river-ice-dataset.md create mode 100644 docusite/docs/cryosphere/global/Lake-ice-phenology.md create mode 100644 docusite/docs/cryosphere/global/Modis-Snow-Cover-Products.md create mode 100644 docusite/docs/cryosphere/global/Modis-sea-ice-products.md create mode 100644 docusite/docs/cryosphere/global/PyGEM-OGGM-Glacier-projections.md create mode 100644 docusite/docs/cryosphere/global/Randolph-Glacier-Inventory.md create mode 100644 docusite/docs/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md create mode 100644 docusite/docs/cryosphere/global/Sea-ice-index.md create mode 100644 docusite/docs/cryosphere/global/World-Glacier-Inventory.md create mode 100644 docusite/docs/cryosphere/global/subglacial-lakes-inventory.md create mode 100644 docusite/docs/cryosphere/regional/CCAMLR.md create mode 100644 docusite/docs/cryosphere/regional/IPG-Chile.md create mode 100644 docusite/docs/cryosphere/regional/NGI-Argentina.md create mode 100644 docusite/docs/ecological/global/Ecological-Marine-Units.md create mode 100644 docusite/docs/ecological/global/FAO-GEZ.md create mode 100644 docusite/docs/ecological/global/NatureMap-IUCN-habitats.md create mode 100644 docusite/docs/ecoregions/global/FEOW-ecoregions.md create mode 100644 docusite/docs/ecoregions/global/Large-Marine-Ecosystems.md create mode 100644 docusite/docs/ecoregions/global/MEOW-ecoregions.md create mode 100644 docusite/docs/ecoregions/global/OneEarth-bioregions.md create mode 100644 docusite/docs/ecoregions/global/RESOLVE-ecoregions.md create mode 100644 docusite/docs/ecoregions/global/TNC-ecoregions.md create mode 100644 docusite/docs/ecoregions/global/WWF-ecoregions.md create mode 100644 docusite/docs/ecoregions/regional/Canada-ecoprovinces.md create mode 100644 docusite/docs/ecoregions/regional/IBRA-v7.md create mode 100644 docusite/docs/ecosystems/global/EarthEnv-TCF-2021.md create mode 100644 docusite/docs/ecosystems/global/Functional-Biomes.md create mode 100644 docusite/docs/ecosystems/global/Global-intertidal-change.md create mode 100644 docusite/docs/ecosystems/global/WCMC-coral-reefs.md create mode 100644 docusite/docs/ecosystems/global/WCMC-kelp.md create mode 100644 docusite/docs/ecosystems/global/WCMC-mangrove-2000.md create mode 100644 docusite/docs/ecosystems/global/WCMC-mangrove-GMW.md create mode 100644 docusite/docs/ecosystems/global/WCMC-mangrove-types.md create mode 100644 docusite/docs/ecosystems/global/tidal-flats.md create mode 100644 docusite/docs/ecosystems/regional/CAM-ecosystems-map.md create mode 100644 docusite/docs/ecosystems/regional/Colombia-Terr-Eco-2015.md create mode 100644 docusite/docs/ecosystems/regional/EU-RLH.md create mode 100644 docusite/docs/ecosystems/regional/Ecosystem-types-Europe.md create mode 100644 docusite/docs/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md create mode 100644 docusite/docs/fire/global/Global-Fire-Emission-Database.md create mode 100644 docusite/docs/fire/global/Modis-burned-area.md create mode 100644 docusite/docs/fire/global/sensores_Modis_FIRMS.sh create mode 100644 docusite/docs/fire/regional/Fire-Australia-Forest.md create mode 100644 docusite/docs/ocean/global/OceanColorData.md create mode 100644 docusite/docs/plant-traits/global/TRY-database.md create mode 100644 docusite/docs/plant-traits/global/TRY-leaf-trait-maps-2018.md create mode 100644 docusite/docs/radiation/global/glUV-B.md create mode 100644 docusite/docs/soil/global/COPERNICUS-SWI.md create mode 100644 docusite/docs/soil/global/Global-permafrost-zonation.md create mode 100644 docusite/docs/soil/global/HWSD-v1.2.md create mode 100644 docusite/docs/soil/global/isric-soil-grids.md create mode 100644 docusite/docs/soil/regional/Circum-arctic-permafrost.md create mode 100644 docusite/docs/soil/regional/Soil-australia.md diff --git a/docusite/docs/admin/_category_.json b/docusite/docs/admin/_category_.json new file mode 100644 index 0000000..b1d5fe4 --- /dev/null +++ b/docusite/docs/admin/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "admin", + "position": 4, + "link": { + "type": "generated-index", + "description": + "Just in case you are wondering: admin stands for administrative boundaries. We include here country boundaries and borders, lower administrative units like states and territories, municipalities, other international boundaries like exclusive economic zones, etc." + } +} diff --git a/docusite/docs/admin/global/EEZ-borders.md b/docusite/docs/admin/global/EEZ-borders.md new file mode 100644 index 0000000..d988803 --- /dev/null +++ b/docusite/docs/admin/global/EEZ-borders.md @@ -0,0 +1,23 @@ +# EEZ boundaries + +https://www.marineregions.org/eez.php + +## Citation +> Flanders Marine Institute (2019). Maritime Boundaries Geodatabase: Maritime Boundaries and Exclusive Economic Zones (200NM), version 11. Available online at https://www.marineregions.org/. https://doi.org/10.14284/386 + + ## Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/admin/global/EEZ/ +cd $GISDATA/admin/global/EEZ/ + +# register and download +mv ~/Downloads/World_EEZ_v11_20191118_gpkg.zip $GISDATA/admin/global/EEZ/ + +unzip -u World_EEZ_v11_20191118_gpkg.zip + +module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 proj/7.2.0 + +ogr2ogr -f "GPKG" eez-valid.gpkg World_EEZ_v11_20191118_gpkg/eez_v11.gpkg -nlt PROMOTE_TO_MULTI -makevalid -simplify 0.0001 +``` diff --git a/docusite/docs/admin/global/TM-World-Borders.md b/docusite/docs/admin/global/TM-World-Borders.md new file mode 100644 index 0000000..811330b --- /dev/null +++ b/docusite/docs/admin/global/TM-World-Borders.md @@ -0,0 +1,15 @@ +# thematicmapping World Borders Dataset + +http://thematicmapping.org/downloads/world_borders.php + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/admin/global/TMWB/ +cd $GISDATA/admin/global/TMWB/ + +wget --continue http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip +wget --continue http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip + + unzip -u TM_WORLD_BORDERS-0.3.zip + unzip -u TM_WORLD_BORDERS_SIMPL-0.3.zip +``` diff --git a/docusite/docs/admin/global/World-Bank-Official.md b/docusite/docs/admin/global/World-Bank-Official.md new file mode 100644 index 0000000..97e3c9d --- /dev/null +++ b/docusite/docs/admin/global/World-Bank-Official.md @@ -0,0 +1,21 @@ +# World Bank Official Boundaries + +https://datacatalog.worldbank.org/dataset/world-bank-official-boundaries + + + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + + +mkdir -p $GISDATA/admin/global/World-Bank/ +cd $GISDATA/admin/global/World-Bank/ + +for ARCH in wb_countries_admin0_10m.zip wb_disputed_areas_admin0_10m.zip wb_disputed_areas_admin0_10m.zip wb_adm0_boundary_lines_10m.zip wb_adm0_boundary_lines_disputed_areas_10m.zip wb_coastlines_10m.zip wb_land_10m.zip wb_boundaries.gdb.zip wb_boundaries_geojson_highres.zip wb_boundaries_geojson_lowres.zip wb_boundaries_topojson.zip wb_boundaries_wgs84.zip +do + wget --continue https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/779551/${ARCH} +done + +``` diff --git a/docusite/docs/anthroposphere/_category_.json b/docusite/docs/anthroposphere/_category_.json new file mode 100644 index 0000000..81fb8af --- /dev/null +++ b/docusite/docs/anthroposphere/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "antroposphere", + "position": 4, + "link": { + "type": "generated-index", + "description": "All thing related to human modifications of the environment." + } +} diff --git a/docusite/docs/anthroposphere/global/Anthromes.md b/docusite/docs/anthroposphere/global/Anthromes.md new file mode 100644 index 0000000..c948a29 --- /dev/null +++ b/docusite/docs/anthroposphere/global/Anthromes.md @@ -0,0 +1,45 @@ +# Anthromes maps and datasets + +Data in 5 arc minute global geographic raster grids in .zip files with accompanying metadata. + +Description of source dataset from Ellis et al. (2010) "Global data for human population density and percentage cover by urban, crop and pasture lands at 5′ resolution were obtained using the updated version of the HYDE 3.1 data model (http://www.pbl.nl/hyde), based on Klein Goldewijk & van Drecht (2006). Global 5′ data for rice cover in 2000 were obtained from Monfreda et al. (2008)." + +#### Citation + +> Ellis, E. C., K. Klein Goldewijk, S. Siebert, D. Lightman, and N. Ramankutty. 2010. Anthropogenic transformation of the biomes, 1700 to 2000. Global Ecology and Biogeography 19(5):589-606. [download] +> Klein Goldewijk, K. & van Drecht, G. (2006) HYDE 3: current and historical population and land cover. Integrated modelling of global environmental change. An overview of IMAGE 2.4 (ed. by A.F. Bouwman, T. Kram and K. Klein Goldewijk), pp. 93–111. Netherlands Environmental Assessment Agency (MNP), Bilthoven, The Netherlands. +> Monfreda, C., Ramankutty, N. & Foley, J.A. (2008) Farming the planet: 2. Geographic distribution of crop areas, yields, physi- ological types, and net primary production in the year 2000. Global Biogeochemical Cycles, 22, GB1022. + +#### Data access + +http://ecotope.org/anthromes/v2/data/ + +#### Data preparation + +```sh +mkdir -p $GISDATA/biomas/Anthromes +cd $GISDATA/biomas/Anthromes + +wget --continue http://ecotope.org/files/anthromes/v2/data/input_data/anthromes_2_input_data_ESRI_GRID.zip + +cd $WORKDIR +unzip $GISDATA/biomas/Anthromes/anthromes_2_input_data_ESRI_GRID.zip + + +## Fix geographic limits to 90 (NS) and 180 (EW) +for k in cult irrig past rice urban +do + gdalwarp -te -180 -90 180 90 $WORKDIR/2000/p_${k}/ Anthromes_p_${k}.tif +done + +grass --text -c Anthromes_p_${k}.tif $GISDB/raw/Anthromes + +for k in cult irrig past rice urban +do + r.in.gdal input=Anthromes_p_${k}.tif output=p_${k} +done + +rm -r 1700 1800 1900 2000 methods_smaller.jpg Readme.txt +rm Anthromes*tif +exit +``` diff --git a/docusite/docs/anthroposphere/global/Aquastat-v5.0.md b/docusite/docs/anthroposphere/global/Aquastat-v5.0.md new file mode 100644 index 0000000..b012534 --- /dev/null +++ b/docusite/docs/anthroposphere/global/Aquastat-v5.0.md @@ -0,0 +1,26 @@ +# Global Map of Irrigation Areas, v 5.0 + +https://www.lap.uni-bonn.de/research/downloads/gmia/siebert_et_al_2013_gmia5 + +#### Citation +> Siebert, S., Henrich, V., Frenken, K., Burke, J. (2013): **Update of the Global Map of Irrigation Areas to version 5**. Project report, 178 p. (4 MB) +> Siebert, S., Döll, P., Hoogeveen, J., Faures, J.-M., Frenken, K., Feick, S. (2005): *Development and validation of the global map of irrigation areas*. **Hydrology and Earth System Sciences**, 9, 535-547. + +#### Data download: +http://www.fao.org/aquastat/en/geospatial-information/global-maps-irrigated-areas + +For the GIS-users the map is distributed in two different formats: as zipped ASCII-grid that can be easily imported in most GIS-software that supports raster data or grids; and, to accommodate people who use GIS-software that doesn't support raster data or grids, as a zipped ESRI shape files. It should be noted, however, that the values in the ASCII-grids have a precision of 6 decimals while the values in the shape-file have a precision of 2 decimals. For model calculations it is therefore recommended to use the grid-version. As a service to those people who would need to know the absolute area equipped for irrigation, another ASCII-grid is available in which the area equipped for irrigation is expressed in hectares per cell. Non-GIS-users can download the map as PDF-file in two different resolutions. + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/Aquastat-v5 +cd $GISDATA/antroposphere/global/Aquastat-v5 + +wget --continue 'https://firebasestorage.googleapis.com/v0/b/fao-aquastat.appspot.com/o/GIS%2Fgmia_v5_aei_pct_asc.zip?alt=media&token=e448ce53-296f-4756-90c1-75c87f74e569' --output-document=gmia_v5_aei_pct_asc.zip + +unzip -u gmia_v5_aei_pct_asc.zip + + +``` diff --git a/docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md b/docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md new file mode 100644 index 0000000..b2e37d8 --- /dev/null +++ b/docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md @@ -0,0 +1,19 @@ +# Cropland and Pasture Area in 2000 + +### Citation + +> Ramankutty, N., A.T. Evan, C. Monfreda, and J.A. Foley (2008), Farming the planet: 1. Geographic distribution of global agricultural lands in the year 2000. Global Biogeochemical Cycles 22, GB1003, doi:10.1029/2007GB002952. + +### Data download and preparation + +http://www.earthstat.org/cropland-pasture-area-2000/ + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/Earthstats +cd $GISDATA/antroposphere/global/Earthstats + +wget --continue -b https://s3.us-east-2.amazonaws.com/earthstatdata/CroplandPastureArea2000_Geotiff.zip +unzip -u CroplandPastureArea2000_Geotiff.zip +``` diff --git a/docusite/docs/anthroposphere/global/GHSL-settlements.md b/docusite/docs/anthroposphere/global/GHSL-settlements.md new file mode 100644 index 0000000..97599e0 --- /dev/null +++ b/docusite/docs/anthroposphere/global/GHSL-settlements.md @@ -0,0 +1,28 @@ +# GHSL - Global Human Settlement Layer + +https://ghsl.jrc.ec.europa.eu/dataToolsOverview.php + +Documentation: https://ghsl.jrc.ec.europa.eu/documents/GHSL_Data_Package_2019.pdf?t=1478q532234372 + +## Citation +Dataset: +> Pesaresi, Martino; Florczyk, Aneta; Schiavina, Marcello; Melchiorri, Michele; Maffenini, Luca (2019): GHS settlement grid, updated and refined REGIO model 2014 in application to GHS-BUILT R2018A and GHS-POP R2019A, multitemporal (1975-1990-2000-2015), R2019A. European Commission, Joint Research Centre (JRC) [Dataset] doi:10.2905/42E8BE89-54FF-464E-BE7B-BF9E64DA5218 PID: http://data.europa.eu/89h/42e8be89-54ff-464e-be7b-bf9e64da5218 + +Concept & Methodology: +> Florczyk, Aneta J.; Corbane, Christina; Ehrlich, Daniele; Freire, Sergio; Kemper, Thomas; Maffenini, Luca; Melchiorri, Michele; Pesaresi, Martino; Politis, Panagiotis; Schiavina, Marcello; Sabo, Filip; Zanchetta, Luigi (2019): GHSL Data Package 2019, EUR 29788 EN, Publications Office of the European Union, Luxembourg, ISBN 978-92-76-13187-8 doi:10.2760/0726, JRC 117104 + +## Data access and download + +Choose from different products , times and resolutions + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/GHSL +cd $GISDATA/antroposphere/global/GHSL + +wget --continue -b https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/GHS_BUILT_LDSMT_GLOBE_R2018A/GHS_BUILT_LDS2000_GLOBE_R2018A_54009_1K/V2-0/GHS_BUILT_LDS2000_GLOBE_R2018A_54009_1K_V2_0.zip +wget --continue -b https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/GHS_BUILT_LDSMT_GLOBE_R2018A/GHS_BUILT_LDSMT_GLOBE_R2018A_3857_30/V2-0/GHS_BUILT_LDSMT_GLOBE_R2018A_3857_30_V2_0.zip + +wget --continue -b https://cidportal.jrc.ec.europa.eu/ftp/jrc-opendata/GHSL/GHS_SMOD_POP_GLOBE_R2019A/GHS_SMOD_POP2000_GLOBE_R2019A_54009_1K/V2-0/GHS_SMOD_POP2000_GLOBE_R2019A_54009_1K_V2_0.zip +``` diff --git a/docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md b/docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md new file mode 100644 index 0000000..c6d0819 --- /dev/null +++ b/docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md @@ -0,0 +1,54 @@ +# Global Land Cover and Land Use Change, 2000-2020 +Datasets: https://glad.umd.edu/dataset/GLCLUC2020 +Tool: https://glad.umd.edu/ard/home + +## Citation +> Potapov P., Hansen M.C., Pickens A., Hernandez-Serna A., Tyukavina A., Turubanova S., Zalles V., Li X., Khan A., Stolle F., Harris N., Song X.-P., Baggett A., Kommareddy I., Kommareddy A. (2022) The global 2000-2020 land cover and land use change dataset derived from the Landsat archive: first results. Frontiers in Remote Sensing [https://doi.org/10.3389/frsen.2022.856903] + +> P. Potapov, X. Li, A. Hernandez-Serna, A. Tyukavina, M.C. Hansen, A. Kommareddy, A. Pickens, S. Turubanova, H. Tang, C.E. Silva, J. Armston, R. Dubayah, J. B. Blair, M. Hofton (2020) Mapping and monitoring global forest canopy height through integration of GEDI and Landsat data. Remote Sensing of Environment, 112165. https://doi.org/10.1016/j.rse.2020.112165  + +P. Potapov, S. Turubanova, M.C. Hansen, A. Tyukavina, V. Zalles, A. Khan, X.-P. Song, A. Pickens, Q. Shen, J. Cortez. (2021) Global maps of cropland extent and change show accelerated cropland expansion in the twenty-first century. Nature Food. https://doi.org/10.1038/s43016-021-00429-z  + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/GLAD-GLCLUC +cd $GISDATA/antroposphere/global/GLAD-GLCLUC + +wget -b --continue https://glad.umd.edu/users/Potapov/GLCLUC2020/10d_tiles.zip + +SRV=https://glad.umd.edu/users/Potapov/GLCLUC2020/ +for YEAR in 2000 2020 +do + VAR=Forest_height_${YEAR} + curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/${YEAR}_[0-1]0N_0[5-7]0W.tif +done + +for YEAR in 2000 2020 +do + VAR=Forest_extent_${YEAR} + curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/[0-1]0N_0[5-7]0W.tif +done + + +for VAR in Built-up_change_2000_2020 +do + curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/Change_[0-2]0N_0[5-8]0W.tif +done + + +for SFX in loss gain +do + VAR=Forest_height_${SFX}_2000_2020 + curl --create-dirs --output-dir $VAR -C - -O $SRV/$VAR/net${SFX}_[0-1]0N_0[5-7]0W.tif +done + +mkdir -p $GISDATA/antroposphere/global/GLAD-GLCLUC/Croplands +cd $GISDATA/antroposphere/global/GLAD-GLCLUC/Croplands + +for YEAR in 2003 2007 2011 2015 2019 +do + wget -b --continue https://glad.geog.umd.edu/Potapov/Global_Crop/Data/Global_cropland_NW_${YEAR}.tif +done +``` \ No newline at end of file diff --git a/docusite/docs/anthroposphere/global/GRIP-road-database.md b/docusite/docs/anthroposphere/global/GRIP-road-database.md new file mode 100644 index 0000000..2018a66 --- /dev/null +++ b/docusite/docs/anthroposphere/global/GRIP-road-database.md @@ -0,0 +1,11 @@ +# GRIP global roads database + +https://www.globio.info/download-grip-dataset + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/GRIP-roads +cd $GISDATA/antroposphere/global/GRIP-roads + +``` diff --git a/docusite/docs/anthroposphere/global/Gridded-Livestock-World-2010.md b/docusite/docs/anthroposphere/global/Gridded-Livestock-World-2010.md new file mode 100644 index 0000000..6ee0be5 --- /dev/null +++ b/docusite/docs/anthroposphere/global/Gridded-Livestock-World-2010.md @@ -0,0 +1,26 @@ +# Gridded Livestock of the World – Latest – 2010 (GLW 3) + +#### Citation + +For version GLW 2: + +> Robinson TP, Wint GRW, Conchedda G, Van Boeckel TP, Ercoli V, Palamara E, et al. (2014) Mapping the Global Distribution of Livestock. PLoS ONE 9(5): e96084. https://doi.org/10.1371/journal.pone.0096084 + +For GLW 3: +> Gilbert, M., Nicolas, G., Cinardi, G. et al. *Global distribution data for cattle, buffaloes, horses, sheep, goats, pigs, chickens and ducks in 2010*. **Sci Data** 5, 180227 (2018). DOI: [10.1038/sdata.2018.227](https://doi.org/10.1038/sdata.2018.227) +> Gilbert, Marius; Nicolas, Gaëlle; Cinardi, Giusepina; Van Boeckel, Thomas P.; Vanwambeke, Sophie; Wint, William G. R.; Robinson, Timothy P., 2018, "Global cattle distribution in 2010 (5 minutes of arc)", https://doi.org/10.7910/DVN/GIVQ75, Harvard Dataverse, V3 + +From the original publication +> Two versions of each species distribution are produced. In the first version, livestock numbers are disaggregated within census polygons according to weights established by statistical models using high resolution spatial covariates (dasymetric weighting). In the second version, animal numbers are distributed homogeneously with equal densities within their census polygons (areal weighting) to provide spatial data layers free of any assumptions linking them to other spatial variables. + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/GLW3 +cd $GISDATA/antroposphere/global/GLW3 + +#mv ~/Downloads/dataverse_files*.zip $GISDATA/antroposphere/global/GLW3 +#unzip dataverse_files.zip # and repeat for each file... +#rm dataverse_files.zip + +``` diff --git a/docusite/docs/anthroposphere/global/HANPP.md b/docusite/docs/anthroposphere/global/HANPP.md new file mode 100644 index 0000000..2605628 --- /dev/null +++ b/docusite/docs/anthroposphere/global/HANPP.md @@ -0,0 +1,14 @@ +# Global HANPP 2000 +> Haberl, H., K.-H. Erb, F. Krausmann, V. Gaube, A. Bondeau, C. Plutzar, S. Gingrich, W. Lucht and M. Fischer-Kowalski, (2007). Quantifying and mapping the global human appropriation of net primary production in Earth's terrestrial ecosystems. Proceedings of the National Acadademy of Sciences of the United States of America 104, 12942-12947. + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/HANPP-2000 +cd $GISDATA/antroposphere/global/HANPP-2000 + +wget --continue https://boku.ac.at/fileadmin/data/H03000/H73000/H73700/Data_Download/Data/Global_HANPP_Download_as_package.zip +unzip -u Global_HANPP_Download_as_package.zip +unzip -u 3Download\ as\ package/2all\ ASCII\ grids/all_grids.zip + +``` diff --git a/docusite/docs/anthroposphere/global/Irrigation-areas.md b/docusite/docs/anthroposphere/global/Irrigation-areas.md new file mode 100644 index 0000000..298d7cb --- /dev/null +++ b/docusite/docs/anthroposphere/global/Irrigation-areas.md @@ -0,0 +1,13 @@ +# Global Irrigation Areas + +https://zenodo.org/record/4659476 + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/Irrigation-Areas +cd $GISDATA/antroposphere/global/Irrigation-Areas + +wget --continue "https://zenodo.org/record/4659476/files/v3b_combined_2015.tif?download=1" --output-document v3b_combined_2015.tif +unzip -u CroplandPastureArea2000_Geotiff.zip +``` diff --git a/docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md b/docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md new file mode 100644 index 0000000..93a5e23 --- /dev/null +++ b/docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md @@ -0,0 +1,15 @@ +# Global 5 min resolution land-use for the year 2000 consistent with national census data + +> Karl-Heinz Erb , Veronika Gaube , Fridolin Krausmann , Christoph Plutzar , Alberte Bondeau & Helmut Haberl (2007) A comprehensive global 5 min resolution land-use data set for the year 2000 consistent with national census data, Journal of Land Use Science, 2:3, 191-224, DOI: 10.1080/17474230701622981 + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/antroposphere/global/Consistent-Land-Use-2000 +cd $GISDATA/antroposphere/global/Consistent-Land-Use-2000 + +wget --continue https://boku.ac.at/fileadmin/data/H03000/H73000/H73700/Data_Download/Data/Land_Use_Download_as_package.zip +unzip -u Land_Use_Download_as_package.zip +unzip -u 2Download\ as\ package/1all\ data\ as\ ascii-files/ascii_landuse.zip + +``` diff --git a/docusite/docs/anthroposphere/regional/Plantations-Australia.md b/docusite/docs/anthroposphere/regional/Plantations-Australia.md new file mode 100644 index 0000000..cbe9307 --- /dev/null +++ b/docusite/docs/anthroposphere/regional/Plantations-Australia.md @@ -0,0 +1,14 @@ +# Australia's plantations 2016 + +https://www.awe.gov.au/abares/forestsaustralia/forest-data-maps-and-tools/spatial-data/australias-plantations + +## Refernce +> + + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +https://www.awe.gov.au/sites/default/files/abares/forestsaustralia/documents/datasets/AustraliasPlantations_2016.zip +``` diff --git a/docusite/docs/biotic-interactions/global/GloBI.md b/docusite/docs/biotic-interactions/global/GloBI.md new file mode 100644 index 0000000..ed78cf9 --- /dev/null +++ b/docusite/docs/biotic-interactions/global/GloBI.md @@ -0,0 +1,16 @@ +# GloBI + +> Data indexed by GloBI is generously provided by researchers and collections openly sharing their datasets. When using this data, please make sure to attribute the original data contributors, including citing the specific datasets in derivative work. Each record indexed by GloBI contains a reference and dataset citation. Also, please consider to contribute to improve access to existing species interaction data. + +> Species interaction datasets indexed by GloBI can be accessed in various ways. For most, this website and its pages may be helpful to poke around the data. Other projects like GoMexSI, Encyclopedia of Life, and Ecosystem Explorer present GloBI data in a human readable format. + +```sh + +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/biotic-interactions/global/GloBI +cd $GISDATA/biotic-interactions/global/GloBI + +wget --continue https://zenodo.org/record/6604060/files/interactions.tsv.gz + +wget --continue https://zenodo.org/record/6604060/files/neo4j-graphdb.zip +``` diff --git a/docusite/docs/climate-classification/global/GEnS.md b/docusite/docs/climate-classification/global/GEnS.md new file mode 100644 index 0000000..ad57c67 --- /dev/null +++ b/docusite/docs/climate-classification/global/GEnS.md @@ -0,0 +1,20 @@ +# Global Environmental Stratification - GEnS v3 +Bioclimatic stratification of the world: + +## Citation +> Metzger, Marc J. (2018). The Global Environmental Stratification: A high-resolution bioclimate map of the world. The University of Edinburgh. https://doi.org/10.7488/ds/2354 + +## Data download and preparation + +```sh +mkdir -p $GISDATA/climate-classification/global/GEnS + + +cd $GISDATA/climate-classification/global/GEnS +nohup wget --continue http://datashare.is.ed.ac.uk/download/DS_10283_3089.zip & +unzip DS_10283_3089.zip +unzip GEnSv3.zip + +##module add python/2.7.15 perl/5.28.0 gdal/2.3.2 +##GEnSv3/gens_v3.tif +``` diff --git a/docusite/docs/climate-classification/global/Holdridge.md b/docusite/docs/climate-classification/global/Holdridge.md new file mode 100644 index 0000000..c8213a7 --- /dev/null +++ b/docusite/docs/climate-classification/global/Holdridge.md @@ -0,0 +1,13 @@ +# Holdridge Life Zones (Ecological Zones) + +UNEP/GRID + +## Citation +> +## Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate-classification/global/Holdridge +cd $GISDATA/climate-classification/global/Holdridge +``` diff --git "a/docusite/docs/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" "b/docusite/docs/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" new file mode 100644 index 0000000..fb0a804 --- /dev/null +++ "b/docusite/docs/climate-classification/global/K\303\266ppen-Geiger-climate-classification.md" @@ -0,0 +1,56 @@ +# Present and future Köppen-Geiger climate classification maps + +Webpage at http://www.gloh2o.org/koppen/ + +#### Citation +> Beck, H., Zimmermann, N., McVicar, T. et al. Present and future Köppen-Geiger climate classification maps at 1-km resolution. Sci Data 5, 180214 (2018). https://doi.org/10.1038/sdata.2018.214 + +#### Data access + +Data is available at https://doi.org/10.6084/m9.figshare.6396959 + + +#### Data download and preparation + +```sh +mkdir -p $GISDATA//climate-classification/global/koppengeiger_1km +cd $GISDATA//climate-classification/global/koppengeiger_1km +wget --continue https://figshare.com/ndownloader/files/12407516 --output-document=Beck_KG_V1.zip + +#ls *zip +#cd $WORKDIR +#unzip -u $GISDATA//climate-classification/global/koppengeiger_1km/Beck_KG_V1.zip +``` + +|map nr|Code|Description|color code|matching EFG| +|---|---|---|---|---| +| 1 | Af | Tropical, rainforest | [0 0 255]|T1.1| +| 2 | Am | Tropical, monsoon | [0 120 255]|---| +| 3 | Aw | Tropical, savannah | [70 170 250]|---| +| 4 | BWh | Arid, desert, hot | [255 0 0]|---| +| 5 | BWk | Arid, desert, cold | [255 150 150]|---| +| 6 | BSh | Arid, steppe, hot | [245 165 0]|---| +| 7 | BSk | Arid, steppe, cold | [255 220 100]|---| +| 8 | Csa | Temperate, dry summer, hot summer | [255 255 0]|---| +| 9 | Csb | Temperate, dry summer, warm summer | [200 200 0]|---| +| 10 | Csc | Temperate, dry summer, cold summer | [150 150 0]|---| +| 11 | Cwa | Temperate, dry winter, hot summer | [150 255 150]|---| +| 12 | Cwb | Temperate, dry winter, warm summer | [100 200 100]|---| +| 13 | Cwc | Temperate, dry winter, cold summer | [50 150 50]|---| +| 14 | Cfa | Temperate, no dry season, hot summer | [200 255 80]|---| +| 15 | Cfb | Temperate, no dry season, warm summer | [100 255 80]|---| +| 16 | Cfc | Temperate, no dry season, cold summer | [50 200 0]|---| +| 17 | Dsa | Cold, dry summer, hot summer | [255 0 255]|---| +| 18 | Dsb | Cold, dry summer, warm summer | [200 0 200]|---| +| 19 | Dsc | Cold, dry summer, cold summer | [150 50 150]|---| +| 20 | Dsd | Cold, dry summer, very cold winter | [150 100 150]|---| +| 21 | Dwa | Cold, dry winter, hot summer | [170 175 255]|---| +| 22 | Dwb | Cold, dry winter, warm summer | [90 120 220]|---| +| 23 | Dwc | Cold, dry winter, cold summer | [75 80 180]|---| +| 24 | Dwd | Cold, dry winter, very cold winter | [50 0 135]|---| +| 25 | Dfa | Cold, no dry season, hot summer | [0 255 255]|---| +| 26 | Dfb | Cold, no dry season, warm summer | [55 200 255]|---| +| 27 | Dfc | Cold, no dry season, cold summer | [0 125 125]|---| +| 28 | Dfd | Cold, no dry season, very cold winter | [0 70 95]|---| +| 29 | ET | Polar, tundra | [178 178 178]| T6.3| +| 30 | EF | Polar, frost | [102 102 102]|---| diff --git a/docusite/docs/climate/global/CHELSA-climatologies.md b/docusite/docs/climate/global/CHELSA-climatologies.md new file mode 100644 index 0000000..8862c7f --- /dev/null +++ b/docusite/docs/climate/global/CHELSA-climatologies.md @@ -0,0 +1,38 @@ +# CHELSA Version 1.2 + +Links to: +/ [Webpage](http://chelsa-climate.org/) + + +## Citation +> Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, H.P. & Kessler, M. (2017) Climatologies at high resolution for the earth’s land surface areas. Scientific Data 4, 170122. + +## Technical specification + +Technical specification at https://chelsa-climate.org/wp-admin/download-page/CHELSA_tech_specification.pdf + +## Data access + +Originally accessible to download from Dryad: +> Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, H.P., Kessler, M. (2017) Data from: Climatologies at high resolution for the earth’s land surface areas. Dryad Digital Repository. https://doi.org/10.5061/dryad.kd1d4 + + +On February 2021 the recommended method is to use the [download server](https://envicloud.wsl.ch/#/?prefix=chelsa%2Fchelsa_V1). + +Once in the server, is easy to select the files needed, and download a list of files paths for download with several tools. Here I use wget + +## Data download and preparation + +```bash +source proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate/global/CHELSA +cd $GISDATA/climate/global/CHELSA + +# scp downloaded file with document links: envidatS3paths.txt +wget -b -nH -x --cut-dirs=3 --continue -i envidatS3paths.txt +wget -b -nH -x --cut-dirs=3 --continue -i envidatS3paths3.txt +wget -b -nH -x --cut-dirs=3 --continue -i envidatS3paths4.txt +grep -h swe envidatS3paths* > links +wget -b -nH -x --cut-dirs=3 --continue -i links + +``` diff --git a/docusite/docs/climate/global/CHIRPS.md b/docusite/docs/climate/global/CHIRPS.md new file mode 100644 index 0000000..7b708d8 --- /dev/null +++ b/docusite/docs/climate/global/CHIRPS.md @@ -0,0 +1,36 @@ +# The Climate Hazards Group InfraRed Precipitation with Station ([CHIRPS](http:/ +/chg.geog.ucsb.edu/data/chirps)) + +Quasi-global distribution (50S-50N), gridded 0.05 degree resolution, 1981 to near-real time precipitation time series. + +https://www.chc.ucsb.edu/data/chirps + +old links: +[README](ftp://ftp.chg.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/README-CHIRPS.txt), [FAQ](http://chg-wiki.geog.ucsb.edu/wiki/CHIRPS_FAQ), [Publication](http://pubs.usgs.gov/ds/832/) + +Publication: https://www.nature.com/articles/sdata201566 + +https://data.chc.ucsb.edu/products/CHIRPS-2.0/ +https://data.chc.ucsb.edu/products/CHIRPS-2.0/README-CHIRPS.txt + +```sh +source proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate/global/CHIRPS +cd $GISDATA/climate/global/CHIRPS + +# all in one file: +wget --continue https://data.chc.ucsb.edu/products/CHIRPS-2.0/global_monthly/netcdf/chirps-v2.0.monthly.nc + + +``` + + +Time steps are months (days since 1980-1-1 0:0:0), and they are stored as bands: + +```sh +module add python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 +gdalinfo chirps-v2.0.monthly.nc + + +gdalwarp NETCDF:$GISDATA/climate/global/CHIRPS/chirps-v2.0.monthly.nc:precip -t_srs EPSG:4326 -te -74 0 -58 13 -of 'GTiff' Test1.tif +``` diff --git a/docusite/docs/climate/global/CMCC-BioClimInd.md b/docusite/docs/climate/global/CMCC-BioClimInd.md new file mode 100644 index 0000000..f9f1ce2 --- /dev/null +++ b/docusite/docs/climate/global/CMCC-BioClimInd.md @@ -0,0 +1,35 @@ +# CMCC-BioClimInd +The complete CMCC-BioClimInd dataset is available through PANGAEA (https://doi.org/10.1594/PANGAEA.904278). It consists in 805 files in NetCDF4 format with a 0.5° by 0.5° grid resolution and global coverage (except Antarctica). Files represent 35 bioclimatic indicators calculated for a 40-years historical interval (1960–1999) under climate reanalysis and for two future 40-years time intervals (2040–2079 and 2060–2099) under 6 ESMs’ projections and 2 RCPs (except RCP4.5 for CMCC-CESM). + + The individual file names follow this structure: “BIOx institute-model rcp yyyy zz.nc” + where x identifies the code of the bioclimatic indicator, institute-model (see Table 3, first column) identifies the source of data (short name for historical observation or for the producing Center and/or ESMs), rcp is the Representative Concentration Pathway (RCP 4.5 or RCP 8.5), yyyy is the starting year of time interval and zz the last two digits of the ending year of the time interval. + + ## Citation + + ```sh + @misc{noce2019cang, + author={Sergio {Noce} and Luca {Caporaso} and Monia {Santini}}, + title={{CMCC-BioClimInd. A new globaldataset of bioclimatic indicators}}, + year={2019}, + doi={10.1594/PANGAEA.904278}, + url={https://doi.org/10.1594/PANGAEA.904278}, + organization={Fondazione Centro Euromediterraneo sui Cambiamenti Climatici}, + abstract={CMCC-BioClimInd is a new global gridded dataset of bioclimatic indicators at 0.5{\textdegree} by 0.5 {\textdegree}resolution for historical and future conditions. The dataset provides a set of 35 bioclimatic indices, expressed as mean values over each time interval, derived from post-processing both climate reanalysis for historical period (1960-1999) and an ensemble of 11 bias corrected CMIP5 simulations under two emission scenarios for future climate projections alongtwo periods (2040-2079 and 2060-2099). This new dataset complements the availability of spatialized bioclimatic information, crucial aspect in many ecological and environmental wide scale applications and for several disciplines, including forestry, biodiversity conservation, plant and landscape ecology. The data of individual indices are publicly available for download in the commonly used Network Common Data Form 4 (NetCDF4) format.}, + type={data set}, + publisher={PANGAEA} + } + + ``` + + ## Data download and preparation + + ```sh + source proyectos/UNSW/cesdata/env/project-env.sh + mkdir -p $GISDATA/climate/global/CMCC-BioClimInd + cd $GISDATA/climate/global/CMCC-BioClimInd + +for k in $(seq 1 35) +do + wget --continue https://hs.pangaea.de/model/NoceS-etal_2019/BIO${k}.zip +done + ``` diff --git a/docusite/docs/climate/global/CRU-TS.md b/docusite/docs/climate/global/CRU-TS.md new file mode 100644 index 0000000..e5d6254 --- /dev/null +++ b/docusite/docs/climate/global/CRU-TS.md @@ -0,0 +1,56 @@ +# [CRU TS v. 4.03](https://crudata.uea.ac.uk/cru/data/hrg/) + +High-resolution gridded datasets of the Climatic Research Unit. + +## Citation + +> Harris, I., Jones, P.D., Osborn, T.J. and Lister, D.H. (2014), Updated high-resolution grids of monthly climatic observations - the CRU TS3.10 Dataset. International Journal of Climatology 34, 623-642 [doi:10.1002/joc.3711](http://dx.doi.org/10.1002/joc.3711) +> [Revised appendix](https://crudata.uea.ac.uk/cru/data/hrg/Revised_Appendix_3_CLD.pdf) + +## Data access + +Data is available at: +> +Documentation: + +Metadata: + + +## Data download and preparation + +```sh +mkdir -p $GISDATA/climate/global/CRU_TS +cd $GISDATA/climate/global/CRU_TS +wget https://crudata.uea.ac.uk/cru/data/hrg/cru_ts_4.03/Release_Notes_CRU_TS4.03.txt + + +for VAR in cld dtr frs pet pre tmn tmp tmx vap wet +do + mkdir -p $GISDATA/climate/global/CRU_TS/$VAR + cd $GISDATA/climate/global/CRU_TS/$VAR + wget --continue https://crudata.uea.ac.uk/cru/data/hrg/cru_ts_4.03/cruts.1905011326.v4.03/${VAR}/ -O ${VAR}.list + + for ARCH in $(grep nc.gz ${VAR}.list | sed -n 's/.*href="\([^"]*\).*/\1/p') + do + wget --continue https://crudata.uea.ac.uk/cru/data/hrg/cru_ts_4.03/cruts.1905011326.v4.03/${VAR}/${ARCH} + done +done + +``` + + + + +```sh +cd $WORKDIR +ls $GISDATA/climate/global/CRU_TS + +cp $GISDATA/climate/global/CRU_TS/cru_ts4.03.1901.2018.pre.dat.nc.gz . +gunzip cru_ts4.03.1901.2018.pre.dat.nc.gz + +cp $GISDATA/climate/global/CRU_TS/cru_ts4.03.1901.2018.pet.dat.nc.gz . +gunzip cru_ts4.03.1901.2018.pet.dat.nc.gz + +gdalinfo NETCDF:"cru_ts4.03.1901.2018.pre.dat.nc" -sd 1 | less + +``` diff --git a/docusite/docs/climate/global/CliMond.md b/docusite/docs/climate/global/CliMond.md new file mode 100644 index 0000000..7f45b16 --- /dev/null +++ b/docusite/docs/climate/global/CliMond.md @@ -0,0 +1,105 @@ +# Global climatologies for bioclimatic modelling + +urls https://www.climond.org +versions v1.2 +released 2014 + +> Kriticos D.J., Webber B.L., Leriche A., Ota N., Macadam I., Bathols J. & Scott J.K. (2012) *CliMond: global high resolution historical and future scenario climate surfaces for bioclimatic modelling*. **Methods in Ecology and Evolution**, 3: 53-64. DOI: [10.1111/j.2041-210X.2011.00134.x](http://doi.org/10.1111/j.2041-210X.2011.00134.x) +> Kriticos D.J., Jarošik V. and Ota N. (2014) *Extending the suite of Bioclim variables: a proposed registry system and case study using principal components analysis.* **Methods in Ecology and Evolution**, Online Early, DOI: [10.1111/2041-210X.12244] + +## Data access and download + +```bash +source proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate/global/CliMond +cd $GISDATA/climate/global/CliMond +``` + +Go to the webpage, login open developer tools -> network, then copy link as cURL, then we pipe the result to get a list of links to the zipfiles... +```sh +mkdir -p $GISDATA/climate/global/CliMond/Bioclim +cd $GISDATA/climate/global/CliMond/Bioclim + +curl 'https://www.climond.org/Core/Authenticated/Bioclim.aspx' \ + -H 'Connection: keep-alive' \ + -H 'Cache-Control: max-age=0' \ + -H 'sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ + -H 'sec-ch-ua-mobile: ?0' \ + -H 'Upgrade-Insecure-Requests: 1' \ + -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ + -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ + -H 'Sec-Fetch-Site: same-origin' \ + -H 'Sec-Fetch-Mode: navigate' \ + -H 'Sec-Fetch-User: ?1' \ + -H 'Sec-Fetch-Dest: document' \ + -H 'Referer: https://www.climond.org/BioclimData.aspx' \ + -H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ + -H 'Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; __utma=96693453.810068548.1659574627.1659574627.1659578286.2; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; .ASPXROLES=ZGK7zMXZPBtFYi7Q1SSOiGZTVBZZcBw5yRU0GIxkuQm_PdK3anr6NgJGw1aU9o2zsxlKihFzxYKErHUxC_tVdCstG5vGzIDa2JFNg1cT88jlBNBjG76rOPRLKxzo2yGwQmBUbA-yH6bS_cMgYkDp0Z92cTGaxkZxg0z03ALuuMONxIcmp0CHHQ-WH9SH34r5ZZr--Pk-pR9Oog9R39DegVIjnPpGLBVLaibA_jgoFvy4va5zoZjqEVxTuNypktnRhbRKZI2m1dW_Wk4oFsSa_rjbuy8DzT0g555uoV6nX3DOINHU1CURhw_J_aFYbXofR3knh_GhPnWRn-caU7Cst-D3tX_4QNOZHEp0dpz9a8LLa9VGIQAlNcQzpIDnfSYWr7NzT-V61qbVOAX0gMmlgeXpxm7V-rQZasZ-G1UhMUNxiraevAXlMYwgN30wEihWMD-QEL3jfoMecBvATWk1RuVktsNuD-8dK3XsE-fci27qFBTghE-rS0ByU4QJdNq85HQ7Y8Rg9Q1DNGfH8kIW8M3UvI8l5ncyzbKIElc00rpRrEuQnxkwG4pD2RxdMhZd0; __utmb=96693453.7.9.1659578653981' \ + --compressed | grep href | grep zip > links + +``` + +Then we use wget to go through the list of links + +```sh + +wget --force-html --input-file=links --base=https://www.climond.org/Core/Authenticated/ \ + --header='Connection: keep-alive' \ + --header='Cache-Control: max-age=0' \ + --header='sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ + --header='sec-ch-ua-mobile: ?0' \ + --header='Upgrade-Insecure-Requests: 1' \ + --header='User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ + --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ + --header='Sec-Fetch-Site: same-origin' \ + --header='Sec-Fetch-Mode: navigate' \ + --header='Sec-Fetch-User: ?1' \ + --header='Sec-Fetch-Dest: document' \ + --header='Referer: https://www.climond.org/BioclimData.aspx' \ + --header='Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ + --header='Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; __utma=96693453.810068548.1659574627.1659574627.1659578286.2; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; .ASPXROLES=ZGK7zMXZPBtFYi7Q1SSOiGZTVBZZcBw5yRU0GIxkuQm_PdK3anr6NgJGw1aU9o2zsxlKihFzxYKErHUxC_tVdCstG5vGzIDa2JFNg1cT88jlBNBjG76rOPRLKxzo2yGwQmBUbA-yH6bS_cMgYkDp0Z92cTGaxkZxg0z03ALuuMONxIcmp0CHHQ-WH9SH34r5ZZr--Pk-pR9Oog9R39DegVIjnPpGLBVLaibA_jgoFvy4va5zoZjqEVxTuNypktnRhbRKZI2m1dW_Wk4oFsSa_rjbuy8DzT0g555uoV6nX3DOINHU1CURhw_J_aFYbXofR3knh_GhPnWRn-caU7Cst-D3tX_4QNOZHEp0dpz9a8LLa9VGIQAlNcQzpIDnfSYWr7NzT-V61qbVOAX0gMmlgeXpxm7V-rQZasZ-G1UhMUNxiraevAXlMYwgN30wEihWMD-QEL3jfoMecBvATWk1RuVktsNuD-8dK3XsE-fci27qFBTghE-rS0ByU4QJdNq85HQ7Y8Rg9Q1DNGfH8kIW8M3UvI8l5ncyzbKIElc00rpRrEuQnxkwG4pD2RxdMhZd0; __utmb=96693453.7.9.1659578653981' +``` + +```sh +mkdir -p $GISDATA/climate/global/CliMond/RawClimate +cd $GISDATA/climate/global/CliMond/RawClimate + +curl 'https://www.climond.org/Core/Authenticated/RawClimate.aspx' \ + -H 'Connection: keep-alive' \ + -H 'Cache-Control: max-age=0' \ + -H 'sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ + -H 'sec-ch-ua-mobile: ?0' \ + -H 'Upgrade-Insecure-Requests: 1' \ + -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ + -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ + -H 'Sec-Fetch-Site: same-origin' \ + -H 'Sec-Fetch-Mode: navigate' \ + -H 'Sec-Fetch-User: ?1' \ + -H 'Sec-Fetch-Dest: document' \ + -H 'Referer: https://www.climond.org/RawClimateData.aspx' \ + -H 'Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ + -H 'Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; __utma=96693453.810068548.1659574627.1659578286.1659582642.3; .ASPXROLES=i2fL3QoXsDgQp10QzMOP7M3-_P-4Tyc5R29msFiaPzWRTeJo-LVblELrMdUJB569_6NXcihDMXhKHg5CF2yleM6hHJhqH4KjEtgXYzWhhLSzZe8yxWthyIEujJqjQskOGO0AfxiN4kZ2H80axWbIsP1CHLeTp3kquDDPFvhySyRJxta93s0ueVrRU51RLdOAqwov4v0B0KPl1tMPOgp1-T2upjwSKQak9nzn8hIfP9pFYP-ce9c02uvRARe6_is4fkoSRvbWM864qi1QQFYnjxMtFKBjLhalM9Kb3W-vAYGqZTUHWFqE_PbOFZDZ_aLCSI9l1_PTL0DjSNXn4Zu0c63hQrXCg-fQ_w5sM6ueGchCQBy6ZXb6VfoKFohjiyy8ap4aXCO6x1XZ6ioxpjdzqHz_D55PkIxtwtkMZ8z642jnjbtxCCLsvc9tqN4weBu-zkqs8yvieP0ZmqQPhPkTBahGXtsKbhoqS9kNibelNR-hkQjISSARwMKX3nXm_x2axaoI7aE3xTDd-1i_VIrh4Su_XjonkF8WwUulWbBg77SLYeVGITFbmItwGtat1m7Q0; __utmb=96693453.2.10.1659582642' \ + --compressed | grep href | grep zip > links + +``` + +Then we use wget to go through the list of links + +```sh + +wget --force-html --input-file=links --base=https://www.climond.org/Core/Authenticated/ \ + --header='Connection: keep-alive' \ + --header='Cache-Control: max-age=0' \ + --header='sec-ch-ua: "Google Chrome";v="87", " Not;A Brand";v="99", "Chromium";v="87"' \ + --header='sec-ch-ua-mobile: ?0' \ + --header='Upgrade-Insecure-Requests: 1' \ + --header='User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36' \ + --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \ + --header='Sec-Fetch-Site: same-origin' \ + --header='Sec-Fetch-Mode: navigate' \ + --header='Sec-Fetch-User: ?1' \ + --header='Sec-Fetch-Dest: document' \ + --header='Referer: https://www.climond.org/RawClimateData.aspx' \ + --header='Accept-Language: en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7,de;q=0.6,ca;q=0.5' \ + --header='Cookie: ASP.NET_SessionId=rieowh1bkfmjzulwnime3tn5; __utmc=96693453; __utmz=96693453.1659574627.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); warnedIE=true; .ASPXAUTH=9C1EBE2E9C8CF2282ADCAC00E485AABD3CEC7A6910BBB131625E6A2C2F439E7CD6D025651A84A8D3641BDF44B2E6407285DBF7C77D695F6017A6BD6BB58128E02A60EAE3C05A630C36E608518BE95864B8C8D6208E62B5947B87035191EE41BB39DD4073F060D3BF601FB4F5FE94DA8B015D1A48769253BCC6365B77796EEC99BAB291529B87A478F8FBDFC9E391D890; __utma=96693453.810068548.1659574627.1659578286.1659582642.3; .ASPXROLES=i2fL3QoXsDgQp10QzMOP7M3-_P-4Tyc5R29msFiaPzWRTeJo-LVblELrMdUJB569_6NXcihDMXhKHg5CF2yleM6hHJhqH4KjEtgXYzWhhLSzZe8yxWthyIEujJqjQskOGO0AfxiN4kZ2H80axWbIsP1CHLeTp3kquDDPFvhySyRJxta93s0ueVrRU51RLdOAqwov4v0B0KPl1tMPOgp1-T2upjwSKQak9nzn8hIfP9pFYP-ce9c02uvRARe6_is4fkoSRvbWM864qi1QQFYnjxMtFKBjLhalM9Kb3W-vAYGqZTUHWFqE_PbOFZDZ_aLCSI9l1_PTL0DjSNXn4Zu0c63hQrXCg-fQ_w5sM6ueGchCQBy6ZXb6VfoKFohjiyy8ap4aXCO6x1XZ6ioxpjdzqHz_D55PkIxtwtkMZ8z642jnjbtxCCLsvc9tqN4weBu-zkqs8yvieP0ZmqQPhPkTBahGXtsKbhoqS9kNibelNR-hkQjISSARwMKX3nXm_x2axaoI7aE3xTDd-1i_VIrh4Su_XjonkF8WwUulWbBg77SLYeVGITFbmItwGtat1m7Q0; __utmb=96693453.2.10.1659582642' +``` diff --git a/docusite/docs/climate/global/ERA5.md b/docusite/docs/climate/global/ERA5.md new file mode 100644 index 0000000..2ecac51 --- /dev/null +++ b/docusite/docs/climate/global/ERA5.md @@ -0,0 +1,42 @@ +# ERA5-Land Hourly - ECMWF Climate Reanalysis + +https://cds.climate.copernicus.eu/cdsapp + +## Citation +> Muñoz Sabater, J., (2019): ERA5-Land hourly data from 1981 to present. Copernicus Climate Change Service (C3S) Climate Data Store (CDS). doi:10.24381/cds.e2161bac + + +## Data access and download + +https://confluence.ecmwf.int/display/CKB/How+to+download+ERA5 + +## Use in `earth engine` + + +```js +ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY") open_in_new +``` + +example with snow cover: + +```js +var dataset = ee.ImageCollection("ECMWF/ERA5_LAND/HOURLY") + .filter(ee.Filter.date('2020-12-01', '2020-12-02')); + +var visualization = { + bands: ['snow_cover'], + min: 0.0, + max: 100.0, + palette: [ + "#000080","#0000D9","#4000FF","#8000FF","#0080FF","#00FFFF", + "#00FF80","#80FF00","#DAFF00","#FFFF00","#FFF500","#FFDA00", + "#FFB000","#FFA400","#FF4F00","#FF2500","#FF0A00","#FF00FF", + ] +}; + + +Map.setCenter(-69, 11.2, 2); + +Map.addLayer(dataset, visualization, "Air temperature [K] at 2m height"); + +``` diff --git a/docusite/docs/climate/global/GHCN-M.md b/docusite/docs/climate/global/GHCN-M.md new file mode 100644 index 0000000..76bc897 --- /dev/null +++ b/docusite/docs/climate/global/GHCN-M.md @@ -0,0 +1,18 @@ +# GLOBAL HISTORICAL CLIMATOLOGY NETWORK - MONTHLY (GHCN-M) Version 4 + +https://www.ncei.noaa.gov/pub/data/ghcn/v4/readme.txt + +> GHCN-M version 4 currently contains monthly mean temperature for over 25,000 stations across the globe. + +> There are currently three versions of GHCN-M version 4 , QCU: Quality Control, Unadjusted; QCF: Quality Control, Adjusted, using the Pairwise Homogeneity Algorithm (PHA, Menne and Williams, 2009); QFE: Quality Control, Adjusted, Estimated using the Pairwise Homogeneity Algorithm. Only the years 1961-2010 are provided. This is to help maximize station coverage when calculating normals. For more information, see Williams et al, 2012. + +```sh + +source proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate/global/GHCN-M +cd $GISDATA/climate/global/GHCN-M + +wget https://www.ncei.noaa.gov/pub/data/ghcn/v4/ghcnm.tavg.latest.qcf.tar.gz + +wget https://www.ncei.noaa.gov/data/ghcnm/v4beta/archive/ghcn-m_v4.00.00_prcp_s16970101_e20220831_c20220907.tar.gz +``` diff --git a/docusite/docs/climate/global/Terraclimate.md b/docusite/docs/climate/global/Terraclimate.md new file mode 100644 index 0000000..13224db --- /dev/null +++ b/docusite/docs/climate/global/Terraclimate.md @@ -0,0 +1,62 @@ +# Terraclimate + +TerraClimate is a dataset of monthly climate and climatic water balance for global terrestrial surfaces from 1958-2019. All data have monthly temporal resolution and a ~4-km (1/24th degree) spatial resolution. + +## Citation + +>Abatzoglou, J.T., S.Z. Dobrowski, S.A. Parks, K.C. Hegewisch, 2018, Terraclimate, a high-resolution global dataset of monthly climate and climatic water balance from 1958-2015, Scientific Data, 5, 170191 . DOI:10.1038/sdata.2017.191 + +## Data access + +Data and documentation is available at: +> http://www.climatologylab.org/terraclimate.html + + +## Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate/global/Terraclimate +cd $GISDATA/climate/global/Terraclimate +``` + +### Climatologies (1961-1990 and 1981-2010; and +2C and +4C future scenarios)​ + +Using the data catalogs to extract all links: + +```sh +mkdir -p $GISDATA/climate/global/Terraclimate/summaries +cd $GISDATA/climate/global/Terraclimate/summaries + +wget http://thredds.northwestknowledge.net:8080/thredds/catalog/TERRACLIMATE_ALL/summaries/catalog.html + +#xpath -q -e "//a/@href/data()" catalog.html + +sed -n "s/.*href='\([^']*\).*/\1/p" catalog.html > enlaces + +for GRP in TerraClimate19611990 TerraClimate4C TerraClimate2C TerraClimate19812010 +do + for VAR in ppt pet # ws vpd vap tmin tmax swe srad soil q ppt pet def aet + do + wget --continue http://thredds.northwestknowledge.net:8080/thredds/fileServer/TERRACLIMATE_ALL/summaries/${GRP}_${VAR}.nc + done +done +``` + + +### Variables per year + +Use [wget script](http://www.climatologylab.org/wget-terraclimate.html) to download individual netCDF files for individual variables and years : + +```sh +for VAR in ppt pet #PDSI ws vpd vap tmin tmax swe srad soil q ppt pet def aet +do + mkdir -p $GISDATA/climate/global/Terraclimate/per-year/$VAR + cd $GISDATA/climate/global/Terraclimate/per-year/$VAR + for YEAR in $(seq 2000 2021) + do + wget -c -nd https://climate.northwestknowledge.net/TERRACLIMATE-DATA/TerraClimate_${VAR}_${YEAR}.nc + done +done +``` + diff --git a/docusite/docs/climate/global/WorldClim.md b/docusite/docs/climate/global/WorldClim.md new file mode 100644 index 0000000..e7ef968 --- /dev/null +++ b/docusite/docs/climate/global/WorldClim.md @@ -0,0 +1,47 @@ +# WorldClim-2.1 + +Interpolated monthly climate data for minimum, mean, and maximum temperature, precipitation, solar radiation, wind speed, water vapor pressure, and for total precipitation. There are also 19 bioclimatic variables. +urls: + +version 2.1 +https://worldclim.org/data/index.html + +version 1.4 +https://worldclim.org/data/v1.4/worldclim14.html + + +## Reference +> Fick, S.E. and R.J. Hijmans, 2017. WorldClim 2: new 1km spatial resolution climate surfaces for global land areas. International Journal of Climatology 37 (12): 4302-4315 [show] + +## Data access and download + +```bash +source proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate/global/WorldClim +cd $GISDATA/climate/global/WorldClim + +``` + +For the historical data, focusing on 30 arcsecond resolution: + +```bash +mkdir -p $GISDATA/climate/global/WorldClim/v2.1/Historical +cd $GISDATA/climate/global/WorldClim/v2.1/Historical +wget https://worldclim.org/data/worldclim21.html +grep href worldclim21.html | grep "_30s_" > links +wget --continue -b --input-file=links --force-html + +``` + +For the future climate projections (CMIP6) data, at 30 arcsecond: + +```bash +mkdir -p $GISDATA/climate/global/WorldClim/v2.1/CMIP6 +cd $GISDATA/climate/global/WorldClim/v2.1/CMIP6 + +wget https://worldclim.org/data/cmip6/cmip6_clim30s.html +grep href cmip6_clim30s.html | grep ".tif" > links +wget -b --continue --input-file=links --force-html + + +``` diff --git a/docusite/docs/climate/regional/ALA-spatial-layers.md b/docusite/docs/climate/regional/ALA-spatial-layers.md new file mode 100644 index 0000000..7fdacee --- /dev/null +++ b/docusite/docs/climate/regional/ALA-spatial-layers.md @@ -0,0 +1,13 @@ + + +https://spatial.ala.org.au/ws/layers/index + +```sh + +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/climate/regional/ALA-spatial-layers/ +cd $GISDATA/climate/regional/ALA-spatial-layers/ + +wget https://spatial.ala.org.au/ws/layers + +``` diff --git a/docusite/docs/cryosphere/global/Alpine-Biome.md b/docusite/docs/cryosphere/global/Alpine-Biome.md new file mode 100644 index 0000000..c5a9b94 --- /dev/null +++ b/docusite/docs/cryosphere/global/Alpine-Biome.md @@ -0,0 +1,21 @@ +## *Alpine biomes* + +Maps created by Testolin et al 2020 by modelling the regional treeline elevation. Available at https://doi.org/10.6084/m9.figshare.11710002.v1 + + +> Testolin, R., Attorre, F. and Jiménez‐Alfaro, B. (2020), Global distribution and bioclimatic characterization of alpine biomes. Ecography, 43: 779-788. doi:10.1111/ecog.05012 + +> Testolin, Riccardo; Attorre, Fabio; Jiménez-Alfaro, Borja (2020): Global distribution and bioclimatic characterization of alpine biomes. figshare. Dataset. https://doi.org/10.6084/m9.figshare.11710002.v1 + + +## Data download and preparation + +```sh +DPATH=cryosphere/global +DNAME=Alpine-biomes + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +wget -b --continue https://ndownloader.figshare.com/articles/11710002/versions/1 --output-document=Global-alpine-biomes.zip +``` diff --git a/docusite/docs/cryosphere/global/GlaThiDa.md b/docusite/docs/cryosphere/global/GlaThiDa.md new file mode 100644 index 0000000..bb18304 --- /dev/null +++ b/docusite/docs/cryosphere/global/GlaThiDa.md @@ -0,0 +1,32 @@ +# Glacier Thickness Database (GlaThiDa) 3.1.0 + +https://www.gtn-g.ch/glathida/ + +> Internationally collected, standardized dataset on glacier thickness from in-situ and remotely sensed observations, based on data submissions, literature review and airborne data from NASA’s Operation IceBridge. + +> Bug reports, data submissions, and other issues should be posted to the issue tracker at https://gitlab.com/wgms/glathida/-/issues. + +## Citation + +> GlaThiDa Consortium (2020): Glacier Thickness Database 3.1.0. World Glacier Monitoring Service, Zurich, Switzerland. DOI: 10.5904/wgms-glathida-2020-10 + +## Related publications: +> Welty, E., Zemp, M., Navarro, F., Huss, M., Fürst, J.J., Gärtner-Roer, I., Landmann, J., Machguth, H., Naegeli, K., Andreassen, L.M., Farinotti, D., Li, H., and GlaThiDa Contributors (2020): Worldwide version-controlled database of glacier thickness observations. Earth System Science Data, DOI: 10.5194/essd-2020-87 +> Gärtner-Roer, I., Naegeli, K., Huss, M., Knecht, T., Machguth, H., Zemp, M. (2014): A database of worldwide glacier thickness observations. Global and Planetary Change. DOI: 10.1016/j.gloplacha.2014.09.003 + +## Metadata +**Scientific data identifier for version 2020**: DOI 10.5904/wgms-glathida-2020-10 +**Title**: Glacier Thickness Database (GlaThiDa) 3.1.0 +**Publisher**: World Glacier Monitoring Service (WGMS) +**Release date**: 2020-10-06 +**Rights**: All data submitted to GTN-G are considered public domain for non-commercial use and are made digitally available through the operational services at no cost. The date are open access for scientific and educational purposes under the requirement of correct citation (see above), which corresponds to a CC BY 4.0 license by Creative Commons. + +## Data access + +````sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/cryosphere/global/GlaThiDa +cd $GISDATA/cryosphere/global/GlaThiDa +wget --continue http://www.gtn-g.ch/database/glathida-3.1.0.zip + +``` diff --git a/docusite/docs/cryosphere/global/Global-land-ice-measurements.md b/docusite/docs/cryosphere/global/Global-land-ice-measurements.md new file mode 100644 index 0000000..d6d6e12 --- /dev/null +++ b/docusite/docs/cryosphere/global/Global-land-ice-measurements.md @@ -0,0 +1,152 @@ +# GLIMS Glacier database +Global Land Ice Measurements from Space initiative (GLIMS) + +[Webpage](http://glims.colorado.edu/glacierdata/) + +#### Citation + +> GLIMS and NSIDC (2005, updated 2018): Global Land Ice Measurements +from Space glacier database. Compiled and made available by the +international GLIMS community and the National Snow and Ice Data Center, +Boulder CO, U.S.A. DOI:10.7265/N5V98602 + +> Raup, B.H.; A. Racoviteanu; S.J.S. Khalsa; C. Helm; R. Armstrong; Y. + Arnaud (2007). "The GLIMS Geospatial Glacier Database: a New Tool for + Studying Glacier Change". Global and Planetary Change 56:101--110. + (doi:10.1016/j.gloplacha.2006.07.018) + +#### Data access + +http://www.glims.org/download/ + +#### Data download and preparation + +```sh +DPATH=cryosphere/global +DNAME=GLIMS_2019 + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +wget --continue http://www.glims.org/download/glims_db_20191217.zip +``` + + +We import this dataset in postgis for further data preparation and selection + +```sh +mkdir -p $WORKDIR/GLIMS +cd $WORKDIR/GLIMS +unzip $GISDATA/$DPATH/$DNAME/glims_db_20191217.zip + cd $WORKDIR/GLIMS/glims_download* + +psql gisdata jferrer -c "CREATE SCHEMA glims" +for SHPFILE in images lines polygons points +do + ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=glims -nlt PROMOTE_TO_MULTI glims_$SHPFILE.shp glims_$SHPFILE -nln $SHPFILE + done +cd $WORKDIR +rm -r $WORKDIR/GLIMS + +``` + +Or we can filter them using ogr2ogr +Then we create a table with the most recent glacier outlines filtering by record status ("okay") and glacier status ("exists") : + +```sh +cd glims_download* + +module add python/3.8.3 perl/5.28.0 geos/3.8.1 gdal/3.2.1 + +ogr2ogr -f "GPKG" -sql "SELECT glac_id, glac_name, anlys_time FROM glims_polygons WHERE rec_status = 'okay' AND glac_stat = 'exists' AND line_type = 'glac_bound'" valid_glaciers.gpkg glims_polygons.shp -nlt PROMOTE_TO_MULTI -nln valid_glaciers -makevalid + +``` + +This way we can summarize information according to documented variables, for example, just `psql gisdata` and: + +```sql + select line_type,count(*) from glims.polygons group by line_type; +select count(distinct glac_id),count(*) from glims.polygons; + +select glac_stat,rec_status, count(distinct glac_id) from glims.polygons group by glac_stat,rec_status; + + +``` + +We now extract some features to a new table (in `psql gisdata`). This will create a list with the most recent glacier outlines + +```sql + +-- order by anlys_time +-- filter by rec_status = "okay" & glac_stat = "exists" +CREATE table glims.valid_glaciers AS( +WITH summary AS ( + SELECT p.glac_id, + p.glac_name, + p.wkb_geometry, + ROW_NUMBER() OVER(PARTITION BY p.glac_id + ORDER BY p.anlys_time DESC) AS rk + FROM glims.polygons p + WHERE rec_status = 'okay' AND glac_stat = 'exists' AND line_type = 'glac_bound' + ) +SELECT s.* + FROM summary s +WHERE s.rk = 1); +-- 319732 records +``` + +This will create a list of points with the centroid of the features labeled as "internal rock" + +```sql + +CREATE table glims.valid_nunataks AS( + SELECT p.glac_id, + p.glac_name, + st_centroid(p.wkb_geometry) AS wkb_geometry + FROM glims.polygons p + WHERE rec_status = 'okay' AND glac_stat = 'exists' AND line_type = 'intrnl_rock' + ); +-- 447 records +``` + + +In R we can retrieve the data for any area of interest using following script (`R --vanilla`): + +```{r} +require(sf) +require(dplyr) + +glims <- read_sf("dist-records/glims_download_56134/glims_points.shp") +glims_pols <- read_sf("dist-records/glims_download_56134/glims_polygons.shp") + +glims_pols %>% st_drop_geometry() %>% group_by(rec_status,glac_stat,line_type) %>% summarise(n=n(),n_ids=n_distinct(glac_id)) + +glims_pols %>% st_drop_geometry() %>% group_by(glac_id) %>% summarise(n=n()) %>% arrange(desc(n)) + +slc <- glims_pols %>% filter(glac_id=='G302228E64270S') + +require("RPostgreSQL") + +work.dir <- Sys.getenv("WORKDIR") +setwd(work.dir) + +drv <- dbDriver("PostgreSQL") ## remember to update .pgpass file +con <- dbConnect(drv, dbname = "gisdata", + host = ifelse( system("hostname -s",intern=T)=="terra","localhost","terra.ad.unsw.edu.au"), + port = 5432, + user = "jferrer") + +# Area of interest POLYGON((-80 -10,-69 -10,-69 12,-80 12,-80 -10) +T6.2.ss <- st_read(con, query="SELECT * FROM glims.valid_nunataks WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-80 -10,-69 -10,-69 12,-80 12,-80 -10))') ") + +T6.1.ss <- st_read(con, query="SELECT * FROM glims.valid_glaciers WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-80 -10,-69 -10,-69 12,-80 12,-80 -10))')") + +# all centroids in 'lower' latitudes +T6.2 <- st_read(con, query="SELECT glac_id,wkb_geometry FROM glims.valid_nunataks WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-180 -60,-180 60,180 60,180 -60,-180 -60))')") + +T6.1 <- st_read(con, query="SELECT glac_id,ST_Centroid(wkb_geometry) as cents FROM glims.valid_glaciers WHERE ST_Intersects(wkb_geometry,'SRID=4326;POLYGON((-180 -60,-180 60,180 60,180 -60,-180 -60))')") + +dbDisconnect(con) +save(file='Glaciers-Northern-South-America.rda',T6.1,T6.2,T6.1.ss,T6.2.ss) + +``` diff --git a/docusite/docs/cryosphere/global/Global-river-ice-dataset.md b/docusite/docs/cryosphere/global/Global-river-ice-dataset.md new file mode 100644 index 0000000..b6e856b --- /dev/null +++ b/docusite/docs/cryosphere/global/Global-river-ice-dataset.md @@ -0,0 +1,38 @@ +# Global river ice + + +#### Citation + +> Yang, X., Pavelsky, T.M. & Allen, G.H. *The past and future of global river ice*. **Nature** 577, 69–73 (2020). https://doi.org/10.1038/s41586-019-1848-1 + +#### Data access + +The following data and code are available +* The [global river ice dataset](https://doi.org/10.5281/zenodo.3372709) +* *in situ* [river ice records](https://doi.org/10.5281/zenodo.3372754). +* [Google Eath Engine code](https://github.com/seanyx/global-river-ice-dataset-from-Landsat). + +#### Data download and preparation + +```sh +mkdir -p $GISDATA/cryosphere/global/Global-River-Ice +cd $GISDATA/cryosphere/global/Global-River-Ice +wget --continue 'https://zenodo.org/record/3372754/files/landsat_river_ice_validation.csv?download=1' --output-document=landsat_river_ice_validation.csv +wget --continue 'https://zenodo.org/record/3372709/files/global_river_ice_dataset.csv?download=1' --output-document=global_river_ice_dataset.csv + +``` + +Since these are based on landsat products, we will need the WRS-2 shapefiles which can be found on the USGS Landsat website. This is the descending orbit (daytime) data for Landsat 4-8, but ascending data and data for Landsat 1-3 are also available: https://www.usgs.gov/land-resources/nli/landsat/landsat-path-row-shapefiles-and-kml-files + +```sh +wget --continue https://prd-wret.s3-us-west-2.amazonaws.com/assets/palladium/production/s3fs-public/atoms/files/WRS2_descending_0.zip +unzip -u WRS2_descending_0.zip + +wget --continue https://prd-wret.s3.us-west-2.amazonaws.com/assets/palladium/production/atoms/files/WRS2_ascending_0.zip +unzip -u WRS2_ascending_0.zip + + +``` + +#### Notes +* diff --git a/docusite/docs/cryosphere/global/Lake-ice-phenology.md b/docusite/docs/cryosphere/global/Lake-ice-phenology.md new file mode 100644 index 0000000..83353ab --- /dev/null +++ b/docusite/docs/cryosphere/global/Lake-ice-phenology.md @@ -0,0 +1,43 @@ +# Global Lake and River Ice Phenology Database + +The data set was prepared by the North Temperate Lakes Long-Term Ecological Research program at the Center for Limnology at the University of Wisconsin-Madison from data submitted by participants in the Lake Ice Analysis Group ([LIAG](https://lter.limnology.wisc.edu/project/lake-ice-international-collaborations)). + +#### Citation + +> Benson, B., J. Magnuson, and S. Sharma. 2000, updated 2013. Global Lake and River Ice Phenology Database, Version 1. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5W66HP8. [Date Accessed]. + +#### Data access + +There are at least two alternative pages for data access +* http://nsidc.org/data/lake_river_ice/freezethaw.html +* https://nsidc.org/data/g01377 + +#### Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +DPATH=cryosphere/global +DNAME=LIAG_Ice + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + + +## download complete table: +wget ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01377/liag_freeze_thaw_table.csv +wget ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01377/liag_physical_character_table.csv + +## or, if downloaded using the form at +## http://nsidc.org/data/lake_river_ice/freezethaw.html +## mv ~/Downloads/liag_ice.csv.gz . +## mv ~/Downloads/liag_info.csv.gz . +## cd $WORKDIR +## cp $GISDATA/monitoring/LIAG_Ice/liag_ice.csv.gz . +## gunzip liag_ice.csv.gz +``` + +#### Notes +* Only data contributed by members of LIAG, thus no data from southern hemisphere, Alaska, etc. +* Apparently last updated in 2013 diff --git a/docusite/docs/cryosphere/global/Modis-Snow-Cover-Products.md b/docusite/docs/cryosphere/global/Modis-Snow-Cover-Products.md new file mode 100644 index 0000000..0a50fbf --- /dev/null +++ b/docusite/docs/cryosphere/global/Modis-Snow-Cover-Products.md @@ -0,0 +1,164 @@ +# MODIS/Terra Snow Cover 8-Day L3 Global 0.05Deg CMG, Version 6 + +https://nsidc.org/data/mod10c2/versions/6 +Data Set ID: MOD10C2 + +> This data set is generated from Normalized Difference Snow Index (NDSI) snow cover. Snow covered land typically has a very high reflectance in visible bands and very low reflectance in the shortwave infrared; the NDSI reveals the magnitude of this difference. MOD10A2 eight-day maximum snow extent observations at 500 m resolution are mapped into 0.05 degrees (approx. 5 km) CMG cells, binned by observation type (e.g. snow, snow-free land, cloud, etc.), and tallied. Snow and cloud cover percentages are generated by computing the ratio of snow or cloud observation counts to the total number of land observations mapped into the CMG cell. + + +## Citation +> Hall, D. K. and G. A. Riggs. 2016. MODIS/Terra Snow Cover 8-Day L3 Global 0.05Deg CMG, Version 6. [Indicate subset used]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. doi: https://doi.org/10.5067/MODIS/MOD10C2.006. [Date Accessed]. + + +Download script (python) available, add login details for earthdata in ~/.netrc as follow: +machine urs.earthdata.nasa.gov login ***** password ***** + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/cryosphere/global/Modis-MOD10C2/ +cd $GISDATA/cryosphere/global/Modis-MOD10C2/ +## scp nsidc-download_MOD10C2.006_2021-03-29.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/Modis-MOD10C2/ + +python nsidc-download_MOD10C2.006_2021-03-29.py +``` + +This downloads 1932 files + +# MODIS/Terra Snow Cover 8-Day L3 Global 500m SIN Grid, Version 6 +https://nsidc.org/data/mod10a2/versions/6 +Data Set ID: MOD10A2 + +We repeat the same procedure, this will download 590880 files! +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/cryosphere/global/Modis-MOD10A2/ +cd $GISDATA/cryosphere/global/Modis-MOD10A2/ +## scp nsidc-download_MOD10A2.006_2021-03-30.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/Modis-MOD10A2/ + +## manual edit to add bounding box, start and end dates, filename match, etc... +less nsidc-download_MOD10A2.006_2021-03-30.py + +for YEAR in $(seq 2010 2020) +do + cd $GISDATA/cryosphere/global/Modis-MOD10A2/$YEAR + for k in $(ls | cut -d. -f2 | uniq | grep ^A) + do + echo $k + mkdir -p $k + mv *${k}*.hdf $k + mv *${k}*.xml $k + done +done + +``` + + +Maximum_Snow_Extent: +> The maximum snow extent during the eight-day period plus other values. Cells with snow on any day during the period are mapped as snow. Clouds are only reported if all eight days were obscured by clouds. Cells with no snow are filled with the observation that occurred most often. Possible values are: 0: missing data 1: no decision 11: night 25: no snow 37: lake 39: ocean 50: cloud 100: lake ice 200: snow 254: detector saturated 255: fill + +Eight_Day_Snow_Cover: +> Snow chronology bit flags. Each day has its own bit that is set to: on (1), if snow was observed on that day; or off (0), for no snow, cloud, or missing data. Days/bits are ordered across the byte from right to left: bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0 day 8 day 7 day 6 day 5 day 4 day 3 day 2 day 1 To retrieve the bit flags, convert the integer stored in the SDS into its binary representation. For example, if a cell contains the value 229, expressing that number in binary yields: 11100101. Read from right to left, the flags indicate that snow was observed in the cell on days 1, 3, 6, 7, and 8 of the compositing period, while no snow was observed on days 2, 4, and 5. + + +Bounding box example +137,-5,138,-4 + +Bounding box tropical glaciers +-100,-25,138,20 + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +cd $WORKDIR +qsub -l select=1:ncpus=2:mem=16gb,walltime=12:00:00 -J 2019-2021 $SCRIPTDIR/inc/pbs/download-cryosphere-modis-products.pbs +qsub -l select=1:ncpus=2:mem=16gb,walltime=12:00:00 -J 2000-2018 $SCRIPTDIR/inc/pbs/download-cryosphere-modis-products.pbs + +``` + +## Virtual raster datasets + +```sh +ssh $zID@katana.restech.unsw.edu.au +qsub -I -l select=1:ncpus=1:mem=120gb,walltime=12:00:00 + +module add python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +cd $GISDATA/cryosphere/global/Modis-MOD10A2/ +export VAR=MOD10A2 +export VRS=006 + +# gdalinfo 2019.01.01/MOD11A2.A2019001.h01v08.006.2019010204437.hdf + +# gdalinfo HDF4_EOS:EOS_GRID:"2019.01.01/MCD12Q1.A2019001.h01v08.006.2020212125329.hdf":MODIS_Grid_8Day_1km_LST:LST_Day_1km + +for YEAR in $(seq 2000 2010) +do + mkdir -p $GISDATA/cryosphere/global/Modis-${VAR}/index/${YEAR} + cd $GISDATA/cryosphere/global/Modis-${VAR}/index/${YEAR} + for FECHA in $(grep ^A$YEAR $GISDATA/cryosphere/global/Modis-${VAR}/links) + do + echo $FECHA + [ -e index_${VAR}_${VRS}_${FECHA}_Maximum_Snow_Extent.vrt ] && echo "listo" || gdalbuildvrt index_${VAR}_${VRS}_${FECHA}_Maximum_Snow_Extent.vrt -sd 1 $GISDATA/cryosphere/global/Modis-${VAR}/$FECHA/*hdf + [ -e index_${VAR}_${VRS}_${FECHA}_Eight_Day_Snow_Cover.vrt ] && echo "listo" || gdalbuildvrt index_${VAR}_${VRS}_${FECHA}_Eight_Day_Snow_Cover.vrt -sd 2 $GISDATA/cryosphere/global/Modis-${VAR}/$FECHA/*hdf + + done + +done + +export VAR=MOD11A2 +export VRS=006 + +cd $GISDATA/land-surface-temperature/global/Modis-${VAR}.${VRS}/index/ + + +``` + + +## example for Myanmar +```sh +mkdir -p ~/tmp/alpine/Myanmar +cd ~/tmp/alpine/Myanmar + +for k in $(ls /opt/gisdata/sensores/Modis/MOD10C2/*hdf) +do + for BAND in Eight_Day_CMG_Snow_Cover Snow_Spatial_QA Eight_Day_CMG_Clear_Index + do + export j=$(basename $k | sed -e s/.hdf/.tif/ -e s/MOD10C2/${BAND}/) + + gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te 92 25 99 29 -t_srs EPSG:4326 HDF4_EOS:EOS_GRID:"${k}":MOD_CMG_Snow_5km:${BAND} ${j} + done +done + +gdalinfo $k +export BAND=Eight_Day_CMG_Snow_Cover +export WEEK=A2000049 + +gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -t_srs EPSG:4326 HDF4_EOS:EOS_GRID:"MOD10C2.${WEEK}.006.2016064132927.hdf":MOD_CMG_Snow_5km:${BAND} MOD10C2-${WEEK}-${BAND}.tif + +cd $WORKDIR +grass -c $GISDATA/sensores/Modis/MOD10C2/MOD10C2-${WEEK}-${BAND}.tif $GISDB/MODIS_snow +r.in.gdal input=$GISDATA/sensores/Modis/MOD10C2/MOD10C2-${WEEK}-${BAND}.tif output=MOD10C2_${WEEK}_${BAND} + +``` + +In google earth engine +https://developers.google.com/earth-engine/datasets/catalog/MODIS_006_MOD10A1 + +Hall, D. K., V. V. Salomonson, and G. A. Riggs. 2016. MODIS/Terra Snow Cover Daily L3 Global 500m Grid. Version 6. Boulder, Colorado USA: NASA National Snow and Ice Data Center Distributed Active Archive Center. +https://doi.org/10.5067/MODIS/MOD10A1.006 + +Global EASE-Grid 8-day Blended SSM/I and MODIS Snow Cover, Version 1 +https://cmr.earthdata.nasa.gov/search/concepts/C1386250333-NSIDCV0.html + +Read https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0321_blended_ssmi_modis/readme.txt +%ftp sidads.colorado.edu + (login as anonymous, and use your e-mail address as password) +ftp>cd /pub/DATASETS/nsidc0321_blended_ssmi_modis/ +ftp>get north.tar diff --git a/docusite/docs/cryosphere/global/Modis-sea-ice-products.md b/docusite/docs/cryosphere/global/Modis-sea-ice-products.md new file mode 100644 index 0000000..071dd83 --- /dev/null +++ b/docusite/docs/cryosphere/global/Modis-sea-ice-products.md @@ -0,0 +1,44 @@ +# Modis Sea Ice extent and temperature + +There are multiple Modis products. An overview is available [here](https://nsidc.org/data/modis/data_summaries). + +## MODIS/Terra Sea Ice Extent Daily L3 Global 1km EASE-Grid Day, Version 6 + +Product ID **MOD29P1D**: daily 1 km resolution sea ice extent, ice surface temperature, and quality assessment data gridded to the Equal Area Scalable Earth Grid (EASE-Grid). + + +#### Citation +> Hall, D. K. and G. A. Riggs. 2015. MODIS/Terra Sea Ice Extent Daily L3 Global 1km EASE-Grid Day, Version 6. [Indicate subset used]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. doi: https://doi.org/10.5067/MODIS/MOD29P1D.006. [Date Accessed] + +#### Data access + +Data is available at https://nsidc.org/data/MOD29P1D/versions/6 + +Use Earth-data login details. + +There is an option for a using a download script in python. + +#### Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +DPATH=cryosphere/global +DNAME=Modis-MOD10C2 + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +mv ~/Downloads/nsidc-download_MOD29P1D.006_2020-02-22.py $GISDATA/sensores/Modis_SeaIce + +``` + +```sh + +mkdir -p $GISDATA/cryosphere/global/Modis-MOD10C2/ +cd $GISDATA/cryosphere/global/Modis-MOD10C2/ +## scp nsidc-download_MOD10C2.006_2021-03-29.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/Modis-MOD10C2/ + +python nsidc-download_MOD10C2.006_2021-03-29.py +``` diff --git a/docusite/docs/cryosphere/global/PyGEM-OGGM-Glacier-projections.md b/docusite/docs/cryosphere/global/PyGEM-OGGM-Glacier-projections.md new file mode 100644 index 0000000..3a3e8db --- /dev/null +++ b/docusite/docs/cryosphere/global/PyGEM-OGGM-Glacier-projections.md @@ -0,0 +1,51 @@ +# Global PyGEM-OGGM Glacier Projections with RCP and SSP Scenarios, Version 1 (HMA2_GGP) + +https://nsidc.org/data/hma2_ggp/versions/1 + +> This data set comprises results from a hybrid glacier evolution model that uses the mass balance module of the Python Glacier Evolution Model (PyGEM) and the glacier dynamics module of the Open Global Glacier Model (OGGM). Output parameters include projections of glacier mass change, fixed runoff, and various mass balance components at regionally aggregated and glacier scales. + + + +## Citation + +> Rounce, D., R. Hock, and F. Maussion. (2022). Global PyGEM-OGGM Glacier Projections with RCP and SSP Scenarios, Version 1 [Data Set]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. https://doi.org/10.5067/P8BN9VO9N5C7. Date Accessed 03-19-2023. + +@article{ +doi:10.1126/science.abo1324, +author = {David R. Rounce and Regine Hock and Fabien Maussion and Romain Hugonnet and William Kochtitzky and Matthias Huss and Etienne Berthier and Douglas Brinkerhoff and Loris Compagno and Luke Copland and Daniel Farinotti and Brian Menounos and Robert W. McNabb }, +title = {Global glacier change in the 21st century: Every increase in temperature matters}, +journal = {Science}, +volume = {379}, +number = {6627}, +pages = {78-83}, +year = {2023}, +doi = {10.1126/science.abo1324}, +URL = {https://www.science.org/doi/abs/10.1126/science.abo1324}, +eprint = {https://www.science.org/doi/pdf/10.1126/science.abo1324}, +abstract = {Glacier mass loss affects sea level rise, water resources, and natural hazards. We present global glacier projections, excluding the ice sheets, for shared socioeconomic pathways calibrated with data for each glacier. Glaciers are projected to lose 26 ± 6\% (+1.5°C) to 41 ± 11\% (+4°C) of their mass by 2100, relative to 2015, for global temperature change scenarios. This corresponds to 90 ± 26 to 154 ± 44 millimeters sea level equivalent and will cause 49 ± 9 to 83 ± 7\% of glaciers to disappear. Mass loss is linearly related to temperature increase and thus reductions in temperature increase reduce mass loss. Based on climate pledges from the Conference of the Parties (COP26), global mean temperature is projected to increase by +2.7°C, which would lead to a sea level contribution of 115 ± 40 millimeters and cause widespread deglaciation in most mid-latitude regions by 2100. Mountain glaciers, perennial ice masses excluding the Greenland and Antarctic ice sheets, are a critical water resource for nearly two billion people and are threatened by global warming. Rounce et al. projected how those glaciers will be affected under global temperature increases of 1.5° to 4°C, finding losses of one quarter to nearly one half of their mass by 2100 (see the Perspective by Aðalgeirsdóttir and James). Their calculations suggest that glaciers will lose substantially more mass and contribute more to sea level rise than current estimates indicate. —HJS Glaciers are melting more rapidly than expected due to global warming.}} + +## User Guide + +https://nsidc.org/sites/default/files/documents/user-guide/hma2_ggp-v001-userguide_0.pdf + +## Data access + +Instructions for Programmatic Data Access are here: https://nsidc.org/data/user-resources/help-center/programmatic-data-access-guide + +````sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/cryosphere/global/PyGEM-OGGM +cd $GISDATA/cryosphere/global/PyGEM-OGGM + + +for VAR in mass_annual_mad_50sets_2000_2100 mass_annual_50sets_2000_2100 +do + for SCN in ssp119 ssp126 ssp245 ssp370 ssp585 + do + wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --keep-session-cookies --no-check-certificate --auth-no-challenge=on -r --reject "index.html*" -np -e robots=off -nd --continue https://n5eil01u.ecs.nsidc.org/HMA/HMA2_GGP.001/2000.01.01/R16_glac_${VAR}-${SCN}.nc + done +done + +gdalwarp NETCDF:$GISDATA/climate/global/CHIRPS/chirps-v2.0.monthly.nc:precip -t_srs EPSG:4326 -te -74 0 -58 13 -of 'GTiff' Test1.tif + +``` diff --git a/docusite/docs/cryosphere/global/Randolph-Glacier-Inventory.md b/docusite/docs/cryosphere/global/Randolph-Glacier-Inventory.md new file mode 100644 index 0000000..dd73f5b --- /dev/null +++ b/docusite/docs/cryosphere/global/Randolph-Glacier-Inventory.md @@ -0,0 +1,117 @@ +# Randolph Glacier Inventory, version 6.0 + + +> The Randolph Glacier Inventory (RGI 6.0) is a global inventory of glacier outlines. It is supplemental to the Global Land Ice Measurements from Space initiative (GLIMS). Production of the RGI was motivated by the Fifth Assessment Report of the Intergovernmental Panel on Climate Change (IPCC AR5). Future updates will be made to the RGI and the GLIMS Glacier Database in parallel during a transition period. As all these data are incorporated into the GLIMS Glacier Database and as download tools are developed to obtain GLIMS data in the RGI data format, the RGI will evolve into a downloadable subset of GLIMS, offering complete one-time coverage, version control, and a standard set of attributes. + +> For more details, and for a complete list of contributors, please see the RGI 6.0 Technical Report (PDF format). For the glacier regions used see the GTN-G Glacier Regions. + +> Global inventory of glacier outlines. It is supplemental to the Global Land Ice Measurements from Space initiative (GLIMS). RGI Version 6.0: released July 28, 2017. + +[Website](https://www.glims.org/RGI/) / +[user guidelines](http://www.glims.org/RGI/00_rgi60_TechnicalNote.pdf) + +## Citation +>RGI Consortium (2017). Randolph Glacier Inventory – A Dataset of Global Glacier Outlines: Version 6.0: Technical Report, Global Land Ice Measurements from Space, Colorado, USA. Digital Media. DOI: https://doi.org/10.7265/N5-RGI-60 + +## Data access + +To download data from the [Randolph Glacier Inventory 6.0](https://www.glims.org/RGI/), check the [user guidelines](http://www.glims.org/RGI/00_rgi60_TechnicalNote.pdf) + +http://www.glims.org/RGI/rgi60_dl.html + +## Data download and preparation + +RGI Version 6.0: released July 28, 2017. + +```sh +DPATH=cryosphere/global +DNAME=RGI_6.0 + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +wget --continue https://www.glims.org/RGI/rgi60_files/00_rgi60.zip +##Additionally download the geotiff +wget --continue http://www.glims.org/RGI/rgi60_files/00_rgi60_30-30grid.tif + +``` + +```sh +cd $WORKDIR +cp $GISDATA/$DPATH/$DNAME/00_rgi60.zip $WORKDIR + unzip 00_rgi60.zip + unzip 00_rgi60_attribs.zip + unzip 16_rgi60_LowLatitudes.zip + +grep RGI60-16.013[8-9] 16_rgi60_LowLatitudes.csv +``` + + +We import this dataset in postgis for further data preparation and selection + +```sh +mkdir -p $WORKDIR/RGI60 +cd $WORKDIR/RGI60 +for ZIPFILE in $(ls *zip) +do + unzip -u $ZIPFILE +done + +psql gisdata jferrer -c "CREATE SCHEMA rgi60" +for SHPFILE in 00_rgi60_O1Regions 00_rgi60_O2Regions +do + ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=rgi60 -nlt PROMOTE_TO_MULTI $SHPFILE.shp $SHPFILE + done + +## one by one to test for errors: + ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=rgi60 -nlt PROMOTE_TO_MULTI 01_rgi60_Alaska.shp 01_rgi60_Alaska -nln rgi60_total + psql gisdata jferrer -c "ALTER TABLE rgi60.rgi60_total DROP column ogc_fid" + +## some files have old encodings + file 19_rgi60_AntarcticSubantarctic.dbf + dbfdump 19_rgi60_AntarcticSubantarctic.dbf > test + file test + iconv -f ISO-8859-1 -t utf-8 test > test.utf8.txt + +## easily fixed with: + echo "ISO-8859-1" > 19_rgi60_AntarcticSubantarctic.cpg + echo "ISO-8859-1" > 07_rgi60_Svalbard.cpg + echo "ISO-8859-1" > 08_rgi60_Scandinavia.cpg + + + ## now we can proceed with all files +for SHPFILE in 02_rgi60_WesternCanadaUS.shp 03_rgi60_ArcticCanadaNorth.shp 04_rgi60_ArcticCanadaSouth.shp 05_rgi60_GreenlandPeriphery.shp 06_rgi60_Iceland.shp 09_rgi60_RussianArctic.shp 10_rgi60_NorthAsia.shp 11_rgi60_CentralEurope.shp 12_rgi60_CaucasusMiddleEast.shp 13_rgi60_CentralAsia.shp 14_rgi60_SouthAsiaWest.shp 15_rgi60_SouthAsiaEast.shp 16_rgi60_LowLatitudes.shp 17_rgi60_SouthernAndes.shp 18_rgi60_NewZealand.shp 07_rgi60_Svalbard.shp 08_rgi60_Scandinavia.shp 19_rgi60_AntarcticSubantarctic.shp +do + echo $SHPFILE + ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=rgi60 -lco OVERWRITE=yes -nlt PROMOTE_TO_MULTI $SHPFILE -nln rgi60_tmp + psql gisdata jferrer -c "ALTER TABLE rgi60.rgi60_tmp DROP column ogc_fid" + psql gisdata jferrer -c "INSERT INTO rgi60.rgi60_total SELECT * FROM rgi60.rgi60_tmp" + echo " |--> Listo\n" +done +psql gisdata jferrer -c "DROP TABLE rgi60.rgi60_tmp" + psql gisdata jferrer -c "ALTER TABLE rgi60.rgi60_total ADD CONSTRAINT rgi_idx PRIMARY KEY (rgiid)" +rm * +``` + +This way we can summarize information according to documented variables, for example, just `psql gisdata` and: + +```sql +SELECT o1region,o2region,count(*) as nr from rgi60.rgi60_total group by o1region,o2region order by o1region,o2region; +SELECT o1region,count(*) as nr from rgi60.rgi60_total group by o1region order by o1region; +select count(distinct rgiid),count(distinct glimsid),count(*) from rgi60.rgi60_total; + +``` + +Explore the RGI 6.0 database: + +```sql + +select ogc_fid,rgi_code,wgms_code,full_name from rgi60."00_rgi60_o2regions" where rgi_code like '16%'; +select rgiid,glimsid,bgndate,enddate,o2region,area,status,linkages,name from rgi60.rgi60_total + where o1region like '16%'; + + select o1region,o2region,count(distinct rgiid),sum(area) from rgi60.rgi60_total + where o1region like '16%' + group by o1region,o2region; + +``` diff --git a/docusite/docs/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md b/docusite/docs/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md new file mode 100644 index 0000000..dde7e0a --- /dev/null +++ b/docusite/docs/cryosphere/global/Sea-ice-climatologies-SMMR-SSMIS.md @@ -0,0 +1,114 @@ +# Sea Ice Trends and Climatologies from SMMR and SSM/I-SSMIS, Version 3 + +[Webpage](https://nsidc.org/data/NSIDC-0192/versions/3) + +Ice cover or sea ice concentration is measured as the percentage of the ocean surface covered by ice. Ice persistence is the percentage of months over the data set time period that ice existed at a location (sea ice concentration > 15 %). + +Along with one historical data file from the Electrically Scanning Microwave Radiometer (ESMR), these data are derived from the Scanning Multichannel Microwave Radiometer (SMMR), the Special Sensor Microwave/Imager (SSM/I), and the Special Sensor Microwave Imager/Sounder (SSMIS). + +#### Citation +> Stroeve, J. and W. N. Meier. 2018. *Sea Ice Trends and Climatologies from SMMR and SSM/I-SSMIS, Version 3*. [Indicate subset used]. Boulder, Colorado USA. **NASA National Snow and Ice Data Center Distributed Active Archive Center**. doi: [10.5067/IJ0T7HFHB9Y6](https://doi.org/10.5067/IJ0T7HFHB9Y6). [Date Accessed]. + +#### Data access + +Data is available at https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0192_seaice_trends_climo_v3/ +Use Earth-data login details + + +#### Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/cryosphere/global/SMMR_SeaIceTrends +cd $GISDATA/cryosphere/global/SMMR_SeaIceTrends + + + +## Update ~/.netrc with login and password and use --auth-no-challenge=on + +for HEMISPHERE in n s +do + for MONTH in jan feb mar apr may jun jul aug sep oct nov dec + do + ## Another option, update ~/.netrc with login and password + wget --auth-no-challenge=on --continue https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0192_seaice_trends_climo_v3/monthly-climatology/mean.${MONTH}.1979-2019.${HEMISPHERE} + wget --auth-no-challenge=on --continue https://daacdata.apps.nsidc.org/pub/DATASETS/nsidc0192_seaice_trends_climo_v3/ice-persistence/persistence.${MONTH}.1979-2019.${HEMISPHERE} + done +done + + +``` + +See [this advice](https://nsidc.org/support/22256950-How-do-I-import-the-sea-ice-trends-data-into-ArcGIS-) on data format. + +For the northern hemisphere + + +```sh + +for VAR in persistence mean +do + for MONTH in jan feb mar apr may jun jul aug sep oct nov dec + do + mv $VAR.$MONTH.1979-2018.n $VAR.$MONTH.1979-2018.n.bil + echo "nrows 448 + ncols 304 + nbands 1 + nbits 8 + layout bil + byteorder I + ulxmap -3837500 + ulymap 5837500 + xdim 25000 + ydim 25000" > $VAR.$MONTH.1979-2018.n.hdr + ## EPSG:3411 + gdalwarp $VAR.$MONTH.1979-2018.n.bil -s_srs "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs" $VAR.$MONTH.1979-2018.n.tif + done +done +``` + +For the southern hemisphere + +```sh +for VAR in persistence mean +do + for MONTH in jan feb mar apr may jun jul aug sep oct nov dec + do + mv $VAR.$MONTH.1979-2018.s $VAR.$MONTH.1979-2018.s.bil + echo "nrows 332 + ncols 316 + nbands 1 + nbits 8 + layout bil + byteorder I + ulxmap -3937500 + ulymap 4337500 + xdim 25000 + ydim 25000" > $VAR.$MONTH.1979-2018.s.hdr + # EPSG:3412 + gdalwarp $VAR.$MONTH.1979-2018.s.bil -s_srs "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs" $VAR.$MONTH.1979-2018.s.tif + done +done + +``` + +Combining both + +```sh +for VAR in persistence mean +do + for MONTH in jan feb mar apr may jun jul aug sep oct nov dec + do + gdalwarp $VAR.$MONTH.1979-2018.n.tif $VAR.$MONTH.1979-2018.s.tif -t_srs "+proj=latlong +datum=WGS84" -te -180 -90 180 90 $VAR.$MONTH.1979-2018.tif + done +done + +``` + +#### Notes +* Pole hole: area not measured due to orbit inclination. For calculations it is considered to have > 15 % ice concentration. For total ice-covered area, the pixels under the pole hole are not used. In the Southern Hemisphere this does not affect sea ice data set. +* For SMMR, the hole is 611 km in radius and is located poleward of 84.5 degrees North. For SSM/I and SSMIS, the hole is 311 km in radius and is located poleward of 87.2 degrees North. This means there is a discontinuity in the Northern Hemisphere ice-covered area time series across the instrument transitions. +* The temporal coverage for this data set is 26 October 1978 to 31 December 2018. +* Spatial resolution is 25 km x 25 km diff --git a/docusite/docs/cryosphere/global/Sea-ice-index.md b/docusite/docs/cryosphere/global/Sea-ice-index.md new file mode 100644 index 0000000..f636b68 --- /dev/null +++ b/docusite/docs/cryosphere/global/Sea-ice-index.md @@ -0,0 +1,28 @@ +# Sea Ice Index, Version 3 + +[Webpage](https://nsidc.org/data/G02135/versions/3) + + +#### Citation +> Fetterer, F., K. Knowles, W. N. Meier, M. Savoie, and A. K. Windnagel. 2017, updated daily. Sea Ice Index, Version 3. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5K072F8. [Date Accessed]. + +#### Data access + +Data is available at ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/ +Use Earth-data login details + + +#### Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/cryosphere/global/SeaIceIndex +cd $GISDATA/cryosphere/global/SeaIceIndex + +wget -b --continue -np -nH --recursive --cut-dirs=3 ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/north/monthly/geotiff/ + +wget -b --continue -np -nH --recursive --cut-dirs=3 ftp://sidads.colorado.edu/DATASETS/NOAA/G02135/south/monthly/geotiff/ + +``` diff --git a/docusite/docs/cryosphere/global/World-Glacier-Inventory.md b/docusite/docs/cryosphere/global/World-Glacier-Inventory.md new file mode 100644 index 0000000..7845f17 --- /dev/null +++ b/docusite/docs/cryosphere/global/World-Glacier-Inventory.md @@ -0,0 +1,56 @@ +# World Glacier Inventory, Version 1 + +The World Glacier Inventory ([WGI](https://nsidc.org/data/g01130)) represents a a snapshot of the glacier distribution in the second half of the 20th century. It contains information for over 130,000 glaciers, based primarily on aerial photographs and maps, most glaciers have a single data entry. It is based on the World Glacier Monitoring Service (WGMS 1989). + +#### Citation +> WGMS, and National Snow and Ice Data Center (comps.). 1999, updated 2012. World Glacier Inventory, Version 1. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/10.7265/N5/NSIDC-WGI-2012-02. [Date Accessed]. + +#### Data access +Available at: ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01130/ + +#### Data download and preparation + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +DPATH=cryosphere/global +DNAME=WGI_2012 + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +wget --continue ftp://sidads.colorado.edu/pub/DATASETS/NOAA/G01130/wgi_shapefile_feb2012.zip + +``` + +We import this dataset in postgis for further data preparation and selection + +```sh +psql gisdata jferrer -c "CREATE SCHEMA wgi" + +ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=wgi -nlt PROMOTE_TO_MULTI $GISDATA/inventories/WGI_2012/wgi_shapefile_feb2012.shp WGI_2012 + +``` + +This way we can summarize information according to documented variables, for example: + +```sql +SELECT prim_class,count(*) as nr from wgi.wgi_shapefile_feb2012 group by prim_class; +``` + +En el que ''prim_class'' es una de las siguientes: + +| Code | Name | Description | +|---|---|---| +|0 | Miscellaneous | Any type not listed below. | +|1 | Continental Ice Sheet | Inundates areas of continental size. | +|2 | Ice Field | Ice masses of the sheet or blanket type with a thickness that is insufficient to obscure the subsurface topography. | +|3 | Ice Cap | Dome-shaped ice masses with radial flow. | +|4 | Outlet Glacier | Drains an ice sheet, ice field, or ice cap, usually of valley glacier form; the catchment area may not be easily defined. | +|5 | Valley Glacier | Flows down a valley; the catchment area is well defined. | +|6 | Mountain Glacier | Cirque, niche type, crater type, or hanging glacier; also includes ice aprons and groups of small units. | +|7 | Glacieret and Snowfield | Small ice masses of indefinite shape in hollows, river beds, or on protected slopes that have developed from snow drift, avalanches, and/or particularly heavy accumulation in certain years. Usually no marked flow pattern is visible; and it has been in existence for at least two consecutive years. | +|8 | Ice Shelf | Floating ice sheet of considerable thickness attached to a coast nourished by a glacier or glaciers; snow accumulation on its surface or bottom freezing. | +|9 | Rock Glacier | Lava-stream-like debris mass containing ice in several possible forms and moving slowly downslope. | diff --git a/docusite/docs/cryosphere/global/subglacial-lakes-inventory.md b/docusite/docs/cryosphere/global/subglacial-lakes-inventory.md new file mode 100644 index 0000000..884dca9 --- /dev/null +++ b/docusite/docs/cryosphere/global/subglacial-lakes-inventory.md @@ -0,0 +1,46 @@ +# Inventory of Subglacial lakes + +Point location of known subglacial lakes in both hemispheres. + +#### Citation + +This was assembled by D. Keith from following sources. + +> Wright, A., & Siegert, M. (2012). *A fourth inventory of Antarctic subglacial lakes*. **Antarctic Science**, 24(6), 659-664. doi:[10.1017/S095410201200048X](http://dx.doi.org/10.1017/S095410201200048X) + +> Siegert Martin J., Ross Neil and Le Brocq Anne M. Recent advances in understanding Antarctic subglacial lakes and hydrology374Philosophical Transactions of the Royal Society A: Mathematical, Physical and Engineering Sciences https://doi.org/10.1098/rsta.2014.0306 + +> Palmer, S. J., Dowdeswell, J. A., Christoffersen, P., Young, D. A., Blankenship, D. D., Greenbaum, J. S., Benham, T., Bamber, J., and Siegert, M. J. ( 2013), Greenland subglacial lakes detected by radar, Geophys. Res. Lett., 40, 6154– 6159, doi:10.1002/2013GL058383. + +> Thór Marteinsson, V., Rúnarsson, Á., Stefánsson, A. et al. Microbial communities in the subglacial waters of the Vatnajökull ice cap, Iceland. ISME J 7, 427–437 (2013). https://doi.org/10.1038/ismej.2012.97 + +> Livingstone, S., Utting, D., Ruffell, A. et al. Discovery of relict subglacial lakes and their geometry and mechanism of drainage. Nat Commun 7, ncomms11767 (2016). https://doi.org/10.1038/ncomms11767 + +> Bowling, J.S., Livingstone, S.J., Sole, A.J. et al. Distribution and dynamics of Greenland subglacial lakes. Nat Commun 10, 2810 (2019). https://doi.org/10.1038/s41467-019-10821-w + +#### Data access + +A spreadsheet with the original data from the *A fourth inventory of Antarctic subglacial lakes* is available at: +* https://www.cambridge.org/core/journals/antarctic-science/article/fourth-inventory-of-antarctic-subglacial-lakes/81B35C31B0DFCE1B3A0705B779D3AF58#fndtn-supplementary-materials + +The zipfiles were provided directly by D. Keith (pers. comm.). + +#### Data download and preparation + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +DPATH=cryosphere/global +DNAME=subglacial-lakes + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +## scp /opt/gisdata/inventories/subglacial_lakes/* $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/subglacial-lakes + + +``` + +#### Notes diff --git a/docusite/docs/cryosphere/regional/CCAMLR.md b/docusite/docs/cryosphere/regional/CCAMLR.md new file mode 100644 index 0000000..0ec7626 --- /dev/null +++ b/docusite/docs/cryosphere/regional/CCAMLR.md @@ -0,0 +1,15 @@ +# CCAMLR Public Data Repository + + Commission for the Conservation of Antarctic Marine Living Resources (CCAMLR) +https://www.ccamlr.org/ + +## Public data Repository + +https://github.com/ccamlr/data + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/cryosphere/regional/CCAMLR +cd $GISDATA/cryosphere/regional/CCAMLR +git clone git@github.com:ccamlr/data.git +``` diff --git a/docusite/docs/cryosphere/regional/IPG-Chile.md b/docusite/docs/cryosphere/regional/IPG-Chile.md new file mode 100644 index 0000000..1dfaeb4 --- /dev/null +++ b/docusite/docs/cryosphere/regional/IPG-Chile.md @@ -0,0 +1,20 @@ +# Inventario Publico de Glaciares - Chile + +https://dga.mop.gob.cl/Paginas/InventarioGlaciares.aspx +https://www.ide.cl/index.php/noticias/item/2167-inventario-publico-de-glaciares-2022-disponible-para-la-ciudadania + +````sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +DPATH=cryosphere/regional +DNAME=IPG-Chile + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +## Download error +# wget --continue https://dga.mop.gob.cl/estudiospublicaciones/mapoteca/Documents/IPG2022.zip + +## copy from local download +# scp ~/Downloads/IPG2022.zip $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/regional/IPG-Chile/ +``` diff --git a/docusite/docs/cryosphere/regional/NGI-Argentina.md b/docusite/docs/cryosphere/regional/NGI-Argentina.md new file mode 100644 index 0000000..33c537d --- /dev/null +++ b/docusite/docs/cryosphere/regional/NGI-Argentina.md @@ -0,0 +1,22 @@ +# Inventario Nacional de Glaciares - Argentina + +https://www.glaciaresargentinos.gob.ar/ + +> Zalazar, L., Ferri, L., Castro, M., Gargantini, H., Gimenez, M., Pitte, P., . . . Villalba, R. (2020). Spatial distribution and characteristics of Andean ice masses in Argentina: Results from the first National Glacier Inventory. Journal of Glaciology, 66(260), 938-949. doi:10.1017/jog.2020.55 + +> IANIGLA-Inventario Nacional de Glaciares. 2018. Resumen ejecutivo de los resultados del Inventario Nacional de Glaciares. IANIGLA-CONICET, Ministerio de Ambiente y Desarrollo Sustentable de la Nación. Pp. 27. + +Register and download from https://www.glaciaresargentinos.gob.ar/?page_id=2571 + +````sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +DPATH=cryosphere/regional +DNAME=NGI-Argentina + +mkdir -p $GISDATA/$DPATH/$DNAME/ +cd $GISDATA/$DPATH/$DNAME/ + +## copy from local download +# scp ~/Downloads/00-Shapefile-Completo.zip $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/regional/NGI-Argentina/ +``` diff --git a/docusite/docs/ecological/global/Ecological-Marine-Units.md b/docusite/docs/ecological/global/Ecological-Marine-Units.md new file mode 100644 index 0000000..b5e9e0b --- /dev/null +++ b/docusite/docs/ecological/global/Ecological-Marine-Units.md @@ -0,0 +1,58 @@ +# Ecological Marine Units + +Webpage at https://www.esri.com/en-us/about/science/ecological-marine-units/overview + +#### Citation +> Sayre, R.G., D.J. Wright, S.P. Breyer, K.A. Butler, K. Van Graafeiland, M.J. Costello, P.T. Harris, K.L. Goodin, J.M. Guinotte, Z. Basher, M.T. Kavanaugh, P.N. Halpin, M.E. Monaco, N. Cressie, P. Aniello, C.E. Frye, and D. Stephens. 2017. A three-​dimensional mapping of the ocean based on environmental data. Oceanography 30(1):90–103, https://doi.org/10.5670/oceanog.2017.116 + +#### Data access + +Data is available at https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/ and https://esri.maps.arcgis.com/home/item.html?id=20a0247deee0432aa2f4790b89615ae9 + +#### Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecological/global/EcologicalMarineUnits +cd $GISDATA/ecological/global/EcologicalMarineUnits + +wget --continue https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/GlobalEcologicalMarineUnits.mpk + + +cd $WORKDIR +7z x $GISDATA/stratification/EcologicalMarineUnits/EMUGlobalOcean.mpk + +ogrinfo v104/emuglobal.gdb +ogrinfo -geom=NO v104/emuglobal.gdb EMUMaster | head +ogrinfo -geom=NO v104/emuglobal.gdb EMUoptimized | head + +psql gisdata -c "CREATE SCHEMA emu" +## not sure what is the difference between both, will use 'optimized' for now +ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=emu v104/emuglobal.gdb emuoptimized +##ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=emu v104/emuglobal.gdb emumaster + +``` + +Explore in PostGIS `psql -d gisdata` + +```sql +\dt emu. +-- several fields to explore +\x +select * from emu.emuoptimized limit 1; +\x +select depth_lvl,count(*) from emu.emuoptimized group by depth_lvl ; +select cluster37, nameemu,count(*) from emu.emuoptimized group by cluster37,nameemu order by nameemu; +\x +select * from emu.emuoptimized where depth_lvl=24 limit 1; +-- points are 3D but I am not sure how to interpret the third coordinate +select st_astext(wkb_geometry) from emu.emuoptimized where depth_lvl=94 limit 5; +select st_astext(wkb_geometry) from emu.emuoptimized where cluster37=36 limit 5; + +select st_z(wkb_geometry) as z, count(*) from emu.emuoptimized group by z; + +``` + +#### Notes +* [how-to in ArcGIS](https://community.esri.com/groups/ecological-marine-units/blog/2017/01/03/getting-started-with-ecological-marne-units-emu-s-using-arcgis-desktop) diff --git a/docusite/docs/ecological/global/FAO-GEZ.md b/docusite/docs/ecological/global/FAO-GEZ.md new file mode 100644 index 0000000..af0aedc --- /dev/null +++ b/docusite/docs/ecological/global/FAO-GEZ.md @@ -0,0 +1,26 @@ +# FAO-GEZ +The Global Forest Resources Assessment (FRA) of the Food and Agriculture Organization of the United Nations (FAO) presents global and regional forest data by global ecological zone (GEZ). The GEZ spa... + +#### Citation + +> FAO (2012) Global Ecological Zones for FAO Forest Reporting: 2010 Update + +#### Data + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecological/global/FAO-GEZ +cd $GISDATA/ecological/global/FAO-GEZ +wget -b --continue 'http://www.fao.org/geonetwork/srv/en/resources.get?id=47105&fname=gez2010.zip&access=private' --output-document=gez2010.zip + +``` + +```sh +cd $WORKDIR + unzip $GISDATA/ecosystems/FAO-GEZ/gez2010.zip + + ogrinfo -al -geom=no gez_2010_wgs84.shp | less + +``` diff --git a/docusite/docs/ecological/global/NatureMap-IUCN-habitats.md b/docusite/docs/ecological/global/NatureMap-IUCN-habitats.md new file mode 100644 index 0000000..ef7e789 --- /dev/null +++ b/docusite/docs/ecological/global/NatureMap-IUCN-habitats.md @@ -0,0 +1,44 @@ +# A global map of terrestrial habitat types + +#### Citation + + +Data paper: +> Jung, M., Dahal, P.R., Butchart, S.H.M. et al. A global map of terrestrial habitat types. Sci Data 7, 256 (2020). https://doi.org/10.1038/s41597-020-00599-8 + +Zenodo dataset: +> Martin Jung, Prabhat Raj Dahal, Stuart H. M. Butchart, Paul F. Donald, Xavier De Lamo, Myroslava Lesiv, … Piero Visconti. (2020). A global map of terrestrial habitat types (Version 001_full) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3673586 +> Martin Jung, Prabhat Raj Dahal, Stuart H. M. Butchart, Paul F. Donald, Xavier De Lamo, Myroslava Lesiv, … Piero Visconti. (2020). A global map of terrestrial habitat types (Version 003) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3925749 + +#### Data + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecological/global/NatureMap +cd $GISDATA/ecological/global/NatureMap + +# version 1` +wget -b --continue 'https://zenodo.org/record/3673586/files/iucn_habitatclassification_composite_ver001.zip?download=1' --output-document=iucn_habitatclassification_composite_ver001.zip + +# version 3 +for k in iucn_habitatclassification_composite_lvl1_ver003.zip iucn_habitatclassification_composite_lvl2_ver003.zip lvl1_frac_1km_ver003.zip lvl2_frac_1km_ver003.zip iucn_habitatclassification_code_ver003.zip +do + wget -b --continue 'https://zenodo.org/record/3925749/files/'${k}'?download=1' --output-document=${k} +done +``` + +```sh +cd $WORKDIR + unzip $GISDATA/ecosystems/NatureMap/iucn_habitatclassification_composite_lvl2_ver003.zip + gdalinfo iucn_habitatclassification_composite_lvl2_ver003.tif + +## 1km aggregations + unzip $GISDATA/ecosystems/NatureMap/lvl2_frac_1km_ver003.zip + + unzip $GISDATA/ecosystems/NatureMap/iucn_habitatclassification_code_ver003.zip + +gdalwarp -te -180 -90 180 90 lvl2_frac_1km_ver003/iucn_habitatclassification_fraction_lvl2__108_Forest\ –\ Subtropical-tropical\ swamp__ver003.tif NatureMap-108-1km.tif + +``` diff --git a/docusite/docs/ecoregions/global/FEOW-ecoregions.md b/docusite/docs/ecoregions/global/FEOW-ecoregions.md new file mode 100644 index 0000000..2e9bd70 --- /dev/null +++ b/docusite/docs/ecoregions/global/FEOW-ecoregions.md @@ -0,0 +1,60 @@ +# Fresh water ecoregions of the world (FEOW) + +Direct download + +https://www.feow.org/ + +https://geospatial.tnc.org/datasets/38da4656e8074e1c820c42cc21cd76cd_0 + +## Citation +> Abell R, Thieme ML, Revenga C, Bryer M, Kottelat M, Bogutskaya N, Coad B, Mandrak N, Contreras Balderas S, Bussing W, Stiassny MLJ, Skelton P, Allen GR, Unmack P, Naseka A, Ng R, Sindorf N, Robertson J, Armijo E, Higgins JV, Heibel TJ, Wikramanayake E, Olson D, López HL, Reis RE, Lundberg JG, Sabaj Pérez MH, Petry P (2008) Freshwater ecoregions of the world: A new map of biogeographic units for freshwater biodiversity conservation, BioScience 58: 403–414. DOI:10.1641/B580507 + + +## Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/global/FEOW/ +cd $GISDATA/ecoregions/global/FEOW/ + +# version from FEOW.org +wget --continue https://www.feow.org/files/downloads/GIS_hs_snapped.zip + +# version from TNC: no direct download? copy from local version +#export LOCALUSER=... +#export LOCALHOST=... +#export LOCALPATH=... +# scp ${LOCALUSER}@${LOCALHOST}:$LOCALPATH/'Freshwater_Ecoregions_Of_the_World_(FEOW)-fgdb.zip' $GISDATA/ecoregions/global/FEOW/ + +``` + +Create a new geopackage file with valid topology and assign the (implied) projection information: +```sh +module add python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 +unzip -u GIS_hs_snapped.zip +unzip -u Freshwater_Ecoregions_Of_the_World_\(FEOW\)-fgdb.zip + +ogrinfo c4be086f842b4fbbab544a047bc90dcb.gdb Freshwater_Ecoregions |less + + +if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] +then + ## ogr2ogr -f "GPKG" feow_hs_valid.gpkg GIS_hs_snapped feow_hydrosheds -nlt PROMOTE_TO_MULTI -a_srs "+proj=longlat +datum=WGS84" -makevalid + + ogr2ogr -f "GPKG" feow_all_valid.gpkg c4be086f842b4fbbab544a047bc90dcb.gdb Freshwater_Ecoregions -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid + +fi + +``` + + +```sh + + +psql gisdata -c "CREATE SCHEMA FEOW" +ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=feow GIS_hs_snapped feow_hydrosheds -nlt PROMOTE_TO_MULTI + +## this one is in pseudomercator... +ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=feow c4be086f842b4fbbab544a047bc90dcb.gdb/ -nln fw_ecoregions -nlt PROMOTE_TO_MULTI +``` diff --git a/docusite/docs/ecoregions/global/Large-Marine-Ecosystems.md b/docusite/docs/ecoregions/global/Large-Marine-Ecosystems.md new file mode 100644 index 0000000..3acb5dc --- /dev/null +++ b/docusite/docs/ecoregions/global/Large-Marine-Ecosystems.md @@ -0,0 +1,51 @@ +# Large Marine Ecosystems of the World + +https://ioc.unesco.org/topics/large-marine-ecosystems +https://celebrating200years.noaa.gov/breakthroughs/ecosystems/lme_map.jpg +https://www.lmehub.net/#patagonian-shelf +https://iwlearn.net/marine/lmes/list +https://www.marineregions.org/sources.php#ecosystems + + +## Citation +> Pope, Addy. (2017). Large Marine Ecosystems of the World, [Dataset]. University of Edinburgh. https://doi.org/10.7488/ds/1902. + + +## Data download and preparation + +https://datashare.ed.ac.uk/handle/10283/2552 + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecoregions/global/LME/ +cd $GISDATA/ecoregions/global/LME/ + +wget --continue 'https://datashare.ed.ac.uk/bitstream/handle/10283/2552/lmes_64.zip?sequence=1&isAllowed=y' --output-document=lmes_64.zip +## use --no-check-certificate if necessary + + +``` + + +```sh +qsub -I -l select=1:ncpus=2:mem=120gb,walltime=12:00:00 + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 + +export WD=$GISDATA/ecoregions/global/LME/ +cd $WD +unzip -u $WD/lmes_64.zip + +if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] + then + ogr2ogr -f "GPKG" lmes_64_valid.gpkg $WD/lmes_64.shp lmes_64 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid + else + ogr2ogr -f "GPKG" lmes_64_valid.gpkg $WD/lmes_64.shp lmes_64 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" +fi + +``` diff --git a/docusite/docs/ecoregions/global/MEOW-ecoregions.md b/docusite/docs/ecoregions/global/MEOW-ecoregions.md new file mode 100644 index 0000000..d19f7d7 --- /dev/null +++ b/docusite/docs/ecoregions/global/MEOW-ecoregions.md @@ -0,0 +1,67 @@ +# MEOW : Marine ecoregions of the world + +#### Citation + +> Spalding MD, Fox HE, Allen GR, Davidson N, Ferdaña ZA, Finlayson M, Halpern BS, Jorge MA, Lombana A, Lourie SA, Martin KD, McManus E, Molnar J, Recchia CA, Robertson J (2007). Marine Ecoregions of the World: a bioregionalization of coast and shelf areas. BioScience 57: 573-583. doi: 10.1641/B570707. Data URL: http://data.unep-wcmc.org/datasets/38 + +> The Nature Conservancy (2012). Marine Ecoregions and Pelagic Provinces of the World. GIS layers developed by The Nature Conservancy with multiple partners, combined from Spalding et al. (2007) and Spalding et al. (2012). Cambridge (UK): The Nature Conservancy. DOIs: 10.1641/B570707; 10.1016/j.ocecoaman.2011.12.016. Data URL: http://data.unep-wcmc.org/datasets/38 + +> Spalding MD, Agostini VN, Rice J, Grant SM (2012). Pelagic provinces of the world): a biogeographic classification of the world’s surface pelagic waters. Ocean and Coastal Management 60: 19-30. DOI: 10.1016/j.ocecoaman.2011.12.016. Data URL: http://data.unep-wcmc.org/datasets/38 + +#### Data download and preparation + +We download the versions available at: +* +* + + + +#### Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/global/MEOW/ +cd $GISDATA/ecoregions/global/MEOW/ + +wget --continue 'https://c402277.ssl.cf1.rackcdn.com/publications/351/files/original/MEOW_FINAL.zip?1349120553' --output-document=MEOW_FINAL.zip + +wget --continue 'https://datadownload-production.s3.amazonaws.com/WCMC036_MEOW_PPOW_2007_2012_v1.zip' +``` + + +```sh +qsub -I -l select=1:ncpus=2:mem=120gb,walltime=12:00:00 + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 + +export WD=$GISDATA/ecoregions/global/MEOW/ +cd $WD +unzip -u $WD/MEOW_FINAL.zip +unzip -u $WD/WCMC036_MEOW_PPOW_2007_2012_v1.zip + +if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] +then + ogr2ogr -f "GPKG" meow_ecos_valid.gpkg $WD/MEOW/meow_ecos.shp meow_ecos -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid +fi + +if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] +then + ogr2ogr -f "GPKG" meow_ppow_valid.gpkg $WD/DataPack-14_001_WCMC036_MEOW_PPOW_2007_2012_v1/01_Data/WCMC-036-MEOW-PPOW-2007-2012.shp WCMC-036-MEOW-PPOW-2007-2012 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid -nln meow_ppow + ogr2ogr -f "GPKG" meow_ppow_noCoast_valid.gpkg $WD/DataPack-14_001_WCMC036_MEOW_PPOW_2007_2012_v1/01_Data/WCMC-036-MEOW-PPOW-2007-2012-NoCoast.shp WCMC-036-MEOW-PPOW-2007-2012-NoCoast -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid -nln meow_ppow_no_coast +fi + +``` + + +```sh +cd $WORKDIR +unzip $GISDATA/biogeografia/MEOW/MEOW_FINAL.zip + +psql gisdata -c "CREATE SCHEMA MEOW" +ogr2ogr -overwrite -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=meow MEOW/meow_ecos.shp -nlt PROMOTE_TO_MULTI + + +``` diff --git a/docusite/docs/ecoregions/global/OneEarth-bioregions.md b/docusite/docs/ecoregions/global/OneEarth-bioregions.md new file mode 100644 index 0000000..65c2ca8 --- /dev/null +++ b/docusite/docs/ecoregions/global/OneEarth-bioregions.md @@ -0,0 +1,14 @@ +# Bioregions 2020 + +https://www.oneearth.org/bioregions-2020/ +https://www.oneearth.org/bioregions/ + +*Citation*: + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/global/ +cd $GISDATA/ecoregions/global/ + +``` diff --git a/docusite/docs/ecoregions/global/RESOLVE-ecoregions.md b/docusite/docs/ecoregions/global/RESOLVE-ecoregions.md new file mode 100644 index 0000000..395361f --- /dev/null +++ b/docusite/docs/ecoregions/global/RESOLVE-ecoregions.md @@ -0,0 +1,105 @@ +# Biogeography and ecoregions + + +## [RESOLVE ecoregions](https://ecoregions2017.appspot.com) + +*Citation*: Dinerstein E, Olson D, Joshi A, Vynne C, Burgess ND, Wikramanayake E, Hahn N, Palminteri S, Hedao P, Noss R, Hansen M, Locke H, Ellis EE, Jones B, Barber CV, Hayes R, Kormos C, Martin V, Crist E, Sechrest W, Price L, Baillie JEM, Weeden D, Suckling K, Davis C, Sizer N, Moore R, Thau D, Birch T, Potapov P, Turubanova S, Tyukavina A, de Souza N, Pintea L, Brito JC, Llewellyn Barnekow Lillesø JP, van Breugel P, Graudal L, Voge M, Al-Shammari KF, Saleem M (2017) An Ecoregion-Based Approach to Protecting Half the Terrestrial Realm, BioScience 67: 534–545. [DOI: 10.1093/biosci/bix014](https://doi.org/10.1093/biosci/bix014) + +[Documentation](https://developers.google.com/earth-engine/datasets/catalog/RESOLVE_ECOREGIONS_2017) + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/global/TEOW/ +cd $GISDATA/ecoregions/global/TEOW/ + +wget -b --continue https://storage.googleapis.com/teow2016/Ecoregions2017.zip + +``` + + + + +```sh +qsub -I -l select=1:ncpus=12:mem=120gb,walltime=24:00:00 + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 + +export WD=$GISDATA/ecoregions/global/TEOW/ +export OUTPUT=$WD/teow2017-valid-output +cd $WD +unzip -u $WD/Ecoregions2017.zip + +ogr2ogr -f "CSV" $OUTPUT Ecoregions2017.shp -sql "SELECT ECO_BIOME_,ECO_ID,ECO_NAME FROM Ecoregions2017" + +cd $OUTPUT + +for BIOME in $(cut ${OUTPUT}/Ecoregions2017.csv -d, -f1 | tail -n+2 | sort | uniq) +do + mkdir -p $OUTPUT/$BIOME + cd $OUTPUT/$BIOME + grep $BIOME $OUTPUT/Ecoregions2017.csv > list + for ECOID in $(cut list -d, -f2 | sed -s s/'"'//g) + do + if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] + then + ogr2ogr -f "GPKG" teow_${ECOID}_valid.gpkg $WD/Ecoregions2017.shp Ecoregions2017 -where "ECO_ID='${ECOID}'" -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid + else + ogr2ogr -f "GPKG" teow_${ECOID}.gpkg $WD/Ecoregions2017.shp Ecoregions2017 -where "ECO_ID='${ECOID}'" -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" + fi + echo $BIOME $ECOID done! $(date) + done +done + +if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] +then + ogr2ogr -f "GPKG" teow_2017_valid.gpkg $WD/Ecoregions2017.shp Ecoregions2017 -nlt PROMOTE_TO_MULTI -t_srs "+proj=longlat +datum=WGS84" -makevalid +else + echo " update GDAL version" +fi +``` + + + + +```sql + +cd $WORKDIR +unzip $GISDATA/biogeografia/RESOLVE_Ecoregions/Ecoregions2017.zip + +psql gisdata -c "CREATE SCHEMA resolve" +ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" Ecoregions2017.shp -lco SCHEMA=resolve -nlt PROMOTE_TO_MULTI +``` + +Now in `psql gisdata`: + +```sql + +CREATE UNIQUE INDEX CONCURRENTLY ecoregions2017_idx +ON resolve.Ecoregions2017 (eco_name, eco_biome_, eco_id); + +CREATE TABLE IF NOT EXISTS resolve.typology_xwalk ( + eco_name character varying(150), + eco_biome_ character varying(254), + eco_id numeric(11,0), + efg_code varchar(10), + version varchar(10), + map_code varchar(20), + map_version varchar(10), + occurrence smallint, + contributors text[], + FOREIGN KEY (eco_name, eco_biome_, eco_id) REFERENCES resolve.Ecoregions2017 (eco_name, eco_biome_, eco_id), + PRIMARY KEY (map_code, map_version, eco_id) +); + + + +``` + +Use script xwalk-resolve-ecoregions.R to populate the table. + + +` select * from resolve.typology_xwalk where efg_code='TF1.4'; ` diff --git a/docusite/docs/ecoregions/global/TNC-ecoregions.md b/docusite/docs/ecoregions/global/TNC-ecoregions.md new file mode 100644 index 0000000..ba4612d --- /dev/null +++ b/docusite/docs/ecoregions/global/TNC-ecoregions.md @@ -0,0 +1,23 @@ +# TNC terrestrial ecoregions + +http://maps.tnc.org/gis_data.html + +This is the master spatial data layer for TNC's terrestrial ecoregions of the world, exported from the geodatabase listed above. Note that it includes Mangroves, Inland Water, and Rock and Ice MHTs, although they are not being handled by terrestrial assessments. This layer is based on WWF's ecoregions outside the United States, and loosely based on Bailey's ecoregions (from the USDA Forest Service) within the United States. + +##Metadata +http://maps.tnc.org/files/metadata/TerrEcos.xml + +##GIS data + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/global/TEOW/ +cd $GISDATA/ecoregions/global/TEOW/ + +wget -b --continue http://maps.tnc.org/files/shp/terr-ecoregions-TNC.zip +``` + + +ls /opt/gisdata/vectorial/TNC/ diff --git a/docusite/docs/ecoregions/global/WWF-ecoregions.md b/docusite/docs/ecoregions/global/WWF-ecoregions.md new file mode 100644 index 0000000..8bd3728 --- /dev/null +++ b/docusite/docs/ecoregions/global/WWF-ecoregions.md @@ -0,0 +1,25 @@ + +# Terrestrial ecoregions according to WWF + +http://www.worldwildlife.org/publications/terrestrial-ecoregions-of-the-world + +Terrestrial Ecoregions of the World (TEOW) is a biogeographic regionalization of the Earth's terrestrial biodiversity. Our biogeographic units are ecoregions, which are defined as relatively large units of land or water containing a distinct assemblage of natural communities sharing a large majority of species, dynamics, and environmental conditions. There are 867 terrestrial ecoregions, classified into 14 different biomes such as forests, grasslands, or deserts. Ecoregions represent the original distribution of distinct assemblages of species and communities. + +##GIS data +## + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/global/TEOW/ +cd $GISDATA/ecoregions/global/TEOW/ + +wget -b -o wwf-wget-log --continue 'http://assets.worldwildlife.org/publications/15/files/original/official_teow.zip?1349272619&_ga=1.109260037.1823268057.1469281022' --output-document=official_teow.zip +``` + +cd /opt/gisdata/vectorial/WWF/ +unzip official_teow.zip + +cd /opt/gisdata/vectorial/WWF/official/ +ogr2ogr -spat -90 -60 -25 15 SAM_terr_ecos.shp wwf_terr_ecos.shp +ogr2ogr -spat -138 3 -40 60 NAC_terr_ecos.shp wwf_terr_ecos.shp diff --git a/docusite/docs/ecoregions/regional/Canada-ecoprovinces.md b/docusite/docs/ecoregions/regional/Canada-ecoprovinces.md new file mode 100644 index 0000000..0f139b8 --- /dev/null +++ b/docusite/docs/ecoregions/regional/Canada-ecoprovinces.md @@ -0,0 +1,43 @@ +# Terrestrial Ecoprovinces of Canada + + +Ecological Framework Levels +Level Number of Units Definition +Ecozone 15 At the top of the hierarchy, it defines the ecological mosaic of Canada on a sub-continental scale. They represent an area of the earth's surface representative of large and very generalized ecological units characterized by interactive and adjusting abiotic and biotic factors. Canada is divided into 15 terrestrial ecozones. +Ecoprovince 53 A subdivision of an ecozone characterized by major assemblages of structural or surface forms, faunal realms, and vegetation, hydrology, soil, and macro climate. For example, the Newfoundland ecoprovince (no. 6.4) is one of six ecoprovinces within the Boreal Shield Ecozone. +Ecoregion 194 A subdivision of an ecoprovince characterized by distinctive regional ecological factors, including climate, physiography, vegetation, soil, water, and fauna. For example, the Maritime Barrens ecoregion (no. 114) is one of nine ecoregions within the Newfoundland ecoprovince. +Ecodistrict 1021 A subdivision of an ecoregion characterized by a distinctive assemblages of relief, landforms, geology, soil, vegetation, water bodies and fauna. For example, the Jeddore Lake ecodistrict (no. 473) is one of five within the Maritime Barrens ecoregion. + +https://open.canada.ca/data/en/dataset/98fa7335-fbfe-4289-9a0e-d6bf3874b424 + +> Marshall, I.B., Schut, P.H., and Ballard, M. 1999. A National Ecological Framework for Canada: Attribute Data. Agriculture and Agri-Food Canada, Research Branch, Centre for Land and Biological Resources Research and Environment Canada, State of the Environment Directorate, Ecozone Analysis Branch. Ottawa/Hull. http://sis.agr.gc.ca/cansis/nsdb/ecostrat/1999report/index.html (accessed July 4, 2017). + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/regional/Canada +cd $GISDATA/ecoregions/regional/Canada + +##mv ~/Downloads/ECOPROVINCE_V2_2_GDB.zip $GISDATA/vegetation/Canada + +wget --continue http://www.agr.gc.ca/atlas/supportdocument_documentdesupport/aafcEcostratification/en/ISO_19131_National_Ecological_Framework_for_Canada_Data_Product_Specification.pdf + +wget -b --continue http://www.agr.gc.ca/atlas/data_donnees/bio/aafcEcostratification/gml/ECOPROVINCE_V2_2_GML.zip + +wget -b --continue http://www.agr.gc.ca/atlas/data_donnees/bio/aafcEcostratification/gml/ECODISTRICT_V2_2_GML.zip + +``` + +Import data into postgis + +```sh +unzip ECOPROVINCE_V2_2_GML.zip +unzip ECODISTRICT_V2_2_GML.zip +psql gisdata -c "CREATE SCHEMA opencanada" +ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=opencanada $GISDATA/vegetation/Canada/BIO_CA_TER_ECOPROVINCE_V2_2/BIO_CA_TER_ECOPROVINCE_V2_2.gml +ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=opencanada $GISDATA/vegetation/Canada/BIO_CA_TER_ECODISTRICT_V2_2/BIO_CA_TER_ECODISTRICT_V2_2.gml + + +select distinct ecozone_id,ecoprovince_id,ecoregion_id,ecodistrict_id from opencanada.bio_ca_ter_ecodistrict_v2_2 order by ecozone_id,ecoprovince_id,ecoregion_id,ecodistrict_id; + +``` diff --git a/docusite/docs/ecoregions/regional/IBRA-v7.md b/docusite/docs/ecoregions/regional/IBRA-v7.md new file mode 100644 index 0000000..cc35de4 --- /dev/null +++ b/docusite/docs/ecoregions/regional/IBRA-v7.md @@ -0,0 +1,20 @@ + +# Interim Biogeographic Regionalisation for Australia (IBRA), Version 7 (Regions) + +Details on +https://www.environment.gov.au/fed/catalog/search/resource/details.page?uuid=%7B4A2321F0-DD57-454E-BE34-6FD4BDE64703%7D + +```sh + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecoregions/regional/IBRAv7 +cd $GISDATA/ecoregions/regional/IBRAv7 + +# version from environment.gov.au: no direct download? copy from local version +#export LOCALUSER=... +#export LOCALHOST=... +#export LOCALPATH=... +# scp ${LOCALUSER}@${LOCALHOST}:$LOCALPATH/ $GISDATA/ecoregions/regional/IBRAv7/ + +``` diff --git a/docusite/docs/ecosystems/global/EarthEnv-TCF-2021.md b/docusite/docs/ecosystems/global/EarthEnv-TCF-2021.md new file mode 100644 index 0000000..b716600 --- /dev/null +++ b/docusite/docs/ecosystems/global/EarthEnv-TCF-2021.md @@ -0,0 +1,38 @@ +# EarthEnv Tropical Cloud Forests + +## citation + +> Karger, D.N., Kessler, M., Lehnert, M. et al. Limited protection and ongoing loss of tropical cloud forest biodiversity and ecosystems worldwide. Nat Ecol Evol (2021). https://doi.org/10.1038/s41559-021-01450-y +> Wilson AM, Jetz W (2016) *Remotely Sensed High-Resolution Global Cloud Dynamics for Predicting Ecosystem and Biodiversity Distributions*. **PLoS Biol** 14(3): e1002415. doi:[10.1371/journal.pbio.1002415](http://doi.org/10.1371/journal.pbio.1002415). [Dataset available on-line](http://www.earthenv.org/) + +## data access +- older version: https://earthenv.org//cloud +- newer version: https://www.earthenv.org/cloudforest + +## data preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/ecosystems/global/EarthEnv-TCF-2021 +cd $GISDATA/ecosystems/global/EarthEnv-TCF-2021 + +wget --continue https://data.earthenv.org/tcf/tcf_ensemble_mnv16_2001-2018.tif +wget --continue https://data.earthenv.org/tcf/tcf_ensemble_mn_sd_2001-2018_v16.zip + +# for the older data: +wget http://www.earthenv.org//cloud + grep .tif cloud > links + wget --continue --force-html -i links + +``` + +The model used locations of known cloud forests were obtained from the Tropical Montane Cloud Forest Sites database Tropical Montane Cloud Forest Sites database. This data can be obtained from https://www.unep-wcmc.org/resources-and-data/tropical-montane-cloud-forest-sites, download requires registration. Once downloaded we move the data to this directory: + +```sh +scp Tropical_Montane_Cloud_Forest_Sites_1997.zip $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/ecosystems/global/EarthEnv-TCF-2021 + +``` + +Description of data here: + +https://www.earthenv.org/metadata/Cloud_DataDescription.pdf diff --git a/docusite/docs/ecosystems/global/Functional-Biomes.md b/docusite/docs/ecosystems/global/Functional-Biomes.md new file mode 100644 index 0000000..cf00739 --- /dev/null +++ b/docusite/docs/ecosystems/global/Functional-Biomes.md @@ -0,0 +1,7 @@ +# Functional Biomes of the World + +## Citation + +> Higgins, S.I., Buitenwerf, R. and Moncrieff, G.R. (2016), Defining functional biomes and monitoring their change globally. Glob Change Biol, 22: 3583-3593. https://doi.org/10.1111/gcb.13367 + +> Higgins, Steven I.; Buitenwerf, Robert; Moncrieff, Glenn; Moncrieff, Glenn R. (2017), Data from: Defining functional biomes and monitoring their change globally, Dryad, Dataset, https://doi.org/10.5061/dryad.3pm63 diff --git a/docusite/docs/ecosystems/global/Global-intertidal-change.md b/docusite/docs/ecosystems/global/Global-intertidal-change.md new file mode 100644 index 0000000..ab683c6 --- /dev/null +++ b/docusite/docs/ecosystems/global/Global-intertidal-change.md @@ -0,0 +1,41 @@ +# Global intertidal change + +https://www.globalintertidalchange.org/data-viewer/tidal-wetland-change + +## Citation + +Murray, N. J., T. A. Worthington, P. Bunting, S. Duce, V. Hagger, C. E. Lovelock, R. Lucas, M. I. Saunders, M. Sheaves, M. Spalding, N. J. Waltham & M. B. Lyons (2022). "High-resolution mapping of losses and gains of Earth's tidal wetlands." Science. 376, 744-749. doi:10.1126/science.abm9583 + +## Data description + +The principal data products from the global intertidal change analysis of the Landsat archive is a set of change maps, comprising: + +"loss", 0-1 - integer representing loss, where 1 (loss) and 0 (no loss). + +"lossYear", 01:19, 3 - integer representing the end year of the time-step of analysis (e.g., 19 = 2017-2019). + +"lossType", 2,3,5 - integer representing intertidal ecosystem type: Tidal flat (2), Mangrove (3), Tidal marsh (5)). + +"gain", 0-1 - integer representing gain, where 1 (gain) and 0 (no gain). + +"gainYear", 01:19, 3 - integer representing the end year of the time-step of analysis (e.g., 19 = 2017-2019). + +"gainType", 2,3,5 - integer representing intertidal ecosystem type: Tidal flat (2), Mangrove (3), Tidal marsh (5)). + +In addition, we provide two tidal wetland extent data layers: + +"twprobability_start", 0-100 - integer which represents the agreement of random forest decision trees for the tidal wetland class in t1 of the analysis, 1999-2001 + +"twprobability_end", 0-100 - integer which represents the agreement of random forest decision trees for the tidal wetland class in t7 of the analysis, 2017-2019 + +## Data access + +For analysis, the dataset is made directly available in Google Earth Engine via the Earth Engine data catalogue (dataset link): + +```{js} +ee.ImageCollection("JCU/Murray/GIC/global_tidal_wetland_change/2019") + + +The dataset is also available as shards on GCP Cloud Storage and can be downloaded using the `gsutil` command `gsutil -m cp "gs://gic-archive/gic-2019-v1-0/v1-0-1/*.tif" "PATH-TO-LOCAL-FOLDER"` + +The datasets generated for this study are available for viewing at the Global Intertidal Change website. diff --git a/docusite/docs/ecosystems/global/WCMC-coral-reefs.md b/docusite/docs/ecosystems/global/WCMC-coral-reefs.md new file mode 100644 index 0000000..869014d --- /dev/null +++ b/docusite/docs/ecosystems/global/WCMC-coral-reefs.md @@ -0,0 +1,23 @@ +# Global-Coral-Reefs-2018 + +#### citation + +> UNEP-WCMC, WorldFish Centre, WRI, TNC (2018). Global distribution of warm-water coral reefs, compiled from multiple sources including the Millennium Coral Reef Mapping Project. Version 4.0. Cambridge (UK): UN Environment World Conservation Monitoring Centre. URL: http://data.unep-wcmc.org/datasets/1 + +> IMaRS-USF (Institute for Marine Remote Sensing-University of South Florida) (2005). Millennium Coral Reef Mapping Project. Unvalidated maps. These maps are unendorsed by IRD, but were further interpreted by UNEP World Conservation Monitoring Centre. Cambridge (UK): UNEP World Conservation Monitoring Centre + +> Spalding MD, Ravilious C, Green EP (2001). World Atlas of Coral Reefs. Berkeley (California, USA): The University of California Press. 436 pp. + +> IMaRS-USF, IRD (Institut de Recherche pour le Developpement) (2005). Millennium Coral Reef Mapping Project. Validated maps. Cambridge (UK): UNEP World Conservation Monitoring Centre + +#### data access +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecosystems/global/WCMC-coral-reefs +cd $GISDATA/ecosystems/global/WCMC-coral-reefs + +wget --continue http://wcmc.io/WCMC_008 --output-document=WCMC_008.zip + +``` diff --git a/docusite/docs/ecosystems/global/WCMC-kelp.md b/docusite/docs/ecosystems/global/WCMC-kelp.md new file mode 100644 index 0000000..131e3aa --- /dev/null +++ b/docusite/docs/ecosystems/global/WCMC-kelp.md @@ -0,0 +1,30 @@ +# Kelpforest-potential-dist +Modelled Global Distribution of the Kelp Biome + +## citation + +> Jayathilake D.R.M., Costello MJ. 2020. A modelled global distribution of the kelp biome. Biological Conservation 252, 108815. https://doi.org/10.1016/j.biocon.2020.108815 + +> Jayathilake D.R.M., Costello M.J. 2021. Version 2 of the world map of laminarian kelp benefits from more Arctic data and makes it the largest marine biome. Biological Conservation online. https://doi.org/10.1016/j.biocon.2021.109099 + + +## data access + +The map is available at WCMC: https://data.unep-wcmc.org/datasets/49 + +This seems to be the original version 1. For the version 2, I haven't found the map, but the validation and training points are available in additional FigShare repositories: +https://doi.org/10.17608/k6.auckland.12278786.v2 +https://doi.org/10.17608/k6.auckland.12272033.v1 + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecosystems/global/WCMC-kelp +cd $GISDATA/ecosystems/global/WCMC-kelp + +wget --continue http://wcmc.io/UniAuk-004 --output-document=UniAuk-004-ModelledDistributionKelpBiome.zip +wget https://auckland.figshare.com/ndownloader/files/22623905 --output-document=validation-data.csv +wget https://auckland.figshare.com/ndownloader/files/22623896 --output-document=training-data.csv + +``` diff --git a/docusite/docs/ecosystems/global/WCMC-mangrove-2000.md b/docusite/docs/ecosystems/global/WCMC-mangrove-2000.md new file mode 100644 index 0000000..74da070 --- /dev/null +++ b/docusite/docs/ecosystems/global/WCMC-mangrove-2000.md @@ -0,0 +1,58 @@ +# Global Distribution of Mangroves USGS, version 1.3 + +> This dataset shows the global distribution of mangrove forests, derived from earth observation satellite imagery. The dataset was created using Global Land Survey (GLS) data and the Landsat archive. Approximately 1,000 Landsat scenes were interpreted using hybrid supervised and unsupervised digital image classification techniques. See Giri et al. (2011) for full details. + + +## Citation + +> Giri C, Ochieng E, Tieszen LL, Zhu Z, Singh A, Loveland T, Masek J, Duke N (2011). *Status and distribution of mangrove forests of the world using earth observation satellite data* (version 1.3, updated by UNEP-WCMC). **Global Ecology and Biogeography** 20: 154-159. doi: [10.1111/j.1466-8238.2010.00584.x] . + +> Giri, C., E. Ochieng, L.L.Tieszen, Z. Zhu, A. Singh, T. Loveland, J. Masek, and N. Duke. 2013. **Global Mangrove Forests Distribution, 2000**. Palisades, NY: NASA Socioeconomic Data and Applications Center (SEDAC). https://doi.org/10.7927/H4J67DW8. Accessed DAY MONTH YEAR + + +## Data access +Available at WCMC: +http://data.unep-wcmc.org/datasets/4 + +Available at SEDAC: +https://sedac.ciesin.columbia.edu/data/set/lulc-global-mangrove-forests-distribution-2000 + + +## Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecosystems/global/WCMC-mangroves-2000 +cd $GISDATA/ecosystems/global/WCMC-mangroves-2000 + +wget --continue http://wcmc.io/WCMC_010 --output-document=WCMC-mangroves-2000.zip + +``` + +Check download and use `makevalid` to avoid problems when intersecting this layer +```sh +unzip $GISDATA/ecosystems/global/WCMC-mangroves-2000/WCMC-mangroves-2000.zip + +tree WCMC010_MangrovesUSGS2011_v1_4/ + +# qsub -I -l select=1:ncpus=12:mem=120gb,walltime=24:00:00 + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 + +export WD=$GISDATA/ecosystems/global/WCMC-mangroves-2000/ +export OUTPUT=$WD/USGS-valid-output +mkdir -p $OUTPUT +cd $OUTPUT +if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] + then + ogr2ogr -f "GPKG" MangroveUSGS2011_valid.gpkg $WD/WCMC010_MangrovesUSGS2011_v1_4/01_Data/14_001_WCMC010_MangroveUSGS2011_v1_4.shp 14_001_WCMC010_MangroveUSGS2011_v1_4 -nlt PROMOTE_TO_MULTI -makevalid + else + echo " ogr version does not support -makevalid flag" + ##ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI + fi + +``` diff --git a/docusite/docs/ecosystems/global/WCMC-mangrove-GMW.md b/docusite/docs/ecosystems/global/WCMC-mangrove-GMW.md new file mode 100644 index 0000000..83192a3 --- /dev/null +++ b/docusite/docs/ecosystems/global/WCMC-mangrove-GMW.md @@ -0,0 +1,106 @@ +# Global Mangrove Watch (1996 - 2016) + +> The GMW aims to provide geospatial information about mangrove extent and changes to the Ramsar Convention, national wetland practitioners, decision makers and NGOs. It is part of the Ramsar Science and Technical Review Panel (STRP) work plan for 2016-2018 and a Pilot Project to the Ramsar Global Wetlands Observation System (GWOS), which is implemented under the GEO-Wetlands Initiative. The primary objective of the GMW has been to provide countries lacking a national mangrove monitoring system with first cut mangrove extent and change maps, to help safeguard against further mangrove forest loss and degradation. + +> The GMW has generated a global baseline map of mangroves for 2010 using ALOS PALSAR and Landsat (optical) data, and changes from this baseline for six epochs between 1996 and 2016 derived from JERS-1 SAR, ALOS PALSAR and ALOS-2 PALSAR-2. Annual maps are planned from 2018 and onwards. + +## Citation + +> Bunting P., Rosenqvist A., Lucas R., Rebelo L-M., Hilarides L., Thomas N., Hardy A., Itoh T., Shimada M. and Finlayson C.M. (2018). The Global Mangrove Watch – a New 2010 Global Baseline of Mangrove Extent. Remote Sensing 10(10): 1669. doi: 10.3390/rs1010669. + +> Thomas N, Lucas R, Bunting P, Hardy A, Rosenqvist A, Simard M. (2017). Distribution and drivers of global mangrove forest change, 1996-2010. PLOS ONE 12: e0179302. doi: 10.1371/journal.pone.0179302 + +## Data access +Available at WCMC: +http://data.unep-wcmc.org/datasets/45 + + +## Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecosystems/global/WCMC-mangroves-GMW +cd $GISDATA/ecosystems/global/WCMC-mangroves-GMW + +wget --continue http://wcmc.io/GMW_001 --output-document=WCMC-mangroves-GMW.zip + +``` + +```sh +qsub -I -l select=1:ncpus=12:mem=120gb,walltime=24:00:00 + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 + +export WD=$GISDATA/ecosystems/global/WCMC-mangroves-GMW + +cd $WD +unzip -u $WD/WCMC-mangroves-GMW.zip +export OUTPUT=$WD/GMW-valid-output +mkdir -p $OUTPUT +cd $OUTPUT +for YEAR in 2016 1996 2007 2008 2009 2010 2015 +do + echo $YEAR + if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] + then + ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI -makevalid + else + echo " ogr version does not support -makevalid flag" + ##ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI + fi + + echo GMW $YEAR done! $(date) + +done +``` + + +Alternative approach using PostGIS (in localhost) + +```sh +export WD=$GISDATA/ecosystems/global/WCMC-mangroves-GMW + +cd $WD +unzip -u $WD/WCMC-mangroves-GMW.zip + +psql gisdata -c "CREATE SCHEMA wcmc" + +for YEAR in 2016 1996 2007 2008 2009 2010 2015 +do + echo $YEAR + ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" $WD/01_Data/GMW_${YEAR}_v2.shp -lco SCHEMA=wcmc -nlt PROMOTE_TO_MULTI -nln gmw_${YEAR} + + echo GMW $YEAR done! $(date) + +done + +``` + + +```sql + +\dt wcmc. + +SELECT ogc_fid,ST_AREA(wkb_geometry),ST_AsText(ST_CENTROID(wkb_geometry)) FROM wcmc.gmw_2016 where ST_IsValid(wkb_geometry) LIMIT 10; + +-- SELECT ST_IsValid(wkb_geometry) as valid,count(*) FROM wcmc.gmw_2016 GROUP BY valid; +-- SELECT ogc_fid,ST_AREA(ST_MakeValid(wkb_geometry)),ST_AsText(ST_CENTROID(wkb_geometry)),ST_IsValid(wkb_geometry) FROM wcmc.gmw_2016 where NOT ST_IsValid(wkb_geometry) LIMIT 10; + +-- this throws many lines of warnings +UPDATE wcmc.gmw_2016 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- UPDATE 63099 + +UPDATE wcmc.gmw_2015 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- + +UPDATE wcmc.gmw_1996 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- + +UPDATE wcmc.gmw_2007 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- +UPDATE wcmc.gmw_2008 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- +UPDATE wcmc.gmw_2009 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- +UPDATE wcmc.gmw_2010 set wkb_geometry=ST_MakeValid(wkb_geometry) WHERE NOT ST_IsValid(wkb_geometry); -- + + +``` diff --git a/docusite/docs/ecosystems/global/WCMC-mangrove-types.md b/docusite/docs/ecosystems/global/WCMC-mangrove-types.md new file mode 100644 index 0000000..e47723c --- /dev/null +++ b/docusite/docs/ecosystems/global/WCMC-mangrove-types.md @@ -0,0 +1,66 @@ +# Mangrove-Typology-2020 +A global biophysical typology of mangroves + +## Citation + +> Worthington, T.A., zu Ermgassen, P.S.E., Friess, D.A., Krauss, K.W., Lovelock, C.E., Thorley, J., Tingey, R., Woodroffe, C.D., Bunting, P., Cormier, N., Lagomasino, D., Lucas, R., Murray, N.J., Sutherland, W.J., Spalding, M., 2020. A global biophysical typology of mangroves and its relevance for ecosystem structure and deforestation. Sci. Rep. 10, 14652. https://doi.org/10.1038/s41598-020-71194-5 + +## Data access + +Available at WCMC: +https://data.unep-wcmc.org/datasets/48 + +## Data download and preparation + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecosystems/global/WCMC-mangrove-types +cd $GISDATA/ecosystems/global/WCMC-mangrove-types + +wget --continue https://wcmc.io/TNC-006 --output-document=WCMC-mangrove-types.zip + +``` + +Check download +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +cd $GISDATA/ecosystems/global/WCMC-mangrove-types + + +unzip -u $GISDATA/ecosystems/global/WCMC-mangrove-types/WCMC-mangrove-types.zip +tree TNC-006_BiophysicalTypologyMangroves/ + + +``` + + +```sh +qsub -I -l select=1:ncpus=4:mem=120gb,walltime=8:00:00 + +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 + +cd $GISDATA/ecosystems/global/WCMC-mangrove-types +unzip -u $WD/WCMC-mangrove-types.zip + +export WD=$GISDATA/ecosystems/global/WCMC-mangrove-types/TNC-006_BiophysicalTypologyMangroves/01_Data +export OUTPUT=$GISDATA/ecosystems/global/WCMC-mangrove-types/TNC-BioPhys-Mangrove-valid-output +mkdir -p $OUTPUT +cd $OUTPUT +for YEAR in 2016 1996 2010 2007 +do + echo $YEAR + if [ $(ogrinfo --version | grep "GDAL 3.2" -c) -eq 1 ] + then + ogr2ogr -f "GPKG" Mangrove_Typology_v2_2_${YEAR}_valid.gpkg $WD/Mangrove_Typology_v2_2_${YEAR}.shp Mangrove_Typology_v2_2_${YEAR} -nlt PROMOTE_TO_MULTI -makevalid + else + echo " ogr version does not support -makevalid flag" + ##ogr2ogr -f "GPKG" GMW_${YEAR}_valid.gpkg $WD/01_Data/GMW_${YEAR}_v2.shp GMW_${YEAR}_v2 -nlt PROMOTE_TO_MULTI + fi + echo $YEAR done! $(date) +done +``` diff --git a/docusite/docs/ecosystems/global/tidal-flats.md b/docusite/docs/ecosystems/global/tidal-flats.md new file mode 100644 index 0000000..67edf1d --- /dev/null +++ b/docusite/docs/ecosystems/global/tidal-flats.md @@ -0,0 +1,4 @@ +# Intertidal Change Explorer + +## Citation +> Murray N. J., Phinn S. R., DeWitt M., Ferrari R., Johnston R., Lyons M. B., Clinton N., Thau D. & Fuller R. A. (2019) The global distribution and trajectory of tidal flats. Nature. 565:222-225. http://dx.doi.org/10.1038/s41586-018-0805-8 diff --git a/docusite/docs/ecosystems/regional/CAM-ecosystems-map.md b/docusite/docs/ecosystems/regional/CAM-ecosystems-map.md new file mode 100644 index 0000000..c4d55b8 --- /dev/null +++ b/docusite/docs/ecosystems/regional/CAM-ecosystems-map.md @@ -0,0 +1,43 @@ +# MAP OF THE ECOSYSTEMS OF CENTRAL AMERICA + +Full map and GIS title and authors: + +World Bank and CCAD. 2000. "Ecosystems of Central America (GIS map files at 1:250,000)." World Bank, Comisión Centroamerica de Ambiente y Desarrollo (CCAD), World Institute for Conservation and Environment (WICE), and the Centro Agronómico Tropical de Investigación y Enseñanza (CIAT), Washington, D.C. (http://www.worldbank.org/ca-env). + +Full final document title and authors: + +Vreugdenhil, D., J. Meerman, A. Meyrat, L. Diego Gómez, and D. J. Graham. 2002. Map of the Ecosystems of Central America: Final Report. World Bank, Washington, D.C. + + +https://www.birdlist.org/cam/themes/ecosystems_map.htm + +CAM ECOSYSTEMS MAP +DOWNLOAD PAGE +https://www.birdlist.org/cam/themes/map_download_page.htm + + +http://www.projectmosquitia.com/files/Manual_Mapa_Ecosistemas.pdf + +http://www.bio-nica.info/Biblioteca/Vreugdenhil2002MapEcosystems.pdf + +http://documents.worldbank.org/curated/en/386971468223450848/Descripcion-de-los-ecosistemas + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecosystems/regional/worldbank-Central-America/ +cd $GISDATA/ecosystems/regional/worldbank-Central-America/ + +wget --continue https://www.birdlist.org/cam/themes/map_download_page.htm +grep href map_download_page.htm | grep zip > enlaces1 +wget -b --continue --force-html --base=https://www.birdlist.org/cam/themes/ -i enlaces1 +grep href map_download_page.htm | grep pdf > enlaces2 +wget --continue --force-html --base=https://www.birdlist.org/cam/themes/ -i enlaces2 + + +ls *utm* + ls *lam* + +``` diff --git a/docusite/docs/ecosystems/regional/Colombia-Terr-Eco-2015.md b/docusite/docs/ecosystems/regional/Colombia-Terr-Eco-2015.md new file mode 100644 index 0000000..2fcfa77 --- /dev/null +++ b/docusite/docs/ecosystems/regional/Colombia-Terr-Eco-2015.md @@ -0,0 +1,76 @@ +## Ecosistemas terrestres de Colombia + +> Etter A., Andrade A., Saavedra K., Amaya P. y P. Arévalo 2017. Risk assessment of Colombian continental ecosystems: An application of the Red List of Ecosystems methodology (v. 2.0). Final Report. Pontificia Universidad Javeriana and Conservación Internacional-Colombia. Bogotá. 138 pp. Final Report. Pontificia Universidad Javeriana and Conservación Internacional-Colombia. Bogotá. 138 pp. [Report](https://www.researchgate.net/publication/325498072_Risk_assessment_of_Colombian_continental_ecosystems_An_application_of_the_Red_List_of_Ecosystems_methodology_v_20). [Summary](https://iucnrle.org/static/media/uploads/references/published-assessments/Brochures/brochure_lre_colombia_v_2.0.pdf) + +Files provided by Andrés Etter -()- Alaska to Patagonia project + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecosystems/regional/Colombia +cd $GISDATA/ecosystems/regional/Colombia + +## +``` + +Original projection in WGS_1984_UTM_Zone_18N, o EPSG 32618 + +```sh +ogrinfo -al -geom=NO EcoOri_12052015_2014_TodosCriterios.shp | less + + +``` +This gets the data in the original projection and promoted to multi-geometry + +```sh + + psql gisdata jferrer -c "CREATE SCHEMA colombia_rle" + ## exclude shape_area column to avoid column precision error +ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -nlt PROMOTE_TO_MULTI -lco SCHEMA=ecocolombia $GISDATA/ecosistemas/RLEDB/Colombia/EcoOri_12052015_2014_TodosCriterios.shp -sql "SELECT COD, A1P, A1E, A2aP, A2aE, A2bP, A2bE, A3P, A3E, C2, D2, B1ai, B1aiiV1, B1aiiV2, B1aiii, B2ai, B2aiiV1, B2aiiV2, B2aiii, C2Precp, EvFinal FROM EcoOri_12052015_2014_TodosCriterios" + + +``` + +#### Crosswalk + +We checked the file `GETcrosswalk_Colombia_AEtter.xlsx` + +```sh +cp ~/proyectos/UNSW/ecosphere-db/input/xwalks/GETcrosswalk_Colombia_AEtter.xlsx $GISDATA/ecosistemas/RLEDB/Colombia +``` + +Run `R --vanilla`: + +```{r} +require(gdata) +require(dplyr) +require(readxl) +require(tidyr) +require("RPostgreSQL") + +gis.data <- Sys.getenv("GISDATA") + +XW <- read_excel(sprintf("%s/ecosistemas/RLEDB/Colombia/GETcrosswalk_Colombia_AEtter.xlsx",gis.data),sheet=3) %>% select(1:51) +colnames(XW)[2] <- "fullcode" + +XW %>% pivot_longer(cols=3:51, names_to = "EFG name", values_to = "membership") %>% filter(!is.na(membership)) %>% mutate(code=gsub("^[A-Za-z_]+-","",fullcode),EFG=gsub(" ","",gsub("(^[A-Za-z 0-9]+.[0-9]+)[A-Za-z -,/-]+","\\1",`EFG name`))) -> rslt + +drv <- dbDriver("PostgreSQL") ## remember to update .pgpass file +con <- dbConnect(drv, dbname = "gisdata", port = 5432,user = "jferrer", + host = ifelse( system("hostname -s",intern=T)=="terra","localhost","terra.ad.unsw.edu.au")) + +rslts <- dbWriteTable(con,c("ecocolombia","iucnget_xwalk"),rslt) +dbDisconnect(con) +``` + +Now we can make some queries in `psql`: + +```sql +select cod,evfinal,ST_Area(wkb_geometry),ST_Centroid(wkb_geometry) from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T1.3'); +select cod,evfinal,ST_Centroid(wkb_geometry) from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T6.1'); +select cod,evfinal,ST_Centroid(wkb_geometry) from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T6.5'); + +select fullcode,cod,EFG from ecocolombia.ecoori_12052015_2014_todoscriterios m left join ecocolombia.iucnget_xwalk x on m.cod=x.code where "EFG" IN ('T6.5'); + +``` diff --git a/docusite/docs/ecosystems/regional/EU-RLH.md b/docusite/docs/ecosystems/regional/EU-RLH.md new file mode 100644 index 0000000..0523b9d --- /dev/null +++ b/docusite/docs/ecosystems/regional/EU-RLH.md @@ -0,0 +1,16 @@ +# European Red List of habitats data deliverables + +https://forum.eionet.europa.eu/european-red-list-habitats/library/project-deliverables-data + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/ecosystems/regional/EU-RLH +cd $GISDATA/ecosystems/regional/EU-RLH + +wget --continue https://forum.eionet.europa.eu/european-red-list-habitats/library/project-deliverables-data/geodatabases/zip_export/do_export --output-document=geodatabases.zip + +unzip -u geodatabases.zip +# for some obscure reason this is read-protected +chmod 740 Geodatabases/* +chmod 640 Geodatabases/*/*.* +``` diff --git a/docusite/docs/ecosystems/regional/Ecosystem-types-Europe.md b/docusite/docs/ecosystems/regional/Ecosystem-types-Europe.md new file mode 100644 index 0000000..a7315f3 --- /dev/null +++ b/docusite/docs/ecosystems/regional/Ecosystem-types-Europe.md @@ -0,0 +1,50 @@ +# Ecosystem types of Europe + +> The dataset combines the Copernicus land service portfolio and marine bathymetry and seabed information with the non-spatial EUNIS habitat classification for a better biological characterization of ecosystems across Europe. As such it represents probabilities of EUNIS habitat presence for each MAES ecosystem type. + +> European Commision Technical report – 2016 – 095; Mapping and Assessment of Ecosystems and their Services — Mapping and assessing the condition of Europe's ecosystems: progress and challenges — 3rd Report – Final, March 2016 https://www.eea.europa.eu/data-and-maps/data/ecosystem-types-of-europe-1 + +http://cmshare.eea.europa.eu/s/KscZR3EcKrGmPbK/download + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/ecosystems/regional/MAES +cd $GISDATA/ecosystems/regional/MAES + +wget --continue http://cmshare.eea.europa.eu/s/KscZR3EcKrGmPbK/download --output-document="Ecosystem types of Europe - version 3.1 Full map.zip" +``` + + + +```sh +cd $GISDATA/ecosystems/regional/MAES +unzip -u Ecosystem\ types\ of\ Europe\ -\ version\ 3.1\ Full\ map.zip + +dbfdump Ecosystem\ types\ of\ Europe\ -\ version\ 3.1\ Full\ map/eea_r_3035_100_m_etm-full_2012_v3-1_r00.tif.vat.dbf + + +``` + +```{r} +require(foreign) +require(raster) +r0 <- raster(dir(sprintf("%s/ecosystems/regional/MAES/Ecosystem types of Europe - version 3.1 Full map",gis.data),pattern='tif$',full.names = T)) + +EUNIS.table <- read.dbf(dir(sprintf("%s/ecosystems/regional/MAES/Ecosystem types of Europe - version 3.1 Full map",gis.data),pattern='dbf$',full.names = T)) + +``` + +F - Heathland, scrub and tundra +30 7810607.00000000000 F1 Tundra +31 8550877.00000000000 F2 Arctic, alpine and subalpine scrub + 32 5448621.00000000000 F3 Temperate and mediterranean-montane scrub + 33 411768.00000000000 F4 Temperate shrub heathland + 34 4996471.00000000000 F5 Maquis, arborescent matorral and thermo-Mediterranean brushes + 35 1070059.00000000000 F6 Garrigue + 36 1791083.00000000000 F7 Spiny Mediterranean heaths (phrygana, hedgehog-heaths and related coastal cliff vegetation) + 37 95399.00000000000 F8 Thermo-Atlantic xerophytic scrub + 38 10687.00000000000 F9 Riverine and fen scrubs + 40 6371004.00000000000 FB Shrub plantations diff --git a/docusite/docs/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md b/docusite/docs/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md new file mode 100644 index 0000000..f0780a5 --- /dev/null +++ b/docusite/docs/ecosystems/regional/Myanmar-Terrestrial-Ecosystems.md @@ -0,0 +1,23 @@ +# Map of the terrestrial ecosystems of Myanmar, Version 1.0 + +## Citation for this map + +> Murray, Nicholas; Keith, David A.; TIzard, Robert; Duncan, Adam; Htut, Win Thuya; Hlaing, Nyan; et al. (2020): Map of the terrestrial ecosystems of Myanmar, Version 1.0. figshare. Dataset. https://doi.org/10.6084/m9.figshare.12364067.v3 + +> Murray, N.J., Keith, D.A., Tizard, R., Duncan, A., Htut, W.T., Hlaing, N., Oo, A.H., Ya, K.Z., Grantham, H. (2020) Threatened Ecosystems of Myanmar. An IUCN Red List of Ecosystems Assessment. Version 1.0. Wildlife Conservation Society. ISBN: 978-0-9903852-5-7. + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/ecosystems/regional/Myanmar +cd $GISDATA/ecosystems/regional/Myanmar + +wget --continue https://ndownloader.figshare.com/files/24190931 --output-document=MMR_EcosystemsMap.zip + + +unzip -u MMR_EcosystemsMap.zip + +ogrinfo MMR_EcosystemsMap_v1_1.shp -al -geom=no + +``` diff --git a/docusite/docs/fire/global/Global-Fire-Emission-Database.md b/docusite/docs/fire/global/Global-Fire-Emission-Database.md new file mode 100644 index 0000000..14aaa73 --- /dev/null +++ b/docusite/docs/fire/global/Global-Fire-Emission-Database.md @@ -0,0 +1,30 @@ +# Global Fire Emissions Database, Version 4.1 (GFEDv4) + +#### Citation + +> Randerson, J.T., G.R. van der Werf, L. Giglio, G.J. Collatz, and P.S. Kasibhatla. 2017. Global Fire Emissions Database, Version 4.1 (GFEDv4). ORNL DAAC, Oak Ridge, Tennessee, USA. https://doi.org/10.3334/ORNLDAAC/1293 + +#### Documentation + +https://daac.ornl.gov/VEGETATION/guides/fire_emissions_v4_R1.html + +#### Data availability + +Sign in to ORNL DAAC +https://daac.ornl.gov/cgi-bin/dsviewer.pl?ds_id=1293 + + + +#### Data preparation + + +```sh + +mkdir -p $GISDATA/fire/GFEDv4 +cd $GISDATA/fire/GFEDv4 +mv ~/Downloads/fire_emissions_v4_R1_1293.zip $GISDATA/fire/GFEDv4 + +cd $WORKDIR + unzip $GISDATA/fire/GFEDv4/fire_emissions_v4_R1_1293.zip + +``` diff --git a/docusite/docs/fire/global/Modis-burned-area.md b/docusite/docs/fire/global/Modis-burned-area.md new file mode 100644 index 0000000..e0f9bbc --- /dev/null +++ b/docusite/docs/fire/global/Modis-burned-area.md @@ -0,0 +1,72 @@ +Burned Area Products (MCD64A1) +Global fire location product (MCD14ML) + + +The latest version (Collection 6.1) of the MODIS Global Burned Area Product was released in 2017. + +http://modis-fire.umd.edu/ba.html + +MODIS Burned Area Product User's Guide at +http://modis-fire.umd.edu/files/MODIS_C6_Fire_User_Guide_B.pdf +https://modis-fire.umd.edu/files/MODIS_C61_BA_User_Guide_1.1.pdf + +MODIS Collection 6 and Collection 6.1 Active Fire Product User's Guide v1.0 (May 2021): +https://modis-fire.umd.edu/files/MODIS_C6_C6.1_Fire_User_Guide_1.0.pdf + + +```sh + +mkdir -p $GISDATA/fire/global/MCD64A1/HDF +cd $GISDATA/fire/global/MCD64A1/HDF + +touch ~/.wgetrc +## user and password from user guide (chapter 4) +echo "user=XXXX" > ~/.wgetrc +echo "password=XXXX" >> ~/.wgetrc + +SRV=fuoco.geog.umd.edu +VRS=C61 +PRD=MCD64A1 + +mkdir -p $GISDATA/fire/global/MCD64A1/HDF/ +cd $GISDATA/fire/global/MCD64A1/HDF/ + +sftp fire@fuoco.geog.umd.edu +cd data/MODIS/C61/MCD64A1/HDF/ +lmkdir h30v12 +lmkdir h29v12 +lmkdir h29v13 +lmkdir h28v13 + +lcd ../h30v12 +get h30v12/MCD64A1.A2014* +lcd ../h29v12 +get h29v12/MCD64A1.A2014* +lcd ../h29v13 +get h29v13/MCD64A1.A2014* +lcd ../h28v13 +get h28v13/MCD64A1.A2014* +bye + +rm ~/.wgetrc + +``` + + + +```sh +mkdir -p $GISDATA/fire/global/MCD14ML/ +cd $GISDATA/fire/global/MCD14ML/ +sftp fire@fuoco.geog.umd.edu +cd data/MODIS/C6/MCD14ML +ls MCD14ML.200* +progress +get -p MCD14ML.200* +get -p MCD14ML.202* +get -p MCD14ML.201* + + + + +``` + diff --git a/docusite/docs/fire/global/sensores_Modis_FIRMS.sh b/docusite/docs/fire/global/sensores_Modis_FIRMS.sh new file mode 100644 index 0000000..9cea18e --- /dev/null +++ b/docusite/docs/fire/global/sensores_Modis_FIRMS.sh @@ -0,0 +1,89 @@ +## modis burned area +##http://modis-fire.umd.edu/BA_getdata.html +##active fires +##ftp://fuoco.geog.umd.edu/ ## user fire, passwd burnt +## o mejor la página de FIRMS +## https://earthdata.nasa.gov/data/near-real-time-data/firms/active-fire-data + +mkdir -p ~/sensores/Modis/FIRMS +cd ~/sensores/Modis/FIRMS + +## alli consultamos https://firms.modaps.eosdis.nasa.gov/download/request.php +## y llenamos el formulario +## -74 -58 0 13 +##Area of Interest: Custom Polygon (View Map) +##Date Range: 2004-01-01 TO 2004-12-31 +##Data Format: shp +##Request Date: 2014-04-04 21:23:50 +##cd ~/CEBA/data/gisdata/FIRMS +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114461396662301_MCD14ML.zip + + +## Area of Interest: Custom Polygon (View Map) +## Date Range: 2005-01-01 TO 2005-12-31 +## Data Format: shp +## Request Date: 2014-04-05 07:02:55 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114481396698301_MCD14ML.zip + +## Area of Interest: Custom Polygon (View Map) +## Date Range: 2000-01-01 TO 2000-12-31 +## Data Format: shp +## Request Date: 2014-04-06 18:42:39 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114571396824306_MCD14ML.zip + +## Date Range: 2001-01-01 TO 2001-12-31 +## Request Date: 2014-04-06 19:00:14 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms114581396827901_MCD14ML.zip + + +##Date Range: 2002-01-01 to 2002-12-31 +##Date of Request: 2014-09-15 12:03:24 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms150621410799501_MCD14ML.zip + +##Date Range: 2003-01-01 TO 2003-12-31 +##Request Date: 2014-09-15 16:18:12 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms150821410814100_MCD14ML.zip + +##Date Range: 2006-01-01 TO 2006-12-31 +##Request Date: 2014-09-15 17:09:43 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms150831410817502_MCD14ML.zip + + +## Date Range: 2007-01-01 TO 2007-12-31 +## Request Date: 2015-01-27 10:24:22 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182491422373753_MCD14ML.zip +## Date Range: 2008-01-01 TO 2008-12-31 +## Request Date: 2015-01-27 10:29:03 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182501422373770_MCD14ML.zip + +## Date Range: 2009-01-01 TO 2009-12-31 +## Request Date: 2015-01-27 11:00:26 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182531422377101_MCD14ML.zip + +##Date Range: 2010-01-01 TO 2010-12-31 +## Request Date: 2015-01-27 11:02:04 +wget https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182541422377112_MCD14ML.zip + +## Date Range: 2011-01-01 TO 2011-12-31 +## Request Date: 2015-01-27 11:03:04 +wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182551422377124_MCD14ML.zip +wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms183431422636301_MCD14ML.zip + +##Date Range: 2012-01-01 TO 2012-12-31 +## Request Date: 2015-01-27 13:32:35 +wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182651422384301_MCD14ML.zip +##Date Range: 2013-01-01 TO 2013-12-31 +## Request Date: 2015-01-27 13:34:23 +wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182661422384314_MCD14ML.zip +##Date Range: 2014-01-01 TO 2014-12-31 +## Request Date: 2015-01-27 13:35:57 +wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms182671422384327_MCD14MDT.zip + +##Date Range: 2015-01-01 to 2015-12-31 +##Date of Request: 2016-03-16 10:00:38 +wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms315181458124226_MCD14DT.zip +##Date Range: 2016-01-01 to 2016-03-16 +##Date of Request: 2016-03-16 10:03:10 +wget --continue https://firms.modaps.eosdis.nasa.gov/download/tmp/firms315171458124201_MCD14ML.zip +############### +## diff --git a/docusite/docs/fire/regional/Fire-Australia-Forest.md b/docusite/docs/fire/regional/Fire-Australia-Forest.md new file mode 100644 index 0000000..9179042 --- /dev/null +++ b/docusite/docs/fire/regional/Fire-Australia-Forest.md @@ -0,0 +1,29 @@ +# Fires in Australia's forests + +## 2019-2020 + +https://www.awe.gov.au/abares/forestsaustralia/forest-data-maps-and-tools/fire-data#fire-area-and-area-of-forest-in-fire-area-by-jurisdiction + +## 2011–16 (2018) + +https://data.gov.au/data/dataset/fires-in-australia-s-forests-2011-16-2018 + +Continental spatial dataset of the extent and frequency of planned and unplanned fires occurring in forest in the five financial years between July 2011 and June 2016, assembled for Australia's State of the Forests Report 2018. + +https://www.agriculture.gov.au/abares/forestsaustralia/sofr/sofr-2018 + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + + + +mkdir -p $GISDATA/fire/regional/australia-forest-fire-2011-16 +cd $GISDATA/fire/regional/australia-forest-fire-2011-16 +wget --continue https://data.gov.au/dataset/c0cd6f5a-6b0f-4cd0-8980-1ca5b2c31006/resource/e99002e3-05b5-4a4f-8c1c-823d1b3e9713/download/fire_publish.zip + +wget --continue https://www.awe.gov.au/sites/default/files/abares/forestsaustralia/documents/datasets/sofr2018/fire_publish.zip + +unzip fire_publish.zip + +``` diff --git a/docusite/docs/ocean/global/OceanColorData.md b/docusite/docs/ocean/global/OceanColorData.md new file mode 100644 index 0000000..5518336 --- /dev/null +++ b/docusite/docs/ocean/global/OceanColorData.md @@ -0,0 +1,23 @@ + +Let's try these +https://oceandata.sci.gsfc.nasa.gov/directdataaccess/Level-3%20Mapped/Terra-MODIS/1999/355/ + +Download instructions here: https://oceancolor.gsfc.nasa.gov/data/download_methods/ + +Login details for earthdata in ~/.netrc as follow: + +```sh +echo "machine urs.earthdata.nasa.gov login USERNAME password PASSWD" > ~/.netrc ; > ~/.urs_cookies +chmod 0600 ~/.netrc +``` +where USERNAME and PASSWD are your Earthdata Login credentials. + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/ocean/global/OceanColorData +cd $GISDATA/ocean/global/OceanColorData + +wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --auth-no-challenge=on --content-disposition https://oceandata.sci.gsfc.nasa.gov/ob/getfile/TERRA_MODIS.19991221_20000320.L3m.SNWI.SST4.sst4.9km.nc +wget --load-cookies ~/.urs_cookies --save-cookies ~/.urs_cookies --auth-no-challenge=on --content-disposition https://oceandata.sci.gsfc.nasa.gov/ob/getfile/AQUA_MODIS.20020101_20021231.L3m.YR.SST4.sst4.9km.nc + +``` diff --git a/docusite/docs/plant-traits/global/TRY-database.md b/docusite/docs/plant-traits/global/TRY-database.md new file mode 100644 index 0000000..ae961ce --- /dev/null +++ b/docusite/docs/plant-traits/global/TRY-database.md @@ -0,0 +1,14 @@ + + +Kattge, J, Boenisch, G, Diaz, S, et al. TRY plant trait database - enhanced coverage and open access. Glob Change Biol. 2020; 26: 119-188. https://doi.org/10.1111/gcb.14904 + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + +mkdir -p $GISDATA/plant-traits/global/TRY-Plant-traits +cd $GISDATA/plant-traits/global/TRY-Plant-traits + + + +``` diff --git a/docusite/docs/plant-traits/global/TRY-leaf-trait-maps-2018.md b/docusite/docs/plant-traits/global/TRY-leaf-trait-maps-2018.md new file mode 100644 index 0000000..e47621b --- /dev/null +++ b/docusite/docs/plant-traits/global/TRY-leaf-trait-maps-2018.md @@ -0,0 +1,39 @@ +Reference for publication +Moreno-Martínez, Á., Camps-Valls, G., Kattge, J., Robinson, N., Reichstein, M., Bodegom, P. V., Kramer, K., Cornelissen, J. H. C., Reich, P. B., Bahn, M., Niinemets, Ü., Peñuelas, J., Craine, J., Cerabolini, B., Minden, V., Laughlin, D. C., Sack, L., Allred, B., Baraloto, C., Byun, C., Soudzilovskaia, N. A., Running, S. W. (2018). A methodology to derive global maps of leaf traits using remote sensing and climate data. Remote Sensing of Environment, 218, 69-88. https://doi.org/10.1016/j.rse.2018.09.006 + +Reference to data package: Moreno-Martínez, Á., Camps-Valls, G., Kattge, J., Robinson, N., Reichstein, M., Bodegom, P. V., Running, S. W. (2020) Global maps of leaf traits at 3km resolution. TRY File Archive https://www.try-db.org/TryWeb/Data.php#59 +DOI: 10.17871/TRY.59 + +Reference to data package: Moreno-Martínez, Á., Camps-Valls, G., Kattge, J., Robinson, N., Reichstein, M., Bodegom, P. V., Running, S. W. (2020) Global maps of leaf traits at 1km resolution. TRY File Archive https://www.try-db.org/TryWeb/Data.php#60 +DOI: 10.17871/TRY.60 + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/plant-traits/global/TRY-leaf-trait-maps/ +cd $GISDATA/plant-traits/global/TRY-leaf-trait-maps/ + +## need to update request to get correct link +wget -b --continue https://www.try-db.org/tmpdnld/Try2021343953Global_trait_maps_vs2_3km_res.zip + +wget --continue https://www.try-db.org/tmpdnld/Try20213431213Global_trait_maps_vs2_1km_res.zip + +``` + +```sh +cd $WORKDIR +unzip $GISDATA/species-traits/TRY-leaf-trait-maps/Try2021343953Global_trait_maps_vs2_3km_res.zip +ls Global_trait_maps_Moreno_Martinez_2018_Version2_3km_resolution/ +unzip Global_trait_maps_Moreno_Martinez_2018_Version2_3km_resolution/SLA_3km_v1.zip + +``` + +```r + require(raster) + +r0 <- raster("SLA_3km_v1.tif") +values(r0)[values(r0)<0] <- NA +plot(r0) + +``` diff --git a/docusite/docs/radiation/global/glUV-B.md b/docusite/docs/radiation/global/glUV-B.md new file mode 100644 index 0000000..d925b85 --- /dev/null +++ b/docusite/docs/radiation/global/glUV-B.md @@ -0,0 +1,42 @@ +# glUV: a global UV‐B radiation data set + +[Webpage](https://www.ufz.de/gluv/) + +#### Citation +> Beckmann M., Václavík T., Manceur A.M., Šprtová L., von Wehrden H., Welk E., Cord A.F. (2014) glUV: A global UV-B radiation dataset for macroecological studies, Methods in Ecology and Evolution, 5: 372–383. doi: 10.1111/2041-210X.12168 + + +#### Data access + +Data available on-line at https://www.ufz.de/gluv/index.php?en=32435 + +#### Data download and preparation + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/radiation/global/glUV +cd $GISDATA/radiation/global/glUV + +export BASEURL=https://www.ufz.de/export/data/443 + +for VAR in 56459_UVB1_Annual_Mean_UV-B.asc 56460_UVB2_UV-B_Seasonality.asc 56461_UVB3_Mean_UV-B_of_Highest_Month.asc 56462_UVB4_Mean_UV-B_of_Lowest_Month.asc 56463_UVB5_Sum_of_UV-B_Radiation_of_Highest_Quarter.asc 56464_UVB6_Sum_of_UV-B_Radiation_of_Lowest_Quarter.asc +do + echo $VAR + curl -C - -O ${BASEURL}/${VAR} +done + +for VAR in 56465_glUV_January_monthly_mean.asc 56466_glUV_February_monthly_mean.asc 56467_glUV_March_monthly_mean.asc 56468_glUV_April_monthly_mean.asc 56468_glUV_April_monthly_mean.asc 56469_glUV_May_monthly_mean.asc 56470_glUV_June_monthly_mean.asc 56471_glUV_July_monthly_mean.asc 56472_glUV_August_monthly_mean.asc 56473_glUV_September_monthly_mean.asc 56474_glUV_October_monthly_means.asc 56475_glUV_November_monthly_means.asc 56476_glUV_December_monthly_means.asc +do + curl -C - -O ${BASEURL}/${VAR} +done + +tar -cjvf glUV-files.tar.bz2 *asc + +rm *asc + + + +``` diff --git a/docusite/docs/soil/global/COPERNICUS-SWI.md b/docusite/docs/soil/global/COPERNICUS-SWI.md new file mode 100644 index 0000000..38d206a --- /dev/null +++ b/docusite/docs/soil/global/COPERNICUS-SWI.md @@ -0,0 +1,14 @@ +## Soil Water Index + +Available from the [Copernicus Global Land Service](https://land.copernicus.eu/global/products/swi). Need to log in to VITO COPERNICUS GLOBAL LAND DATA ,search for the SWI product at global scale, with 0.1 degree or 12.5km resolution, based on SSM observations from MetOp-ASCAT. Then place an order for the data set, download link from the order e-mail. [User manual](https://land.copernicus.eu/global/sites/cgls.vito.be/files/products/CGLOPS1_PUM_SWIV3-SWI10-SWI-TS_I2.60.pdf) + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/soil/global/COPERNICUS-SWI +cd $GISDATA/soil/global/COPERNICUS-SWI + +wget --user=$COPERNICUSUSR --password=$COPERNICUSPWD ftp://ftp.copernicus.vgt.vito.be/C0061185/SWI_TS_201906300000_ASCAT_V3.0.1/ +wget --user=$COPERNICUSUSR --password=$COPERNICUSPWD --continue --force-html -i index.html + +``` diff --git a/docusite/docs/soil/global/Global-permafrost-zonation.md b/docusite/docs/soil/global/Global-permafrost-zonation.md new file mode 100644 index 0000000..5232167 --- /dev/null +++ b/docusite/docs/soil/global/Global-permafrost-zonation.md @@ -0,0 +1,31 @@ +# Global Permafrost Zonation Index Map + +http://www.geo.uzh.ch/microsite/cryodata/pf_global/ + +#### Citation +> Gruber, S. 2012: *Derivation and analysis of a high-resolution estimate of global permafrost zonation*, **The Cryosphere**, 6, 221-233. doi:[10.5194/tc-6-221-2012](http://www.the-cryosphere.net/6/221/) + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/soil/global/permafrost +cd $GISDATA/soil/global/permafrost + +wget --continue http://www.geo.uzh.ch/microsite/cryodata/pf_global/PF_global_ArcGIS.tar +wget --continue http://www.geo.uzh.ch/microsite/cryodata/pf_global/PZI.flt +wget --continue http://www.geo.uzh.ch/microsite/cryodata/pf_global/PZI.hdr +``` + + +```sh +module add python/3.8.3 perl/5.28.0 geos gdal/3.2.1 +gdalinfo PZI.flt +``` + + +```{r} +require(raster) +r0 <- raster("/srv/scratch/cesdata/gisdata/soil/global/permafrost/PZI.flt") + +``` diff --git a/docusite/docs/soil/global/HWSD-v1.2.md b/docusite/docs/soil/global/HWSD-v1.2.md new file mode 100644 index 0000000..cdb5f9b --- /dev/null +++ b/docusite/docs/soil/global/HWSD-v1.2.md @@ -0,0 +1,52 @@ +# HWSD-v1.2 + +Harmonized World Soil Database, version 1.2. Raster database with harmonized soil property data. + +http://www.fao.org/soils-portal/soil-survey/soil-maps-and-databases/harmonized-world-soil-database-v12/en/ + +## Citation +> Fischer, G., F. Nachtergaele, S. Prieler, H.T. van Velthuizen, L. Verelst, D. Wiberg, 2008. Global Agro-ecological Zones Assessment for Agriculture (GAEZ 2008). IIASA, Laxenburg, Austria and FAO, Rome, Italy. + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/soil/global/HWSD-v1.2 +cd $GISDATA/soil/global/HWSD-v1.2 + +for layer in sq1 sq2 sq3 sq4 sq5 sq6 sq7 +do + wget --continue https://www.fao.org/fileadmin/user_upload/soils/docs/HWSD/Soil_Quality_data/${layer}.asc +done + +for layer in HWSD_RASTER HWSD +do + wget --continue https://www.fao.org/fileadmin/user_upload/soils/HWSD%20Viewer/${layer}.zip +done +wget https://www.fao.org/docrep/018/aq361e/aq361e.pdf +unzip -u HWSD_RASTER.zip + +unzip -u HWSD.zip +``` + +Raster maps: + +sq1.asc Nutrient availability +sq2.asc Nutrient retention capacity +sq3.asc Rooting conditions +sq4.asc Oxygen availability to roots +sq5.asc Excess salts. +sq6.asc Toxicity +sq7.asc Workability (constraining field management) + +Note that the classes used in the Soil Quality evaluation are: + +1: No or slight limitations +2: Moderate limitations +3: Sever limitations +4: Very severe limitations +5: Mainly non-soil +6: Permafrost area +7: Water bodies + +> Remember that classes are qualitative not quantitative. Only classes 1 to 4 are corresponding to an assessment of soil limitations for plant growth. Class 1 is generally rated between 80 and 100% of the growth potential, class 2 between 60 and 80%, class 3 between 40 and 60%, and class 4 less than 40%. diff --git a/docusite/docs/soil/global/isric-soil-grids.md b/docusite/docs/soil/global/isric-soil-grids.md new file mode 100644 index 0000000..d304a4b --- /dev/null +++ b/docusite/docs/soil/global/isric-soil-grids.md @@ -0,0 +1,106 @@ +# ISRIC SoilGrids + +SoilGrids — global gridded soil information +A system for digital soil mapping based on global compilation of soil profile data and environmental layers + +> SoilGridsTM (hereafter SoilGrids) is a system for global digital soil mapping that uses state-of-the-art machine learning methods to map the spatial distribution of soil properties across the globe. SoilGrids prediction models are fitted using over 230 000 soil profile observations from the WoSIS database and a series of environmental covariates. Covariates were selected from a pool of over 400 environmental layers from Earth observation derived products and other environmental information including climate, land cover and terrain morphology. The outputs of SoilGrids are global soil property maps at six standard depth intervals (according to the GlobalSoilMap IUSS working group and its specifications) at a spatial resolution of 250 meters. Prediction uncertainty is quantified by the lower and upper limits of a 90% prediction interval. The additional uncertainty layer displayed at soilgrids.org is the ratio between the inter-quantile range and the median. The SoilGrids maps are publicly available under the CC-BY 4.0 License. + +Maps of the following soil properties are available: pH, soil organic carbon content, bulk density, coarse fragments content, sand content, silt content, clay content, cation exchange capacity (CEC), total nitrogen as well as soil organic carbon density and soil organic carbon stock. + + + +www.globalsoilmap.net +https://www.isric.org/projects/globalsoilmapnet +https://www.isric.org/explore/soilgrids + +https://git.wur.nl/isric/soilgrids/soilgrids.notebooks/activity + + +## Citation +> Poggio, L., de Sousa, L. M., Batjes, N. H., Heuvelink, G. B. M., Kempen, B., Ribeiro, E., and Rossiter, D.: SoilGrids 2.0: producing soil information for the globe with quantified spatial uncertainty, SOIL, 7, 217–240, 2021. DOI + +## Data access and preparation + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/soil/global/ISRIC-SoilGrids +cd $GISDATA/soil/global/ISRIC-SoilGrids + +module add python/3.9.9 perl geos gdal/3.2.1 + +IGH="+proj=igh +lat_0=0 +lon_0=0 +datum=WGS84 +units=m +no_defs" # proj string for Homolosine projection +SG_URL="/vsicurl?max_retry=3&retry_delay=1&list_dir=no&url=https://files.isric.org/soilgrids/latest/data" +CELL_SIZE="250 250" + +``` + +Detailed instructions here: + +https://git.wur.nl/isric/soilgrids/soilgrids.notebooks/-/blob/master/markdown/webdav_from_bash.md + +> To local VRT in homolosine (directly from the webdav connection) +> The first step is to obtain a VRT for the area of interest in the Homolosine projection. We suggest to use VRT for the intermediate steps to save space and computation times. +```{bash} +gdal_translate -of VRT -tr $CELL_SIZE -co "TILED=YES" -co "COMPRESS=DEFLATE" -co "PREDICTOR=2" -co "BIGTIFF=YES" \ + $SG_URL"/ocs/ocs_0-30cm_mean.vrt" "ocs_0-5cm_mean.vrt" +``` + +> To a VRT in, for example, LatLong +> The following command will generate a VRT in the projection of your choice: + +```{bash} +gdalwarp -overwrite -t_srs EPSG:4326 -of VRT "ocs_0-5cm_mean.vrt" "ocs_0-5cm_mean_4326.vrt" +``` + +> To a final Geotiff +>The following command will generate a Geotiff in the projection of your choice for the area of interest defined above + +```{bash} +gdal_translate ocs_0-5cm_mean_4326.vrt ocs_0-5cm_mean_4326.tif \ + -co "TILED=YES" -co "COMPRESS=DEFLATE" -co "PREDICTOR=2" -co "BIGTIFF=YES" +``` + +List of variables: bdod cec cfvo clay nitrogen ocd ocs phh2o sand silt soc wrb # landmask +Depths: 0-5cm 5-15cm 15-30cm 30-60cm 60-100cm 100-200cm +stats: mean uncertainty Q0.05 Q0.5 Q0.95 + +We prepared a PBS script to download and reproject several layers: + +```{bash} +source ~/proyectos/UNSW/cesdata/env/project-env.sh +cd $WORKDIR +echo "bdod +cec +cfvo +clay +nitrogen +ocd +ocs +phh2o +sand +silt +soc +wrb" > $GISDATA/soil/global/ISRIC-SoilGrids/varlist + +qsub -l select=1:ncpus=2:mem=60gb,walltime=20:00:00 -J 1-3 $SCRIPTDIR/inc/pbs/download-soilgrids-from-vrt.pbs +qsub -l select=1:ncpus=2:mem=80gb,walltime=20:00:00 -J 4-7 $SCRIPTDIR/inc/pbs/download-soilgrids-from-vrt.pbs +qsub -l select=1:ncpus=2:mem=100gb,walltime=20:00:00 -J 8-12 $SCRIPTDIR/inc/pbs/download-soilgrids-from-vrt.pbs + +``` + + + +https://git.wur.nl/isric/soilgrids/soilgrids.notebooks/-/blob/master/markdown/webdav_from_R.md + +```{r} +library(rgdal) +library(gdalUtils) +igh='+proj=igh +lat_0=0 +lon_0=0 +datum=WGS84 +units=m +no_defs' # proj string for Homolosine projection + +sg_url="/vsicurl?max_retry=3&retry_delay=1&list_dir=no&url=https://files.isric.org/soilgrids/latest/data/" +gdal_translate(paste0(sg_url,'ocs/ocs_0-30cm_mean.vrt'), + "./crop_roi_igh_r.tif", + verbose=TRUE) + +``` diff --git a/docusite/docs/soil/regional/Circum-arctic-permafrost.md b/docusite/docs/soil/regional/Circum-arctic-permafrost.md new file mode 100644 index 0000000..a67a108 --- /dev/null +++ b/docusite/docs/soil/regional/Circum-arctic-permafrost.md @@ -0,0 +1,45 @@ +# Raster Circumpolar Arctic Permafrost and Ground Ice Conditions + +#### Citation +> Brown, J., O. Ferrians, J. A. Heginbottom, and E. Melnikov. 2002. Circum-Arctic Map of Permafrost and Ground-Ice Conditions, Version 2. [Indicate subset used]. Boulder, Colorado USA. NSIDC: National Snow and Ice Data Center. doi: https://doi.org/. [Date Accessed]. + + +#### Data access + +Circum-Arctic Map of Permafrost and Ground-Ice Conditions, Version 2 +Data Set ID: GGD318 +https://nsidc.org/data/GGD318/versions/2 + +FTP: ftp://sidads.colorado.edu/pub/DATASETS/fgdc/ggd318_map_circumarctic/ + +#### Data download and preparation + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/soil/regional/circumpolar_permafrost +cd $GISDATA/soil/regional/circumpolar_permafrost +wget ftp://sidads.colorado.edu/pub/DATASETS/fgdc/ggd318_map_circumarctic/ -O index +wget -b --continue -i index --force-html + +``` + +Raster file projection is different as the vector files projection. This approach allow to import all files in the same projection, but it gives some errors, and results are hopelessly wrong when transformed to *Plate Carrée*. + +```sh +ogrinfo -al -so permaice.shp + +## This one has better resolution: +gdalwarp nhipa.byte -s_srs "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228.00000 +b=6371228.000 +units=m +no_defs" -t_srs treeline.prj nhipa.tif +##gdalwarp nhipa.byte -s_srs treeline.prj nhipa.tif + +##gdalwarp nlipa.byte -s_srs "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228.00000 +b=6371228.000 +units=m +no_defs" -t_srs treeline.prj nlipa.tif + +## This is coarse scale, geographical coordinates? +##gdalwarp llipa.byte -s_srs "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228.00000 +b=6371228.000 +units=m +no_defs" -t_srs treeline.prj llipa.tif + +gdalinfo nhipa.tif + +``` diff --git a/docusite/docs/soil/regional/Soil-australia.md b/docusite/docs/soil/regional/Soil-australia.md new file mode 100644 index 0000000..51cfbe3 --- /dev/null +++ b/docusite/docs/soil/regional/Soil-australia.md @@ -0,0 +1,41 @@ +# Soil and Landscape Grid of Australia +## + +## Available data + +https://www.clw.csiro.au/aclep/soilandlandscapegrid/GetData-DAP.html + +## Data download: + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/soil/regional/soil-landscape-grid-australia +cd $GISDATA/soil/regional/soil-landscape-grid-australia + +for VAR in AWC Bulk-Density Clay Depth_of_Regolith Depth_of_Soil ECEC SOC Sand Silt Total_N Total_P pHc +do + wget ftp://qld.auscover.org.au/tern-soils/Products/National_digital_soil_property_maps/${VAR}/ --output-document=${VAR}.list + grep tif ${VAR}.list >> enlaces +done +wget --continue -i enlaces --force-html + +``` + +File name conventions: https://www.clw.csiro.au/aclep/soilandlandscapegrid/MetaData/ASLG_File_Naming_Conventions.html + + +Can we compress these files? + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/soil/regional/soil-landscape-grid-australia +cd $GISDATA/soil/regional/soil-landscape-grid-australia +gzip SOC_100_200_EV_N_P_AU_TRN_C_20140801.tif ## minimal compression because it is already using LZW + + +``` From 5252a2602f95cd86f611dccc6a3d3ac78ad83114 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 07:14:04 +1000 Subject: [PATCH 04/23] Move all markdown files to the docusite docs dir --- doc/{landcover/to-do => landcover-to-do}/GeoWiki.md | 0 .../Gridded-Landcover-Classification.md | 0 .../to-do => landcover-to-do}/LBA-ECO-landcover-SAM.md | 0 .../to-do => landcover-to-do}/LandCover-CCI-CRDP.md | 0 .../to-do => landcover-to-do}/USGS-EROS-landcover.md | 0 .../to-do => vegetation-to-do}/China-vegetation-map.md | 0 .../to-do => vegetation-to-do}/HEaP-United-Kingdom.md | 0 .../LRIS-vegetation-ecosystems-New-Zealand.md | 0 .../vegetation-maps-Argentina.md | 0 docusite/docs/admin/global/_category_.json | 9 +++++++++ docusite/docs/climate/_category_.json | 8 ++++++++ .../docs}/forest/global/3D-forest-landscape.md | 0 .../forest/global/Forest-Landscape-Integrity-Index.md | 0 {doc => docusite/docs}/forest/global/GFC.md | 0 .../docs}/forest/global/PALSAR-forest-non-forest.md | 0 .../docs}/forest/global/global-forest-management.md | 0 .../forest/global/global-magnitude-fragmentation.md | 0 .../docs}/forest/regional/Boreal-Forest-Monitoring.md | 0 .../docs}/forest/regional/Forest-Australia.md | 0 {doc => docusite/docs}/forest/regional/Forest-China.md | 0 .../docs}/hydrology/global/Deltas-at-Risk.md | 0 {doc => docusite/docs}/hydrology/global/GIRES-v10.md | 0 {doc => docusite/docs}/hydrology/global/GOODD-2020.md | 0 .../hydrology/global/Global-Lakes-Wetlands-Database.md | 0 .../docs}/hydrology/global/Global-delta-data.md | 0 .../hydrology/global/Global-river-classification.md | 0 .../docs}/hydrology/global/Global-river-deltas.md | 0 .../docs}/hydrology/global/Global-river-width.md | 0 .../docs}/hydrology/global/HydroAtlas-Database.md | 0 .../docs}/hydrology/global/HydroLake-Database.md | 0 .../docs}/hydrology/global/HydroRivers-Database.md | 0 .../docs}/landcover/global/Consensus-land-cover.md | 0 .../docs}/landcover/global/ESRI-2020-Land-Cover.md | 0 {doc => docusite/docs}/landcover/global/FROM-GLC10.md | 0 .../docs}/landcover/global/Global-land-cover-2000.md | 0 .../docs}/landcover/global/Globcover-2009.md | 0 {doc => docusite/docs}/landcover/global/LC-CCI.md | 0 .../docs}/landcover/global/LandCover-Copernicus-GLS.md | 0 .../docs}/landcover/global/Modis-MCD12Q1-v6-LandCover.md | 0 {doc => docusite/docs}/protected/global/RAMSAR.md | 0 {doc => docusite/docs}/protected/global/WDPA.md | 0 .../species-abundance/global/living-planet-index.md | 0 {doc => docusite/docs}/species-dist/global/BOTW.md | 0 {doc => docusite/docs}/species-dist/global/GBIF.md | 0 .../docs}/species-dist/global/RLTS-spatial-data.md | 6 +++--- .../docs}/species-dist/global/living-planet-index.md | 0 .../global/Modis-MCD12Q1-v6-LandSurfaceTemperature.md | 0 .../docs}/temperature-sea/global/AVHRR-SST.md | 0 .../docs}/topography/global/EarthEnv-Topography.md | 0 .../docs}/topography/global/GMBA-Mountain-Inventory.md | 0 .../docs}/topography/global/GME-Mountain-Inventory.md | 0 {doc => docusite/docs}/topography/global/GSHHG-1996.md | 0 {doc => docusite/docs}/topography/global/GTI-2015.md | 0 {doc => docusite/docs}/topography/global/SRTM-plus.md | 0 .../docs}/topography/regional/Geomorfologia-Peru.md | 0 {doc => docusite/docs}/vegcover/global/Modis-VCF-v6.md | 0 .../docs}/vegetation-plots/global/sPlotOpen.md | 0 .../docs}/vegetation-plots/regional/ausplots.md | 0 .../docs}/vegetation/regional/Argentina-vegetation.md | 0 .../vegetation/regional/Australia-NVIS-Vegetation.md | 0 .../docs}/vegetation/regional/Bolivia-vegetation.md | 0 .../docs}/vegetation/regional/Chile-pisos-vegetacion.md | 0 .../regional/Circumpolar-arctic-vegetation-map.md | 0 .../vegetation/regional/IVC-potential-macrogroups.md | 0 .../regional/NewSouthWales-State-Vegetation-Map.md | 0 .../docs}/vegetation/regional/Peru-vegetation.md | 0 .../vegetation/regional/Potential-Eastern-Africa.md | 0 .../docs}/vegetation/regional/South-Africa-Vegetation.md | 0 .../docs}/vegetation/regional/White-Africa-Vegetation.md | 0 .../docs}/veglayer/global/3D-forest-landscape.md | 0 {doc => docusite/docs}/veglayer/global/AVHRR-GIMMS.md | 0 .../docs}/veglayer/global/GEDI-forest-canopy-height.md | 0 {doc => docusite/docs}/veglayer/global/GLASS-LAI.md | 0 {doc => docusite/docs}/veglayer/global/Modis-GPP-NPP.md | 0 .../docs}/veglayer/global/WHRC-vegetation-height.md | 0 .../docs}/veglayer/regional/TERN-phenology.md | 0 .../docs}/veglayer/regional/TERN-vegetation-height.md | 0 .../docs}/water/Global-daily-surface-water.md | 0 78 files changed, 20 insertions(+), 3 deletions(-) rename doc/{landcover/to-do => landcover-to-do}/GeoWiki.md (100%) rename doc/{landcover/to-do => landcover-to-do}/Gridded-Landcover-Classification.md (100%) rename doc/{landcover/to-do => landcover-to-do}/LBA-ECO-landcover-SAM.md (100%) rename doc/{landcover/to-do => landcover-to-do}/LandCover-CCI-CRDP.md (100%) rename doc/{landcover/to-do => landcover-to-do}/USGS-EROS-landcover.md (100%) rename doc/{vegetation/to-do => vegetation-to-do}/China-vegetation-map.md (100%) rename doc/{vegetation/to-do => vegetation-to-do}/HEaP-United-Kingdom.md (100%) rename doc/{vegetation/to-do => vegetation-to-do}/LRIS-vegetation-ecosystems-New-Zealand.md (100%) rename doc/{vegetation/to-do => vegetation-to-do}/vegetation-maps-Argentina.md (100%) create mode 100644 docusite/docs/admin/global/_category_.json create mode 100644 docusite/docs/climate/_category_.json rename {doc => docusite/docs}/forest/global/3D-forest-landscape.md (100%) rename {doc => docusite/docs}/forest/global/Forest-Landscape-Integrity-Index.md (100%) rename {doc => docusite/docs}/forest/global/GFC.md (100%) rename {doc => docusite/docs}/forest/global/PALSAR-forest-non-forest.md (100%) rename {doc => docusite/docs}/forest/global/global-forest-management.md (100%) rename {doc => docusite/docs}/forest/global/global-magnitude-fragmentation.md (100%) rename {doc => docusite/docs}/forest/regional/Boreal-Forest-Monitoring.md (100%) rename {doc => docusite/docs}/forest/regional/Forest-Australia.md (100%) rename {doc => docusite/docs}/forest/regional/Forest-China.md (100%) rename {doc => docusite/docs}/hydrology/global/Deltas-at-Risk.md (100%) rename {doc => docusite/docs}/hydrology/global/GIRES-v10.md (100%) rename {doc => docusite/docs}/hydrology/global/GOODD-2020.md (100%) rename {doc => docusite/docs}/hydrology/global/Global-Lakes-Wetlands-Database.md (100%) rename {doc => docusite/docs}/hydrology/global/Global-delta-data.md (100%) rename {doc => docusite/docs}/hydrology/global/Global-river-classification.md (100%) rename {doc => docusite/docs}/hydrology/global/Global-river-deltas.md (100%) rename {doc => docusite/docs}/hydrology/global/Global-river-width.md (100%) rename {doc => docusite/docs}/hydrology/global/HydroAtlas-Database.md (100%) rename {doc => docusite/docs}/hydrology/global/HydroLake-Database.md (100%) rename {doc => docusite/docs}/hydrology/global/HydroRivers-Database.md (100%) rename {doc => docusite/docs}/landcover/global/Consensus-land-cover.md (100%) rename {doc => docusite/docs}/landcover/global/ESRI-2020-Land-Cover.md (100%) rename {doc => docusite/docs}/landcover/global/FROM-GLC10.md (100%) rename {doc => docusite/docs}/landcover/global/Global-land-cover-2000.md (100%) rename {doc => docusite/docs}/landcover/global/Globcover-2009.md (100%) rename {doc => docusite/docs}/landcover/global/LC-CCI.md (100%) rename {doc => docusite/docs}/landcover/global/LandCover-Copernicus-GLS.md (100%) rename {doc => docusite/docs}/landcover/global/Modis-MCD12Q1-v6-LandCover.md (100%) rename {doc => docusite/docs}/protected/global/RAMSAR.md (100%) rename {doc => docusite/docs}/protected/global/WDPA.md (100%) rename {doc => docusite/docs}/species-abundance/global/living-planet-index.md (100%) rename {doc => docusite/docs}/species-dist/global/BOTW.md (100%) rename {doc => docusite/docs}/species-dist/global/GBIF.md (100%) rename {doc => docusite/docs}/species-dist/global/RLTS-spatial-data.md (90%) rename {doc => docusite/docs}/species-dist/global/living-planet-index.md (100%) rename {doc => docusite/docs}/temperature-land/global/Modis-MCD12Q1-v6-LandSurfaceTemperature.md (100%) rename {doc => docusite/docs}/temperature-sea/global/AVHRR-SST.md (100%) rename {doc => docusite/docs}/topography/global/EarthEnv-Topography.md (100%) rename {doc => docusite/docs}/topography/global/GMBA-Mountain-Inventory.md (100%) rename {doc => docusite/docs}/topography/global/GME-Mountain-Inventory.md (100%) rename {doc => docusite/docs}/topography/global/GSHHG-1996.md (100%) rename {doc => docusite/docs}/topography/global/GTI-2015.md (100%) rename {doc => docusite/docs}/topography/global/SRTM-plus.md (100%) rename {doc => docusite/docs}/topography/regional/Geomorfologia-Peru.md (100%) rename {doc => docusite/docs}/vegcover/global/Modis-VCF-v6.md (100%) rename {doc => docusite/docs}/vegetation-plots/global/sPlotOpen.md (100%) rename {doc => docusite/docs}/vegetation-plots/regional/ausplots.md (100%) rename {doc => docusite/docs}/vegetation/regional/Argentina-vegetation.md (100%) rename {doc => docusite/docs}/vegetation/regional/Australia-NVIS-Vegetation.md (100%) rename {doc => docusite/docs}/vegetation/regional/Bolivia-vegetation.md (100%) rename {doc => docusite/docs}/vegetation/regional/Chile-pisos-vegetacion.md (100%) rename {doc => docusite/docs}/vegetation/regional/Circumpolar-arctic-vegetation-map.md (100%) rename {doc => docusite/docs}/vegetation/regional/IVC-potential-macrogroups.md (100%) rename {doc => docusite/docs}/vegetation/regional/NewSouthWales-State-Vegetation-Map.md (100%) rename {doc => docusite/docs}/vegetation/regional/Peru-vegetation.md (100%) rename {doc => docusite/docs}/vegetation/regional/Potential-Eastern-Africa.md (100%) rename {doc => docusite/docs}/vegetation/regional/South-Africa-Vegetation.md (100%) rename {doc => docusite/docs}/vegetation/regional/White-Africa-Vegetation.md (100%) rename {doc => docusite/docs}/veglayer/global/3D-forest-landscape.md (100%) rename {doc => docusite/docs}/veglayer/global/AVHRR-GIMMS.md (100%) rename {doc => docusite/docs}/veglayer/global/GEDI-forest-canopy-height.md (100%) rename {doc => docusite/docs}/veglayer/global/GLASS-LAI.md (100%) rename {doc => docusite/docs}/veglayer/global/Modis-GPP-NPP.md (100%) rename {doc => docusite/docs}/veglayer/global/WHRC-vegetation-height.md (100%) rename {doc => docusite/docs}/veglayer/regional/TERN-phenology.md (100%) rename {doc => docusite/docs}/veglayer/regional/TERN-vegetation-height.md (100%) rename {doc => docusite/docs}/water/Global-daily-surface-water.md (100%) diff --git a/doc/landcover/to-do/GeoWiki.md b/doc/landcover-to-do/GeoWiki.md similarity index 100% rename from doc/landcover/to-do/GeoWiki.md rename to doc/landcover-to-do/GeoWiki.md diff --git a/doc/landcover/to-do/Gridded-Landcover-Classification.md b/doc/landcover-to-do/Gridded-Landcover-Classification.md similarity index 100% rename from doc/landcover/to-do/Gridded-Landcover-Classification.md rename to doc/landcover-to-do/Gridded-Landcover-Classification.md diff --git a/doc/landcover/to-do/LBA-ECO-landcover-SAM.md b/doc/landcover-to-do/LBA-ECO-landcover-SAM.md similarity index 100% rename from doc/landcover/to-do/LBA-ECO-landcover-SAM.md rename to doc/landcover-to-do/LBA-ECO-landcover-SAM.md diff --git a/doc/landcover/to-do/LandCover-CCI-CRDP.md b/doc/landcover-to-do/LandCover-CCI-CRDP.md similarity index 100% rename from doc/landcover/to-do/LandCover-CCI-CRDP.md rename to doc/landcover-to-do/LandCover-CCI-CRDP.md diff --git a/doc/landcover/to-do/USGS-EROS-landcover.md b/doc/landcover-to-do/USGS-EROS-landcover.md similarity index 100% rename from doc/landcover/to-do/USGS-EROS-landcover.md rename to doc/landcover-to-do/USGS-EROS-landcover.md diff --git a/doc/vegetation/to-do/China-vegetation-map.md b/doc/vegetation-to-do/China-vegetation-map.md similarity index 100% rename from doc/vegetation/to-do/China-vegetation-map.md rename to doc/vegetation-to-do/China-vegetation-map.md diff --git a/doc/vegetation/to-do/HEaP-United-Kingdom.md b/doc/vegetation-to-do/HEaP-United-Kingdom.md similarity index 100% rename from doc/vegetation/to-do/HEaP-United-Kingdom.md rename to doc/vegetation-to-do/HEaP-United-Kingdom.md diff --git a/doc/vegetation/to-do/LRIS-vegetation-ecosystems-New-Zealand.md b/doc/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md similarity index 100% rename from doc/vegetation/to-do/LRIS-vegetation-ecosystems-New-Zealand.md rename to doc/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md diff --git a/doc/vegetation/to-do/vegetation-maps-Argentina.md b/doc/vegetation-to-do/vegetation-maps-Argentina.md similarity index 100% rename from doc/vegetation/to-do/vegetation-maps-Argentina.md rename to doc/vegetation-to-do/vegetation-maps-Argentina.md diff --git a/docusite/docs/admin/global/_category_.json b/docusite/docs/admin/global/_category_.json new file mode 100644 index 0000000..5cc8481 --- /dev/null +++ b/docusite/docs/admin/global/_category_.json @@ -0,0 +1,9 @@ +{ + "label": "admin/global", + "position": 4, + "link": { + "type": "generated-index", + "description": + "Just in case you are wondering: admin stands for administrative boundaries. Global layers for all the countries and the seven seas!" + } +} diff --git a/docusite/docs/climate/_category_.json b/docusite/docs/climate/_category_.json new file mode 100644 index 0000000..d7abb69 --- /dev/null +++ b/docusite/docs/climate/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "climate", + "position": 4, + "link": { + "type": "generated-index", + "description": "Climate" + } +} diff --git a/doc/forest/global/3D-forest-landscape.md b/docusite/docs/forest/global/3D-forest-landscape.md similarity index 100% rename from doc/forest/global/3D-forest-landscape.md rename to docusite/docs/forest/global/3D-forest-landscape.md diff --git a/doc/forest/global/Forest-Landscape-Integrity-Index.md b/docusite/docs/forest/global/Forest-Landscape-Integrity-Index.md similarity index 100% rename from doc/forest/global/Forest-Landscape-Integrity-Index.md rename to docusite/docs/forest/global/Forest-Landscape-Integrity-Index.md diff --git a/doc/forest/global/GFC.md b/docusite/docs/forest/global/GFC.md similarity index 100% rename from doc/forest/global/GFC.md rename to docusite/docs/forest/global/GFC.md diff --git a/doc/forest/global/PALSAR-forest-non-forest.md b/docusite/docs/forest/global/PALSAR-forest-non-forest.md similarity index 100% rename from doc/forest/global/PALSAR-forest-non-forest.md rename to docusite/docs/forest/global/PALSAR-forest-non-forest.md diff --git a/doc/forest/global/global-forest-management.md b/docusite/docs/forest/global/global-forest-management.md similarity index 100% rename from doc/forest/global/global-forest-management.md rename to docusite/docs/forest/global/global-forest-management.md diff --git a/doc/forest/global/global-magnitude-fragmentation.md b/docusite/docs/forest/global/global-magnitude-fragmentation.md similarity index 100% rename from doc/forest/global/global-magnitude-fragmentation.md rename to docusite/docs/forest/global/global-magnitude-fragmentation.md diff --git a/doc/forest/regional/Boreal-Forest-Monitoring.md b/docusite/docs/forest/regional/Boreal-Forest-Monitoring.md similarity index 100% rename from doc/forest/regional/Boreal-Forest-Monitoring.md rename to docusite/docs/forest/regional/Boreal-Forest-Monitoring.md diff --git a/doc/forest/regional/Forest-Australia.md b/docusite/docs/forest/regional/Forest-Australia.md similarity index 100% rename from doc/forest/regional/Forest-Australia.md rename to docusite/docs/forest/regional/Forest-Australia.md diff --git a/doc/forest/regional/Forest-China.md b/docusite/docs/forest/regional/Forest-China.md similarity index 100% rename from doc/forest/regional/Forest-China.md rename to docusite/docs/forest/regional/Forest-China.md diff --git a/doc/hydrology/global/Deltas-at-Risk.md b/docusite/docs/hydrology/global/Deltas-at-Risk.md similarity index 100% rename from doc/hydrology/global/Deltas-at-Risk.md rename to docusite/docs/hydrology/global/Deltas-at-Risk.md diff --git a/doc/hydrology/global/GIRES-v10.md b/docusite/docs/hydrology/global/GIRES-v10.md similarity index 100% rename from doc/hydrology/global/GIRES-v10.md rename to docusite/docs/hydrology/global/GIRES-v10.md diff --git a/doc/hydrology/global/GOODD-2020.md b/docusite/docs/hydrology/global/GOODD-2020.md similarity index 100% rename from doc/hydrology/global/GOODD-2020.md rename to docusite/docs/hydrology/global/GOODD-2020.md diff --git a/doc/hydrology/global/Global-Lakes-Wetlands-Database.md b/docusite/docs/hydrology/global/Global-Lakes-Wetlands-Database.md similarity index 100% rename from doc/hydrology/global/Global-Lakes-Wetlands-Database.md rename to docusite/docs/hydrology/global/Global-Lakes-Wetlands-Database.md diff --git a/doc/hydrology/global/Global-delta-data.md b/docusite/docs/hydrology/global/Global-delta-data.md similarity index 100% rename from doc/hydrology/global/Global-delta-data.md rename to docusite/docs/hydrology/global/Global-delta-data.md diff --git a/doc/hydrology/global/Global-river-classification.md b/docusite/docs/hydrology/global/Global-river-classification.md similarity index 100% rename from doc/hydrology/global/Global-river-classification.md rename to docusite/docs/hydrology/global/Global-river-classification.md diff --git a/doc/hydrology/global/Global-river-deltas.md b/docusite/docs/hydrology/global/Global-river-deltas.md similarity index 100% rename from doc/hydrology/global/Global-river-deltas.md rename to docusite/docs/hydrology/global/Global-river-deltas.md diff --git a/doc/hydrology/global/Global-river-width.md b/docusite/docs/hydrology/global/Global-river-width.md similarity index 100% rename from doc/hydrology/global/Global-river-width.md rename to docusite/docs/hydrology/global/Global-river-width.md diff --git a/doc/hydrology/global/HydroAtlas-Database.md b/docusite/docs/hydrology/global/HydroAtlas-Database.md similarity index 100% rename from doc/hydrology/global/HydroAtlas-Database.md rename to docusite/docs/hydrology/global/HydroAtlas-Database.md diff --git a/doc/hydrology/global/HydroLake-Database.md b/docusite/docs/hydrology/global/HydroLake-Database.md similarity index 100% rename from doc/hydrology/global/HydroLake-Database.md rename to docusite/docs/hydrology/global/HydroLake-Database.md diff --git a/doc/hydrology/global/HydroRivers-Database.md b/docusite/docs/hydrology/global/HydroRivers-Database.md similarity index 100% rename from doc/hydrology/global/HydroRivers-Database.md rename to docusite/docs/hydrology/global/HydroRivers-Database.md diff --git a/doc/landcover/global/Consensus-land-cover.md b/docusite/docs/landcover/global/Consensus-land-cover.md similarity index 100% rename from doc/landcover/global/Consensus-land-cover.md rename to docusite/docs/landcover/global/Consensus-land-cover.md diff --git a/doc/landcover/global/ESRI-2020-Land-Cover.md b/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md similarity index 100% rename from doc/landcover/global/ESRI-2020-Land-Cover.md rename to docusite/docs/landcover/global/ESRI-2020-Land-Cover.md diff --git a/doc/landcover/global/FROM-GLC10.md b/docusite/docs/landcover/global/FROM-GLC10.md similarity index 100% rename from doc/landcover/global/FROM-GLC10.md rename to docusite/docs/landcover/global/FROM-GLC10.md diff --git a/doc/landcover/global/Global-land-cover-2000.md b/docusite/docs/landcover/global/Global-land-cover-2000.md similarity index 100% rename from doc/landcover/global/Global-land-cover-2000.md rename to docusite/docs/landcover/global/Global-land-cover-2000.md diff --git a/doc/landcover/global/Globcover-2009.md b/docusite/docs/landcover/global/Globcover-2009.md similarity index 100% rename from doc/landcover/global/Globcover-2009.md rename to docusite/docs/landcover/global/Globcover-2009.md diff --git a/doc/landcover/global/LC-CCI.md b/docusite/docs/landcover/global/LC-CCI.md similarity index 100% rename from doc/landcover/global/LC-CCI.md rename to docusite/docs/landcover/global/LC-CCI.md diff --git a/doc/landcover/global/LandCover-Copernicus-GLS.md b/docusite/docs/landcover/global/LandCover-Copernicus-GLS.md similarity index 100% rename from doc/landcover/global/LandCover-Copernicus-GLS.md rename to docusite/docs/landcover/global/LandCover-Copernicus-GLS.md diff --git a/doc/landcover/global/Modis-MCD12Q1-v6-LandCover.md b/docusite/docs/landcover/global/Modis-MCD12Q1-v6-LandCover.md similarity index 100% rename from doc/landcover/global/Modis-MCD12Q1-v6-LandCover.md rename to docusite/docs/landcover/global/Modis-MCD12Q1-v6-LandCover.md diff --git a/doc/protected/global/RAMSAR.md b/docusite/docs/protected/global/RAMSAR.md similarity index 100% rename from doc/protected/global/RAMSAR.md rename to docusite/docs/protected/global/RAMSAR.md diff --git a/doc/protected/global/WDPA.md b/docusite/docs/protected/global/WDPA.md similarity index 100% rename from doc/protected/global/WDPA.md rename to docusite/docs/protected/global/WDPA.md diff --git a/doc/species-abundance/global/living-planet-index.md b/docusite/docs/species-abundance/global/living-planet-index.md similarity index 100% rename from doc/species-abundance/global/living-planet-index.md rename to docusite/docs/species-abundance/global/living-planet-index.md diff --git a/doc/species-dist/global/BOTW.md b/docusite/docs/species-dist/global/BOTW.md similarity index 100% rename from doc/species-dist/global/BOTW.md rename to docusite/docs/species-dist/global/BOTW.md diff --git a/doc/species-dist/global/GBIF.md b/docusite/docs/species-dist/global/GBIF.md similarity index 100% rename from doc/species-dist/global/GBIF.md rename to docusite/docs/species-dist/global/GBIF.md diff --git a/doc/species-dist/global/RLTS-spatial-data.md b/docusite/docs/species-dist/global/RLTS-spatial-data.md similarity index 90% rename from doc/species-dist/global/RLTS-spatial-data.md rename to docusite/docs/species-dist/global/RLTS-spatial-data.md index 8d03325..984fdab 100644 --- a/doc/species-dist/global/RLTS-spatial-data.md +++ b/docusite/docs/species-dist/global/RLTS-spatial-data.md @@ -9,14 +9,14 @@ The IUCN Red List of Threatened Species™ contains global assessments for almos > Users MUST provide the appropriate credit(s)for this spatial data if it is used in any product produced in any media. For individual species maps, credit information is provided in the citation field of the attribute data for that species. This information should be used in conjunction with the credit information for the spatial dataset as a whole using the following format: -> . The IUCN Red List of Threatened Species. Version . -https://www.iucnredlist.org. Downloaded on . +> {citation field information} {year}. The IUCN Red List of Threatened Species. Version {Red List version}. +https://www.iucnredlist.org. Downloaded on {insert appropriate date}. ### Documentation https://nc.iucnredlist.org/redlist/content/attachment_files/RLSpatial_metadata_v6.2.pdf -### data: +### data Spatial data download from https://www.iucnredlist.org/resources/spatial-data-download Register and download diff --git a/doc/species-dist/global/living-planet-index.md b/docusite/docs/species-dist/global/living-planet-index.md similarity index 100% rename from doc/species-dist/global/living-planet-index.md rename to docusite/docs/species-dist/global/living-planet-index.md diff --git a/doc/temperature-land/global/Modis-MCD12Q1-v6-LandSurfaceTemperature.md b/docusite/docs/temperature-land/global/Modis-MCD12Q1-v6-LandSurfaceTemperature.md similarity index 100% rename from doc/temperature-land/global/Modis-MCD12Q1-v6-LandSurfaceTemperature.md rename to docusite/docs/temperature-land/global/Modis-MCD12Q1-v6-LandSurfaceTemperature.md diff --git a/doc/temperature-sea/global/AVHRR-SST.md b/docusite/docs/temperature-sea/global/AVHRR-SST.md similarity index 100% rename from doc/temperature-sea/global/AVHRR-SST.md rename to docusite/docs/temperature-sea/global/AVHRR-SST.md diff --git a/doc/topography/global/EarthEnv-Topography.md b/docusite/docs/topography/global/EarthEnv-Topography.md similarity index 100% rename from doc/topography/global/EarthEnv-Topography.md rename to docusite/docs/topography/global/EarthEnv-Topography.md diff --git a/doc/topography/global/GMBA-Mountain-Inventory.md b/docusite/docs/topography/global/GMBA-Mountain-Inventory.md similarity index 100% rename from doc/topography/global/GMBA-Mountain-Inventory.md rename to docusite/docs/topography/global/GMBA-Mountain-Inventory.md diff --git a/doc/topography/global/GME-Mountain-Inventory.md b/docusite/docs/topography/global/GME-Mountain-Inventory.md similarity index 100% rename from doc/topography/global/GME-Mountain-Inventory.md rename to docusite/docs/topography/global/GME-Mountain-Inventory.md diff --git a/doc/topography/global/GSHHG-1996.md b/docusite/docs/topography/global/GSHHG-1996.md similarity index 100% rename from doc/topography/global/GSHHG-1996.md rename to docusite/docs/topography/global/GSHHG-1996.md diff --git a/doc/topography/global/GTI-2015.md b/docusite/docs/topography/global/GTI-2015.md similarity index 100% rename from doc/topography/global/GTI-2015.md rename to docusite/docs/topography/global/GTI-2015.md diff --git a/doc/topography/global/SRTM-plus.md b/docusite/docs/topography/global/SRTM-plus.md similarity index 100% rename from doc/topography/global/SRTM-plus.md rename to docusite/docs/topography/global/SRTM-plus.md diff --git a/doc/topography/regional/Geomorfologia-Peru.md b/docusite/docs/topography/regional/Geomorfologia-Peru.md similarity index 100% rename from doc/topography/regional/Geomorfologia-Peru.md rename to docusite/docs/topography/regional/Geomorfologia-Peru.md diff --git a/doc/vegcover/global/Modis-VCF-v6.md b/docusite/docs/vegcover/global/Modis-VCF-v6.md similarity index 100% rename from doc/vegcover/global/Modis-VCF-v6.md rename to docusite/docs/vegcover/global/Modis-VCF-v6.md diff --git a/doc/vegetation-plots/global/sPlotOpen.md b/docusite/docs/vegetation-plots/global/sPlotOpen.md similarity index 100% rename from doc/vegetation-plots/global/sPlotOpen.md rename to docusite/docs/vegetation-plots/global/sPlotOpen.md diff --git a/doc/vegetation-plots/regional/ausplots.md b/docusite/docs/vegetation-plots/regional/ausplots.md similarity index 100% rename from doc/vegetation-plots/regional/ausplots.md rename to docusite/docs/vegetation-plots/regional/ausplots.md diff --git a/doc/vegetation/regional/Argentina-vegetation.md b/docusite/docs/vegetation/regional/Argentina-vegetation.md similarity index 100% rename from doc/vegetation/regional/Argentina-vegetation.md rename to docusite/docs/vegetation/regional/Argentina-vegetation.md diff --git a/doc/vegetation/regional/Australia-NVIS-Vegetation.md b/docusite/docs/vegetation/regional/Australia-NVIS-Vegetation.md similarity index 100% rename from doc/vegetation/regional/Australia-NVIS-Vegetation.md rename to docusite/docs/vegetation/regional/Australia-NVIS-Vegetation.md diff --git a/doc/vegetation/regional/Bolivia-vegetation.md b/docusite/docs/vegetation/regional/Bolivia-vegetation.md similarity index 100% rename from doc/vegetation/regional/Bolivia-vegetation.md rename to docusite/docs/vegetation/regional/Bolivia-vegetation.md diff --git a/doc/vegetation/regional/Chile-pisos-vegetacion.md b/docusite/docs/vegetation/regional/Chile-pisos-vegetacion.md similarity index 100% rename from doc/vegetation/regional/Chile-pisos-vegetacion.md rename to docusite/docs/vegetation/regional/Chile-pisos-vegetacion.md diff --git a/doc/vegetation/regional/Circumpolar-arctic-vegetation-map.md b/docusite/docs/vegetation/regional/Circumpolar-arctic-vegetation-map.md similarity index 100% rename from doc/vegetation/regional/Circumpolar-arctic-vegetation-map.md rename to docusite/docs/vegetation/regional/Circumpolar-arctic-vegetation-map.md diff --git a/doc/vegetation/regional/IVC-potential-macrogroups.md b/docusite/docs/vegetation/regional/IVC-potential-macrogroups.md similarity index 100% rename from doc/vegetation/regional/IVC-potential-macrogroups.md rename to docusite/docs/vegetation/regional/IVC-potential-macrogroups.md diff --git a/doc/vegetation/regional/NewSouthWales-State-Vegetation-Map.md b/docusite/docs/vegetation/regional/NewSouthWales-State-Vegetation-Map.md similarity index 100% rename from doc/vegetation/regional/NewSouthWales-State-Vegetation-Map.md rename to docusite/docs/vegetation/regional/NewSouthWales-State-Vegetation-Map.md diff --git a/doc/vegetation/regional/Peru-vegetation.md b/docusite/docs/vegetation/regional/Peru-vegetation.md similarity index 100% rename from doc/vegetation/regional/Peru-vegetation.md rename to docusite/docs/vegetation/regional/Peru-vegetation.md diff --git a/doc/vegetation/regional/Potential-Eastern-Africa.md b/docusite/docs/vegetation/regional/Potential-Eastern-Africa.md similarity index 100% rename from doc/vegetation/regional/Potential-Eastern-Africa.md rename to docusite/docs/vegetation/regional/Potential-Eastern-Africa.md diff --git a/doc/vegetation/regional/South-Africa-Vegetation.md b/docusite/docs/vegetation/regional/South-Africa-Vegetation.md similarity index 100% rename from doc/vegetation/regional/South-Africa-Vegetation.md rename to docusite/docs/vegetation/regional/South-Africa-Vegetation.md diff --git a/doc/vegetation/regional/White-Africa-Vegetation.md b/docusite/docs/vegetation/regional/White-Africa-Vegetation.md similarity index 100% rename from doc/vegetation/regional/White-Africa-Vegetation.md rename to docusite/docs/vegetation/regional/White-Africa-Vegetation.md diff --git a/doc/veglayer/global/3D-forest-landscape.md b/docusite/docs/veglayer/global/3D-forest-landscape.md similarity index 100% rename from doc/veglayer/global/3D-forest-landscape.md rename to docusite/docs/veglayer/global/3D-forest-landscape.md diff --git a/doc/veglayer/global/AVHRR-GIMMS.md b/docusite/docs/veglayer/global/AVHRR-GIMMS.md similarity index 100% rename from doc/veglayer/global/AVHRR-GIMMS.md rename to docusite/docs/veglayer/global/AVHRR-GIMMS.md diff --git a/doc/veglayer/global/GEDI-forest-canopy-height.md b/docusite/docs/veglayer/global/GEDI-forest-canopy-height.md similarity index 100% rename from doc/veglayer/global/GEDI-forest-canopy-height.md rename to docusite/docs/veglayer/global/GEDI-forest-canopy-height.md diff --git a/doc/veglayer/global/GLASS-LAI.md b/docusite/docs/veglayer/global/GLASS-LAI.md similarity index 100% rename from doc/veglayer/global/GLASS-LAI.md rename to docusite/docs/veglayer/global/GLASS-LAI.md diff --git a/doc/veglayer/global/Modis-GPP-NPP.md b/docusite/docs/veglayer/global/Modis-GPP-NPP.md similarity index 100% rename from doc/veglayer/global/Modis-GPP-NPP.md rename to docusite/docs/veglayer/global/Modis-GPP-NPP.md diff --git a/doc/veglayer/global/WHRC-vegetation-height.md b/docusite/docs/veglayer/global/WHRC-vegetation-height.md similarity index 100% rename from doc/veglayer/global/WHRC-vegetation-height.md rename to docusite/docs/veglayer/global/WHRC-vegetation-height.md diff --git a/doc/veglayer/regional/TERN-phenology.md b/docusite/docs/veglayer/regional/TERN-phenology.md similarity index 100% rename from doc/veglayer/regional/TERN-phenology.md rename to docusite/docs/veglayer/regional/TERN-phenology.md diff --git a/doc/veglayer/regional/TERN-vegetation-height.md b/docusite/docs/veglayer/regional/TERN-vegetation-height.md similarity index 100% rename from doc/veglayer/regional/TERN-vegetation-height.md rename to docusite/docs/veglayer/regional/TERN-vegetation-height.md diff --git a/doc/water/Global-daily-surface-water.md b/docusite/docs/water/Global-daily-surface-water.md similarity index 100% rename from doc/water/Global-daily-surface-water.md rename to docusite/docs/water/Global-daily-surface-water.md From 10f5a1ea8917ad5915c5a3ca9937c3444f7a1d82 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 08:47:13 +1000 Subject: [PATCH 05/23] customise the svg image with wombat and sloth --- .../static/img/undraw_docusaurus_react.svg | 40 ++++++++++++++++--- 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/docusite/static/img/undraw_docusaurus_react.svg b/docusite/static/img/undraw_docusaurus_react.svg index f4832fc..3d4c4e6 100644 --- a/docusite/static/img/undraw_docusaurus_react.svg +++ b/docusite/static/img/undraw_docusaurus_react.svg @@ -23,14 +23,14 @@ inkscape:deskcolor="#d1d1d1" showgrid="false" inkscape:zoom="0.42588439" - inkscape:cx="448.47851" - inkscape:cy="277.0705" - inkscape:window-width="1309" - inkscape:window-height="456" - inkscape:window-x="0" + inkscape:cx="370.9927" + inkscape:cy="280.59258" + inkscape:window-width="1385" + inkscape:window-height="727" + inkscape:window-x="1920" inkscape:window-y="25" inkscape:window-maximized="0" - inkscape:current-layer="svg400" /><title id="title242">Powered by React + + + + + + + + From 2a1486f2a99e1cc85e58b3fef221ac9889f43455 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 09:18:26 +1000 Subject: [PATCH 06/23] Reorganise blog entries --- docusite/blog/2021-08-01-mdx-blog-post.mdx | 20 -------------- docusite/blog/2022-12-26-welcome/index.md | 25 ------------------ .../docusaurus-plushie-banner.jpeg | Bin .../blog/2023-03-06-deforestation/index.md | 13 +++++++++ docusite/blog/2023-04-13-long-blog-post.md | 2 +- 5 files changed, 14 insertions(+), 46 deletions(-) delete mode 100644 docusite/blog/2021-08-01-mdx-blog-post.mdx delete mode 100644 docusite/blog/2022-12-26-welcome/index.md rename docusite/blog/{2022-12-26-welcome => 2023-03-06-deforestation}/docusaurus-plushie-banner.jpeg (100%) create mode 100644 docusite/blog/2023-03-06-deforestation/index.md diff --git a/docusite/blog/2021-08-01-mdx-blog-post.mdx b/docusite/blog/2021-08-01-mdx-blog-post.mdx deleted file mode 100644 index 0d7ba72..0000000 --- a/docusite/blog/2021-08-01-mdx-blog-post.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -slug: mdx-blog-post -title: MDX Blog Post -authors: [jrfep] -tags: [docusaurus] ---- - -Blog posts support [Docusaurus Markdown features](https://docusaurus.io/docs/markdown-features), such as [MDX](https://mdxjs.com/). - -:::tip - -Use the power of React to create interactive blog posts. - -```js - -``` - - - -::: diff --git a/docusite/blog/2022-12-26-welcome/index.md b/docusite/blog/2022-12-26-welcome/index.md deleted file mode 100644 index d37f6e6..0000000 --- a/docusite/blog/2022-12-26-welcome/index.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -slug: welcome -title: Welcome -authors: [jrfep, adasanchez] -tags: [facebook, hello, docusaurus] ---- - -[Docusaurus blogging features](https://docusaurus.io/docs/blog) are powered by the [blog plugin](https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog). - -Simply add Markdown files (or folders) to the `blog` directory. - -Regular blog authors can be added to `authors.yml`. - -The blog post date can be extracted from filenames, such as: - -- `2019-05-30-welcome.md` -- `2019-05-30-welcome/index.md` - -A blog post folder can be convenient to co-locate blog post images: - -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) - -The blog supports tags as well! - -**And if you don't want a blog**: just delete this directory, and use `blog: false` in your Docusaurus config. diff --git a/docusite/blog/2022-12-26-welcome/docusaurus-plushie-banner.jpeg b/docusite/blog/2023-03-06-deforestation/docusaurus-plushie-banner.jpeg similarity index 100% rename from docusite/blog/2022-12-26-welcome/docusaurus-plushie-banner.jpeg rename to docusite/blog/2023-03-06-deforestation/docusaurus-plushie-banner.jpeg diff --git a/docusite/blog/2023-03-06-deforestation/index.md b/docusite/blog/2023-03-06-deforestation/index.md new file mode 100644 index 0000000..41e5851 --- /dev/null +++ b/docusite/blog/2023-03-06-deforestation/index.md @@ -0,0 +1,13 @@ +--- +slug: venezuela-deforestation +title: Deforestation in Venezuela +authors: [jrfep, adasanchez] +tags: [venezuela, deforestation, global, regional] +--- + +What kind of data do we need for analysing deforestation trends in a tropical country? + +We started working on the problem of deforestation in Venezuela many years ago, and we have the challenge of combining global and regional data to make a complete picture of the problem. + +![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) + diff --git a/docusite/blog/2023-04-13-long-blog-post.md b/docusite/blog/2023-04-13-long-blog-post.md index 38c6120..ac310e9 100644 --- a/docusite/blog/2023-04-13-long-blog-post.md +++ b/docusite/blog/2023-04-13-long-blog-post.md @@ -15,7 +15,7 @@ Long time ago I started to use markdown for the documentation of each dataset an So I think I already had most of the ingredients that I needed. I was just lacking a cool system to bring this all together in an organised way. -Over the years I have experimented with different approaches to build websites: php, content management systems, flask, hugo, jekyll, quarto, etc. So many options. +Over the years I have experimented with different approaches to build websites: php, content management systems, shiny apps, flask, hugo, jekyll, quarto, rblogdown, etc. So many options. Since all these documents were already in markdown and the code was not supposed to be re-run constantly I just need a very straightforward, no non-sense system that transforms this collection into a clear structure with easy navigation. Blog post would be nice to add some comments to the growing collection of documents, but they should not distract that much from the main feature. From ddd15f8f9970bac7bd17cae2d6b291cc81786b95 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 09:18:48 +1000 Subject: [PATCH 07/23] add front matter and tags, reorganise content --- docusite/docs/admin/global/EEZ-borders.md | 22 +++++++++++++++++-- .../docs/admin/global/TM-World-Borders.md | 19 +++++++++++++--- .../docs/admin/global/World-Bank-Official.md | 16 +++++++++----- docusite/docs/admin/global/_category_.json | 1 - 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/docusite/docs/admin/global/EEZ-borders.md b/docusite/docs/admin/global/EEZ-borders.md index d988803..aeb7d61 100644 --- a/docusite/docs/admin/global/EEZ-borders.md +++ b/docusite/docs/admin/global/EEZ-borders.md @@ -1,5 +1,13 @@ +--- +tags: [IUCN-GET,Typology web,OGR] +--- + # EEZ boundaries +Maritime Boundaries and Exclusive Economic Zones + +## Links + https://www.marineregions.org/eez.php ## Citation @@ -7,17 +15,27 @@ https://www.marineregions.org/eez.php ## Data download and preparation +This dataset is available after registration, I have not found a method for direct download from the commandline. + ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh mkdir -p $GISDATA/admin/global/EEZ/ cd $GISDATA/admin/global/EEZ/ -# register and download +# register and download, then move to current folder. mv ~/Downloads/World_EEZ_v11_20191118_gpkg.zip $GISDATA/admin/global/EEZ/ +``` -unzip -u World_EEZ_v11_20191118_gpkg.zip +## Data preparation +In Katana we need to load the appropriate modules +```sh title="Load modules for Katana" module add sqlite/3.31.1 spatialite/5.0.0b0 python/3.8.3 perl/5.28.0 gdal/3.2.1 geos/3.8.1 proj/7.2.0 +``` +Prepare data for use in GIS using `ogr2ogr` with option `-makevalid` and `-simplify` + +```sh title="OGR, do your thing!" +unzip -u World_EEZ_v11_20191118_gpkg.zip ogr2ogr -f "GPKG" eez-valid.gpkg World_EEZ_v11_20191118_gpkg/eez_v11.gpkg -nlt PROMOTE_TO_MULTI -makevalid -simplify 0.0001 ``` diff --git a/docusite/docs/admin/global/TM-World-Borders.md b/docusite/docs/admin/global/TM-World-Borders.md index 811330b..3e03d93 100644 --- a/docusite/docs/admin/global/TM-World-Borders.md +++ b/docusite/docs/admin/global/TM-World-Borders.md @@ -1,7 +1,20 @@ -# thematicmapping World Borders Dataset +--- +tags: [wget] +--- +# TMWB + +The world borders used by thematicmapping.org. + +## Links http://thematicmapping.org/downloads/world_borders.php +## Data download and preparation + +The *Thematic Mapping World Borders* can be downloaded directly from the website, I use `wget` to download from the commandline. + +Current version is 0.3, is nice for display, but is an unofficial version of the borders. + ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh mkdir -p $GISDATA/admin/global/TMWB/ @@ -10,6 +23,6 @@ cd $GISDATA/admin/global/TMWB/ wget --continue http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip wget --continue http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip - unzip -u TM_WORLD_BORDERS-0.3.zip - unzip -u TM_WORLD_BORDERS_SIMPL-0.3.zip +unzip -u TM_WORLD_BORDERS-0.3.zip +unzip -u TM_WORLD_BORDERS_SIMPL-0.3.zip ``` diff --git a/docusite/docs/admin/global/World-Bank-Official.md b/docusite/docs/admin/global/World-Bank-Official.md index 97e3c9d..aacae34 100644 --- a/docusite/docs/admin/global/World-Bank-Official.md +++ b/docusite/docs/admin/global/World-Bank-Official.md @@ -1,15 +1,22 @@ -# World Bank Official Boundaries +--- +tags: [IUCN-GET,Typology web,wget] +--- +# World Bank + +World Bank Official Boundaries + +## Links https://datacatalog.worldbank.org/dataset/world-bank-official-boundaries +## Data download and preparation +The *World Bank Official Boundaries* can be downloaded directly from a public amazon aws bucket. I use `wget` to download from the commandline. +There are many files with different formats and content, I download them all using a `for` loop. ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh - - - mkdir -p $GISDATA/admin/global/World-Bank/ cd $GISDATA/admin/global/World-Bank/ @@ -17,5 +24,4 @@ for ARCH in wb_countries_admin0_10m.zip wb_disputed_areas_admin0_10m.zip wb_disp do wget --continue https://development-data-hub-s3-public.s3.amazonaws.com/ddhfiles/779551/${ARCH} done - ``` diff --git a/docusite/docs/admin/global/_category_.json b/docusite/docs/admin/global/_category_.json index 5cc8481..2c47fa4 100644 --- a/docusite/docs/admin/global/_category_.json +++ b/docusite/docs/admin/global/_category_.json @@ -1,6 +1,5 @@ { "label": "admin/global", - "position": 4, "link": { "type": "generated-index", "description": From 73cb13224308ff810510205f58575ad47beca166 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 09:19:06 +1000 Subject: [PATCH 08/23] new favicon --- docusite/static/img/favicon.jpg | Bin 0 -> 5773 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docusite/static/img/favicon.jpg diff --git a/docusite/static/img/favicon.jpg b/docusite/static/img/favicon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..045ff1941b2c85a9126cb8f02dc9c58d2a20e383 GIT binary patch literal 5773 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 Date: Fri, 14 Apr 2023 09:19:28 +1000 Subject: [PATCH 09/23] add frontmatter with tags, reorganise content, etc --- docusite/docs/anthroposphere/_category_.json | 1 - .../docs/anthroposphere/global/Anthromes.md | 43 ++++++++++++++----- docusite/docs/anthroposphere/global/HANPP.md | 8 ++++ .../anthroposphere/global/_category_.json | 7 +++ .../anthroposphere/regional/_category_.json | 7 +++ docusite/docs/climate/_category_.json | 1 - docusite/docs/climate/global/CHIRPS.md | 7 ++- docusite/docs/climate/global/CRU-TS.md | 6 ++- docusite/docs/topography/global/SRTM-plus.md | 23 ++++++---- 9 files changed, 78 insertions(+), 25 deletions(-) create mode 100644 docusite/docs/anthroposphere/global/_category_.json create mode 100644 docusite/docs/anthroposphere/regional/_category_.json diff --git a/docusite/docs/anthroposphere/_category_.json b/docusite/docs/anthroposphere/_category_.json index 81fb8af..5d12aab 100644 --- a/docusite/docs/anthroposphere/_category_.json +++ b/docusite/docs/anthroposphere/_category_.json @@ -1,6 +1,5 @@ { "label": "antroposphere", - "position": 4, "link": { "type": "generated-index", "description": "All thing related to human modifications of the environment." diff --git a/docusite/docs/anthroposphere/global/Anthromes.md b/docusite/docs/anthroposphere/global/Anthromes.md index c948a29..0b1b4c7 100644 --- a/docusite/docs/anthroposphere/global/Anthromes.md +++ b/docusite/docs/anthroposphere/global/Anthromes.md @@ -1,37 +1,58 @@ -# Anthromes maps and datasets +--- +tags: [IUCN-GET,wget,gdal,grass GIS] +--- +# Anthromes -Data in 5 arc minute global geographic raster grids in .zip files with accompanying metadata. +Anthromes maps and datasets -Description of source dataset from Ellis et al. (2010) "Global data for human population density and percentage cover by urban, crop and pasture lands at 5′ resolution were obtained using the updated version of the HYDE 3.1 data model (http://www.pbl.nl/hyde), based on Klein Goldewijk & van Drecht (2006). Global 5′ data for rice cover in 2000 were obtained from Monfreda et al. (2008)." +Data in 5 arc minute global geographic raster grids in .zip files with accompanying metadata. -#### Citation +## Citation > Ellis, E. C., K. Klein Goldewijk, S. Siebert, D. Lightman, and N. Ramankutty. 2010. Anthropogenic transformation of the biomes, 1700 to 2000. Global Ecology and Biogeography 19(5):589-606. [download] > Klein Goldewijk, K. & van Drecht, G. (2006) HYDE 3: current and historical population and land cover. Integrated modelling of global environmental change. An overview of IMAGE 2.4 (ed. by A.F. Bouwman, T. Kram and K. Klein Goldewijk), pp. 93–111. Netherlands Environmental Assessment Agency (MNP), Bilthoven, The Netherlands. > Monfreda, C., Ramankutty, N. & Foley, J.A. (2008) Farming the planet: 2. Geographic distribution of crop areas, yields, physi- ological types, and net primary production in the year 2000. Global Biogeochemical Cycles, 22, GB1022. -#### Data access +## Data description + +Description of source dataset from Ellis et al. (2010) "Global data for human population density and percentage cover by urban, crop and pasture lands at 5′ resolution were obtained using the updated version of the HYDE 3.1 data model (http://www.pbl.nl/hyde), based on Klein Goldewijk & van Drecht (2006). Global 5′ data for rice cover in 2000 were obtained from Monfreda et al. (2008)." + +## Data access http://ecotope.org/anthromes/v2/data/ -#### Data preparation +## Data download + +Data can be downloaded directly from the website, I use `wget` to download from the commandline. ```sh mkdir -p $GISDATA/biomas/Anthromes cd $GISDATA/biomas/Anthromes - wget --continue http://ecotope.org/files/anthromes/v2/data/input_data/anthromes_2_input_data_ESRI_GRID.zip +``` -cd $WORKDIR -unzip $GISDATA/biomas/Anthromes/anthromes_2_input_data_ESRI_GRID.zip +## Data preparation +### Gdal -## Fix geographic limits to 90 (NS) and 180 (EW) +I use `gdalwarp` to fix geographic limits to 90 (NS) and 180 (EW) + +```sh +cd $WORKDIR +unzip $GISDATA/biomas/Anthromes/anthromes_2_input_data_ESRI_GRID.zip for k in cult irrig past rice urban do gdalwarp -te -180 -90 180 90 $WORKDIR/2000/p_${k}/ Anthromes_p_${k}.tif done + # alternatively use year in 1700 1800 1900 2000 + +``` + +### Grass GIS + +We can create a Grass GIS location from the commandline +```sh grass --text -c Anthromes_p_${k}.tif $GISDB/raw/Anthromes for k in cult irrig past rice urban @@ -39,7 +60,9 @@ do r.in.gdal input=Anthromes_p_${k}.tif output=p_${k} done +# once imported in grass, we can clean up the downloaded files: rm -r 1700 1800 1900 2000 methods_smaller.jpg Readme.txt rm Anthromes*tif + exit ``` diff --git a/docusite/docs/anthroposphere/global/HANPP.md b/docusite/docs/anthroposphere/global/HANPP.md index 2605628..d3f742d 100644 --- a/docusite/docs/anthroposphere/global/HANPP.md +++ b/docusite/docs/anthroposphere/global/HANPP.md @@ -1,4 +1,12 @@ +--- +authors: jrfep +tags: [IUCN-GET,Indicative maps] +--- + # Global HANPP 2000 + +Global Human Appropriation of Net Primary Production + > Haberl, H., K.-H. Erb, F. Krausmann, V. Gaube, A. Bondeau, C. Plutzar, S. Gingrich, W. Lucht and M. Fischer-Kowalski, (2007). Quantifying and mapping the global human appropriation of net primary production in Earth's terrestrial ecosystems. Proceedings of the National Acadademy of Sciences of the United States of America 104, 12942-12947. ```sh diff --git a/docusite/docs/anthroposphere/global/_category_.json b/docusite/docs/anthroposphere/global/_category_.json new file mode 100644 index 0000000..c4482a3 --- /dev/null +++ b/docusite/docs/anthroposphere/global/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "antroposphere/global", + "link": { + "type": "generated-index", + "description": "All thing related to human modifications of the environment." + } +} diff --git a/docusite/docs/anthroposphere/regional/_category_.json b/docusite/docs/anthroposphere/regional/_category_.json new file mode 100644 index 0000000..cebbd29 --- /dev/null +++ b/docusite/docs/anthroposphere/regional/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "antroposphere/regional", + "link": { + "type": "generated-index", + "description": "All thing related to human modifications of the environment." + } +} diff --git a/docusite/docs/climate/_category_.json b/docusite/docs/climate/_category_.json index d7abb69..103baee 100644 --- a/docusite/docs/climate/_category_.json +++ b/docusite/docs/climate/_category_.json @@ -1,6 +1,5 @@ { "label": "climate", - "position": 4, "link": { "type": "generated-index", "description": "Climate" diff --git a/docusite/docs/climate/global/CHIRPS.md b/docusite/docs/climate/global/CHIRPS.md index 7b708d8..6faa7ab 100644 --- a/docusite/docs/climate/global/CHIRPS.md +++ b/docusite/docs/climate/global/CHIRPS.md @@ -1,5 +1,8 @@ -# The Climate Hazards Group InfraRed Precipitation with Station ([CHIRPS](http:/ -/chg.geog.ucsb.edu/data/chirps)) +# CHIRPS + + + +([The Climate Hazards Group InfraRed Precipitation with Station](http://chg.geog.ucsb.edu/data/chirps)) Quasi-global distribution (50S-50N), gridded 0.05 degree resolution, 1981 to near-real time precipitation time series. diff --git a/docusite/docs/climate/global/CRU-TS.md b/docusite/docs/climate/global/CRU-TS.md index e5d6254..3605fec 100644 --- a/docusite/docs/climate/global/CRU-TS.md +++ b/docusite/docs/climate/global/CRU-TS.md @@ -1,4 +1,6 @@ -# [CRU TS v. 4.03](https://crudata.uea.ac.uk/cru/data/hrg/) +# CRU TS v. 4.03 + +[CRU TS v. 4.03](https://crudata.uea.ac.uk/cru/data/hrg/) High-resolution gridded datasets of the Climatic Research Unit. @@ -10,7 +12,7 @@ High-resolution gridded datasets of the Climatic Research Unit. ## Data access Data is available at: -> +> https://crudata.uea.ac.uk/cru/data/hrg/ Documentation: Metadata: diff --git a/docusite/docs/topography/global/SRTM-plus.md b/docusite/docs/topography/global/SRTM-plus.md index de6539b..9f62f06 100644 --- a/docusite/docs/topography/global/SRTM-plus.md +++ b/docusite/docs/topography/global/SRTM-plus.md @@ -1,32 +1,37 @@ -# SRTM30_PLUS - SRTM30, COASTAL & RIDGE MULTIBEAM, ESTIMATED TOPOGRAPHY +--- +tags: [IUCN-GET,Indicative maps,wget,bzip2] +--- +# SRTM30 PLUS -##Reference, +SRTM30, COASTAL & RIDGE MULTIBEAM, ESTIMATED TOPOGRAPHY + +## Citation sounding data: > Becker, J. J., D. T. Sandwell, W. H. F. Smith, J. Braud, B. Binder, J. Depner, D. Fabre, J. Factor, S. Ingalls, S-H. Kim, R. Ladner, K. Marks, S. Nelson, A. Pharaoh, R. Trimmer, J. Von Rosenberg, G. Wallace, P. Weatherall., Global Bathymetry and Elevation Data at 30 Arc Seconds Resolution: SRTM30_PLUS, Marine Geodesy, 32:4, 355-371, 2009. +## Links + URL: https://topex.ucsd.edu/WWW_html/srtm30_plus.html Data in: ftp://topex.ucsd.edu/pub/srtm30_plus/ topo30 format: The subdirectory called topo30 has the data stored in a single large file of 2-byte integers in MSB format (i.e. big-endian). The grid spans 0 to 360 in longitude and -90 to 90 in latitude. The upper left corner of the upper left grid cell has latitude 90 and longitude 0. There are 43200 columns and 21600 rows. A matching source identification file (SID) called topo30_sid is also included. The sid numbers are stored as unsigned 2-byte integers. +## Data access + ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh - - DPATH=topography/global DNAME=SRTM30-plus - mkdir -p $GISDATA/$DPATH/$DNAME/ cd $GISDATA/$DPATH/$DNAME/ - wget ftp://topex.ucsd.edu/pub/srtm30_plus/topo30/topo30.grd +``` -# 1.8G uncompressed +We can use `bzip2` to compress the downloaded file and reduce the size from 1.8G to 622M: +```sh bzip2 topo30.grd -# 622M compressed ``` From 56dd8c17cccf26d3ab13ccd2a371561bdcd6a6b6 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 09:19:58 +1000 Subject: [PATCH 10/23] modify svgs and favicon --- docusite/docusaurus.config.js | 18 +++++++----------- docusite/src/pages/how-to-site.md | 6 ++++++ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/docusite/docusaurus.config.js b/docusite/docusaurus.config.js index 7a33854..0c03d60 100644 --- a/docusite/docusaurus.config.js +++ b/docusite/docusaurus.config.js @@ -8,7 +8,7 @@ const darkCodeTheme = require('prism-react-renderer/themes/dracula'); const config = { title: 'GIS data of the Centre for Ecosystem Science', tagline: 'Spatial data for global ecosystem analyses', - favicon: 'img/favicon.ico', + favicon: 'img/favicon.jpg', // Set the production url of your site here url: 'https://your-docusaurus-test-site.com', @@ -66,7 +66,7 @@ const config = { navbar: { title: 'cesdata/gisdata', logo: { - alt: 'My Site Logo', + alt: 'Centre for Ecosystem Science Logo', src: 'img/logo_CES.png', }, items: [ @@ -74,7 +74,7 @@ const config = { type: 'docSidebar', sidebarId: 'tutorialSidebar', position: 'left', - label: 'Tutorial', + label: 'Data download scripts', }, {to: '/blog', label: 'Blog', position: 'left'}, { @@ -91,7 +91,7 @@ const config = { title: 'Docs', items: [ { - label: 'Tutorial', + label: 'Scripts', to: '/docs/intro', }, ], @@ -100,16 +100,12 @@ const config = { title: 'Community', items: [ { - label: 'Stack Overflow', - href: 'https://stackoverflow.com/questions/tagged/docusaurus', - }, - { - label: 'Discord', - href: 'https://discordapp.com/invite/docusaurus', + label: 'CES @ unsw', + href: 'https://ecosystem.unsw.edu.au', }, { label: 'Twitter', - href: 'https://twitter.com/docusaurus', + href: 'https://twitter.com/CES_UNSW', }, ], }, diff --git a/docusite/src/pages/how-to-site.md b/docusite/src/pages/how-to-site.md index 231a5c5..a8b6599 100644 --- a/docusite/src/pages/how-to-site.md +++ b/docusite/src/pages/how-to-site.md @@ -57,6 +57,12 @@ I have done most of this using just markdown, because I just haven't got much ti I am using the **classic template** because I just don't have time to explore and tweak templates and themes. +### Images + +- undraw svgs shipped with docusaurus +- https://www.svgrepo.com/svg/26855/sloth CC0 license +- https://www.svgrepo.com/svg/2155/wombat CC0 license + ### Where to locate stuff The `docusaurus.config.js` file is the place for titles and bottom menus, logos and icons, and other configuration stuff. From 306b2ab7b094c6c8254ed2514a145e05c3f074ae Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 10:30:02 +1000 Subject: [PATCH 11/23] Blog entry Forest macrogroups --- .../blog/2023-04-10-Forest-Macrogroups.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 docusite/blog/2023-04-10-Forest-Macrogroups.md diff --git a/docusite/blog/2023-04-10-Forest-Macrogroups.md b/docusite/blog/2023-04-10-Forest-Macrogroups.md new file mode 100644 index 0000000..c662629 --- /dev/null +++ b/docusite/blog/2023-04-10-Forest-Macrogroups.md @@ -0,0 +1,41 @@ +--- +slug: forest-macrogroups-americas +title: Distribution maps for the Forest macrogroups +authors: jrfep +tags: [Distribution maps, IUCN RLE, OSF cloud storage, QGIS, GPKG, IVC macrogroups] +--- + +I have been asked a couple of times to share the maps of the forest macrogroups that we assessed with the IUCN Red List of Ecosystems back in 2019. + +Here are some instructions to explore and download the maps. + + + +## The assessment + +The *IUCN Red List of Ecosystems (RLE) assessment of the forest macrogroups of the Americas*[^1] was a continental level application of the RLE protocol. + +The assessment report is accessible in the [RLE assessment database](https://assessments.iucnrle.org/systematics/8). + +I am preparing a series of repositories to share results (output data) and code of the assessment[^2]. + +## The distribution maps +The input maps for the assessment represent _potential distribution_ of vegetation macrogroups of the Americas. Vegetation macrogroups are one level of the* International Vegetation Classification* (know as IVC or EcoVeg[^3]), I have included in our documentation an entry with download scripts for several datasets related to the: [-> Go to the entry](/docs/vegetation/regional/IVC-potential-macrogroups). + +### Original raster data +The original spatial data of the vegetation macrogroups for North and South America was prepared by NatureServe and should be available in their data portals: + +- [geohub](https://geohub-natureserve.opendata.arcgis.com/maps/Natureserve::macrogroups-of-the-americas-1/explore?location=2.669578%2C114.745000%2C2.74) +- [MapServer](https://securemaps.natureserve.org/pub2/rest/services/Americas/Macrogroup/MapServer) + +### Derived vector data +I created my own version of the potential distribution maps and shared them in one [OSF repository](https://osf.io/wme3b). + +Many people have requested vector data, so I exported this using the Geopackage (".gpkg") format. This format should open in open source software like QGIS without any problem. + + +[^1]: Ferrer-Paris, J. R., Zager, I., Keith, D. A., Oliveira-Miranda, M., Rodríguez, J. P., Josse, C., González-Gil, M., Miller, R. M., Zambrana-Torrelio, C., & Barrow, E. (2019) An ecosystem risk assessment of temperate and tropical forests of the Americas with an outlook on future conservation strategies. Conserv. Lett. 12. https://doi.org/10.1111/conl.12623 + +[^2]: Ferrer-Paris, J. R. (2023, April 5). Lista Roja de Ecosistemas de UICN de los bosques de las Américas. https://doi.org/10.17605/OSF.IO/M6AFP + +[^3]: Faber-Langendoen, D., Baldwin, K., Peet, R. K., Meidinger, D., Muldavin, E., Keeler-Wolf, T., & Josse, C. (2018). The EcoVeg approach in the Americas: U.S., Canadian and International Vegetation Classifications. In Phytocoenologia (Vol. 48, Issue 2, pp. 215–237). Schweizerbart. https://doi.org/10.1127/phyto/2017/0165 \ No newline at end of file From f613d3d74f4ac93491fea5be3a00687f9f21347c Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 10:30:42 +1000 Subject: [PATCH 12/23] Organising entries for the scripts section --- docusite/docs/ecoregions/_category_.json | 7 +++++++ .../docs/ecoregions/global/OneEarth-bioregions.md | 12 +++++++++++- .../docs/species-dist/global/RLTS-spatial-data.md | 10 ++++++---- 3 files changed, 24 insertions(+), 5 deletions(-) create mode 100644 docusite/docs/ecoregions/_category_.json diff --git a/docusite/docs/ecoregions/_category_.json b/docusite/docs/ecoregions/_category_.json new file mode 100644 index 0000000..e39d3cd --- /dev/null +++ b/docusite/docs/ecoregions/_category_.json @@ -0,0 +1,7 @@ +{ + "label": "ecoregions", + "link": { + "type": "generated-index", + "description": "All thing related to human modifications of the environment." + } +} diff --git a/docusite/docs/ecoregions/global/OneEarth-bioregions.md b/docusite/docs/ecoregions/global/OneEarth-bioregions.md index 65c2ca8..3d14cbf 100644 --- a/docusite/docs/ecoregions/global/OneEarth-bioregions.md +++ b/docusite/docs/ecoregions/global/OneEarth-bioregions.md @@ -1,9 +1,19 @@ # Bioregions 2020 +***one earth*** Bioregions 2020 + +Description from the website: + +> One Earth presents a novel biogeographical framework called Bioregions 2020, which builds upon 844 terrestrial ecoregion divisions (Dinerstein et al. 2017) to delineate 185 discrete bioregions organized within the world's major biogeographical realms. + +## Citation + +## Links + https://www.oneearth.org/bioregions-2020/ https://www.oneearth.org/bioregions/ -*Citation*: +## Data access ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh diff --git a/docusite/docs/species-dist/global/RLTS-spatial-data.md b/docusite/docs/species-dist/global/RLTS-spatial-data.md index 984fdab..c9bddc2 100644 --- a/docusite/docs/species-dist/global/RLTS-spatial-data.md +++ b/docusite/docs/species-dist/global/RLTS-spatial-data.md @@ -1,10 +1,12 @@ -# RLTS - spatial data +# RLTS + +IUCN Red List of Threatened Species - spatial data ## About The IUCN Red List of Threatened Species™ contains global assessments for almost 134,400 species. More than 82% of these (>111,000 species) have spatial data. -### Reference +## Citation > Users MUST provide the appropriate credit(s)for this spatial data if it is used in any product produced in any media. For individual species maps, credit information is provided in the citation field of the attribute data for that species. This information should be used in conjunction with the credit information for the spatial dataset as a whole using the following format: @@ -12,11 +14,11 @@ produced in any media. For individual species maps, credit information is provid > {citation field information} {year}. The IUCN Red List of Threatened Species. Version {Red List version}. https://www.iucnredlist.org. Downloaded on {insert appropriate date}. -### Documentation +## Documentation https://nc.iucnredlist.org/redlist/content/attachment_files/RLSpatial_metadata_v6.2.pdf -### data +## Data access and preparation Spatial data download from https://www.iucnredlist.org/resources/spatial-data-download Register and download From 54f4059914bd57f9680ea41be1e5b4acb4cb2485 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 10:43:51 +1000 Subject: [PATCH 13/23] Basic How-to for Katana --- README.md | 147 ++---------------- docusite/docusaurus.config.js | 6 +- .../src/pages/how-to-Katana.md | 10 +- 3 files changed, 26 insertions(+), 137 deletions(-) rename Katana.md => docusite/src/pages/how-to-Katana.md (84%) diff --git a/README.md b/README.md index 8c65620..21f7900 100644 --- a/README.md +++ b/README.md @@ -3,129 +3,24 @@ GIS data for analysis at the Centre for Ecosystem Science Maintained by [@jrfep](https://github.com/jrfep) -## Folder contents +## Documentation with docusaurus -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -tree -L 3 $GISDATA - -/srv/scratch/cesdata/gisdata -├── admin -│   └── global -│   └── World-Bank -├── antroposphere -│   └── global -│   └── Earthstats -├── climate -│   └── global -│   ├── CHELSA -│   ├── CRU_TS -│   └── Terraclimate -├── cryosphere -│   └── global -│   ├── GLIMS_2019 -│   ├── LIAG_Ice -│   ├── Modis-MOD10A2-V006 -│   ├── Modis-MOD10C2 -│   ├── RGI_6.0 -│   ├── SeaIceIndex -│   ├── SMMR_SeaIceTrends -│   ├── subglacial-lakes -│   ├── VIIRS-VNP10A1F-V001 -│   └── WGI_2012 -├── ecological -│   └── global -│   ├── EcologicalMarineUnits -│   ├── FAO-GEZ -│   └── NatureMap -├── ecoregions -│   ├── global -│   │   ├── FEOW -│   │   ├── LME -│   │   ├── MEOW -│   │   └── TEOW -│   └── regional -│   ├── Canada -│   └── IBRAv7 -├── ecosystems -│   ├── global -│   │   ├── WCMC-coral-reefs -│   │   ├── WCMC-mangroves-2000 -│   │   ├── WCMC-mangroves-GMW -│   │   └── WCMC-mangrove-types -│   └── regional -│   ├── MAES -│   └── worldbank-Central-America -├── fire -│   └── regional -│   └── australia-forest-fire-2011-16 -├── forest -│   ├── global -│   │   ├── 3d-forest-JPL -│   │   └── GFC -│   └── regional -│   ├── Boreal-Forest-Monitoring -│   └── China -├── hydrology -│   └── global -│   ├── GIRES -│   ├── HydroATLAS -│   └── HydroLAKES -├── landcover -│   └── global -│   ├── FROM-GLC10 -│   ├── GLC2000 -│   ├── GlobCover -│   └── Modis -├── land-surface-temperature -│   └── global -│   ├── Modis-. -│   └── Modis-MOD11A2.006 -├── plant-traits -│   └── global -│   └── TRY-leaf-trait-maps -├── protected -│   └── global -│   └── WDPA -├── radiation -│   └── global -│   └── glUV -├── soil -│   ├── global -│   │   └── permafrost -│   └── regional -│   ├── circumpolar_permafrost -│   └── soil-landscape-grid-australia -├── species-dist -│   └── global -│   ├── BOTW -│   └── IUCN_RLTS -├── topography -│   └── global -│   ├── EarthEnv-topography -│   ├── GMBA-Mountain-Inventory -│   ├── GME-Mountain-Inventory -│   └── SRTM30-plus -├── vegcover -│   └── global -│   └── Modis-MOD44B.006 -├── vegetation -│   └── regional -│   ├── IVC-EcoVeg -│   └── NVIS-Australia -├── veglayer -│   ├── global -│   │   └── WHRC-tropics -│   └── regional -│   └── TERN-Vegetation-height -└── water - └── global - └── ModisDailyWater - -111 directories, 0 files +I started to move all documentation to [docusaurus](https://docusaurus.io/docs) in order to generate a friendly website for sharing. + +In a nutshell: + +Install [Node.js](https://nodejs.org/en/download) + +Then npx docusaurus +```sh +npx create-docusaurus@latest ~/sandbox/my-docusite classic +cd ~/sandbox/my-docusite +npx docusaurus start ``` + And start editing! + ## Overview of datasets @@ -228,17 +123,3 @@ tree -L 3 $GISDATA |---|---|---|---| | Daily surface water | [10.1029/2018wr023060](http://dx.doi.org/10.1029/2018wr023060) | $GISDATA/water/ModisDailyWater/ |done| - -## Documentation with docusaurus -https://docusaurus.io/docs - -Install [Node.js](https://nodejs.org/en/download) - -Then npx docusaurus - -```sh -npx create-docusaurus@latest ~/sandbox/my-docusite classic -cd ~/sandbox/my-docusite -npx docusaurus start -``` - diff --git a/docusite/docusaurus.config.js b/docusite/docusaurus.config.js index 0c03d60..eb0029b 100644 --- a/docusite/docusaurus.config.js +++ b/docusite/docusaurus.config.js @@ -117,7 +117,11 @@ const config = { to: 'how-to-site', }, { - label: 'Use Katana@UNSW', + label: 'Use Katana @ UNSW', + href: 'how-to-Katana', + }, + { + label: 'Katana @ UNSW documentation', href: 'https://unsw-restech.github.io/index.html', }, ], diff --git a/Katana.md b/docusite/src/pages/how-to-Katana.md similarity index 84% rename from Katana.md rename to docusite/src/pages/how-to-Katana.md index 6013409..afdc244 100644 --- a/Katana.md +++ b/docusite/src/pages/how-to-Katana.md @@ -2,11 +2,13 @@ Please check [Katana User’s documentation](https://unsw-restech.github.io/index.html). -Here some useful tips +Here some useful tips: ## Log-in / authentication -In Linux I set up my bash terminal to recognize my zID (as env variable `$zID`) and set up [SSH Public key authentication](https://www.ssh.com/ssh/public-key-authentication). +To apply for an account in Katana you can send an email to the [UNSW IT Service Centre](mailto:ITServiceCentre@unsw.edu.au) giving your zID, your role within UNSW and the name of your supervisor or head of your research group. + +In Linux and MacOSX I set up my bash terminal to recognize my zID (as env variable `$zID`) and set up [SSH Public key authentication](https://www.ssh.com/ssh/public-key-authentication). ## Copying files @@ -55,7 +57,6 @@ qsub -I -l select=1:ncpus=1:mem=120gb,walltime=12:00:00 Some recomendations from Duncan: * Use skylake-avx512 by making your interactive job request become something like: `qsub -I -l select=1:ncpus=1:cpuflags=skylake-avx512:mem=120gb -l walltime=12:00:00`. This will take a little longer to start but will mean running on newer hardware. - * Walltime should be 12:00:00 unless you need more. i.e. nothing shorter. * When requesting memory you the point at which you have less options is 124gb, 180gb, 248gb, 370gb, 750gb and 1000gb. i.e. requesting 126gb is not a great idea. @@ -82,4 +83,7 @@ qsub -l select=1:ncpus=2:mem=16gb,walltime=4:00:00 -J 3-4 $SCRIPTDIR/bin/pbs/... qsub -J 5-36 $SCRIPTDIR/bin/pbs/....pbs qstat -tu $(whoami) +# or +qstat -tu $USER + ``` From 7d3b8fd90f4547008b4724a63f3c01c36d270b3c Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 11:11:37 +1000 Subject: [PATCH 14/23] Wombat and Sloth added to SVG --- .../static/img/undraw_docusaurus_mountain.svg | 1537 +++++++++++++++-- .../static/img/undraw_docusaurus_tree.svg | 388 ++++- 2 files changed, 1726 insertions(+), 199 deletions(-) diff --git a/docusite/static/img/undraw_docusaurus_mountain.svg b/docusite/static/img/undraw_docusaurus_mountain.svg index af961c4..25bc18f 100644 --- a/docusite/static/img/undraw_docusaurus_mountain.svg +++ b/docusite/static/img/undraw_docusaurus_mountain.svg @@ -1,171 +1,1388 @@ - - Easy to Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/docusite/static/img/undraw_docusaurus_tree.svg b/docusite/static/img/undraw_docusaurus_tree.svg index d9161d3..7234e30 100644 --- a/docusite/static/img/undraw_docusaurus_tree.svg +++ b/docusite/static/img/undraw_docusaurus_tree.svg @@ -1,40 +1,350 @@ - - Focus on What Matters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 03463f9ba716b394c4c0d4fe6ed616f64ca854e4 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 11:11:53 +1000 Subject: [PATCH 15/23] add front matter and tags --- .../landcover/global/ESRI-2020-Land-Cover.md | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md b/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md index a3ad199..da28af9 100644 --- a/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md +++ b/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md @@ -1,22 +1,35 @@ +--- +tags: [IUCN-GET, R, python, earth engine, gdal] +--- + # Esri 2020 Land Cover ## About Esri 2020 Land Cover + Variable mapped: 2020 land use/land cover + Data Projection: Universal Transverse Mercator (UTM) + Extent: Global + Source imagery: Sentinel-2 + Cell Size: 10m (0.00008983152098239751 degrees) + Type: Thematic + Source: Esri Inc. + Publication date: July 2021 -Links: +## Links + * https://samapriya.github.io/awesome-gee-community-datasets/projects/esrilc2020/?s=09 * https://caitlin-kontgis.medium.com/mapping-the-world-in-unprecedented-detail-7c0513205b90 * https://www.arcgis.com/home/item.html?id=d6642f8a4f6d4685a24ae2dc0c73d4ac * https://www.arcgis.com/home/item.html?id=fc92d38533d440078f17678ebc20e8e2 -## Reference +## Citation > Karra, Kontgis, et al. “Global land use/land cover with Sentinel-2 and deep learning.” IGARSS 2021-2021 IEEE International Geoscience and Remote Sensing Symposium. IEEE, 2021. This dataset is based on the dataset produced for the Dynamic World Project by National Geographic Society in partnership with Google and the World Resources Institute. @@ -71,9 +84,6 @@ do done ## download different years for each tile - - - ``` Virtual Raster Tileset will not work due to different projections. Even with `-allow_projection_difference` option it will not produce useful resutls. So we will first reproject each tile to Eckert IV projection and then use VRT. From 953729600744f8c4c676546857ba3da18b16ef53 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 17:48:35 +1000 Subject: [PATCH 16/23] add frontmatter with title, description and tags --- .../docs/anthroposphere/global/Anthromes.md | 14 ++++++----- .../anthroposphere/global/Aquastat-v5.0.md | 24 ++++++++++++------- .../global/Earthstats-crops-pastures.md | 14 +++++++---- .../anthroposphere/global/GHSL-settlements.md | 12 +++++++--- .../global/GLAD-GLCLUC-2000-2020.md | 20 ++++++++++++---- .../anthroposphere/global/Irrigation-areas.md | 16 ++++++++++--- .../global/Land-Use-2000-consistent.md | 10 ++++++-- .../climate/global/CHELSA-climatologies.md | 22 ++++++++++------- .../landcover/global/ESRI-2020-Land-Cover.md | 2 +- 9 files changed, 94 insertions(+), 40 deletions(-) diff --git a/docusite/docs/anthroposphere/global/Anthromes.md b/docusite/docs/anthroposphere/global/Anthromes.md index 0b1b4c7..ae4a7d1 100644 --- a/docusite/docs/anthroposphere/global/Anthromes.md +++ b/docusite/docs/anthroposphere/global/Anthromes.md @@ -1,25 +1,27 @@ --- +title: "Anthromes" +description: "Anthromes maps and datasets" tags: [IUCN-GET,wget,gdal,grass GIS] --- -# Anthromes -Anthromes maps and datasets - -Data in 5 arc minute global geographic raster grids in .zip files with accompanying metadata. ## Citation > Ellis, E. C., K. Klein Goldewijk, S. Siebert, D. Lightman, and N. Ramankutty. 2010. Anthropogenic transformation of the biomes, 1700 to 2000. Global Ecology and Biogeography 19(5):589-606. [download] + > Klein Goldewijk, K. & van Drecht, G. (2006) HYDE 3: current and historical population and land cover. Integrated modelling of global environmental change. An overview of IMAGE 2.4 (ed. by A.F. Bouwman, T. Kram and K. Klein Goldewijk), pp. 93–111. Netherlands Environmental Assessment Agency (MNP), Bilthoven, The Netherlands. + > Monfreda, C., Ramankutty, N. & Foley, J.A. (2008) Farming the planet: 2. Geographic distribution of crop areas, yields, physi- ological types, and net primary production in the year 2000. Global Biogeochemical Cycles, 22, GB1022. ## Data description +Data in 5 arc minute global geographic raster grids in .zip files with accompanying metadata. + Description of source dataset from Ellis et al. (2010) "Global data for human population density and percentage cover by urban, crop and pasture lands at 5′ resolution were obtained using the updated version of the HYDE 3.1 data model (http://www.pbl.nl/hyde), based on Klein Goldewijk & van Drecht (2006). Global 5′ data for rice cover in 2000 were obtained from Monfreda et al. (2008)." -## Data access +## Links -http://ecotope.org/anthromes/v2/data/ +- http://ecotope.org/anthromes/v2/data/ ## Data download diff --git a/docusite/docs/anthroposphere/global/Aquastat-v5.0.md b/docusite/docs/anthroposphere/global/Aquastat-v5.0.md index b012534..0416585 100644 --- a/docusite/docs/anthroposphere/global/Aquastat-v5.0.md +++ b/docusite/docs/anthroposphere/global/Aquastat-v5.0.md @@ -1,15 +1,24 @@ -# Global Map of Irrigation Areas, v 5.0 +--- +tags: [IUCN-GET,wget] +--- -https://www.lap.uni-bonn.de/research/downloads/gmia/siebert_et_al_2013_gmia5 +# GMIA 5 -#### Citation +Global Map of Irrigation Areas, v 5.0 + +## Links + +- https://www.lap.uni-bonn.de/research/downloads/gmia/siebert_et_al_2013_gmia5 +- http://www.fao.org/aquastat/en/geospatial-information/global-maps-irrigated-areas + +## Citation > Siebert, S., Henrich, V., Frenken, K., Burke, J. (2013): **Update of the Global Map of Irrigation Areas to version 5**. Project report, 178 p. (4 MB) > Siebert, S., Döll, P., Hoogeveen, J., Faures, J.-M., Frenken, K., Feick, S. (2005): *Development and validation of the global map of irrigation areas*. **Hydrology and Earth System Sciences**, 9, 535-547. -#### Data download: +## Data download: http://www.fao.org/aquastat/en/geospatial-information/global-maps-irrigated-areas -For the GIS-users the map is distributed in two different formats: as zipped ASCII-grid that can be easily imported in most GIS-software that supports raster data or grids; and, to accommodate people who use GIS-software that doesn't support raster data or grids, as a zipped ESRI shape files. It should be noted, however, that the values in the ASCII-grids have a precision of 6 decimals while the values in the shape-file have a precision of 2 decimals. For model calculations it is therefore recommended to use the grid-version. As a service to those people who would need to know the absolute area equipped for irrigation, another ASCII-grid is available in which the area equipped for irrigation is expressed in hectares per cell. Non-GIS-users can download the map as PDF-file in two different resolutions. +> For the GIS-users the map is distributed in two different formats: as zipped ASCII-grid that can be easily imported in most GIS-software that supports raster data or grids; and, to accommodate people who use GIS-software that doesn't support raster data or grids, as a zipped ESRI shape files. It should be noted, however, that the values in the ASCII-grids have a precision of 6 decimals while the values in the shape-file have a precision of 2 decimals. For model calculations it is therefore recommended to use the grid-version. As a service to those people who would need to know the absolute area equipped for irrigation, another ASCII-grid is available in which the area equipped for irrigation is expressed in hectares per cell. Non-GIS-users can download the map as PDF-file in two different resolutions. ```sh @@ -20,7 +29,6 @@ cd $GISDATA/antroposphere/global/Aquastat-v5 wget --continue 'https://firebasestorage.googleapis.com/v0/b/fao-aquastat.appspot.com/o/GIS%2Fgmia_v5_aei_pct_asc.zip?alt=media&token=e448ce53-296f-4756-90c1-75c87f74e569' --output-document=gmia_v5_aei_pct_asc.zip -unzip -u gmia_v5_aei_pct_asc.zip - - +cd $WORKDIR +unzip -u $GISDATA/antroposphere/global/Aquastat-v5/gmia_v5_aei_pct_asc.zip ``` diff --git a/docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md b/docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md index b2e37d8..5fc0f43 100644 --- a/docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md +++ b/docusite/docs/anthroposphere/global/Earthstats-crops-pastures.md @@ -1,12 +1,18 @@ -# Cropland and Pasture Area in 2000 +--- +title: "Earthstat" +description: "Cropland and Pasture Area in 2000" +tags: [IUCN-GET,wget] +--- -### Citation +## Links +- http://www.earthstat.org/cropland-pasture-area-2000/ + +## Citation > Ramankutty, N., A.T. Evan, C. Monfreda, and J.A. Foley (2008), Farming the planet: 1. Geographic distribution of global agricultural lands in the year 2000. Global Biogeochemical Cycles 22, GB1003, doi:10.1029/2007GB002952. -### Data download and preparation +## Data download and preparation -http://www.earthstat.org/cropland-pasture-area-2000/ ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh diff --git a/docusite/docs/anthroposphere/global/GHSL-settlements.md b/docusite/docs/anthroposphere/global/GHSL-settlements.md index 97599e0..2c6635a 100644 --- a/docusite/docs/anthroposphere/global/GHSL-settlements.md +++ b/docusite/docs/anthroposphere/global/GHSL-settlements.md @@ -1,8 +1,14 @@ -# GHSL - Global Human Settlement Layer +--- +title: "GHSL" +description: "Global Human Settlement Layer" +tags: [IUCN-GET,wget] +--- -https://ghsl.jrc.ec.europa.eu/dataToolsOverview.php +Global Human Settlement Layer -Documentation: https://ghsl.jrc.ec.europa.eu/documents/GHSL_Data_Package_2019.pdf?t=1478q532234372 +## Links +- https://ghsl.jrc.ec.europa.eu/dataToolsOverview.php +- [Documentation](https://ghsl.jrc.ec.europa.eu/documents/GHSL_Data_Package_2019.pdf?t=1478q532234372) ## Citation Dataset: diff --git a/docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md b/docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md index c6d0819..012cd96 100644 --- a/docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md +++ b/docusite/docs/anthroposphere/global/GLAD-GLCLUC-2000-2020.md @@ -1,18 +1,28 @@ -# Global Land Cover and Land Use Change, 2000-2020 -Datasets: https://glad.umd.edu/dataset/GLCLUC2020 -Tool: https://glad.umd.edu/ard/home +--- +title: "GLAD-GLCLUC" +description: "Global Land Cover and Land Use Change, 2000-2020" +tags: [Deforestation,wget,curl] +--- + +Global Land Cover and Land Use Change, 2000-2020 + +## Links + +- Datasets: https://glad.umd.edu/dataset/GLCLUC2020 +- Tool: https://glad.umd.edu/ard/home ## Citation > Potapov P., Hansen M.C., Pickens A., Hernandez-Serna A., Tyukavina A., Turubanova S., Zalles V., Li X., Khan A., Stolle F., Harris N., Song X.-P., Baggett A., Kommareddy I., Kommareddy A. (2022) The global 2000-2020 land cover and land use change dataset derived from the Landsat archive: first results. Frontiers in Remote Sensing [https://doi.org/10.3389/frsen.2022.856903] > P. Potapov, X. Li, A. Hernandez-Serna, A. Tyukavina, M.C. Hansen, A. Kommareddy, A. Pickens, S. Turubanova, H. Tang, C.E. Silva, J. Armston, R. Dubayah, J. B. Blair, M. Hofton (2020) Mapping and monitoring global forest canopy height through integration of GEDI and Landsat data. Remote Sensing of Environment, 112165. https://doi.org/10.1016/j.rse.2020.112165  -P. Potapov, S. Turubanova, M.C. Hansen, A. Tyukavina, V. Zalles, A. Khan, X.-P. Song, A. Pickens, Q. Shen, J. Cortez. (2021) Global maps of cropland extent and change show accelerated cropland expansion in the twenty-first century. Nature Food. https://doi.org/10.1038/s43016-021-00429-z  +> P. Potapov, S. Turubanova, M.C. Hansen, A. Tyukavina, V. Zalles, A. Khan, X.-P. Song, A. Pickens, Q. Shen, J. Cortez. (2021) Global maps of cropland extent and change show accelerated cropland expansion in the twenty-first century. Nature Food. https://doi.org/10.1038/s43016-021-00429-z  +## Data access and preparation + ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh - mkdir -p $GISDATA/antroposphere/global/GLAD-GLCLUC cd $GISDATA/antroposphere/global/GLAD-GLCLUC diff --git a/docusite/docs/anthroposphere/global/Irrigation-areas.md b/docusite/docs/anthroposphere/global/Irrigation-areas.md index 298d7cb..6051946 100644 --- a/docusite/docs/anthroposphere/global/Irrigation-areas.md +++ b/docusite/docs/anthroposphere/global/Irrigation-areas.md @@ -1,13 +1,23 @@ -# Global Irrigation Areas +--- +title: "Irrigation-Areas" +description: "Global Irrigation Areas" +tags: [IUCN-GET,wget,zenodo] +--- +A new dataset of global irrigation areas from 2001 to 2015 + +## Citation + +> Nagaraj, Deepak, Proust, Eleanor, Todeschini, Alberto, Rulli, Maria Cristina, & D'Odorico, Paolo. (2021). A new dataset of global irrigation areas from 2001 to 2015. Zenodo. https://doi.org/10.5281/zenodo.4659476 + +## Links https://zenodo.org/record/4659476 +## Data access ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh - mkdir -p $GISDATA/antroposphere/global/Irrigation-Areas cd $GISDATA/antroposphere/global/Irrigation-Areas wget --continue "https://zenodo.org/record/4659476/files/v3b_combined_2015.tif?download=1" --output-document v3b_combined_2015.tif -unzip -u CroplandPastureArea2000_Geotiff.zip ``` diff --git a/docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md b/docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md index 93a5e23..060aa5f 100644 --- a/docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md +++ b/docusite/docs/anthroposphere/global/Land-Use-2000-consistent.md @@ -1,14 +1,20 @@ -# Global 5 min resolution land-use for the year 2000 consistent with national census data +--- +title: "Consistent-Land-Use-2000" +description: "Land-use 2000 consistent with national census data" +tags: [IUCN-GET,wget] +--- + +Global 5 min resolution land-use for the year 2000 consistent with national census data > Karl-Heinz Erb , Veronika Gaube , Fridolin Krausmann , Christoph Plutzar , Alberte Bondeau & Helmut Haberl (2007) A comprehensive global 5 min resolution land-use data set for the year 2000 consistent with national census data, Journal of Land Use Science, 2:3, 191-224, DOI: 10.1080/17474230701622981 ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh - mkdir -p $GISDATA/antroposphere/global/Consistent-Land-Use-2000 cd $GISDATA/antroposphere/global/Consistent-Land-Use-2000 wget --continue https://boku.ac.at/fileadmin/data/H03000/H73000/H73700/Data_Download/Data/Land_Use_Download_as_package.zip + unzip -u Land_Use_Download_as_package.zip unzip -u 2Download\ as\ package/1all\ data\ as\ ascii-files/ascii_landuse.zip diff --git a/docusite/docs/climate/global/CHELSA-climatologies.md b/docusite/docs/climate/global/CHELSA-climatologies.md index 8862c7f..a8f82b7 100644 --- a/docusite/docs/climate/global/CHELSA-climatologies.md +++ b/docusite/docs/climate/global/CHELSA-climatologies.md @@ -1,22 +1,28 @@ -# CHELSA Version 1.2 +--- +tags: [IUCN-GET, IUCN-RLE, wget] +--- -Links to: -/ [Webpage](http://chelsa-climate.org/) +# CHELSA +Climatologies at high resolution for the earth’s land surface areas -## Citation -> Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, H.P. & Kessler, M. (2017) Climatologies at high resolution for the earth’s land surface areas. Scientific Data 4, 170122. +## Versions -## Technical specification +Version 1.2 -Technical specification at https://chelsa-climate.org/wp-admin/download-page/CHELSA_tech_specification.pdf +## Links + +- [Webpage](http://chelsa-climate.org/) +- [Technical specification](https://chelsa-climate.org/wp-admin/download-page/CHELSA_tech_specification.pdf) + +## Citation +> Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, H.P. & Kessler, M. (2017) Climatologies at high resolution for the earth’s land surface areas. Scientific Data 4, 170122. ## Data access Originally accessible to download from Dryad: > Karger, D.N., Conrad, O., Böhner, J., Kawohl, T., Kreft, H., Soria-Auza, R.W., Zimmermann, N.E., Linder, H.P., Kessler, M. (2017) Data from: Climatologies at high resolution for the earth’s land surface areas. Dryad Digital Repository. https://doi.org/10.5061/dryad.kd1d4 - On February 2021 the recommended method is to use the [download server](https://envicloud.wsl.ch/#/?prefix=chelsa%2Fchelsa_V1). Once in the server, is easy to select the files needed, and download a list of files paths for download with several tools. Here I use wget diff --git a/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md b/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md index da28af9..f15f3f9 100644 --- a/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md +++ b/docusite/docs/landcover/global/ESRI-2020-Land-Cover.md @@ -1,5 +1,5 @@ --- -tags: [IUCN-GET, R, python, earth engine, gdal] +tags: [IUCN-GET, IUCN-RLE, R, python, earth engine, gdal] --- # Esri 2020 Land Cover From 6e6cc61866f8b59f5dab17791a4b6442e8f34338 Mon Sep 17 00:00:00 2001 From: jrfep Date: Fri, 14 Apr 2023 17:48:58 +1000 Subject: [PATCH 17/23] add map icons --- docusite/src/pages/how-to-site.md | 2 + .../static/img/undraw_docusaurus_react.svg | 82 ++++++++++++++++--- 2 files changed, 71 insertions(+), 13 deletions(-) diff --git a/docusite/src/pages/how-to-site.md b/docusite/src/pages/how-to-site.md index a8b6599..4d4893c 100644 --- a/docusite/src/pages/how-to-site.md +++ b/docusite/src/pages/how-to-site.md @@ -62,6 +62,8 @@ I am using the **classic template** because I just don't have time to explore an - undraw svgs shipped with docusaurus - https://www.svgrepo.com/svg/26855/sloth CC0 license - https://www.svgrepo.com/svg/2155/wombat CC0 license +- https://www.svgrepo.com/svg/293158/maps-and-flags-global CCO license +- https://www.svgrepo.com/svg/293157/maps-and-flags-maps-and-flags CCO license ### Where to locate stuff diff --git a/docusite/static/img/undraw_docusaurus_react.svg b/docusite/static/img/undraw_docusaurus_react.svg index 3d4c4e6..d6967fe 100644 --- a/docusite/static/img/undraw_docusaurus_react.svg +++ b/docusite/static/img/undraw_docusaurus_react.svg @@ -23,14 +23,14 @@ inkscape:deskcolor="#d1d1d1" showgrid="false" inkscape:zoom="0.42588439" - inkscape:cx="370.9927" + inkscape:cx="420.30186" inkscape:cy="280.59258" inkscape:window-width="1385" inkscape:window-height="727" inkscape:window-x="1920" inkscape:window-y="25" inkscape:window-maximized="0" - inkscape:current-layer="layer2" />Powered by React + style="fill:#7d5c0a;fill-opacity:1;stroke:none;stroke-opacity:1"> + style="fill:#7d5c0a;fill-opacity:1;stroke:none;stroke-opacity:1"> + style="fill:#7d5c0a;fill-opacity:1;stroke:none;stroke-opacity:1" /> + style="fill:#7d5c0a;fill-opacity:1;stroke:none;stroke-opacity:1"> + style="fill:#7d5c0a;fill-opacity:1;stroke:none;stroke-opacity:1"> + style="fill:#7d5c0a;fill-opacity:1;stroke:none;stroke-opacity:1" /> + + + + + + + + + + + + + + + + From 5a430181d58798a29b670dcbf54d49c8e865b1d2 Mon Sep 17 00:00:00 2001 From: jrfep Date: Sun, 16 Apr 2023 16:04:30 +1000 Subject: [PATCH 18/23] prepare initial blog posts --- .../2023-03-06-deforestation/Data-sources.svg | 471 ++++++++++++++++++ .../docusaurus-plushie-banner.jpeg | Bin 96122 -> 0 bytes .../blog/2023-03-06-deforestation/index.md | 5 +- .../blog/2023-04-10-Forest-Macrogroups.md | 5 +- docusite/blog/2023-04-13-first-blog-post.md | 30 ++ docusite/blog/2023-04-13-long-blog-post.md | 26 - 6 files changed, 508 insertions(+), 29 deletions(-) create mode 100644 docusite/blog/2023-03-06-deforestation/Data-sources.svg delete mode 100644 docusite/blog/2023-03-06-deforestation/docusaurus-plushie-banner.jpeg create mode 100644 docusite/blog/2023-04-13-first-blog-post.md delete mode 100644 docusite/blog/2023-04-13-long-blog-post.md diff --git a/docusite/blog/2023-03-06-deforestation/Data-sources.svg b/docusite/blog/2023-03-06-deforestation/Data-sources.svg new file mode 100644 index 0000000..4318967 --- /dev/null +++ b/docusite/blog/2023-03-06-deforestation/Data-sources.svg @@ -0,0 +1,471 @@ + + + + + + +G + +Data sources and layers +Overview + +cluster_0 + +WDPAID #1 + + + +a0 + +a0 + + + +a1 + +a1 + + + +a0->a1 + + + + + +a2 + +a2 + + + +a1->a2 + + + + + +a3 + +a3 + + + +a2->a3 + + + + + +a4 + +a4 + + + +a3->a4 + + + + + +a5 + +a5 + + + +a4->a5 + + + + + +GFC + +GFC + + + +TCVR + +treecover 2000 + + + +GFC->TCVR + + + + + +TCLS + +treecover loss +(2001-2021) + + + +GFC->TCLS + + + + + +TCGN + +treecover gain + + + +GFC->TCGN + + + + + +TCVR->a2 + + + + + +TCLS->a2 + + + + + +FML + +FML + + + +FMLrst + +Forest management + + + +FML->FMLrst + + + + + +RAISG + +RAISG + + + +MINILE + +Mining activity + + + +RAISG->MINILE + + + + + +MINLEG + +Mining zones + + + +RAISG->MINLEG + + + + + +MINILE->a4 + + + + + +MINLEG->a4 + + + + + +TERRA + +TerraClimate + + + +SUMMARY + +SUMMARY + + + +TERRA->SUMMARY + + + + + +PERYEAR + +PERYEAR + + + +TERRA->PERYEAR + + + + + +PET + +PET + + + +PET->a1 + + + + + +PPT + +PPT + + + +PPT->a1 + + + + + +PPTA + +PPTA + + + +PPT->PPTA + + + + + +WDPA + +WDPA + + + +PN + +NP (cat II) + + + +WDPA->PN + + + + + +ABRAE + +ABRAE (cat III-V) + + + +WDPA->ABRAE + + + + + +PN->a0 + + + + + +MODIS + +MODIS + + + +FIRES + +Active fires + + + +MODIS->FIRES + + + + + +BURNT + +Burnt area + + + +MODIS->BURNT + + + + + +FIRES->a5 + + + + + +BURNT->a5 + + + + + +SUMMARY->PET + + + + + +SUMMARY->PPT + + + + + +PETM + +PETM + + + +PERYEAR->PETM + + + + + +PPTM + +PPTM + + + +PERYEAR->PPTM + + + + + +PPTM->PPTA + + + + + +GLCLUC + +GLCLUC + + + +CROPAREA + +CROPAREA + + + +GLCLUC->CROPAREA + + + + + +BUILT + +BUILT + + + +GLCLUC->BUILT + + + + + +BUILT->a3 + + + + + +SIGMAT + +SIGMAT + + + +CROPS + +CROPS + + + +SIGMAT->CROPS + + + + + +CATTLE + +CATTLE + + + +SIGMAT->CATTLE + + + + + +PPTA->a1 + + + + + +PETA + +PETA + + + +PETA->a1 + + + + + diff --git a/docusite/blog/2023-03-06-deforestation/docusaurus-plushie-banner.jpeg b/docusite/blog/2023-03-06-deforestation/docusaurus-plushie-banner.jpeg deleted file mode 100644 index 11bda0928456b12f8e53d0ba5709212a4058d449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96122 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 diff --git a/docusite/blog/2023-03-06-deforestation/index.md b/docusite/blog/2023-03-06-deforestation/index.md index 41e5851..51f18ae 100644 --- a/docusite/blog/2023-03-06-deforestation/index.md +++ b/docusite/blog/2023-03-06-deforestation/index.md @@ -9,5 +9,8 @@ What kind of data do we need for analysing deforestation trends in a tropical co We started working on the problem of deforestation in Venezuela many years ago, and we have the challenge of combining global and regional data to make a complete picture of the problem. -![Docusaurus Plushie](./docusaurus-plushie-banner.jpeg) + +Some of the datasets included in this site have been tagged with [Venezuela](/docs/tags/venezuela) and [deforestation](/docs/tags/deforestation) + +![Diagram of data sources for analysis](./Data-sources.svg) diff --git a/docusite/blog/2023-04-10-Forest-Macrogroups.md b/docusite/blog/2023-04-10-Forest-Macrogroups.md index c662629..393c435 100644 --- a/docusite/blog/2023-04-10-Forest-Macrogroups.md +++ b/docusite/blog/2023-04-10-Forest-Macrogroups.md @@ -2,7 +2,7 @@ slug: forest-macrogroups-americas title: Distribution maps for the Forest macrogroups authors: jrfep -tags: [Distribution maps, IUCN RLE, OSF cloud storage, QGIS, GPKG, IVC macrogroups] +tags: [Distribution maps, IUCN RLE, OSF, OSF cloud storage, QGIS, GPKG, IVC macrogroups] --- I have been asked a couple of times to share the maps of the forest macrogroups that we assessed with the IUCN Red List of Ecosystems back in 2019. @@ -38,4 +38,5 @@ Many people have requested vector data, so I exported this using the Geopackage [^2]: Ferrer-Paris, J. R. (2023, April 5). Lista Roja de Ecosistemas de UICN de los bosques de las Américas. https://doi.org/10.17605/OSF.IO/M6AFP -[^3]: Faber-Langendoen, D., Baldwin, K., Peet, R. K., Meidinger, D., Muldavin, E., Keeler-Wolf, T., & Josse, C. (2018). The EcoVeg approach in the Americas: U.S., Canadian and International Vegetation Classifications. In Phytocoenologia (Vol. 48, Issue 2, pp. 215–237). Schweizerbart. https://doi.org/10.1127/phyto/2017/0165 \ No newline at end of file +[^3]: Faber-Langendoen, D., Baldwin, K., Peet, R. K., Meidinger, D., Muldavin, E., Keeler-Wolf, T., & Josse, C. (2018). The EcoVeg approach in the Americas: U.S., Canadian and International Vegetation Classifications. In Phytocoenologia (Vol. 48, Issue 2, pp. 215–237). Schweizerbart. https://doi.org/10.1127/phyto/2017/0165 + diff --git a/docusite/blog/2023-04-13-first-blog-post.md b/docusite/blog/2023-04-13-first-blog-post.md new file mode 100644 index 0000000..693b64a --- /dev/null +++ b/docusite/blog/2023-04-13-first-blog-post.md @@ -0,0 +1,30 @@ +--- +slug: very-first-blog-post +title: Start of a journey +authors: jrfep +tags: [hello, markdown, github] +--- + +I have been documenting these datasets for the past three years, adding details and details, and the list keeps growing... + +I always had the feeling these docs needed to be shared in a more reader-friendly site. It seems the time has arrived... + + + +Long time ago I started to use [markdown](https://www.markdownguide.org/) for the documentation of each dataset used for different analysis and adopted a consistent folder structure to help me navigate these datasets. Also I started using [git](https://carpentries-incubator.github.io/git-novice-branch-pr/) and [GitHub](https://github.com/jrfep) to keep track of the updates and changes. + +So I think I already had most of the ingredients that I needed. I was just lacking a cool system to bring this all together in an organised way. + +Over the years I have experimented with different approaches to build websites: php, content management systems, [shiny apps](https://ecosphere.shinyapps.io/tutorial-1-create-spatial-object/), [flask](https://github.com/jrfep/fireveg-webapp), hugo, jekyll, [quarto](https://github.com/red-list-ecosystem/T6.1-SA-01-VE-01-Cordillera-Merida), [rmarkdown](https://jrfep.github.io/), rblogdown, etc. + +So many options! + +So, which should I choose for this site? Since all these documents were already in markdown and the code was not supposed to be re-run constantly I just need a very straightforward, no non-sense system that transforms this collection into a clear structure with easy navigation. Blog post would be nice, that way I could add some comments to the growing collection of documents, but they should not distract that much from the main feature. + +How did I get the idea of using docusaurus? + +Maybe from here: https://dev.to/mxglt/some-great-tools-to-create-a-static-site-from-your-markdown-documentation-mke or here: https://dev.to/mxglt/docusaurus-or-the-simpliest-way-to-do-a-technical-documentation-4om4 + +So, is this the way to get this site started and share all this knowledge with the world? + +Maybe it is, I will give it a try. \ No newline at end of file diff --git a/docusite/blog/2023-04-13-long-blog-post.md b/docusite/blog/2023-04-13-long-blog-post.md deleted file mode 100644 index ac310e9..0000000 --- a/docusite/blog/2023-04-13-long-blog-post.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -slug: very-first-blog-post -title: Start of a journey -authors: jrfep -tags: [hello, docusaurus] ---- - -I have been documenting these datasets for the past three years, adding details and details, and the list keeps growing... - -I always had the feeling these docs needed to be shared in a more reader-friendly site. It seems the time has arrived... - - - -Long time ago I started to use markdown for the documentation of each dataset and adopted a consistent folder structure to help me navigate the datasets. Also I started using git and GitHub to keep track of the updates and changes. - -So I think I already had most of the ingredients that I needed. I was just lacking a cool system to bring this all together in an organised way. - -Over the years I have experimented with different approaches to build websites: php, content management systems, shiny apps, flask, hugo, jekyll, quarto, rblogdown, etc. So many options. - -Since all these documents were already in markdown and the code was not supposed to be re-run constantly I just need a very straightforward, no non-sense system that transforms this collection into a clear structure with easy navigation. Blog post would be nice to add some comments to the growing collection of documents, but they should not distract that much from the main feature. - -How did I get the idea of using docusaurus? - -Maybe from here: https://dev.to/mxglt/some-great-tools-to-create-a-static-site-from-your-markdown-documentation-mke or here: https://dev.to/mxglt/docusaurus-or-the-simpliest-way-to-do-a-technical-documentation-4om4 - -So is this the way to get this share this site? \ No newline at end of file From 3c89a9fcd3819c75ffc0520852679022bbf79490 Mon Sep 17 00:00:00 2001 From: jrfep Date: Sun, 16 Apr 2023 16:05:01 +1000 Subject: [PATCH 19/23] reorganise folders and files --- doc/to-do/AVHRR_NDVI.md | 131 --------------- doc/to-do/AVHRR_VCF.sh | 33 ---- doc/to-do/Global-Forest-Change.md | 121 -------------- doc/to-do/Modis_NDVI.R | 81 ---------- doc/to-do/UN-map.md | 3 - doc/to-do/VIPPHEN-NDVI-v004.md | 65 -------- doc/to-do/World-Heritage-Sites.md | 2 - .../EU-plus-habitats.md | 53 ------ .../Ecological-Land-Units.md | 152 ------------------ .../ecological-classifications/GLOBES-1km.md | 15 -- .../IUCN-Hanitat-TS-2020.md | 36 ----- .../Ecosystems-indicative-distribution.md | 64 -------- 12 files changed, 756 deletions(-) delete mode 100644 doc/to-do/AVHRR_NDVI.md delete mode 100644 doc/to-do/AVHRR_VCF.sh delete mode 100644 doc/to-do/Global-Forest-Change.md delete mode 100644 doc/to-do/Modis_NDVI.R delete mode 100644 doc/to-do/UN-map.md delete mode 100644 doc/to-do/VIPPHEN-NDVI-v004.md delete mode 100644 doc/to-do/World-Heritage-Sites.md delete mode 100644 doc/to-do/ecological-classifications/EU-plus-habitats.md delete mode 100644 doc/to-do/ecological-classifications/Ecological-Land-Units.md delete mode 100644 doc/to-do/ecological-classifications/GLOBES-1km.md delete mode 100644 doc/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md delete mode 100644 doc/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md diff --git a/doc/to-do/AVHRR_NDVI.md b/doc/to-do/AVHRR_NDVI.md deleted file mode 100644 index 4c803da..0000000 --- a/doc/to-do/AVHRR_NDVI.md +++ /dev/null @@ -1,131 +0,0 @@ -# GIMMS AVHRR Global NDVI 1/12-degree Geographic Lat/Lon - -Some resources: -http://phenology.cr.usgs.gov/ndvi_avhrr.php -http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/ -https://nex.nasa.gov/nex/projects/1349/ -http://ecocast.arc.nasa.gov/data/pub/gimms/ - -## Download the data - -```sh -mkdir -p $GISDATA/sensores/AVHRR/GIMMS -cd $GISDATA/sensores/AVHRR/GIMMS - -wget http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/00FILE-LIST.txt -wget -i 00FILE-LIST.txt --continue -``` - -## Process data in R - -Solution in http://gis.stackexchange.com/questions/104500/how-to-create-several-header-files-to-open-avhrr-ndvi3g-gimms-files - -```r -##R --vanilla -library(caTools) -require(raster) -e <- c(-74,-58,0,13) -work.dir <- Sys.getenv("WORKDIR") -gis.data <- Sys.getenv("GISDATA") - -flst <- dir("~/sensores/AVHRR/GIMMS/","geo") -system("mkdir -p ~/mapas/Venezuela/NDVI3g/") -system("mkdir -p ~/mapas/Venezuela/NDVIfW/") - -cat(file="~/sensores/AVHRR/GIMMS/header","ENVI -description = { R-language data } -samples = 2160 -lines = 4320 -bands = 1 -data type = 2 -header offset = 0 -interleave = bsq -byte order = 1") - -for (ff in flst) { - yr <- as.numeric(substr(ff,4,5)) - nn <- sprintf("A%s%02d%s", - ifelse(yr<15,yr+2000,yr+1900), - match(substr(ff,6,8),c("jan", "feb", "mar", "apr", "may", - "jun", "jul", "aug", "sep", "oct", - "nov", "dec")), - ifelse(substr(ff,9,11)=="15a","01","15")) - fl1 <- sprintf("~/mapas/Venezuela/NDVI3g/AVHRRVI3g.%s.Venezuela_NDVI.tif",nn) - if (!file.exists(fl1)) { - - prb <- try(read.ENVI(sprintf("~/sensores/AVHRR/GIMMS/%s",ff), - "~/sensores/AVHRR/GIMMS/header")) - if (all(class(prb)!="try-error")) { - eprb <- raster(t(prb),xmn=-180, xmx=180, ymn=-90, ymx=90, - crs="+proj=longlat +datum=WGS84") - ndvi3g <- crop(eprb,e) - flagW = ndvi3g-floor(ndvi3g/10)*10 + 1; - ndvi = floor(ndvi3g/10)/1000 - values(ndvi)[values(ndvi)<0] <- NA - - writeRaster(ndvi,filename=fl1) - writeRaster(flagW,filename=sprintf("~/mapas/Venezuela/NDVIfW/AVHRRVI3g.%s.Venezuela_flagW.tif",nn)) - } - } -} -``` - -```r -##R --vanilla -library(caTools) -require(raster) -e <- c(-74,-58,0,13) -work.dir <- Sys.getenv("WORKDIR") -gis.data <- Sys.getenv("GISOUT") - -ndvis <- stack(dir(sprintf("%s/mapas/Venezuela/NDVI3g/",gis.data),full.names=T)) - -tt <- as.numeric(substr(names(ndvis),12,15)) + (cumsum(c(0,31,28,31,30,31,30,31,31,30,31,30,31))[as.numeric(substr(names(ndvis),16,17))] + as.numeric(substr(names(ndvis),18,19)))/365 - -qry <- t(extract(ndvis,data.frame(-68.95206,10.79257))) - -##ndvi80 <- stack(dir("~/mapas/Venezuela/NDVI3g/","198",full.names=T)) -##plot(ndvi80) -##qry <- t(extract(ndvi80,data.frame(-68.95206,10.79257))) - -plot(tt,qry,type="l", - xlab="Año",ylab="Indice de vegetación de diferencias normalizadas") - -qry <- t(extract(ndvis,data.frame(-60.81398,5.851432))) - -tt <- ts(qry,start=c(1981,13),frequency=24) -plot(tt,ylim=c(0,1)) -dlt <- decompose(tt) - -plot(tt,ylim=c(0,1),col="grey47",lty=3) -lines(dlt$trend+dlt$seasonal,lwd=1,col=4) -lines(dlt$trend,lwd=2,col=2) - - -qr2 <- t(extract(ndvis,data.frame(-60.91389,5.28917))) - -t2 <- ts(qr2,start=c(1981,13),frequency=24) -dl2 <- decompose(t2) - -plot(t2,ylim=c(0,1),col="grey47",lty=3) -lines(dl2$trend+dl2$seasonal,lwd=1,col=4) -lines(dl2$trend,lwd=2,col=2) - -##cd ~/dev/ -##svn checkout svn://r-forge.r-project.org/svnroot/greenbrown/ -##cd ~/dev/greenbrown/pkg/ -##sudo R CMD INSTALL --html greenbrown --resave-data - -require(greenbrown) -trd <- TrendSTM(t2,h=48/length(t2)) -plot(trd) -trd <- TrendSTM(tt) -plot(trd) - -STMmap <- TrendRaster(ndvis, start=c(1981, 13), freq=24, method="STM", breaks=0) -plot(STMmap,2,col=brgr.colors(9)) -STMmap.cl <- TrendClassification(STMmap, min.length=(8*12)) -plot(STMmap.cl, col=brgr.colors(3), main="Method STM") -plot(STMmap<0.05,3) -plot(STMmap.cl*(raster(STMmap,3)<0.05), col=brgr.colors(3), main="Method STM") -``` diff --git a/doc/to-do/AVHRR_VCF.sh b/doc/to-do/AVHRR_VCF.sh deleted file mode 100644 index 011b93a..0000000 --- a/doc/to-do/AVHRR_VCF.sh +++ /dev/null @@ -1,33 +0,0 @@ -##http://glcf.umd.edu/data/treecover/data.shtml -##Full Example Citation DeFries, R., M. Hansen, J.R.G. Townshend, A.C. Janetos, and T.R. Loveland (2000), 1 Kilometer Tree Cover Continuous Fields, 1.0, Department of Geography, University of Maryland, College Park, Maryland, 1992-1993. -##Associated Peer-Reviewed Publication:DeFries, R., M. Hansen, J.R.G. Townshend, A.C. Janetos, and T.R. Loveland (2000) A new global 1km data set of percent tree cover derived from remote sensing. Global Change Biology. 6: 247-254. - -wget "ftp://ftp.glcf.umd.edu/glcf/Continuous_Fields_Tree_Cover/South_America/sa-latlong-treecover/sa-latlong-treecover.grd.gz" - -##para Carla -gdalwarp -te -109 0 -60 32.5 -s_srs "+proj=longlat +a=6378137 +rf=298.257223563 +no_defs+towgs84=0.000,0.000,0.000 " -ot Int16 -srcnodata "0" -dstnodata "-9999" -of EHdr na-latlong-treecover.grd sa-latlong-treecover.grd treecoverGLCF_Caribe.bil -echo 'NODATA -9999' >> treecoverGLCF_Caribe.hdr - -## 0 es NA, 254 es 0 (sin vegetacion) y 255 es menor a 10% -gdalwarp -te -74 0 -57 12.5 -s_srs "+proj=longlat +a=6378137 +rf=298.257223563 +no_defs+towgs84=0.000,0.000,0.000 " -ot Int16 -srcnodata "0" -dstnodata "-9999" -of EHdr sa-latlong-treecover.grd treecoverGLCF_vzla.bil -echo 'NODATA -9999' >> treecoverGLCF_vzla.hdr - -##R --vanilla - -require(raster) -##r0=raster("treecoverGLCF_vzla.bil") -r0=raster("treecoverGLCF_Caribe.bil") -plot(r0) -values(r0)[values(r0)==254] <- 0 -values(r0)[values(r0)==255] <- 5 - -writeRaster(r0, filename="arboreo_Caribe.bil", - format='BIL', overwrite=TRUE,NAflag=-9999) - -outdir <- "paraMaxEnt" -ff <- "arboreo_Caribe.bil" -system(sprintf("mkdir %s",outdir)) - system(sprintf("gdalwarp -s_srs \"+proj=longlat +a=6378137 +rf=298.257223563 +no_defs+towgs84=0.000,0.000,0.000 \" -ot Int16 -srcnodata \"-9999\" -dstnodata \"-9999\" -of EHdr %s %s/%s",ff,outdir,ff)) - system(sprintf("echo 'NODATA -9999' >> %s/%s", outdir, sub(".bil",".hdr",ff))) - -r1=raster(sprintf("%s/%s",outdir,ff)) diff --git a/doc/to-do/Global-Forest-Change.md b/doc/to-do/Global-Forest-Change.md deleted file mode 100644 index 029fe60..0000000 --- a/doc/to-do/Global-Forest-Change.md +++ /dev/null @@ -1,121 +0,0 @@ -# Global Forest Change - -## Reference -> Hansen, M. C., P. V. Potapov, R. Moore, M. Hancher, S. A. Turubanova, A. Tyukavina, D. Thau, S. V. Stehman, S. J. Goetz, T. R. Loveland, A. Kommareddy, A. Egorov, L. Chini, C. O. Justice, and J. R. G. Townshend. 2013. *High-Resolution Global Maps of 21st-Century Forest Cover Change.* **Science** 342 (15 November): 850–53. [Data available on-line](http://earthenginepartners.appspot.com/science-2013-global-forest). - - -## Available data - -http://www.earthenginepartners.appspot.com/science-2013-global-forest/download.html - -```sh -export GISDATA=/opt/gisdb/extra-gisdata/ -export SRC="https://storage.googleapis.com/earthenginepartners-hansen" -``` - -## Data download: - -For all versions from v1.0 (2013) to v1.7 we can use a simple bash script: - -```sh - -for VRS in GFC-2019-v1.7 ## GFC-2018-v1.6 GFC-2017-v1.5 GFC-2016-v1.4 GFC-2015-v1.3 GFC2015 GFC2014 GFC2013 -do - mkdir -p $GISDATA/sensores/Landsat/$VRS - cd $GISDATA/sensores/Landsat/$VRS - for VAR in gain lossyear treecover2000 - do - ##Venezuela - ## curl -O -C - $SRC/$VRS/Hansen_${VRS}_${VAR}_[1-2]0N_0[6-8]0W.tif - ## Americas - curl -O -C - $SRC/$VRS/Hansen_${VRS}_${VAR}_[0-5]0[NS]_0[4-9]0W.tif - ##NorteAmerica - curl -O -C - $SRC/$VRS/Hansen_${VRS}_${VAR}_[0-6]0[N]_[06-16]0W.tif - done -done -``` - -Or download whole set with wget: - -```sh -export VRS=GFC-2019-v1.7 -mkdir -p $GISDATA/sensores/Landsat/$VRS -cd $GISDATA/sensores/Landsat/$VRS -for VAR in gain lossyear treecover2000 -do - wget $SRC/$VRS/$VAR.txt - wget -b --continue -i $VAR.txt -done - -``` - -Builds VRT (Virtual Dataset) as a mosaic of the list of input files -```sh -export VRS=GFC-2019-v1.7 -export VAR=treecover2000 - -cd $GISDATA/sensores/Landsat/ -for VRS in GFC-2019-v1.7 -do - for VAR in gain lossyear treecover2000 - do - gdalbuildvrt index_${VRS}_${VAR}.vrt $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*.tif - done -done -``` - -## Subsets - -Example for Gran Sabana in Venezuela (bbox/: -63.1 4.6 -60.5 6.6) within `10N_070W` tile, and for Suriname, last version of data: - -```sh -export VRS=GFC-2019-v1.7 -cd $WORKDIR -mkdir -p $WORKDIR/$VRS -for VAR in gain lossyear treecover2000 # datamask first last -do - ## use -co "COMPRESS=LZW" for highest compression lossless ration - gdalwarp -te -63.1 4.6 -60.5 6.6 -co "COMPRESS=LZW" $GISDATA/sensores/Landsat/index_${VRS}_${VAR}.vrt $WORKDIR/$VRS/${VRS}.GS.${VAR}.tif - gdalwarp -te -59 1 -53 7 -co "COMPRESS=LZW" $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_10N_060W.tif $WORKDIR/$VRS/${VRS}.Suriname.${VAR}.tif -done - -``` - -For large areas spanning several tiles we can merge the files, keeping the original resolution. Examples for Venezuela, North and Central America (NAC) and South America (SAM): - -```sh -export VRS=GFC-2019-v1.7 -export VAR=treecover2000 - -cd $WORKDIR -mkdir -p $WORKDIR/$VRS - -cd $GISDATA/sensores/Landsat/ -gdalbuildvrt index_$(VRS)_${VAR}.vrt $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*.tif -## RROR 3: Free disk space available is 570111430656 bytes, whereas 806400000000 are at least necessary. You can disable this check by defining the CHECK_DISK_FREE_SPACE configuration option to FALSE. -## Creation failed, terminating gdal_merge. -# nohup gdal_merge.py -co "BIGTIFF=YES" -o $WORKDIR/$VRS/${VRS}.world.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*.tif & - - -gdal_merge.py -ul_lr -74 13 -59 0 -co "COMPRESS=LZW"-o ${VRS}.Venezuela.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*N*W.tif -gdal_merge.py -ul_lr -62.70 -19.25 -54.20 -27.65 -co "COMPRESS=LZW" -o ${VRS}.Paraguay.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*S*W.tif - -gdal_merge.py -ul_lr -138 60 -40 3 -co "COMPRESS=LZW" -o ${VRS}.NAC.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*N*W.tif - -gdal_merge.py -ul_lr -90 15 -25 -60 -co "COMPRESS=LZW" -o ${VRS}.SAM.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*W.tif -``` - -Or we can change the resolution -```sh -gdalwarp -te -90 -60 -25 15 -tr 0.001475 0.001475 -srcnodata "0" -dstnodata "0" -tap -r average $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*W.tif ${VRS}.SAM.${VAR}_500m.tif - -gdalwarp -te -138 3 -40 60 -tr 0.001475 0.001475 -srcnodata "0" -dstnodata "0" -tap -r average $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*W.tif ${VRS}.NAC.${VAR}_500m.tif - -export GISDATA=/opt/gisdb/extra-gisdata/ -export VRS=GFC-2019-v1.7 -export VAR=treecover2000 - - -gdalwarp -tr 0.001475 0.001475 -srcnodata "0" -dstnodata "0" -tap -r average $GISDATA/sensores/Landsat/index_${VRS}_${VAR}.vrt ${VRS}.world.${VAR}_500m.tif - -``` diff --git a/doc/to-do/Modis_NDVI.R b/doc/to-do/Modis_NDVI.R deleted file mode 100644 index 8808e4d..0000000 --- a/doc/to-do/Modis_NDVI.R +++ /dev/null @@ -1,81 +0,0 @@ -##R --vanilla -## -##https://lpdaac.usgs.gov/data_access/data_pool - -## ver sensores_Modis_listaDownload.R ## junio 2016 - - -##system("split -l300 enlaces enlz") -## grep h11v07 enlaces > enlaces.h11v7 -## grep A2003 enlaces.h11v7 > enlaces.h11v7.2003 - -##ls hdfs/ > listos -## grep -vf listos enlaces.h11v8 > faltan.h11v8 -## grep -vf listos enlaces.h11v7 > faltan.h11v7 -## grep -vf listos enlaces.h12v7 > faltan.h12v7 -## grep -vf listos enlaces.h10v7 > faltan.h10v7 - - -for (yr in 2002:2009) - system(sprintf("grep A%1$s enlaces.h10v8 > enlaces.h10v8.%1$s",yr)) -system("mkdir ~/mapas/download/MOD13Q1/hdfs") -setwd("~/mapas/download/MOD13Q1/hdfs") - -## bash for loop -##ls hdfs/ > listos -##for i in {2000..2015} -##do -## grep -h A$i enlaces.* >enlaces.A$i -## grep -vf listos enlaces.A$i > faltan.A$i -##done -##ls -lah faltan.A* -##grep -h A2005 enlaces.* >enlaces.A2005 -##grep -h A2007 enlaces.* >enlaces.A2007 -## -## grep -vf listos enlaces.A2007 > faltan.A2007 - -##R --vanilla -setwd("~/mapas/download/MOD13Q1/hdfs") -setwd("/media/mapoteca/HD-E1/ModisSS/download/MOD13Q1/hdfs/") -setwd("/media/jferrer/HD-E1/ModisSS/download/MOD13Q1/hdfs/") - -dir(pattern="hdf$") -mptc <- "~/mapas/Venezuela" - - - -for (yr in c(2000:2015)) { - for (mn in seq(1,365,by=8)) { - for (variable in c("250m 16 days NDVI","250m 16 days EVI","250m 16 days VI Quality","250m 16 days red reflectance","250m 16 days NIR reflectance","250m 16 days blue reflectance","250m 16 days MIR reflectance","250m 16 days view zenith angle","250m 16 days sun zenith angle","250m 16 days relative azimuth angle","250m 16 days composite day of the year","250m 16 days pixel reliability")[1:3]) { - if (!file.exists(sprintf("%s/%s/",mptc,gsub(" ","_",variable)))) - system(sprintf("mkdir %s/%s/",mptc,gsub(" ","_",variable))) - arch <- sprintf("%1$s/%4$s/MOD13Q1.A%2$s%3$03d.Venezuela_%4$s.tif",mptc,yr,mn,gsub(" ","_",variable)) - if (!file.exists(arch)) { - hs <- dir(pattern=sprintf("A%s%03d",yr,mn)) - hs <- grep("hdf$",hs,value=T) - if (length(hs)>5) { - system(sprintf("gdalwarp -te -74 0 -58 13 -t_srs \"+proj=longlat +datum=WGS84\" %s %s",paste("HDF4_EOS:EOS_GRID:\"",hs,"\":MODIS_Grid_16DAY_250m_500m_VI:'",variable,"'",sep="",collapse=" "),arch)) - } - } - } - } -} - -##cd ~/mapas/download/MOD13Q1 -##tar -cjf MOD13Q1.A2000.tar.bz2 hdfs/MOD13Q1.A2000* -##rm hdfs/MOD13Q1.A2000* - -setwd("~/mapas") -system("tar -cjvf 20150705.Venezuela.PET_1km.tar.bz2 Venezuela/PET_1km/") -system("tar -cjvf 20150705.Venezuela.ET_1km.tar.bz2 Venezuela/ET_1km/") -system("tar -cjvf 20150705.Venezuela.PLE_1km.tar.bz2 Venezuela/PLE_1km/") -system("tar -cjvf 20150705.Venezuela.LE_1km.tar.bz2 Venezuela/LE_1km/") - -require(raster) -r0=raster(sprintf("~/mapas/Venezuela/ET_1km/MOD16A2.A%sM%02d.Venezuela_ET_1km.tif",yr,mn)) - -source("~/Dropbox/Mapoteca/inc/inc00_funciones.R") -##chequear MOD16_global_evapotranspiration_description.pdf -tmp <- mSSt(values(r0), ll=-32767,ul=32700,cf=0.1,os=0,setNA=0) -values(r0) <- tmp -plot(r0) diff --git a/doc/to-do/UN-map.md b/doc/to-do/UN-map.md deleted file mode 100644 index 1880dd4..0000000 --- a/doc/to-do/UN-map.md +++ /dev/null @@ -1,3 +0,0 @@ -UN Map: Global International Boundaries -https://data.humdata.org/dataset/united-nations-map -https://data.humdata.org/organization/ocha-fiss diff --git a/doc/to-do/VIPPHEN-NDVI-v004.md b/doc/to-do/VIPPHEN-NDVI-v004.md deleted file mode 100644 index 89c1cb1..0000000 --- a/doc/to-do/VIPPHEN-NDVI-v004.md +++ /dev/null @@ -1,65 +0,0 @@ -> The NASA Making Earth System Data Records for Use in Research Environments (MEaSUREs) Vegetation Index and Phenology (VIP) global datasets were created using surface reflectance data from the Advanced Very High Resolution Radiometer (AVHRR) N07, N09, N11, and N14 datasets (1981 – 1999) and Moderate Resolution Imaging Spectroradiometer (MODIS)/Terra MOD09 surface reflectance data (2000 - 2014). The VIP Vegetation Index (VI) product was developed to provide consistent measurements of the Normalized Difference Vegetation Index (NDVI) and modified Enhanced Vegetation Index (EVI2) spanning more than 30 years of data from multiple sensors. The EVI2 is a backward extension of AVHRR. Vegetation indices such as NDVI and EVI2 are useful for assessing the biophysical properties of the land surface, and are used to characterize vegetation phenology. Phenology tracks the seasonal life cycle of vegetation, and provides information on the biotic response to environmental changes. The VIPPHEN data product is provided globally at 0.05 degree (5600 meter) spatial resolution in geographic (Lat/Lon) grid format. The data are stored in Hierarchical Data Format-Earth Observing System (HDF-EOS) file format. The VIPPHEN phenology product contains 26 Science Datasets (SDS) which include phenological metrics such as the start, peak, and end of season as well as the rate of greening and senescence. The product also provides the maximum, average, and background calculated VIs. The VIPPHEN SDS are based on the daily VIP product series and are calculated using a 3-year moving window average to smooth out noise in the data. A reliability SDS is included to provide context on the quality of the input data. - -## URLs -https://lpdaac.usgs.gov/products/vipphen_ndviv004/ -https://cmr.earthdata.nasa.gov/search/concepts/C1328419564-LPDAAC_ECS.html - -See also graphical description in: https://lpdaac.usgs.gov/documents/637/VNP22_User_Guide_V1.pdf (although this is related to a different dataset) - -## References - -For North America: -> White MA, BEURS D, Kirsten M, DIDAN K, INOUYE DW, RICHARDSON AD, JENSEN OP, O'KEEFE JO, ZHANG G, NEMANI RR, LEEUWEN V. Intercomparison, interpretation, and assessment of spring phenology in North America estimated from remote sensing for 1982–2006. Global Change Biology. 2009 Oct 1;15(10):2335-59. - - - -```sh -mkdir -p $GISDATA/sensores/VIPPHEN-NDVI -cd $GISDATA/sensores/VIPPHEN-NDVI -mv ~/Downloads/4656797354-download.sh $GISDATA/sensores/VIPPHEN-NDVI -chmod 777 $GISDATA/sensores/VIPPHEN-NDVI/4656797354-download.sh -./4656797354-download.sh - - - -for k in "Start of Season 1" "End of Season 1" "Length of Season 1" "Day of Peak Season 1" "Rate of Greening Season 1" "Rate of Senescence Season 1" "Max VI Season 1" "Start of Season 2" "End of Season 2" "Length of Season 2" "Day of Peak Season 2" "Rate of Greening Season 2" "Rate of Senescence Season 2" "Max VI Season 2" "Start of Season 3" "End of Season 3" "Length of Season 3" "Day of Peak Season 3" "Rate of Greening Season 3" "Rate of Senescence Season 3" "Max VI Season 3" "Cumulative VI" "Average VI" "Background VI" "Number of Seasons" "Reliability" -do - gdallocationinfo -xml -geoloc HDF4_EOS:EOS_GRID:"${GISDATA}/sensores/VIPPHEN-NDVI/VIPPHEN_NDVI.A2014.004.2016180135355.hdf:VIP_CMG_GRID:${k}" -49.302800 -11.31810000 -done - - -for j in $(ls ${GISDATA}/sensores/VIPPHEN-NDVI/*hdf) -do - gdallocationinfo -xml -geoloc HDF4_EOS:EOS_GRID:"${j}:VIP_CMG_GRID:${k}" -49.302800 -11.31810000 -done - -``` - -Transform to geotiff - -```sh -cd $WORKDIR -for k in "Start of Season 1" "End of Season 1" "Length of Season 1" "Day of Peak Season 1" "Rate of Greening Season 1" "Rate of Senescence Season 1" "Max VI Season 1" "Start of Season 2" "End of Season 2" "Length of Season 2" "Day of Peak Season 2" "Rate of Greening Season 2" "Rate of Senescence Season 2" "Max VI Season 2" "Start of Season 3" "End of Season 3" "Length of Season 3" "Day of Peak Season 3" "Rate of Greening Season 3" "Rate of Senescence Season 3" "Max VI Season 3" "Cumulative VI" "Average VI" "Background VI" "Number of Seasons" "Reliability" -do - g=$(echo $k|sed -e "s/ /-/g") - gdal_translate HDF4_EOS:EOS_GRID:"${GISDATA}/sensores/VIPPHEN-NDVI/VIPPHEN_NDVI.A2014.004.2016180135355.hdf:VIP_CMG_GRID:${k}" VIPPHEN_NDVI.A2014.${g}.tif -done -``` - -```r -require(raster) -r0 <- raster("VIPPHEN_NDVI.A2014.Average-VI.tif") -plot(r0) -plot(r0>5000) - -r1 <- raster("VIPPHEN_NDVI.A2014.Cumulative-VI.tif") -values(r1)[values(r1)<0] <- NA - -r2 <- raster("VIPPHEN_NDVI.A2014.Max-VI-Season-1.tif") - values(r2)[values(r2)<0] <- NA - -plot(r1) -plot(r2) - r1 <- raster("VIPPHEN_NDVI.A2014.Start-of-Season-1.tif") -plot(r1) -``` diff --git a/doc/to-do/World-Heritage-Sites.md b/doc/to-do/World-Heritage-Sites.md deleted file mode 100644 index 05bdf4e..0000000 --- a/doc/to-do/World-Heritage-Sites.md +++ /dev/null @@ -1,2 +0,0 @@ -World Heritage List -http://whc.unesco.org/en/list diff --git a/doc/to-do/ecological-classifications/EU-plus-habitats.md b/doc/to-do/ecological-classifications/EU-plus-habitats.md deleted file mode 100644 index eff5781..0000000 --- a/doc/to-do/ecological-classifications/EU-plus-habitats.md +++ /dev/null @@ -1,53 +0,0 @@ -## - -http://ec.europa.eu/environment/nature/knowledge/redlist_en.htm -## - -fact sheets per habitat in https://forum.eionet.europa.eu/european-red-list-habitats/library/ - - -Red list database https://forum.eionet.europa.eu/european-red-list-habitats/library/project-deliverables-data/database - -Download all data at once -```sh -mkdir -p $GISDATA/ecosystems/EUplus-RLH -cd $GISDATA/ecosystems/EUplus-RLH -wget --continue https://forum.eionet.europa.eu/european-red-list-habitats/library/zip_export/do_export --output-document=EURLHDB.zip - -``` - -unzip and export from accdb to sql -```sh - -cd $WORKDIR - -unzip $GISDATA/ecosystems/EUplus-RLH/EURLHDB.zip -chmod 704 -R Library/ -mdb-tables -1 Library/Project\ data\ deliverables/Database/Raw\ Database\ .accdb -mdb-schema Library/Project\ data\ deliverables/Database/Raw\ Database\ .accdb > EURLHschema.sql postgres - -mdb-export -I postgres Library/Project\ data\ deliverables/Database/Raw\ Database\ .accdb 'European Red List of Habitats Table' | sed -e 's/)$/)\;/' > EURLHexport.sql - -echo "SET search_path TO euplus;" > EURLH-schema-plus.sql - cat EURLHschema.sql >> EURLH-schema-plus.sql -psql -d gisdata -c "CREATE SCHEMA euplus" -psql -d gisdata < EURLH-schema-plus.sql - -SET search_path TO euplus; -drop table "Biogeographical Regions Table"; -drop table "Conservation Measures Table" ; -drop table "European Red List of Habitats Table"; -drop table "Look-up Conservation Measures Table"; -drop table "Look-up Countries Table" ; -drop table "Look-up Pressures and Threats Table" ; -drop table "Look-up Seas Table" ; -drop table "Marine Habitats Area and Trends Table"; -drop table "Pressures and Threats Table" ; -drop table "Terrestrial Habitats Area and Trends Table"; - -echo "SET search_path TO euplus;" > EURLH-export-plus.sql - cat EURLHexport.sql >> EURLH-export-plus.sql - - psql -d gisdata < EURLH-export-plus.sql & - -``` diff --git a/doc/to-do/ecological-classifications/Ecological-Land-Units.md b/doc/to-do/ecological-classifications/Ecological-Land-Units.md deleted file mode 100644 index 3bae691..0000000 --- a/doc/to-do/ecological-classifications/Ecological-Land-Units.md +++ /dev/null @@ -1,152 +0,0 @@ -# USGS: Ecological land Units - -https://www.usgs.gov/centers/gecsc/science/global-ecosystems?qt-science_center_objects=4#qt-science_center_objects - -#### Citation -> Roger Sayre; Deniz Karagulle; Charlie Frye; Timothy Boucher; Nicholas H. Wolff; Sean Breyer; Dawn Wright; Madeline Martin; Kevin Butler; Keith Van Graafeiland; Jerry Touval; Leonardo Sotomayor; Jennifer McGowan; Edward T. Game; Hugh Possingham (2020) *An assessment of the representation of ecosystems in global protected areas using new maps of World Climate Regions and World Ecosystems*. **Global Ecology and Conservation**, 21: e00860. DOI [10.1016/j.gecco.2019.e00860](http:doi.org/10.1016/j.gecco.2019.e00860) [Web](https://www.sciencedirect.com/science/article/pii/S2351989419307231) - -https://pubs.er.usgs.gov/publication/70187380 - -#### Data download - -https://rmgsc.cr.usgs.gov/ecosystems/datadownload.shtml -https://rmgsc.cr.usgs.gov/outgoing/ecosystems/ - -#### Data processing - - -```sh -mkdir -p $GISDATA/ecosystems/USGS/Ecological-Land-Units/ -cd $GISDATA/ecosystems/USGS/Ecological-Land-Units/ - -wget https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/ -grep zip index.html > enlaces - -wget --continue https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/World_ELU_2015.zip - -# sed -n 's/.*HREF="\([^"]*\).*/\1/p' index.html > enlaces - ## this one is better for this file: - grep -Po '(?<=HREF=")[^"]*' index.html | grep LandUnits > ELUs - wget --continue -i ELUs --base=https://rmgsc.cr.usgs.gov/ -b - - grep -Po '(?<=HREF=")[^"]*' index.html > enlaces -wget --continue -i enlaces --base=https://rmgsc.cr.usgs.gov/ -b - - - -``` - -#### New version: `WorldEcologicalLandUnits2015data` - - -```sh -mkdir $WORKDIR/ELU - cd $WORKDIR/ELU -unzip $GISDATA/ecosystems/USGS/Ecological-Land-Units/WorldEcologicalLandUnits2015data.zip -#unzip $GISDATA/ecosystems/USGS/Ecological-Land-Units/WorldEcologicalLandUnits2015symb.zip -#7z x $GISDATA/ecosystems/USGS/Ecological-Land-Units/WorldTerrestrialEcosystemsUSGSEsriTNC2020.mpk -unzip $GISDATA/ecosistemas/NatureServe/af_labeled_ecosys.zip - -``` - - -```r -##R --vanilla -require(foreign) -require(dplyr) - -colormap <- read.dbf("globalelus_query/World_Ecological_2015.tif.vat.dbf") -##colormap <- read.dbf("globalelu/World_ELU_2015.tif.vat.dbf") - -head(table(colormap$ELU)) - str(colormap) - -(table(colormap$ELU_Bio_De)) -(table(colormap$ELU_GLC_De)) - -require(readxl) -xwalk <- read_excel("~/proyectos/UNSW/ecosphere-db/input/xwalks/GETcrosswalk-Sayre-2020.xlsx") - -require(raster) -r0 <- raster("globalelus_query/World_Ecological_2015.tif") -r1 <- r0 - colormap %>% filter(EF_Lit_Des %in% "Unconsolidated Sediment" ) %>% pull(Value) -> slc - -## wont work with my RAM -values(r1) <- values(r0) %in% slc - -colormap$alpha <- 255 -colormap$Red <- 0 -colormap$Green <- 0 -colormap$Blue <- 0 -colormap$Red[colormap$Value %in% slc] <- 200 - -write.table(file="globalelu_colourmap.clr", colormap[,c("Value","Red","Green","Blue","alpha","ELU")], row.names=F, col.names=F) -q() -``` - - -```r -##R --vanilla -require(foreign) -require(dplyr) -require(readxl) -require(raster) - -colormap <- read.dbf("Africa_IVC_20130316_final_MG.tif.vat.dbf") - colormap %>% filter(formation %in% "1.A.1 Tropical Seasonally Dry Forest" ) %>% pull(Value) -> slc - - -head(colormap) - -r0 <- raster("Africa_IVC_20130316_final_MG.tif") -r1 <- r0 %in% slc - - - str(colormap) - -(table(colormap$ELU_Bio_De)) -(table(colormap$ELU_GLC_De)) - -xwalk <- read_excel("~/proyectos/UNSW/ecosphere-db/input/xwalks/GETcrosswalk-Sayre-2020.xlsx") - -r1 <- r0 - colormap %>% filter(EF_Lit_Des %in% "Unconsolidated Sediment" ) %>% pull(Value) -> slc - -## wont work with my RAM -values(r1) <- values(r0) %in% slc - -colormap$alpha <- 255 -colormap$Red <- 0 -colormap$Green <- 0 -colormap$Blue <- 0 -colormap$Red[colormap$Value %in% slc] <- 200 - -write.table(file="globalelu_colourmap.clr", colormap[,c("Value","Red","Green","Blue","alpha","ELU")], row.names=F, col.names=F) -q() -``` - -#### Old version -(This was replaced in repo by `WorldEcologicalLandUnits2015data` see above) - -Create a colourmap for QGIS - -```sh -cd $WORKDIR -unzip $GISDATA/ecosystems/USGS/Ecological-Land-Units/World_ELU_2015.zip -``` - -```r -##R --vanilla -require(foreign) -colormap <- read.dbf("globalelu/World_ELU_2015.tif.vat.dbf") -colormap$alpha <- 255 -write.table(file="globalelu_colourmap.clr", colormap[,c("Value","Red","Green","Blue","alpha","ClassName")], row.names=F, col.names=F) -q() -``` - -```sh -mv globalelu_colourmap.clr $GISDATA/ecosystems/USGS/Ecological-Land-Units/ -``` - -Crosswalk with typology available at: https://www.landscale.org/how-it-works/ [PDF](https://www.landscale.org/wp-content/uploads/2020/10/Annex-2-World-Ecosystems-Map-and-IUCN-Typology_V0.2_Oct2020.pdf) but the labels are more generic than the ones in the tif.vat.dbf file. diff --git a/doc/to-do/ecological-classifications/GLOBES-1km.md b/doc/to-do/ecological-classifications/GLOBES-1km.md deleted file mode 100644 index 2208630..0000000 --- a/doc/to-do/ecological-classifications/GLOBES-1km.md +++ /dev/null @@ -1,15 +0,0 @@ -# GLOBES – 1-KM RESOLUTION GLOBAL ECOSYSTEM DATA CUBE -Dataset Creator: Ruben Remelgado -Publication Year: 2020 -Global data cube on the yearly extent of ecosystems following the habitat classification scheme of the IUCN Red List, used in the assessment of over 100,000 species. This data cube is composed by 65 ecosystem types and covers the period between 1992 and 2018, where each layer depicts per-pixel areas of a given ecosystem within a given year. - -https://portal.geobon.org/ebv-detail?id=8 - -```sh -mkdir -p $GISDATA/ecosystems/GLOBES-1km -cd $GISDATA/ecosystems/GLOBES-1km - - -nohup wget --continue https://portal.geobon.org/data/10/netcdf/globES.nc & -wget --continue https://portal.geobon.org/data/10/metadata.xml -``` diff --git a/doc/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md b/doc/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md deleted file mode 100644 index db122d4..0000000 --- a/doc/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md +++ /dev/null @@ -1,36 +0,0 @@ -# GLOBES – 1-KM RESOLUTION GLOBAL ECOSYSTEM DATA CUBE - -Datacube of terrestrial IUCN habitat types. Global data cube on the yearly extent of ecosystems following the habitat classification scheme of the IUCN Red List, used in the assessment of over 100,000 species. This data cube is composed by 65 ecosystem types and covers the period between 1992 and 2018, where each layer depicts per-pixel areas of a given ecosystem within a given year. ... - - -https://portal.geobon.org/ebv-detail?id=10 - - - -#### Data - -Personal communication from Carsten Meyer - -```sh -mkdir -p $GISDATA/ecosystems/GLOBES-1km -cd $GISDATA/ecosystems/GLOBES-1km -wget --continue https://gigamove.rz.rwth-aachen.de/d/id/AWkrfaeTCyG3CX/dd/100 --output-document=GLOBES-10km-prelim.zip - -``` - - -```sh -cd $WORKDIR - -unzip $GISDATA/ecosystems/GLOBES-1km/GLOBES-10km-prelim.zip -``` - -From Geobon portal -```sh -mkdir -p $GISDATA/ecosystems/GLOBES-1km -cd $GISDATA/ecosystems/GLOBES-1km - -wget --continue https://portal.geobon.org/data/10/netcdf/globES.nc -wget --continue https://portal.geobon.org/data/10/metadata.xml - -``` diff --git a/doc/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md b/doc/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md deleted file mode 100644 index 741b25e..0000000 --- a/doc/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md +++ /dev/null @@ -1,64 +0,0 @@ -# Indicative distribution maps - -#### Citation - -The latest version of the dataset is available at ![10.5281/zenodo.3546513](https://zenodo.org/badge/doi/10.5281/zenodo.3546513.svg) - -Here we will compare version 1.1 and version 2.0 of the indicative maps: - -> Keith, David A., Ferrer-Paris, Jose R., Nicholson, Emily, Bishop, Melanie J., Polidoro, Beth A., Ramirez-Llodra, Eva, … Kingsford, Richard T. (2020). Indicative distribution maps for Ecological Functional Groups - Level 3 of IUCN Global Ecosystem Typology (Version 2.0.0) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3958934 - -And - -> Keith, David A., Ferrer-Paris, Jose R., Nicholson, Emily, Bishop, Melanie J., Polidoro, Beth A., Ramirez-Llodra, Eva, … Kingsford, Richard T. (2020). Indicative distribution maps for Ecological Functional Groups - Level 3 of IUCN Global Ecosystem Typology (Version 1.1.0) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3958622 - - -#### Data preparation - -It is possible to automate download from the Zenodo repository using the API. For example, using the *R* package **[zen4R](https://github.com/eblondel/zen4R)**. We need to retrieve the Zenodo API token from a file in the home directory or from an environment variable. - -```R -R --vanilla -require(zen4R) - -##output directory -gis.outdir <- Sys.getenv("GISOUT") - -system(sprintf("mkdir -p %s/version-0.0.1",gis.outdir)) -zenodoToken <- Sys.getenv("ZENODOTOKEN") -##alternative: readLines("~/.ZenodoToken") - -zenodo <- ZenodoManager$new( - token = zenodoToken, - logger = "INFO" -) - -versions <- c("version-1.1.0"="10.5281/zenodo.3958622","version-2.0.0"="10.5281/zenodo.3958934") -for (j in 1:2) { - system(sprintf("mkdir -p %s/%s",gis.outdir,names(versions)[j])) - setwd(sprintf("%s/%s",gis.outdir,names(versions)[j])) - my_rec <- zenodo$getRecordByDOI(versions[j]) - file_list <- zenodo$getFiles(my_rec$id) - - for (k in 1:length(file_list)) { - system(sprintf("wget --continue '%s?access_token=%s' --output-document=%s",file_list[[k]]$links$download,zenodoToken, file_list[[k]]$filename)) - } -} -q() -``` - -Now we can go through the folders and decompress the files: - -```sh -for version in 1.1.0 2.0.0 -do - cd $GISOUT/version-$version - for arch in $(ls *tar.bz2) - do - tar -xjvf $arch - rm $arch - done -done -``` - -All GeoTIFF files should be now in these two folders. From 4e98d5b32f6895e7ea83a71ba6e401f0cd7328a2 Mon Sep 17 00:00:00 2001 From: jrfep Date: Sun, 16 Apr 2023 16:05:26 +1000 Subject: [PATCH 20/23] keep drafts of files outside the docusite folder --- doc/anthroposphere/to-do/human-impact.md | 13 -- .../VIIRS-Snow-Cover-Products.md | 60 --------- doc/landcover-to-do/GeoWiki.md | 20 --- .../Gridded-Landcover-Classification.md | 14 -- doc/landcover-to-do/LBA-ECO-landcover-SAM.md | 37 ------ doc/landcover-to-do/LandCover-CCI-CRDP.md | 120 ------------------ doc/landcover-to-do/USGS-EROS-landcover.md | 46 ------- doc/vegetation-to-do/China-vegetation-map.md | 32 ----- doc/vegetation-to-do/HEaP-United-Kingdom.md | 9 -- .../LRIS-vegetation-ecosystems-New-Zealand.md | 25 ---- .../vegetation-maps-Argentina.md | 53 -------- 11 files changed, 429 deletions(-) delete mode 100644 doc/anthroposphere/to-do/human-impact.md delete mode 100644 doc/cryosphere-to-do/VIIRS-Snow-Cover-Products.md delete mode 100644 doc/landcover-to-do/GeoWiki.md delete mode 100644 doc/landcover-to-do/Gridded-Landcover-Classification.md delete mode 100644 doc/landcover-to-do/LBA-ECO-landcover-SAM.md delete mode 100644 doc/landcover-to-do/LandCover-CCI-CRDP.md delete mode 100644 doc/landcover-to-do/USGS-EROS-landcover.md delete mode 100644 doc/vegetation-to-do/China-vegetation-map.md delete mode 100644 doc/vegetation-to-do/HEaP-United-Kingdom.md delete mode 100644 doc/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md delete mode 100644 doc/vegetation-to-do/vegetation-maps-Argentina.md diff --git a/doc/anthroposphere/to-do/human-impact.md b/doc/anthroposphere/to-do/human-impact.md deleted file mode 100644 index a3ed0fc..0000000 --- a/doc/anthroposphere/to-do/human-impact.md +++ /dev/null @@ -1,13 +0,0 @@ -Include Here: - -global: -- Aqueduct -- CFW -- GHM2019 -- GLW3 -- Halpern2015 -- HFP -- Modified Habitat 2020 - -regional: -- RAISG diff --git a/doc/cryosphere-to-do/VIIRS-Snow-Cover-Products.md b/doc/cryosphere-to-do/VIIRS-Snow-Cover-Products.md deleted file mode 100644 index 0d4cde8..0000000 --- a/doc/cryosphere-to-do/VIIRS-Snow-Cover-Products.md +++ /dev/null @@ -1,60 +0,0 @@ -# VIIRS snow products - -[User guide](https://nsidc.org/sites/nsidc.org/files/technical-references/VIIRS_snow_products_user_guide_version_8.pdf) - -We select the *cloud-gap-filled (CGF) snow cover product* - -## VIIRS/NPP CGF Snow Cover Daily L3 Global 375m SIN Grid, Version 1 -> This data set contains daily 'cloud-free' snow cover produced from the VIIRS/NPP Snow Cover Daily L3 Global 375m SIN Grid, Version 1 snow cover product. A cloud-gap-filled algorithm is utilized to replace ‘cloud-covered’ pixels with ‘cloud-free pixels’ for the purpose of estimating the snow cover that may exist under current cloud cover. The data are provided daily and mapped to a 375 m sinusoidal grid. - - -https://nsidc.org/data/VNP10A1F/versions/1 - -### Citation -our Use and Copyright Web page. - -> Riggs, G., D. K. Hall, and M. O. Román. 2019. VIIRS/NPP CGF Snow Cover Daily L3 Global 375m SIN Grid, Version 1. [Indicate subset used]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. doi: https://doi.org/10.5067/VIIRS/VNP10A1F.001. [Date Accessed]. - -### Data download -Use the "download script" button to get the python script and place it in the target folder. Add login details for earthdata in ~/.netrc as follow: `machine urs.earthdata.nasa.gov login ***** password *****` - -Running the original script `python nsidc-download_VNP10A1.001_2019-11-26.py` returns 929791 matches nearly 3TB of data ! for all tiles, but if we select a bounding box: bounding_box = '92,25,99,29', only 2859 matches and 5718 files.... ca. 30 GB - -So we do a manual edit to add bounding box, start and end dates, filename match, etc... - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh - - -mkdir -p $GISDATA/cryosphere/global/VIIRS-VNP10A1F/ -cd $GISDATA/cryosphere/global/VIIRS-VNP10A1F/ -## scp nsidc-download_VNP10A1F.001_2021-05-28.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/VIIRS-VNP10A1F - - sed -e "s/bounding_box = ''/bounding_box = 'MI_BBOX'/" -e "s/filename_filter = ''/filename_filter = 'MI_WEEK'/" -i nsidc-download_VNP10A1F.001_2021-05-28.py - -``` - - - -```sh -## example for Myanmar # projection not yet working fine, these are daily products, thus more cumbersome to summarize -mkdir -p ~/tmp/alpine/Myanmar/VNP10A1 -cd ~/tmp/alpine/Myanmar/VNP10A1 - -for k in $(ls $GISDATA/sensores/VIIRS/VNP10A1/*h26v06*h5) -do - ##take a look at gdalinfo $k - ## GRingLatitude=19.936034 30.043859 29.999359 19.893507 - ## GRingLongitude=84.829601 92.054376 103.93619 95.76852 - for BAND in NDSI_Snow_Cover Basic_QA - do - export j=$(basename $k | sed -e s/.h5$/.tif/ -e s/VNP10A1/${BAND}/) - - gdal_translate -ot Byte -of Gtiff -gcp 0 0 84.829601 19.936034 -gcp 0 3000 92.054376 30.043859 -gcp 3000 3000 103.93619 29.999359 -gcp 3000 0 95.76852 19.893507 HDF5:"${k}"://HDFEOS/GRIDS/NPP_Grid_IMG_2D/Data_Fields/${BAND} test.tif - gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te 96 25 99 29 -t_srs EPSG:4326 test.tif ${j} - rm test.tif - done -done - -##gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te 96 25 99 29 -s_srs "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs" -t_srs EPSG:4326 HDF5:"${k}"://HDFEOS/GRIDS/NPP_Grid_IMG_2D/Data_Fields/${BAND} ${j} -``` diff --git a/doc/landcover-to-do/GeoWiki.md b/doc/landcover-to-do/GeoWiki.md deleted file mode 100644 index 36aae69..0000000 --- a/doc/landcover-to-do/GeoWiki.md +++ /dev/null @@ -1,20 +0,0 @@ - - - -```r -tst <- read.table("~/tmp/T1.2-tropical-dry-forest/GlobalCrowd.tab",skip=33,header=T,sep="\t") -head(tst) -table(tst$LCC..Land.Cover.1..1...tree.cover.....) - -plot(Latitude~Longitude,tst,col=LCC..Land.Cover.1..1...tree.cover.....,pch=".") - points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 8),pch=1,cex=.5) - points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 8),pch=19,col="cyan",cex=.5) # some strange snow points in unexpected areas - - -summary(tst$Conf..Confidence.Land.Cover..0...su....) -plot(Latitude~Longitude,subset(tst,!is.na(Conf)),col=LCC..Land.Cover.1..1...tree.cover.....,pch=".") - points(Latitude~Longitude,subset(tst,!is.na(Conf..Confidence.Land.Cover..0...su....) & Conf..Confidence.Land.Cover..0...su.... == 0 & LCC..Land.Cover.1..1...tree.cover..... %in% 8),pch=19,col="cyan",cex=.5) # still strange snow points in unexpected areas - -points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 1),pch=19,col="green",cex=.5) -points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 3),pch=19,col="orange",cex=.5) -``` diff --git a/doc/landcover-to-do/Gridded-Landcover-Classification.md b/doc/landcover-to-do/Gridded-Landcover-Classification.md deleted file mode 100644 index 8f11f4e..0000000 --- a/doc/landcover-to-do/Gridded-Landcover-Classification.md +++ /dev/null @@ -1,14 +0,0 @@ -# Gridded-Landcover-Classification - -https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover - - -```sh -source ~/proyectos/UNSW/cesdata/env/project-env.sh -mkdir -p $GISDATA/landcover/global/Copernicus-Gridded-Landcover -cd $GISDATA/landcover/global/Copernicus-Gridded-Landcover - -wget --continue https://download-0000.copernicus-climate.eu/cache-compute-0000/cache/data1/dataset-satellite-land-cover-27e96432-1999-4965-83c5-d07b0a66e371.tar.gz - -tar -xzvf $GISDATA/landcover/Copernicus-Gridded-Landcover/dataset-satellite-land-cover-27e96432-1999-4965-83c5-d07b0a66e371.tar.gz -``` diff --git a/doc/landcover-to-do/LBA-ECO-landcover-SAM.md b/doc/landcover-to-do/LBA-ECO-landcover-SAM.md deleted file mode 100644 index 0d8524f..0000000 --- a/doc/landcover-to-do/LBA-ECO-landcover-SAM.md +++ /dev/null @@ -1,37 +0,0 @@ -# LBA-ECO LC-08 Soil, Vegetation, and Land Cover Maps for Brazil and South America - -https://daac.ornl.gov/LBA/guides/LC08_EOS_Maps.html - -> This data set provides (1) soil maps for Brazil that are digital versions of the MAPA DE SOLOS DO BRASIL (EMBRAPA, 1981) classified at three levels of detail, 19-class, 70-class and 249-class; (2) vegetation maps for Brazil that are digital versions of the MAPA DE VEGETACAO DO BRASIL (IBGE, 1988) classified at three levels of detail, 13-class, 59-class, and an overprint (combination) class; and (3) a land cover map for all of South America that was derived from National Oceanic and Atmospheric Administration (NOAA) Advanced Very High Resolution Radiometer (AVHRR) data over the time period 1987 through 1991 (Stone et al., 1994). - -> The seven soil, vegetation, and general land cover classification maps are provided as GeoTIFF files (.tif) files. There are also three companion files (.pdf), one each, for the soil, vegetation, and land cover maps, with information on map units, class values, codes, and descriptions. - -Cite this data set as follows: - -> Bliss, N. 2013. LBA-ECO LC-08 Soil, Vegetation, and Land Cover Maps for Brazil and South America. Data set. Available on-line (http://daac.ornl.gov) from Oak Ridge National Laboratory Distributed Active Archive Center, Oak Ridge, Tennessee, U.S.A. http://dx.doi.org/10.3334/ORNLDAAC/1155 - -Soils Maps: - -The soil maps of Brazil are digital versions of the MAPA DE SOLOS DO BRASIL (EMBRAPA, 1981), digitized at the U.S. Geological Survey's EROS Data Center, Sioux Falls, South Dakota, in 1992. - -These data were acquired from the Woods Hole Research Center and modified for incorporation in the University of New Hampshire (UNH) EOS-WEBSTER system. The subset for the LBA study region was downloaded from EOS-WEBSTER. - -The files were processed with ArcInfo, and based on the Woods Hole Full Soil Map Unit Classifications. There are three soil maps available as three different classes: one 19-class, one 70-class, and one 249, detailed class. Refer to the companion file Brazil_Soils_Map_class_aux.pdf for the class value codes and names. - -Vegetation Maps: - -The vegetation maps of Brazil are digital versions of the MAPA DE VEGETACAO DO BRASIL (IBGE, 1988), digitized at the U.S. Geological Survey's EROS Data Center, Sioux Falls, South Dakota, in 1992. These data were acquired from the Woods Hole Research Center. - -Data are generalizations of the major vegetation classes. Generalized classes were determined from the original subheadings on the original published map. - -Overprint classes are used to define areas which are best described by a combination of two classes, one from the major classification and the other from the overprint classification. Overprint classes were originally displayed with special symbols printed over major classification shades on the original map. For instance, a series of stipple marks or hash marks were printed on top of major class shades to represent areas which had characteristics from the major classification as well as the overprint classification. The overprint classifications were also referred to as subclasses in the original data. - -The files were processed with ArcInfo, and based on the Woods Hole General Vegetation Classification. There are three vegetation maps available as three different classes: one 19-class, one 70-class, and one 249, detailed class. Refer to the companion file BrazilVegMap_class_aux.pdf for the class value codes and names. - -Land cover map: - -The land cover map of South America was produced from 1-15 km National Oceanic and Atmospheric Administration (NOAA) Advanced Very High Resolution Radiometer (AVHRR) data over the time period 1987 through 1991. The data were acquired from Woods Hole Research Center. - -The file was processed with ArcInfo and resulted in a 1-km resolution, 41-class, land cover map of South America. Refer to the companion file SA_lc_Map_41class_aux.pdf for the class values and names. - -> Stone, T.A., P. Schlesinger, G.M. Woodwell, and R.A. Houghton, 1994. A Map of the Vegetation of South America Based on Satellite Imagery. Photogrammetric Engineering and Remote Sensing. 60(5):541-551. diff --git a/doc/landcover-to-do/LandCover-CCI-CRDP.md b/doc/landcover-to-do/LandCover-CCI-CRDP.md deleted file mode 100644 index 0b9c81f..0000000 --- a/doc/landcover-to-do/LandCover-CCI-CRDP.md +++ /dev/null @@ -1,120 +0,0 @@ -# Climate Change Initiative - Climate Research Data Package (CRDP) - -Data documentation and download from (access through a simple user information form) -http://maps.elie.ucl.ac.be/CCI/viewer/download.php -and from (user registration with validated e-mail) -https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview - -## Set up a path for a data directory: - -```bash -mkdir -p $GISDATA/sensores/CCI-CRDP -cd $GISDATA/sensores/CCI-CRDP -``` - -## Land Cover Maps - v2.1.1 - -Global land cover maps at 300 m spatial resolution, on an annual basis from 2016 to 2018, consistent with the series of global annual LC maps from 1992 to 2015 produced by the European Space Agency (ESA) Climate Change Initiative (CCI). - -The maps (2016 - 2018) in the netcdf format are available for download through the [Copernicus Climate Change Service (C3S) Climate Data Store (CDS)](https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview). C3S is implemented by the European Centre for Medium-Range Weather Forecasts (ECMWF) on behalf of the European Commission. - -download using user account. Download with browser -```sh -mv ~/Downloads/dataset-satellite-land-cover-be49b1ff-7d17-41f5-9e92-677789bc214b.tar.gz $GISDATA/sensores/CCI-CRDP - -``` - -The maps can be transformed to the GeoTiff format using GDAL as follows, replacing Year, Band_Name and Output_Filename with the parameters of interest: -```sh -cd $WORKDIR -tar -xzvf $GISDATA/sensores/CCI-CRDP/dataset-satellite-land-cover-be49b1ff-7d17-41f5-9e92-677789bc214b.tar.gz - - -``` - -```sh -export YEAR=2018 -export BAND=lccs_class -gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -tr 0.002777777777778 0.002777777777778 -t_srs EPSG:4326 NETCDF:C3S-LC-L4-LCCS-Map-300m-P1Y-${YEAR}-v2.1.1.nc:${BAND} CCI-LC-${YEAR}-${BAND}.tif -``` -with Year the year : 2016, 2017 or 2018; and BandName one of the following: lccs_class; processed_flag; current_pixel_state; observation_count; change_count. - -Example code translating the 2017 LC map from netCDF to GeoTiff: - -gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -tr 0.002777777777778 0.002777777777778 -t_srs EPSG:4326 NETCDF:C3S-LC-L4-LCCS-Map-300m-P1Y-2017-v2.1.1.nc:lccs_class C3S-LC-L4-LCCS-Map-300m-P1Y-2017-v2.1.1.tif - -## Land Cover Maps - v2.0.7 - -### Documentation -Each pixel value corresponds to the label of a land cover class defined based on the UN Land Cover Classification System (LCCS). LCCS classifiers support the further conversion into Plant Functional Types distribution required by the Earth System Models. The typology counts 22 classes. - -The 24 LC maps series is delivered along with 4 quality flags which document the products: - -qualityflag1 pixel has been processed or not, -qualityflag2 pixel status as defined by the pre-processing, -qualityflag3 number of valid observations available to derive the classification, -qualityflag4 number of land cover changes detected over the 24 years. -These 4 quality flags document the full time series and are not year specific. - -These maps are derived from a unique baseline LC map which is generated thanks to a classification chain applied on the entire MERIS FR and RR archive from 2003 to 2012. - -Independently from this baseline, LC changes are detected at 1 km based on a time series of annual global classifications generated from AVHRR HRPT (1992 - 1999), SPOT-Vegetation (1999 - 2012) and PROBA-V (2013 - 2015). Systematic analysis of the temporal trajectory of each pixel allowed depicting the major changes for a simplified land cover typology matching the IPCC classes. These classes are: cropland, forest, grassland, wetlands, settlements and other lands; the latter class being further split into shrubland, sparse vegetation, bare area and water. - -When MERIS FR or PROBA-V time series are available, the changes detected at 1km are re-mapped at 300 meters. The last step consists in back- and up-dating the 10-year baseline LC map to produce the 24 annual LC maps from 1992 to 2015. - -The ESACCI-LC for Sen2Cor data package is prepared for users of Sen2Cor version ≥ 2.5 who wants to benefit from the last improvements of Sen2Cor Cloud Screening and Classification module. This auxiliary data information is used in Sen2Cor to improve the accuracy of Sen2Cor classification over water, urban and bare areas and also to have a better handling of false detection of snow pixels. The user of Sen2Cor version ≥ 2.5 should download and extract the zip file at this location of Sen2Cor installation: $SEN2COR_BIN/aux_data. -### Data download - -LC maps full 1992-2015 series, 1 netcdf file, 24 bands, zip compression - 55.8Go: - -wget ftp://geo10.elie.ucl.ac.be/v207/ESACCI-LC-L4-LCCS-Map-300m-P1Y-1992_2015-v2.0.7b.nc.zip - -legend: -wget http://maps.elie.ucl.ac.be/CCI/viewer/download/ESACCI-LC-Legend.csv -wget http://maps.elie.ucl.ac.be/CCI/viewer/download/ESACCI-LCMapsColorLegend.qml - -## Water Bodies - v4.0 -The CCI WB v4.0 is composed of two layers: - -1. A static map of open water bodies at 150 m spatial resolution resulting from a compilation and editions of land/water classifications: the Envisat ASAR water bodies indicator, a sub-dataset from the Global Forest Change 2000 - 2012 and the Global Inland Water product. - -This product is delivered at 150 m as a stand-alone product but it is consistant with class "Water Bodies" of the annual LC Maps. The product was resampled to 300 m using an average algorithm. Legend : 1-Land, 2-Water - -2. A static map with the distinction between ocean and inland water is now available at 150 m spatial resolution. It is fully consistent with the CCI WB-Map v4.0. Legend: 0-Ocean, 1-Land. - -To cite the CCI WB-Map v4.0, please refer to this reference. -### Data download -Water Bodies v4.0 (netcdf) - 127Mo -wget ftp://geo10.elie.ucl.ac.be/CCI/ESACCI-LC-L4-WB-Map-150m-P13Y-2000-v4.0.nc - -## Land Surface Seasonality products -On a per pixel basis, these climatological variables reflect, along the year, the average trajectory and the inter-annual variability of a land surface feature over the 1999-2012 period. They are built from existing long-term global datasets with high temporal frequency and moderate spatial resolution (500m-1km). They result from a compilation of 14 years of 7-day instantaneous observations into 1 temporarily aggregated profile depicting, along the year, the reference behaviour for the vegetation greenness, the snow and the BA at global scale. These products are referred to as condition products in the product user guide. - -User guide -wget http://maps.elie.ucl.ac.be/CCI/viewer/download/ESACCI-LC-QuickUserGuide-LS-Seasonality_August2014.pdf - -### Vegetation greenness -### Snow occurrence - -The snow product presents the frequency at which snow has been detected along the year, based on observations over the 2000-2012 period. Data originate from the MODIS/Terra Snow Cover 8d L3 Global 500m SIN Grid Product (MOD10A2). - -This seasonality product is composed of two series of 52 layers (1 per week): - -AggOcc proportion of snow occurrence as detected over the 2000-2012 period on a 7-day basis (ranging from 0 to 100). This describes the yearly reference dynamics of the snow coverage at a 7-day frequency, -NYearObs number of valid and cloud-free weekly composites contributing to each 7-day period of the AggOcc series. This is a quality indicator of the occurrence values. -Each layer has a spatial resolution of 500m and a LAT/LONG WGS84 projection. -Snow (netcdf, 7z) - 7.8Go - -```sh -wget --continue ftp://geo10.elie.ucl.ac.be/CCI/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-2000-2012-v2.0.nc.7z -cd $WORKDIR -7z x $GISDATA/sensores/CCI-CRDP/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-2000-2012-v2.0.nc.7z -gdalinfo snow-nc/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-20000716-v2.0.nc -export BAND=snow_occ -export WEEK=20000716 -gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -t_srs EPSG:4326 NETCDF:snow-nc/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-${WEEK}-v2.0.nc:${BAND} Snow-Cond-${WEEK}-${BAND}.tif - -``` - - -### Burned areas occurrence diff --git a/doc/landcover-to-do/USGS-EROS-landcover.md b/doc/landcover-to-do/USGS-EROS-landcover.md deleted file mode 100644 index d5bb40c..0000000 --- a/doc/landcover-to-do/USGS-EROS-landcover.md +++ /dev/null @@ -1,46 +0,0 @@ -# USGS EROS LandCover GLCCDB V2p0 class - -Land cover class from USGS EROS LandCover GLCCDB V2p0: Version 2.0. - -#### Citation -> Loveland, T.R., Reed, B.C., Brown, J.F., Ohlen, D.O., Zhu, J, Yang, L., and Merchant, J.W., 2000, Development of a Global Land Cover Characteristics Database and IGBP DISCover from 1-km AVHRR Data: International Journal of Remote Sensing, v. 21, no. 6/7, p. 1303-1330. - -#### Data access - -http://iridl.ldeo.columbia.edu/SOURCES/.USGS/.EROS/.LandCover/.GLCCDB/.V2p0/.class/datafiles.html - -#### Data download and preparation - -```sh -mkdir -p $GISDATA/landcover/USGS_EROS -cd $GISDATA/landcover/USGS_EROS -wget --continue http://iridl.ldeo.columbia.edu/SOURCES/.USGS/.EROS/.LandCover/.GLCCDB/.V2p0/.class/data.nc -``` - -|Key | description | matching EFG | comments | -|---|---|---|---| -|1.0 | Urban and Built-Up Land| T7.4 |- | -|2.0 | Dryland Cropland and Pasture| - |- | -|3.0 | Irrigated Cropland and Pasture| - |- | -|4.0 | Mixed Dryland/Irrigated Cropland and Pasture| - | not mapped? | -|5.0 | Cropland/Grassland Mosaic| - |- | -|6.0 | Cropland/Woodland Mosaic| - |- | -|7.0 | Grassland| - |- | -|8.0 | Shrubland| - |- | -|9.0 | Mixed Shrubland/Grassland| - |- | -|10.0 | Savanna| - |- | -|11.0 | Deciduous Broadleaf Forest| - |- | -|12.0 | Deciduous Needleleaf Forest| - |- | -|13.0 | Evergreen Broadleaf Forest| - |- | -|14.0 | Evergreen Needleleaf Forest| T2.1 |- | -|15.0 | Mixed Forest| - |- | -|16.0 | Water Bodies| - |- | -|17.0 | Herbaceous Wetland| - |- | -|18.0 | Wooded Wetland| - |- | -|19.0 | Barren or Sparsely Vegetated| - |- | -|20.0 | Herbaceous Tundra| T6.3 | not mapped? | -|21.0 | Wooded Tundra| T6.3? or T2.1? |- | -|22.0 | Mixed Tundra| T6.3 |- | -|23.0 | Bare Ground Tundra| T6.2,T6.3 |- | -|24.0 | Snow or Ice| T6.1 |- | -|100 | ?| - | not in legend | diff --git a/doc/vegetation-to-do/China-vegetation-map.md b/doc/vegetation-to-do/China-vegetation-map.md deleted file mode 100644 index 93be895..0000000 --- a/doc/vegetation-to-do/China-vegetation-map.md +++ /dev/null @@ -1,32 +0,0 @@ -# China vegetation map - -### Older version -> China Vegetation Atlas. Chinese Vegetation Editing Committee of the Chinese Academy of Sciences, China Vegetation Dataset, Chinese Academy of Sciences, 2001. Beijing, China: Chinese Vegetation Editing Committee of the Chinese Academy of Sciences, China Vegetation Dataset, Chinese Academy of Sciences, 2001. 2001 ( tDAR id: 442484) ; doi:10.6067/XCV85B05BG - -https://core.tdar.org/geospatial/442484/china-vegetation-atlas - - -Register and download GIS data package, also Download spreadsheet - -```sh - - mkdir -p $GISDATA/vegetation-maps/China -cd $GISDATA/vegetation-maps/China -## -mv ~/Downloads/files-442484.zip $GISDATA/vegetation-maps/China -mv ~/Downloads/vegetation_translated.xlsx $GISDATA/vegetation-maps/China -cd $WORKDIR -unzip $GISDATA/vegetation-maps/China/files-442484.zip -``` - -Vegetation IDs are not linked to vegetation types or names. - -### 2020 Update - -> Yanjun Su, Qinghua Guo, Tianyu Hu, Hongcan Guan, Shichao Jin, Shazhou An, Xuelin Chen, Ke Guo, Zhanqing Hao, Yuanman Hu, Yongmei Huang, Mingxi Jiang, Jiaxiang Li, Zhenji Li, Xiankun Li, Xiaowei Li, Cunzhu Liang, Renlin Liu, Qing Liu, Hongwei Ni, Shaolin Peng, Zehao Shen, Zhiyao Tang, Xingjun Tian, Xihua Wang, Renqing Wang, Zongqiang Xie, Yingzhong Xie, Xiaoniu Xu, Xiaobo Yang, Yongchuan Yang, Lifei Yu, Ming Yue, Feng Zhang, Keping Ma (2020) An updated Vegetation Map of China (1:1000000), Science Bulletin, Volume 65, Issue 13, Pages 1125-1136, ISSN 2095-9273, https://doi.org/10.1016/j.scib.2020.04.004. - - -http://www.chinavegetation.cn/#/ - - -Not available yet diff --git a/doc/vegetation-to-do/HEaP-United-Kingdom.md b/doc/vegetation-to-do/HEaP-United-Kingdom.md deleted file mode 100644 index 3499c4c..0000000 --- a/doc/vegetation-to-do/HEaP-United-Kingdom.md +++ /dev/null @@ -1,9 +0,0 @@ -https://www.rspb.org.uk/our-work/conservation/conservation-and-sustainability/advice/conservation-land-management-advice/heathland-extent-and-potential-maps/ - -```sh -mkdir -p $GISDATA/ecosystems/HEaP -cd $GISDATA/ecosystems/HEaP - -mv ~/Downloads/heathland-extent-and-potential-heap-maps.zip $GISDATA/ecosystems/HEaP - -``` diff --git a/doc/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md b/doc/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md deleted file mode 100644 index 1a018eb..0000000 --- a/doc/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md +++ /dev/null @@ -1,25 +0,0 @@ -#Vegetative Cover Map -The 1:1,000,000 scale Vegetative Cover Map of New Zealand is the first vegetation survey which can be applied nationally for planning, research, and education. It optimises the cartographic potential of the vegetation information available in the early 1980s and provides a historical record which will aid in future analyses of vegetative cover and land utilisation. The map classification recognises 47 Vegetative Cover Classes identified by alphanumeric code and 17 Vegetative Cover Elements identified (only on the printed map) by symbols and patterns. The map is published as two sheets 730mm x 880mm covering the three principal islands of New Zealand and all offshore islands within 100km of the coast. The map was accompanied by a 153 page, illustrated, book which discusses New Zealand's vegetation and describes the 47 classes. - -The book to accompany this dataset is available as an epub from: -https://mebooks.co.nz/index.php?route=product/product&product_id=402 - -#Basic Ecosystems -This layer was derived from three existing data layers: the Land Cover Database 2 (LCDB2) (MfE 2002); the Land Use Map (LUM) from the Land Use Carbon Analysis System (MfE 2008; Dymond et al. 2012); and EcoSat Forests (Shepherd et al. 2002). Indigenous forest classes from EcoSat Forests were combined with classes from LCDB2 to form basic ecosystems classes. Where indigenous forest was mapped by LCDB2, the type of forest was determined from the EcoSat Forests layer. The eight forest types of EcoSat Forests were reduced to three basic types: beech forest; podocarp-broadleaved forest; and mixed beech and podocarp-broadleaved forest. To produce a recent 2008 layer the LUM was used to update indigenous and exotic forest changes since 2002. The mapping was performed using 15 m pixels, which is equivalent to a mapping scale of approximately 1:50 000. - -#Threatened Environments Classification 2012 -Cieraad E, Walker S, Price R, Barringer J. 2015. An updated assessment of indigenous cover remaining and legal protection in New Zealand’s land environments. New Zealand Journal of Ecology 39(2) - downloadable from newzealandecology.org/nzje/3235.pdf . - -register in LRIS portal -create download - -```sh -mkdir -p $GISDATA/vegetation/LRIS-New-Zealand -cd $GISDATA/vegetation/LRIS-New-Zealand - -mv ~/Downloads/lris-*.zip $GISDATA/vegetation/LRIS-New-Zealand -unzip lris-vegetative-cover-map-of-new-zealand-SHP.zip - - -mv ~/Downloads/tec2012*csv $GISDATA/vegetation/LRIS-New-Zealand -``` diff --git a/doc/vegetation-to-do/vegetation-maps-Argentina.md b/doc/vegetation-to-do/vegetation-maps-Argentina.md deleted file mode 100644 index fd2ff28..0000000 --- a/doc/vegetation-to-do/vegetation-maps-Argentina.md +++ /dev/null @@ -1,53 +0,0 @@ -# Base de Datos Geoespacial Institucional del Instituto Geográfico Nacional de la República Argentina - -> Datos extraídos de la Base de Datos Institucional del Instituto Geográfico Nacional (IDEIGN02) y convertidos en archivos shapefile. - -#### Data access -https://www.ign.gob.ar/NuestrasActividades/InformacionGeoespacial/CapasSIG - -Under category "Vegetación natural y de cultivo" there are several layers: Cultivo, Sin vegetación, Vegetación arbórea, Vegetación arbustiva, Vegetación herbacea, Vegetación hidrófila - -http://ramsac.ign.gob.ar/operaciones_sig/shp_from_geoserver/download.php?f=c2hwOjp2ZWdldGFjaW9uX2FyYm9yZWEuemlw - -Download: - -```sh -mkdir -p $GISDATA/vegetation/Argentina -cd $GISDATA/vegetation/Argentina - -for arch in cultivo sin_vegetacion vegetacion_arborea vegetacion_arbustiva vegetacion_herbacea_EB010 vegetacion_hidrofila_ED020 -do - mv ~/Downloads/$arch.zip $GISDATA/vegetation/Argentina/ -done -``` - -Import in postgis -```sh - -psql gisdata -c "CREATE SCHEMA ignra" - - cd $WORKDIR - -for arch in vegetacion_herbacea_EB010 vegetacion_hidrofila_ED020 -do - unzip $GISDATA/vegetation/Argentina/$arch.zip - ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=ignra -nlt PROMOTE_TO_MULTI $arch.shp - rm $arch.* -done - -for arch in cultivo sin_vegetacion vegetacion_arborea vegetacion_arbustiva -do - unzip $GISDATA/vegetation/Argentina/$arch.zip - for ziparch in $(ls shp/*zip) - do - unzip $ziparch - ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=ignra -nlt PROMOTE_TO_MULTI $(basename $ziparch | sed s/.zip/.shp/) - done - rm -r * -done - -psql gisdata -c "SELECT objeto,count(*) AS n FROM ignra.vegetacion_arbustiva_eb015 GROUP BY objeto" -psql gisdata -c"SELECT count(*) FROM ignra.vegetacion_arbustiva_eb015 WHERE objeto IN ('Estepa Arbustiva','Etapa arbustiva','Estepa arbustiva')" -psql gisdata -c "SELECT objeto,count(*) AS n FROM ignra.vegetacion_arbustiva_eb020 GROUP BY objeto" - -``` From 78e4091358d29a434446f46b4fa42b17785d18a2 Mon Sep 17 00:00:00 2001 From: jrfep Date: Sun, 16 Apr 2023 16:06:06 +1000 Subject: [PATCH 21/23] Add title and descriptions in front matter --- docusite/docs/admin/regional/IGVSB.mdx | 55 ++++++++++++++++++ docusite/docs/admin/regional/_category_.json | 8 +++ .../global/GRIP-road-database.md | 12 +++- docusite/docs/climate/global/Terraclimate.md | 14 ++++- docusite/docs/forest/global/GFC.md | 14 ++++- .../forest/global/global-forest-management.md | 22 +++++++- docusite/docs/hello.md | 4 +- docusite/docs/protected/global/WDPA.md | 56 ++++++++++++++++--- 8 files changed, 166 insertions(+), 19 deletions(-) create mode 100644 docusite/docs/admin/regional/IGVSB.mdx create mode 100644 docusite/docs/admin/regional/_category_.json diff --git a/docusite/docs/admin/regional/IGVSB.mdx b/docusite/docs/admin/regional/IGVSB.mdx new file mode 100644 index 0000000..fe29303 --- /dev/null +++ b/docusite/docs/admin/regional/IGVSB.mdx @@ -0,0 +1,55 @@ +--- +title: "IGVSB" +description: "Instituto Geográfico de Venezuela Simón Bolívar" +tags: [deforestation,Venezuela,wget,OGR] +--- + +The IGVSB is the [national cartography agency](https://es.wikipedia.org/wiki/Instituto_Geogr%C3%A1fico_de_Venezuela_Sim%C3%B3n_Bol%C3%ADvar) of Venezuela. + +## Links +- http://igvsb.gob.ve/ +- http://igvsb.gob.ve/servicio/7 + +## Data access +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +export INPUTDIR=admin/regional/Limites_Estados_VE_IGVSB +mkdir -p $GISDATA/$INPUTDIR/ +cd $GISDATA/$INPUTDIR/ + +wget --continue http://igvsb.gob.ve/adminigvsb/archivos/servicios/7/servicedoc_220630070131.zip +``` + +### Legacy versions + +We have old versions of this data, it was shared by colleagues in Venezuela but the data lineage is not completely known. + +- `estados-geo-WGS84` + +## Data preparation + +In Katana we need to load the appropriate modules + +```sh title="Load modules for Katana" +module add gdal +``` + +Prepare data for use in GIS using `ogr2ogr` with option `-makevalid` and change layer type to MULTIPOLYGON +```sh +ogrinfo $GISDATA/$INPUTDIR/estados-geo-WGS84.shp -geom=no -al +ogr2ogr $WORKDIR/Venezuela-IGVSB.gpkg -makevalid $GISDATA/$INPUTDIR/estados-geo-WGS84.shp -nlt MULTIPOLYGON +``` + +```sh +cd $WORKDIR +unzip -u $GISDATA/$INPUTDIR/servicedoc_220630070131.zip +ogrinfo ba_4189_dpt_estadal_de_venezuela_250000_20150707.shp -al -geom=no +``` + +Fields in the attributes table seem to have different encondings. + + + +## This dataset is used for... + +- Deforestation analysis in Venezuela [GitHub repo](https://github.com/NeoMapas/datos-deforestacion-venezuela) \ No newline at end of file diff --git a/docusite/docs/admin/regional/_category_.json b/docusite/docs/admin/regional/_category_.json new file mode 100644 index 0000000..3055169 --- /dev/null +++ b/docusite/docs/admin/regional/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "regional", + "link": { + "type": "generated-index", + "description": + "Just in case you are wondering: _admin_ stands for administrative boundaries. Country or regional layers here." + } +} diff --git a/docusite/docs/anthroposphere/global/GRIP-road-database.md b/docusite/docs/anthroposphere/global/GRIP-road-database.md index 2018a66..6519413 100644 --- a/docusite/docs/anthroposphere/global/GRIP-road-database.md +++ b/docusite/docs/anthroposphere/global/GRIP-road-database.md @@ -1,10 +1,16 @@ -# GRIP global roads database +--- +title: "GRIP-roads" +description: "GRIP global roads database" +tags: [Deforestation] +--- -https://www.globio.info/download-grip-dataset +## Links +-- https://www.globio.info/download-grip-dataset + +## Data access and download ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh - mkdir -p $GISDATA/antroposphere/global/GRIP-roads cd $GISDATA/antroposphere/global/GRIP-roads diff --git a/docusite/docs/climate/global/Terraclimate.md b/docusite/docs/climate/global/Terraclimate.md index 13224db..1422564 100644 --- a/docusite/docs/climate/global/Terraclimate.md +++ b/docusite/docs/climate/global/Terraclimate.md @@ -1,6 +1,10 @@ -# Terraclimate +--- +title: "Terraclimate" +description: "Monthly climate and climatic water balance (1958-2019)" +tags: [deforestation,Venezuela,wget] +--- -TerraClimate is a dataset of monthly climate and climatic water balance for global terrestrial surfaces from 1958-2019. All data have monthly temporal resolution and a ~4-km (1/24th degree) spatial resolution. +> TerraClimate is a dataset of monthly climate and climatic water balance for global terrestrial surfaces from 1958-2019. All data have monthly temporal resolution and a ~4-km (1/24th degree) spatial resolution. ## Citation @@ -60,3 +64,9 @@ do done ``` +## This dataset is used for... + +### Deforestation analysis in Venezuela + +[GitHub repo](https://github.com/NeoMapas/datos-deforestacion-venezuela) + diff --git a/docusite/docs/forest/global/GFC.md b/docusite/docs/forest/global/GFC.md index eb01e1a..fd7cba8 100644 --- a/docusite/docs/forest/global/GFC.md +++ b/docusite/docs/forest/global/GFC.md @@ -1,6 +1,12 @@ -# Global Forest Change +--- +title: "GFC" +description: "Global Forest Change" +tags: [deforestation,Venezuela,wget,VRT] +--- -## Reference +High-Resolution Global Maps of 21st-Century Forest Cover Change + +## Citation > Hansen, M. C., P. V. Potapov, R. Moore, M. Hancher, S. A. Turubanova, A. Tyukavina, D. Thau, S. V. Stehman, S. J. Goetz, T. R. Loveland, A. Kommareddy, A. Egorov, L. Chini, C. O. Justice, and J. R. G. Townshend. 2013. *High-Resolution Global Maps of 21st-Century Forest Cover Change.* **Science** 342 (15 November): 850–53. [Data available on-line](http://earthenginepartners.appspot.com/science-2013-global-forest). @@ -103,3 +109,7 @@ export VAR=treecover2000 gdalwarp -tr 0.001475 0.001475 -srcnodata "0" -dstnodata "0" -tap -r average $GISDATA/sensores/Landsat/index_${VRS}_${VAR}.vrt ${VRS}.world.${VAR}_500m.tif ``` + +## This dataset is used for... + +- Deforestation analysis in Venezuela [GitHub repo](https://github.com/NeoMapas/datos-deforestacion-venezuela) \ No newline at end of file diff --git a/docusite/docs/forest/global/global-forest-management.md b/docusite/docs/forest/global/global-forest-management.md index dd6dc1a..fbfb423 100644 --- a/docusite/docs/forest/global/global-forest-management.md +++ b/docusite/docs/forest/global/global-forest-management.md @@ -1,4 +1,13 @@ -# Global forest management data at a 100m resolution for the year 2015 +--- +title: "FML" +description: "Global forest management data, 100m, (2015)" +tags: [deforestation,Venezuela,wget,OGR,python,zenodo] +--- + + +Global forest management data at a 100m resolution for the year 2015 + +## Citation > Myroslava Lesiv, Dmitry Schepaschenko, Marcel Buchhorn, Linda See, Martina Dürauer, Ivelina Georgieva, Martin Jung, Florian Hofhansl, Katharina Schulze, Andrii Bilous, Volodymyr Blyshchyk, Liudmila Mukhortova, Carlos Luis Muñoz Brenes, Leonid Krivobokov, Stephan Ntie, Khongor Tsogt, Stephan Alexander Pietsch, Elena Tikhonova, Moonil Kim, … Steffen Fritz. (2021). Global forest management data at a 100m resolution for the year 2015 [Data set]. In Nature Scientific Data (Version 3). Zenodo. https://doi.org/10.5281/zenodo.5879022 @@ -8,10 +17,17 @@ mkdir -p $GISDATA/forest/global/forest-management cd $GISDATA/forest/global/forest-management wget --continue 'https://zenodo.org/record/5879022/files/FML_v3-2_with-colorbar.tif?download=1' --output-document=FML_v3-2_with-colorbar.tif +``` + +### Download from Zenodo -## or better download whole package with: +Or better, use the [zenodo_get](https://gitlab.com/dvolgyes/zenodo_get) python tool to download the whole repo: +```sh source $HOME/.venvs/GIS-python/bin/activate python -m zenodo_get 10.5281/zenodo.5879022 -m -e -k - ``` + +## This dataset is used for... + +- Deforestation analysis in Venezuela [GitHub repo](https://github.com/NeoMapas/datos-deforestacion-venezuela) \ No newline at end of file diff --git a/docusite/docs/hello.md b/docusite/docs/hello.md index 8844170..2f4fd7b 100644 --- a/docusite/docs/hello.md +++ b/docusite/docs/hello.md @@ -40,5 +40,5 @@ For some computations we use the computational cluster Katana supported by Resea Please check [Katana User’s documentation](https://unsw-restech.github.io/index.html). -## Footnotes -[^1]: Ok, just Venezuela for now, but it could be replicated elsewhere... \ No newline at end of file +[^1]: Ok, just Venezuela for now, but it could be replicated elsewhere... + diff --git a/docusite/docs/protected/global/WDPA.md b/docusite/docs/protected/global/WDPA.md index 753fd15..72db9cd 100644 --- a/docusite/docs/protected/global/WDPA.md +++ b/docusite/docs/protected/global/WDPA.md @@ -1,19 +1,28 @@ -# World database on Protected Areas +--- +title: "WDPA" +description: "World database on Protected Areas" +tags: [deforestation,Venezuela,wget,IUCN Knowledge products, GDB] +--- + -## About The World Database on Protected Areas (WDPA) is the most comprehensive global database of marine and terrestrial protected areas, updated on a monthly basis. -[Documentation](http://pp-import-production.s3.amazonaws.com/WDPA_Manual_1_5.pdf) + +## Links + +- https://www.protectedplanet.net +- [Documentation](http://pp-import-production.s3.amazonaws.com/WDPA_Manual_1_5.pdf) -### Reference +## Reference > UNEP-WCMC and IUCN (2021), Protected Planet: The World Database on Protected Areas (WDPA) [Online], March 2021, Cambridge, UK: UNEP-WCMC and IUCN. Available at: www.protectedplanet.net. -### data: +> UUNEP-WCMC and IUCN (2023), Protected Planet: The World Database on Protected Areas (WDPA) and World Database on Other Effective Area-based Conservation Measures (WD-OECM) [Online], February 2023, Cambridge, UK: UNEP-WCMC and IUCN. Available at: www.protectedplanet.net. +## Data access -Data downloaded in gdb format from https://www.protectedplanet.net +From https://www.protectedplanet.net/ there are several options to download datasets -Regular updates: +### Global data ```sh source ~/proyectos/UNSW/cesdata/env/project-env.sh @@ -28,3 +37,36 @@ wget -b --continue https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_Apr2021_Pu ## wget -b --continue https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_Mar2021_Public.zip ``` + +### Example for one country + + +Usamos `ogr2ogr` y `ogrmerge.py` para preparar una capa con toda la información de WDPA + +```sh +INPUTDIR=protected/global/WDPA/ +mkdir -p $WORKDIR/WDPA +unzip -d $WORKDIR/WDPA $GISDATA/$INPUTDIR/WDPA_WDOECM_Feb2023_Public_VEN_shp.zip +cd $WORKDIR/WDPA +for k in 0 1 2 +do + unzip -u WDPA_WDOECM_Feb2023_Public_VEN_shp_${k}.zip + ogr2ogr WDPA_polygons_${k}.gpkg WDPA_WDOECM_Feb2023_Public_VEN_shp-polygons.shp -nlt MULTIPOLYGON + rm *WDPA_WDOECM_Feb2023_Public_VEN_shp-polygons* +done + +ogrmerge.py -o $WORKDIR/WDPA-Venezuela.gpkg $WORKDIR/WDPA/WDPA_polygons_0.gpkg $WORKDIR/WDPA/WDPA_polygons_1.gpkg $WORKDIR/WDPA/WDPA_polygons_2.gpkg -single + +## update the entry for Caura +ogrinfo $WORKDIR/WDPA-Venezuela.gpkg -update -sql "UPDATE merged SET STATUS_YR=2015 WHERE IUCN_CAT='II' AND STATUS_YR=1968" + + ``` + +## This dataset is used for... + +### Deforestation analysis in Venezuela + +[GitHub repo](https://github.com/NeoMapas/datos-deforestacion-venezuela) + + + From 3ced222e689e7fd3d3152ee4a590f88e9b09e4a2 Mon Sep 17 00:00:00 2001 From: jrfep Date: Sun, 16 Apr 2023 16:06:28 +1000 Subject: [PATCH 22/23] keep drafts in drafts folder --- drafts/2023-01-11-RLE-Africa.md | 14 ++ drafts/2023-02-14-Gran-Sabana-GIS.md | 10 ++ drafts/anthroposphere/to-do/human-impact.md | 13 ++ .../VIIRS-Snow-Cover-Products.md | 60 +++++++ drafts/landcover-to-do/GeoWiki.md | 20 +++ .../Gridded-Landcover-Classification.md | 14 ++ .../landcover-to-do/LBA-ECO-landcover-SAM.md | 37 +++++ drafts/landcover-to-do/LandCover-CCI-CRDP.md | 120 ++++++++++++++ drafts/landcover-to-do/USGS-EROS-landcover.md | 46 ++++++ drafts/test.mdx | 14 ++ drafts/to-do/AVHRR_NDVI.md | 131 +++++++++++++++ drafts/to-do/AVHRR_VCF.sh | 33 ++++ drafts/to-do/Global-Forest-Change.md | 121 ++++++++++++++ drafts/to-do/Modis_NDVI.R | 81 ++++++++++ drafts/to-do/UN-map.md | 3 + drafts/to-do/VIPPHEN-NDVI-v004.md | 65 ++++++++ drafts/to-do/World-Heritage-Sites.md | 2 + .../EU-plus-habitats.md | 53 ++++++ .../Ecological-Land-Units.md | 152 ++++++++++++++++++ .../ecological-classifications/GLOBES-1km.md | 15 ++ .../IUCN-Hanitat-TS-2020.md | 36 +++++ .../Ecosystems-indicative-distribution.md | 64 ++++++++ .../vegetation-to-do/China-vegetation-map.md | 32 ++++ .../vegetation-to-do/HEaP-United-Kingdom.md | 9 ++ .../LRIS-vegetation-ecosystems-New-Zealand.md | 25 +++ .../vegetation-maps-Argentina.md | 53 ++++++ 26 files changed, 1223 insertions(+) create mode 100644 drafts/2023-01-11-RLE-Africa.md create mode 100644 drafts/2023-02-14-Gran-Sabana-GIS.md create mode 100644 drafts/anthroposphere/to-do/human-impact.md create mode 100644 drafts/cryosphere-to-do/VIIRS-Snow-Cover-Products.md create mode 100644 drafts/landcover-to-do/GeoWiki.md create mode 100644 drafts/landcover-to-do/Gridded-Landcover-Classification.md create mode 100644 drafts/landcover-to-do/LBA-ECO-landcover-SAM.md create mode 100644 drafts/landcover-to-do/LandCover-CCI-CRDP.md create mode 100644 drafts/landcover-to-do/USGS-EROS-landcover.md create mode 100644 drafts/test.mdx create mode 100644 drafts/to-do/AVHRR_NDVI.md create mode 100644 drafts/to-do/AVHRR_VCF.sh create mode 100644 drafts/to-do/Global-Forest-Change.md create mode 100644 drafts/to-do/Modis_NDVI.R create mode 100644 drafts/to-do/UN-map.md create mode 100644 drafts/to-do/VIPPHEN-NDVI-v004.md create mode 100644 drafts/to-do/World-Heritage-Sites.md create mode 100644 drafts/to-do/ecological-classifications/EU-plus-habitats.md create mode 100644 drafts/to-do/ecological-classifications/Ecological-Land-Units.md create mode 100644 drafts/to-do/ecological-classifications/GLOBES-1km.md create mode 100644 drafts/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md create mode 100644 drafts/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md create mode 100644 drafts/vegetation-to-do/China-vegetation-map.md create mode 100644 drafts/vegetation-to-do/HEaP-United-Kingdom.md create mode 100644 drafts/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md create mode 100644 drafts/vegetation-to-do/vegetation-maps-Argentina.md diff --git a/drafts/2023-01-11-RLE-Africa.md b/drafts/2023-01-11-RLE-Africa.md new file mode 100644 index 0000000..88893a7 --- /dev/null +++ b/drafts/2023-01-11-RLE-Africa.md @@ -0,0 +1,14 @@ +--- +slug: RLE-Africa +title: Red List of Ecosystems in Africa +authors: [jrfep] +tags: [IUCN-RLE,IUCN-GET,Africa,OSF] +--- + +Something about the RLE in Africa + +Pre-print: DOI: [10.31730/osf.io/62s5e](https://doi.org/10.31730/osf.io/62s5e) + +Code in GitHub: + +OSF: \ No newline at end of file diff --git a/drafts/2023-02-14-Gran-Sabana-GIS.md b/drafts/2023-02-14-Gran-Sabana-GIS.md new file mode 100644 index 0000000..8e48e92 --- /dev/null +++ b/drafts/2023-02-14-Gran-Sabana-GIS.md @@ -0,0 +1,10 @@ +--- +slug: gran-sabana-GIS +title: GIS data for the Gran Sabana in Venezuela +authors: [jrfep,adasanchez] +tags: [Camera-trap monitoring,Venezuela] +--- + +Something about the Gran Sabana + +https://github.com/NeoMapas/datos-deforestacion-venezuelas \ No newline at end of file diff --git a/drafts/anthroposphere/to-do/human-impact.md b/drafts/anthroposphere/to-do/human-impact.md new file mode 100644 index 0000000..a3ed0fc --- /dev/null +++ b/drafts/anthroposphere/to-do/human-impact.md @@ -0,0 +1,13 @@ +Include Here: + +global: +- Aqueduct +- CFW +- GHM2019 +- GLW3 +- Halpern2015 +- HFP +- Modified Habitat 2020 + +regional: +- RAISG diff --git a/drafts/cryosphere-to-do/VIIRS-Snow-Cover-Products.md b/drafts/cryosphere-to-do/VIIRS-Snow-Cover-Products.md new file mode 100644 index 0000000..0d4cde8 --- /dev/null +++ b/drafts/cryosphere-to-do/VIIRS-Snow-Cover-Products.md @@ -0,0 +1,60 @@ +# VIIRS snow products + +[User guide](https://nsidc.org/sites/nsidc.org/files/technical-references/VIIRS_snow_products_user_guide_version_8.pdf) + +We select the *cloud-gap-filled (CGF) snow cover product* + +## VIIRS/NPP CGF Snow Cover Daily L3 Global 375m SIN Grid, Version 1 +> This data set contains daily 'cloud-free' snow cover produced from the VIIRS/NPP Snow Cover Daily L3 Global 375m SIN Grid, Version 1 snow cover product. A cloud-gap-filled algorithm is utilized to replace ‘cloud-covered’ pixels with ‘cloud-free pixels’ for the purpose of estimating the snow cover that may exist under current cloud cover. The data are provided daily and mapped to a 375 m sinusoidal grid. + + +https://nsidc.org/data/VNP10A1F/versions/1 + +### Citation +our Use and Copyright Web page. + +> Riggs, G., D. K. Hall, and M. O. Román. 2019. VIIRS/NPP CGF Snow Cover Daily L3 Global 375m SIN Grid, Version 1. [Indicate subset used]. Boulder, Colorado USA. NASA National Snow and Ice Data Center Distributed Active Archive Center. doi: https://doi.org/10.5067/VIIRS/VNP10A1F.001. [Date Accessed]. + +### Data download +Use the "download script" button to get the python script and place it in the target folder. Add login details for earthdata in ~/.netrc as follow: `machine urs.earthdata.nasa.gov login ***** password *****` + +Running the original script `python nsidc-download_VNP10A1.001_2019-11-26.py` returns 929791 matches nearly 3TB of data ! for all tiles, but if we select a bounding box: bounding_box = '92,25,99,29', only 2859 matches and 5718 files.... ca. 30 GB + +So we do a manual edit to add bounding box, start and end dates, filename match, etc... + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh + + +mkdir -p $GISDATA/cryosphere/global/VIIRS-VNP10A1F/ +cd $GISDATA/cryosphere/global/VIIRS-VNP10A1F/ +## scp nsidc-download_VNP10A1F.001_2021-05-28.py $zID@kdm.restech.unsw.edu.au:/srv/scratch/cesdata/gisdata/cryosphere/global/VIIRS-VNP10A1F + + sed -e "s/bounding_box = ''/bounding_box = 'MI_BBOX'/" -e "s/filename_filter = ''/filename_filter = 'MI_WEEK'/" -i nsidc-download_VNP10A1F.001_2021-05-28.py + +``` + + + +```sh +## example for Myanmar # projection not yet working fine, these are daily products, thus more cumbersome to summarize +mkdir -p ~/tmp/alpine/Myanmar/VNP10A1 +cd ~/tmp/alpine/Myanmar/VNP10A1 + +for k in $(ls $GISDATA/sensores/VIIRS/VNP10A1/*h26v06*h5) +do + ##take a look at gdalinfo $k + ## GRingLatitude=19.936034 30.043859 29.999359 19.893507 + ## GRingLongitude=84.829601 92.054376 103.93619 95.76852 + for BAND in NDSI_Snow_Cover Basic_QA + do + export j=$(basename $k | sed -e s/.h5$/.tif/ -e s/VNP10A1/${BAND}/) + + gdal_translate -ot Byte -of Gtiff -gcp 0 0 84.829601 19.936034 -gcp 0 3000 92.054376 30.043859 -gcp 3000 3000 103.93619 29.999359 -gcp 3000 0 95.76852 19.893507 HDF5:"${k}"://HDFEOS/GRIDS/NPP_Grid_IMG_2D/Data_Fields/${BAND} test.tif + gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te 96 25 99 29 -t_srs EPSG:4326 test.tif ${j} + rm test.tif + done +done + +##gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te 96 25 99 29 -s_srs "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs" -t_srs EPSG:4326 HDF5:"${k}"://HDFEOS/GRIDS/NPP_Grid_IMG_2D/Data_Fields/${BAND} ${j} +``` diff --git a/drafts/landcover-to-do/GeoWiki.md b/drafts/landcover-to-do/GeoWiki.md new file mode 100644 index 0000000..36aae69 --- /dev/null +++ b/drafts/landcover-to-do/GeoWiki.md @@ -0,0 +1,20 @@ + + + +```r +tst <- read.table("~/tmp/T1.2-tropical-dry-forest/GlobalCrowd.tab",skip=33,header=T,sep="\t") +head(tst) +table(tst$LCC..Land.Cover.1..1...tree.cover.....) + +plot(Latitude~Longitude,tst,col=LCC..Land.Cover.1..1...tree.cover.....,pch=".") + points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 8),pch=1,cex=.5) + points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 8),pch=19,col="cyan",cex=.5) # some strange snow points in unexpected areas + + +summary(tst$Conf..Confidence.Land.Cover..0...su....) +plot(Latitude~Longitude,subset(tst,!is.na(Conf)),col=LCC..Land.Cover.1..1...tree.cover.....,pch=".") + points(Latitude~Longitude,subset(tst,!is.na(Conf..Confidence.Land.Cover..0...su....) & Conf..Confidence.Land.Cover..0...su.... == 0 & LCC..Land.Cover.1..1...tree.cover..... %in% 8),pch=19,col="cyan",cex=.5) # still strange snow points in unexpected areas + +points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 1),pch=19,col="green",cex=.5) +points(Latitude~Longitude,subset(tst,LCC..Land.Cover.1..1...tree.cover..... %in% 3),pch=19,col="orange",cex=.5) +``` diff --git a/drafts/landcover-to-do/Gridded-Landcover-Classification.md b/drafts/landcover-to-do/Gridded-Landcover-Classification.md new file mode 100644 index 0000000..8f11f4e --- /dev/null +++ b/drafts/landcover-to-do/Gridded-Landcover-Classification.md @@ -0,0 +1,14 @@ +# Gridded-Landcover-Classification + +https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover + + +```sh +source ~/proyectos/UNSW/cesdata/env/project-env.sh +mkdir -p $GISDATA/landcover/global/Copernicus-Gridded-Landcover +cd $GISDATA/landcover/global/Copernicus-Gridded-Landcover + +wget --continue https://download-0000.copernicus-climate.eu/cache-compute-0000/cache/data1/dataset-satellite-land-cover-27e96432-1999-4965-83c5-d07b0a66e371.tar.gz + +tar -xzvf $GISDATA/landcover/Copernicus-Gridded-Landcover/dataset-satellite-land-cover-27e96432-1999-4965-83c5-d07b0a66e371.tar.gz +``` diff --git a/drafts/landcover-to-do/LBA-ECO-landcover-SAM.md b/drafts/landcover-to-do/LBA-ECO-landcover-SAM.md new file mode 100644 index 0000000..0d8524f --- /dev/null +++ b/drafts/landcover-to-do/LBA-ECO-landcover-SAM.md @@ -0,0 +1,37 @@ +# LBA-ECO LC-08 Soil, Vegetation, and Land Cover Maps for Brazil and South America + +https://daac.ornl.gov/LBA/guides/LC08_EOS_Maps.html + +> This data set provides (1) soil maps for Brazil that are digital versions of the MAPA DE SOLOS DO BRASIL (EMBRAPA, 1981) classified at three levels of detail, 19-class, 70-class and 249-class; (2) vegetation maps for Brazil that are digital versions of the MAPA DE VEGETACAO DO BRASIL (IBGE, 1988) classified at three levels of detail, 13-class, 59-class, and an overprint (combination) class; and (3) a land cover map for all of South America that was derived from National Oceanic and Atmospheric Administration (NOAA) Advanced Very High Resolution Radiometer (AVHRR) data over the time period 1987 through 1991 (Stone et al., 1994). + +> The seven soil, vegetation, and general land cover classification maps are provided as GeoTIFF files (.tif) files. There are also three companion files (.pdf), one each, for the soil, vegetation, and land cover maps, with information on map units, class values, codes, and descriptions. + +Cite this data set as follows: + +> Bliss, N. 2013. LBA-ECO LC-08 Soil, Vegetation, and Land Cover Maps for Brazil and South America. Data set. Available on-line (http://daac.ornl.gov) from Oak Ridge National Laboratory Distributed Active Archive Center, Oak Ridge, Tennessee, U.S.A. http://dx.doi.org/10.3334/ORNLDAAC/1155 + +Soils Maps: + +The soil maps of Brazil are digital versions of the MAPA DE SOLOS DO BRASIL (EMBRAPA, 1981), digitized at the U.S. Geological Survey's EROS Data Center, Sioux Falls, South Dakota, in 1992. + +These data were acquired from the Woods Hole Research Center and modified for incorporation in the University of New Hampshire (UNH) EOS-WEBSTER system. The subset for the LBA study region was downloaded from EOS-WEBSTER. + +The files were processed with ArcInfo, and based on the Woods Hole Full Soil Map Unit Classifications. There are three soil maps available as three different classes: one 19-class, one 70-class, and one 249, detailed class. Refer to the companion file Brazil_Soils_Map_class_aux.pdf for the class value codes and names. + +Vegetation Maps: + +The vegetation maps of Brazil are digital versions of the MAPA DE VEGETACAO DO BRASIL (IBGE, 1988), digitized at the U.S. Geological Survey's EROS Data Center, Sioux Falls, South Dakota, in 1992. These data were acquired from the Woods Hole Research Center. + +Data are generalizations of the major vegetation classes. Generalized classes were determined from the original subheadings on the original published map. + +Overprint classes are used to define areas which are best described by a combination of two classes, one from the major classification and the other from the overprint classification. Overprint classes were originally displayed with special symbols printed over major classification shades on the original map. For instance, a series of stipple marks or hash marks were printed on top of major class shades to represent areas which had characteristics from the major classification as well as the overprint classification. The overprint classifications were also referred to as subclasses in the original data. + +The files were processed with ArcInfo, and based on the Woods Hole General Vegetation Classification. There are three vegetation maps available as three different classes: one 19-class, one 70-class, and one 249, detailed class. Refer to the companion file BrazilVegMap_class_aux.pdf for the class value codes and names. + +Land cover map: + +The land cover map of South America was produced from 1-15 km National Oceanic and Atmospheric Administration (NOAA) Advanced Very High Resolution Radiometer (AVHRR) data over the time period 1987 through 1991. The data were acquired from Woods Hole Research Center. + +The file was processed with ArcInfo and resulted in a 1-km resolution, 41-class, land cover map of South America. Refer to the companion file SA_lc_Map_41class_aux.pdf for the class values and names. + +> Stone, T.A., P. Schlesinger, G.M. Woodwell, and R.A. Houghton, 1994. A Map of the Vegetation of South America Based on Satellite Imagery. Photogrammetric Engineering and Remote Sensing. 60(5):541-551. diff --git a/drafts/landcover-to-do/LandCover-CCI-CRDP.md b/drafts/landcover-to-do/LandCover-CCI-CRDP.md new file mode 100644 index 0000000..0b9c81f --- /dev/null +++ b/drafts/landcover-to-do/LandCover-CCI-CRDP.md @@ -0,0 +1,120 @@ +# Climate Change Initiative - Climate Research Data Package (CRDP) + +Data documentation and download from (access through a simple user information form) +http://maps.elie.ucl.ac.be/CCI/viewer/download.php +and from (user registration with validated e-mail) +https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview + +## Set up a path for a data directory: + +```bash +mkdir -p $GISDATA/sensores/CCI-CRDP +cd $GISDATA/sensores/CCI-CRDP +``` + +## Land Cover Maps - v2.1.1 + +Global land cover maps at 300 m spatial resolution, on an annual basis from 2016 to 2018, consistent with the series of global annual LC maps from 1992 to 2015 produced by the European Space Agency (ESA) Climate Change Initiative (CCI). + +The maps (2016 - 2018) in the netcdf format are available for download through the [Copernicus Climate Change Service (C3S) Climate Data Store (CDS)](https://cds.climate.copernicus.eu/cdsapp#!/dataset/satellite-land-cover?tab=overview). C3S is implemented by the European Centre for Medium-Range Weather Forecasts (ECMWF) on behalf of the European Commission. + +download using user account. Download with browser +```sh +mv ~/Downloads/dataset-satellite-land-cover-be49b1ff-7d17-41f5-9e92-677789bc214b.tar.gz $GISDATA/sensores/CCI-CRDP + +``` + +The maps can be transformed to the GeoTiff format using GDAL as follows, replacing Year, Band_Name and Output_Filename with the parameters of interest: +```sh +cd $WORKDIR +tar -xzvf $GISDATA/sensores/CCI-CRDP/dataset-satellite-land-cover-be49b1ff-7d17-41f5-9e92-677789bc214b.tar.gz + + +``` + +```sh +export YEAR=2018 +export BAND=lccs_class +gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -tr 0.002777777777778 0.002777777777778 -t_srs EPSG:4326 NETCDF:C3S-LC-L4-LCCS-Map-300m-P1Y-${YEAR}-v2.1.1.nc:${BAND} CCI-LC-${YEAR}-${BAND}.tif +``` +with Year the year : 2016, 2017 or 2018; and BandName one of the following: lccs_class; processed_flag; current_pixel_state; observation_count; change_count. + +Example code translating the 2017 LC map from netCDF to GeoTiff: + +gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -tr 0.002777777777778 0.002777777777778 -t_srs EPSG:4326 NETCDF:C3S-LC-L4-LCCS-Map-300m-P1Y-2017-v2.1.1.nc:lccs_class C3S-LC-L4-LCCS-Map-300m-P1Y-2017-v2.1.1.tif + +## Land Cover Maps - v2.0.7 + +### Documentation +Each pixel value corresponds to the label of a land cover class defined based on the UN Land Cover Classification System (LCCS). LCCS classifiers support the further conversion into Plant Functional Types distribution required by the Earth System Models. The typology counts 22 classes. + +The 24 LC maps series is delivered along with 4 quality flags which document the products: + +qualityflag1 pixel has been processed or not, +qualityflag2 pixel status as defined by the pre-processing, +qualityflag3 number of valid observations available to derive the classification, +qualityflag4 number of land cover changes detected over the 24 years. +These 4 quality flags document the full time series and are not year specific. + +These maps are derived from a unique baseline LC map which is generated thanks to a classification chain applied on the entire MERIS FR and RR archive from 2003 to 2012. + +Independently from this baseline, LC changes are detected at 1 km based on a time series of annual global classifications generated from AVHRR HRPT (1992 - 1999), SPOT-Vegetation (1999 - 2012) and PROBA-V (2013 - 2015). Systematic analysis of the temporal trajectory of each pixel allowed depicting the major changes for a simplified land cover typology matching the IPCC classes. These classes are: cropland, forest, grassland, wetlands, settlements and other lands; the latter class being further split into shrubland, sparse vegetation, bare area and water. + +When MERIS FR or PROBA-V time series are available, the changes detected at 1km are re-mapped at 300 meters. The last step consists in back- and up-dating the 10-year baseline LC map to produce the 24 annual LC maps from 1992 to 2015. + +The ESACCI-LC for Sen2Cor data package is prepared for users of Sen2Cor version ≥ 2.5 who wants to benefit from the last improvements of Sen2Cor Cloud Screening and Classification module. This auxiliary data information is used in Sen2Cor to improve the accuracy of Sen2Cor classification over water, urban and bare areas and also to have a better handling of false detection of snow pixels. The user of Sen2Cor version ≥ 2.5 should download and extract the zip file at this location of Sen2Cor installation: $SEN2COR_BIN/aux_data. +### Data download + +LC maps full 1992-2015 series, 1 netcdf file, 24 bands, zip compression - 55.8Go: + +wget ftp://geo10.elie.ucl.ac.be/v207/ESACCI-LC-L4-LCCS-Map-300m-P1Y-1992_2015-v2.0.7b.nc.zip + +legend: +wget http://maps.elie.ucl.ac.be/CCI/viewer/download/ESACCI-LC-Legend.csv +wget http://maps.elie.ucl.ac.be/CCI/viewer/download/ESACCI-LCMapsColorLegend.qml + +## Water Bodies - v4.0 +The CCI WB v4.0 is composed of two layers: + +1. A static map of open water bodies at 150 m spatial resolution resulting from a compilation and editions of land/water classifications: the Envisat ASAR water bodies indicator, a sub-dataset from the Global Forest Change 2000 - 2012 and the Global Inland Water product. + +This product is delivered at 150 m as a stand-alone product but it is consistant with class "Water Bodies" of the annual LC Maps. The product was resampled to 300 m using an average algorithm. Legend : 1-Land, 2-Water + +2. A static map with the distinction between ocean and inland water is now available at 150 m spatial resolution. It is fully consistent with the CCI WB-Map v4.0. Legend: 0-Ocean, 1-Land. + +To cite the CCI WB-Map v4.0, please refer to this reference. +### Data download +Water Bodies v4.0 (netcdf) - 127Mo +wget ftp://geo10.elie.ucl.ac.be/CCI/ESACCI-LC-L4-WB-Map-150m-P13Y-2000-v4.0.nc + +## Land Surface Seasonality products +On a per pixel basis, these climatological variables reflect, along the year, the average trajectory and the inter-annual variability of a land surface feature over the 1999-2012 period. They are built from existing long-term global datasets with high temporal frequency and moderate spatial resolution (500m-1km). They result from a compilation of 14 years of 7-day instantaneous observations into 1 temporarily aggregated profile depicting, along the year, the reference behaviour for the vegetation greenness, the snow and the BA at global scale. These products are referred to as condition products in the product user guide. + +User guide +wget http://maps.elie.ucl.ac.be/CCI/viewer/download/ESACCI-LC-QuickUserGuide-LS-Seasonality_August2014.pdf + +### Vegetation greenness +### Snow occurrence + +The snow product presents the frequency at which snow has been detected along the year, based on observations over the 2000-2012 period. Data originate from the MODIS/Terra Snow Cover 8d L3 Global 500m SIN Grid Product (MOD10A2). + +This seasonality product is composed of two series of 52 layers (1 per week): + +AggOcc proportion of snow occurrence as detected over the 2000-2012 period on a 7-day basis (ranging from 0 to 100). This describes the yearly reference dynamics of the snow coverage at a 7-day frequency, +NYearObs number of valid and cloud-free weekly composites contributing to each 7-day period of the AggOcc series. This is a quality indicator of the occurrence values. +Each layer has a spatial resolution of 500m and a LAT/LONG WGS84 projection. +Snow (netcdf, 7z) - 7.8Go + +```sh +wget --continue ftp://geo10.elie.ucl.ac.be/CCI/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-2000-2012-v2.0.nc.7z +cd $WORKDIR +7z x $GISDATA/sensores/CCI-CRDP/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-2000-2012-v2.0.nc.7z +gdalinfo snow-nc/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-20000716-v2.0.nc +export BAND=snow_occ +export WEEK=20000716 +gdalwarp -of Gtiff -co COMPRESS=LZW -co TILED=YES -ot Byte -te -180.0000000 -90.0000000 180.0000000 90.0000000 -t_srs EPSG:4326 NETCDF:snow-nc/ESACCI-LC-L4-Snow-Cond-500m-P13Y7D-${WEEK}-v2.0.nc:${BAND} Snow-Cond-${WEEK}-${BAND}.tif + +``` + + +### Burned areas occurrence diff --git a/drafts/landcover-to-do/USGS-EROS-landcover.md b/drafts/landcover-to-do/USGS-EROS-landcover.md new file mode 100644 index 0000000..d5bb40c --- /dev/null +++ b/drafts/landcover-to-do/USGS-EROS-landcover.md @@ -0,0 +1,46 @@ +# USGS EROS LandCover GLCCDB V2p0 class + +Land cover class from USGS EROS LandCover GLCCDB V2p0: Version 2.0. + +#### Citation +> Loveland, T.R., Reed, B.C., Brown, J.F., Ohlen, D.O., Zhu, J, Yang, L., and Merchant, J.W., 2000, Development of a Global Land Cover Characteristics Database and IGBP DISCover from 1-km AVHRR Data: International Journal of Remote Sensing, v. 21, no. 6/7, p. 1303-1330. + +#### Data access + +http://iridl.ldeo.columbia.edu/SOURCES/.USGS/.EROS/.LandCover/.GLCCDB/.V2p0/.class/datafiles.html + +#### Data download and preparation + +```sh +mkdir -p $GISDATA/landcover/USGS_EROS +cd $GISDATA/landcover/USGS_EROS +wget --continue http://iridl.ldeo.columbia.edu/SOURCES/.USGS/.EROS/.LandCover/.GLCCDB/.V2p0/.class/data.nc +``` + +|Key | description | matching EFG | comments | +|---|---|---|---| +|1.0 | Urban and Built-Up Land| T7.4 |- | +|2.0 | Dryland Cropland and Pasture| - |- | +|3.0 | Irrigated Cropland and Pasture| - |- | +|4.0 | Mixed Dryland/Irrigated Cropland and Pasture| - | not mapped? | +|5.0 | Cropland/Grassland Mosaic| - |- | +|6.0 | Cropland/Woodland Mosaic| - |- | +|7.0 | Grassland| - |- | +|8.0 | Shrubland| - |- | +|9.0 | Mixed Shrubland/Grassland| - |- | +|10.0 | Savanna| - |- | +|11.0 | Deciduous Broadleaf Forest| - |- | +|12.0 | Deciduous Needleleaf Forest| - |- | +|13.0 | Evergreen Broadleaf Forest| - |- | +|14.0 | Evergreen Needleleaf Forest| T2.1 |- | +|15.0 | Mixed Forest| - |- | +|16.0 | Water Bodies| - |- | +|17.0 | Herbaceous Wetland| - |- | +|18.0 | Wooded Wetland| - |- | +|19.0 | Barren or Sparsely Vegetated| - |- | +|20.0 | Herbaceous Tundra| T6.3 | not mapped? | +|21.0 | Wooded Tundra| T6.3? or T2.1? |- | +|22.0 | Mixed Tundra| T6.3 |- | +|23.0 | Bare Ground Tundra| T6.2,T6.3 |- | +|24.0 | Snow or Ice| T6.1 |- | +|100 | ?| - | not in legend | diff --git a/drafts/test.mdx b/drafts/test.mdx new file mode 100644 index 0000000..49af768 --- /dev/null +++ b/drafts/test.mdx @@ -0,0 +1,14 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + This is an apple 🍎 + + + This is an orange 🍊 + + + This is a banana 🍌 + + \ No newline at end of file diff --git a/drafts/to-do/AVHRR_NDVI.md b/drafts/to-do/AVHRR_NDVI.md new file mode 100644 index 0000000..4c803da --- /dev/null +++ b/drafts/to-do/AVHRR_NDVI.md @@ -0,0 +1,131 @@ +# GIMMS AVHRR Global NDVI 1/12-degree Geographic Lat/Lon + +Some resources: +http://phenology.cr.usgs.gov/ndvi_avhrr.php +http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/ +https://nex.nasa.gov/nex/projects/1349/ +http://ecocast.arc.nasa.gov/data/pub/gimms/ + +## Download the data + +```sh +mkdir -p $GISDATA/sensores/AVHRR/GIMMS +cd $GISDATA/sensores/AVHRR/GIMMS + +wget http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/00FILE-LIST.txt +wget -i 00FILE-LIST.txt --continue +``` + +## Process data in R + +Solution in http://gis.stackexchange.com/questions/104500/how-to-create-several-header-files-to-open-avhrr-ndvi3g-gimms-files + +```r +##R --vanilla +library(caTools) +require(raster) +e <- c(-74,-58,0,13) +work.dir <- Sys.getenv("WORKDIR") +gis.data <- Sys.getenv("GISDATA") + +flst <- dir("~/sensores/AVHRR/GIMMS/","geo") +system("mkdir -p ~/mapas/Venezuela/NDVI3g/") +system("mkdir -p ~/mapas/Venezuela/NDVIfW/") + +cat(file="~/sensores/AVHRR/GIMMS/header","ENVI +description = { R-language data } +samples = 2160 +lines = 4320 +bands = 1 +data type = 2 +header offset = 0 +interleave = bsq +byte order = 1") + +for (ff in flst) { + yr <- as.numeric(substr(ff,4,5)) + nn <- sprintf("A%s%02d%s", + ifelse(yr<15,yr+2000,yr+1900), + match(substr(ff,6,8),c("jan", "feb", "mar", "apr", "may", + "jun", "jul", "aug", "sep", "oct", + "nov", "dec")), + ifelse(substr(ff,9,11)=="15a","01","15")) + fl1 <- sprintf("~/mapas/Venezuela/NDVI3g/AVHRRVI3g.%s.Venezuela_NDVI.tif",nn) + if (!file.exists(fl1)) { + + prb <- try(read.ENVI(sprintf("~/sensores/AVHRR/GIMMS/%s",ff), + "~/sensores/AVHRR/GIMMS/header")) + if (all(class(prb)!="try-error")) { + eprb <- raster(t(prb),xmn=-180, xmx=180, ymn=-90, ymx=90, + crs="+proj=longlat +datum=WGS84") + ndvi3g <- crop(eprb,e) + flagW = ndvi3g-floor(ndvi3g/10)*10 + 1; + ndvi = floor(ndvi3g/10)/1000 + values(ndvi)[values(ndvi)<0] <- NA + + writeRaster(ndvi,filename=fl1) + writeRaster(flagW,filename=sprintf("~/mapas/Venezuela/NDVIfW/AVHRRVI3g.%s.Venezuela_flagW.tif",nn)) + } + } +} +``` + +```r +##R --vanilla +library(caTools) +require(raster) +e <- c(-74,-58,0,13) +work.dir <- Sys.getenv("WORKDIR") +gis.data <- Sys.getenv("GISOUT") + +ndvis <- stack(dir(sprintf("%s/mapas/Venezuela/NDVI3g/",gis.data),full.names=T)) + +tt <- as.numeric(substr(names(ndvis),12,15)) + (cumsum(c(0,31,28,31,30,31,30,31,31,30,31,30,31))[as.numeric(substr(names(ndvis),16,17))] + as.numeric(substr(names(ndvis),18,19)))/365 + +qry <- t(extract(ndvis,data.frame(-68.95206,10.79257))) + +##ndvi80 <- stack(dir("~/mapas/Venezuela/NDVI3g/","198",full.names=T)) +##plot(ndvi80) +##qry <- t(extract(ndvi80,data.frame(-68.95206,10.79257))) + +plot(tt,qry,type="l", + xlab="Año",ylab="Indice de vegetación de diferencias normalizadas") + +qry <- t(extract(ndvis,data.frame(-60.81398,5.851432))) + +tt <- ts(qry,start=c(1981,13),frequency=24) +plot(tt,ylim=c(0,1)) +dlt <- decompose(tt) + +plot(tt,ylim=c(0,1),col="grey47",lty=3) +lines(dlt$trend+dlt$seasonal,lwd=1,col=4) +lines(dlt$trend,lwd=2,col=2) + + +qr2 <- t(extract(ndvis,data.frame(-60.91389,5.28917))) + +t2 <- ts(qr2,start=c(1981,13),frequency=24) +dl2 <- decompose(t2) + +plot(t2,ylim=c(0,1),col="grey47",lty=3) +lines(dl2$trend+dl2$seasonal,lwd=1,col=4) +lines(dl2$trend,lwd=2,col=2) + +##cd ~/dev/ +##svn checkout svn://r-forge.r-project.org/svnroot/greenbrown/ +##cd ~/dev/greenbrown/pkg/ +##sudo R CMD INSTALL --html greenbrown --resave-data + +require(greenbrown) +trd <- TrendSTM(t2,h=48/length(t2)) +plot(trd) +trd <- TrendSTM(tt) +plot(trd) + +STMmap <- TrendRaster(ndvis, start=c(1981, 13), freq=24, method="STM", breaks=0) +plot(STMmap,2,col=brgr.colors(9)) +STMmap.cl <- TrendClassification(STMmap, min.length=(8*12)) +plot(STMmap.cl, col=brgr.colors(3), main="Method STM") +plot(STMmap<0.05,3) +plot(STMmap.cl*(raster(STMmap,3)<0.05), col=brgr.colors(3), main="Method STM") +``` diff --git a/drafts/to-do/AVHRR_VCF.sh b/drafts/to-do/AVHRR_VCF.sh new file mode 100644 index 0000000..011b93a --- /dev/null +++ b/drafts/to-do/AVHRR_VCF.sh @@ -0,0 +1,33 @@ +##http://glcf.umd.edu/data/treecover/data.shtml +##Full Example Citation DeFries, R., M. Hansen, J.R.G. Townshend, A.C. Janetos, and T.R. Loveland (2000), 1 Kilometer Tree Cover Continuous Fields, 1.0, Department of Geography, University of Maryland, College Park, Maryland, 1992-1993. +##Associated Peer-Reviewed Publication:DeFries, R., M. Hansen, J.R.G. Townshend, A.C. Janetos, and T.R. Loveland (2000) A new global 1km data set of percent tree cover derived from remote sensing. Global Change Biology. 6: 247-254. + +wget "ftp://ftp.glcf.umd.edu/glcf/Continuous_Fields_Tree_Cover/South_America/sa-latlong-treecover/sa-latlong-treecover.grd.gz" + +##para Carla +gdalwarp -te -109 0 -60 32.5 -s_srs "+proj=longlat +a=6378137 +rf=298.257223563 +no_defs+towgs84=0.000,0.000,0.000 " -ot Int16 -srcnodata "0" -dstnodata "-9999" -of EHdr na-latlong-treecover.grd sa-latlong-treecover.grd treecoverGLCF_Caribe.bil +echo 'NODATA -9999' >> treecoverGLCF_Caribe.hdr + +## 0 es NA, 254 es 0 (sin vegetacion) y 255 es menor a 10% +gdalwarp -te -74 0 -57 12.5 -s_srs "+proj=longlat +a=6378137 +rf=298.257223563 +no_defs+towgs84=0.000,0.000,0.000 " -ot Int16 -srcnodata "0" -dstnodata "-9999" -of EHdr sa-latlong-treecover.grd treecoverGLCF_vzla.bil +echo 'NODATA -9999' >> treecoverGLCF_vzla.hdr + +##R --vanilla + +require(raster) +##r0=raster("treecoverGLCF_vzla.bil") +r0=raster("treecoverGLCF_Caribe.bil") +plot(r0) +values(r0)[values(r0)==254] <- 0 +values(r0)[values(r0)==255] <- 5 + +writeRaster(r0, filename="arboreo_Caribe.bil", + format='BIL', overwrite=TRUE,NAflag=-9999) + +outdir <- "paraMaxEnt" +ff <- "arboreo_Caribe.bil" +system(sprintf("mkdir %s",outdir)) + system(sprintf("gdalwarp -s_srs \"+proj=longlat +a=6378137 +rf=298.257223563 +no_defs+towgs84=0.000,0.000,0.000 \" -ot Int16 -srcnodata \"-9999\" -dstnodata \"-9999\" -of EHdr %s %s/%s",ff,outdir,ff)) + system(sprintf("echo 'NODATA -9999' >> %s/%s", outdir, sub(".bil",".hdr",ff))) + +r1=raster(sprintf("%s/%s",outdir,ff)) diff --git a/drafts/to-do/Global-Forest-Change.md b/drafts/to-do/Global-Forest-Change.md new file mode 100644 index 0000000..029fe60 --- /dev/null +++ b/drafts/to-do/Global-Forest-Change.md @@ -0,0 +1,121 @@ +# Global Forest Change + +## Reference +> Hansen, M. C., P. V. Potapov, R. Moore, M. Hancher, S. A. Turubanova, A. Tyukavina, D. Thau, S. V. Stehman, S. J. Goetz, T. R. Loveland, A. Kommareddy, A. Egorov, L. Chini, C. O. Justice, and J. R. G. Townshend. 2013. *High-Resolution Global Maps of 21st-Century Forest Cover Change.* **Science** 342 (15 November): 850–53. [Data available on-line](http://earthenginepartners.appspot.com/science-2013-global-forest). + + +## Available data + +http://www.earthenginepartners.appspot.com/science-2013-global-forest/download.html + +```sh +export GISDATA=/opt/gisdb/extra-gisdata/ +export SRC="https://storage.googleapis.com/earthenginepartners-hansen" +``` + +## Data download: + +For all versions from v1.0 (2013) to v1.7 we can use a simple bash script: + +```sh + +for VRS in GFC-2019-v1.7 ## GFC-2018-v1.6 GFC-2017-v1.5 GFC-2016-v1.4 GFC-2015-v1.3 GFC2015 GFC2014 GFC2013 +do + mkdir -p $GISDATA/sensores/Landsat/$VRS + cd $GISDATA/sensores/Landsat/$VRS + for VAR in gain lossyear treecover2000 + do + ##Venezuela + ## curl -O -C - $SRC/$VRS/Hansen_${VRS}_${VAR}_[1-2]0N_0[6-8]0W.tif + ## Americas + curl -O -C - $SRC/$VRS/Hansen_${VRS}_${VAR}_[0-5]0[NS]_0[4-9]0W.tif + ##NorteAmerica + curl -O -C - $SRC/$VRS/Hansen_${VRS}_${VAR}_[0-6]0[N]_[06-16]0W.tif + done +done +``` + +Or download whole set with wget: + +```sh +export VRS=GFC-2019-v1.7 +mkdir -p $GISDATA/sensores/Landsat/$VRS +cd $GISDATA/sensores/Landsat/$VRS +for VAR in gain lossyear treecover2000 +do + wget $SRC/$VRS/$VAR.txt + wget -b --continue -i $VAR.txt +done + +``` + +Builds VRT (Virtual Dataset) as a mosaic of the list of input files +```sh +export VRS=GFC-2019-v1.7 +export VAR=treecover2000 + +cd $GISDATA/sensores/Landsat/ +for VRS in GFC-2019-v1.7 +do + for VAR in gain lossyear treecover2000 + do + gdalbuildvrt index_${VRS}_${VAR}.vrt $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*.tif + done +done +``` + +## Subsets + +Example for Gran Sabana in Venezuela (bbox/: -63.1 4.6 -60.5 6.6) within `10N_070W` tile, and for Suriname, last version of data: + +```sh +export VRS=GFC-2019-v1.7 +cd $WORKDIR +mkdir -p $WORKDIR/$VRS +for VAR in gain lossyear treecover2000 # datamask first last +do + ## use -co "COMPRESS=LZW" for highest compression lossless ration + gdalwarp -te -63.1 4.6 -60.5 6.6 -co "COMPRESS=LZW" $GISDATA/sensores/Landsat/index_${VRS}_${VAR}.vrt $WORKDIR/$VRS/${VRS}.GS.${VAR}.tif + gdalwarp -te -59 1 -53 7 -co "COMPRESS=LZW" $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_10N_060W.tif $WORKDIR/$VRS/${VRS}.Suriname.${VAR}.tif +done + +``` + +For large areas spanning several tiles we can merge the files, keeping the original resolution. Examples for Venezuela, North and Central America (NAC) and South America (SAM): + +```sh +export VRS=GFC-2019-v1.7 +export VAR=treecover2000 + +cd $WORKDIR +mkdir -p $WORKDIR/$VRS + +cd $GISDATA/sensores/Landsat/ +gdalbuildvrt index_$(VRS)_${VAR}.vrt $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*.tif +## RROR 3: Free disk space available is 570111430656 bytes, whereas 806400000000 are at least necessary. You can disable this check by defining the CHECK_DISK_FREE_SPACE configuration option to FALSE. +## Creation failed, terminating gdal_merge. +# nohup gdal_merge.py -co "BIGTIFF=YES" -o $WORKDIR/$VRS/${VRS}.world.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*.tif & + + +gdal_merge.py -ul_lr -74 13 -59 0 -co "COMPRESS=LZW"-o ${VRS}.Venezuela.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*N*W.tif +gdal_merge.py -ul_lr -62.70 -19.25 -54.20 -27.65 -co "COMPRESS=LZW" -o ${VRS}.Paraguay.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*S*W.tif + +gdal_merge.py -ul_lr -138 60 -40 3 -co "COMPRESS=LZW" -o ${VRS}.NAC.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*N*W.tif + +gdal_merge.py -ul_lr -90 15 -25 -60 -co "COMPRESS=LZW" -o ${VRS}.SAM.${VAR}.tif $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*W.tif +``` + +Or we can change the resolution +```sh +gdalwarp -te -90 -60 -25 15 -tr 0.001475 0.001475 -srcnodata "0" -dstnodata "0" -tap -r average $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*W.tif ${VRS}.SAM.${VAR}_500m.tif + +gdalwarp -te -138 3 -40 60 -tr 0.001475 0.001475 -srcnodata "0" -dstnodata "0" -tap -r average $GISDATA/sensores/Landsat/$VRS/Hansen_${VRS}_${VAR}_*W.tif ${VRS}.NAC.${VAR}_500m.tif + +export GISDATA=/opt/gisdb/extra-gisdata/ +export VRS=GFC-2019-v1.7 +export VAR=treecover2000 + + +gdalwarp -tr 0.001475 0.001475 -srcnodata "0" -dstnodata "0" -tap -r average $GISDATA/sensores/Landsat/index_${VRS}_${VAR}.vrt ${VRS}.world.${VAR}_500m.tif + +``` diff --git a/drafts/to-do/Modis_NDVI.R b/drafts/to-do/Modis_NDVI.R new file mode 100644 index 0000000..8808e4d --- /dev/null +++ b/drafts/to-do/Modis_NDVI.R @@ -0,0 +1,81 @@ +##R --vanilla +## +##https://lpdaac.usgs.gov/data_access/data_pool + +## ver sensores_Modis_listaDownload.R ## junio 2016 + + +##system("split -l300 enlaces enlz") +## grep h11v07 enlaces > enlaces.h11v7 +## grep A2003 enlaces.h11v7 > enlaces.h11v7.2003 + +##ls hdfs/ > listos +## grep -vf listos enlaces.h11v8 > faltan.h11v8 +## grep -vf listos enlaces.h11v7 > faltan.h11v7 +## grep -vf listos enlaces.h12v7 > faltan.h12v7 +## grep -vf listos enlaces.h10v7 > faltan.h10v7 + + +for (yr in 2002:2009) + system(sprintf("grep A%1$s enlaces.h10v8 > enlaces.h10v8.%1$s",yr)) +system("mkdir ~/mapas/download/MOD13Q1/hdfs") +setwd("~/mapas/download/MOD13Q1/hdfs") + +## bash for loop +##ls hdfs/ > listos +##for i in {2000..2015} +##do +## grep -h A$i enlaces.* >enlaces.A$i +## grep -vf listos enlaces.A$i > faltan.A$i +##done +##ls -lah faltan.A* +##grep -h A2005 enlaces.* >enlaces.A2005 +##grep -h A2007 enlaces.* >enlaces.A2007 +## +## grep -vf listos enlaces.A2007 > faltan.A2007 + +##R --vanilla +setwd("~/mapas/download/MOD13Q1/hdfs") +setwd("/media/mapoteca/HD-E1/ModisSS/download/MOD13Q1/hdfs/") +setwd("/media/jferrer/HD-E1/ModisSS/download/MOD13Q1/hdfs/") + +dir(pattern="hdf$") +mptc <- "~/mapas/Venezuela" + + + +for (yr in c(2000:2015)) { + for (mn in seq(1,365,by=8)) { + for (variable in c("250m 16 days NDVI","250m 16 days EVI","250m 16 days VI Quality","250m 16 days red reflectance","250m 16 days NIR reflectance","250m 16 days blue reflectance","250m 16 days MIR reflectance","250m 16 days view zenith angle","250m 16 days sun zenith angle","250m 16 days relative azimuth angle","250m 16 days composite day of the year","250m 16 days pixel reliability")[1:3]) { + if (!file.exists(sprintf("%s/%s/",mptc,gsub(" ","_",variable)))) + system(sprintf("mkdir %s/%s/",mptc,gsub(" ","_",variable))) + arch <- sprintf("%1$s/%4$s/MOD13Q1.A%2$s%3$03d.Venezuela_%4$s.tif",mptc,yr,mn,gsub(" ","_",variable)) + if (!file.exists(arch)) { + hs <- dir(pattern=sprintf("A%s%03d",yr,mn)) + hs <- grep("hdf$",hs,value=T) + if (length(hs)>5) { + system(sprintf("gdalwarp -te -74 0 -58 13 -t_srs \"+proj=longlat +datum=WGS84\" %s %s",paste("HDF4_EOS:EOS_GRID:\"",hs,"\":MODIS_Grid_16DAY_250m_500m_VI:'",variable,"'",sep="",collapse=" "),arch)) + } + } + } + } +} + +##cd ~/mapas/download/MOD13Q1 +##tar -cjf MOD13Q1.A2000.tar.bz2 hdfs/MOD13Q1.A2000* +##rm hdfs/MOD13Q1.A2000* + +setwd("~/mapas") +system("tar -cjvf 20150705.Venezuela.PET_1km.tar.bz2 Venezuela/PET_1km/") +system("tar -cjvf 20150705.Venezuela.ET_1km.tar.bz2 Venezuela/ET_1km/") +system("tar -cjvf 20150705.Venezuela.PLE_1km.tar.bz2 Venezuela/PLE_1km/") +system("tar -cjvf 20150705.Venezuela.LE_1km.tar.bz2 Venezuela/LE_1km/") + +require(raster) +r0=raster(sprintf("~/mapas/Venezuela/ET_1km/MOD16A2.A%sM%02d.Venezuela_ET_1km.tif",yr,mn)) + +source("~/Dropbox/Mapoteca/inc/inc00_funciones.R") +##chequear MOD16_global_evapotranspiration_description.pdf +tmp <- mSSt(values(r0), ll=-32767,ul=32700,cf=0.1,os=0,setNA=0) +values(r0) <- tmp +plot(r0) diff --git a/drafts/to-do/UN-map.md b/drafts/to-do/UN-map.md new file mode 100644 index 0000000..1880dd4 --- /dev/null +++ b/drafts/to-do/UN-map.md @@ -0,0 +1,3 @@ +UN Map: Global International Boundaries +https://data.humdata.org/dataset/united-nations-map +https://data.humdata.org/organization/ocha-fiss diff --git a/drafts/to-do/VIPPHEN-NDVI-v004.md b/drafts/to-do/VIPPHEN-NDVI-v004.md new file mode 100644 index 0000000..89c1cb1 --- /dev/null +++ b/drafts/to-do/VIPPHEN-NDVI-v004.md @@ -0,0 +1,65 @@ +> The NASA Making Earth System Data Records for Use in Research Environments (MEaSUREs) Vegetation Index and Phenology (VIP) global datasets were created using surface reflectance data from the Advanced Very High Resolution Radiometer (AVHRR) N07, N09, N11, and N14 datasets (1981 – 1999) and Moderate Resolution Imaging Spectroradiometer (MODIS)/Terra MOD09 surface reflectance data (2000 - 2014). The VIP Vegetation Index (VI) product was developed to provide consistent measurements of the Normalized Difference Vegetation Index (NDVI) and modified Enhanced Vegetation Index (EVI2) spanning more than 30 years of data from multiple sensors. The EVI2 is a backward extension of AVHRR. Vegetation indices such as NDVI and EVI2 are useful for assessing the biophysical properties of the land surface, and are used to characterize vegetation phenology. Phenology tracks the seasonal life cycle of vegetation, and provides information on the biotic response to environmental changes. The VIPPHEN data product is provided globally at 0.05 degree (5600 meter) spatial resolution in geographic (Lat/Lon) grid format. The data are stored in Hierarchical Data Format-Earth Observing System (HDF-EOS) file format. The VIPPHEN phenology product contains 26 Science Datasets (SDS) which include phenological metrics such as the start, peak, and end of season as well as the rate of greening and senescence. The product also provides the maximum, average, and background calculated VIs. The VIPPHEN SDS are based on the daily VIP product series and are calculated using a 3-year moving window average to smooth out noise in the data. A reliability SDS is included to provide context on the quality of the input data. + +## URLs +https://lpdaac.usgs.gov/products/vipphen_ndviv004/ +https://cmr.earthdata.nasa.gov/search/concepts/C1328419564-LPDAAC_ECS.html + +See also graphical description in: https://lpdaac.usgs.gov/documents/637/VNP22_User_Guide_V1.pdf (although this is related to a different dataset) + +## References + +For North America: +> White MA, BEURS D, Kirsten M, DIDAN K, INOUYE DW, RICHARDSON AD, JENSEN OP, O'KEEFE JO, ZHANG G, NEMANI RR, LEEUWEN V. Intercomparison, interpretation, and assessment of spring phenology in North America estimated from remote sensing for 1982–2006. Global Change Biology. 2009 Oct 1;15(10):2335-59. + + + +```sh +mkdir -p $GISDATA/sensores/VIPPHEN-NDVI +cd $GISDATA/sensores/VIPPHEN-NDVI +mv ~/Downloads/4656797354-download.sh $GISDATA/sensores/VIPPHEN-NDVI +chmod 777 $GISDATA/sensores/VIPPHEN-NDVI/4656797354-download.sh +./4656797354-download.sh + + + +for k in "Start of Season 1" "End of Season 1" "Length of Season 1" "Day of Peak Season 1" "Rate of Greening Season 1" "Rate of Senescence Season 1" "Max VI Season 1" "Start of Season 2" "End of Season 2" "Length of Season 2" "Day of Peak Season 2" "Rate of Greening Season 2" "Rate of Senescence Season 2" "Max VI Season 2" "Start of Season 3" "End of Season 3" "Length of Season 3" "Day of Peak Season 3" "Rate of Greening Season 3" "Rate of Senescence Season 3" "Max VI Season 3" "Cumulative VI" "Average VI" "Background VI" "Number of Seasons" "Reliability" +do + gdallocationinfo -xml -geoloc HDF4_EOS:EOS_GRID:"${GISDATA}/sensores/VIPPHEN-NDVI/VIPPHEN_NDVI.A2014.004.2016180135355.hdf:VIP_CMG_GRID:${k}" -49.302800 -11.31810000 +done + + +for j in $(ls ${GISDATA}/sensores/VIPPHEN-NDVI/*hdf) +do + gdallocationinfo -xml -geoloc HDF4_EOS:EOS_GRID:"${j}:VIP_CMG_GRID:${k}" -49.302800 -11.31810000 +done + +``` + +Transform to geotiff + +```sh +cd $WORKDIR +for k in "Start of Season 1" "End of Season 1" "Length of Season 1" "Day of Peak Season 1" "Rate of Greening Season 1" "Rate of Senescence Season 1" "Max VI Season 1" "Start of Season 2" "End of Season 2" "Length of Season 2" "Day of Peak Season 2" "Rate of Greening Season 2" "Rate of Senescence Season 2" "Max VI Season 2" "Start of Season 3" "End of Season 3" "Length of Season 3" "Day of Peak Season 3" "Rate of Greening Season 3" "Rate of Senescence Season 3" "Max VI Season 3" "Cumulative VI" "Average VI" "Background VI" "Number of Seasons" "Reliability" +do + g=$(echo $k|sed -e "s/ /-/g") + gdal_translate HDF4_EOS:EOS_GRID:"${GISDATA}/sensores/VIPPHEN-NDVI/VIPPHEN_NDVI.A2014.004.2016180135355.hdf:VIP_CMG_GRID:${k}" VIPPHEN_NDVI.A2014.${g}.tif +done +``` + +```r +require(raster) +r0 <- raster("VIPPHEN_NDVI.A2014.Average-VI.tif") +plot(r0) +plot(r0>5000) + +r1 <- raster("VIPPHEN_NDVI.A2014.Cumulative-VI.tif") +values(r1)[values(r1)<0] <- NA + +r2 <- raster("VIPPHEN_NDVI.A2014.Max-VI-Season-1.tif") + values(r2)[values(r2)<0] <- NA + +plot(r1) +plot(r2) + r1 <- raster("VIPPHEN_NDVI.A2014.Start-of-Season-1.tif") +plot(r1) +``` diff --git a/drafts/to-do/World-Heritage-Sites.md b/drafts/to-do/World-Heritage-Sites.md new file mode 100644 index 0000000..05bdf4e --- /dev/null +++ b/drafts/to-do/World-Heritage-Sites.md @@ -0,0 +1,2 @@ +World Heritage List +http://whc.unesco.org/en/list diff --git a/drafts/to-do/ecological-classifications/EU-plus-habitats.md b/drafts/to-do/ecological-classifications/EU-plus-habitats.md new file mode 100644 index 0000000..eff5781 --- /dev/null +++ b/drafts/to-do/ecological-classifications/EU-plus-habitats.md @@ -0,0 +1,53 @@ +## + +http://ec.europa.eu/environment/nature/knowledge/redlist_en.htm +## + +fact sheets per habitat in https://forum.eionet.europa.eu/european-red-list-habitats/library/ + + +Red list database https://forum.eionet.europa.eu/european-red-list-habitats/library/project-deliverables-data/database + +Download all data at once +```sh +mkdir -p $GISDATA/ecosystems/EUplus-RLH +cd $GISDATA/ecosystems/EUplus-RLH +wget --continue https://forum.eionet.europa.eu/european-red-list-habitats/library/zip_export/do_export --output-document=EURLHDB.zip + +``` + +unzip and export from accdb to sql +```sh + +cd $WORKDIR + +unzip $GISDATA/ecosystems/EUplus-RLH/EURLHDB.zip +chmod 704 -R Library/ +mdb-tables -1 Library/Project\ data\ deliverables/Database/Raw\ Database\ .accdb +mdb-schema Library/Project\ data\ deliverables/Database/Raw\ Database\ .accdb > EURLHschema.sql postgres + +mdb-export -I postgres Library/Project\ data\ deliverables/Database/Raw\ Database\ .accdb 'European Red List of Habitats Table' | sed -e 's/)$/)\;/' > EURLHexport.sql + +echo "SET search_path TO euplus;" > EURLH-schema-plus.sql + cat EURLHschema.sql >> EURLH-schema-plus.sql +psql -d gisdata -c "CREATE SCHEMA euplus" +psql -d gisdata < EURLH-schema-plus.sql + +SET search_path TO euplus; +drop table "Biogeographical Regions Table"; +drop table "Conservation Measures Table" ; +drop table "European Red List of Habitats Table"; +drop table "Look-up Conservation Measures Table"; +drop table "Look-up Countries Table" ; +drop table "Look-up Pressures and Threats Table" ; +drop table "Look-up Seas Table" ; +drop table "Marine Habitats Area and Trends Table"; +drop table "Pressures and Threats Table" ; +drop table "Terrestrial Habitats Area and Trends Table"; + +echo "SET search_path TO euplus;" > EURLH-export-plus.sql + cat EURLHexport.sql >> EURLH-export-plus.sql + + psql -d gisdata < EURLH-export-plus.sql & + +``` diff --git a/drafts/to-do/ecological-classifications/Ecological-Land-Units.md b/drafts/to-do/ecological-classifications/Ecological-Land-Units.md new file mode 100644 index 0000000..3bae691 --- /dev/null +++ b/drafts/to-do/ecological-classifications/Ecological-Land-Units.md @@ -0,0 +1,152 @@ +# USGS: Ecological land Units + +https://www.usgs.gov/centers/gecsc/science/global-ecosystems?qt-science_center_objects=4#qt-science_center_objects + +#### Citation +> Roger Sayre; Deniz Karagulle; Charlie Frye; Timothy Boucher; Nicholas H. Wolff; Sean Breyer; Dawn Wright; Madeline Martin; Kevin Butler; Keith Van Graafeiland; Jerry Touval; Leonardo Sotomayor; Jennifer McGowan; Edward T. Game; Hugh Possingham (2020) *An assessment of the representation of ecosystems in global protected areas using new maps of World Climate Regions and World Ecosystems*. **Global Ecology and Conservation**, 21: e00860. DOI [10.1016/j.gecco.2019.e00860](http:doi.org/10.1016/j.gecco.2019.e00860) [Web](https://www.sciencedirect.com/science/article/pii/S2351989419307231) + +https://pubs.er.usgs.gov/publication/70187380 + +#### Data download + +https://rmgsc.cr.usgs.gov/ecosystems/datadownload.shtml +https://rmgsc.cr.usgs.gov/outgoing/ecosystems/ + +#### Data processing + + +```sh +mkdir -p $GISDATA/ecosystems/USGS/Ecological-Land-Units/ +cd $GISDATA/ecosystems/USGS/Ecological-Land-Units/ + +wget https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/ +grep zip index.html > enlaces + +wget --continue https://rmgsc.cr.usgs.gov/outgoing/ecosystems/Global/World_ELU_2015.zip + +# sed -n 's/.*HREF="\([^"]*\).*/\1/p' index.html > enlaces + ## this one is better for this file: + grep -Po '(?<=HREF=")[^"]*' index.html | grep LandUnits > ELUs + wget --continue -i ELUs --base=https://rmgsc.cr.usgs.gov/ -b + + grep -Po '(?<=HREF=")[^"]*' index.html > enlaces +wget --continue -i enlaces --base=https://rmgsc.cr.usgs.gov/ -b + + + +``` + +#### New version: `WorldEcologicalLandUnits2015data` + + +```sh +mkdir $WORKDIR/ELU + cd $WORKDIR/ELU +unzip $GISDATA/ecosystems/USGS/Ecological-Land-Units/WorldEcologicalLandUnits2015data.zip +#unzip $GISDATA/ecosystems/USGS/Ecological-Land-Units/WorldEcologicalLandUnits2015symb.zip +#7z x $GISDATA/ecosystems/USGS/Ecological-Land-Units/WorldTerrestrialEcosystemsUSGSEsriTNC2020.mpk +unzip $GISDATA/ecosistemas/NatureServe/af_labeled_ecosys.zip + +``` + + +```r +##R --vanilla +require(foreign) +require(dplyr) + +colormap <- read.dbf("globalelus_query/World_Ecological_2015.tif.vat.dbf") +##colormap <- read.dbf("globalelu/World_ELU_2015.tif.vat.dbf") + +head(table(colormap$ELU)) + str(colormap) + +(table(colormap$ELU_Bio_De)) +(table(colormap$ELU_GLC_De)) + +require(readxl) +xwalk <- read_excel("~/proyectos/UNSW/ecosphere-db/input/xwalks/GETcrosswalk-Sayre-2020.xlsx") + +require(raster) +r0 <- raster("globalelus_query/World_Ecological_2015.tif") +r1 <- r0 + colormap %>% filter(EF_Lit_Des %in% "Unconsolidated Sediment" ) %>% pull(Value) -> slc + +## wont work with my RAM +values(r1) <- values(r0) %in% slc + +colormap$alpha <- 255 +colormap$Red <- 0 +colormap$Green <- 0 +colormap$Blue <- 0 +colormap$Red[colormap$Value %in% slc] <- 200 + +write.table(file="globalelu_colourmap.clr", colormap[,c("Value","Red","Green","Blue","alpha","ELU")], row.names=F, col.names=F) +q() +``` + + +```r +##R --vanilla +require(foreign) +require(dplyr) +require(readxl) +require(raster) + +colormap <- read.dbf("Africa_IVC_20130316_final_MG.tif.vat.dbf") + colormap %>% filter(formation %in% "1.A.1 Tropical Seasonally Dry Forest" ) %>% pull(Value) -> slc + + +head(colormap) + +r0 <- raster("Africa_IVC_20130316_final_MG.tif") +r1 <- r0 %in% slc + + + str(colormap) + +(table(colormap$ELU_Bio_De)) +(table(colormap$ELU_GLC_De)) + +xwalk <- read_excel("~/proyectos/UNSW/ecosphere-db/input/xwalks/GETcrosswalk-Sayre-2020.xlsx") + +r1 <- r0 + colormap %>% filter(EF_Lit_Des %in% "Unconsolidated Sediment" ) %>% pull(Value) -> slc + +## wont work with my RAM +values(r1) <- values(r0) %in% slc + +colormap$alpha <- 255 +colormap$Red <- 0 +colormap$Green <- 0 +colormap$Blue <- 0 +colormap$Red[colormap$Value %in% slc] <- 200 + +write.table(file="globalelu_colourmap.clr", colormap[,c("Value","Red","Green","Blue","alpha","ELU")], row.names=F, col.names=F) +q() +``` + +#### Old version +(This was replaced in repo by `WorldEcologicalLandUnits2015data` see above) + +Create a colourmap for QGIS + +```sh +cd $WORKDIR +unzip $GISDATA/ecosystems/USGS/Ecological-Land-Units/World_ELU_2015.zip +``` + +```r +##R --vanilla +require(foreign) +colormap <- read.dbf("globalelu/World_ELU_2015.tif.vat.dbf") +colormap$alpha <- 255 +write.table(file="globalelu_colourmap.clr", colormap[,c("Value","Red","Green","Blue","alpha","ClassName")], row.names=F, col.names=F) +q() +``` + +```sh +mv globalelu_colourmap.clr $GISDATA/ecosystems/USGS/Ecological-Land-Units/ +``` + +Crosswalk with typology available at: https://www.landscale.org/how-it-works/ [PDF](https://www.landscale.org/wp-content/uploads/2020/10/Annex-2-World-Ecosystems-Map-and-IUCN-Typology_V0.2_Oct2020.pdf) but the labels are more generic than the ones in the tif.vat.dbf file. diff --git a/drafts/to-do/ecological-classifications/GLOBES-1km.md b/drafts/to-do/ecological-classifications/GLOBES-1km.md new file mode 100644 index 0000000..2208630 --- /dev/null +++ b/drafts/to-do/ecological-classifications/GLOBES-1km.md @@ -0,0 +1,15 @@ +# GLOBES – 1-KM RESOLUTION GLOBAL ECOSYSTEM DATA CUBE +Dataset Creator: Ruben Remelgado +Publication Year: 2020 +Global data cube on the yearly extent of ecosystems following the habitat classification scheme of the IUCN Red List, used in the assessment of over 100,000 species. This data cube is composed by 65 ecosystem types and covers the period between 1992 and 2018, where each layer depicts per-pixel areas of a given ecosystem within a given year. + +https://portal.geobon.org/ebv-detail?id=8 + +```sh +mkdir -p $GISDATA/ecosystems/GLOBES-1km +cd $GISDATA/ecosystems/GLOBES-1km + + +nohup wget --continue https://portal.geobon.org/data/10/netcdf/globES.nc & +wget --continue https://portal.geobon.org/data/10/metadata.xml +``` diff --git a/drafts/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md b/drafts/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md new file mode 100644 index 0000000..db122d4 --- /dev/null +++ b/drafts/to-do/ecological-classifications/IUCN-Hanitat-TS-2020.md @@ -0,0 +1,36 @@ +# GLOBES – 1-KM RESOLUTION GLOBAL ECOSYSTEM DATA CUBE + +Datacube of terrestrial IUCN habitat types. Global data cube on the yearly extent of ecosystems following the habitat classification scheme of the IUCN Red List, used in the assessment of over 100,000 species. This data cube is composed by 65 ecosystem types and covers the period between 1992 and 2018, where each layer depicts per-pixel areas of a given ecosystem within a given year. ... + + +https://portal.geobon.org/ebv-detail?id=10 + + + +#### Data + +Personal communication from Carsten Meyer + +```sh +mkdir -p $GISDATA/ecosystems/GLOBES-1km +cd $GISDATA/ecosystems/GLOBES-1km +wget --continue https://gigamove.rz.rwth-aachen.de/d/id/AWkrfaeTCyG3CX/dd/100 --output-document=GLOBES-10km-prelim.zip + +``` + + +```sh +cd $WORKDIR + +unzip $GISDATA/ecosystems/GLOBES-1km/GLOBES-10km-prelim.zip +``` + +From Geobon portal +```sh +mkdir -p $GISDATA/ecosystems/GLOBES-1km +cd $GISDATA/ecosystems/GLOBES-1km + +wget --continue https://portal.geobon.org/data/10/netcdf/globES.nc +wget --continue https://portal.geobon.org/data/10/metadata.xml + +``` diff --git a/drafts/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md b/drafts/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md new file mode 100644 index 0000000..741b25e --- /dev/null +++ b/drafts/to-do/ecosystem-maps/Ecosystems-indicative-distribution.md @@ -0,0 +1,64 @@ +# Indicative distribution maps + +#### Citation + +The latest version of the dataset is available at ![10.5281/zenodo.3546513](https://zenodo.org/badge/doi/10.5281/zenodo.3546513.svg) + +Here we will compare version 1.1 and version 2.0 of the indicative maps: + +> Keith, David A., Ferrer-Paris, Jose R., Nicholson, Emily, Bishop, Melanie J., Polidoro, Beth A., Ramirez-Llodra, Eva, … Kingsford, Richard T. (2020). Indicative distribution maps for Ecological Functional Groups - Level 3 of IUCN Global Ecosystem Typology (Version 2.0.0) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3958934 + +And + +> Keith, David A., Ferrer-Paris, Jose R., Nicholson, Emily, Bishop, Melanie J., Polidoro, Beth A., Ramirez-Llodra, Eva, … Kingsford, Richard T. (2020). Indicative distribution maps for Ecological Functional Groups - Level 3 of IUCN Global Ecosystem Typology (Version 1.1.0) [Data set]. Zenodo. http://doi.org/10.5281/zenodo.3958622 + + +#### Data preparation + +It is possible to automate download from the Zenodo repository using the API. For example, using the *R* package **[zen4R](https://github.com/eblondel/zen4R)**. We need to retrieve the Zenodo API token from a file in the home directory or from an environment variable. + +```R +R --vanilla +require(zen4R) + +##output directory +gis.outdir <- Sys.getenv("GISOUT") + +system(sprintf("mkdir -p %s/version-0.0.1",gis.outdir)) +zenodoToken <- Sys.getenv("ZENODOTOKEN") +##alternative: readLines("~/.ZenodoToken") + +zenodo <- ZenodoManager$new( + token = zenodoToken, + logger = "INFO" +) + +versions <- c("version-1.1.0"="10.5281/zenodo.3958622","version-2.0.0"="10.5281/zenodo.3958934") +for (j in 1:2) { + system(sprintf("mkdir -p %s/%s",gis.outdir,names(versions)[j])) + setwd(sprintf("%s/%s",gis.outdir,names(versions)[j])) + my_rec <- zenodo$getRecordByDOI(versions[j]) + file_list <- zenodo$getFiles(my_rec$id) + + for (k in 1:length(file_list)) { + system(sprintf("wget --continue '%s?access_token=%s' --output-document=%s",file_list[[k]]$links$download,zenodoToken, file_list[[k]]$filename)) + } +} +q() +``` + +Now we can go through the folders and decompress the files: + +```sh +for version in 1.1.0 2.0.0 +do + cd $GISOUT/version-$version + for arch in $(ls *tar.bz2) + do + tar -xjvf $arch + rm $arch + done +done +``` + +All GeoTIFF files should be now in these two folders. diff --git a/drafts/vegetation-to-do/China-vegetation-map.md b/drafts/vegetation-to-do/China-vegetation-map.md new file mode 100644 index 0000000..93be895 --- /dev/null +++ b/drafts/vegetation-to-do/China-vegetation-map.md @@ -0,0 +1,32 @@ +# China vegetation map + +### Older version +> China Vegetation Atlas. Chinese Vegetation Editing Committee of the Chinese Academy of Sciences, China Vegetation Dataset, Chinese Academy of Sciences, 2001. Beijing, China: Chinese Vegetation Editing Committee of the Chinese Academy of Sciences, China Vegetation Dataset, Chinese Academy of Sciences, 2001. 2001 ( tDAR id: 442484) ; doi:10.6067/XCV85B05BG + +https://core.tdar.org/geospatial/442484/china-vegetation-atlas + + +Register and download GIS data package, also Download spreadsheet + +```sh + + mkdir -p $GISDATA/vegetation-maps/China +cd $GISDATA/vegetation-maps/China +## +mv ~/Downloads/files-442484.zip $GISDATA/vegetation-maps/China +mv ~/Downloads/vegetation_translated.xlsx $GISDATA/vegetation-maps/China +cd $WORKDIR +unzip $GISDATA/vegetation-maps/China/files-442484.zip +``` + +Vegetation IDs are not linked to vegetation types or names. + +### 2020 Update + +> Yanjun Su, Qinghua Guo, Tianyu Hu, Hongcan Guan, Shichao Jin, Shazhou An, Xuelin Chen, Ke Guo, Zhanqing Hao, Yuanman Hu, Yongmei Huang, Mingxi Jiang, Jiaxiang Li, Zhenji Li, Xiankun Li, Xiaowei Li, Cunzhu Liang, Renlin Liu, Qing Liu, Hongwei Ni, Shaolin Peng, Zehao Shen, Zhiyao Tang, Xingjun Tian, Xihua Wang, Renqing Wang, Zongqiang Xie, Yingzhong Xie, Xiaoniu Xu, Xiaobo Yang, Yongchuan Yang, Lifei Yu, Ming Yue, Feng Zhang, Keping Ma (2020) An updated Vegetation Map of China (1:1000000), Science Bulletin, Volume 65, Issue 13, Pages 1125-1136, ISSN 2095-9273, https://doi.org/10.1016/j.scib.2020.04.004. + + +http://www.chinavegetation.cn/#/ + + +Not available yet diff --git a/drafts/vegetation-to-do/HEaP-United-Kingdom.md b/drafts/vegetation-to-do/HEaP-United-Kingdom.md new file mode 100644 index 0000000..3499c4c --- /dev/null +++ b/drafts/vegetation-to-do/HEaP-United-Kingdom.md @@ -0,0 +1,9 @@ +https://www.rspb.org.uk/our-work/conservation/conservation-and-sustainability/advice/conservation-land-management-advice/heathland-extent-and-potential-maps/ + +```sh +mkdir -p $GISDATA/ecosystems/HEaP +cd $GISDATA/ecosystems/HEaP + +mv ~/Downloads/heathland-extent-and-potential-heap-maps.zip $GISDATA/ecosystems/HEaP + +``` diff --git a/drafts/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md b/drafts/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md new file mode 100644 index 0000000..1a018eb --- /dev/null +++ b/drafts/vegetation-to-do/LRIS-vegetation-ecosystems-New-Zealand.md @@ -0,0 +1,25 @@ +#Vegetative Cover Map +The 1:1,000,000 scale Vegetative Cover Map of New Zealand is the first vegetation survey which can be applied nationally for planning, research, and education. It optimises the cartographic potential of the vegetation information available in the early 1980s and provides a historical record which will aid in future analyses of vegetative cover and land utilisation. The map classification recognises 47 Vegetative Cover Classes identified by alphanumeric code and 17 Vegetative Cover Elements identified (only on the printed map) by symbols and patterns. The map is published as two sheets 730mm x 880mm covering the three principal islands of New Zealand and all offshore islands within 100km of the coast. The map was accompanied by a 153 page, illustrated, book which discusses New Zealand's vegetation and describes the 47 classes. + +The book to accompany this dataset is available as an epub from: +https://mebooks.co.nz/index.php?route=product/product&product_id=402 + +#Basic Ecosystems +This layer was derived from three existing data layers: the Land Cover Database 2 (LCDB2) (MfE 2002); the Land Use Map (LUM) from the Land Use Carbon Analysis System (MfE 2008; Dymond et al. 2012); and EcoSat Forests (Shepherd et al. 2002). Indigenous forest classes from EcoSat Forests were combined with classes from LCDB2 to form basic ecosystems classes. Where indigenous forest was mapped by LCDB2, the type of forest was determined from the EcoSat Forests layer. The eight forest types of EcoSat Forests were reduced to three basic types: beech forest; podocarp-broadleaved forest; and mixed beech and podocarp-broadleaved forest. To produce a recent 2008 layer the LUM was used to update indigenous and exotic forest changes since 2002. The mapping was performed using 15 m pixels, which is equivalent to a mapping scale of approximately 1:50 000. + +#Threatened Environments Classification 2012 +Cieraad E, Walker S, Price R, Barringer J. 2015. An updated assessment of indigenous cover remaining and legal protection in New Zealand’s land environments. New Zealand Journal of Ecology 39(2) - downloadable from newzealandecology.org/nzje/3235.pdf . + +register in LRIS portal +create download + +```sh +mkdir -p $GISDATA/vegetation/LRIS-New-Zealand +cd $GISDATA/vegetation/LRIS-New-Zealand + +mv ~/Downloads/lris-*.zip $GISDATA/vegetation/LRIS-New-Zealand +unzip lris-vegetative-cover-map-of-new-zealand-SHP.zip + + +mv ~/Downloads/tec2012*csv $GISDATA/vegetation/LRIS-New-Zealand +``` diff --git a/drafts/vegetation-to-do/vegetation-maps-Argentina.md b/drafts/vegetation-to-do/vegetation-maps-Argentina.md new file mode 100644 index 0000000..fd2ff28 --- /dev/null +++ b/drafts/vegetation-to-do/vegetation-maps-Argentina.md @@ -0,0 +1,53 @@ +# Base de Datos Geoespacial Institucional del Instituto Geográfico Nacional de la República Argentina + +> Datos extraídos de la Base de Datos Institucional del Instituto Geográfico Nacional (IDEIGN02) y convertidos en archivos shapefile. + +#### Data access +https://www.ign.gob.ar/NuestrasActividades/InformacionGeoespacial/CapasSIG + +Under category "Vegetación natural y de cultivo" there are several layers: Cultivo, Sin vegetación, Vegetación arbórea, Vegetación arbustiva, Vegetación herbacea, Vegetación hidrófila + +http://ramsac.ign.gob.ar/operaciones_sig/shp_from_geoserver/download.php?f=c2hwOjp2ZWdldGFjaW9uX2FyYm9yZWEuemlw + +Download: + +```sh +mkdir -p $GISDATA/vegetation/Argentina +cd $GISDATA/vegetation/Argentina + +for arch in cultivo sin_vegetacion vegetacion_arborea vegetacion_arbustiva vegetacion_herbacea_EB010 vegetacion_hidrofila_ED020 +do + mv ~/Downloads/$arch.zip $GISDATA/vegetation/Argentina/ +done +``` + +Import in postgis +```sh + +psql gisdata -c "CREATE SCHEMA ignra" + + cd $WORKDIR + +for arch in vegetacion_herbacea_EB010 vegetacion_hidrofila_ED020 +do + unzip $GISDATA/vegetation/Argentina/$arch.zip + ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=ignra -nlt PROMOTE_TO_MULTI $arch.shp + rm $arch.* +done + +for arch in cultivo sin_vegetacion vegetacion_arborea vegetacion_arbustiva +do + unzip $GISDATA/vegetation/Argentina/$arch.zip + for ziparch in $(ls shp/*zip) + do + unzip $ziparch + ogr2ogr -f "PostgreSQL" PG:"host=localhost user=jferrer dbname=gisdata" -lco SCHEMA=ignra -nlt PROMOTE_TO_MULTI $(basename $ziparch | sed s/.zip/.shp/) + done + rm -r * +done + +psql gisdata -c "SELECT objeto,count(*) AS n FROM ignra.vegetacion_arbustiva_eb015 GROUP BY objeto" +psql gisdata -c"SELECT count(*) FROM ignra.vegetacion_arbustiva_eb015 WHERE objeto IN ('Estepa Arbustiva','Etapa arbustiva','Estepa arbustiva')" +psql gisdata -c "SELECT objeto,count(*) AS n FROM ignra.vegetacion_arbustiva_eb020 GROUP BY objeto" + +``` From 99cd768a2b22422bef142c472ac4b9ae2d712b2d Mon Sep 17 00:00:00 2001 From: jrfep Date: Sun, 16 Apr 2023 16:07:07 +1000 Subject: [PATCH 23/23] need to read this if I want to add fonts awesome --- docusite/src/pages/how-to-site.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docusite/src/pages/how-to-site.md b/docusite/src/pages/how-to-site.md index 4d4893c..3f4e31a 100644 --- a/docusite/src/pages/how-to-site.md +++ b/docusite/src/pages/how-to-site.md @@ -10,18 +10,15 @@ We built this awesome documentation site using https://docusaurus.io/docs First we installed [Node.js](https://nodejs.org/en/download/) (recommended version 16.14 or above). -:::warning npx version +:::caution npx version Make sure we deactivate conda to use the downloaded npx version: ```sh conda deactivate which npx -npx -v +npx -v # This sites works with `9.5.1`. ``` - -This sites works with `9.5.1`. - ::: Then we _npx_ docusaurus: @@ -57,6 +54,12 @@ I have done most of this using just markdown, because I just haven't got much ti I am using the **classic template** because I just don't have time to explore and tweak templates and themes. +### Using fontawesome + +I will need to read the docs... + +https://docusaurus.community/knowledge/design/icons/fontawesome/ + ### Images - undraw svgs shipped with docusaurus