From 9b4c6b9e2ca33cbab0e90f44658b0c39a0954423 Mon Sep 17 00:00:00 2001 From: softsimon Date: Sun, 24 Apr 2022 22:53:27 +0400 Subject: [PATCH 01/10] Moving Docs and Faq to separate lazy loaded module --- frontend/src/app/app-routing.module.ts | 74 +++---------------- frontend/src/app/app.module.ts | 18 ----- frontend/src/app/bisq/bisq.routing.module.ts | 14 +--- .../docs => docs/api-docs}/api-docs-data.ts | 0 .../api-docs}/api-docs-nav.component.html | 0 .../api-docs}/api-docs-nav.component.scss | 0 .../api-docs}/api-docs-nav.component.ts | 0 .../api-docs}/api-docs.component.html | 0 .../api-docs}/api-docs.component.scss | 0 .../api-docs}/api-docs.component.ts | 4 +- .../code-template.component.html | 0 .../code-template.component.scss | 0 .../code-template}/code-template.component.ts | 2 +- frontend/src/app/docs/docs.module.ts | 22 ++++++ frontend/src/app/docs/docs.routing.module.ts | 58 +++++++++++++++ .../docs/docs.component.html | 0 .../docs/docs.component.scss | 0 .../docs/docs.component.ts | 8 +- frontend/src/app/shared/shared.module.ts | 19 +++++ 19 files changed, 118 insertions(+), 101 deletions(-) rename frontend/src/app/{components/docs => docs/api-docs}/api-docs-data.ts (100%) rename frontend/src/app/{components/docs => docs/api-docs}/api-docs-nav.component.html (100%) rename frontend/src/app/{components/docs => docs/api-docs}/api-docs-nav.component.scss (100%) rename frontend/src/app/{components/docs => docs/api-docs}/api-docs-nav.component.ts (100%) rename frontend/src/app/{components/docs => docs/api-docs}/api-docs.component.html (100%) rename frontend/src/app/{components/docs => docs/api-docs}/api-docs.component.scss (100%) rename frontend/src/app/{components/docs => docs/api-docs}/api-docs.component.ts (97%) rename frontend/src/app/{components/docs => docs/code-template}/code-template.component.html (100%) rename frontend/src/app/{components/docs => docs/code-template}/code-template.component.scss (100%) rename frontend/src/app/{components/docs => docs/code-template}/code-template.component.ts (99%) create mode 100644 frontend/src/app/docs/docs.module.ts create mode 100644 frontend/src/app/docs/docs.routing.module.ts rename frontend/src/app/{components => docs}/docs/docs.component.html (100%) rename frontend/src/app/{components => docs}/docs/docs.component.scss (100%) rename frontend/src/app/{components => docs}/docs/docs.component.ts (84%) diff --git a/frontend/src/app/app-routing.module.ts b/frontend/src/app/app-routing.module.ts index a9485f823..13465a612 100644 --- a/frontend/src/app/app-routing.module.ts +++ b/frontend/src/app/app-routing.module.ts @@ -14,7 +14,6 @@ import { AssetsNavComponent } from './components/assets/assets-nav/assets-nav.co import { StatusViewComponent } from './components/status-view/status-view.component'; import { DashboardComponent } from './dashboard/dashboard.component'; import { LatestBlocksComponent } from './components/latest-blocks/latest-blocks.component'; -import { DocsComponent } from './components/docs/docs.component'; import { TermsOfServiceComponent } from './components/terms-of-service/terms-of-service.component'; import { PrivacyPolicyComponent } from './components/privacy-policy/privacy-policy.component'; import { TrademarkPolicyComponent } from './components/trademark-policy/trademark-policy.component'; @@ -138,25 +137,13 @@ let routes: Routes = [ path: 'about', component: AboutComponent, }, - { - path: 'docs/api/:type', - component: DocsComponent - }, - { - path: 'docs/faq', - component: DocsComponent - }, - { - path: 'docs/api', - redirectTo: 'docs/api/rest' - }, { path: 'docs', - redirectTo: 'docs/faq' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'api', - redirectTo: 'docs/api/rest' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'terms-of-service', @@ -281,25 +268,13 @@ let routes: Routes = [ children: [], component: AddressComponent }, - { - path: 'docs/api/:type', - component: DocsComponent - }, - { - path: 'docs/faq', - component: DocsComponent - }, - { - path: 'docs/api', - redirectTo: 'docs/api/rest' - }, { path: 'docs', - redirectTo: 'docs/faq' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'api', - redirectTo: 'docs/api/rest' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, ], }, @@ -421,25 +396,13 @@ let routes: Routes = [ children: [], component: AddressComponent }, - { - path: 'docs/api/:type', - component: DocsComponent - }, - { - path: 'docs/faq', - component: DocsComponent - }, - { - path: 'docs/api', - redirectTo: 'docs/api/rest' - }, { path: 'docs', - redirectTo: 'docs/faq' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'api', - redirectTo: 'docs/api/rest' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, ], }, @@ -567,21 +530,13 @@ if (browserWindowEnv && browserWindowEnv.BASE_MODULE === 'liquid') { } ] }, - { - path: 'docs/api/:type', - component: DocsComponent - }, - { - path: 'docs/api', - redirectTo: 'docs/api/rest' - }, { path: 'docs', - redirectTo: 'docs/api/rest' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'api', - redirectTo: 'docs/api/rest' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'about', @@ -679,21 +634,13 @@ if (browserWindowEnv && browserWindowEnv.BASE_MODULE === 'liquid') { } ] }, - { - path: 'docs/api/:type', - component: DocsComponent - }, - { - path: 'docs/api', - redirectTo: 'docs/api/rest' - }, { path: 'docs', - redirectTo: 'docs/api/rest' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'api', - redirectTo: 'docs/api/rest' + loadChildren: () => import('./docs/docs.module').then(m => m.DocsModule) }, { path: 'about', @@ -743,7 +690,6 @@ if (browserWindowEnv && browserWindowEnv.BASE_MODULE === 'liquid') { scrollPositionRestoration: 'enabled', anchorScrolling: 'enabled' })], - exports: [RouterModule] }) export class AppRoutingModule { } diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 27a637efc..8738c37f1 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -12,7 +12,6 @@ import { StartComponent } from './components/start/start.component'; import { ElectrsApiService } from './services/electrs-api.service'; import { TransactionComponent } from './components/transaction/transaction.component'; import { TransactionsListComponent } from './components/transactions-list/transactions-list.component'; -import { AmountComponent } from './components/amount/amount.component'; import { StateService } from './services/state.service'; import { BlockComponent } from './components/block/block.component'; import { AddressComponent } from './components/address/address.component'; @@ -20,15 +19,12 @@ import { SearchFormComponent } from './components/search-form/search-form.compon import { LatestBlocksComponent } from './components/latest-blocks/latest-blocks.component'; import { WebsocketService } from './services/websocket.service'; import { AddressLabelsComponent } from './components/address-labels/address-labels.component'; -import { MempoolBlocksComponent } from './components/mempool-blocks/mempool-blocks.component'; import { MasterPageComponent } from './components/master-page/master-page.component'; import { BisqMasterPageComponent } from './components/bisq-master-page/bisq-master-page.component'; import { LiquidMasterPageComponent } from './components/liquid-master-page/liquid-master-page.component'; import { AboutComponent } from './components/about/about.component'; import { TelevisionComponent } from './components/television/television.component'; import { StatisticsComponent } from './components/statistics/statistics.component'; -import { BlockchainBlocksComponent } from './components/blockchain-blocks/blockchain-blocks.component'; -import { BlockchainComponent } from './components/blockchain/blockchain.component'; import { FooterComponent } from './components/footer/footer.component'; import { AudioService } from './services/audio.service'; import { MempoolBlockComponent } from './components/mempool-block/mempool-block.component'; @@ -53,11 +49,6 @@ import { DifficultyComponent } from './components/difficulty/difficulty.componen import { FontAwesomeModule, FaIconLibrary } from '@fortawesome/angular-fontawesome'; import { faFilter, faAngleDown, faAngleUp, faAngleRight, faAngleLeft, faBolt, faChartArea, faCogs, faCubes, faHammer, faDatabase, faExchangeAlt, faInfoCircle, faLink, faList, faSearch, faCaretUp, faCaretDown, faTachometerAlt, faThList, faTint, faTv, faAngleDoubleDown, faSortUp, faAngleDoubleUp, faChevronDown, faFileAlt, faRedoAlt, faArrowAltCircleRight, faExternalLinkAlt, faBook, faListUl } from '@fortawesome/free-solid-svg-icons'; -import { ApiDocsComponent } from './components/docs/api-docs.component'; -import { DocsComponent } from './components/docs/docs.component'; -import { ApiDocsNavComponent } from './components/docs/api-docs-nav.component'; -import { NoSanitizePipe } from './shared/pipes/no-sanitize.pipe'; -import { CodeTemplateComponent } from './components/docs/code-template.component'; import { TermsOfServiceComponent } from './components/terms-of-service/terms-of-service.component'; import { PrivacyPolicyComponent } from './components/privacy-policy/privacy-policy.component'; import { TrademarkPolicyComponent } from './components/trademark-policy/trademark-policy.component'; @@ -93,20 +84,16 @@ import { BlockFeeRatesGraphComponent } from './components/block-fee-rates-graph/ BisqMasterPageComponent, LiquidMasterPageComponent, TelevisionComponent, - BlockchainComponent, StartComponent, - BlockchainBlocksComponent, StatisticsComponent, TransactionComponent, BlockComponent, TransactionsListComponent, AddressComponent, - AmountComponent, LatestBlocksComponent, SearchFormComponent, TimeSpanComponent, AddressLabelsComponent, - MempoolBlocksComponent, FooterComponent, MempoolBlockComponent, FeeDistributionGraphComponent, @@ -122,16 +109,11 @@ import { BlockFeeRatesGraphComponent } from './components/block-fee-rates-graph/ FeesBoxComponent, DashboardComponent, DifficultyComponent, - ApiDocsComponent, - NoSanitizePipe, - CodeTemplateComponent, TermsOfServiceComponent, PrivacyPolicyComponent, TrademarkPolicyComponent, SponsorComponent, PushTransactionComponent, - DocsComponent, - ApiDocsNavComponent, AssetsNavComponent, AssetsFeaturedComponent, AssetGroupComponent, diff --git a/frontend/src/app/bisq/bisq.routing.module.ts b/frontend/src/app/bisq/bisq.routing.module.ts index 73dffee51..f7385ae63 100644 --- a/frontend/src/app/bisq/bisq.routing.module.ts +++ b/frontend/src/app/bisq/bisq.routing.module.ts @@ -7,7 +7,6 @@ import { BisqBlockComponent } from './bisq-block/bisq-block.component'; import { BisqBlocksComponent } from './bisq-blocks/bisq-blocks.component'; import { BisqAddressComponent } from './bisq-address/bisq-address.component'; import { BisqStatsComponent } from './bisq-stats/bisq-stats.component'; -import { DocsComponent } from '../components/docs/docs.component'; import { BisqDashboardComponent } from './bisq-dashboard/bisq-dashboard.component'; import { BisqMarketComponent } from './bisq-market/bisq-market.component'; import { BisqMainDashboardComponent } from './bisq-main-dashboard/bisq-main-dashboard.component'; @@ -60,21 +59,13 @@ const routes: Routes = [ path: 'about', component: AboutComponent, }, - { - path: 'docs/api/:type', - component: DocsComponent - }, - { - path: 'docs/api', - redirectTo: 'docs/api/rest' - }, { path: 'docs', - redirectTo: 'docs/api/rest' + loadChildren: () => import('../docs/docs.module').then(m => m.DocsModule) }, { path: 'api', - redirectTo: 'docs/api/rest' + loadChildren: () => import('../docs/docs.module').then(m => m.DocsModule) }, { path: 'terms-of-service', @@ -88,6 +79,5 @@ const routes: Routes = [ @NgModule({ imports: [RouterModule.forChild(routes)], - exports: [RouterModule] }) export class BisqRoutingModule { } diff --git a/frontend/src/app/components/docs/api-docs-data.ts b/frontend/src/app/docs/api-docs/api-docs-data.ts similarity index 100% rename from frontend/src/app/components/docs/api-docs-data.ts rename to frontend/src/app/docs/api-docs/api-docs-data.ts diff --git a/frontend/src/app/components/docs/api-docs-nav.component.html b/frontend/src/app/docs/api-docs/api-docs-nav.component.html similarity index 100% rename from frontend/src/app/components/docs/api-docs-nav.component.html rename to frontend/src/app/docs/api-docs/api-docs-nav.component.html diff --git a/frontend/src/app/components/docs/api-docs-nav.component.scss b/frontend/src/app/docs/api-docs/api-docs-nav.component.scss similarity index 100% rename from frontend/src/app/components/docs/api-docs-nav.component.scss rename to frontend/src/app/docs/api-docs/api-docs-nav.component.scss diff --git a/frontend/src/app/components/docs/api-docs-nav.component.ts b/frontend/src/app/docs/api-docs/api-docs-nav.component.ts similarity index 100% rename from frontend/src/app/components/docs/api-docs-nav.component.ts rename to frontend/src/app/docs/api-docs/api-docs-nav.component.ts diff --git a/frontend/src/app/components/docs/api-docs.component.html b/frontend/src/app/docs/api-docs/api-docs.component.html similarity index 100% rename from frontend/src/app/components/docs/api-docs.component.html rename to frontend/src/app/docs/api-docs/api-docs.component.html diff --git a/frontend/src/app/components/docs/api-docs.component.scss b/frontend/src/app/docs/api-docs/api-docs.component.scss similarity index 100% rename from frontend/src/app/components/docs/api-docs.component.scss rename to frontend/src/app/docs/api-docs/api-docs.component.scss diff --git a/frontend/src/app/components/docs/api-docs.component.ts b/frontend/src/app/docs/api-docs/api-docs.component.ts similarity index 97% rename from frontend/src/app/components/docs/api-docs.component.ts rename to frontend/src/app/docs/api-docs/api-docs.component.ts index 39f611310..6c645a14f 100644 --- a/frontend/src/app/components/docs/api-docs.component.ts +++ b/frontend/src/app/docs/api-docs/api-docs.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core'; -import { Env, StateService } from 'src/app/services/state.service'; +import { Env, StateService } from '../../services/state.service'; import { Observable, merge, of } from 'rxjs'; -import { SeoService } from 'src/app/services/seo.service'; +import { SeoService } from '../../services/seo.service'; import { tap } from 'rxjs/operators'; import { ActivatedRoute } from "@angular/router"; import { faqData, restApiDocsData, wsApiDocsData } from './api-docs-data'; diff --git a/frontend/src/app/components/docs/code-template.component.html b/frontend/src/app/docs/code-template/code-template.component.html similarity index 100% rename from frontend/src/app/components/docs/code-template.component.html rename to frontend/src/app/docs/code-template/code-template.component.html diff --git a/frontend/src/app/components/docs/code-template.component.scss b/frontend/src/app/docs/code-template/code-template.component.scss similarity index 100% rename from frontend/src/app/components/docs/code-template.component.scss rename to frontend/src/app/docs/code-template/code-template.component.scss diff --git a/frontend/src/app/components/docs/code-template.component.ts b/frontend/src/app/docs/code-template/code-template.component.ts similarity index 99% rename from frontend/src/app/components/docs/code-template.component.ts rename to frontend/src/app/docs/code-template/code-template.component.ts index cc7b8254e..69478f26c 100644 --- a/frontend/src/app/components/docs/code-template.component.ts +++ b/frontend/src/app/docs/code-template/code-template.component.ts @@ -1,5 +1,5 @@ import { Component, Input, OnInit } from '@angular/core'; -import { Env, StateService } from 'src/app/services/state.service'; +import { Env, StateService } from '../../services/state.service'; @Component({ selector: 'app-code-template', diff --git a/frontend/src/app/docs/docs.module.ts b/frontend/src/app/docs/docs.module.ts new file mode 100644 index 000000000..134886c5d --- /dev/null +++ b/frontend/src/app/docs/docs.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { SharedModule } from '../shared/shared.module'; +import { ApiDocsComponent } from './/api-docs/api-docs.component'; +import { DocsComponent } from './docs/docs.component'; +import { ApiDocsNavComponent } from './api-docs/api-docs-nav.component'; +import { CodeTemplateComponent } from './code-template/code-template.component'; +import { DocsRoutingModule } from './docs.routing.module'; +@NgModule({ + declarations: [ + ApiDocsComponent, + CodeTemplateComponent, + ApiDocsNavComponent, + DocsComponent, + ], + imports: [ + CommonModule, + SharedModule, + DocsRoutingModule, + ] +}) +export class DocsModule { } diff --git a/frontend/src/app/docs/docs.routing.module.ts b/frontend/src/app/docs/docs.routing.module.ts new file mode 100644 index 000000000..52eb54f2e --- /dev/null +++ b/frontend/src/app/docs/docs.routing.module.ts @@ -0,0 +1,58 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { DocsComponent } from './docs/docs.component'; + +const browserWindow = window || {}; +// @ts-ignore +const browserWindowEnv = browserWindow.__env || {}; + +let routes: Routes = []; + +if (browserWindowEnv.BASE_MODULE && (browserWindowEnv.BASE_MODULE === 'bisq' || browserWindowEnv.BASE_MODULE === 'liquid')) { + routes = [ + { + path: '', + redirectTo: 'api/rest' + }, + { + path: 'api/:type', + component: DocsComponent + }, + { + path: 'api', + redirectTo: 'api/rest' + }, + { + path: '**', + redirectTo: 'api/rest' + } + ]; +} else { + routes = [ + { + path: '', + redirectTo: 'faq' + }, + { + path: 'api/:type', + component: DocsComponent + }, + { + path: 'faq', + component: DocsComponent + }, + { + path: 'api', + redirectTo: 'api/rest' + }, + { + path: '**', + redirectTo: 'api/faq' + } + ]; +} + +@NgModule({ + imports: [RouterModule.forChild(routes)], +}) +export class DocsRoutingModule { } diff --git a/frontend/src/app/components/docs/docs.component.html b/frontend/src/app/docs/docs/docs.component.html similarity index 100% rename from frontend/src/app/components/docs/docs.component.html rename to frontend/src/app/docs/docs/docs.component.html diff --git a/frontend/src/app/components/docs/docs.component.scss b/frontend/src/app/docs/docs/docs.component.scss similarity index 100% rename from frontend/src/app/components/docs/docs.component.scss rename to frontend/src/app/docs/docs/docs.component.scss diff --git a/frontend/src/app/components/docs/docs.component.ts b/frontend/src/app/docs/docs/docs.component.ts similarity index 84% rename from frontend/src/app/components/docs/docs.component.ts rename to frontend/src/app/docs/docs/docs.component.ts index 2d0d0b55a..9a06f1127 100644 --- a/frontend/src/app/components/docs/docs.component.ts +++ b/frontend/src/app/docs/docs/docs.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, HostBinding } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { Env, StateService } from 'src/app/services/state.service'; -import { WebsocketService } from 'src/app/services/websocket.service'; +import { Env, StateService } from '../../services/state.service'; +import { WebsocketService } from '../../services/websocket.service'; @Component({ selector: 'app-docs', @@ -26,9 +26,9 @@ export class DocsComponent implements OnInit { ngOnInit(): void { this.websocket.want(['blocks']); const url = this.route.snapshot.url; - if( url[1].path === "faq" ) { + if (url[0].path === "faq" ) { this.activeTab = 0; - } else if( url[2].path === "rest" ) { + } else if( url[1].path === "rest" ) { this.activeTab = 1; } else { this.activeTab = 2; diff --git a/frontend/src/app/shared/shared.module.ts b/frontend/src/app/shared/shared.module.ts index b29303c27..aa23bb639 100644 --- a/frontend/src/app/shared/shared.module.ts +++ b/frontend/src/app/shared/shared.module.ts @@ -12,6 +12,7 @@ import { RelativeUrlPipe } from './pipes/relative-url/relative-url.pipe'; import { ScriptpubkeyTypePipe } from './pipes/scriptpubkey-type-pipe/scriptpubkey-type.pipe'; import { BytesPipe } from './pipes/bytes-pipe/bytes.pipe'; import { WuBytesPipe } from './pipes/bytes-pipe/wubytes.pipe'; +import { BlockchainComponent } from '../components/blockchain/blockchain.component'; import { TimeSinceComponent } from '../components/time-since/time-since.component'; import { TimeUntilComponent } from '../components/time-until/time-until.component'; import { ClipboardComponent } from '../components/clipboard/clipboard.component'; @@ -23,6 +24,11 @@ import { TxFeeRatingComponent } from '../components/tx-fee-rating/tx-fee-rating. import { ReactiveFormsModule } from '@angular/forms'; import { LanguageSelectorComponent } from '../components/language-selector/language-selector.component'; import { ColoredPriceDirective } from './directives/colored-price.directive'; +import { NoSanitizePipe } from './pipes/no-sanitize.pipe'; +import { MempoolBlocksComponent } from '../components/mempool-blocks/mempool-blocks.component'; +import { BlockchainBlocksComponent } from '../components/blockchain-blocks/blockchain-blocks.component'; +import { AmountComponent } from '../components/amount/amount.component'; +import { RouterModule } from '@angular/router'; @NgModule({ declarations: [ @@ -36,6 +42,7 @@ import { ColoredPriceDirective } from './directives/colored-price.directive'; LanguageSelectorComponent, ScriptpubkeyTypePipe, RelativeUrlPipe, + NoSanitizePipe, Hex2asciiPipe, AsmStylerPipe, AbsolutePipe, @@ -47,9 +54,14 @@ import { ColoredPriceDirective } from './directives/colored-price.directive'; Decimal2HexPipe, FeeRoundingPipe, ColoredPriceDirective, + BlockchainComponent, + MempoolBlocksComponent, + BlockchainBlocksComponent, + AmountComponent, ], imports: [ CommonModule, + RouterModule, ReactiveFormsModule, NgbNavModule, NgbTooltipModule, @@ -61,8 +73,10 @@ import { ColoredPriceDirective } from './directives/colored-price.directive'; providers: [ VbytesPipe, RelativeUrlPipe, + NoSanitizePipe, ], exports: [ + RouterModule, NgbAccordionModule, NgbNavModule, CommonModule, @@ -92,6 +106,11 @@ import { ColoredPriceDirective } from './directives/colored-price.directive'; Decimal2HexPipe, FeeRoundingPipe, ColoredPriceDirective, + NoSanitizePipe, + BlockchainComponent, + MempoolBlocksComponent, + BlockchainBlocksComponent, + AmountComponent, ] }) export class SharedModule {} From 0f4e0c74138123078a51a92eab384764f7d845d8 Mon Sep 17 00:00:00 2001 From: Felipe Knorr Kuhn <100320+knorrium@users.noreply.github.com> Date: Fri, 29 Apr 2022 22:01:22 -0700 Subject: [PATCH 02/10] Fix datababse typo --- backend/src/api/database-migration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/api/database-migration.ts b/backend/src/api/database-migration.ts index 45b82a3a5..80c338a20 100644 --- a/backend/src/api/database-migration.ts +++ b/backend/src/api/database-migration.ts @@ -56,7 +56,7 @@ class DatabaseMigration { } if (DatabaseMigration.currentVersion > databaseSchemaVersion) { - logger.notice('MIGRATIONS: Upgrading datababse schema'); + logger.notice('MIGRATIONS: Upgrading database schema'); try { await this.$migrateTableSchemaFromVersion(databaseSchemaVersion); logger.notice(`MIGRATIONS: OK. Database schema have been migrated from version ${databaseSchemaVersion} to ${DatabaseMigration.currentVersion} (latest version)`); From 9dcf42121686c5761907e6a49d19abc08905d50f Mon Sep 17 00:00:00 2001 From: softsimon Date: Thu, 28 Apr 2022 14:37:58 +0400 Subject: [PATCH 03/10] Upgrading npm packages and --- backend/package-lock.json | 869 ++++++++++-------- backend/package.json | 18 +- frontend/package-lock.json | 1690 +++++++++++++++++++----------------- frontend/package.json | 42 +- 4 files changed, 1414 insertions(+), 1205 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 33ef22b07..f887af417 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -10,20 +10,20 @@ "license": "GNU Affero General Public License v3.0", "dependencies": { "@mempool/electrum-client": "^1.1.7", - "@types/ws": "8.2.2", - "axios": "0.24.0", + "axios": "~0.27.2", "bitcoinjs-lib": "6.0.1", "crypto-js": "^4.0.0", - "express": "^4.17.1", + "express": "^4.18.0", "mysql2": "2.3.3", - "node-worker-threads-pool": "^1.4.3", - "socks-proxy-agent": "^6.1.1", - "typescript": "4.4.4", - "ws": "8.3.0" + "node-worker-threads-pool": "^1.5.1", + "socks-proxy-agent": "^6.2.0", + "typescript": "~4.6.3", + "ws": "~8.3.0" }, "devDependencies": { - "@types/compression": "^1.0.1", - "@types/express": "^4.17.2", + "@types/compression": "^1.7.2", + "@types/express": "^4.17.13", + "@types/ws": "~8.5.3", "tslint": "^6.1.0" } }, @@ -72,9 +72,9 @@ } }, "node_modules/@types/compression": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.0.tgz", - "integrity": "sha512-3LzWUM+3k3XdWOUk/RO+uSjv7YWOatYq2QADJntK1pjkk4DfVP0KrIEPDnXRJxAAGKe0VpIPRmlINLDuCedZWw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", + "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", "dev": true, "dependencies": { "@types/express": "*" @@ -90,21 +90,21 @@ } }, "node_modules/@types/express": { - "version": "4.17.9", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.9.tgz", - "integrity": "sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dev": true, "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "*", + "@types/express-serve-static-core": "^4.17.18", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.17.tgz", - "integrity": "sha512-YYlVaCni5dnHc+bLZfY908IG1+x5xuibKZMGv8srKkvtul3wUuanYvpIj9GXXoWkQbaAdR+kgX46IETKUALWNQ==", + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", "dev": true, "dependencies": { "@types/node": "*", @@ -121,18 +121,19 @@ "node_modules/@types/node": { "version": "14.14.20", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==" + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", + "dev": true }, "node_modules/@types/qs": { - "version": "6.9.5", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz", - "integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, "node_modules/@types/serve-static": { @@ -146,20 +147,21 @@ } }, "node_modules/@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "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.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { "node": ">= 0.6" @@ -223,12 +225,18 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "node_modules/axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "dependencies": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, "node_modules/balanced-match": { @@ -276,23 +284,26 @@ } }, "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "dependencies": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, "node_modules/brace-expansion": { @@ -333,13 +344,25 @@ } }, "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "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/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/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -378,6 +401,17 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -391,21 +425,16 @@ "dev": true }, "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "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.1.2" + "safe-buffer": "5.2.1" }, "engines": { "node": ">= 0.6" } }, - "node_modules/content-disposition/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/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -415,9 +444,9 @@ } }, "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "engines": { "node": ">= 0.6" } @@ -452,6 +481,14 @@ "ms": "2.0.0" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/denque": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", @@ -461,17 +498,21 @@ } }, "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "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.6" + "node": ">= 0.8" } }, "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "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/diff": { "version": "4.0.2", @@ -531,37 +572,38 @@ } }, "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.0.tgz", + "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "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" @@ -570,22 +612,17 @@ "node": ">= 0.10.0" } }, - "node_modules/express/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/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { @@ -611,10 +648,23 @@ } } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { "node": ">= 0.6" } @@ -636,8 +686,7 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/generate-function": { "version": "2.3.1", @@ -647,6 +696,19 @@ "is-property": "^1.0.2" } }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -671,7 +733,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -688,6 +749,17 @@ "node": ">=4" } }, + "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/hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -702,25 +774,20 @@ } }, "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "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": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -855,19 +922,19 @@ } }, "node_modules/mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "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.45.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -963,22 +1030,30 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "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/node-worker-threads-pool": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/node-worker-threads-pool/-/node-worker-threads-pool-1.4.3.tgz", - "integrity": "sha512-US55ZGzEDQY2oq8Bc33dFVNKGpx4KaCJqThMDomSsUeX8tMdp2eDjQ6OP0yFd1HTEuHuLqxXSTWC4eidEsbXlg==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/node-worker-threads-pool/-/node-worker-threads-pool-1.5.1.tgz", + "integrity": "sha512-7TXAhpMm+jO4MfESxYLtMGSnJWv+itdNHMdaFmeZuPXxwFGU90mtEB42BciUULXOUAxYBfXILAuvrSG3rQZ7mw==" + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "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" }, @@ -1024,11 +1099,11 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "node_modules/proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "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.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" }, "engines": { @@ -1041,11 +1116,17 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "dependencies": { + "side-channel": "^1.0.4" + }, "engines": { "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/range-parser": { @@ -1057,12 +1138,12 @@ } }, "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "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.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, @@ -1139,32 +1220,32 @@ } }, "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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": "~1.1.2", - "destroy": "~1.0.4", + "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": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1172,23 +1253,23 @@ "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" }, "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "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.17.1" + "send": "0.18.0" }, "engines": { "node": ">= 0.8.0" } }, "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/sha.js": { "version": "2.4.11", @@ -1202,6 +1283,19 @@ "sha.js": "bin.js" } }, + "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/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -1212,12 +1306,12 @@ } }, "node_modules/socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "dependencies": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" }, "engines": { "node": ">= 10.13.0", @@ -1225,13 +1319,13 @@ } }, "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", "dependencies": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { "node": ">= 10" @@ -1273,11 +1367,11 @@ } }, "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/string_decoder": { @@ -1301,9 +1395,9 @@ } }, "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "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" } @@ -1375,9 +1469,9 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "node_modules/typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1506,9 +1600,9 @@ } }, "@types/compression": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.0.tgz", - "integrity": "sha512-3LzWUM+3k3XdWOUk/RO+uSjv7YWOatYq2QADJntK1pjkk4DfVP0KrIEPDnXRJxAAGKe0VpIPRmlINLDuCedZWw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.7.2.tgz", + "integrity": "sha512-lwEL4M/uAGWngWFLSG87ZDr2kLrbuR8p7X+QZB1OQlT+qkHsCPDVFnHPyXf4Vyl4yDDorNY+mAhosxkCvppatg==", "dev": true, "requires": { "@types/express": "*" @@ -1524,21 +1618,21 @@ } }, "@types/express": { - "version": "4.17.9", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.9.tgz", - "integrity": "sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "dev": true, "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "*", + "@types/express-serve-static-core": "^4.17.18", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.17.tgz", - "integrity": "sha512-YYlVaCni5dnHc+bLZfY908IG1+x5xuibKZMGv8srKkvtul3wUuanYvpIj9GXXoWkQbaAdR+kgX46IETKUALWNQ==", + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", "dev": true, "requires": { "@types/node": "*", @@ -1555,18 +1649,19 @@ "@types/node": { "version": "14.14.20", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", - "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==" + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", + "dev": true }, "@types/qs": { - "version": "6.9.5", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz", - "integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", "dev": true }, "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", "dev": true }, "@types/serve-static": { @@ -1580,20 +1675,21 @@ } }, "@types/ws": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz", - "integrity": "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, "requires": { "@types/node": "*" } }, "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "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==", "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" } }, "agent-base": { @@ -1642,12 +1738,18 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, "axios": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", - "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" } }, "balanced-match": { @@ -1689,20 +1791,22 @@ } }, "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", "requires": { - "bytes": "3.1.0", + "bytes": "3.1.2", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" + "on-finished": "2.4.1", + "qs": "6.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" } }, "brace-expansion": { @@ -1740,9 +1844,18 @@ "dev": true }, "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } }, "chalk": { "version": "2.4.2", @@ -1779,6 +1892,14 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -1792,18 +1913,11 @@ "dev": true }, "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "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==" - } + "safe-buffer": "5.2.1" } }, "content-type": { @@ -1812,9 +1926,9 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" }, "cookie-signature": { "version": "1.0.6", @@ -1846,20 +1960,25 @@ "ms": "2.0.0" } }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, "denque": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz", "integrity": "sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==" }, "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, "diff": { "version": "4.0.2", @@ -1900,60 +2019,54 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.0.tgz", + "integrity": "sha512-EJEXxiTQJS3lIPrU1AE2vRuT7X7E+0KBbpm5GSoK524yl0K8X+er8zS2P14E64eqsVNoWbMCT7MpmQ+ErAhgRg==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.0", + "cookie": "0.5.0", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "~1.1.2", + "depd": "2.0.0", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "~1.1.2", + "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.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", + "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" - }, - "dependencies": { - "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==" - } } }, "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", "escape-html": "~1.0.3", - "on-finished": "~2.3.0", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~1.5.0", + "statuses": "2.0.1", "unpipe": "~1.0.0" } }, @@ -1962,10 +2075,20 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fresh": { "version": "0.5.2", @@ -1981,8 +2104,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "generate-function": { "version": "2.3.1", @@ -1992,6 +2114,16 @@ "is-property": "^1.0.2" } }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", @@ -2010,7 +2142,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -2021,6 +2152,11 @@ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", @@ -2032,22 +2168,15 @@ } }, "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" } }, "iconv-lite": { @@ -2157,16 +2286,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.45.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", - "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, "mime-types": { - "version": "2.1.28", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", - "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "requires": { - "mime-db": "1.45.0" + "mime-db": "1.52.0" } }, "minimatch": { @@ -2248,19 +2377,24 @@ } }, "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, "node-worker-threads-pool": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/node-worker-threads-pool/-/node-worker-threads-pool-1.4.3.tgz", - "integrity": "sha512-US55ZGzEDQY2oq8Bc33dFVNKGpx4KaCJqThMDomSsUeX8tMdp2eDjQ6OP0yFd1HTEuHuLqxXSTWC4eidEsbXlg==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/node-worker-threads-pool/-/node-worker-threads-pool-1.5.1.tgz", + "integrity": "sha512-7TXAhpMm+jO4MfESxYLtMGSnJWv+itdNHMdaFmeZuPXxwFGU90mtEB42BciUULXOUAxYBfXILAuvrSG3rQZ7mw==" + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" }, "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "requires": { "ee-first": "1.1.1" } @@ -2297,11 +2431,11 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "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==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -2311,9 +2445,12 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", + "requires": { + "side-channel": "^1.0.4" + } }, "range-parser": { "version": "1.2.1", @@ -2321,12 +2458,12 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", + "bytes": "3.1.2", + "http-errors": "2.0.0", "iconv-lite": "0.4.24", "unpipe": "1.0.0" } @@ -2377,29 +2514,29 @@ "dev": true }, "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "requires": { "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", + "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": "~1.7.2", + "http-errors": "2.0.0", "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", + "ms": "2.1.3", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~1.5.0" + "statuses": "2.0.1" }, "dependencies": { "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" } } }, @@ -2409,20 +2546,20 @@ "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" }, "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.17.1" + "send": "0.18.0" } }, "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "sha.js": { "version": "2.4.11", @@ -2433,28 +2570,38 @@ "safe-buffer": "^5.0.1" } }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, "socks": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.1.tgz", - "integrity": "sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", + "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", "requires": { "ip": "^1.1.5", - "smart-buffer": "^4.1.0" + "smart-buffer": "^4.2.0" } }, "socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.0.tgz", + "integrity": "sha512-wWqJhjb32Q6GsrUqzuFkukxb/zzide5quXYcMVpIjxalDBBYy2nqKCFQ/9+Ie4dvOYSQdOk3hUlZSdzZOd3zMQ==", "requires": { "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" + "debug": "^4.3.3", + "socks": "^2.6.2" }, "dependencies": { "debug": { @@ -2484,9 +2631,9 @@ "integrity": "sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==" }, "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, "string_decoder": { "version": "1.3.0", @@ -2506,9 +2653,9 @@ } }, "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" }, "tslib": { "version": "1.14.1", @@ -2561,9 +2708,9 @@ "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", + "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==" }, "unpipe": { "version": "1.0.0", diff --git a/backend/package.json b/backend/package.json index 31bec5677..48a00d479 100644 --- a/backend/package.json +++ b/backend/package.json @@ -29,20 +29,20 @@ }, "dependencies": { "@mempool/electrum-client": "^1.1.7", - "@types/ws": "8.2.2", - "axios": "0.24.0", + "axios": "~0.27.2", "bitcoinjs-lib": "6.0.1", "crypto-js": "^4.0.0", - "express": "^4.17.1", + "express": "^4.18.0", "mysql2": "2.3.3", - "node-worker-threads-pool": "^1.4.3", - "socks-proxy-agent": "^6.1.1", - "typescript": "4.4.4", - "ws": "8.3.0" + "node-worker-threads-pool": "^1.5.1", + "socks-proxy-agent": "^6.2.0", + "typescript": "~4.6.3", + "ws": "~8.3.0" }, "devDependencies": { - "@types/compression": "^1.0.1", - "@types/express": "^4.17.2", + "@types/compression": "^1.7.2", + "@types/ws": "~8.5.3", + "@types/express": "^4.17.13", "tslint": "^6.1.0" } } diff --git a/frontend/package-lock.json b/frontend/package-lock.json index fc01e783d..87d57666c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -9,18 +9,18 @@ "version": "2.4.0-dev", "license": "GNU Affero General Public License v3.0", "dependencies": { - "@angular-devkit/build-angular": "^13.2.4", - "@angular/animations": "~13.2.3", - "@angular/cli": "~13.2.4", - "@angular/common": "~13.2.3", - "@angular/compiler": "~13.2.3", - "@angular/core": "~13.2.3", - "@angular/forms": "~13.2.3", - "@angular/localize": "^13.2.3", - "@angular/platform-browser": "~13.2.3", - "@angular/platform-browser-dynamic": "~13.2.3", - "@angular/platform-server": "~13.2.3", - "@angular/router": "~13.2.3", + "@angular-devkit/build-angular": "^13.3.4", + "@angular/animations": "~13.3.5", + "@angular/cli": "~13.3.4", + "@angular/common": "~13.3.5", + "@angular/compiler": "~13.3.5", + "@angular/core": "~13.3.5", + "@angular/forms": "~13.3.5", + "@angular/localize": "^13.3.5", + "@angular/platform-browser": "~13.3.5", + "@angular/platform-browser-dynamic": "~13.3.5", + "@angular/platform-server": "~13.3.5", + "@angular/router": "~13.3.5", "@fortawesome/angular-fontawesome": "0.10.1", "@fortawesome/fontawesome-common-types": "0.3.0", "@fortawesome/fontawesome-svg-core": "1.3.0", @@ -29,12 +29,12 @@ "@mempool/mempool.js": "2.3.0", "@ng-bootstrap/ng-bootstrap": "^11.0.0", "@nguniversal/express-engine": "12.1.3", - "@types/qrcode": "1.4.1", - "bootstrap": "4.5.0", + "@types/qrcode": "~1.4.2", + "bootstrap": "~4.5.0", "browserify": "^17.0.0", - "clipboard": "^2.0.4", + "clipboard": "^2.0.10", "domino": "^2.1.6", - "echarts": "5.3.0", + "echarts": "~5.3.2", "express": "^4.17.1", "lightweight-charts": "^3.3.0", "ngx-bootrap-multiselect": "^2.0.0", @@ -48,9 +48,9 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular/compiler-cli": "~13.2.3", - "@angular/language-service": "~13.2.3", - "@nguniversal/builders": "~13.0.2", + "@angular/compiler-cli": "~13.3.5", + "@angular/language-service": "~13.3.5", + "@nguniversal/builders": "~13.1.0", "@types/express": "^4.17.0", "@types/jasmine": "~3.6.0", "@types/jasminewd2": "~2.0.3", @@ -59,10 +59,10 @@ "http-proxy-middleware": "^1.0.5", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", - "karma": "~6.3.4", + "karma": "~6.3.19", "karma-chrome-launcher": "~3.1.0", "karma-coverage": "~2.0.3", - "karma-jasmine": "~4.0.0", + "karma-jasmine": "~5.0.0", "karma-jasmine-html-reporter": "^1.5.0", "ts-node": "~8.3.0", "tslint": "~6.1.0", @@ -90,12 +90,11 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1301.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1301.4.tgz", - "integrity": "sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==", - "dev": true, + "version": "0.1303.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.4.tgz", + "integrity": "sha512-d6YmIWdYvwk6WaknHRcJgiXeJvX9K5i8uPMAaL2P2/LU8n3moIQ59C7SP0uULcHuuiREEmFWOyyrWnGxZCI9bg==", "dependencies": { - "@angular-devkit/core": "13.1.4", + "@angular-devkit/core": "13.3.4", "rxjs": "6.6.7" }, "engines": { @@ -104,81 +103,15 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.1.4.tgz", - "integrity": "sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ==", - "dev": true, - "dependencies": { - "ajv": "8.8.2", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/architect/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "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/@angular-devkit/architect/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==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/architect/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==", - "dev": true - }, "node_modules/@angular-devkit/build-angular": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.4.tgz", - "integrity": "sha512-8fKIBMsQOIg+UFj+wL95SRYs/ED90cX3fjCKonE9TdOPLCEXC+nlZ0nbY45aGCmKiYlY9c9zhQiwgCGdVKSGYQ==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.4.tgz", + "integrity": "sha512-z74cmDi2V+5XpvyZKFlUXxvQ446shxyZk5aGdToG6n+0/IJWkDXSiryQkCo8nblGMze7HKf75i3DsGWYQZLDnQ==", "dependencies": { "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.4", - "@angular-devkit/build-webpack": "0.1302.4", - "@angular-devkit/core": "13.2.4", + "@angular-devkit/architect": "0.1303.4", + "@angular-devkit/build-webpack": "0.1303.4", + "@angular-devkit/core": "13.3.4", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -189,7 +122,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.4", + "@ngtools/webpack": "13.3.4", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -211,7 +144,7 @@ "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.4", + "minimatch": "3.0.5", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", @@ -223,18 +156,18 @@ "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.49.0", + "sass": "1.49.9", "sass-loader": "12.4.0", "semver": "7.3.5", "source-map-loader": "3.0.1", "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.10.0", + "terser": "5.11.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", - "webpack": "5.67.0", + "webpack": "5.70.0", "webpack-dev-middleware": "5.3.0", "webpack-dev-server": "4.7.3", "webpack-merge": "5.8.0", @@ -249,14 +182,14 @@ "esbuild": "0.14.22" }, "peerDependencies": { - "@angular/compiler-cli": "^13.0.0", - "@angular/localize": "^13.0.0", - "@angular/service-worker": "^13.0.0", + "@angular/compiler-cli": "^13.0.0 || ^13.3.0-rc.0", + "@angular/localize": "^13.0.0 || ^13.3.0-rc.0", + "@angular/service-worker": "^13.0.0 || ^13.3.0-rc.0", "karma": "^6.3.0", "ng-packagr": "^13.0.0", "protractor": "^7.0.0", "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=4.4.3 <4.6" + "typescript": ">=4.4.3 <4.7" }, "peerDependenciesMeta": { "@angular/localize": { @@ -279,33 +212,6 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/architect": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.4.tgz", - "integrity": "sha512-9dS0Gvs4ER1DPSnKorJ4uk27A/rWwyvNy5CheOZu4ZTUnggGA7SFtMG7CKPD11Ae01lIMfxKfDqJYE8j2VpQaw==", - "dependencies": { - "@angular-devkit/core": "13.2.4", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "optional": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -391,36 +297,12 @@ "node": ">=8" } }, - "node_modules/@angular-devkit/build-angular/node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } - } - }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.4.tgz", - "integrity": "sha512-GNHXSSnIbL4Oi3fBHTtRyQ308YMSDdKs/bVrArIq8QDbiCuB3RQfooEfvkoN2M++MeSW0vNqtQ7pZyxqRey6fQ==", + "version": "0.1303.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.4.tgz", + "integrity": "sha512-3F10P9XshRXkI/PEmJUcgP4yK4sobaoInQfifzPNOemrS5nXs8y3uEiQuxzyswYx/dymZLV+19sV/eh1WfXnBA==", "dependencies": { - "@angular-devkit/architect": "0.1302.4", + "@angular-devkit/architect": "0.1303.4", "rxjs": "6.6.7" }, "engines": { @@ -433,24 +315,10 @@ "webpack-dev-server": "^4.0.0" } }, - "node_modules/@angular-devkit/build-webpack/node_modules/@angular-devkit/architect": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.4.tgz", - "integrity": "sha512-9dS0Gvs4ER1DPSnKorJ4uk27A/rWwyvNy5CheOZu4ZTUnggGA7SFtMG7CKPD11Ae01lIMfxKfDqJYE8j2VpQaw==", - "dependencies": { - "@angular-devkit/core": "13.2.4", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, "node_modules/@angular-devkit/core": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.4.tgz", - "integrity": "sha512-hSw1JWA/6dDAF/xleQRXGtzHphfU49TMUhvAoAmsmmz3NAn03xLy1dtqdIXIf+TkFXVvZDaAB2mW8KfRV67GFg==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.4.tgz", + "integrity": "sha512-gj6i8ksPaT2bvYwI7wKJxLX53pHfTmZc1RaNbAGfZB1/zFNnb3MPj8utTcJSk4qMsGXuDDhiB7hpTKBw8ROaGA==", "dependencies": { "ajv": "8.9.0", "ajv-formats": "2.1.1", @@ -584,9 +452,9 @@ "optional": true }, "node_modules/@angular/animations": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.3.tgz", - "integrity": "sha512-HfNNpDMSf5Var2Ti/vrmy576Uyp68hRaSNdFxxO9OYG3qH/5ZYVAv5ixz8Wu4RE+Lmw9jjzEfpL0BvK6BYWa4g==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.5.tgz", + "integrity": "sha512-BYXX80N1hxkATWqv2IZddfKvqxomktxH5fREv+KjwIYFkyK9KBnRBILqynyIJaXXut5KE6QNOf1zWEZxdOnc3A==", "dependencies": { "tslib": "^2.3.0" }, @@ -594,19 +462,19 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.3" + "@angular/core": "13.3.5" } }, "node_modules/@angular/cli": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.4.tgz", - "integrity": "sha512-Llk0RzrpzCsAIgX4wk8QIB7xZInyLT07r6gF9dc9b0latHsJyRpeZXdPcFmT2wny0cin+1Y9q6HsBe4Srs19SA==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.4.tgz", + "integrity": "sha512-4S5FNjkZgq98zcBVgwkYtMgMRMSVsprCgq7dM8yTxIQh+Np3fYgj5eRJ1+mfFG/kankH2z/TFyuoYiILh2D9Uw==", "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1302.4", - "@angular-devkit/core": "13.2.4", - "@angular-devkit/schematics": "13.2.4", - "@schematics/angular": "13.2.4", + "@angular-devkit/architect": "0.1303.4", + "@angular-devkit/core": "13.3.4", + "@angular-devkit/schematics": "13.3.4", + "@schematics/angular": "13.3.4", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -632,26 +500,12 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.4.tgz", - "integrity": "sha512-9dS0Gvs4ER1DPSnKorJ4uk27A/rWwyvNy5CheOZu4ZTUnggGA7SFtMG7CKPD11Ae01lIMfxKfDqJYE8j2VpQaw==", - "dependencies": { - "@angular-devkit/core": "13.2.4", - "rxjs": "6.6.7" - }, - "engines": { - "node": "^12.20.0 || ^14.15.0 || >=16.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.4.tgz", - "integrity": "sha512-VMhYa4cDu5yE31OvHncAd15Rmlchih/Sr6sxFsIwkg4xzRNIIZCtwqxVXgf0TiTN9zrvlvzK7nhPqTGNqqYb2A==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.4.tgz", + "integrity": "sha512-gKNpMMoZJjLKdXxjuVembic4GWa4AYV7kU1ou3ZuZoDKtKcig9URISr1wjS+nrhKYz+miFy0zIqSGMMattDlDQ==", "dependencies": { - "@angular-devkit/core": "13.2.4", + "@angular-devkit/core": "13.3.4", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -664,12 +518,12 @@ } }, "node_modules/@angular/cli/node_modules/@schematics/angular": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.4.tgz", - "integrity": "sha512-pAVuPmFklWVpNJkARs4aGYM5Mo4iez0eW0dDY+ugxZlt1KOLJQDmMK2Go60iEAQLlOw2pKO/jcmTttOP8PN0UQ==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.4.tgz", + "integrity": "sha512-Cta11k965Igz2kWj60KQ/9z6RFAg9FjZ8i1TH4nyROJs9nWemWPQNA+OJFuXrEy6Ldpk7yJ5cWgJsyryGB25PA==", "dependencies": { - "@angular-devkit/core": "13.2.4", - "@angular-devkit/schematics": "13.2.4", + "@angular-devkit/core": "13.3.4", + "@angular-devkit/schematics": "13.3.4", "jsonc-parser": "3.0.0" }, "engines": { @@ -703,9 +557,9 @@ } }, "node_modules/@angular/common": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.3.tgz", - "integrity": "sha512-aK42bLd8VIVsUPcIaPw+dwD3c1d7rigTUMbNQ7zqyEQMCajLPakpzM9QEnywdzWSJTJFUbp3h39jD7ZzQPuTTQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.5.tgz", + "integrity": "sha512-teG+itdlw2sOMwYeXkeFe8h32SsNqN0qHHz/v6I9qKHgCLkC/or8A7NtsoCwYSTymIEJJ7DZ1w9VWhM7DSYd1w==", "dependencies": { "tslib": "^2.3.0" }, @@ -713,14 +567,14 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "13.2.3", + "@angular/core": "13.3.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.3.tgz", - "integrity": "sha512-WUjzs0xa2UTHOChEs+cHHj75AieiwSvEKBoXjyINNUnmbyf3Q+khLlBScjB+40Y/zSDi1mKxuolv4KfyREk4DA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.5.tgz", + "integrity": "sha512-iSQlYevMk5glwZSXTXf2GytykqZWdK3Rr8heIvEPqd8n88MSB3w1KnDc1fnHLF950q/nUR9K+3r4wWPwc8J2IQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -729,15 +583,15 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.3.tgz", - "integrity": "sha512-Y3q1rjb6aqCMEAkDwzvTNjAkHbQWDmDIApTaqAZul2GsuTvqPLfdriSMxBAFe1WOfw+fKdncsMnV35ij+iOnHA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.5.tgz", + "integrity": "sha512-H7A+MZcbB4g5fa6O4giYgrCG1h5whJfIxr4txDtDfolygzwRzqH1PSMfjW/jYyIpaH6XqXMSDHvbXRFGKstboA==", "dependencies": { - "@babel/core": "^7.8.6", + "@babel/core": "^7.17.2", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.11.0", - "magic-string": "^0.25.0", + "magic-string": "^0.26.0", "reflect-metadata": "^0.1.2", "semver": "^7.0.0", "sourcemap-codec": "^1.4.8", @@ -753,8 +607,70 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "13.2.3", - "typescript": ">=4.4.2 <4.6" + "@angular/compiler": "13.3.5", + "typescript": ">=4.4.2 <4.7" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/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/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" } }, "node_modules/@angular/compiler-cli/node_modules/ansi-styles": { @@ -797,6 +713,25 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/@angular/compiler-cli/node_modules/magic-string": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/compiler-cli/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@angular/compiler-cli/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -847,9 +782,9 @@ } }, "node_modules/@angular/core": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.3.tgz", - "integrity": "sha512-81QtWR+UQgCo5xJwExzKaRUd9aXJoOGbWfh3MZSUkiv+PTMXwmfU3lZxpz9S/y2uwvaVqZdW5MN/RzpKv6tHxA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.5.tgz", + "integrity": "sha512-lf+Be8dDRvz8J+QFR2RxS3BBfgGM4eWq4bI1+k/aqDnM6OW4pQXdq8Lzae8SxN48u1NxB1M/1bbc9LcrChrj2Q==", "dependencies": { "tslib": "^2.3.0" }, @@ -862,9 +797,9 @@ } }, "node_modules/@angular/forms": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.3.tgz", - "integrity": "sha512-fOsWiimPTQCDtZj+Hqc4+Io7v4aKjJJUIRoxN/wQqik66Gg/1rs4iWtpdxm4vgyQD0rUFZaRLHhsh+ldIFw7CA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.5.tgz", + "integrity": "sha512-jCxxAwf4HkDmKE76/yQmTsbqW3jsxiKyPy32Nh6Bt4r/ww8VDv+sv5YdYNuvvZcuuQ70K+/EPnKFpQgYttvS8A==", "dependencies": { "tslib": "^2.3.0" }, @@ -872,27 +807,27 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.3", - "@angular/core": "13.2.3", - "@angular/platform-browser": "13.2.3", + "@angular/common": "13.3.5", + "@angular/core": "13.3.5", + "@angular/platform-browser": "13.3.5", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.2.3.tgz", - "integrity": "sha512-A2w6uHxpjZIwE0bAmLRIS3WY501WcNlAJqrKkvrU2nnBfU/QFDdsEL7iMqIWNwfSStj7ptYwlfHw/AVFonyY0w==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.5.tgz", + "integrity": "sha512-IJawCyu4Zwk6GNPDkbSkY6sFYaBHtaHMwhaiRojrqiKA0n2bDNULLcHfYGSyA7UvkX8m9Nt0M5GaF66BIwuZSw==", "dev": true, "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0" } }, "node_modules/@angular/localize": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.2.3.tgz", - "integrity": "sha512-lTeBT9MZONLRYE8TKv1lDeTcVb0j08PXI5xvPb1YTrX6EX3bpfOVyXGiUo+p2EnGqmLNxZ8ty9wEwPNKaEA/SA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.5.tgz", + "integrity": "sha512-0MmGvQSBZeKwsOBATWp7Y5rxyGW6OaszLtecKu32VVJSjoDN4M6uMHBMjVVe4IxbyJnbhlSPRSYL9hRFbOve0A==", "dependencies": { - "@babel/core": "7.8.6", + "@babel/core": "7.17.2", "glob": "7.2.0", "yargs": "^17.2.1" }, @@ -905,30 +840,42 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "13.2.3", - "@angular/compiler-cli": "13.2.3" + "@angular/compiler": "13.3.5", + "@angular/compiler-cli": "13.3.5" + } + }, + "node_modules/@angular/localize/node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/@angular/localize/node_modules/@babel/core": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.6.tgz", - "integrity": "sha512-Sheg7yEJD51YHAvLEV/7Uvw95AeWqYPL3Vk3zGujJKIhJ+8oLw2ALaf3hbucILhKsgSoADOvtKRJuNVdcJkOrg==", + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz", + "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==", "dependencies": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helpers": "^7.8.4", - "@babel/parser": "^7.8.6", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6", + "@ampproject/remapping": "^2.0.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" }, "engines": { "node": ">=6.9.0" @@ -938,6 +885,19 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@angular/localize/node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@angular/localize/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -979,11 +939,11 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/@angular/localize/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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" + "semver": "bin/semver.js" } }, "node_modules/@angular/localize/node_modules/source-map": { @@ -1044,9 +1004,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.3.tgz", - "integrity": "sha512-kdV51osiEkW7hwwh7wQMy+9+e7lGFXQBnHVxIiyVQI1nKVfWykzc1Vt5oGw7zuBkkJat2Gs3Mq2lqaXMa2Xl1g==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.5.tgz", + "integrity": "sha512-DPV1J3h1ua4GI9PuXDr8IlzJoC/TR0A/onPTaE6IFOzs1r28vB+vWRRbZURXrTYeWzWVB/2R9tPOqFNoi3zlzA==", "dependencies": { "tslib": "^2.3.0" }, @@ -1054,9 +1014,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "13.2.3", - "@angular/common": "13.2.3", - "@angular/core": "13.2.3" + "@angular/animations": "13.3.5", + "@angular/common": "13.3.5", + "@angular/core": "13.3.5" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1065,9 +1025,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.3.tgz", - "integrity": "sha512-dCHVyYsbEZR+Ekk47fZFh9zjFD/pryrwSelFStMUoGKExJxsVIVBzgdHwzPBVFh9gwjVCvBOmLpMcVMRNMq9cQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.5.tgz", + "integrity": "sha512-Mko8/mRlcVsZJQ5zHfc/p7so/ZN16UMynTnksrD7cEgGxDuJosE8m+exqgoT03VCYaOjJtCFXSwdOb/8FOUDZQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -1075,16 +1035,16 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.3", - "@angular/compiler": "13.2.3", - "@angular/core": "13.2.3", - "@angular/platform-browser": "13.2.3" + "@angular/common": "13.3.5", + "@angular/compiler": "13.3.5", + "@angular/core": "13.3.5", + "@angular/platform-browser": "13.3.5" } }, "node_modules/@angular/platform-server": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.2.3.tgz", - "integrity": "sha512-cH79/LICik7a/HXGWXaY+R0HOiUJwhhWskxBaID4ECduVkCge8nRoW//gkYB8ml27qeblbiFZN/jREWN7/KwcQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.3.5.tgz", + "integrity": "sha512-ja9/mgBIAriQO3H9Q1MTXxJV1s59a2NJeeOffGHr86TLDcaxxzumozfoaKr5p6m0Ty3yqZcFc3wUQJl5I/1H0A==", "dependencies": { "domino": "^2.1.2", "tslib": "^2.3.0", @@ -1094,18 +1054,18 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "13.2.3", - "@angular/common": "13.2.3", - "@angular/compiler": "13.2.3", - "@angular/core": "13.2.3", - "@angular/platform-browser": "13.2.3", - "@angular/platform-browser-dynamic": "13.2.3" + "@angular/animations": "13.3.5", + "@angular/common": "13.3.5", + "@angular/compiler": "13.3.5", + "@angular/core": "13.3.5", + "@angular/platform-browser": "13.3.5", + "@angular/platform-browser-dynamic": "13.3.5" } }, "node_modules/@angular/router": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.3.tgz", - "integrity": "sha512-niU8/19wmPSeuvKCHfaDbw+DPfE9gI0divcnwqGEB8tSbs7VNIaTmhLs9yMU+pD6puUYk3gUFTXLBl+g3qwOpg==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.5.tgz", + "integrity": "sha512-3yUNyBpUi0KUKP91a3dVQsr9Jfjs4wGxpiFYb3apc7lKT5R1LJqt2O0EchjOgvFyJ6TDOemdCAzKgvSRkDxpMw==", "dependencies": { "tslib": "^2.3.0" }, @@ -1113,9 +1073,9 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "13.2.3", - "@angular/core": "13.2.3", - "@angular/platform-browser": "13.2.3", + "@angular/common": "13.3.5", + "@angular/core": "13.3.5", + "@angular/platform-browser": "13.3.5", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1136,9 +1096,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", "engines": { "node": ">=6.9.0" } @@ -1233,11 +1193,11 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "dependencies": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -1341,24 +1301,12 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -1398,18 +1346,18 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -1463,11 +1411,11 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -1526,13 +1474,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" }, "engines": { "node": ">=6.9.0" @@ -1552,9 +1500,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -2624,17 +2572,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" @@ -2644,9 +2592,9 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "dependencies": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -2676,6 +2624,15 @@ "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==", + "devOptional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@csstools/postcss-progressive-custom-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.2.0.tgz", @@ -3039,6 +2996,18 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", @@ -3047,6 +3016,28 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", + "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "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==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@juggle/resize-observer": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.3.1.tgz", @@ -3105,9 +3096,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.4.tgz", - "integrity": "sha512-+1wPzxKSrbf5ghFq5YWZvrPy7IACa+0AF16JYpWcdcW1D1u0Ug22IYN8gyEt7waJnD1HJn/d0jaeKNNpJiW1Cg==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.4.tgz", + "integrity": "sha512-dNDNeAOwtpX5A7TTEsgDbkg4jTmAJHD96qLqcpJqfBg8nZ4mqn6E0HinX9HZKaCST1/75T6GsFo1Muc4MsHYgA==", "engines": { "node": "^12.20.0 || ^14.15.0 || >=16.10.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", @@ -3115,19 +3106,19 @@ }, "peerDependencies": { "@angular/compiler-cli": "^13.0.0", - "typescript": ">=4.4.3 <4.6", + "typescript": ">=4.4.3 <4.7", "webpack": "^5.30.0" } }, "node_modules/@nguniversal/builders": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@nguniversal/builders/-/builders-13.0.2.tgz", - "integrity": "sha512-ydmR+JzZvhgFiqxOT5mIfCJH//LfFCaud6tPugvj/EHI+kVWFhEurR8wDHRMHGv2t+nYYtNFzTXt5EWGCMB/vA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@nguniversal/builders/-/builders-13.1.0.tgz", + "integrity": "sha512-tG/o04rODUIlMnkW/g9TWt50S6CkX6sCvR+fCS7n7YsLrknnlhj7qMIIEKCiuE+b/7lbfQUe2HepnFEfxLypmw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "^0.1301.0", - "@angular-devkit/core": "^13.1.0", - "@nguniversal/common": "13.0.2", + "@angular-devkit/architect": "^0.1303.0", + "@angular-devkit/core": "^13.3.0", + "@nguniversal/common": "13.1.0", "browser-sync": "^2.26.7", "express": "^4.17.1", "guess-parser": "^0.4.12", @@ -3141,7 +3132,7 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular-devkit/build-angular": "^13.1.0" + "@angular-devkit/build-angular": "^13.3.0" } }, "node_modules/@nguniversal/builders/node_modules/http-proxy-middleware": { @@ -3183,9 +3174,9 @@ } }, "node_modules/@nguniversal/common": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@nguniversal/common/-/common-13.0.2.tgz", - "integrity": "sha512-HtjtPFmz/GhW2TnvxqdFdewL5NpTXYBA51U7RUjJtLs78xsW4rG3kfZEG20y6E3xn+++B0jJMfAx6Q+2cuRdig==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@nguniversal/common/-/common-13.1.0.tgz", + "integrity": "sha512-bmRwJoEM5LfA4kDRkuVvoOv6NFAOgn2WpolwQlnLNfGTKL/fyNw/JyIvdEphQdjhTTRadehY8MYbr+X97+hyLw==", "dev": true, "dependencies": { "critters": "0.0.16", @@ -3196,8 +3187,8 @@ "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "^13.1.0", - "@angular/core": "^13.1.0" + "@angular/common": "^13.3.0", + "@angular/core": "^13.3.0" } }, "node_modules/@nguniversal/common/node_modules/@tootallnate/once": { @@ -3210,9 +3201,9 @@ } }, "node_modules/@nguniversal/common/node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3291,14 +3282,27 @@ "dev": true }, "node_modules/@nguniversal/common/node_modules/data-urls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz", - "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dev": true, "dependencies": { - "abab": "^2.0.3", + "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0" + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@nguniversal/common/node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, "engines": { "node": ">=12" @@ -3962,27 +3966,27 @@ "devOptional": true }, "node_modules/@types/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "node_modules/@types/express": { "version": "4.17.13", @@ -4049,9 +4053,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "node_modules/@types/qrcode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.4.1.tgz", - "integrity": "sha512-vxMyr7JM7tYPxu8vUE83NiosWX5DZieCyYeJRoOIg0pAkyofCBzknJ2ycUZkPGDFis2RS8GN/BeJLnRnAPxeCA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.4.2.tgz", + "integrity": "sha512-7uNT9L4WQTNJejHTSTdaJhfBSCN73xtXaHFyBJ8TSwiLhe4PRuTue7Iph0s2nG9R/ifUaSnGhLUOZavlBEqDWQ==", "dependencies": { "@types/node": "*" } @@ -4067,9 +4071,9 @@ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, "node_modules/@types/serve-index": { "version": "1.9.1", @@ -4109,9 +4113,9 @@ } }, "node_modules/@types/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dependencies": { "@types/node": "*" } @@ -4351,9 +4355,9 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" }, "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" }, "node_modules/abbrev": { "version": "1.1.1", @@ -6102,9 +6106,9 @@ } }, "node_modules/clipboard": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", - "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz", + "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==", "dependencies": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -7768,12 +7772,12 @@ } }, "node_modules/echarts": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.0.tgz", - "integrity": "sha512-zENufmwFE6WjM+24tW3xQq4ICqQtI0CGj4bDVDNd3BK3LtaA/5wBp+64ykIyKy3QElz0cieKqSYP4FX9Lv9MwQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz", + "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==", "dependencies": { "tslib": "2.3.0", - "zrender": "5.3.0" + "zrender": "5.3.1" } }, "node_modules/echarts/node_modules/tslib": { @@ -7967,9 +7971,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -9408,9 +9412,9 @@ } }, "node_modules/getos/node_modules/async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "optional": true }, "node_modules/getpass": { @@ -9693,9 +9697,9 @@ } }, "node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" }, "node_modules/html-escaper": { "version": "2.0.2", @@ -9742,9 +9746,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "node_modules/http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==" + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" }, "node_modules/http-proxy": { "version": "1.18.1", @@ -10770,12 +10774,9 @@ "optional": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dependencies": { - "minimist": "^1.2.5" - }, + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", "bin": { "json5": "lib/cli.js" }, @@ -10839,15 +10840,15 @@ "optional": true }, "node_modules/karma": { - "version": "6.3.16", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", - "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", + "version": "6.3.19", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.19.tgz", + "integrity": "sha512-NDhWckzES/Y9xMiddyU1RzaKL76/scCsu8Mp0vR0Z3lQRvC3p72+Ab4ppoxs36S9tyPNX5V48yvaV++RNEBPZw==", "devOptional": true, "dependencies": { + "@colors/colors": "1.5.0", "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -10863,7 +10864,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.2.0", + "socket.io": "^4.4.1", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -10926,15 +10927,18 @@ } }, "node_modules/karma-jasmine": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", - "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.0.tgz", + "integrity": "sha512-dsFkCoTwyoNyQnMgegS72wIA/2xPDJG5yzTry0448U6lAY7P60Wgg4UuLlbdLv8YHbimgNpDXjjmfPdc99EDWQ==", "dev": true, "dependencies": { - "jasmine-core": "^3.6.0" + "jasmine-core": "^4.1.0" }, "engines": { - "node": ">= 10" + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" } }, "node_modules/karma-jasmine-html-reporter": { @@ -10943,6 +10947,12 @@ "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", "dev": true }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.0.tgz", + "integrity": "sha512-8E8BiffCL8sBwK1zU9cbavLe8xpJAgOduSJ6N8PJVv8VosQ/nxVTuXj2kUeHxTlZBVvh24G19ga7xdiaxlceKg==", + "dev": true + }, "node_modules/karma-source-map-support": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", @@ -11986,9 +11996,9 @@ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12422,9 +12432,9 @@ "optional": true }, "node_modules/node-forge": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", - "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==", + "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" } @@ -13010,11 +13020,11 @@ } }, "node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "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", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "engines": { @@ -13357,9 +13367,9 @@ } }, "node_modules/portfinder/node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dependencies": { "lodash": "^4.17.14" } @@ -14551,9 +14561,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -14563,7 +14573,7 @@ "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=12.0.0" } }, "node_modules/sass-loader": { @@ -14662,11 +14672,11 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "node_modules/selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "dependencies": { - "node-forge": "^1.2.0" + "node-forge": "^1" }, "engines": { "node": ">=10" @@ -15624,10 +15634,11 @@ } }, "node_modules/terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", + "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", "dependencies": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" @@ -15687,6 +15698,17 @@ "node": ">=0.10.0" } }, + "node_modules/terser/node_modules/acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -16495,12 +16517,12 @@ } }, "node_modules/webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "dependencies": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -16508,7 +16530,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -16563,9 +16585,9 @@ } }, "node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -16683,9 +16705,9 @@ } }, "node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -16741,9 +16763,9 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" }, "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "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", @@ -17277,9 +17299,9 @@ } }, "node_modules/zrender": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.0.tgz", - "integrity": "sha512-Ln2QB5uqI1ftNYMtCRxd+XDq6MOttLgam2tmhKAVA+j0ko47UT+VNlDvKTkqe4K2sJhBvB0EhYNLebqlCTjatQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz", + "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==", "dependencies": { "tslib": "2.3.0" } @@ -17301,67 +17323,23 @@ } }, "@angular-devkit/architect": { - "version": "0.1301.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1301.4.tgz", - "integrity": "sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==", - "dev": true, + "version": "0.1303.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1303.4.tgz", + "integrity": "sha512-d6YmIWdYvwk6WaknHRcJgiXeJvX9K5i8uPMAaL2P2/LU8n3moIQ59C7SP0uULcHuuiREEmFWOyyrWnGxZCI9bg==", "requires": { - "@angular-devkit/core": "13.1.4", + "@angular-devkit/core": "13.3.4", "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.1.4.tgz", - "integrity": "sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ==", - "dev": true, - "requires": { - "ajv": "8.8.2", - "ajv-formats": "2.1.1", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "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==", - "dev": true - } } }, "@angular-devkit/build-angular": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.2.4.tgz", - "integrity": "sha512-8fKIBMsQOIg+UFj+wL95SRYs/ED90cX3fjCKonE9TdOPLCEXC+nlZ0nbY45aGCmKiYlY9c9zhQiwgCGdVKSGYQ==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-13.3.4.tgz", + "integrity": "sha512-z74cmDi2V+5XpvyZKFlUXxvQ446shxyZk5aGdToG6n+0/IJWkDXSiryQkCo8nblGMze7HKf75i3DsGWYQZLDnQ==", "requires": { "@ampproject/remapping": "1.1.1", - "@angular-devkit/architect": "0.1302.4", - "@angular-devkit/build-webpack": "0.1302.4", - "@angular-devkit/core": "13.2.4", + "@angular-devkit/architect": "0.1303.4", + "@angular-devkit/build-webpack": "0.1303.4", + "@angular-devkit/core": "13.3.4", "@babel/core": "7.16.12", "@babel/generator": "7.16.8", "@babel/helper-annotate-as-pure": "7.16.7", @@ -17372,7 +17350,7 @@ "@babel/runtime": "7.16.7", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.6", - "@ngtools/webpack": "13.2.4", + "@ngtools/webpack": "13.3.4", "ansi-colors": "4.1.1", "babel-loader": "8.2.3", "babel-plugin-istanbul": "6.1.1", @@ -17395,7 +17373,7 @@ "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.0", "mini-css-extract-plugin": "2.5.3", - "minimatch": "3.0.4", + "minimatch": "3.0.5", "open": "8.4.0", "ora": "5.4.1", "parse5-html-rewriting-stream": "6.0.1", @@ -17407,40 +17385,24 @@ "regenerator-runtime": "0.13.9", "resolve-url-loader": "5.0.0", "rxjs": "6.6.7", - "sass": "1.49.0", + "sass": "1.49.9", "sass-loader": "12.4.0", "semver": "7.3.5", "source-map-loader": "3.0.1", "source-map-support": "0.5.21", "stylus": "0.56.0", "stylus-loader": "6.2.0", - "terser": "5.10.0", + "terser": "5.11.0", "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.1", - "webpack": "5.67.0", + "webpack": "5.70.0", "webpack-dev-middleware": "5.3.0", "webpack-dev-server": "4.7.3", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "5.1.0" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.4.tgz", - "integrity": "sha512-9dS0Gvs4ER1DPSnKorJ4uk27A/rWwyvNy5CheOZu4ZTUnggGA7SFtMG7CKPD11Ae01lIMfxKfDqJYE8j2VpQaw==", - "requires": { - "@angular-devkit/core": "13.2.4", - "rxjs": "6.6.7" - } - }, - "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", - "optional": true, - "peer": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -17501,43 +17463,22 @@ "requires": { "has-flag": "^4.0.0" } - }, - "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.20" - } } } }, "@angular-devkit/build-webpack": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1302.4.tgz", - "integrity": "sha512-GNHXSSnIbL4Oi3fBHTtRyQ308YMSDdKs/bVrArIq8QDbiCuB3RQfooEfvkoN2M++MeSW0vNqtQ7pZyxqRey6fQ==", + "version": "0.1303.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1303.4.tgz", + "integrity": "sha512-3F10P9XshRXkI/PEmJUcgP4yK4sobaoInQfifzPNOemrS5nXs8y3uEiQuxzyswYx/dymZLV+19sV/eh1WfXnBA==", "requires": { - "@angular-devkit/architect": "0.1302.4", + "@angular-devkit/architect": "0.1303.4", "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.4.tgz", - "integrity": "sha512-9dS0Gvs4ER1DPSnKorJ4uk27A/rWwyvNy5CheOZu4ZTUnggGA7SFtMG7CKPD11Ae01lIMfxKfDqJYE8j2VpQaw==", - "requires": { - "@angular-devkit/core": "13.2.4", - "rxjs": "6.6.7" - } - } } }, "@angular-devkit/core": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.2.4.tgz", - "integrity": "sha512-hSw1JWA/6dDAF/xleQRXGtzHphfU49TMUhvAoAmsmmz3NAn03xLy1dtqdIXIf+TkFXVvZDaAB2mW8KfRV67GFg==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.4.tgz", + "integrity": "sha512-gj6i8ksPaT2bvYwI7wKJxLX53pHfTmZc1RaNbAGfZB1/zFNnb3MPj8utTcJSk4qMsGXuDDhiB7hpTKBw8ROaGA==", "requires": { "ajv": "8.9.0", "ajv-formats": "2.1.1", @@ -17628,22 +17569,22 @@ } }, "@angular/animations": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.2.3.tgz", - "integrity": "sha512-HfNNpDMSf5Var2Ti/vrmy576Uyp68hRaSNdFxxO9OYG3qH/5ZYVAv5ixz8Wu4RE+Lmw9jjzEfpL0BvK6BYWa4g==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.5.tgz", + "integrity": "sha512-BYXX80N1hxkATWqv2IZddfKvqxomktxH5fREv+KjwIYFkyK9KBnRBILqynyIJaXXut5KE6QNOf1zWEZxdOnc3A==", "requires": { "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.2.4.tgz", - "integrity": "sha512-Llk0RzrpzCsAIgX4wk8QIB7xZInyLT07r6gF9dc9b0latHsJyRpeZXdPcFmT2wny0cin+1Y9q6HsBe4Srs19SA==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-13.3.4.tgz", + "integrity": "sha512-4S5FNjkZgq98zcBVgwkYtMgMRMSVsprCgq7dM8yTxIQh+Np3fYgj5eRJ1+mfFG/kankH2z/TFyuoYiILh2D9Uw==", "requires": { - "@angular-devkit/architect": "0.1302.4", - "@angular-devkit/core": "13.2.4", - "@angular-devkit/schematics": "13.2.4", - "@schematics/angular": "13.2.4", + "@angular-devkit/architect": "0.1303.4", + "@angular-devkit/core": "13.3.4", + "@angular-devkit/schematics": "13.3.4", + "@schematics/angular": "13.3.4", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.3", @@ -17661,21 +17602,12 @@ "uuid": "8.3.2" }, "dependencies": { - "@angular-devkit/architect": { - "version": "0.1302.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1302.4.tgz", - "integrity": "sha512-9dS0Gvs4ER1DPSnKorJ4uk27A/rWwyvNy5CheOZu4ZTUnggGA7SFtMG7CKPD11Ae01lIMfxKfDqJYE8j2VpQaw==", - "requires": { - "@angular-devkit/core": "13.2.4", - "rxjs": "6.6.7" - } - }, "@angular-devkit/schematics": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.2.4.tgz", - "integrity": "sha512-VMhYa4cDu5yE31OvHncAd15Rmlchih/Sr6sxFsIwkg4xzRNIIZCtwqxVXgf0TiTN9zrvlvzK7nhPqTGNqqYb2A==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.4.tgz", + "integrity": "sha512-gKNpMMoZJjLKdXxjuVembic4GWa4AYV7kU1ou3ZuZoDKtKcig9URISr1wjS+nrhKYz+miFy0zIqSGMMattDlDQ==", "requires": { - "@angular-devkit/core": "13.2.4", + "@angular-devkit/core": "13.3.4", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -17683,12 +17615,12 @@ } }, "@schematics/angular": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.2.4.tgz", - "integrity": "sha512-pAVuPmFklWVpNJkARs4aGYM5Mo4iez0eW0dDY+ugxZlt1KOLJQDmMK2Go60iEAQLlOw2pKO/jcmTttOP8PN0UQ==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.4.tgz", + "integrity": "sha512-Cta11k965Igz2kWj60KQ/9z6RFAg9FjZ8i1TH4nyROJs9nWemWPQNA+OJFuXrEy6Ldpk7yJ5cWgJsyryGB25PA==", "requires": { - "@angular-devkit/core": "13.2.4", - "@angular-devkit/schematics": "13.2.4", + "@angular-devkit/core": "13.3.4", + "@angular-devkit/schematics": "13.3.4", "jsonc-parser": "3.0.0" } }, @@ -17708,31 +17640,31 @@ } }, "@angular/common": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.2.3.tgz", - "integrity": "sha512-aK42bLd8VIVsUPcIaPw+dwD3c1d7rigTUMbNQ7zqyEQMCajLPakpzM9QEnywdzWSJTJFUbp3h39jD7ZzQPuTTQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.5.tgz", + "integrity": "sha512-teG+itdlw2sOMwYeXkeFe8h32SsNqN0qHHz/v6I9qKHgCLkC/or8A7NtsoCwYSTymIEJJ7DZ1w9VWhM7DSYd1w==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.2.3.tgz", - "integrity": "sha512-WUjzs0xa2UTHOChEs+cHHj75AieiwSvEKBoXjyINNUnmbyf3Q+khLlBScjB+40Y/zSDi1mKxuolv4KfyREk4DA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.5.tgz", + "integrity": "sha512-iSQlYevMk5glwZSXTXf2GytykqZWdK3Rr8heIvEPqd8n88MSB3w1KnDc1fnHLF950q/nUR9K+3r4wWPwc8J2IQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.2.3.tgz", - "integrity": "sha512-Y3q1rjb6aqCMEAkDwzvTNjAkHbQWDmDIApTaqAZul2GsuTvqPLfdriSMxBAFe1WOfw+fKdncsMnV35ij+iOnHA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.5.tgz", + "integrity": "sha512-H7A+MZcbB4g5fa6O4giYgrCG1h5whJfIxr4txDtDfolygzwRzqH1PSMfjW/jYyIpaH6XqXMSDHvbXRFGKstboA==", "requires": { - "@babel/core": "^7.8.6", + "@babel/core": "^7.17.2", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.11.0", - "magic-string": "^0.25.0", + "magic-string": "^0.26.0", "reflect-metadata": "^0.1.2", "semver": "^7.0.0", "sourcemap-codec": "^1.4.8", @@ -17740,6 +17672,54 @@ "yargs": "^17.2.1" }, "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -17771,6 +17751,19 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "magic-string": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", + "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -17808,56 +17801,75 @@ } }, "@angular/core": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.2.3.tgz", - "integrity": "sha512-81QtWR+UQgCo5xJwExzKaRUd9aXJoOGbWfh3MZSUkiv+PTMXwmfU3lZxpz9S/y2uwvaVqZdW5MN/RzpKv6tHxA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.5.tgz", + "integrity": "sha512-lf+Be8dDRvz8J+QFR2RxS3BBfgGM4eWq4bI1+k/aqDnM6OW4pQXdq8Lzae8SxN48u1NxB1M/1bbc9LcrChrj2Q==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.2.3.tgz", - "integrity": "sha512-fOsWiimPTQCDtZj+Hqc4+Io7v4aKjJJUIRoxN/wQqik66Gg/1rs4iWtpdxm4vgyQD0rUFZaRLHhsh+ldIFw7CA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.5.tgz", + "integrity": "sha512-jCxxAwf4HkDmKE76/yQmTsbqW3jsxiKyPy32Nh6Bt4r/ww8VDv+sv5YdYNuvvZcuuQ70K+/EPnKFpQgYttvS8A==", "requires": { "tslib": "^2.3.0" } }, "@angular/language-service": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.2.3.tgz", - "integrity": "sha512-A2w6uHxpjZIwE0bAmLRIS3WY501WcNlAJqrKkvrU2nnBfU/QFDdsEL7iMqIWNwfSStj7ptYwlfHw/AVFonyY0w==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-13.3.5.tgz", + "integrity": "sha512-IJawCyu4Zwk6GNPDkbSkY6sFYaBHtaHMwhaiRojrqiKA0n2bDNULLcHfYGSyA7UvkX8m9Nt0M5GaF66BIwuZSw==", "dev": true }, "@angular/localize": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.2.3.tgz", - "integrity": "sha512-lTeBT9MZONLRYE8TKv1lDeTcVb0j08PXI5xvPb1YTrX6EX3bpfOVyXGiUo+p2EnGqmLNxZ8ty9wEwPNKaEA/SA==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.5.tgz", + "integrity": "sha512-0MmGvQSBZeKwsOBATWp7Y5rxyGW6OaszLtecKu32VVJSjoDN4M6uMHBMjVVe4IxbyJnbhlSPRSYL9hRFbOve0A==", "requires": { - "@babel/core": "7.8.6", + "@babel/core": "7.17.2", "glob": "7.2.0", "yargs": "^17.2.1" }, "dependencies": { - "@babel/core": { - "version": "7.8.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.8.6.tgz", - "integrity": "sha512-Sheg7yEJD51YHAvLEV/7Uvw95AeWqYPL3Vk3zGujJKIhJ+8oLw2ALaf3hbucILhKsgSoADOvtKRJuNVdcJkOrg==", + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", "requires": { - "@babel/code-frame": "^7.8.3", - "@babel/generator": "^7.8.6", - "@babel/helpers": "^7.8.4", - "@babel/parser": "^7.8.6", - "@babel/template": "^7.8.6", - "@babel/traverse": "^7.8.6", - "@babel/types": "^7.8.6", + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/core": { + "version": "7.17.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz", + "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==", + "requires": { + "@ampproject/remapping": "^2.0.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helpers": "^7.17.2", + "@babel/parser": "^7.17.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.0", + "@babel/types": "^7.17.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.0", - "lodash": "^4.17.13", - "resolve": "^1.3.2", - "semver": "^5.4.1", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", "source-map": "^0.5.0" } }, @@ -17893,9 +17905,9 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "source-map": { "version": "0.5.7", @@ -17939,25 +17951,25 @@ } }, "@angular/platform-browser": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.2.3.tgz", - "integrity": "sha512-kdV51osiEkW7hwwh7wQMy+9+e7lGFXQBnHVxIiyVQI1nKVfWykzc1Vt5oGw7zuBkkJat2Gs3Mq2lqaXMa2Xl1g==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.5.tgz", + "integrity": "sha512-DPV1J3h1ua4GI9PuXDr8IlzJoC/TR0A/onPTaE6IFOzs1r28vB+vWRRbZURXrTYeWzWVB/2R9tPOqFNoi3zlzA==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.2.3.tgz", - "integrity": "sha512-dCHVyYsbEZR+Ekk47fZFh9zjFD/pryrwSelFStMUoGKExJxsVIVBzgdHwzPBVFh9gwjVCvBOmLpMcVMRNMq9cQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.5.tgz", + "integrity": "sha512-Mko8/mRlcVsZJQ5zHfc/p7so/ZN16UMynTnksrD7cEgGxDuJosE8m+exqgoT03VCYaOjJtCFXSwdOb/8FOUDZQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-server": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.2.3.tgz", - "integrity": "sha512-cH79/LICik7a/HXGWXaY+R0HOiUJwhhWskxBaID4ECduVkCge8nRoW//gkYB8ml27qeblbiFZN/jREWN7/KwcQ==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.3.5.tgz", + "integrity": "sha512-ja9/mgBIAriQO3H9Q1MTXxJV1s59a2NJeeOffGHr86TLDcaxxzumozfoaKr5p6m0Ty3yqZcFc3wUQJl5I/1H0A==", "requires": { "domino": "^2.1.2", "tslib": "^2.3.0", @@ -17965,9 +17977,9 @@ } }, "@angular/router": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.2.3.tgz", - "integrity": "sha512-niU8/19wmPSeuvKCHfaDbw+DPfE9gI0divcnwqGEB8tSbs7VNIaTmhLs9yMU+pD6puUYk3gUFTXLBl+g3qwOpg==", + "version": "13.3.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.5.tgz", + "integrity": "sha512-3yUNyBpUi0KUKP91a3dVQsr9Jfjs4wGxpiFYb3apc7lKT5R1LJqt2O0EchjOgvFyJ6TDOemdCAzKgvSRkDxpMw==", "requires": { "tslib": "^2.3.0" } @@ -17986,9 +17998,9 @@ } }, "@babel/compat-data": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.0.tgz", - "integrity": "sha512-392byTlpGWXMv4FbyWw3sAZ/FrW/DrwqLGXpy0mbyNe9Taqv1mg9yON5/o0cnr8XYCkFTZbC1eV+c+LAROgrng==" + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==" }, "@babel/core": { "version": "7.16.12", @@ -18059,11 +18071,11 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", "requires": { - "@babel/compat-data": "^7.16.4", + "@babel/compat-data": "^7.17.7", "@babel/helper-validator-option": "^7.16.7", "browserslist": "^4.17.5", "semver": "^6.3.0" @@ -18138,21 +18150,12 @@ } }, "@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", "requires": { - "@babel/helper-get-function-arity": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-hoist-variables": { @@ -18180,18 +18183,18 @@ } }, "@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", "requires": { "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" } }, "@babel/helper-optimise-call-expression": { @@ -18230,11 +18233,11 @@ } }, "@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.17.0" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -18275,13 +18278,13 @@ } }, "@babel/helpers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.7.tgz", - "integrity": "sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" } }, "@babel/highlight": { @@ -18295,9 +18298,9 @@ } }, "@babel/parser": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.3.tgz", - "integrity": "sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==" + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==" }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.16.7", @@ -18993,26 +18996,26 @@ } }, "@babel/traverse": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", - "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.3", + "@babel/generator": "^7.17.9", "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.3", + "@babel/parser": "^7.17.9", "@babel/types": "^7.17.0", "debug": "^4.1.0", "globals": "^11.1.0" }, "dependencies": { "@babel/generator": { - "version": "7.17.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.3.tgz", - "integrity": "sha512-+R6Dctil/MgUsZsZAkYgK+ADNSZzJRRy0TvY65T71z/CR854xHQ1EweBYXdfT+HNeN7w0cSJJEzgxZMv40pxsg==", + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", "requires": { "@babel/types": "^7.17.0", "jsesc": "^2.5.1", @@ -19035,6 +19038,12 @@ "to-fast-properties": "^2.0.0" } }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "devOptional": true + }, "@csstools/postcss-progressive-custom-properties": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.2.0.tgz", @@ -19345,11 +19354,39 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==" }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@jridgewell/resolve-uri": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==" }, + "@jridgewell/set-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.0.tgz", + "integrity": "sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg==" + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@juggle/resize-observer": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.3.1.tgz", @@ -19389,20 +19426,20 @@ } }, "@ngtools/webpack": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.2.4.tgz", - "integrity": "sha512-+1wPzxKSrbf5ghFq5YWZvrPy7IACa+0AF16JYpWcdcW1D1u0Ug22IYN8gyEt7waJnD1HJn/d0jaeKNNpJiW1Cg==", + "version": "13.3.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.4.tgz", + "integrity": "sha512-dNDNeAOwtpX5A7TTEsgDbkg4jTmAJHD96qLqcpJqfBg8nZ4mqn6E0HinX9HZKaCST1/75T6GsFo1Muc4MsHYgA==", "requires": {} }, "@nguniversal/builders": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@nguniversal/builders/-/builders-13.0.2.tgz", - "integrity": "sha512-ydmR+JzZvhgFiqxOT5mIfCJH//LfFCaud6tPugvj/EHI+kVWFhEurR8wDHRMHGv2t+nYYtNFzTXt5EWGCMB/vA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@nguniversal/builders/-/builders-13.1.0.tgz", + "integrity": "sha512-tG/o04rODUIlMnkW/g9TWt50S6CkX6sCvR+fCS7n7YsLrknnlhj7qMIIEKCiuE+b/7lbfQUe2HepnFEfxLypmw==", "dev": true, "requires": { - "@angular-devkit/architect": "^0.1301.0", - "@angular-devkit/core": "^13.1.0", - "@nguniversal/common": "13.0.2", + "@angular-devkit/architect": "^0.1303.0", + "@angular-devkit/core": "^13.3.0", + "@nguniversal/common": "13.1.0", "browser-sync": "^2.26.7", "express": "^4.17.1", "guess-parser": "^0.4.12", @@ -19441,9 +19478,9 @@ } }, "@nguniversal/common": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/@nguniversal/common/-/common-13.0.2.tgz", - "integrity": "sha512-HtjtPFmz/GhW2TnvxqdFdewL5NpTXYBA51U7RUjJtLs78xsW4rG3kfZEG20y6E3xn+++B0jJMfAx6Q+2cuRdig==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@nguniversal/common/-/common-13.1.0.tgz", + "integrity": "sha512-bmRwJoEM5LfA4kDRkuVvoOv6NFAOgn2WpolwQlnLNfGTKL/fyNw/JyIvdEphQdjhTTRadehY8MYbr+X97+hyLw==", "dev": true, "requires": { "critters": "0.0.16", @@ -19458,9 +19495,9 @@ "dev": true }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", "dev": true }, "ansi-styles": { @@ -19518,14 +19555,26 @@ "dev": true }, "data-urls": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.1.tgz", - "integrity": "sha512-Ds554NeT5Gennfoo9KN50Vh6tpgtvYEwraYjejXnyTpu1C7oXKxdFk75REooENHE8ndTVOJuv+BEs4/J/xcozw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dev": true, "requires": { - "abab": "^2.0.3", + "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^10.0.0" + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } } }, "domexception": { @@ -20034,27 +20083,27 @@ "devOptional": true }, "@types/eslint": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz", - "integrity": "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "requires": { "@types/estree": "*", "@types/json-schema": "*" } }, "@types/eslint-scope": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.1.tgz", - "integrity": "sha512-SCFeogqiptms4Fg29WpOTk5nHIzfpKCemSN63ksBQYKTcXoJEmJagV+DhVmbapZzY4/5YaOV1nZwrsU79fFm1g==", + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "requires": { "@types/eslint": "*", "@types/estree": "*" } }, "@types/estree": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", - "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "@types/express": { "version": "4.17.13", @@ -20121,9 +20170,9 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" }, "@types/qrcode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.4.1.tgz", - "integrity": "sha512-vxMyr7JM7tYPxu8vUE83NiosWX5DZieCyYeJRoOIg0pAkyofCBzknJ2ycUZkPGDFis2RS8GN/BeJLnRnAPxeCA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.4.2.tgz", + "integrity": "sha512-7uNT9L4WQTNJejHTSTdaJhfBSCN73xtXaHFyBJ8TSwiLhe4PRuTue7Iph0s2nG9R/ifUaSnGhLUOZavlBEqDWQ==", "requires": { "@types/node": "*" } @@ -20139,9 +20188,9 @@ "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, "@types/serve-index": { "version": "1.9.1", @@ -20181,9 +20230,9 @@ } }, "@types/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-ahRJZquUYCdOZf/rCsWg88S0/+cb9wazUBHv6HZEe3XdYaBe2zr/slM8J28X07Hn88Pnm4ezo7N8/ofnOgrPVQ==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "requires": { "@types/node": "*" } @@ -20407,9 +20456,9 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" }, "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" }, "abbrev": { "version": "1.1.1", @@ -21877,9 +21926,9 @@ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" }, "clipboard": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", - "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz", + "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==", "requires": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -23218,12 +23267,12 @@ } }, "echarts": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.0.tgz", - "integrity": "sha512-zENufmwFE6WjM+24tW3xQq4ICqQtI0CGj4bDVDNd3BK3LtaA/5wBp+64ykIyKy3QElz0cieKqSYP4FX9Lv9MwQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.3.2.tgz", + "integrity": "sha512-LWCt7ohOKdJqyiBJ0OGBmE9szLdfA9sGcsMEi+GGoc6+Xo75C+BkcT/6NNGRHAWtnQl2fNow05AQjznpap28TQ==", "requires": { "tslib": "2.3.0", - "zrender": "5.3.0" + "zrender": "5.3.1" }, "dependencies": { "tslib": { @@ -23381,9 +23430,9 @@ } }, "enhanced-resolve": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz", - "integrity": "sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -24441,9 +24490,9 @@ }, "dependencies": { "async": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", - "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", + "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", "optional": true } } @@ -24683,9 +24732,9 @@ } }, "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" }, "html-escaper": { "version": "2.0.2", @@ -24728,9 +24777,9 @@ } }, "http-parser-js": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.5.tgz", - "integrity": "sha512-x+JVEkO2PoM8qqpbPbOL3cqHPwerep7OwzK7Ay+sMQjKzaKCqWvjoXm5tqMP9tXWWTnTzAjIhXg+J99XYuPhPA==" + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==" }, "http-proxy": { "version": "1.18.1", @@ -25502,12 +25551,9 @@ "optional": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==" }, "jsonc-parser": { "version": "3.0.0", @@ -25553,15 +25599,15 @@ "optional": true }, "karma": { - "version": "6.3.16", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", - "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", + "version": "6.3.19", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.19.tgz", + "integrity": "sha512-NDhWckzES/Y9xMiddyU1RzaKL76/scCsu8Mp0vR0Z3lQRvC3p72+Ab4ppoxs36S9tyPNX5V48yvaV++RNEBPZw==", "devOptional": true, "requires": { + "@colors/colors": "1.5.0", "body-parser": "^1.19.0", "braces": "^3.0.2", "chokidar": "^3.5.1", - "colors": "1.4.0", "connect": "^3.7.0", "di": "^0.0.1", "dom-serialize": "^2.2.1", @@ -25577,7 +25623,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.2.0", + "socket.io": "^4.4.1", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -25705,12 +25751,20 @@ } }, "karma-jasmine": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", - "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.0.tgz", + "integrity": "sha512-dsFkCoTwyoNyQnMgegS72wIA/2xPDJG5yzTry0448U6lAY7P60Wgg4UuLlbdLv8YHbimgNpDXjjmfPdc99EDWQ==", "dev": true, "requires": { - "jasmine-core": "^3.6.0" + "jasmine-core": "^4.1.0" + }, + "dependencies": { + "jasmine-core": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.0.tgz", + "integrity": "sha512-8E8BiffCL8sBwK1zU9cbavLe8xpJAgOduSJ6N8PJVv8VosQ/nxVTuXj2kUeHxTlZBVvh24G19ga7xdiaxlceKg==", + "dev": true + } } }, "karma-jasmine-html-reporter": { @@ -26444,9 +26498,9 @@ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "requires": { "brace-expansion": "^1.1.7" } @@ -26803,9 +26857,9 @@ "optional": true }, "node-forge": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.0.tgz", - "integrity": "sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" }, "node-gyp": { "version": "8.4.1", @@ -27249,11 +27303,11 @@ } }, "p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "requires": { - "@types/retry": "^0.12.0", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "dependencies": { @@ -27523,9 +27577,9 @@ }, "dependencies": { "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "requires": { "lodash": "^4.17.14" } @@ -28396,9 +28450,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.9", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.9.tgz", + "integrity": "sha512-YlYWkkHP9fbwaFRZQRXgDi3mXZShslVmmo+FVK3kHLUELHHEYrCmL1x6IUjC7wLS6VuJSAFXRQS/DxdsC4xL1A==", "requires": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -28469,11 +28523,11 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.0.tgz", - "integrity": "sha512-cUdFiCbKoa1mZ6osuJs2uDHrs0k0oprsKveFiiaBKCNq3SYyb5gs2HxhQyDNLCmL51ZZThqi4YNDpCK6GOP1iQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", "requires": { - "node-forge": "^1.2.0" + "node-forge": "^1" } }, "semver": { @@ -29247,13 +29301,21 @@ } }, "terser": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", - "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.11.0.tgz", + "integrity": "sha512-uCA9DLanzzWSsN1UirKwylhhRz3aKPInlfmpGfw8VN6jHsAtu8HJtIpeeHHK23rxnE/cDc+yvmq5wqkIC6Kn0A==", "requires": { + "acorn": "^8.5.0", "commander": "^2.20.0", "source-map": "~0.7.2", "source-map-support": "~0.5.20" + }, + "dependencies": { + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==" + } } }, "terser-webpack-plugin": { @@ -29943,12 +30005,12 @@ "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==" }, "webpack": { - "version": "5.67.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.67.0.tgz", - "integrity": "sha512-LjFbfMh89xBDpUMgA1W9Ur6Rn/gnr2Cq1jjHFPo4v6a79/ypznSYbAyPgGhwsxBtMIaEmDD1oJoA7BEYw/Fbrw==", + "version": "5.70.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.70.0.tgz", + "integrity": "sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw==", "requires": { - "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.50", + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", "@webassemblyjs/ast": "1.11.1", "@webassemblyjs/wasm-edit": "1.11.1", "@webassemblyjs/wasm-parser": "1.11.1", @@ -29956,7 +30018,7 @@ "acorn-import-assertions": "^1.7.6", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.8.3", + "enhanced-resolve": "^5.9.2", "es-module-lexer": "^0.9.0", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -30009,9 +30071,9 @@ }, "dependencies": { "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -30095,9 +30157,9 @@ }, "dependencies": { "ajv": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", - "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -30132,9 +30194,9 @@ "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" }, "http-proxy-middleware": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.3.tgz", - "integrity": "sha512-1bloEwnrHMnCoO/Gcwbz7eSVvW50KPES01PecpagI+YLNLci4AcuKJrujW4Mc3sBLpFxMSlsLNHS5Nl/lvrTPA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "requires": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -30507,9 +30569,9 @@ } }, "zrender": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.0.tgz", - "integrity": "sha512-Ln2QB5uqI1ftNYMtCRxd+XDq6MOttLgam2tmhKAVA+j0ko47UT+VNlDvKTkqe4K2sJhBvB0EhYNLebqlCTjatQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.3.1.tgz", + "integrity": "sha512-7olqIjy0gWfznKr6vgfnGBk7y4UtdMvdwFmK92vVQsQeDPyzkHW1OlrLEKg6GHz1W5ePf0FeN1q2vkl/HFqhXw==", "requires": { "tslib": "2.3.0" }, diff --git a/frontend/package.json b/frontend/package.json index 72aa8db69..9a6445b46 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -61,18 +61,18 @@ "cypress:run:ci:staging": "node update-config.js TESTNET_ENABLED=true SIGNET_ENABLED=true LIQUID_ENABLED=true BISQ_ENABLED=true ITEMS_PER_PAGE=25 && npm run generate-config && start-server-and-test serve:local-staging 4200 cypress:run:record" }, "dependencies": { - "@angular-devkit/build-angular": "^13.2.4", - "@angular/animations": "~13.2.3", - "@angular/cli": "~13.2.4", - "@angular/common": "~13.2.3", - "@angular/compiler": "~13.2.3", - "@angular/core": "~13.2.3", - "@angular/forms": "~13.2.3", - "@angular/localize": "^13.2.3", - "@angular/platform-browser": "~13.2.3", - "@angular/platform-browser-dynamic": "~13.2.3", - "@angular/platform-server": "~13.2.3", - "@angular/router": "~13.2.3", + "@angular-devkit/build-angular": "^13.3.4", + "@angular/animations": "~13.3.5", + "@angular/cli": "~13.3.4", + "@angular/common": "~13.3.5", + "@angular/compiler": "~13.3.5", + "@angular/core": "~13.3.5", + "@angular/forms": "~13.3.5", + "@angular/localize": "^13.3.5", + "@angular/platform-browser": "~13.3.5", + "@angular/platform-browser-dynamic": "~13.3.5", + "@angular/platform-server": "~13.3.5", + "@angular/router": "~13.3.5", "@fortawesome/angular-fontawesome": "0.10.1", "@fortawesome/fontawesome-common-types": "0.3.0", "@fortawesome/fontawesome-svg-core": "1.3.0", @@ -81,12 +81,12 @@ "@mempool/mempool.js": "2.3.0", "@ng-bootstrap/ng-bootstrap": "^11.0.0", "@nguniversal/express-engine": "12.1.3", - "@types/qrcode": "1.4.1", - "bootstrap": "4.5.0", + "@types/qrcode": "~1.4.2", + "bootstrap": "~4.5.0", "browserify": "^17.0.0", - "clipboard": "^2.0.4", + "clipboard": "^2.0.10", "domino": "^2.1.6", - "echarts": "5.3.0", + "echarts": "~5.3.2", "express": "^4.17.1", "lightweight-charts": "^3.3.0", "ngx-bootrap-multiselect": "^2.0.0", @@ -100,9 +100,9 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular/compiler-cli": "~13.2.3", - "@angular/language-service": "~13.2.3", - "@nguniversal/builders": "~13.0.2", + "@angular/compiler-cli": "~13.3.5", + "@angular/language-service": "~13.3.5", + "@nguniversal/builders": "~13.1.0", "@types/express": "^4.17.0", "@types/jasmine": "~3.6.0", "@types/jasminewd2": "~2.0.3", @@ -111,10 +111,10 @@ "http-proxy-middleware": "^1.0.5", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", - "karma": "~6.3.4", + "karma": "~6.3.19", "karma-chrome-launcher": "~3.1.0", "karma-coverage": "~2.0.3", - "karma-jasmine": "~4.0.0", + "karma-jasmine": "~5.0.0", "karma-jasmine-html-reporter": "^1.5.0", "ts-node": "~8.3.0", "tslint": "~6.1.0", From 2a75aae628d8d64fd25c335f4f7b2c244eedb2b7 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Mon, 2 May 2022 14:04:21 -0400 Subject: [PATCH 04/10] Add screenshot for 2.4.0 to readme --- README.md | 2 +- .../resources/screenshots/v2.4.0-dashboard.png | Bin 0 -> 76315 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 frontend/src/resources/screenshots/v2.4.0-dashboard.png diff --git a/README.md b/README.md index 7b19b6138..abc292909 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Mempool is the fully featured visualizer, explorer, and API service running on [mempool.space](https://mempool.space/), an open source project developed and operated for the benefit of the Bitcoin community, with a focus on the emerging transaction fee market to help our transition into a multi-layer ecosystem. -![mempool](https://mempool.space/resources/screenshots/v2.3.0-dashboard.png) +![mempool](https://mempool.space/resources/screenshots/v2.4.0-dashboard.png) ## Installation Methods diff --git a/frontend/src/resources/screenshots/v2.4.0-dashboard.png b/frontend/src/resources/screenshots/v2.4.0-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..7fa95e44167330b79af93b1c0d5e9ee7d7228a64 GIT binary patch literal 76315 zcmb4pWmFtZ&@K=pxCM7zBuLQ3-C=Rp1X(1=qJaRxf=h5)ToxyIf(4fVi#tIU+29bI z0J*&1_wW9?_sp4|nXZ1SYO1=c>dbVE4oC$bhZ+Y31qEMCRZ$NG1q1keKE8bM-1A5> z3`aphyVub)P@-daLrls*O9%M(@1MNQ%Ox5c77idT9+@C7FOQ&VB5ReV%}WxihQKCy zc}X!L5oK!g7B1s%%6-{I;{=hLvyw1B(bsO|P56mYat^O7zF`^K(-h zTs3f;o(&Esw`BK^KI)~*$7Zz0Wr5qJZI(y=B! zv{Cl_!iu+V=>EZ>h+4?z?oDL$7olp!ql3Rg!($X5ztE&rQ$bq=l+&il|lahbnNUNihov!Y60RBeJQ! z&r&t~Y-p}oSiJO92BWv*}nfJ(}!yEpt`Pzm{SB`A*PV43dxY*@{r6b2xkbeT=^j?`|jV* zWc>EQ!%JQI{jaK8j^xH3>|cTeqmA|xQ??Y$#WbwP1}g<3zks`j1X)c=;vK0z`ieRy zPobxld+UyC#>i!W@8lr;4HXvM8Txr<>*=jQHH z_4NWCt~|m{Kaya-zT^q{e%lzXH!$E(e(#IzY_XDP%v2jf6V4O}cBI`|`YXa9o9I?m z^5K+R8j|-Z#a&$dy#X_wV`Ed6XQ4BrQRrw`BsP@ZH9PZVh-F8lB7bY`%iU_+eount z#0%}dzPKI_BTdb~{vA7W;TBr^c2(v`MB&12SK~|)rA}gF!Pwb&baq6Se~6dQ?$itl zD*Kw6qMX5pm7_T(G89H4*#>U8e^ngle`HwAqw$9W_)%m?03kqBUIcpd05(w!DI*C$ zmK7AD3Pni;>z>u0eHvzUdsEv2vhSG zr`pa@p4&dRs%cwuzznxrqT}5w#j6^Sr~M*@e`ng0I6&@QeC|rynv?K z1qa|lY8EptWp7IG9JL}y)XMmD_cSwDO_pw zfX5*X0YU?XtwAApSHP~2V8Cm{w`hX;3!s}kqpn4+>5)*fnFrz>UTO4hGXx%{C~&Vs)0lDL3(_z|&A)2?51a8!QqW07E2{YHlbo4j24TxLcj{RK}yRrwv76F=&A zWn9&7Lqz2a1hC7XJMI3vv#giNlG5Hd$Yw4j(}_*_8okbv=FO5u#ZE*I0ApT0T8XS@ zG3rS4BlvW+l^Emf1wBz=D&UcroM?>^&7Nn(k?50R8?yU~fQ#xE&Awz|RjfD@WKKx{c&qQ*sbY=H5u5UyCI7i%>nn^F z%!`_vLd^ikMXj#%N#N=@?FsYWJK=`Ulk<06L_# z+S`6uL7a~A13*b|7^Y-X16IoLB`6V8>81yNe46yIn$pk?xnnL#UAVK(}r(#rZBb`0<$74bfH z`mO|JA^SxukmKNMJ0>RkHW~M(HXD2(7XWB{boGVML)_@-OZasQOW~Uw)j&1#6lY(E z^uo_JcF-ND0yWq^>5gE>aI^i$)7Z@j>rdJRnNebzHXa-)$Lp5Kx zrgPQrHC+sjQtSLvufxK?IC7RMI>NDfH;<-m0g6J-Mtf;Hdl}0#l#0uYzXo}ir;f1= zmMhs_A0aG|BofuYN|j?bg-;C?mM>f~Us@PJo?0b@ z09bYEaMJ<*pZbYj&Oscrv@p^}9Vd=(U>qs~Nt(Mp^sS*hmhUwcobdx?6Op* z(%uJmz)Mc^{LUX7sWWxD_JhYoQ;?1Iq zuI2JrtQ24hfw^Z`6GC4$Bk-D~s_ZVLf+jAI(IATQlzh;KEW&rS_5vjF@fEg&S=9qVEL-jDC={7y`MME`90uy+IBk zG%&JO(u4L=J`v%q1aEhosgkU7)v=V^@`%G9MDb`}$b3;)Fb^>$RZf{+5zW<(e z(%5A=7)s;Qp^MnM+MVlXLk+dH|GW2HK7_UZkA6aRJ3 z;QkQ1(+Me}`CKVUm;}s*S-Kn+iyg-3R*`-&^+J!zZ`#wdk@yp`&7PWyOm?`?*Eez2 z1u0pc0*bReECjx? z%XW_f0HE4IzYB64LUfj+rf?fiQt?(|~zP)Amd* z%@e?y>OjR`S${B`q5_UWro5>~u+HC+#`Ir?HRfsite;oi7f_t{=Zdu4|;pqi`P zh{()JA{>GNao8BBgUHk1KL=`ME|92iWZZ9csL$#G6PwVXXQJ)|q}ATW-zdbjX%JNx zF{c$(r-wxX=GX)BQNXkbcS?Zx?PhG$q~HKsHqbnidbx<9EMdypP}mm6tS|j{MW`J- zZNps=`eTzKSf7=UL;APxhW8{H(&!UE<)t5e!*TBdC`mrDbL8#PSj^gt$l$7gn3O~l z@SjHH0XfQV&k8H3Av8*l;T0ycB-99s0q)CfyRh_4@p1k~_-V(dM*>IqAqBGf@{o{h+c@(>kP%d(;-~%G7W)`}Ksf#9G5^+> z;G>(5;r8Q8fl;u`kKw`juKIsESbSC1GH2ra<`{@X+8fT_D*F;25YLcmfn+!mqfUNcZB z{<}G-DYQ-N#W`bh(rhX3C`Rga)7r3D7(db{&TAn3wlqpOH<1gjU``8!^+rC$UyD7_=Oxy*F1a$TbI)`O>D*x&ga{ZL4> z3;3A5qw8~ven_<=DwnO59U4bKg^-!OU@R0KgHvBug7R zl0(7W%N8R;{`kckqyYha*;osRiX6xHjA8irK59?+Vo4Kk-kM)LNC|%R_O7k#@v-Y) zY@EzOt4-KvAOndXFZ{>kUwKH1n6<4CGh7SL`u#iE;!?vaeD=lQiu<(kHMyjpA3jR_ z(BeKEF^bXZN7P&JX0h1xN_q_=9%%f1uE8b{L^25yGvI3kjZmA2uWF(gZ3D8^1LokK z>WUv=&d09^c_(SIzHCZ=seUJY@@K7Q_WNfbMWEY%g+6?+(mSS<#}Jx|SYx694C8kriel3e1rpMS`e6`s?m=jEf`-gCf1tU+rS?2XJMEN(sDYq_-W$|JopLNt+ zFXwGpc|eo;N;&uL$kjs|K!5q^?uhmPvO3Y@0Mf2RZ_^fJH&|`)m9*|Uu zXbz4gvlM2shK%o4Qhg}vD2=`?Im|erxap z6J@Vo_>~ryaLL~(;|}XTAfzc_;&y+xsBZ9lh}*-jx~)q}Dgbbz3zOWii{Q-WS*W^@#Tcrsx0U z6;6!=pKb#@Xc@e+Pmh48C^m$#q$nW>bQECZbMrgm|862=u8-M;^%x2IZ#&`H&X$|_ z2Pm!z^^zg&XD^B@+mE{DbX5`r`(LA748Ka=xl2aBX!yW%tHZ>D!qSJ0q8ver68{o_ zLiy}yer70&jUo`WC)xuogm?@6|7*b64=XogjRwjL_J5D_Ryb}HY}W98DaU!ZUl-B~ zwmad~Im&p|+;_}XSzBNW^9wv_?lv9b;=<^Q;d_0rrO#2FyGD_^$OYHu^UwU7{wjkj z;xAE|GyMi35(dJZjB*Dnh|OwWR0r}AO1vT6(iE$8WWAcy#N>q0xg{86q*Tc{?8AoPlYFH`rQ*T%6Z_qV64VRSje)LR?2YX(|cdN#S%KYG*C+GuxDvf#O z*t4nu9RyD0#2||$tO&28W}I51d7@v`*d|7PcVc7HpVA;^^bdH&!^(80Iu1BXciYJL9(m3Nya4pWW!b98xobyykg z!$w70k<_!=`i3rx36t!L9nxMa)mB4cD!k{%@3+wFqCF6eF9CJ2|JMcWIqZdeBKm(= z6t{zLsxlG00omsKq*{36jf_oh3Z=rL4ldS&!3E>Lq!9W;LuecjIz;J395s8{`{~bH z69^EWhXD3gi5nU%Z_|=ymf-`GQDy?>nAA4q^xyf}wA8EwZ7J>-(rMK!m}X$lkqL+{*1| z3*Za%$vhX~^$OBzORSAAC!{sk*7N0oz|abJ6mo|GIbxqTE$EwcLe;{0q_{{cly=Mz z(Srf!N)Le}Qk#}_=XYD^XmWQYtRB$Afw>d_{9Z2itC`EQ4w&6cx4JX(2|E_BvJ8Br zQMWdwkxMN*Ioufar?&Q3+yF{{FG!V#1_altnWwIF`s_t0`#5`#&~W&!N~G5T4?Z?{ zO1Wq@vlXuOI6j+`O}^?&*srKByw9a{K&;npgyl!@D(lX{iRKIgCYBl(-X4DDru!rc5r zB<1F@o=cQknpJ#74pLhp+!weSSnTwSfO8zxpzx=odo;L=COmVg*P7Hb?fP=M^67w7 zVvVkd$_UCw0ljx6`SB4vU0Q6Hpr85CBdF_j^76ZF7kN%)b=Tbzdc*vy~~!kl;V zw!zUa!odK7b{}1x>YF=o`r-A;eCJbUAY*`|A7PwQ2a8Zi?8PGo1?ZPs1eTEWf7Ev1 z)mlu;|KgbCptk|PhH1hKRb;vS>4Hmu0#3?*4-9q=HM(CirBE&Ic)h9ThWF)2?dTUg z%ldpBI$VL+Ibl`KMAV##*KmL?DnNo}hOXj#Eov(CeM9L#$5kqY_CuoD5j*~O^40zh z)0jyPc97x}kHkw(c=2MTD7;hdu2Kx&@z0Q&=k~*lK`xP1&hCL-S7j@3IW_-cycnMf zpUND{wngit2R;2P0JHfSKP$!!4)%m!jasM8gs{6n75PD&yGJ8Heg%Appr?CcWQ6*nc_rrgzP*a#l;>6 z&0?$zcQjP6C1`?^V(Nw=fMiH*$dVd%wqYtG*WmaIve~q?e@vPrV2%oFiwP4C=%=qaqbx6Tzg%) z0;H36PH0k>aG4%oHhlK@JOB2_GLVkYZ|}Hrl!WkeuveVE4ya4olhce2*NFDqj80kK zc{*)l7&~YbL`MZEeh7dICYIa6%$vy_X-980uKI$YED7EB*7 zjnW06F3q;ZM3^0K_}*rqP#OL4-eeVngKi^R*?`A;kqCQ@>5M!|@SWK&AE~>BkNFWQ z=hjou->BL`!%?HGfhqTOhQ_{P+l5noNVFWk(7mgu)_hrdbP+=t;iBo}-j0LuJS%(X zxu=mKl$f@O%pLF{87}fo>>xof=3MBD;&vV<4nVO1^5=wAO_M-QIW}f9i|zxYFYfiS z_gknv{+Zk8#i#_xqCV?OcguxI;@La=Pug5)IYdIN%_VKKukafQ$cpj3j34F2RwcUdB{zz}pgbR=KSX`=%po$VyD3dwvpe}c*y`fBRf z{248kob+sDD$;$WHC^Em;2u7dDwtyi{oN?wE&%`WmL0xFS@Ieo99h-lTN0lgw|)%(@T<#kr_yn)AK5D=nH+^;l4>C5=sO*2fsUdwRMW zKDCxf!bAEBCbV7uym;snzcW{rlE6FeW4M0L;z)4KSpsYe``jVlA0(~dDm#Z+bYlu} zZaffo-i!4r2((5sGCK(8QUCZrR}pH$j~ibB2|ujT#@|ZF z$zQ<+KhhN0N9xNHLk%r_I0Yg1N(tDNuC zzJkKjM=)zerIjtFNeo*k0Xm%3C!tH6&h?5DEozW2ilA z#i>YmUdZC_IO{?=LYzghkiJ3-`hvz#bO#%WQM+|} z8ThnRQHg_8MN2`>L1o*L2l;PvEkmeXVO=`|EFdtlf?$`nd2XBx@EJ%|H5NeXtDlxT z2(0br*`pHWb=K%gFMlhR$#6o@awy<}-%|3aB?{5W4&re>SZtC=c_<`bp3wUXd5S{_ z^%5zC{E~&3X&FJIoSxOjX8J=cvOX2%}$ z40G+W6Y~3E)$5tYFPaWArd5@}dXog(&6YIn-w+ITZmH0WO|B???)1O#7* zYMrsM3F+uvtqm-x@k(78c7Oa6h0FZ{IeB)O6O)=CwOJ?LpE|m%;Kk*cv9Je#%WX<_ zYa(b528q5<)VMTUZylf|+)!{OMGgIO84GZD{@o`Wo?7iwp9O4cQDFrUWbZx}6%UEs zwH^4e!GFaM+|_g(1g3Pc1BX{0+FFBMa*JA8!u|u8ZL``YX+ftZ+U9Xxyhy;rV(x0t z%g?*Ze)HA`l83*#cxV5a=eoN#oeYf5w;Oj>cfYkws)2ZJ(w3xRmEk-?04~FXQ`|oi zFU~}LoLs|qf3$oWSou9$v4{u4>{%PQ`xQtPI_pyxLh9<2BM1|>#q)s~vV$Dm5Z;!8 z)YP^(?ry8*680|OcOVsb-^y`}VD2rM7?b7_ulp~uC>|{@c6+R{sBVcF2Xde} zTN&Swm0mT^3W8>(pJ`}qUYMZi0^VemtLBni@Qw1Lw`cXG9Je#ytFP)ODL=k`7506T zPlY{C9c=gU>m1=^fp7*-epl@yllhoLf0)da9)oE$8o>C_0RXSBeAZOB936(5H$xMi zI^;$U+(I8a8o0~IimvfSm)L0Wjo?EA(8nKYX>X4Y`kZ?2UNdhd?5KX81;tTPth>%pz z*U_3*bH_|8;rLM=qo_=fW_u5_;z*Mz>Nq5rwczoCQqW_wDYyOOZal~SvRU)(;#Khi z=CMQV=25jzlMB>Zny?3ZiB)vOFX4^Ts<#ua3H!>o32*TU5H$BL#!Exj^L3`W3yjB{ z#Up>bfzbhbvTvn^8f=Sc2r3=jiB5zQNniX#ZI(0tPB15wP{{>G0rgzWz90p2zG350 z|g28 z2qA@we-S8}h3c2P_-cIyoxpHLG$#N8S^0m1p$O5&2HKA?7XY*Ag)O`=k?4wsxO@8X zVrk3edEGVteAhZtiJjK;0N@VftI={iXy2SFeIAcz<3QDb@qjyl{89F)FJ-|*QbvKe z)TMFek9$6H+>EowV*s8JjM^x?_vpFcX#cgI8cGX1)qt`ALs6nc*i!c+(4C%?aQHxs?>;qv1V+OS(kBLLrSi?Bs)<3Eu_T(YZPCD1RVSn*fb)y# z7_Zs-A6T%K)5P#s)L-_LmzPjc5N}^M5b4Nx`*gN43-FKg|MK$>)m~hE{6Gpm6|@1vUdd$-2mJJ5SM=&Emtr=)#jE zq`1!i2*(9RYAzA(1qEIxRQ?x9W`RAP4_KKo?gYCUJ__d4%xvw3AZWqY+5dM8l2`Au z1sZO8S~-*?%F2&_#z2Ez0rk{=0pQ&0<+aB!)<^maL7lIT@0YMzPHz+w>N3x08#K7@ zrD=;@#Dz{^-jg-w6eR3;78z2mjEn&*4V#4Cvoz*Dh|ad5y9w{SyC+;IenQ(LU6$hL zC|fG=g7<@GX>;BSP{dXT2`rq<7PbzUqy!d72;?0hc#|?GSu8Wj^YEN z!h<8WWWe>_*d!>?dNeRU`sE8-FwC3vub21I2W0Zb%ZJVNwVRSd=y3hE)YQ;F^)hmO zz!5{BB47OMu(x1A@3zKG0MDOmwJzlzP0o)PGDI!wsF>3XbFw^-MpBB026eQtKoBuH z6EfyhFEO>=5at?B3WARStKHfL`W`%}Th?(Hm0dHt*yDy}k`Qm@M6dY-y{*n2`;>~j8a%|@^@59<>iPaI4l*sdVjiLlo}UfP8P$f{ z`0D!_(Q!EeR_QoTfVq;1f@?L^v|#1Da${$;xx&aF2SAM8irPJ(n&7e<6u})e0%6Vp z(*i`OXaNR$z}1OZOSsjW^cCKU$Bxc6{;fIM?f4p6bxbFAKd4Eu&0GpClI1U?dzh(v>x5gOCiF;v zgtw}G`~~})@2(pn+{b+a_v)^Ixp9j)Uudi?)GktR09dKR((W0Jgj9J$$1yuyV^m)i z>8&ydYj9`+g(s`R>FwhnGoR&FAR;)nP@OxVOIu~g=exK1m5&X6Lz2(s5hb~R7ey<- z!6O!3H`A{U??3A4);eUroXb-wxeQ;g6EVjM*rUg6VLEvK92k-Phw-nlKH*K>jI4q! z@AqpB)o#J>X9uYdYczm8tI%ddEw^BDv+L&jYcHrD?e=TQk$wC4rtgUtmmZ!Mc(EDt znt~73D+!5B7u2-KA0l2O-!w@xa(+pS(;gU7ZV$jsK>uu^dDj-phGMgiWf;Qs>~-`@ z#Z^95!({NG2=wX_CVN`(hx8_(=3)E&uxttAA;r7Qt$h{(<+^O zt#!^yI1a?qG`RWx4<)Q1TVe3)+@*|Hg(I+@&~x1>e)ia-S3~*kU$RSQbDOad9eX|f zF2K!rKKNg>(^!w`aov3s7Q&hUG?Rc41FMTsV*dtZ$<{zD_ci0llfF~qnnNwqP2Hx& z{R#3{=bEWYq|9E{P|@y%FxPt3wHGwcman@L zXBjtF{){Xg&A9_gJicXPaIGu9_jsSb)$i-5`%5A7BkB~4~jkB5*BV4$YjHhZea zZEBVcprW{{%?S=+>w-OSQvCA)hY8p;H#9#jTBq5h3gge z)XuOo&PIN2+EZ;BTv3c>S{2eUdo*k+vTLP)l7R_=V0`Wb*8BZpTd%k^=_huf1I4+z z>l3}T7%+cSsK${1N!dvCZry##pB+3|K{*`7(LyIb7Pbf~hyYwtLmsUtnUttI$ zY4lz_sX~)OEZl3<>AftOH42z#62fcy0fYOvR@J37aM%Lyq`*wHxrH6=1U z0p|sj%4HcX(mMTktSgmD_P$J8GprBV`?3vOWL?C8_FM;ZI|iYFBZVR* z7a?v^5^zLIz|@aMMsFDfx0hs94B+>I5L)CbSMKX^+VHT9F<3Xy%&$pkg!0IjIQK)k z0|EDji4)h_J0-^_Tc^)jd4^tPcNIC1Ja#8OAonlBfAWM;FJMt#%p9iUqp09w$FyXN z9$R%>&@Gq5P|S^_IGh>iV@D3fPUw)2R}&8iJ_L3=o6D09tZp7M8xQ{T%?}OmsxQPX z?+u9l?-S-NV#i^XW$b#%Bs?szZ^^N^9^re&c8@YYX>`W*+Xen*$)jw&Gw?n|<@-Oq z6|WJKZ!@maWtL2^A!s0C-;eR zYot)dUOaM^ZoS>Ztn+7q>d_jnD|y2N=F@1KP|aY1KSrHUn+d9>{M=L07QKJ8)}TVvwOqoRIs@Z)G{Qfl;X$E29b z%CTx#X?`H4pZ`FceV3 zu?Y|9X8fU=7#uBNe)~Cv`<4+mNrvMSW;pF~u!^JDum(`%o_PG>*cbl*=}JTy|u=pb|x-QPY?HID%L zOdF+5^k_4M5WzZdy$C49w_;l{B>PpWuS*||IE%;q7txrWn4XW?0()PGc>c~fT~b&K zTZ32r3dYj!Qc3tP#QnjWwso*qvAZH7zvlS8t%+SmX5ie{8eAP4 z>QyfS-&m39mY?0b$<0GCg1>K>);;zcj!i3l4KUIvm7%rfBvOs_>i5Lph-Fgq9@fH}DZ9Awzjnv_CGXqAC&14q5vWni3oE z(RNl0{oFTlJFu_n-rDhAeD>)fF1L(0r=538o1^QU;T0~%zLI}rH+roX=9lAG`O+f5 ztu`G6U53g^`PZkt5iZ?Ir5PMf;hKW*?X^SfGwUBNj}I<^Dwp#awlTy&|DI3c-Yo2) zsn%tRd2gzY$vz@=GVLNZX;-+Mm^{$R=tBi(^l$SNP+-#tV%AX42U3A>V|$ORi!w zGpweQ0Htg_F;(XqhoYxnT7AR=DwCU;)f1LXeLS8DhG}Eb1~jEmyO)p^6EUM`bl-c zwdBBmNwx&FB|{WB(V0pzsQK~;{Y0!WU8r}OhA)Ejp%;MMx&ASrv;dpARLc;e&9F2( zg6UHWmMX#goU~u61*s92`ReLaO2t*(|AUMd5oPTN+444>NkkEmFWT1qgHtHe^Z-MwAjh=~vooNIbu$z*~(Am%$#> zJtTyD2k6qgr2)+uB`TPLi1bl0<@G^k8e_Ec1!goqC11ZUWizv>#)EsxpmwVct5rL$ zIEW3hv_aI-Cw@&Y87!2Mih(@2%6>L|D1PgoY~=6sRuXsk?h}m{2RX4A;Ww{}XOKcm z!j(;`Ny8i+OOK3I2>F{moi(uXM~n@z2r&i$?A+0lA_N`yNSyd*(*+<` zdQ_mFZzexnXsZZ#kWo(!99tVQeaKR1=~wyw3bYMm8;6}5%Eba`F&D~*=26h=kh4tKQR`_sFJoo+i)Q-9@E+JY;)nX^4WP9h7w z*Lj(8va@zQC2%Z|4*bRy+Oi{8Y#S~A`fGyz&r@L8Y%_#C`>uH%8#@!;MB&s?+&M#^ zVFtV)D{kC;__Qvj*sOV7b&*}ZeN!cR;|qP(3T6b?V+vW67&B!EPWFv%=BUDldrH8W zPicz_pP2d_AbtdFIY1|ytH7=USbJjXObyhZJ*`KgOI0GHd5P?P9s`;03caZ{uJ8Wf zcSUA&y52$w)PksF6>pGv4Tbs<+&O>qdC~u>LwOUCw*7&*SYi#Xk&`7kOCcJ0G2%zS zLp!{?*=#WUzL7=E6Td%=D0QA-!%3L^n)8%47Ma~?FJ9ma_s8?D^^;yq>%Du>>!o)8 zBm*CzzMsBW_jhlXR#=VSKM$@x{`rlPTwg1@;4rp$T*bsPQG@mPp>wvRB)|BQfV1Vj zJ(k*GZP`Tnw7-e-)@f^x9%+8u_FBF1p}W3@fUv1<(Y4k?>7#SUXK>A z(gMPtELsjar=L}9?IoYwXLja1qlMD+KMncavji*tSVhy|VSnvkX7C&~H+-Phfsm_% zjskw?)tmaS?O4FtR@e4OFm)t%PMxbs@g!#Y&Tz3SWq!4puW|E>7u>5Nl1uV{*--k0 zAyZNX4_`}&WArUf$Dw)g@2~o<{el*P?DcV$vcmk4#r8nU@{QsAtwqMk{e{5(bN%C7 ztTsr1b@0A93d~8AxY}X1m0iwjm%o2mgdAj}RjAUKB@}bYi`Q?Wma(l_)9SK}&tCg> zwNB89->HW^xoKo8bhj45>vwzoC`<41$0P$*vTi`2-8GL~DO{Yr3|*tSyh>i1ZAN7* zKeY8Pb?Tb7XE>$Xzt=mt`MY9ab+F?3_&r7qe!>9H7#bYe!qFUNitFuEoY}dvS&^`+ zWZUL2QOFGl7Cy^;Aeh!5z&cF1N-6MJPj zrB5r4_l}%ywb;qW(&P1Im`I58$3k<5tEVZeD<8vOx*f$Z@leNYZafE(7w${cLpxjO ziS3q42DEt3wqX!&$=O;Co@jP)u5}<5Nt&r%_s%gfzb&xso7%6*(GlB<^lWfOP3Gpz z(xk=a$0x7o)@DyRt@k)mckXXA29<2Re&6v1LgQTW7BUL zc9X_~|L*I_P1Y;>!mCND${iB5)T=i=qe;q-p-%hy=z&SKB0A{-phQ+Afk^U zDyKb*A&m{?iU)62rN;26RiQiKI&HNlNc>Izw)fU+w{hFF^t&Ow7v$o6QY6L zdq}Y1rGUvdejJmpu7AqzGsT<@B{xD}SiW$LZDaWYUb1z3u@=%CDouTQ4PteM3Gq7M z!_QytC$eI~)LC7H!V1qED@#zu81WOm$U{>z&D?b=noSI7p&wfyPk}!3-3YC`n>qM* zOc;)aiXDm6#@6s^?Q3kc;jquQ*Idm=uiMH4kO z32xf2VcipVt>%2289s|jXPlz3nP!yH{*pbVg$##7m|k^>;s{gQAy#fIa`LmkyUdSzHU9=w zn{V4tQo46Bm>tl-7Wu!o?MWSkzUs;`VCowFItK!yq2IiN)tUiI)Nt_?X!@C;+sDlHa{B|9IEC4aqwMo2Db3kl`*7)XslG=CFHMAex6 z24+8OOVL&C0u%qSQHw153E$~@i>1`_qJVfOimTd*ZOAm|Fb-)`7-PkwC?xkb<)8gU6xz^?!t(_f8g71z-;+4h z@V)(suWmgH69^*Qm-n@2(1-AQnF4>TU!2MF%2L1rL$aDqDoZ6FDd2^K+vCAb6_oB#=% zeZRZ+{Lb##yXWrR{ijcNKh@P`-BpiNJ+$&WMyX&6zKnh9FjF93*ci7;ApB@+F(0xH z%wqQ*=1iH!+O5@q*yv7s;)Nn?61;}QP=D8xYwZrC>Y17a#kJ_Z-WFAN}TnS zJ)Z{rU>cEg$yDX`m)B1G-%#xg=NBMexw2RrBc3F7lAXB;q=mDMcbh_Q zGbB$zFQ1v8)94W0d%yh~V7LQNPFwSR*nFCESzkp+i-!vA2;_^Vkec-cW#4Ubc@4@V zG-19V?P$|hk9}WSbFE(5g)R5D**e^RqB7*$O)hsHCSKpOi&{176JKyk&TxK+KVM>! zFJVUfkH#`=0@~8UpZ_s~+ITJqq}hXsP=>wTbcH#-3*TdczrV<8FMq5%UJRE+ctq}C zd#T!c6;+s94;h~Hv{ubPY`m)km&!BS1J;H7-*p&mm8ppjrxaT#rS>sg+)qd~IN_l{jH{()sn|vd5Ce~gTrv>+Vf**P1h+zg+GozBwO!=(% zGskQDHen`oWNum_`@^)4xaKuERN;GRVXe)AqcK(5syp z{==^`(37^=%pshjZb2;y!b4i)I9z1v8(WWxJ)WT&i(Dkoyn|->)tzPEBb3o|)I9qq3XNWMlotJryLJO&M%S zeF82;W7&Ay{)ufx+}<@J41JLWt?#^Qt~{F0N~90UJoQj*`Zm>sOEZ3=?+#=NLoOaS zDEIId7?(sbN2(N8t*DepH>^E*Yj{N*DdG!44a1mGlMc60LC@Dwf7;j#$Ih%58R)J8 zVtwD(eS<2vANZ_2SicgA-|*dSHO*6WTx3q|e`prJ0f7>sy_Pp_X3nhwdEblSQQ-#n zx@>deYPZW;tq)0?wk<;aFqgxGHXP1K3+I9^( zg4$Yh@l5IyvB{a(!;0y0x}Ak>{iE@M4lHSK{@q2*+wu2F7R?9SZXVX3XK6_pWldYBQ_C!j=ov!W9>KQ0P)h=jz4dtu;4BW-u89w zHSRlng`&YoXeXwb_FL&9M2C8l}yP$!?(uX9L^FBafPg7lH5{!%RDNg{-I^h z8NsO+;~eq1cjZ5pajaYUIuE|9P~v;=SN|DXW!!8fRdZrUCv?rm$HMB0*dvttMQ3mJ zi{RpIJ>vtnEEm^PsuxRArfKw;u}O=87&o!Yf?OgqL^ynWKIg zm{Bp|4ldbCZIjnmPi@rcd}(a(j7@8j_7NJmzJi~>2GlKD&5rxTXJ5Spm zPV;+KE~TB(OCdGBJecMv|2zp>6|LOnNDZKdVZF{Up+)Jj#N(9?UK5y<@h3~N_NSwM z-B$?v^OOAWllMLN82Q1BvX&?f@0;}>DC9YicMxSXveEopW6P-<(fVF+czen{v{U)M(5YftsZLJHt(&>Dk)AXBrC7ZME&C&8x+?7GqFf3MY zQ2CSIPp2C(gEM#e6Iz7~`hoTmk1CQq&SmApdesrj#b3a_xdHUJs3Uy>e%qXvt9T5}|)TTqFn!f*T+Es!< zUzc54<`vcuV^@Nu;g%ofXOejR!`%9Dq7TIiDUk(S+uDa)I+pDG9;0uI=)d_C_)`7S z)ye(wSgS_5#3v?KpC+ErC{>@Q>qKH%sdVy-aozNs&*;x zE7`s;VEt4LM#pXnvv;@-Zn&xO{LYwTyRB(ARZMi_dE-IGyt0n{Axh!>>`=`klNim? z3bpdokuN*OZ?b|H3}`0yNj0pqc(7=BT~?(LSDs|73+CNq`}vP6B`FQ0eh<}rMSWbh ze*>$HzJKyOz1)2?-hKB`v%MytuF9gezvTZ&U(d-K*pADt#-ser3#Ym+yYK|EU`{BDeV2`@w zFVxC7dojrq;$6uog)Wj|x0x^>v^f{QHr~HLr!pN*Cmafs*zw(T9Y=>ERj(o6J&%Nk zOT_%a4|~k(~vcXl+W5Gk*2|7x`P9vjE)E=V4J3_0X5%A%S%&coik?} zVOSq3hfYF^|@%l@u`u>NrS5Fzlq~)aV}#*n{dJIY=%7R(2TGsw$G} z>9YZyP~w!lV_GWS4Ph=wpM^G<(3TAlI-mh?RM01JY~KGIe+?s;moYG~RY<-?A0Yc& za#mS5#L^R}9no2noEta{guFfIR7%Z0LNRn=B|3%jKTY4APF0>mbGgy8|GZXxI{)+2 z7%0}$|B6r{c;6CT7Y)NP`|}0ECB3>>3bi8@Zx0tFMhC>m12B1DSo%nuq5;DH+VH_- z80(*h;%^&<-+yMq`ad;ee6Sg=&Fyn!NQ^Y8x=^C4uV-SXFfE#PFQxfQinAkfCt~+D z44*V$9c+5vNjH|=MnLfD87ujn6D{JeTn>C>Ma!%#X3wjKc*<%a--LLVSu9@r>&HKL zuwqAQ9bt9yKcsA_+RKKpOa6E1dja>}bn7&|`R>G2wEbKW@s-=2OTLwqpqmu+UX?fl zYf3@uz2Wo27@MaQm|tP(t_2L-6f%w@!^EwPZyV*jqaB`|?fVJ;s&E{52p0@pdC`>7 zmqpS|^j_#a4;$9lKt8FtP;DX>F9;`vejk2>|5s#!EYU4#*7$9R*09g+AP6n*->3f0 zgCX6`+zFk*xJzhCPq@JJ#CRlL|Ca2|8>pd2QVf52i7MdBGa|+c?#GpMP&k^#CTn2j4Q+@sK=o zVnAGxTXko}necGpsM7e@+A<+XY0d=@!E#{}zM0ZW>?_fn9UpHPQA^Mw0{pE*NuM;-ElKQXq0JHu6PPMfTnw^;t#kgkQ1OZ{k+U zdL4WpnoBZi32~x?H*6k3Z~T3u_U%)V460sz3QyX091(;ei0t}>wjqUcftKQ zi3E~Py$Nn*!JNUoTX9HwV6O5|3Jh{O42UCi?ihH7WJg&y2LRq{7mxwP75#q&);TOu z3E*TW(P%k!THM1h_2QO}BPDJK`l~n2CZ*rDse>&3nQk)wS->qW?-#MsWK3Y}nU3Ab z=O?jeGq?!e3&Ruoc(^+0rGVu+6D=2%U;1O-UZAM{50yzBj*Fy3j2S0>muJd4H#QM# zxL|_X(D6%#EYahzrneiHpG%985KrMhcKlq7O19aw{`3Iru3qmb?ximHk^y`X7ke+9 z05Nd=&R2`vji3w%VXcghux4GNzN1^uN0+I%IY~JE)FWzM6trz%5jB}E1`4WdERQJN z*I4jH=N+tyj1YqrGt=u&?VnNsoxi$FqHz$>7DG+FjMnQnHDk;sM z)ZR<>)Ff1`vlB=rnlBppaU#p5E8@)-7#mrf3|WeDav7%>u|0PAWn73m$AKHTI#!y3YVDng9M?&N<)pnETj`+sxH5w`6#hv6|+kLIhDk)e}8$45;TX zV!G3D)5kyG@zH6|>FqrshiuNh|60X>$%{1AW^+MF_`D;sV5ikPy(rHnw*$TSdfIQ@ zr9?;%R#~!Jux1Lo*AgX98?SEGO_^rb0+=-jy#zc#0du~^fIYf(DM;~?IBIUS{*%FW z#?|#FIXv_aD@z_HVD#xr=jGR^aPVu0|7NOhgc$X;E@L7HcGF`yJT&hV{c6U1<$p5X z-`Z%k!4l_h`ydhuw2~<``uxKd1=Kv6^?=zFqn+}iVfB4C~R`;c;SO+K*ofl6PQVcj3 zE-&5HZu}$0psMzl_RL_4@rq(-uLOrPUCGiai-HQPgamLb} z%X=qTPULnRO%_hRjF9)F1W}29tZij%`y^jmn8|pr`nnKj))sRCm7AH<-E(cE6(i}l zl^;XsS0ok>Tdy0UE_%v7&J>$+g#&CZ=lrsSW^VJyc~ajA-D}22=~Fi1`)_|~%EQhp zB@!2gB1}_zVmWHm_Ui(#Nj>bY{-L*#UYUNKBtkTDI7Or)hE8v-W{!K6uVll}%`v@W zKF%zYxBT<40~Ul|1VgiipG;>=zp}^VN52GlNNJ-gDqeCz(}&)?XTEiPfL#zXSPb_= zm{Dn_KLck3^E~ST1yo@0yPHsp8Y(>u8ZGde(p^-RX>wAA8b} zphrz6)u3jj};s1pC_KP?qsbWl0QGC&faSCyqA)nv8JEK7&bNH@SMO%8_~ zslQd0CG^I_(KqAaCB{>g4A;b&6zYU4fo~CMHXkpLa}6D1H2UC*x#Cufnet8vpmVbB z4WY_@GOyjuwEL3az- z60Sq+u>) zNCr+~K4-k@B){I=>t8zPzphGDj#l2GTWRy)e|R+!Zz=Tk-J9W8&z#n70NsP z^+P3}7Sbaw*usPuMP=?kJR<#7sVhD_MYU6V{HS5WJMNV7l45pp zEcfWmU;z}Nu0XG@A`Xq|jg?=2PMChhftl$X_jYMy1QXn?OV?`0to1uhmaaAxSr-ss zz!v>`xokQ!ZabfJMwpQ(S>fcS2EdtmsZ0_(gyrX)^#FQ$d>)Vmf7@6B_bvdJQ&{=+ z=&IURS2v!r{X78+O_Ak%oWV>bH3rTTJT(}Z!Q_9(G#ksj0h;tuAy)4rMc`T1K7?@W zB528-P!X1(h$GHzwV{Mk)OW4wG>IGKYF^Lh(NmWhj89j1LK$F06aSLKD({iK43IqA zV8vP9XTjQh)|kA-Mv<%1N`KNv*6jM#i4F3I=LfF4$+Fpz(XI+_4s)Iu<48|c`9q~Q zdif#=wNJyskCsqphJz`BlpeYTY2Hj(y0?G3^4iD8=uhL$KGMNn(W5@_(r^8AQ?&og z#jc*(Vc69_<-?P7?^b$A!B^|2@^ql`H38@Cy1y7keaa@2@Ds(#-7p?Msr$-L;eho{ zc`5KWPLu|Y>llDzY4_DQF&3IIQ0bo#Yvm8#Rl-E?3J#^YP`&OAhzA$#ODm1aNJns;6e;9dQN7rT6>?THnAv+VT4r5vk<9H_7?dQ zPSi4nF0$23w>ruhtRAT-s1vI?YyCo~-;}tH*>RQvwnO!m4OU!* z(}#2$5GY#jUOgUo`xet>r;COhzhUn`H_ry1sndn3@6tqP(zMf!*zL4sD zMfQp?XCh*DPS=r-ZiU7~LW?*p*RNLR-ariwN5-7$g24(Gnz)l&n-F~si9;*u3_AZl zmFkyPWMa5*Ori=wysGLRi<5IL*y-q&DLMSrkb4Tv!n*U6=}T(&6k);|D3;1dirZ_d znrzjVt}?LlUbn%T$UGvhN44glZj7`T-Vb9tCk8sRC10^;WRq?J=(Ted1FGK8TCYWMPCVup(nYs!S=|OM2?3XgaD~-Y+nJWS+0n4h%!-_ zNZ?X6x^E&GU#zs>@1yFS!D9_*z*VXQ^@!glvIIhm$Aky9QX3%pF6gU<$2 zxEWKR+2K8z!%ENm_o>!lp=Ao$U(sLbORDAml7Gl_NNp;Dz-en*EfQlcV+=H~X&!`5 z_!9PnCy5}_#Ymn)%xAZ;tuAs;NQ{EXldrd)!!D)%BP&^T1u7AwpGYy<0LdZIGL??EfpND%!lZSo9Ygq}Q=}m$Y8J(Hc z5#17icqspz+n}#R+N#R++prb6_26kGV+!g*g-0-;++?pRljLz%B}QsVk`h8r;v*T% zyvl`8@3J0qSEJ>g#TssKm-&hJ&#An7jL(19hL5U5ZmF7;NiWM?J^%Y=@^VkR8#rku z? zZSqNot=2#O=*;1?GPyUH42hTwmUvF4ckdH>r<)^xidhZ;|052e-c0{@Fe2xl!3fEJ z2O~89OVH9?@b~chS&O_p3ctw(G#y$R`Db+EzdZePQNEP6&54hw;`vLXkqCmu(=V64 zY>SBlORkcooeKhjdrI1CDlbBIn}RI#=s1dt3%u@2LXL-TZ54=DDD(VX^|o%g4=VnC z!5Xmow9dS&7q1NE7o#pMTyrhG6jmb2SUmVbUHole4CRKdeE3qB1xGNHrmJ5olm$kX zwBIzagt>3JK}y7`v1?XsMYJH3QaCv#fQVK(qnQ^i7-4g8!3T(hG|dx}>oGD@9&mgy zdhQ}gmABFb{P?PL$Rlj%k=vCJX|FI9AbzF%2 zdaIu?2~K5!Vkz6T&Xb2nxuMrT4jhiR{oa^?7UOJ?m#Q{^FjovG4imN*U6k?F@la1{ zs3msHpC<;`suD}~F8n}Z$Z;-@#9yo`_Nbfd0qnHEq!+v|c02oD`(zJVEdVWwWD_uQ zDKq_haz9{R9aw?c{_{yJ+Ab{kBp&C!wsuh#I^es!2f~zsI0K%cpK2EcoIJ!l=-T2M4c!9;6f*kOThdY~9HMFv^k@t;;$F}w27ug-ly zYAo#$!)0MyvihC#&_(NEB-*UD z$^55;j!CAqpKq!zuJG8uMVBBzS`E|)*9VB$)?V-acrH1`x%GA7f~tt zCVF9_suW=yumw@hiG1B<$E(Qr_x&sMP8QvzjUuHGcF8PYw#c*Z*X-MH2i1!Ur}L}) z`lZVwxTAG!lQu0$&S!%zTbZPvgC@zd#cYttBR{e|?gpSCfqZ6xE#lD#J1x;zZ|AYo zpZT3^c=Gh^FQlzi7Uv&wLv{#r7Uzc~gW;U?L|wQi$pNn7W^;YRWtEhyc-0F<)mcuA z?*Rx74Lxu4a#pDvipu=-Y(Xv-t?)y;i{~h3T9k6dyz~hE`Y3zFH|gdVc0q1@&3WWK z5s9yovFV;9pV9vg_Qb{@7&L6Ci`-WlsUE4}24t9oR1vhG9s*alU=Z zIN>0&#{oXo2PhHpXIkiE_BAI+;4yMb2}zK2y(8f5W0Z(apxz)UR_;rICXTair~_&{ zSx^p;9Stti83c_NBhgTqg8kLNmWdm2iWDO%$+;B_wPxH%{}-6^U#$PZ_b;aZ{o5kN zWP&?)em}|K*G;#+MTY%nN~<5%fXhbmB(fB`dnq~~iePZEt zZAD*KaB*Ijc+K%>cwc=^Nx~CSFK<_UxDE0cq>9~MJFX^fzwZwSW&^vZ$2Qcy@Pl2X z7D2Z2tdjpoTIgRX{r`Rp_qr3-vSkX)^n`!hV=OfYyj+}T|7!SqG<_0Xi+!oU_g$NG zz<|k^6>!8HIG}kS@v$~~M&Q{QB5lKVLBg(YN$Y#MJ>fu+vqh4v%k*biuswZEi4cX@ zxJ9LZqj8IDzY}uM16aKSJ2UxFvi7Z@i${`j@B{(u_ewsEJaW>l;5L=7stzTuTKHtg7;;Ae(3&Ue2YuK2ICJX~fEpm5oK za5p_**efd^w!E47w!QMZ_R9_M)5=Sp86S*U44Pcq?AI#p8`E+ph>w&zUrAog;gsrd zTPz(G%RAp5|3hbPH?H+EGsve;tI)F)SPRu7^}>WVSMAC&rgJ*`-dJO28P*xC&9P?&M-$t& z;Fa4#$SW%IWzjycK>E`Ip$wYh`7$L15vUTT2i+^2vUO9AL{ezM$9cZ4);LMrYR|fg z$HVt57{hq{@pzNO-X*%#nvH(441|;1Ppy$vj0q$#e?3sT&n~G0Pmp^%#ft5rKP70! z_}f{ynOBJUbFb><>*zTfS4NYS)rF}45NH_wy~pVpGw21pDm)&>;iXQYHi%c>Xb++a z=$ak*b|cewhdHsyK`9s+YPmTklNS*nOBD%5(36 zUDO^D)VWFwdaQ$G3P&eBUT2t)HQDwJ5#^XBVZ7pJS_k7z*YW^q>sYq*Cn|w*<*1iv z;`sp?zWI0SRk+{Nwm#+z{#0VkNGLkV5UP1W2|oXH&y}v+5=8*%jz9YpI?Z!@ zfUY948QA0HxO)^o8LP&<^E&*MdCW2rSvVS=!3j#*1{VMCB;GgO+u^CD|@-pn01nP zLj=I(R&x)ayZGx0m%n6z;f@ZbURhEJ;;e<7e5VoOKOn@(m=~o5Hd4LRJjt2N%O% zUTJDH*&2DporNMx?J-dnK_aiW<(O`i0K@QG8qik}y%ibr>k7Q$bp>lwR4t_XK-dM~ ztBk_+pmh=ck5%KsW6|l&0vvXvCt3w@0XRG* zHvRcbDD5ShAI7Tu_zty+g`yAs`2z1D1Hmg#!{iNfOfK4~1+_n=7?@m7-fk(9=2aZJ ztxZV3opx6N!p=K_LRh=!FE+_Z`>x&IcI;T8r&%EhfqDNcuKT}xdej8sx(Ogs$9(F@ zc1&~1u}ir7Gj|Nom=cn<#m#F$$VgqvsoaZSHHMrUf#^%>Gg>f zR{X}h%$L&5PB-BpcFVbWl37BKhL8c3=0T_Erwz4%j|aT+N-1s9k3!lUF=ZY`42!t%?(YODeu?1>aAa?5F0NV!U;KPFzI^|w^QC8#r_!&KEv=f>^Hauxqh z&`ujK;uiY3Q*Vq%7(Am#*m0h}Z$X!{{|u-5JQw8mqpm~Jc0Q=O#U`ju7FmDg^R9J2 zQql(|Qj_InkfEpXHkl`3wXI{;w6~9`I?G3MHuRaC!^{&2p>(Ho(qF_D*aYREHYL4WomD|q4gl2 zLl%i%=*l0>eOP2Q0;ymh57&M_OgZbD8uW5mHvavHav-?RXkUV?Uv`>Uk|&QZlaLXH zJ*Z=^8JQM{hn51-alRCCyq3VRtQnbLN0=->1e9S5jd^m9&22C~?0J&?J^{Ok(072) ziA?wpdMA{Hy#7GB$j;8O=YKi@9R=3n04XB1VRPhd;T)D)q}+J@GSOH;N26<%8&WYAJdikLuZt{=Itc;;yh&cbc6kCI`{ve74m6{z=Q)$$iRs>vQ0XMj2MkGUK=B9SW}A?C3D`t(`c9^c zH1d4sbb`84tb`WM9L~y(@ZDh^Bn<2Nv)?KR@h^_!%68Ms_kp*MZw3!~4K@H{9`=1+ zb$%M%X|pn7?hB6XP%4z46|NRcb!uE!kYfX@XB2w}bBk;ZL!E>|K>2wB zFHH5zZ#uY+gDZ*Use6bFe>)X#>pUreM6psfFdsdCgv*U+Ba}51MyM%3XSem_M9S+k zrW>-0!N5OO>bGJ%F#SHtaHpM|%~Z)>3@~K-wiQS$o>&Q7RAcB|V~xlWzhF{po%?LQ zZpH4CR|&9BZg4?DT6S%~%KRU$)E1Ph_^0*YF?=A5=**TS8Ta%%?(PaET|GhOmz__(FX@oTWj;*}Z?sA_X zmW?2;qF3vg${nE-(s7E4DydZ<(f9yiwP8D(&dCao{Jp{n);~o5Z#L_{AD}xmU6<3> zS%B-U9J>4X?%%GY=D(fDoPS-`fBKpKU*4Xq+_;rYhnD)3=n648g@4TrRpzE zKI2WyV?d~b%HrSvlm~g6vcZ)oNr^K2ON$svEqi~;fyCHskZHUBylw}&IuW&DZ-Ze@ z(cWvl7L(d64(h56!v-Lk!pkSYl>zfih|VQZkTrIQm_r7;0hiY6cU?zo1$`ABMtrJ_ z(Fbob)XE|K&s|b?-lFh_Y4-hlDjLi85C}3w^VMammrWQx^!_iL&6pAXO<5aH@>(@t zxL#w(SW-se61DtEF}Wrq#y;PShe~$^hl+!upTS5HcBOh;eP@F zac0Vz*mwK$ZxlcWch>$Ct8~g2Wf_C_AjdgPM)&)dFu$}JDK=yAOtL1`8V3UYP5#J3 z{|zZJO$_1Ty?cmEa`I=(43H4T!s$>x(Np(OrkZ;XlFs}t#lfC?5GIHD3n14QO*aF= z6A5eCpJRg5t}5NhKKW>icu~Ow2~FM5&z-pCSN=_a;!nW18RbrpEO!L*TqUEwkoQ~R z(W-u2Crp&okv@apih*u`Bp5AHdTkPQNr||k=)*j>bOip|{?mBK367o35uQ)+3mxP1 z7ju!%VbK1|j&^Cn#8cHoGx2-a*2C3fM66~HU_636~% zDT8M8k(?{6TK~BOTYgytLZ#+KFyt55`Rk9+zN*~%?B;N1#MRTCUZet1s}N#eoadJD z?7bG)#ai=5Y5-Z!;?h?kPELmsXB+b99F`DEGa>vRcj}9M$1Ef*L0tywyY#R{c8D&# z)sdx_wtw?IP&ZU`>@glc7>462C6^!cih&MJHI$(2!Xkv=T+gJFI29dy4?Gw9?{E7q zXDX#Ynbs7LP8dC;U2}n0+ge++%JaN z-5P-<8}DD*{~CoZl?>Ks zfn_T-W-$uoKQ=N3tq3!1?C(3n_Fp`EWRKgc7iRgbi3LMBCV}iRaf4F&-cT^14~=wdi(04HKd~|0Y(IACOLGvuo!y+XNpfaavR-1(!`JfNpVwt;@Y4!8a(^L&z#?6mWG-vrm2D$H>*d6X_XtEe(f6ywG*R~uciDpMhi=bT z1{``lDLvMd6?4`wj(?N;zrkypMpnVs3g!|mL2J*KpcBQDY5?D(e2sJ+=lp(2Exrot zWv)oxFS_*C>9d5ttC5GdYqXJEt;|xVUv@W$mEb%VzaxU^(*oDh&z{r3QRI*W;G{AB zJ^2^lcPzfnaO)T~p~opM{@)0u{TX2hSawietHtRY@7~Brcnly-=;O9Mo7LGtn7~Y* zy+U9xazJc17l`P8n`H~W2e$PKzn&c4XJAGinhY()2c8}wDbmjV!nD*+P>wL~m$sli zJp)cQ@{sHy@;vTL@=yX{g5R3EIshyEM-lNW!Bvnqf$~%-c{3tXx!)*_6#yX!dcJ6u z@TiTmOzk0Z;9An7jd}E_*W7$5sLL}Nvl51VYlZ(eZqRB}zYKc9FjF}5;u+eWJTLJ= z1xQ=0K=Tl?l&Z(VThk*VcqJ(gnVQBqmYj5OGJV3o@eiwC;-<~|!5%&0zMUEoNwj&{ zPnvc%N=@g{Q2#SGbjB|ls~_2%W3bdT_JG8STOeVuCV_t=nquYwH~0hhGfT>#7k9Jz zhYFwSb&;sTGJt=aGTlV$zG4Cu7{)61-HC&Y!gB zL7Y~BgEevd8xAs!29Z2nvZc_bjzJ_1_rg4QIjAG?-2!Z@){#v!`G+*~kO|W33kJOQ zO;ISnXX3ak-;(BuB|JL0}QaCvUGvkDsUZ;UgR zUWZp5sx|(?D|5X}%Uk$q32OYU`TqA0v#MoSktg(? zt}U$&psBE5E#SplFz3+@6uQl`)4_=n6QU!h^ngvPRd3lyk>b+DdJzG&(L-mF$k3%0 zbJ%5H&k;K>Nu1;HalRfJeA>nSyAAmBO=!9$nA&_v8sU7Lem6qS_R>V8pG=6uj#tXC z0!1A(ddok~+5O3Sd<~)K$=RLKlG-$@A+sAtu=je?Hi#eL;%^R5JpW6>Tfkih3PB!N z|4vjCCvdfQ#d@CCeN-81O>;{elq z#?PB}#v6e;TK>p5bdp4-A}odXhyH^Xoti#V__hdXb356da2ZJwzpFl<{o4>d_Db}s z775$7Aq}3{UZ+DGm-jN{WDF!H>)f&m&z|tTR%`o|b!)ICb3-XxKqEWPyX~X*Vbucp zgLm?`(vhISh=)k2;y`-`iv#4fm&gR`$GUQe^2_3v5jt6#)%7QHiY3{Hg z!@Kjhm7gMZn}ED2PVSWQC=X7=qN(z*o?biyX<Ky4_a%kL)3A#g3f@Ti$`;=5W?wIeoZ0_cDJoN8dN8kcsmO;N zm#o~Rq}6C^WE=#uA2BXG@YmfXUoPwST^rz+VLP9V+^uZ_vQnNT;Si>srN(XOf*^EN zX>`2`hC5#Lj_7`oPYMTO^w+psQxf3CS>_6R>%L(e;*KXM%u!iI&gTPhv*r;+IB z4oEsEnk4sP+U9x}_SJaJ{@e`od>ClRucX!dX-6-B0GTipx5+0)c+$?#WDXI4oU!bF zP1FXdPnMV`lr%ljtOPu_1W(S-g6?U69HB*o$dxh8XV{RfXAgy0xIL{ncax*qqDUTc#m8l5&zE}PVmKh%gLj_; z2I=$gL#u}05jJ!7Zbx$#z0rs#&pO<#S#~|YtN0!FX&U?eO&aDP95Cg(7XSLKuXvt` zLh;S2NWkKcI`pR6>Gef0SSl8FHpR`?)N1Ci&=3ij{d;fbPRJQ&UjL9l}5VUQ7oO1G6 zd)u4FSdeZO4=*p3IvyOlx?aS~0eIQCCe}ib3h_;k@+H;kd0xNnt~!p%?AU!S8PuUt zBg$j#y|FZR1zVt2%hCfw331dPPi20#eON?LV*por3D7d(b#BMbqAi93%^NQPuvB`a zp=Ec$!V@a~o)YYLW&Wcv9KpK^@9PUnlmcp7VKy-f_&Yc~b9Y;u4j2OrUxLyCbE zYS0=yWkWsZ_sm4AJXbj11FSP^;X0yKNa2Sh znPOY#%fYZgmD%{@v&Ex%T|QKw9?UtLx^w$eI2VGDK#$#yAw)fs*)gdw1#P`Hg)6lqvNAbf z9UN%cdUSYvY}1PJ>74>5`Dg|vb>(;8IOLTMe`>c#V}eH2de4S7Dg2z!;zB&6qy943 z=T^`iDvI0fuUO0sCrgoE+wAvoKGb|DXke5&u$PEtQCX#D^y+d-|AZ%0&*{bF>i7Af zE~~MflEtO*CK>Y9y9xb`2|@j*9^P3x;IS^7V{mp^eb#`|;Mi;+4X^F4HTXs?mQlMThD};IYZA=pE7-<)Ryo8SJ6XocB{VGeo(AcewF@ppKi z1&fAgRLR|gN?T0Wd?qD4dV`@x3+b8`Rm=IzIbGDHGFLGoC$HN5l^Qcl_HOFf#q-y$ zGE_I7*k0fmyKV2Bvr$;m;g)HA`Lnne8K4frKidC21u-Z+g+dW~Fz7iOd$8Qo{F!)w zn_-5FpShqpG_>15=2h4cBNIEFSl~ zu&frL0;TA&CKcZGvNn1hC`t{(1w}$Y1Oedw#C;_0bGyx-B}^^ENFPZ8Zd1dp-N3`O zAuVs@r<{-<8(Lc^qH~^%OLS;n0$tK`BS`mm`x!TDnU~zE&66Pk7N2>{ngZ}a1#N!# zb{^;qFr)NzCo&c~OzuAa+;zoA5*!2sOrGM?n1rn99t?C;Ir@I2>J#e8CNe_aKoW4@ zMqX1?vDl0lSGv_cR@c?SxcpnhNcJU(Mx`8_@=hc4Jls`FzCW&$5(UceJN>|}uKxwV z|9wi#3v#7U31`IyS~bJ>uY9lco;>z<$P3R5IRqcz&F_`PtF3=>v=IUZ?W&?`5G(Iy zYYkmjNZq|jx`@Gi^HU~!LGm%&tmIonSCC^{k1VjbD|sMNZ&02UUM)X}2U(k-j8$ z9_@7aj%0m@0sLQ_uxR0(g+k24k?eD}1#4D~J~5BJ4fR#M=AzwS-4pl@LAgJpM0013 zz7q35j}k{YO@RJdaKs+3;Qk|xbE(eI<_K2Lcr+}B3edTsx*kiM-bCuak)?Bj8<*Ek z0!XHh10zd=sXg96C-iMVqw`;voJc_Nn~a&>yeXWRz%6wg29s3A!b5!VuCA+h6TuiS zD(oa5x!!}35JfiBM4tPMa=Ix$0!4e(E9SXKOs_)3(`)%0-xVMumrX`@WQBk;+C`S!6?Ieao`>L*ZE6jZ}L`h_Gm0a&z|^YnFAX zvzD=PCd#*zkz@cx(}b8G>Ww=#qP(mNxY!ug)w2-J?y4*I;}!X@$fFbp^|r99`3CU%#%4^fH){6VQVT(ZX8vT>v1*i zke}Ok=q@4R;2>v_fFkn3R=kC2-h1b_X_^=i569tNY7h4mp4Uu7`%+p|WusMd@3=%r zkW-UM2n$MwMY8dxQF4mF+@6$HlK^e_*FAo9G1e$cL6FVvYdyLrp@fWWm@bv$MOT5Z-gvyyz?6FOtKSL*jJ(%1auR{Uw}q7nLLgs$(`P=>T*Gs*CbsVy~E~Y zGCg`I>K|Jc4RVAX2vX|{x-;xB-{OFdjSe}8rZ4#Dr&c1NT z&r7wXA)XA)9c^tlhX6(x@96Sl4(e6k{>Hkt>;5X_6+~C&qYtQf!zs4^Efx3lmWs+* zxu}u~xTBVsB9p2+It%srqmoSi=j2++VW(VWCGKMls5;HDG@M%j?k&rn*H|nkRI4;z+yn#h7jhw~7V!Tm5HTJZjP*yJdhcjyZG^hC%c7L^1P75xT4+u0Kvx z#~Qd-NylH={^y_JTjcme7o-~niGVL(tvKVwF>Yo6`LiykwA~-FT7Xw%K3s|2SiPx# z!iV%;)$EPOH5Gr@f4LF}-Wyp-wcF#s?43@}1|-=UQvP718?wXwat51ZbaX?2OL)ob zN&SH*!zH;Bu?I8#lMt@3mQX1Eoyog-u{9FL^&)Q%e6Sk%@~<@53Pf_*`KP|2xLMzc zn}@+zcZU9o zzL7&V-poZ-`2#bsh{UZLC5aCt%;uOjx8$YBC`#D z$Cw*bX8}0b?d=RW64Q}Wo}id#PCIw9qAf>BrB4Rn${SV0Yovv@(dn^U=jgH|rEhA> zO(EQ(I!w8%--#i9-yEs8*v5bCM-v2)J`w?R;7#?{ecN$Y<)uurZ znMcRx*dka_z9?w!WX6~rKs2Kxx#u&uF1c$qKo_eUJQ@~m6AO+-OXTK&n6=Eg=6QcO z#~&w(JjRiuHpqG(bVTA=%u=V#0^|5cGR~Gdp?mK}w217K^rrmI&EQvRuUm`}aUDHj zw~doUS?16mM;QA4^9#BdokpS?zgFy;(@_fIqWUO|Geqz$Duch93i4`PbM+vwN#24% zawNhQ;kxE;2tEo;RZQEA;ng6kUiKq3`?LXNl-Gxs!@I(W;qqs6)~{OO+bS%uE-Zu& z@lVFNJ#i1?FAhrV&(tr#o7*-wSEHvhN3;neM>!HBYD_L?>ZniwnG?6mS4pCU8N%cr zM4R@&_D+`!N7D(!x=z6afG8US4V0cE{+0o;KkRYDZ<@#ee%rg@FAj7?$|g!0YMoMQ zGR2>mD11gGx;GaSFX@9Eu2wY&M=!KNhpYyuf9Y|S-{Pl}aG4yxRj3L)*E5PpwUs-t zTYTGZOGc!EcdTw$ENac6h!q}qT%;=d?Tu_RX2hoKLZs;aN^r(cfZ&f4(|P$@Q}xD) z)02~@In6?c0*8V-n-U}kBd+tCuOL29u@C-rf` zoxkH=;mZyeev`IDt^e}X?bq9x^=Fg5XQw~QO;+^9wNKqPwzC0P&`#U9$%`}17qDks z;4bzNjKU(YcATL7@VKrzc-)6;G}6)Y>HOL*5*Or)<$M#p9A&ZCv>IJ#F&{NJ-c5%L z$%h3-&c8ydhm_$o2>G1lm=HevC|l{M)tQ)U(=}Nx)Zu8>eB0MYDQ!@Yc%!}%>M|QJ zqcicH)>Po7=jhTi22>#M^FAA9aSC_Fjd1CKmf>1lWyl4$qP|N|gwyu54fli5OQYn+ z8HMGj^+m-Gy%aTTQ3nz9Xu=b<=4hVf*^Cpm)2%xnlsV#v3_S@aB!4EiGI-|sNA^>S zud+~xpiQJn%vKD9Am{Zk`#E6|`Ho>l;C(Y?3|OZB?8JlgDj>lfLfmNzEK6vz*6nZ) zP*a{6)bIOU9~y!VSn)Nh92A=a5$~}XTZ#%WbNG1{^AL$Emk(Om7O&jIt{V)Rl)4VR)iW^$U6<_naSM|3UVd z6#E>ejh>9s+Rynm<`=<^H~HBMP+M#rSx}LFGl6ThXk_0HFB3H2$n%@IO>Z$#kD2Gw zNXT&N_I7U~o-kTw{ea3{CWC)l&>Z|mU>6C1JIJIG`-vblY7 zml@pMVSC0uM~`o=!NudN2e6zYAeyRPs-8>$0l&y5*|n&jL4$qseFY-1kP?*~_poOF zwc%19efs1oL`K=$fPoG5uNR?6fcDH6&`rV#Jw{THs+Z4DSBoc~v>%EgJ#b!le=FK%yyNp)1t*lGu1ey^SaK!6B@fgg6s zEe59kI=6J@{N~IV#%#@6*IvSvH6c_yMFirFmO&qWCrQn+;vVOPY=Bt$#{%MPNj(RH zlc>^K&W%f7`{8M%ng`iLa5_DSkZdMCv;cldwJ_6j>A#re%z1#o*I7I6c8vzgrK6i9 zcI{JtGpoZ8=Rlt((;%T%t-C^vGE_~$NArq7a|67Z>AI2}&Slad_bixGJm*_sN$&C7$Q z6nW~H8q}Mv3g#W8t>YlFir8wU(7!&L!TP<@Yc=ta`z(~zcJ$B(c!>V3i|48-fpgU> z&xMV5S5y+BKYybgLN2=QK)NOaxUFzaw{zujZ5e9lrx-acK@rg+SQC||luaiAHuDBC zkSj}0?!;i+d}Tz}LJqnz;1nUTYK^q}o)qf4GhS8J7V|>&Ts%=lDB0n&T(V=b^ZSw! ziUB^Nt{1?kqf zomHP1Od+p!#}wulK7U%J^M%x-;4Cs#z&sOaes7d~--#emy1Py=KrL9}uenWl)$d zjX@h0R3hdF=~krfTFpejFYr7qetQR2k`M|Mm2l+o=sIQmy*rH$_zQ4KT6C;;Kny## z$5c1rDhD4%^~-6d&04CXBW~iTx+0{m{!n(QW-fqoQ>cL0PA)d`ulE3B%JX*-^`?oC zfu?ZcSk!?(AB!{!@Sx>n<1CT0DieDHbo~aNHUxZL@bn5=&(}j2{VVXz;h#hH-eiDv z&xBmLgnlPixQh(h{%rw+XLe0JU2NP)?uh?5Y=++M(8htr1jBC@X+IU2|0W=DjR5%B zx9!R|d5uP^aM1oNPMCI6lD4e^1?%Vb&RUcOxf%7gc9P-xHDEguQmq}-rhS93lt%@L ztk`mUcHNCV?6eau##E>sP_;}7*z1YeOtmmVOtKPwigYjmQQGE$sN)xxenE_iRZi&z zJAdS!iw{5$u7RtkO$d^V;R}u6zqY}@UTAP2SNPv>*rq4ztq}e$Ki;r2IB#Kl)j^kON8Mk^?x>GK0{5NJmxoR$0ZUnCHx-JDQ zifli0j(r0buGmX+x_6AEB_HT4MRp<5GD6V+cqu{nQv!}~WUUz4(vJnFFBl(U{U}Bq zB|Y=HT@GGIyG2i&Y-Tr|l5d(Fqx$Fe2FR8rq}{`Q&7_I&paRTiO_kmlDanbg-YL^v zczY6~@2epgXhRsFAhaHoy}$}$~;#7+zn+*Jt(yzHYv-Mqf;)qO2So(L&Td< z%uZZ4cZT`5@BZSQl|`%Ti@Z=q15}Pb;E-*z`YsJol%@zlAyxeIZqUq!bM?;9Yk;G1J+^1o z#?)Vhla(%k zFLs!Aj95{t-J|^E(JiHpOK()@hytUXByphhll|Yw6s?8|0%_IWe#+TT-}qsk9llU? z{N_y!mWD{+I8(b&TLoImPX$kO$0=-$<`SCP>!{q1WM?hpSQ;5^o|cc!DMs;KB}qK1k!PzoK+KZ z@SyH*Jo7k#>QdG%n|iFp!nOTUYB7~4e~%|(X_$&F*o)2=7?<%_M5nluZJJqn zT094QXdpmf6aS2gg<$f47sGS52ZDyxxpy*5b_>7utJ{0N`KkHtRmay+Vt1xf^$BGp z6C0o9K$A#5(U|<`<&zr&45&PVz=%+R(4_lWc(HRI{QrCv_BthxGYT7?QLuh zgt4L6pK@zzGUIWvs1=c^^{25DC{cS2Mus{nB&fTdU&zdJ<(&&%^fYGS-{Cn_wHJ(`FLI@0+uiOS+4H(igdh|rloKI*7B zA$dB(1Qo^z4TRAuzN$;OdL(NdoAWk`k`i-o>Pscg8VY0w(~Ev9%ebSPSW?pbdNOm0 z3R(Evye7}`^48vMRNYD!vg5rg2QKT6i~mS<+cJm>es6Vez=TuU-H%0_BFC&*v?K9* zfxi=rT4;?iFc!4}(!-m*n3%H}uiJ`a@l=Ymk8+F!!xH81#!_Tdqus3pgPUN?%RPK% z7SrvOcFbn0b!6pjEDpG9!vg(@%Nz?5ACo*HAm(uU>&?Ba(%tIt`TE7Z+`KJ8eB}W$ zrsLv6;}7FF8p0Xrrut$Digp*Sjc@k>6;nvfO#6@Aa_xnDVzj&`C?v<#GUxp!5xNEj zO2GWF`L5Zu9hE&PwAYO3y#*ti-5+xYjyi{%8@1hDt_=ql)NTfcj?UEG>VV9@dEm=* zM{J_9kpxqUwAJV3MNpmS0$u^{Bo+H#IWW>}=pB8huHA38mN)4>hvYCMJ|RQ-E-2u|oHgOhYNLgE-V3_JcC;HZtMv%>l6>aAM~~qaEQ~tfb0P{Y7=B+oBQb zro6#;bAP~vrD1^ib92CAX+hI;Nse`~V@B_oyv$k%-O+S*@iqSiNzW|8;#L9Y(~x)j zEyp%8k)fq_5m(|BJ}WGuS*$BoKM%>Z=)Z4&oe5x-`wAOHX+M-KBC$>Jxa}IA>2356 zbnY3vOugq575;V0!e&SU#WM|zv7XaGSp@YvwT8i?8+|r~PSG`cU#KriE-ECNI9nL# z5w{w}d%jIw+ANvB(9)?x0yxEOc0WmxyFX#O3xEYzH%raVHIS8k;05SEMyq;{kQRE5~6b`axi1SKY z*MM$DC))YJck&OeCnQ{S1%2(zVcJI1L*A01Z{EDnn7iyZemWjA66G6ynFy_r%akzM61A10|hIfDZ|5>;G-7+EXQODeFXxDPUKvizh_nX`I`=3! z^e$!SeXEp77Z(yT=Hn?AA|`B_59g&dFmbf8yCI98cRD#*C)E)#q=aUAm4=r=7TVz% zRJ+-(Tw{HA=JT-1llTO8zlsSRu&uAN8Jx=-CCOsZ`bRP_ z?5e%MRVrRoXP-&?>niq$wl;+}wZe_-=Hspu)QZA0gEFrMPa}%@V^z!nc+!{8)5v*r zx?|ua9*niBY;fEY)A%<}i)-W7EWKC>qMyVz<*Q-K2)F00VHFd`OHBaW9*`@y79`@6 zt``|twzFk>3Y=oGJA6aAutKL<^2X=1Om}imJd8Mv!XByoVuAlD#<09sqvH_x>UpJ6 zy+6EOkdmg4C4g#d%{4$BbXFWnQTC^tQNkcBqZ!9@P&)@qNI&uFtVhZuRvmRgLgiQI zl8*1GlHVp6Tt2 z@&}5^iCFNemn~AvCXOpHb@d=sC{Dcq#9O+$<*ppznYY`ra(dH|k}|m#t9mw$-y}GF z_kG?v8Fc%U2o)(g1QZ))4}?$eWVh6^K{xBB{-{Ajj@2h(Ju zr*_e-aJ|%sVEZ|Y45fO71>N1?4K}?RYvw}4I)h+b9@ke7VBz| zaq`FygQ#UhhkE(W718~5vRXSam+EHPTno8FQ)BDz%sx>u6++GxJ73WKuy3tsLp(#s zug&_i=s8;DY=C1asxq53Gt*K*n~msa6+-9;@;*4LqQU!qU034riw-HlXRnSvN{94P z3ATfP!zJ?KYxVZSwxGiX;lsYOCzum8)~h7rZ@ByT9O>NqY2l|abZMvj zA;E<1@F;QI9m%c7!kkmo-r_GCJ%z~b@*Z}$ZY&2diF{}1C3+~bsENkgB$Af7$3d!o zhJuE;N4n~I>%1ms8A+Z<6$FEfWjddnGpTTgjKvF$e4EZALC;>!_q9Vk)j)rZSg)3o zNO0)I!Ord<;=(|B2bG`{Yj@wRVq38b?<+6yIG5zq4zcBUA)thnX^5}=*ka(KQ#4jHie>jLR9O0BUg;+xV}{^_7Nr*I_$|0)pvq^l z#3lEOv5X3F`X44z_qgH5kOC+7%Uubz<YucC@@>X9l8CI&is0GQC-qZ$kw8_=Ntx8v1) zHf)FFbyAg<@amC-X?5=L?^R2J`>N6fo^MFnp^b#hetO(WAS+Qk4X!q<=;GlF~BF)u9NKPmsp&fY@+ zGInal*1>-l5`izdwQ#Zjd*(NV`elA(OmIL**~;vO1qavZcVCQG342F0)@NrQkoW{zhzP0J%rI@wh3%DYeT1f@$uY$ z=EK0t>!8=e8NX0h{<%+dyl!9>I7ec3Dm#zG5itP%o^y4xZ}NU0@`xCIgHi>0I>=xfT!rWwM-#W#`w>bG*DGMRW6CTTgst=6La83KG{D~_a z>gRSt8zKVZMHLz*mI8p_Wo3}g1^2|8JL+0m&>~N1Z~JN{5OIdI7?{Sd1r6jr_>&Vl z1W$PVeI6}o8qVD>&Qi$<^8KqaQ2tS^@9fY`wz&UV|L_`b0=aKfulsNaU2OXyo+GIo zkzgCQj2VCRX?-W?`#UM~&AtWY>wpscZx90ac&jG-@2Jqk$wYLf@x<~)V=VGCb9b5goy-X(faABEs zD{N3%tNbO5?y8)~v-%5Gh@6YK zjt;sD*BF-As>(56^h=m{u&-*rSevjDD$d>)ws_)Mw2`WrGzI^riJX=MPwji2`2(%p zr5M8*e-lTqblC5J@rsEVJWg?z4c{go&wJ;7v9Fok%L=Z@B!FU!cwOS{F-xF=`n>Jd z&0BoID9A~mU~CR!l1KZ_>NU+wzlM^EcE{gw-U?sO&WRSfBEN4&8POlv^5fw0*RMg& z;CI^VYIxZXwW-@OQ(E4X(mV@!T57*Lgo{v1T-ZM^h&s1*ZvD(9hj#NVXcc-oya2RR zE@6(uy+bG+cd`8}cj|0dBQAY%{R_Qn9rY~UQ!p3nD&iZTk{=W; hX9G1H<_|09e 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 literal 0 HcmV?d00001 From a02e44313017d144e2ed569af0864b8e740ec334 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Mon, 2 May 2022 14:15:28 -0400 Subject: [PATCH 05/10] Adjust opening readme description --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7b19b6138..6acfde246 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # The Mempool Open Source Projectâ„¢ [![mempool](https://img.shields.io/endpoint?url=https://dashboard.cypress.io/badge/simple/ry4br7/master&style=flat-square)](https://dashboard.cypress.io/projects/ry4br7/runs) -Mempool is the fully featured visualizer, explorer, and API service running on [mempool.space](https://mempool.space/), an open source project developed and operated for the benefit of the Bitcoin community, with a focus on the emerging transaction fee market to help our transition into a multi-layer ecosystem. +Mempool is the fully-featured mempool visualizer, explorer, and API service running at [mempool.space](https://mempool.space/). + +It is an open-source project developed and operated for the benefit of the Bitcoin community, with a focus on the emerging transaction fee market that is evolving Bitcoin into a multi-layer ecosystem. ![mempool](https://mempool.space/resources/screenshots/v2.3.0-dashboard.png) From f92036f8da102664b004819cecf993360fd5ede3 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Mon, 2 May 2022 14:35:03 -0400 Subject: [PATCH 06/10] Edit installation methods list + 1-click section Remove HA item. --- README.md | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6acfde246..1b061b41a 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,24 @@ It is an open-source project developed and operated for the benefit of the Bitco ## Installation Methods -Mempool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi distro, all the way to an advanced high availability cluster of powerful servers for a production instance. We support the following installation methods, ranked in order from simple to advanced: +Mempool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi full-node distro all the way to a robust production instance on a powerful FreeBSD server. -1) One-click installation on: [Umbrel](https://github.com/getumbrel/umbrel), [RaspiBlitz](https://github.com/rootzoll/raspiblitz), [RoninDojo](https://code.samourai.io/ronindojo/RoninDojo), or [MyNode](https://github.com/mynodebtc/mynode). -2) [Docker installation on Linux using docker-compose](https://github.com/mempool/mempool/tree/master/docker) -3) [Manual installation on Linux or FreeBSD](https://github.com/mempool/mempool#manual-installation) +We support the following installation methods, ranked in order from simple to advanced: + +1) [One-click installation on full-node distros](#one-click-installation) +2) [Docker installation on Linux using docker-compose](#docker-installation) +3) [Manual installation on Linux or FreeBSD](#manual-installation) 4) [Production installation on a powerful FreeBSD server](https://github.com/mempool/mempool/tree/master/production) -5) [High Availability cluster using powerful FreeBSD servers](https://github.com/mempool/mempool/tree/master/production#high-availability) + + +### One-click installation on full-node distros + +Mempool can be conveniently installed on the following full-node distros: +- [Umbrel](https://github.com/getumbrel/umbrel) +- [RaspiBlitz](https://github.com/rootzoll/raspiblitz) +- [RoninDojo](https://code.samourai.io/ronindojo/RoninDojo) +- [myNode](https://github.com/mynodebtc/mynode) +- [Start9](https://github.com/Start9Labs/embassy-os) # Docker Installation From 9753af1fedc61f1320de2ef6abdd30a229ec14fb Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Tue, 3 May 2022 00:01:20 -0400 Subject: [PATCH 07/10] Move docker docs to ./docker/readme + edit --- README.md | 319 +++++--------------------------------------- docker/README.md | 334 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 364 insertions(+), 289 deletions(-) create mode 100644 docker/README.md diff --git a/README.md b/README.md index 1b061b41a..70b147b36 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,14 @@ Mempool can be self-hosted on a wide variety of your own hardware, ranging from We support the following installation methods, ranked in order from simple to advanced: 1) [One-click installation on full-node distros](#one-click-installation) -2) [Docker installation on Linux using docker-compose](#docker-installation) +2) [Docker installation on Linux using docker-compose](./docker/README.md) 3) [Manual installation on Linux or FreeBSD](#manual-installation) -4) [Production installation on a powerful FreeBSD server](https://github.com/mempool/mempool/tree/master/production) +4) [Production installation on a powerful FreeBSD server](./production/README.md) + +This doc offers install notes on the one-click method and manual install method. Follow the links above for install notes on Docker and production installations. -### One-click installation on full-node distros +### One-Click Installation Mempool can be conveniently installed on the following full-node distros: - [Umbrel](https://github.com/getumbrel/umbrel) @@ -27,278 +29,12 @@ Mempool can be conveniently installed on the following full-node distros: - [myNode](https://github.com/mynodebtc/mynode) - [Start9](https://github.com/Start9Labs/embassy-os) -# Docker Installation + +### Manual Installation -The `docker` directory contains the Dockerfiles used to build and release the official images and a `docker-compose.yml` file that is intended for end users to run a Mempool instance with minimal effort. +The following instructions are for a manual installation on Linux or FreeBSD. You may need to change file and directory paths to match your OS. -## bitcoind only configuration - -To run an instance with the default settings, use the following command: - -```bash -$ docker-compose up -``` - -The default configuration will allow you to run Mempool using `bitcoind` as the backend, so address lookups will be disabled. It assumes you have added RPC credentials for the `mempool` user with a `mempool` password in your `bitcoin.conf` file: - -``` -rpcuser=mempool -rpcpassword=mempool -``` - -If you want to use your current credentials, update them in the `docker-compose.yml` file: - -``` - api: - environment: - MEMPOOL_BACKEND: "none" - RPC_HOST: "172.27.0.1" - RPC_PORT: "8332" - RPC_USER: "mempool" - RPC_PASS: "mempool" -``` - -Note: the IP in the example above refers to Docker's default gateway IP address so the container can hit the `bitcoind` instance running on the host machine. If your setup is different, update it accordingly. - -You can check if the instance is running by visiting http://localhost - the graphs will be populated as new transactions are detected. - -## bitcoind+electrum configuration - -In order to run with a `electrum` compatible server as the backend, in addition to the settings required for running with `bitcoind` above, you will need to make the following changes to the `docker-compose.yml` file: - -- Under the `api` service, change the value of the `MEMPOOL_BACKEND` key from `none` to `electrum`: - -``` - api: - environment: - MEMPOOL_BACKEND: "none" -``` - -- Under the `api` service, set the `ELECTRUM_HOST` and `ELECTRUM_PORT` keys to your Docker host IP address and set `ELECTRUM_TLS_ENABLED` to `false`: - -``` - api: - environment: - ELECTRUM_HOST: "172.27.0.1" - ELECTRUM_PORT: "50002" - ELECTRUM_TLS_ENABLED: "false" -``` - -You can update any of the backend settings in the `mempool-config.json` file using the following environment variables to override them under the same `api` `environment` section. - -JSON: -``` - "MEMPOOL": { - "NETWORK": "mainnet", - "BACKEND": "electrum", - "HTTP_PORT": 8999, - "SPAWN_CLUSTER_PROCS": 0, - "API_URL_PREFIX": "/api/v1/", - "POLL_RATE_MS": 2000, - "CACHE_DIR": "./cache", - "CLEAR_PROTECTION_MINUTES": 20, - "RECOMMENDED_FEE_PERCENTILE": 50, - "BLOCK_WEIGHT_UNITS": 4000000, - "INITIAL_BLOCKS_AMOUNT": 8, - "MEMPOOL_BLOCKS_AMOUNT": 8, - "PRICE_FEED_UPDATE_INTERVAL": 600, - "USE_SECOND_NODE_FOR_MINFEE": false, - "EXTERNAL_ASSETS": ["https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json"], - "STDOUT_LOG_MIN_PRIORITY": "info" - }, -``` - -docker-compose overrides: -``` - MEMPOOL_NETWORK: "" - MEMPOOL_BACKEND: "" - MEMPOOL_HTTP_PORT: "" - MEMPOOL_SPAWN_CLUSTER_PROCS: "" - MEMPOOL_API_URL_PREFIX: "" - MEMPOOL_POLL_RATE_MS: "" - MEMPOOL_CACHE_DIR: "" - MEMPOOL_CLEAR_PROTECTION_MINUTES: "" - MEMPOOL_RECOMMENDED_FEE_PERCENTILE: "" - MEMPOOL_BLOCK_WEIGHT_UNITS: "" - MEMPOOL_INITIAL_BLOCKS_AMOUNT: "" - MEMPOOL_MEMPOOL_BLOCKS_AMOUNT: "" - MEMPOOL_PRICE_FEED_UPDATE_INTERVAL: "" - MEMPOOL_USE_SECOND_NODE_FOR_MINFEE: "" - MEMPOOL_EXTERNAL_ASSETS: "" - MEMPOOL_STDOUT_LOG_MIN_PRIORITY: "" -``` - -JSON: -``` -"CORE_RPC": { - "HOST": "127.0.0.1", - "PORT": 8332, - "USERNAME": "mempool", - "PASSWORD": "mempool" - }, -``` -docker-compose overrides: -``` - CORE_RPC_HOST: "" - CORE_RPC_PORT: "" - CORE_RPC_USERNAME: "" - CORE_RPC_PASSWORD: "" -``` - -JSON: -``` - "ELECTRUM": { - "HOST": "127.0.0.1", - "PORT": 50002, - "TLS_ENABLED": true - }, -``` - -docker-compose overrides: -``` - ELECTRUM_HOST: "" - ELECTRUM_PORT: "" - ELECTRUM_TLS: "" -``` - -JSON: -``` - "ESPLORA": { - "REST_API_URL": "http://127.0.0.1:3000" - }, -``` -docker-compose overrides: -``` - ESPLORA_REST_API_URL: "" -``` - -JSON: -``` - "SECOND_CORE_RPC": { - "HOST": "127.0.0.1", - "PORT": 8332, - "USERNAME": "mempool", - "PASSWORD": "mempool" - }, -``` - -docker-compose overrides: -``` - SECOND_CORE_RPC_HOST: "" - SECOND_CORE_RPC_PORT: "" - SECOND_CORE_RPC_USERNAME: "" - SECOND_CORE_RPC_PASSWORD: "" -``` - -JSON: -``` - "DATABASE": { - "ENABLED": true, - "HOST": "127.0.0.1", - "PORT": 3306, - "DATABASE": "mempool", - "USERNAME": "mempool", - "PASSWORD": "mempool" - }, -``` - -docker-compose overrides: -``` - DATABASE_ENABLED: "" - DATABASE_HOST: "" - DATABASE_PORT: "" - DATABASE_DATABASE: "" - DATABASE_USERAME: "" - DATABASE_PASSWORD: "" -``` - -JSON: -``` - "SYSLOG": { - "ENABLED": true, - "HOST": "127.0.0.1", - "PORT": 514, - "MIN_PRIORITY": "info", - "FACILITY": "local7" - }, -``` - -docker-compose overrides: -``` - SYSLOG_ENABLED: "" - SYSLOG_HOST: "" - SYSLOG_PORT: "" - SYSLOG_MIN_PRIORITY: "" - SYSLOG_FACILITY: "" -``` - -JSON: -``` - "STATISTICS": { - "ENABLED": true, - "TX_PER_SECOND_SAMPLE_PERIOD": 150 - }, -``` - -docker-compose overrides: -``` - STATISTICS_ENABLED: "" - STATISTICS_TX_PER_SECOND_SAMPLE_PERIOD: "" -``` - -JSON: -``` - "BISQ": { - "ENABLED": false, - "DATA_PATH": "/bisq/statsnode-data/btc_mainnet/db" - } -``` - -docker-compose overrides: -``` - BISQ_ENABLED: "" - BISQ_DATA_PATH: "" -``` - -JSON: -``` - "SOCKS5PROXY": { - "ENABLED": false, - "HOST": "127.0.0.1", - "PORT": "9050", - "USERNAME": "", - "PASSWORD": "" - } -``` - -docker-compose overrides: -``` - SOCKS5PROXY_ENABLED: "" - SOCKS5PROXY_HOST: "" - SOCKS5PROXY_PORT: "" - SOCKS5PROXY_USERNAME: "" - SOCKS5PROXY_PASSWORD: "" -``` - -JSON: -``` - "PRICE_DATA_SERVER": { - "TOR_URL": "http://wizpriceje6q5tdrxkyiazsgu7irquiqjy2dptezqhrtu7l2qelqktid.onion/getAllMarketPrices", - "CLEARNET_URL": "https://price.bisq.wiz.biz/getAllMarketPrices" - } -``` - -docker-compose overrides: -``` - PRICE_DATA_SERVER_TOR_URL: "" - PRICE_DATA_SERVER_CLEARNET_URL: "" -``` - -# Manual Installation - -The following instructions are for a manual installation on Linux or FreeBSD. The file and directory paths may need to be changed to match your OS. - -## Dependencies +Dependencies: * [Bitcoin](https://github.com/bitcoin/bitcoin) * [Electrum](https://github.com/romanz/electrs) @@ -306,9 +42,10 @@ The following instructions are for a manual installation on Linux or FreeBSD. Th * [MariaDB](https://github.com/mariadb/server) * [Nginx](https://github.com/nginx/nginx) -## Mempool +#### Get Latest Mempool Release Clone the mempool repo, and checkout the latest release tag: + ```bash git clone https://github.com/mempool/mempool cd mempool @@ -316,20 +53,22 @@ Clone the mempool repo, and checkout the latest release tag: git checkout $latestrelease ``` -## Bitcoin Core (bitcoind) +#### Configure Bitcoin Core Enable RPC and txindex in `bitcoin.conf`: + ```bash rpcuser=mempool rpcpassword=mempool txindex=1 ``` -## MySQL +#### Get & Configure MySQL + +Install MariaDB from your OS package manager: -Install MariaDB from OS package manager: ```bash - # Linux + # Debian, Ubuntu, etc. apt-get install mariadb-server mariadb-client # macOS @@ -338,6 +77,7 @@ Install MariaDB from OS package manager: ``` Create database and grant privileges: + ```bash MariaDB [(none)]> drop database mempool; Query OK, 0 rows affected (0.00 sec) @@ -349,7 +89,8 @@ Create database and grant privileges: Query OK, 0 rows affected (0.00 sec) ``` -## Mempool Backend +#### Build Mempool Backend + Install mempool dependencies from npm and build the backend: ```bash @@ -365,7 +106,8 @@ In the `backend` folder, make a copy of the sample config and modify it to fit y cp mempool-config.sample.json mempool-config.json ``` -Edit `mempool-config.json` to add your Bitcoin Core node RPC credentials: +Edit `mempool-config.json` with your Bitcoin Core node RPC credentials: + ```bash { "MEMPOOL": { @@ -401,7 +143,7 @@ Start the backend: npm run start ``` -When it's running you should see output like this: +When it's running, you should see output like this: ```bash Mempool updated in 0.189 seconds @@ -424,9 +166,9 @@ When it's running you should see output like this: Updating mempool ``` -## Mempool Frontend +#### Build Mempool Frontend -Install mempool dependencies from npm and build the frontend static HTML/CSS/JS: +Install the Mempool dependencies with npm and build the frontend: ```bash # frontend @@ -435,15 +177,15 @@ Install mempool dependencies from npm and build the frontend static HTML/CSS/JS: npm run build ``` -Install the output into nginx webroot folder: +Install the output into the nginx webroot folder: ```bash sudo rsync -av --delete dist/ /var/www/ ``` -## nginx + certbot +#### `nginx` + `certbot` -Install the supplied nginx.conf and nginx-mempool.conf in /etc/nginx +Install the supplied `nginx.conf` and `nginx-mempool.conf` in `/etc/nginx`: ```bash # install nginx and certbot @@ -457,7 +199,6 @@ Install the supplied nginx.conf and nginx-mempool.conf in /etc/nginx ``` -If everything went okay you should see the beautiful mempool :grin: +If everything went well, you should see the beautiful mempool :grin: -If you get stuck on "loading blocks", this means the websocket can't connect. -Check your nginx proxy setup, firewalls, etc. and open an issue if you need help. +If you get stuck on "loading blocks", this means the websocket can't connect. Check your nginx proxy setup, firewalls, etc. and open an issue if you need help. diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..da7bf20e3 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,334 @@ +# Docker Installation + +This directory contains the Dockerfiles used to build and release the official images and a `docker-compose.yml` for end users to run a Mempool instance with minimal effort. + +You can choose to configure Mempool to run with a basic backend powered by just `bitcoind`, or with `bitcoind` along with an Electrum-compatible server for full functionality. + +## `bitcoind`-only Configuration + +_Note: address lookups require an Electrum server and will not work with this configuration._ + +Make sure `bitcoind` is running and synced. + +The default Docker configuration assumes you have added RPC credentials for a `mempool` user with a `mempool` password in your `bitcoin.conf` file, like so: + +``` +rpcuser=mempool +rpcpassword=mempool +``` + +If you want to use different credentials, specify them in the `docker-compose.yml` file: + +``` + api: + environment: + MEMPOOL_BACKEND: "none" + CORE_RPC_HOST: "172.27.0.1" + CORE_RPC_PORT: "8332" + CORE_RPC_USERNAME: "customuser" + CORE_RPC_PASSWORD: "custompassword" +``` + +The IP address in the example above refers to Docker's default gateway IP address so that the container can hit the `bitcoind` instance running on the host machine. If your setup is different, update it accordingly. + +Now, run: + +```bash +$ docker-compose up +``` + +Your Mempool instance should be running at http://localhost. The graphs will be populated as new transactions are detected. + +## `bitcoind` + Electrum Server Configuration + +First, configure `bitcoind` as specified above, and make sure your Electrum server is running and synced. + +Then, make sure the following variables are set in `docker-compose.yml`, as shown below, so Mempool can connect to your Electrum server: + +``` + api: + environment: + MEMPOOL_BACKEND: "electrum" + ELECTRUM_HOST: "172.27.0.1" + ELECTRUM_PORT: "50002" + ELECTRUM_TLS_ENABLED: "false" +``` + +Of course, if your Docker host IP address is different, update accordingly. + +With `bitcoind` and Electrum Server set up, run Mempool with: + +```bash +$ docker-compose up +``` + +## Further Configuration + +Optionally, you can override any other backend settings from `mempool-config.json`. + +Below we list all settings from `mempool-config.json` and the corresponding overrides you can make in the `api` > `environment` section of `docker-compose.yml`. + +
+ +`mempool-config.json`: +``` + "MEMPOOL": { + "NETWORK": "mainnet", + "BACKEND": "electrum", + "HTTP_PORT": 8999, + "SPAWN_CLUSTER_PROCS": 0, + "API_URL_PREFIX": "/api/v1/", + "POLL_RATE_MS": 2000, + "CACHE_DIR": "./cache", + "CLEAR_PROTECTION_MINUTES": 20, + "RECOMMENDED_FEE_PERCENTILE": 50, + "BLOCK_WEIGHT_UNITS": 4000000, + "INITIAL_BLOCKS_AMOUNT": 8, + "MEMPOOL_BLOCKS_AMOUNT": 8, + "PRICE_FEED_UPDATE_INTERVAL": 600, + "USE_SECOND_NODE_FOR_MINFEE": false, + "EXTERNAL_ASSETS": ["https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json"], + "STDOUT_LOG_MIN_PRIORITY": "info" + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + MEMPOOL_NETWORK: "" + MEMPOOL_BACKEND: "" + MEMPOOL_HTTP_PORT: "" + MEMPOOL_SPAWN_CLUSTER_PROCS: "" + MEMPOOL_API_URL_PREFIX: "" + MEMPOOL_POLL_RATE_MS: "" + MEMPOOL_CACHE_DIR: "" + MEMPOOL_CLEAR_PROTECTION_MINUTES: "" + MEMPOOL_RECOMMENDED_FEE_PERCENTILE: "" + MEMPOOL_BLOCK_WEIGHT_UNITS: "" + MEMPOOL_INITIAL_BLOCKS_AMOUNT: "" + MEMPOOL_MEMPOOL_BLOCKS_AMOUNT: "" + MEMPOOL_PRICE_FEED_UPDATE_INTERVAL: "" + MEMPOOL_USE_SECOND_NODE_FOR_MINFEE: "" + MEMPOOL_EXTERNAL_ASSETS: "" + MEMPOOL_STDOUT_LOG_MIN_PRIORITY: "" + ... +``` + +
+ +`mempool-config.json`: +``` +"CORE_RPC": { + "HOST": "127.0.0.1", + "PORT": 8332, + "USERNAME": "mempool", + "PASSWORD": "mempool" + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + CORE_RPC_HOST: "" + CORE_RPC_PORT: "" + CORE_RPC_USERNAME: "" + CORE_RPC_PASSWORD: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "ELECTRUM": { + "HOST": "127.0.0.1", + "PORT": 50002, + "TLS_ENABLED": true + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + ELECTRUM_HOST: "" + ELECTRUM_PORT: "" + ELECTRUM_TLS: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "ESPLORA": { + "REST_API_URL": "http://127.0.0.1:3000" + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + ESPLORA_REST_API_URL: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "SECOND_CORE_RPC": { + "HOST": "127.0.0.1", + "PORT": 8332, + "USERNAME": "mempool", + "PASSWORD": "mempool" + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + SECOND_CORE_RPC_HOST: "" + SECOND_CORE_RPC_PORT: "" + SECOND_CORE_RPC_USERNAME: "" + SECOND_CORE_RPC_PASSWORD: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "DATABASE": { + "ENABLED": true, + "HOST": "127.0.0.1", + "PORT": 3306, + "DATABASE": "mempool", + "USERNAME": "mempool", + "PASSWORD": "mempool" + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + DATABASE_ENABLED: "" + DATABASE_HOST: "" + DATABASE_PORT: "" + DATABASE_DATABASE: "" + DATABASE_USERAME: "" + DATABASE_PASSWORD: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "SYSLOG": { + "ENABLED": true, + "HOST": "127.0.0.1", + "PORT": 514, + "MIN_PRIORITY": "info", + "FACILITY": "local7" + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + SYSLOG_ENABLED: "" + SYSLOG_HOST: "" + SYSLOG_PORT: "" + SYSLOG_MIN_PRIORITY: "" + SYSLOG_FACILITY: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "STATISTICS": { + "ENABLED": true, + "TX_PER_SECOND_SAMPLE_PERIOD": 150 + }, +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + STATISTICS_ENABLED: "" + STATISTICS_TX_PER_SECOND_SAMPLE_PERIOD: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "BISQ": { + "ENABLED": false, + "DATA_PATH": "/bisq/statsnode-data/btc_mainnet/db" + } +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + BISQ_ENABLED: "" + BISQ_DATA_PATH: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "SOCKS5PROXY": { + "ENABLED": false, + "HOST": "127.0.0.1", + "PORT": "9050", + "USERNAME": "", + "PASSWORD": "" + } +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + SOCKS5PROXY_ENABLED: "" + SOCKS5PROXY_HOST: "" + SOCKS5PROXY_PORT: "" + SOCKS5PROXY_USERNAME: "" + SOCKS5PROXY_PASSWORD: "" + ... +``` + +
+ +`mempool-config.json`: +``` + "PRICE_DATA_SERVER": { + "TOR_URL": "http://wizpriceje6q5tdrxkyiazsgu7irquiqjy2dptezqhrtu7l2qelqktid.onion/getAllMarketPrices", + "CLEARNET_URL": "https://price.bisq.wiz.biz/getAllMarketPrices" + } +``` + +Corresponding `docker-compose.yml` overrides: +``` + api: + environment: + PRICE_DATA_SERVER_TOR_URL: "" + PRICE_DATA_SERVER_CLEARNET_URL: "" + ... +``` From 38b2beb9f74a49e3bebb457dcf1ef309aba9f02b Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Tue, 3 May 2022 00:52:16 -0400 Subject: [PATCH 08/10] Edit manual install section --- README.md | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 70b147b36..cdac7ad6c 100644 --- a/README.md +++ b/README.md @@ -34,17 +34,11 @@ Mempool can be conveniently installed on the following full-node distros: The following instructions are for a manual installation on Linux or FreeBSD. You may need to change file and directory paths to match your OS. -Dependencies: +You will need [Bitcoin](https://github.com/bitcoin/bitcoin), [Electrum](https://github.com/romanz/electrs), [Node.js](https://github.com/nodejs/node), [MariaDB](https://github.com/mariadb/server), and [Nginx](https://github.com/nginx/nginx). Below, we walk through how to configure each of these. -* [Bitcoin](https://github.com/bitcoin/bitcoin) -* [Electrum](https://github.com/romanz/electrs) -* [NodeJS](https://github.com/nodejs/node) -* [MariaDB](https://github.com/mariadb/server) -* [Nginx](https://github.com/nginx/nginx) +#### 1. Get Latest Mempool Release -#### Get Latest Mempool Release - -Clone the mempool repo, and checkout the latest release tag: +Clone the Mempool repo, and checkout the latest release tag: ```bash git clone https://github.com/mempool/mempool @@ -53,7 +47,7 @@ Clone the mempool repo, and checkout the latest release tag: git checkout $latestrelease ``` -#### Configure Bitcoin Core +#### 2. Configure Bitcoin Core Enable RPC and txindex in `bitcoin.conf`: @@ -63,7 +57,7 @@ Enable RPC and txindex in `bitcoin.conf`: txindex=1 ``` -#### Get & Configure MySQL +#### 3. Get & Configure MySQL Install MariaDB from your OS package manager: @@ -76,7 +70,7 @@ Install MariaDB from your OS package manager: mysql.server start ``` -Create database and grant privileges: +Create a database and grant privileges: ```bash MariaDB [(none)]> drop database mempool; @@ -89,7 +83,7 @@ Create database and grant privileges: Query OK, 0 rows affected (0.00 sec) ``` -#### Build Mempool Backend +#### 4. Build Mempool Backend Install mempool dependencies from npm and build the backend: @@ -100,7 +94,7 @@ Install mempool dependencies from npm and build the backend: npm run build ``` -In the `backend` folder, make a copy of the sample config and modify it to fit your settings. +In the `backend` folder, make a copy of the sample config: ```bash cp mempool-config.sample.json mempool-config.json @@ -166,7 +160,7 @@ When it's running, you should see output like this: Updating mempool ``` -#### Build Mempool Frontend +#### 5. Build Mempool Frontend Install the Mempool dependencies with npm and build the frontend: @@ -183,7 +177,7 @@ Install the output into the nginx webroot folder: sudo rsync -av --delete dist/ /var/www/ ``` -#### `nginx` + `certbot` +#### 6. `nginx` + `certbot` Install the supplied `nginx.conf` and `nginx-mempool.conf` in `/etc/nginx`: From 0aca907a67e4b1d56a7ba0c31b420128a9c484a4 Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Tue, 3 May 2022 13:04:02 -0400 Subject: [PATCH 09/10] Adjust main readme --- README.md | 129 ++++++++++++++++++++++++++---------------------------- 1 file changed, 63 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index cdac7ad6c..3418fe2a4 100644 --- a/README.md +++ b/README.md @@ -6,21 +6,21 @@ It is an open-source project developed and operated for the benefit of the Bitco ![mempool](https://mempool.space/resources/screenshots/v2.3.0-dashboard.png) -## Installation Methods +# Installation Methods Mempool can be self-hosted on a wide variety of your own hardware, ranging from a simple one-click installation on a Raspberry Pi full-node distro all the way to a robust production instance on a powerful FreeBSD server. We support the following installation methods, ranked in order from simple to advanced: 1) [One-click installation on full-node distros](#one-click-installation) -2) [Docker installation on Linux using docker-compose](./docker/README.md) +2) [Docker installation on Linux using docker-compose](./docker) 3) [Manual installation on Linux or FreeBSD](#manual-installation) -4) [Production installation on a powerful FreeBSD server](./production/README.md) +4) [Production installation on a powerful FreeBSD server](./production) This doc offers install notes on the one-click method and manual install method. Follow the links above for install notes on Docker and production installations. -### One-Click Installation +## One-Click Installation Mempool can be conveniently installed on the following full-node distros: - [Umbrel](https://github.com/getumbrel/umbrel) @@ -30,74 +30,73 @@ Mempool can be conveniently installed on the following full-node distros: - [Start9](https://github.com/Start9Labs/embassy-os) -### Manual Installation +## Manual Installation The following instructions are for a manual installation on Linux or FreeBSD. You may need to change file and directory paths to match your OS. You will need [Bitcoin](https://github.com/bitcoin/bitcoin), [Electrum](https://github.com/romanz/electrs), [Node.js](https://github.com/nodejs/node), [MariaDB](https://github.com/mariadb/server), and [Nginx](https://github.com/nginx/nginx). Below, we walk through how to configure each of these. -#### 1. Get Latest Mempool Release +### 1. Get Latest Mempool Release Clone the Mempool repo, and checkout the latest release tag: ```bash - git clone https://github.com/mempool/mempool - cd mempool - latestrelease=$(curl -s https://api.github.com/repos/mempool/mempool/releases/latest|grep tag_name|head -1|cut -d '"' -f4) - git checkout $latestrelease +$ git clone https://github.com/mempool/mempool +$ cd mempool +$ latestrelease=$(curl -s https://api.github.com/repos/mempool/mempool/releases/latest|grep tag_name|head -1|cut -d '"' -f4) +$ git checkout $latestrelease ``` -#### 2. Configure Bitcoin Core +### 2. Configure Bitcoin Core Enable RPC and txindex in `bitcoin.conf`: ```bash - rpcuser=mempool - rpcpassword=mempool - txindex=1 +rpcuser=mempool +rpcpassword=mempool +txindex=1 ``` -#### 3. Get & Configure MySQL +### 3. Get & Configure MySQL Install MariaDB from your OS package manager: ```bash - # Debian, Ubuntu, etc. - apt-get install mariadb-server mariadb-client +# Debian, Ubuntu, etc. +$ apt-get install mariadb-server mariadb-client - # macOS - brew install mariadb - mysql.server start +# macOS +$ brew install mariadb +$ mysql.server start ``` Create a database and grant privileges: ```bash - MariaDB [(none)]> drop database mempool; - Query OK, 0 rows affected (0.00 sec) +MariaDB [(none)]> drop database mempool; +Query OK, 0 rows affected (0.00 sec) - MariaDB [(none)]> create database mempool; - Query OK, 1 row affected (0.00 sec) +MariaDB [(none)]> create database mempool; +Query OK, 1 row affected (0.00 sec) - MariaDB [(none)]> grant all privileges on mempool.* to 'mempool'@'%' identified by 'mempool'; - Query OK, 0 rows affected (0.00 sec) +MariaDB [(none)]> grant all privileges on mempool.* to 'mempool'@'%' identified by 'mempool'; +Query OK, 0 rows affected (0.00 sec) ``` -#### 4. Build Mempool Backend +### 4. Build Mempool Backend -Install mempool dependencies from npm and build the backend: +Install Mempool dependencies with npm and build the backend: ```bash - # backend - cd backend - npm install --prod - npm run build +$ cd backend +$ npm install --prod +$ npm run build ``` In the `backend` folder, make a copy of the sample config: ```bash - cp mempool-config.sample.json mempool-config.json +$ cp mempool-config.sample.json mempool-config.json ``` Edit `mempool-config.json` with your Bitcoin Core node RPC credentials: @@ -134,63 +133,61 @@ Edit `mempool-config.json` with your Bitcoin Core node RPC credentials: Start the backend: ```bash - npm run start +$ npm run start ``` When it's running, you should see output like this: ```bash - Mempool updated in 0.189 seconds - Updating mempool - Mempool updated in 0.096 seconds - Updating mempool - Mempool updated in 0.099 seconds - Updating mempool - Calculated fee for transaction 1 / 10 - Calculated fee for transaction 2 / 10 - Calculated fee for transaction 3 / 10 - Calculated fee for transaction 4 / 10 - Calculated fee for transaction 5 / 10 - Calculated fee for transaction 6 / 10 - Calculated fee for transaction 7 / 10 - Calculated fee for transaction 8 / 10 - Calculated fee for transaction 9 / 10 - Calculated fee for transaction 10 / 10 - Mempool updated in 0.243 seconds - Updating mempool +Mempool updated in 0.189 seconds +Updating mempool +Mempool updated in 0.096 seconds +Updating mempool +Mempool updated in 0.099 seconds +Updating mempool +Calculated fee for transaction 1 / 10 +Calculated fee for transaction 2 / 10 +Calculated fee for transaction 3 / 10 +Calculated fee for transaction 4 / 10 +Calculated fee for transaction 5 / 10 +Calculated fee for transaction 6 / 10 +Calculated fee for transaction 7 / 10 +Calculated fee for transaction 8 / 10 +Calculated fee for transaction 9 / 10 +Calculated fee for transaction 10 / 10 +Mempool updated in 0.243 seconds +Updating mempool ``` -#### 5. Build Mempool Frontend +### 5. Build Mempool Frontend Install the Mempool dependencies with npm and build the frontend: ```bash - # frontend - cd frontend - npm install --prod - npm run build +$ cd frontend +$ npm install --prod +$ npm run build ``` Install the output into the nginx webroot folder: ```bash - sudo rsync -av --delete dist/ /var/www/ +$ sudo rsync -av --delete dist/ /var/www/ ``` -#### 6. `nginx` + `certbot` +### 6. `nginx` + `certbot` Install the supplied `nginx.conf` and `nginx-mempool.conf` in `/etc/nginx`: ```bash - # install nginx and certbot - apt-get install -y nginx python3-certbot-nginx +# install nginx and certbot +$ apt-get install -y nginx python3-certbot-nginx - # install the mempool configuration for nginx - cp nginx.conf nginx-mempool.conf /etc/nginx/ - - # replace example.com with your domain name - certbot --nginx -d example.com +# install the mempool configuration for nginx +$ cp nginx.conf nginx-mempool.conf /etc/nginx/ +# replace example.com with your domain name +$ certbot --nginx -d example.com ``` If everything went well, you should see the beautiful mempool :grin: From e27892e597d56107c7aae8eebb4456e2fe5e88fd Mon Sep 17 00:00:00 2001 From: hunicus <93150691+hunicus@users.noreply.github.com> Date: Wed, 4 May 2022 11:59:23 -0400 Subject: [PATCH 10/10] Clarify dependencies for manual install h/t to antonilol. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3418fe2a4..53b394225 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ Mempool can be conveniently installed on the following full-node distros: The following instructions are for a manual installation on Linux or FreeBSD. You may need to change file and directory paths to match your OS. -You will need [Bitcoin](https://github.com/bitcoin/bitcoin), [Electrum](https://github.com/romanz/electrs), [Node.js](https://github.com/nodejs/node), [MariaDB](https://github.com/mariadb/server), and [Nginx](https://github.com/nginx/nginx). Below, we walk through how to configure each of these. +You will need [Bitcoin Core](https://github.com/bitcoin/bitcoin), [Electrum Server](https://github.com/romanz/electrs), [Node.js](https://github.com/nodejs/node), [MariaDB](https://github.com/mariadb/server), and [Nginx](https://github.com/nginx/nginx). Below, we walk through how to configure each of these. ### 1. Get Latest Mempool Release