diff --git a/.yarnrc.yml b/.yarnrc.yml
index d988cd92dd..c1d84df0bf 100644
--- a/.yarnrc.yml
+++ b/.yarnrc.yml
@@ -8,8 +8,9 @@ nodeLinker: pnp
packageExtensions:
"@design-factory/design-factory@*":
- peerDependencies:
- "@angular/router": ~17.0.4
+ dependencies:
+ "@agnos-ui/style-bootstrap": "^0.1.1"
+ "@ng-select/ng-select": "~12.0.7"
"@nx/angular@^18.0.0":
dependencies:
"@angular-devkit/build-angular": ~17.0.3
diff --git a/apps/chrome-devtools/package.json b/apps/chrome-devtools/package.json
index f443d83372..051a431187 100644
--- a/apps/chrome-devtools/package.json
+++ b/apps/chrome-devtools/package.json
@@ -84,9 +84,8 @@
"@angular/platform-browser": "~17.0.4",
"@angular/platform-browser-dynamic": "~17.0.4",
"@angular/router": "~17.0.4",
- "@design-factory/design-factory": "^15.2.2",
+ "@design-factory/design-factory": "^17.0.0",
"@ng-bootstrap/ng-bootstrap": "^16.0.0",
- "@ng-select/ng-select": "~12.0.0",
"@ngrx/entity": "~17.1.0",
"@ngrx/store": "~17.1.0",
"@o3r/application": "workspace:^",
@@ -96,10 +95,10 @@
"@o3r/localization": "workspace:^",
"@o3r/rules-engine": "workspace:^",
"@popperjs/core": "^2.11.5",
- "ag-grid-angular": "~31.0.0",
- "ag-grid-community": "~31.0.0",
- "bootstrap": "5.2.0",
- "bootstrap-icons": "^1.10.5",
+ "ag-grid-angular": "~31.0.3",
+ "ag-grid-community": "~31.0.3",
+ "bootstrap": "5.3.2",
+ "bootstrap-icons": "^1.11.3",
"rxjs": "^7.8.1",
"tslib": "^2.5.3",
"zone.js": "~0.14.2"
diff --git a/apps/chrome-devtools/src/styles/index.scss b/apps/chrome-devtools/src/styles/index.scss
index 5d33fea013..492332463b 100644
--- a/apps/chrome-devtools/src/styles/index.scss
+++ b/apps/chrome-devtools/src/styles/index.scss
@@ -1,6 +1,7 @@
@use '@design-factory/design-factory' with (
$prefix: bs-,
$df-spinner-circumference: 2rem,
- $font-path: '@design-factory/design-factory/assets/fonts'
+ $font-path: '@design-factory/design-factory/assets/fonts',
+ $utilities-bg: ()
);
@use "bootstrap-icons/font/bootstrap-icons";
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/component-replacement.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/component-replacement.png
index c16fb208e9..7505f83aa2 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/component-replacement.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/component-replacement.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/configuration.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/configuration.png
index 7f72928264..6afe36e3dd 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/configuration.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/configuration.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/design-token.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/design-token.png
index c911e2415b..a3bd180c40 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/design-token.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/design-token.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/dynamic-content.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/dynamic-content.png
index cde55181d6..a678bff1c2 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/dynamic-content.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/dynamic-content.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/home.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/home.png
index f73e5eb5b2..7b4013ec11 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/home.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/home.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/localization.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/localization.png
index 1f8be06763..62144e2129 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/localization.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/localization.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/rules-engine.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/rules-engine.png
index 642e230ef9..d472af5ee3 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/rules-engine.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/rules-engine.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/run-app-locally.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/run-app-locally.png
index 7cc89ac5af..ba0ede729e 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/run-app-locally.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/run-app-locally.png differ
diff --git a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/sdk-generator.png b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/sdk-generator.png
index a4d7a41c7c..b9f0116273 100644
Binary files a/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/sdk-generator.png and b/apps/showcase/e2e-playwright/sanity/screenshots/visual-sanity.e2e.ts/chromium/sdk-generator.png differ
diff --git a/apps/showcase/package.json b/apps/showcase/package.json
index 84790faa6d..b6c0b418ec 100644
--- a/apps/showcase/package.json
+++ b/apps/showcase/package.json
@@ -38,10 +38,9 @@
"@angular/platform-browser": "~17.0.4",
"@angular/platform-browser-dynamic": "~17.0.4",
"@angular/router": "~17.0.4",
- "@design-factory/design-factory": "^15.2.2",
+ "@design-factory/design-factory": "^17.0.0",
"@formatjs/intl-numberformat": "~8.10.0",
"@ng-bootstrap/ng-bootstrap": "^16.0.0",
- "@ng-select/ng-select": "~12.0.0",
"@ngrx/effects": "~17.1.0",
"@ngrx/entity": "~17.1.0",
"@ngrx/store": "~17.1.0",
@@ -59,10 +58,10 @@
"@o3r/rules-engine": "workspace:^",
"@o3r/testing": "workspace:^",
"@popperjs/core": "^2.11.5",
- "ag-grid-angular": "~31.0.0",
- "ag-grid-community": "~31.0.0",
- "bootstrap": "5.2.0",
- "bootstrap-icons": "^1.10.5",
+ "ag-grid-angular": "~31.0.3",
+ "ag-grid-community": "~31.0.3",
+ "bootstrap": "5.3.2",
+ "bootstrap-icons": "^1.11.3",
"highlight.js": "^11.8.0",
"intl-messageformat": "~10.5.1",
"ngx-highlightjs": "^10.0.0",
@@ -93,7 +92,7 @@
"@playwright/test": "~1.41.0",
"@schematics/angular": "~17.0.3",
"@stylistic/eslint-plugin-ts": "^1.5.4",
- "@types/bootstrap": "^5.2.6",
+ "@types/bootstrap": "^5.2.10",
"@types/jest": "~29.5.2",
"@types/node": "^20.0.0",
"@typescript-eslint/eslint-plugin": "^6.19.0",
diff --git a/apps/showcase/project.json b/apps/showcase/project.json
index c3a99881ac..3d1f31229f 100644
--- a/apps/showcase/project.json
+++ b/apps/showcase/project.json
@@ -88,7 +88,7 @@
{
"type": "initial",
"maximumWarning": "500kb",
- "maximumError": "2mb"
+ "maximumError": "2.2mb"
},
{
"type": "anyComponentStyle",
diff --git a/apps/showcase/src/app/rules-engine/rules-engine.template.html b/apps/showcase/src/app/rules-engine/rules-engine.template.html
index 235aa07f00..79ab5288c7 100644
--- a/apps/showcase/src/app/rules-engine/rules-engine.template.html
+++ b/apps/showcase/src/app/rules-engine/rules-engine.template.html
@@ -31,13 +31,13 @@
Example
Source code
- -
+
-
Configuration rule
- -
+
-
Localization rule
- -
+
-
Dynamic content rule
-
diff --git a/apps/showcase/src/styles.scss b/apps/showcase/src/styles.scss
index 4c641d544b..da110950d9 100644
--- a/apps/showcase/src/styles.scss
+++ b/apps/showcase/src/styles.scss
@@ -2,7 +2,7 @@
$prefix: bs-,
$df-spinner-circumference: 2rem,
$font-path: '@design-factory/design-factory/assets/fonts',
- $df-scrollspy-color: var(--bs-scrollspy-color)
+ $utilities-bg: ()
);
@use "bootstrap-icons/font/bootstrap-icons";
@import "highlight.js/styles/github.css";
@@ -34,31 +34,14 @@ h1, h2 {
}
.hljs-built_in, .hljs-symbol {
- color: #bd5208;
+ color: #cb3544;
}
.hljs-name, .hljs-quote, .hljs-selector-tag, .hljs-selector-pseudo {
- color: #218338;
+ color: #1f7e36;
}
// Start overrides of design factory
.navbar {
box-shadow: none;
}
-@include design-factory.media-breakpoint-down(lg) {
- .nav-pills .nav-link {
- font-size: 1.25rem;
- --bs-nav-link-padding-y: 1rem;
- }
-}
// End overrides
-
-// Start temporary workarounds until we migrate back to bootstrap 5.3
-:root {
- --bs-primary-bg-subtle: #cfe2ff;
- --bs-tertiary-color: #2125297f;
- --bs-tertiary-bg: #f8f9fa;
-}
-.bg-body-tertiary {
- background: var(--bs-tertiary-bg);
-}
-// End temporary workarounds
diff --git a/package.json b/package.json
index b98dea11fe..08662740d9 100644
--- a/package.json
+++ b/package.json
@@ -168,9 +168,8 @@
"@commitlint/cli": "^18.0.0",
"@commitlint/config-conventional": "^18.0.0",
"@compodoc/compodoc": "^1.1.19",
- "@design-factory/design-factory": "^15.2.2",
+ "@design-factory/design-factory": "^17.0.0",
"@ng-bootstrap/ng-bootstrap": "^16.0.0",
- "@ng-select/ng-select": "~12.0.0",
"@ngrx/effects": "~17.1.0",
"@ngrx/entity": "~17.1.0",
"@ngrx/router-store": "~17.1.0",
@@ -201,11 +200,11 @@
"@typescript-eslint/parser": "^6.11.0",
"@typescript-eslint/types": "^6.11.0",
"@yarnpkg/sdks": "^3.0.0",
- "ag-grid-angular": "~31.0.0",
- "ag-grid-community": "~31.0.0",
+ "ag-grid-angular": "~31.0.3",
+ "ag-grid-community": "~31.0.3",
"babel-loader": "^9.0.0",
- "bootstrap": "5.2.0",
- "bootstrap-icons": "^1.10.5",
+ "bootstrap": "5.3.2",
+ "bootstrap-icons": "^1.11.3",
"browserslist": "^4.21.4",
"concurrently": "^8.0.0",
"cpy-cli": "^5.0.0",
diff --git a/yarn.lock b/yarn.lock
index 8eec98cc45..4ec1ef172d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -74,6 +74,13 @@ __metadata:
languageName: node
linkType: hard
+"@agnos-ui/style-bootstrap@npm:^0.1.1":
+ version: 0.1.1
+ resolution: "@agnos-ui/style-bootstrap@npm:0.1.1"
+ checksum: 10/57523a010dd421c87b8b5e2e417e3b08f65297a35ed458ca48cf60818e14316d0e7c6848098732f789afc123b9d32882c399d587af64c2c95b038f04b03ebb6c
+ languageName: node
+ linkType: hard
+
"@ama-sdk/core@workspace:^, @ama-sdk/core@workspace:packages/@ama-sdk/core":
version: 0.0.0-use.local
resolution: "@ama-sdk/core@workspace:packages/@ama-sdk/core"
@@ -3275,21 +3282,34 @@ __metadata:
languageName: node
linkType: hard
-"@design-factory/design-factory@npm:^15.2.2":
- version: 15.2.2
- resolution: "@design-factory/design-factory@npm:15.2.2"
+"@design-factory/design-factory@npm:^17.0.0":
+ version: 17.0.0
+ resolution: "@design-factory/design-factory@npm:17.0.0"
dependencies:
tslib: "npm:^2.0.0"
peerDependencies:
- "@angular/common": ^16.0.0
- "@angular/core": ^16.0.0
- "@angular/localize": ^16.0.0
- "@ng-bootstrap/ng-bootstrap": ~15.1.0
- "@ng-select/ng-select": ~11.0.0
- ag-grid-angular: ~29.3.5
- ag-grid-community: ~29.3.5
- bootstrap: 5.2.0
- checksum: 10/712354e6abdf3d46bcf8c8a82fe1d8d49f99d9094e8ef4b30ba059ea2f6924c093993f67ce26b1d8119c427e4cee4d7566e0a13ea21dd0283d9e647619b88412
+ "@agnos-ui/angular": ^0.0.1-alpha.10
+ "@angular/common": ^17.1.0
+ "@angular/core": ^17.1.0
+ "@angular/localize": ^17.1.0
+ "@angular/router": ^17.1.0
+ "@ng-bootstrap/ng-bootstrap": ~16.0.0
+ "@ng-select/ng-select": ~12.0.6
+ ag-grid-angular: ~31.0.2
+ ag-grid-community: ~31.0.2
+ bootstrap: 5.3.2
+ peerDependenciesMeta:
+ "@agnos-ui/angular":
+ optional: true
+ "@angular/localize":
+ optional: true
+ "@angular/router":
+ optional: true
+ "@ng-bootstrap/ng-bootstrap":
+ optional: true
+ "@ng-select/ng-select":
+ optional: true
+ checksum: 10/c9b81b5e2a784de6fc3cb49aafb7c4320f810c0092fd1fe9d4ef73fd3fe5423a09ec8d656bcac2beb179ed18362e39cf78933206f88a7c12e6b478c6050f49ed
languageName: node
linkType: hard
@@ -5504,16 +5524,16 @@ __metadata:
languageName: node
linkType: hard
-"@ng-select/ng-select@npm:~12.0.0":
- version: 12.0.6
- resolution: "@ng-select/ng-select@npm:12.0.6"
+"@ng-select/ng-select@npm:~12.0.7":
+ version: 12.0.7
+ resolution: "@ng-select/ng-select@npm:12.0.7"
dependencies:
tslib: "npm:^2.3.1"
peerDependencies:
"@angular/common": ^17.0.0-rc.0
"@angular/core": ^17.0.0-rc.0
"@angular/forms": ^17.0.0-rc.0
- checksum: 10/e228cae21239d32f4fade8de7eb2956996af2447eee685b42cad1d0ed94c55adb515267f8a8f4483e90b87a0255d39485811336100901e65ccf64f2de1bb7193
+ checksum: 10/018e60f9f24784392c874f66098e52e6530d6a9f648813107f0b2059fb089ffbc7f0eb1d44a19776df77435c65f4f1767fc3614336bd5172d2a8d09a59fd39bb
languageName: node
linkType: hard
@@ -6709,9 +6729,8 @@ __metadata:
"@angular/platform-browser": "npm:~17.0.4"
"@angular/platform-browser-dynamic": "npm:~17.0.4"
"@angular/router": "npm:~17.0.4"
- "@design-factory/design-factory": "npm:^15.2.2"
+ "@design-factory/design-factory": "npm:^17.0.0"
"@ng-bootstrap/ng-bootstrap": "npm:^16.0.0"
- "@ng-select/ng-select": "npm:~12.0.0"
"@ngrx/entity": "npm:~17.1.0"
"@ngrx/store": "npm:~17.1.0"
"@nx/eslint-plugin": "npm:~18.0.2"
@@ -6732,11 +6751,11 @@ __metadata:
"@typescript-eslint/eslint-plugin": "npm:^6.19.0"
"@typescript-eslint/parser": "npm:^6.11.0"
"@typescript-eslint/types": "npm:^6.11.0"
- ag-grid-angular: "npm:~31.0.0"
- ag-grid-community: "npm:~31.0.0"
+ ag-grid-angular: "npm:~31.0.3"
+ ag-grid-community: "npm:~31.0.3"
archiver: "npm:^6.0.1"
- bootstrap: "npm:5.2.0"
- bootstrap-icons: "npm:^1.10.5"
+ bootstrap: "npm:5.3.2"
+ bootstrap-icons: "npm:^1.11.3"
chokidar: "npm:^3.5.2"
chrome-webstore-upload: "npm:^3.0.0"
concurrently: "npm:^8.0.0"
@@ -7703,9 +7722,8 @@ __metadata:
"@commitlint/cli": "npm:^18.0.0"
"@commitlint/config-conventional": "npm:^18.0.0"
"@compodoc/compodoc": "npm:^1.1.19"
- "@design-factory/design-factory": "npm:^15.2.2"
+ "@design-factory/design-factory": "npm:^17.0.0"
"@ng-bootstrap/ng-bootstrap": "npm:^16.0.0"
- "@ng-select/ng-select": "npm:~12.0.0"
"@ngrx/effects": "npm:~17.1.0"
"@ngrx/entity": "npm:~17.1.0"
"@ngrx/router-store": "npm:~17.1.0"
@@ -7736,11 +7754,11 @@ __metadata:
"@typescript-eslint/parser": "npm:^6.11.0"
"@typescript-eslint/types": "npm:^6.11.0"
"@yarnpkg/sdks": "npm:^3.0.0"
- ag-grid-angular: "npm:~31.0.0"
- ag-grid-community: "npm:~31.0.0"
+ ag-grid-angular: "npm:~31.0.3"
+ ag-grid-community: "npm:~31.0.3"
babel-loader: "npm:^9.0.0"
- bootstrap: "npm:5.2.0"
- bootstrap-icons: "npm:^1.10.5"
+ bootstrap: "npm:5.3.2"
+ bootstrap-icons: "npm:^1.11.3"
browserslist: "npm:^4.21.4"
concurrently: "npm:^8.0.0"
cpy-cli: "npm:^5.0.0"
@@ -8446,10 +8464,9 @@ __metadata:
"@angular/platform-browser": "npm:~17.0.4"
"@angular/platform-browser-dynamic": "npm:~17.0.4"
"@angular/router": "npm:~17.0.4"
- "@design-factory/design-factory": "npm:^15.2.2"
+ "@design-factory/design-factory": "npm:^17.0.0"
"@formatjs/intl-numberformat": "npm:~8.10.0"
"@ng-bootstrap/ng-bootstrap": "npm:^16.0.0"
- "@ng-select/ng-select": "npm:~12.0.0"
"@ngrx/effects": "npm:~17.1.0"
"@ngrx/entity": "npm:~17.1.0"
"@ngrx/store": "npm:~17.1.0"
@@ -8475,16 +8492,16 @@ __metadata:
"@popperjs/core": "npm:^2.11.5"
"@schematics/angular": "npm:~17.0.3"
"@stylistic/eslint-plugin-ts": "npm:^1.5.4"
- "@types/bootstrap": "npm:^5.2.6"
+ "@types/bootstrap": "npm:^5.2.10"
"@types/jest": "npm:~29.5.2"
"@types/node": "npm:^20.0.0"
"@typescript-eslint/eslint-plugin": "npm:^6.19.0"
"@typescript-eslint/parser": "npm:^6.11.0"
"@typescript-eslint/types": "npm:^6.11.0"
- ag-grid-angular: "npm:~31.0.0"
- ag-grid-community: "npm:~31.0.0"
- bootstrap: "npm:5.2.0"
- bootstrap-icons: "npm:^1.10.5"
+ ag-grid-angular: "npm:~31.0.3"
+ ag-grid-community: "npm:~31.0.3"
+ bootstrap: "npm:5.3.2"
+ bootstrap-icons: "npm:^1.11.3"
concurrently: "npm:^8.0.0"
eslint: "npm:^8.42.0"
eslint-import-resolver-node: "npm:^0.3.4"
@@ -11390,7 +11407,7 @@ __metadata:
languageName: node
linkType: hard
-"@types/bootstrap@npm:^5.2.6":
+"@types/bootstrap@npm:^5.2.10":
version: 5.2.10
resolution: "@types/bootstrap@npm:5.2.10"
dependencies:
@@ -13026,7 +13043,7 @@ __metadata:
languageName: node
linkType: hard
-"ag-grid-angular@npm:~31.0.0":
+"ag-grid-angular@npm:~31.0.3":
version: 31.0.3
resolution: "ag-grid-angular@npm:31.0.3"
dependencies:
@@ -13039,7 +13056,7 @@ __metadata:
languageName: node
linkType: hard
-"ag-grid-community@npm:~31.0.0, ag-grid-community@npm:~31.0.3":
+"ag-grid-community@npm:~31.0.3":
version: 31.0.3
resolution: "ag-grid-community@npm:31.0.3"
checksum: 10/f1658691b7689873e5deca1d9172b78106dc57e83db4d50d235fa167d54b98881bb29880eb864f05c03a4fa5cfa727efa2c8b4e85df427d3cc17829acec579c6
@@ -14162,7 +14179,7 @@ __metadata:
languageName: node
linkType: hard
-"bootstrap-icons@npm:^1.10.5":
+"bootstrap-icons@npm:^1.11.3":
version: 1.11.3
resolution: "bootstrap-icons@npm:1.11.3"
checksum: 10/7da4e8e1fb456dddb5b460020fbfd6d223cf65160250b6196d79748889e805ddf5f3cedb33178c3e4bac732652f33ab5f68e899c4a9fa2ade1a5899689aa5172
@@ -14179,12 +14196,12 @@ __metadata:
languageName: node
linkType: hard
-"bootstrap@npm:5.2.0":
- version: 5.2.0
- resolution: "bootstrap@npm:5.2.0"
+"bootstrap@npm:5.3.2":
+ version: 5.3.2
+ resolution: "bootstrap@npm:5.3.2"
peerDependencies:
- "@popperjs/core": ^2.11.5
- checksum: 10/7d2a376f9ff17926d1abdfbec33b9b293ce757967aca3a92b28f9279619fc261785de80568be5af7db3da146ee44470562b04577f721cd7bf0adf7191949e367
+ "@popperjs/core": ^2.11.8
+ checksum: 10/5c3eb0634218d206bc2518154432bc80f7eec225db9c0dcb04b80353ba5cb121b8e6d12993ffe025d32ffe511051290461d8ca0adcae7971d82d329025bd16ab
languageName: node
linkType: hard