Sharing is ok
This commit is contained in:
		
							parent
							
								
									8bd882ce49
								
							
						
					
					
						commit
						3b9655f6fe
					
				| 
						 | 
				
			
			@ -4,8 +4,9 @@
 | 
			
		|||
<head>
 | 
			
		||||
  <meta charset="utf-8">
 | 
			
		||||
  <meta name="viewport" content="width=device-width,initial-scale=1">
 | 
			
		||||
  <title>N0mbers</title>
 | 
			
		||||
  <meta name="description" content="Reach the result in five operations or less">
 | 
			
		||||
  <meta name="keywords" content="motus, wordle, le compte est bon, jeu de chiffres, numbers game">
 | 
			
		||||
  <title>N0mbers</title>
 | 
			
		||||
  <link rel="icon" href="/icons/favicon.ico">
 | 
			
		||||
  <link rel="alternate icon" href="/favicon.ico" type="image/png" sizes="16x16">
 | 
			
		||||
  <link rel="apple-touch-icon" href="/icons/apple-touch-icon.png" sizes="180x180">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -24,9 +24,9 @@
 | 
			
		|||
    "@rushstack/eslint-patch": "^1.1.0",
 | 
			
		||||
    "@types/lodash-es": "^4.17.6",
 | 
			
		||||
    "@types/node": "^16.11.25",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^5.12.0",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^5.12.1",
 | 
			
		||||
    "@typescript-eslint/parser": "5.0.0",
 | 
			
		||||
    "@vitejs/plugin-vue": "^2.2.0",
 | 
			
		||||
    "@vitejs/plugin-vue": "^2.2.2",
 | 
			
		||||
    "@vue/eslint-config-prettier": "^7.0.0",
 | 
			
		||||
    "@vue/eslint-config-typescript": "^10.0.0",
 | 
			
		||||
    "@vue/test-utils": "^2.0.0-rc.18",
 | 
			
		||||
| 
						 | 
				
			
			@ -37,8 +37,8 @@
 | 
			
		|||
    "eslint-plugin-node": "11.1.0",
 | 
			
		||||
    "eslint-plugin-promise": "4.2.1",
 | 
			
		||||
    "eslint-plugin-simple-import-sort": "^7.0.0",
 | 
			
		||||
    "eslint-plugin-tailwindcss": "^3.4.4",
 | 
			
		||||
    "eslint-plugin-vue": "^8.4.1",
 | 
			
		||||
    "eslint-plugin-tailwindcss": "^3.5.0",
 | 
			
		||||
    "eslint-plugin-vue": "^8.5.0",
 | 
			
		||||
    "jsdom": "^19.0.0",
 | 
			
		||||
    "postcss": "^8.4.6",
 | 
			
		||||
    "prettier": "^2.5.1",
 | 
			
		||||
| 
						 | 
				
			
			@ -48,8 +48,8 @@
 | 
			
		|||
    "unplugin-icons": "^0.13.2",
 | 
			
		||||
    "vite": "^2.8.4",
 | 
			
		||||
    "vite-plugin-pwa": "^0.11.13",
 | 
			
		||||
    "vitest": "^0.1.27",
 | 
			
		||||
    "vue-tsc": "^0.29.8",
 | 
			
		||||
    "vitest": "^0.5.4",
 | 
			
		||||
    "vue-tsc": "^0.31.4",
 | 
			
		||||
    "workbox-window": "^6.4.2"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										416
									
								
								pnpm-lock.yaml
									
									
									
									
									
								
							
							
						
						
									
										416
									
								
								pnpm-lock.yaml
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -6,9 +6,9 @@ specifiers:
 | 
			
		|||
  '@rushstack/eslint-patch': ^1.1.0
 | 
			
		||||
  '@types/lodash-es': ^4.17.6
 | 
			
		||||
  '@types/node': ^16.11.25
 | 
			
		||||
  '@typescript-eslint/eslint-plugin': ^5.12.0
 | 
			
		||||
  '@typescript-eslint/eslint-plugin': ^5.12.1
 | 
			
		||||
  '@typescript-eslint/parser': 5.0.0
 | 
			
		||||
  '@vitejs/plugin-vue': ^2.2.0
 | 
			
		||||
  '@vitejs/plugin-vue': ^2.2.2
 | 
			
		||||
  '@vue/eslint-config-prettier': ^7.0.0
 | 
			
		||||
  '@vue/eslint-config-typescript': ^10.0.0
 | 
			
		||||
  '@vue/test-utils': ^2.0.0-rc.18
 | 
			
		||||
| 
						 | 
				
			
			@ -21,8 +21,8 @@ specifiers:
 | 
			
		|||
  eslint-plugin-node: 11.1.0
 | 
			
		||||
  eslint-plugin-promise: 4.2.1
 | 
			
		||||
  eslint-plugin-simple-import-sort: ^7.0.0
 | 
			
		||||
  eslint-plugin-tailwindcss: ^3.4.4
 | 
			
		||||
  eslint-plugin-vue: ^8.4.1
 | 
			
		||||
  eslint-plugin-tailwindcss: ^3.5.0
 | 
			
		||||
  eslint-plugin-vue: ^8.5.0
 | 
			
		||||
  jsdom: ^19.0.0
 | 
			
		||||
  lodash-es: ^4.17.21
 | 
			
		||||
  postcss: ^8.4.6
 | 
			
		||||
| 
						 | 
				
			
			@ -33,11 +33,11 @@ specifiers:
 | 
			
		|||
  unplugin-icons: ^0.13.2
 | 
			
		||||
  vite: ^2.8.4
 | 
			
		||||
  vite-plugin-pwa: ^0.11.13
 | 
			
		||||
  vitest: ^0.1.27
 | 
			
		||||
  vitest: ^0.5.4
 | 
			
		||||
  vue: ^3.2.31
 | 
			
		||||
  vue-i18n: ^9.1.9
 | 
			
		||||
  vue-router: ^4.0.12
 | 
			
		||||
  vue-tsc: ^0.29.8
 | 
			
		||||
  vue-tsc: ^0.31.4
 | 
			
		||||
  workbox-window: ^6.4.2
 | 
			
		||||
 | 
			
		||||
dependencies:
 | 
			
		||||
| 
						 | 
				
			
			@ -54,11 +54,11 @@ devDependencies:
 | 
			
		|||
  '@rushstack/eslint-patch': 1.1.0
 | 
			
		||||
  '@types/lodash-es': 4.17.6
 | 
			
		||||
  '@types/node': 16.11.25
 | 
			
		||||
  '@typescript-eslint/eslint-plugin': 5.12.0_ae020354c3da76ce329e71c9084ef5bf
 | 
			
		||||
  '@typescript-eslint/eslint-plugin': 5.12.1_ae020354c3da76ce329e71c9084ef5bf
 | 
			
		||||
  '@typescript-eslint/parser': 5.0.0_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
  '@vitejs/plugin-vue': 2.2.0_vite@2.8.4+vue@3.2.31
 | 
			
		||||
  '@vitejs/plugin-vue': 2.2.2_vite@2.8.4+vue@3.2.31
 | 
			
		||||
  '@vue/eslint-config-prettier': 7.0.0_eslint@7.32.0+prettier@2.5.1
 | 
			
		||||
  '@vue/eslint-config-typescript': 10.0.0_70088603fbc06388f15269df51c60e65
 | 
			
		||||
  '@vue/eslint-config-typescript': 10.0.0_afe049b8cbf0536b157a6c56c4dc0aa5
 | 
			
		||||
  '@vue/test-utils': 2.0.0-rc.18_vue@3.2.31
 | 
			
		||||
  autoprefixer: 10.0.2_postcss@8.4.6
 | 
			
		||||
  eslint: 7.32.0
 | 
			
		||||
| 
						 | 
				
			
			@ -67,8 +67,8 @@ devDependencies:
 | 
			
		|||
  eslint-plugin-node: 11.1.0_eslint@7.32.0
 | 
			
		||||
  eslint-plugin-promise: 4.2.1
 | 
			
		||||
  eslint-plugin-simple-import-sort: 7.0.0_eslint@7.32.0
 | 
			
		||||
  eslint-plugin-tailwindcss: 3.4.4_autoprefixer@10.0.2
 | 
			
		||||
  eslint-plugin-vue: 8.4.1_eslint@7.32.0
 | 
			
		||||
  eslint-plugin-tailwindcss: 3.5.0_autoprefixer@10.0.2
 | 
			
		||||
  eslint-plugin-vue: 8.5.0_eslint@7.32.0
 | 
			
		||||
  jsdom: 19.0.0
 | 
			
		||||
  postcss: 8.4.6
 | 
			
		||||
  prettier: 2.5.1
 | 
			
		||||
| 
						 | 
				
			
			@ -78,8 +78,8 @@ devDependencies:
 | 
			
		|||
  unplugin-icons: 0.13.2_vite@2.8.4
 | 
			
		||||
  vite: 2.8.4
 | 
			
		||||
  vite-plugin-pwa: 0.11.13_vite@2.8.4
 | 
			
		||||
  vitest: 0.1.27_jsdom@19.0.0
 | 
			
		||||
  vue-tsc: 0.29.8_typescript@4.5.5
 | 
			
		||||
  vitest: 0.5.4_jsdom@19.0.0
 | 
			
		||||
  vue-tsc: 0.31.4_typescript@4.5.5
 | 
			
		||||
  workbox-window: 6.4.2
 | 
			
		||||
 | 
			
		||||
packages:
 | 
			
		||||
| 
						 | 
				
			
			@ -194,7 +194,7 @@ packages:
 | 
			
		|||
      '@babel/compat-data': 7.17.0
 | 
			
		||||
      '@babel/core': 7.17.5
 | 
			
		||||
      '@babel/helper-validator-option': 7.16.7
 | 
			
		||||
      browserslist: 4.19.1
 | 
			
		||||
      browserslist: 4.19.3
 | 
			
		||||
      semver: 6.3.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1472,8 +1472,8 @@ packages:
 | 
			
		|||
      fastq: 1.13.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@rollup/plugin-babel/5.3.0_@babel+core@7.17.5+rollup@2.67.3:
 | 
			
		||||
    resolution: {integrity: sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==}
 | 
			
		||||
  /@rollup/plugin-babel/5.3.1_@babel+core@7.17.5+rollup@2.68.0:
 | 
			
		||||
    resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
 | 
			
		||||
    engines: {node: '>= 10.0.0'}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      '@babel/core': ^7.0.0
 | 
			
		||||
| 
						 | 
				
			
			@ -1485,36 +1485,36 @@ packages:
 | 
			
		|||
    dependencies:
 | 
			
		||||
      '@babel/core': 7.17.5
 | 
			
		||||
      '@babel/helper-module-imports': 7.16.7
 | 
			
		||||
      '@rollup/pluginutils': 3.1.0_rollup@2.67.3
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      '@rollup/pluginutils': 3.1.0_rollup@2.68.0
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@rollup/plugin-node-resolve/11.2.1_rollup@2.67.3:
 | 
			
		||||
  /@rollup/plugin-node-resolve/11.2.1_rollup@2.68.0:
 | 
			
		||||
    resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==}
 | 
			
		||||
    engines: {node: '>= 10.0.0'}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      rollup: ^1.20.0||^2.0.0
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@rollup/pluginutils': 3.1.0_rollup@2.67.3
 | 
			
		||||
      '@rollup/pluginutils': 3.1.0_rollup@2.68.0
 | 
			
		||||
      '@types/resolve': 1.17.1
 | 
			
		||||
      builtin-modules: 3.2.0
 | 
			
		||||
      deepmerge: 4.2.2
 | 
			
		||||
      is-module: 1.0.0
 | 
			
		||||
      resolve: 1.22.0
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@rollup/plugin-replace/2.4.2_rollup@2.67.3:
 | 
			
		||||
  /@rollup/plugin-replace/2.4.2_rollup@2.68.0:
 | 
			
		||||
    resolution: {integrity: sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      rollup: ^1.20.0 || ^2.0.0
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@rollup/pluginutils': 3.1.0_rollup@2.67.3
 | 
			
		||||
      '@rollup/pluginutils': 3.1.0_rollup@2.68.0
 | 
			
		||||
      magic-string: 0.25.7
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@rollup/pluginutils/3.1.0_rollup@2.67.3:
 | 
			
		||||
  /@rollup/pluginutils/3.1.0_rollup@2.68.0:
 | 
			
		||||
    resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
 | 
			
		||||
    engines: {node: '>= 8.0.0'}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
| 
						 | 
				
			
			@ -1523,7 +1523,7 @@ packages:
 | 
			
		|||
      '@types/estree': 0.0.39
 | 
			
		||||
      estree-walker: 1.0.1
 | 
			
		||||
      picomatch: 2.3.1
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@rollup/pluginutils/4.1.2:
 | 
			
		||||
| 
						 | 
				
			
			@ -1610,8 +1610,8 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@typescript-eslint/eslint-plugin/5.12.0_ae020354c3da76ce329e71c9084ef5bf:
 | 
			
		||||
    resolution: {integrity: sha512-fwCMkDimwHVeIOKeBHiZhRUfJXU8n6xW1FL9diDxAyGAFvKcH4csy0v7twivOQdQdA0KC8TDr7GGRd3L4Lv0rQ==}
 | 
			
		||||
  /@typescript-eslint/eslint-plugin/5.12.1_ae020354c3da76ce329e71c9084ef5bf:
 | 
			
		||||
    resolution: {integrity: sha512-M499lqa8rnNK7mUv74lSFFttuUsubIRdAbHcVaP93oFcKkEmHmLqy2n7jM9C8DVmFMYK61ExrZU6dLYhQZmUpw==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      '@typescript-eslint/parser': ^5.0.0
 | 
			
		||||
| 
						 | 
				
			
			@ -1622,9 +1622,9 @@ packages:
 | 
			
		|||
        optional: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@typescript-eslint/parser': 5.0.0_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      '@typescript-eslint/scope-manager': 5.12.0
 | 
			
		||||
      '@typescript-eslint/type-utils': 5.12.0_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      '@typescript-eslint/utils': 5.12.0_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      '@typescript-eslint/scope-manager': 5.12.1
 | 
			
		||||
      '@typescript-eslint/type-utils': 5.12.1_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      '@typescript-eslint/utils': 5.12.1_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      debug: 4.3.3
 | 
			
		||||
      eslint: 7.32.0
 | 
			
		||||
      functional-red-black-tree: 1.0.1
 | 
			
		||||
| 
						 | 
				
			
			@ -1703,16 +1703,16 @@ packages:
 | 
			
		|||
      '@typescript-eslint/visitor-keys': 5.0.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@typescript-eslint/scope-manager/5.12.0:
 | 
			
		||||
    resolution: {integrity: sha512-GAMobtIJI8FGf1sLlUWNUm2IOkIjvn7laFWyRx7CLrv6nLBI7su+B7lbStqVlK5NdLvHRFiJo2HhiDF7Ki01WQ==}
 | 
			
		||||
  /@typescript-eslint/scope-manager/5.12.1:
 | 
			
		||||
    resolution: {integrity: sha512-J0Wrh5xS6XNkd4TkOosxdpObzlYfXjAFIm9QxYLCPOcHVv1FyyFCPom66uIh8uBr0sZCrtS+n19tzufhwab8ZQ==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@typescript-eslint/types': 5.12.0
 | 
			
		||||
      '@typescript-eslint/visitor-keys': 5.12.0
 | 
			
		||||
      '@typescript-eslint/types': 5.12.1
 | 
			
		||||
      '@typescript-eslint/visitor-keys': 5.12.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@typescript-eslint/type-utils/5.12.0_eslint@7.32.0+typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-9j9rli3zEBV+ae7rlbBOotJcI6zfc6SHFMdKI9M3Nc0sy458LJ79Os+TPWeBBL96J9/e36rdJOfCuyRSgFAA0Q==}
 | 
			
		||||
  /@typescript-eslint/type-utils/5.12.1_eslint@7.32.0+typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-Gh8feEhsNLeCz6aYqynh61Vsdy+tiNNkQtc+bN3IvQvRqHkXGUhYkUi+ePKzP0Mb42se7FDb+y2SypTbpbR/Sg==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      eslint: '*'
 | 
			
		||||
| 
						 | 
				
			
			@ -1721,7 +1721,7 @@ packages:
 | 
			
		|||
      typescript:
 | 
			
		||||
        optional: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@typescript-eslint/utils': 5.12.0_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      '@typescript-eslint/utils': 5.12.1_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      debug: 4.3.3
 | 
			
		||||
      eslint: 7.32.0
 | 
			
		||||
      tsutils: 3.21.0_typescript@4.5.5
 | 
			
		||||
| 
						 | 
				
			
			@ -1740,8 +1740,8 @@ packages:
 | 
			
		|||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@typescript-eslint/types/5.12.0:
 | 
			
		||||
    resolution: {integrity: sha512-JowqbwPf93nvf8fZn5XrPGFBdIK8+yx5UEGs2QFAYFI8IWYfrzz+6zqlurGr2ctShMaJxqwsqmra3WXWjH1nRQ==}
 | 
			
		||||
  /@typescript-eslint/types/5.12.1:
 | 
			
		||||
    resolution: {integrity: sha512-hfcbq4qVOHV1YRdhkDldhV9NpmmAu2vp6wuFODL71Y0Ixak+FLeEU4rnPxgmZMnGreGEghlEucs9UZn5KOfHJA==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1788,8 +1788,8 @@ packages:
 | 
			
		|||
      - supports-color
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@typescript-eslint/typescript-estree/5.12.0_typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-Dd9gVeOqt38QHR0BEA8oRaT65WYqPYbIc5tRFQPkfLquVEFPD1HAtbZT98TLBkEcCkvwDYOAvuSvAD9DnQhMfQ==}
 | 
			
		||||
  /@typescript-eslint/typescript-estree/5.12.1_typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-ahOdkIY9Mgbza7L9sIi205Pe1inCkZWAHE1TV1bpxlU4RZNPtXaDZfiiFWcL9jdxvW1hDYZJXrFm+vlMkXRbBw==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      typescript: '*'
 | 
			
		||||
| 
						 | 
				
			
			@ -1797,8 +1797,8 @@ packages:
 | 
			
		|||
      typescript:
 | 
			
		||||
        optional: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@typescript-eslint/types': 5.12.0
 | 
			
		||||
      '@typescript-eslint/visitor-keys': 5.12.0
 | 
			
		||||
      '@typescript-eslint/types': 5.12.1
 | 
			
		||||
      '@typescript-eslint/visitor-keys': 5.12.1
 | 
			
		||||
      debug: 4.3.3
 | 
			
		||||
      globby: 11.1.0
 | 
			
		||||
      is-glob: 4.0.3
 | 
			
		||||
| 
						 | 
				
			
			@ -1809,16 +1809,16 @@ packages:
 | 
			
		|||
      - supports-color
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@typescript-eslint/utils/5.12.0_eslint@7.32.0+typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-k4J2WovnMPGI4PzKgDtQdNrCnmBHpMUFy21qjX2CoPdoBcSBIMvVBr9P2YDP8jOqZOeK3ThOL6VO/sy6jtnvzw==}
 | 
			
		||||
  /@typescript-eslint/utils/5.12.1_eslint@7.32.0+typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-Qq9FIuU0EVEsi8fS6pG+uurbhNTtoYr4fq8tKjBupsK5Bgbk2I32UGm0Sh+WOyjOPgo/5URbxxSNV6HYsxV4MQ==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@types/json-schema': 7.0.9
 | 
			
		||||
      '@typescript-eslint/scope-manager': 5.12.0
 | 
			
		||||
      '@typescript-eslint/types': 5.12.0
 | 
			
		||||
      '@typescript-eslint/typescript-estree': 5.12.0_typescript@4.5.5
 | 
			
		||||
      '@typescript-eslint/scope-manager': 5.12.1
 | 
			
		||||
      '@typescript-eslint/types': 5.12.1
 | 
			
		||||
      '@typescript-eslint/typescript-estree': 5.12.1_typescript@4.5.5
 | 
			
		||||
      eslint: 7.32.0
 | 
			
		||||
      eslint-scope: 5.1.1
 | 
			
		||||
      eslint-utils: 3.0.0_eslint@7.32.0
 | 
			
		||||
| 
						 | 
				
			
			@ -1842,16 +1842,16 @@ packages:
 | 
			
		|||
      eslint-visitor-keys: 3.3.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@typescript-eslint/visitor-keys/5.12.0:
 | 
			
		||||
    resolution: {integrity: sha512-cFwTlgnMV6TgezQynx2c/4/tx9Tufbuo9LPzmWqyRC3QC4qTGkAG1C6pBr0/4I10PAI/FlYunI3vJjIcu+ZHMg==}
 | 
			
		||||
  /@typescript-eslint/visitor-keys/5.12.1:
 | 
			
		||||
    resolution: {integrity: sha512-l1KSLfupuwrXx6wc0AuOmC7Ko5g14ZOQ86wJJqRbdLbXLK02pK/DPiDDqCc7BqqiiA04/eAA6ayL0bgOrAkH7A==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@typescript-eslint/types': 5.12.0
 | 
			
		||||
      '@typescript-eslint/types': 5.12.1
 | 
			
		||||
      eslint-visitor-keys: 3.3.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@vitejs/plugin-vue/2.2.0_vite@2.8.4+vue@3.2.31:
 | 
			
		||||
    resolution: {integrity: sha512-wXigM1EwN2G7rZcwG6kLk9ivvIMhx2363tCEvMBiXcTu5nePM/12hUPVzPb83Uugt6U+zom1gTpJopi/Ow/jwg==}
 | 
			
		||||
  /@vitejs/plugin-vue/2.2.2_vite@2.8.4+vue@3.2.31:
 | 
			
		||||
    resolution: {integrity: sha512-3C0s45VOwIFEDU+2ownJOpb0zD5fnjXWaHVOLID2R1mYOlAx3doNBFnNbVjaZvpke/L7IdPJXjpyYpXZToDKig==}
 | 
			
		||||
    engines: {node: '>=12.0.0'}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      vite: ^2.5.10
 | 
			
		||||
| 
						 | 
				
			
			@ -1861,15 +1861,15 @@ packages:
 | 
			
		|||
      vue: 3.2.31
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@volar/code-gen/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-eohLLUqPChHRPDFT5gXn4V6pr/CeTri7Ou5GI26lUvBRRAbP8p+oYfQRcbMPGeKmVkYjfVj0chsxQGx6T8PQ4Q==}
 | 
			
		||||
  /@volar/code-gen/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-ngivMEbBNd19v+EHdLyCJoIGRaoD9J4P20ZgdCEGf2voztja59u3Tilpf9r9ENy/731nG7XncToYm4+c1t/LhA==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      '@volar/source-map': 0.29.8
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      '@volar/source-map': 0.31.4
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@volar/html2pug/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-bhSNXg8A2aD3w0B+CwmHjqCAaKtj5rORbE5C/q/UdGqptJbC6STCmi30KuRTdfPhR++Xb18Hauf3s/WCmtNAPA==}
 | 
			
		||||
  /@volar/html2pug/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-+whoP4C34kbCIRyoojZE6luqs7Ep/0YDBD9yEWu82G1ECLIFoujtkZXHbAHiQH8MIs/GwjUmozd85pUGAVQf1w==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      domelementtype: 2.2.0
 | 
			
		||||
      domhandler: 4.3.0
 | 
			
		||||
| 
						 | 
				
			
			@ -1877,33 +1877,35 @@ packages:
 | 
			
		|||
      pug: 3.0.2
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@volar/shared/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-Y1NN6irkIukD+T0wf4p/dHWYL90sacN2e2lYoDXxRlvoYxwANnHgw0J0Rcp+yw58ElWRScdG7/YntEIuZWeJsw==}
 | 
			
		||||
  /@volar/shared/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-mKSH4GKFde2t3GVEGibBu84jbCk7O1sccELxTgCGHX7ue4nJqgHup8lXhwyfUOfdJ7eyx9luyDsVuJ4BY3gfeg==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      upath: 2.0.1
 | 
			
		||||
      vscode-html-languageservice: 4.2.2
 | 
			
		||||
      vscode-jsonrpc: 8.0.0-next.6
 | 
			
		||||
      vscode-uri: 3.0.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@volar/source-map/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-7w+UoYtnc6UQu30CgMVvx0YN4dzDgP4TIsSmUaW62AGmxU9Lxwp3Kkn/4N8efi91z8ma5Z78v/HddyJPwAC3LA==}
 | 
			
		||||
  /@volar/source-map/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-lX/XKKc3ESNt6QArq1T54LSxXvu7ARDctQfkt6qUSNLVR/ccUXwzM+4qiOj39WBbmoDzET33riVYnMXMeGJMvg==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      vscode-languageserver-textdocument: 1.0.4
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@volar/transforms/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-o2hRa8CoDwYTO1Mu5KA47+1elUnYUjDaVhCvbyKlRfd8qpHea2llotArq7B6OORSL2M9DVs1IRJ5NGURBFeZ3Q==}
 | 
			
		||||
  /@volar/transforms/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-081QI2zBvdja4XN3eAtIWmBqDkAyDuuK3xP5mD04T9vMrVfy+WKrzB7n3/Zru7z4DiM70Qo5PoTapQ3Xnz9NzQ==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      vscode-languageserver: 8.0.0-next.8
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      vscode-languageserver-types: 3.17.0-next.7
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@volar/vue-code-gen/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-E1e7P2oktNC/DzgDBditfla4s8+HlUlluZ+BtcLvEdbkl3QEjujkB0x1wxguWzXmpWgLIDPtrS3Jzll5cCOkTg==}
 | 
			
		||||
  /@volar/vue-code-gen/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-1ypZfzQfH+lV8JcOOKfYMTAmD6OUeBQSDwu7YRHQkuvoSQzPiXXrjupi0DvHrcWR0hQfh4yRnme6I+ChutW69w==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/code-gen': 0.29.8
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      '@volar/source-map': 0.29.8
 | 
			
		||||
      '@volar/code-gen': 0.31.4
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      '@volar/source-map': 0.31.4
 | 
			
		||||
      '@vue/compiler-core': 3.2.31
 | 
			
		||||
      '@vue/compiler-dom': 3.2.31
 | 
			
		||||
      '@vue/shared': 3.2.31
 | 
			
		||||
| 
						 | 
				
			
			@ -1968,23 +1970,23 @@ packages:
 | 
			
		|||
      prettier: '>= 2.0.0'
 | 
			
		||||
    dependencies:
 | 
			
		||||
      eslint: 7.32.0
 | 
			
		||||
      eslint-config-prettier: 8.3.0_eslint@7.32.0
 | 
			
		||||
      eslint-plugin-prettier: 4.0.0_6e6a25a49a944db0fa38418c3ba4bc86
 | 
			
		||||
      eslint-config-prettier: 8.4.0_eslint@7.32.0
 | 
			
		||||
      eslint-plugin-prettier: 4.0.0_ed3ee7322ae0bc2e5488ce09e4400c60
 | 
			
		||||
      prettier: 2.5.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /@vue/eslint-config-typescript/10.0.0_70088603fbc06388f15269df51c60e65:
 | 
			
		||||
  /@vue/eslint-config-typescript/10.0.0_afe049b8cbf0536b157a6c56c4dc0aa5:
 | 
			
		||||
    resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
 | 
			
		||||
      eslint-plugin-vue: ^8.0.1
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@typescript-eslint/eslint-plugin': 5.12.0_ae020354c3da76ce329e71c9084ef5bf
 | 
			
		||||
      '@typescript-eslint/eslint-plugin': 5.12.1_ae020354c3da76ce329e71c9084ef5bf
 | 
			
		||||
      '@typescript-eslint/parser': 5.0.0_eslint@7.32.0+typescript@4.5.5
 | 
			
		||||
      eslint: 7.32.0
 | 
			
		||||
      eslint-plugin-vue: 8.4.1_eslint@7.32.0
 | 
			
		||||
      vue-eslint-parser: 8.2.0_eslint@7.32.0
 | 
			
		||||
      eslint-plugin-vue: 8.5.0_eslint@7.32.0
 | 
			
		||||
      vue-eslint-parser: 8.3.0_eslint@7.32.0
 | 
			
		||||
    transitivePeerDependencies:
 | 
			
		||||
      - supports-color
 | 
			
		||||
      - typescript
 | 
			
		||||
| 
						 | 
				
			
			@ -2239,7 +2241,7 @@ packages:
 | 
			
		|||
    peerDependencies:
 | 
			
		||||
      postcss: ^8.1.0
 | 
			
		||||
    dependencies:
 | 
			
		||||
      browserslist: 4.19.1
 | 
			
		||||
      browserslist: 4.19.3
 | 
			
		||||
      caniuse-lite: 1.0.30001312
 | 
			
		||||
      colorette: 1.4.0
 | 
			
		||||
      normalize-range: 0.1.2
 | 
			
		||||
| 
						 | 
				
			
			@ -2324,8 +2326,8 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /browserslist/4.19.1:
 | 
			
		||||
    resolution: {integrity: sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==}
 | 
			
		||||
  /browserslist/4.19.3:
 | 
			
		||||
    resolution: {integrity: sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==}
 | 
			
		||||
    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
| 
						 | 
				
			
			@ -2498,7 +2500,7 @@ packages:
 | 
			
		|||
  /core-js-compat/3.21.1:
 | 
			
		||||
    resolution: {integrity: sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      browserslist: 4.19.1
 | 
			
		||||
      browserslist: 4.19.3
 | 
			
		||||
      semver: 7.0.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2792,8 +2794,8 @@ packages:
 | 
			
		|||
      is-symbol: 1.0.4
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-android-arm64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-k1Uu4uC4UOFgrnTj2zuj75EswFSEBK+H6lT70/DdS4mTAOfs2ECv2I9ZYvr3w0WL0T4YItzJdK7fPNxcPw6YmQ==}
 | 
			
		||||
  /esbuild-android-arm64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-k9sXem++mINrZty1v4FVt6nC5BQCFG4K2geCIUUqHNlTdFnuvcqsY7prcKZLFhqVC1rbcJAr9VSUGFL/vD4vsw==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [android]
 | 
			
		||||
| 
						 | 
				
			
			@ -2801,8 +2803,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-darwin-64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-d8Ceuo6Vw6HM3fW218FB6jTY6O3r2WNcTAU0SGsBkXZ3k8SDoRLd3Nrc//EqzdgYnzDNMNtrWegK2Qsss4THhw==}
 | 
			
		||||
  /esbuild-darwin-64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-lB0XRbtOYYL1tLcYw8BoBaYsFYiR48RPrA0KfA/7RFTr4MV7Bwy/J4+7nLsVnv9FGuQummM3uJ93J3ptaTqFug==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [darwin]
 | 
			
		||||
| 
						 | 
				
			
			@ -2810,8 +2812,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-darwin-arm64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-YAt9Tj3SkIUkswuzHxkaNlT9+sg0xvzDvE75LlBo4DI++ogSgSmKNR6B4eUhU5EUUepVXcXdRIdqMq9ppeRqfw==}
 | 
			
		||||
  /esbuild-darwin-arm64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-yat73Z/uJ5tRcfRiI4CCTv0FSnwErm3BJQeZAh+1tIP0TUNh6o+mXg338Zl5EKChD+YGp6PN+Dbhs7qa34RxSw==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [darwin]
 | 
			
		||||
| 
						 | 
				
			
			@ -2819,8 +2821,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-freebsd-64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-ek1HUv7fkXMy87Qm2G4IRohN+Qux4IcnrDBPZGXNN33KAL0pEJJzdTv0hB/42+DCYWylSrSKxk3KUXfqXOoH4A==}
 | 
			
		||||
  /esbuild-freebsd-64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-/1xiTjoLuQ+LlbfjJdKkX45qK/M7ARrbLmyf7x3JhyQGMjcxRYVR6Dw81uH3qlMHwT4cfLW4aEVBhP1aNV7VsA==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [freebsd]
 | 
			
		||||
| 
						 | 
				
			
			@ -2828,8 +2830,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-freebsd-arm64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-zPh9SzjRvr9FwsouNYTqgqFlsMIW07O8mNXulGeQx6O5ApgGUBZBgtzSlBQXkHi18WjrosYfsvp5nzOKiWzkjQ==}
 | 
			
		||||
  /esbuild-freebsd-arm64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-uyPqBU/Zcp6yEAZS4LKj5jEE0q2s4HmlMBIPzbW6cTunZ8cyvjG6YWpIZXb1KK3KTJDe62ltCrk3VzmWHp+iLg==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [freebsd]
 | 
			
		||||
| 
						 | 
				
			
			@ -2837,8 +2839,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-32/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-SnpveoE4nzjb9t2hqCIzzTWBM0RzcCINDMBB67H6OXIuDa4KqFqaIgmTchNA9pJKOVLVIKd5FYxNiJStli21qg==}
 | 
			
		||||
  /esbuild-linux-32/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-37R/WMkQyUfNhbH7aJrr1uCjDVdnPeTHGeDhZPUNhfoHV0lQuZNCKuNnDvlH/u/nwIYZNdVvz1Igv5rY/zfrzQ==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [ia32]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2846,8 +2848,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-Zcl9Wg7gKhOWWNqAjygyqzB+fJa19glgl2JG7GtuxHyL1uEnWlpSMytTLMqtfbmRykIHdab797IOZeKwk5g0zg==}
 | 
			
		||||
  /esbuild-linux-64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-H0gztDP60qqr8zoFhAO64waoN5yBXkmYCElFklpd6LPoobtNGNnDe99xOQm28+fuD75YJ7GKHzp/MLCLhw2+vQ==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2855,8 +2857,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-arm/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-soPDdbpt/C0XvOOK45p4EFt8HbH5g+0uHs5nUKjHVExfgR7du734kEkXR/mE5zmjrlymk5AA79I0VIvj90WZ4g==}
 | 
			
		||||
  /esbuild-linux-arm/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-x64CEUxi8+EzOAIpCUeuni0bZfzPw/65r8tC5cy5zOq9dY7ysOi5EVQHnzaxS+1NmV+/RVRpmrzGw1QgY2Xpmw==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [arm]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2864,8 +2866,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-arm64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-8q/FRBJtV5IHnQChO3LHh/Jf7KLrxJ/RCTGdBvlVZhBde+dk3/qS9fFsUy+rs3dEi49aAsyVitTwlKw1SUFm+A==}
 | 
			
		||||
  /esbuild-linux-arm64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-c4MLOIByNHR55n3KoYf9hYDfBRghMjOiHLaoYLhkQkIabb452RWi+HsNgB41sUpSlOAqfpqKPFNg7VrxL3UX9g==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2873,8 +2875,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-mips64le/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-SiNDfuRXhGh1JQLLA9JPprBgPVFOsGuQ0yDfSPTNxztmVJd8W2mX++c4FfLpAwxuJe183mLuKf7qKCHQs5ZnBQ==}
 | 
			
		||||
  /esbuild-linux-mips64le/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-kHKyKRIAedYhKug2EJpyJxOUj3VYuamOVA1pY7EimoFPzaF3NeY7e4cFBAISC/Av0/tiV0xlFCt9q0HJ68IBIw==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [mips64el]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2882,8 +2884,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-ppc64le/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-6t/GI9I+3o1EFm2AyN9+TsjdgWCpg2nwniEhjm2qJWtJyJ5VzTXGUU3alCO3evopu8G0hN2Bu1Jhz2YmZD0kng==}
 | 
			
		||||
  /esbuild-linux-ppc64le/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-7ilAiJEPuJJnJp/LiDO0oJm5ygbBPzhchJJh9HsHZzeqO+3PUzItXi+8PuicY08r0AaaOe25LA7sGJ0MzbfBag==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [ppc64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2891,8 +2893,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-riscv64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-AyJHipZKe88sc+tp5layovquw5cvz45QXw5SaDgAq2M911wLHiCvDtf/07oDx8eweCyzYzG5Y39Ih568amMTCQ==}
 | 
			
		||||
  /esbuild-linux-riscv64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-fbL3ggK2wY0D8I5raPIMPhpCvODFE+Bhb5QGtNP3r5aUsRR6TQV+ZBXIaw84iyvKC8vlXiA4fWLGhghAd/h/Zg==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [riscv64]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2900,8 +2902,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-linux-s390x/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-Sz1NjZewTIXSblQDZWEFZYjOK6p8tV6hrshYdXZ0NHTjWE+lwxpOpWeElUGtEmiPcMT71FiuA9ODplqzzSxkzw==}
 | 
			
		||||
  /esbuild-linux-s390x/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-GHMDCyfy7+FaNSO8RJ8KCFsnax8fLUsOrj9q5Gi2JmZMY0Zhp75keb5abTFCq2/Oy6KVcT0Dcbyo/bFb4rIFJA==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [s390x]
 | 
			
		||||
    os: [linux]
 | 
			
		||||
| 
						 | 
				
			
			@ -2909,8 +2911,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-netbsd-64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-TBbCtx+k32xydImsHxvFgsOCuFqCTGIxhzRNbgSL1Z2CKhzxwT92kQMhxort9N/fZM2CkRCPPs5wzQSamtzEHA==}
 | 
			
		||||
  /esbuild-netbsd-64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-ovk2EX+3rrO1M2lowJfgMb/JPN1VwVYrx0QPUyudxkxLYrWeBxDKQvc6ffO+kB4QlDyTfdtAURrVzu3JeNdA2g==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [netbsd]
 | 
			
		||||
| 
						 | 
				
			
			@ -2918,8 +2920,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-openbsd-64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-vK912As725haT313ANZZZN+0EysEEQXWC/+YE4rQvOQzLuxAQc2tjbzlAFREx3C8+uMuZj/q7E5gyVB7TzpcTA==}
 | 
			
		||||
  /esbuild-openbsd-64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-uYYNqbVR+i7k8ojP/oIROAHO9lATLN7H2QeXKt2H310Fc8FJj4y3Wce6hx0VgnJ4k1JDrgbbiXM8rbEgQyg8KA==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [openbsd]
 | 
			
		||||
| 
						 | 
				
			
			@ -2927,8 +2929,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-sunos-64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-/mbJdXTW7MTcsPhtfDsDyPEOju9EOABvCjeUU2OJ7fWpX/Em/H3WYDa86tzLUbcVg++BScQDzqV/7RYw5XNY0g==}
 | 
			
		||||
  /esbuild-sunos-64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-hAzeBeET0+SbScknPzS2LBY6FVDpgE+CsHSpe6CEoR51PApdn2IB0SyJX7vGelXzlyrnorM4CAsRyb9Qev4h9g==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [sunos]
 | 
			
		||||
| 
						 | 
				
			
			@ -2936,8 +2938,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-windows-32/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-1vRIkuvPTjeSVK3diVrnMLSbkuE36jxA+8zGLUOrT4bb7E/JZvDRhvtbWXWaveUc/7LbhaNFhHNvfPuSw2QOQg==}
 | 
			
		||||
  /esbuild-windows-32/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-Kttmi3JnohdaREbk6o9e25kieJR379TsEWF0l39PQVHXq3FR6sFKtVPgY8wk055o6IB+rllrzLnbqOw/UV60EA==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [ia32]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
| 
						 | 
				
			
			@ -2945,8 +2947,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-windows-64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-AxjIDcOmx17vr31C5hp20HIwz1MymtMjKqX4qL6whPj0dT9lwxPexmLj6G1CpR3vFhui6m75EnBEe4QL82SYqw==}
 | 
			
		||||
  /esbuild-windows-64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-JtIT0t8ymkpl6YlmOl6zoSWL5cnCgyLaBdf/SiU/Eg3C13r0NbHZWNT/RDEMKK91Y6t79kTs3vyRcNZbfu5a8g==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [x64]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
| 
						 | 
				
			
			@ -2954,8 +2956,8 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild-windows-arm64/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-5wvQ+39tHmRhNpu2Fx04l7QfeK3mQ9tKzDqqGR8n/4WUxsFxnVLfDRBGirIfk4AfWlxk60kqirlODPoT5LqMUg==}
 | 
			
		||||
  /esbuild-windows-arm64/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-cTFaQqT2+ik9e4hePvYtRZQ3pqOvKDVNarzql0VFIzhc0tru/ZgdLoXd6epLiKT+SzoSce6V9YJ+nn6RCn6SHw==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    cpu: [arm64]
 | 
			
		||||
    os: [win32]
 | 
			
		||||
| 
						 | 
				
			
			@ -2963,31 +2965,31 @@ packages:
 | 
			
		|||
    dev: true
 | 
			
		||||
    optional: true
 | 
			
		||||
 | 
			
		||||
  /esbuild/0.14.22:
 | 
			
		||||
    resolution: {integrity: sha512-CjFCFGgYtbFOPrwZNJf7wsuzesx8kqwAffOlbYcFDLFuUtP8xloK1GH+Ai13Qr0RZQf9tE7LMTHJ2iVGJ1SKZA==}
 | 
			
		||||
  /esbuild/0.14.23:
 | 
			
		||||
    resolution: {integrity: sha512-XjnIcZ9KB6lfonCa+jRguXyRYcldmkyZ99ieDksqW/C8bnyEX299yA4QH2XcgijCgaddEZePPTgvx/2imsq7Ig==}
 | 
			
		||||
    engines: {node: '>=12'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    requiresBuild: true
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      esbuild-android-arm64: 0.14.22
 | 
			
		||||
      esbuild-darwin-64: 0.14.22
 | 
			
		||||
      esbuild-darwin-arm64: 0.14.22
 | 
			
		||||
      esbuild-freebsd-64: 0.14.22
 | 
			
		||||
      esbuild-freebsd-arm64: 0.14.22
 | 
			
		||||
      esbuild-linux-32: 0.14.22
 | 
			
		||||
      esbuild-linux-64: 0.14.22
 | 
			
		||||
      esbuild-linux-arm: 0.14.22
 | 
			
		||||
      esbuild-linux-arm64: 0.14.22
 | 
			
		||||
      esbuild-linux-mips64le: 0.14.22
 | 
			
		||||
      esbuild-linux-ppc64le: 0.14.22
 | 
			
		||||
      esbuild-linux-riscv64: 0.14.22
 | 
			
		||||
      esbuild-linux-s390x: 0.14.22
 | 
			
		||||
      esbuild-netbsd-64: 0.14.22
 | 
			
		||||
      esbuild-openbsd-64: 0.14.22
 | 
			
		||||
      esbuild-sunos-64: 0.14.22
 | 
			
		||||
      esbuild-windows-32: 0.14.22
 | 
			
		||||
      esbuild-windows-64: 0.14.22
 | 
			
		||||
      esbuild-windows-arm64: 0.14.22
 | 
			
		||||
      esbuild-android-arm64: 0.14.23
 | 
			
		||||
      esbuild-darwin-64: 0.14.23
 | 
			
		||||
      esbuild-darwin-arm64: 0.14.23
 | 
			
		||||
      esbuild-freebsd-64: 0.14.23
 | 
			
		||||
      esbuild-freebsd-arm64: 0.14.23
 | 
			
		||||
      esbuild-linux-32: 0.14.23
 | 
			
		||||
      esbuild-linux-64: 0.14.23
 | 
			
		||||
      esbuild-linux-arm: 0.14.23
 | 
			
		||||
      esbuild-linux-arm64: 0.14.23
 | 
			
		||||
      esbuild-linux-mips64le: 0.14.23
 | 
			
		||||
      esbuild-linux-ppc64le: 0.14.23
 | 
			
		||||
      esbuild-linux-riscv64: 0.14.23
 | 
			
		||||
      esbuild-linux-s390x: 0.14.23
 | 
			
		||||
      esbuild-netbsd-64: 0.14.23
 | 
			
		||||
      esbuild-openbsd-64: 0.14.23
 | 
			
		||||
      esbuild-sunos-64: 0.14.23
 | 
			
		||||
      esbuild-windows-32: 0.14.23
 | 
			
		||||
      esbuild-windows-64: 0.14.23
 | 
			
		||||
      esbuild-windows-arm64: 0.14.23
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /escalade/3.1.1:
 | 
			
		||||
| 
						 | 
				
			
			@ -3018,8 +3020,8 @@ packages:
 | 
			
		|||
      source-map: 0.6.1
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /eslint-config-prettier/8.3.0_eslint@7.32.0:
 | 
			
		||||
    resolution: {integrity: sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==}
 | 
			
		||||
  /eslint-config-prettier/8.4.0_eslint@7.32.0:
 | 
			
		||||
    resolution: {integrity: sha512-CFotdUcMY18nGRo5KGsnNxpznzhkopOcOo0InID+sgQssPrzjvsyKZPvOgymTFeHrFuC3Tzdf2YndhXtULK9Iw==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      eslint: '>=7.0.0'
 | 
			
		||||
| 
						 | 
				
			
			@ -3104,7 +3106,7 @@ packages:
 | 
			
		|||
      semver: 6.3.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /eslint-plugin-prettier/4.0.0_6e6a25a49a944db0fa38418c3ba4bc86:
 | 
			
		||||
  /eslint-plugin-prettier/4.0.0_ed3ee7322ae0bc2e5488ce09e4400c60:
 | 
			
		||||
    resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==}
 | 
			
		||||
    engines: {node: '>=6.0.0'}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
| 
						 | 
				
			
			@ -3116,7 +3118,7 @@ packages:
 | 
			
		|||
        optional: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      eslint: 7.32.0
 | 
			
		||||
      eslint-config-prettier: 8.3.0_eslint@7.32.0
 | 
			
		||||
      eslint-config-prettier: 8.4.0_eslint@7.32.0
 | 
			
		||||
      prettier: 2.5.1
 | 
			
		||||
      prettier-linter-helpers: 1.0.0
 | 
			
		||||
    dev: true
 | 
			
		||||
| 
						 | 
				
			
			@ -3134,8 +3136,8 @@ packages:
 | 
			
		|||
      eslint: 7.32.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /eslint-plugin-tailwindcss/3.4.4_autoprefixer@10.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-HaOmeX3wdzB3SYR8RediKtrQnxqRPAEq6VsX4sZ4QYehqfeuAMxkp7+pfXr9Ep8rfgcfW9jHFvnvGNrs3sVpIw==}
 | 
			
		||||
  /eslint-plugin-tailwindcss/3.5.0_autoprefixer@10.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-m1NyKX1qii3arb+zWrsNO5R15b27aaEm6m1ie9JM9a6yBrU9Q8H62obzT/U8PSITIucMY864uxljV8MiP7H6xg==}
 | 
			
		||||
    engines: {node: '>=12.13.0'}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      fast-glob: 3.2.11
 | 
			
		||||
| 
						 | 
				
			
			@ -3146,8 +3148,8 @@ packages:
 | 
			
		|||
      - ts-node
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /eslint-plugin-vue/8.4.1_eslint@7.32.0:
 | 
			
		||||
    resolution: {integrity: sha512-nmWOhNmDx9TZ+yP9ZhezTkZUupSHsYA2TocRm+efPSXMOyFrVczVlaIuQcLBjCtI8CbkBiUQ3VcyQsjlIhDrhA==}
 | 
			
		||||
  /eslint-plugin-vue/8.5.0_eslint@7.32.0:
 | 
			
		||||
    resolution: {integrity: sha512-i1uHCTAKOoEj12RDvdtONWrGzjFm/djkzqfhmQ0d6M/W8KM81mhswd/z+iTZ0jCpdUedW3YRgcVfQ37/J4zoYQ==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
 | 
			
		||||
| 
						 | 
				
			
			@ -3156,7 +3158,7 @@ packages:
 | 
			
		|||
      eslint-utils: 3.0.0_eslint@7.32.0
 | 
			
		||||
      natural-compare: 1.4.0
 | 
			
		||||
      semver: 7.3.5
 | 
			
		||||
      vue-eslint-parser: 8.2.0_eslint@7.32.0
 | 
			
		||||
      vue-eslint-parser: 8.3.0_eslint@7.32.0
 | 
			
		||||
    transitivePeerDependencies:
 | 
			
		||||
      - supports-color
 | 
			
		||||
    dev: true
 | 
			
		||||
| 
						 | 
				
			
			@ -4731,10 +4733,6 @@ packages:
 | 
			
		|||
      jsesc: 0.5.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /request-light/0.5.7:
 | 
			
		||||
    resolution: {integrity: sha512-i/wKzvcx7Er8tZnvqSxWuNO5ZGggu2UgZAqj/RyZ0si7lBTXL7kZiI/dWxzxnQjaY7s5HEy1qK21Do4Ncr6cVw==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /require-from-string/2.0.2:
 | 
			
		||||
    resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
 | 
			
		||||
    engines: {node: '>=0.10.0'}
 | 
			
		||||
| 
						 | 
				
			
			@ -4770,20 +4768,20 @@ packages:
 | 
			
		|||
      glob: 7.2.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /rollup-plugin-terser/7.0.2_rollup@2.67.3:
 | 
			
		||||
  /rollup-plugin-terser/7.0.2_rollup@2.68.0:
 | 
			
		||||
    resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      rollup: ^2.0.0
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@babel/code-frame': 7.16.7
 | 
			
		||||
      jest-worker: 26.6.2
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
      serialize-javascript: 4.0.0
 | 
			
		||||
      terser: 5.11.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /rollup/2.67.3:
 | 
			
		||||
    resolution: {integrity: sha512-G/x1vUwbGtP6O5ZM8/sWr8+p7YfZhI18pPqMRtMYMWSbHjKZ/ajHGiM+GWNTlWyOR0EHIdT8LHU+Z4ciIZ1oBw==}
 | 
			
		||||
  /rollup/2.68.0:
 | 
			
		||||
    resolution: {integrity: sha512-XrMKOYK7oQcTio4wyTz466mucnd8LzkiZLozZ4Rz0zQD+HeX4nUK4B8GrTX/2EvN2/vBF/i2WnaXboPxo0JylA==}
 | 
			
		||||
    engines: {node: '>=10.0.0'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
| 
						 | 
				
			
			@ -5134,8 +5132,8 @@ packages:
 | 
			
		|||
    engines: {node: '>=14.0.0'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /tinyspy/0.2.10:
 | 
			
		||||
    resolution: {integrity: sha512-Qij6rGWCDjWIejxCXXVi6bNgvrYBp3PbqC4cBP/0fD6WHDOHCw09Zd13CsxrDqSR5PFq01WeqDws8t5lz5sH0A==}
 | 
			
		||||
  /tinyspy/0.3.0:
 | 
			
		||||
    resolution: {integrity: sha512-c5uFHqtUp74R2DJE3/Efg0mH5xicmgziaQXMm/LvuuZn3RdpADH32aEGDRyCzObXT1DNfwDMqRQ/Drh1MlO12g==}
 | 
			
		||||
    engines: {node: '>=14.0.0'}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5392,7 +5390,7 @@ packages:
 | 
			
		|||
      debug: 4.3.3
 | 
			
		||||
      fast-glob: 3.2.11
 | 
			
		||||
      pretty-bytes: 5.6.0
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
      vite: 2.8.4
 | 
			
		||||
      workbox-build: 6.4.2
 | 
			
		||||
      workbox-window: 6.4.2
 | 
			
		||||
| 
						 | 
				
			
			@ -5417,16 +5415,16 @@ packages:
 | 
			
		|||
      stylus:
 | 
			
		||||
        optional: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      esbuild: 0.14.22
 | 
			
		||||
      esbuild: 0.14.23
 | 
			
		||||
      postcss: 8.4.6
 | 
			
		||||
      resolve: 1.22.0
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
    optionalDependencies:
 | 
			
		||||
      fsevents: 2.3.2
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vitest/0.1.27_jsdom@19.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-w95Izu+jzust3Ov0KdvN9xZPQm8dG5P1hNOB+uKQ+HFexFcdUW/oa0C0/NR2m2wVpsr23psRPzrBPNlBKgm0qA==}
 | 
			
		||||
  /vitest/0.5.4_jsdom@19.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-mQ6Wj5vczFybtb/kZ419gLqQRroLgqRdkVkNyC4Dz6XWDGBhBNEVP/KryLGgovEGvs9nlJBacaFXWt+6Cgdstg==}
 | 
			
		||||
    engines: {node: '>=14.14.0'}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
| 
						 | 
				
			
			@ -5450,7 +5448,7 @@ packages:
 | 
			
		|||
      jsdom: 19.0.0
 | 
			
		||||
      local-pkg: 0.4.1
 | 
			
		||||
      tinypool: 0.1.2
 | 
			
		||||
      tinyspy: 0.2.10
 | 
			
		||||
      tinyspy: 0.3.0
 | 
			
		||||
      vite: 2.8.4
 | 
			
		||||
    transitivePeerDependencies:
 | 
			
		||||
      - less
 | 
			
		||||
| 
						 | 
				
			
			@ -5472,8 +5470,8 @@ packages:
 | 
			
		|||
      vscode-uri: 3.0.3
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vscode-html-languageservice/4.2.1:
 | 
			
		||||
    resolution: {integrity: sha512-PgaToZVXJ44nFWEBuSINdDgVV6EnpC3MnXBsysR3O5TKcAfywbYeRGRy+Y4dVR7YeUgDvtb+JkJoSkaYC0mxXQ==}
 | 
			
		||||
  /vscode-html-languageservice/4.2.2:
 | 
			
		||||
    resolution: {integrity: sha512-4ICwlpplGbiNQq6D/LZr4qLbPZuMmnSQeX/57UAYP7jD1LOvKeru4lVI+f6d6Eyd7uS46nLJ5DUY4AAlq35C0g==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      vscode-languageserver-textdocument: 1.0.4
 | 
			
		||||
      vscode-languageserver-types: 3.16.0
 | 
			
		||||
| 
						 | 
				
			
			@ -5515,37 +5513,32 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-KH4zdG1qBXxoso61ChgpeoZYyHGJo8bV7Jv4I+fwQ1Ryy59JAxoZ9GAbhR5TeeafHctLcg6RFvY3m8Jqfu17cg==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vscode-languageserver/8.0.0-next.8:
 | 
			
		||||
    resolution: {integrity: sha512-Gq0uqKbOgw7YNwPxMoNCeh7mHKMhG5j6EuoSh+w5pnKd7Eu9a74cagqf9aZDVFWW6GRpqR/Z+1o6EXqDK+g2Tg==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    dependencies:
 | 
			
		||||
      vscode-languageserver-protocol: 3.17.0-next.14
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vscode-nls/5.0.0:
 | 
			
		||||
    resolution: {integrity: sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vscode-pug-languageservice/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-QHYAzDSJLg7GOLxCZ12qsM0dAM0dPeMSS1t4kKfzLsfpErmZpFzkAIXbidVrNMdMffGZMtTuIlcpEyWHbx96Iw==}
 | 
			
		||||
  /vscode-pug-languageservice/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-StQWV+v1v+an/pGKNPg4YkODFyKeYpUEzaSAoXIUsIoh7O4Nuv6zjd1M/fPxaMSD6Kk+OH/JGE36hbXsKXOz5A==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/code-gen': 0.29.8
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      '@volar/source-map': 0.29.8
 | 
			
		||||
      '@volar/transforms': 0.29.8
 | 
			
		||||
      '@volar/code-gen': 0.31.4
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      '@volar/source-map': 0.31.4
 | 
			
		||||
      '@volar/transforms': 0.31.4
 | 
			
		||||
      pug-lexer: 5.0.1
 | 
			
		||||
      pug-parser: 6.0.0
 | 
			
		||||
      vscode-languageserver: 8.0.0-next.8
 | 
			
		||||
      vscode-languageserver-textdocument: 1.0.4
 | 
			
		||||
      vscode-languageserver-types: 3.17.0-next.7
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vscode-typescript-languageservice/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-eecDqHk4WjEvy6VHQ6teHczppQ9yJO2wExCy7yu7WiFj35qbw0h4G6Erv46MvP3ClL8FggFzD7s1qM6vdqJUfw==}
 | 
			
		||||
  /vscode-typescript-languageservice/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-nsnRPEfg9t3oDlwzm3WTAv0p83vceqCuxvRo/+N7hXbmtaO7WMGCMvJx0xyIuUDS4NgaEK31oMR9FnX9JNcEQQ==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      semver: 7.3.5
 | 
			
		||||
      upath: 2.0.1
 | 
			
		||||
      vscode-languageserver: 8.0.0-next.8
 | 
			
		||||
      vscode-languageserver-protocol: 3.17.0-next.14
 | 
			
		||||
      vscode-languageserver-textdocument: 1.0.4
 | 
			
		||||
      vscode-nls: 5.0.0
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vscode-uri/2.1.2:
 | 
			
		||||
| 
						 | 
				
			
			@ -5556,27 +5549,26 @@ packages:
 | 
			
		|||
    resolution: {integrity: sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==}
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vscode-vue-languageservice/0.29.8:
 | 
			
		||||
    resolution: {integrity: sha512-qSJdvW5ttyGUB/8uWDKgo8vnIoFnXYlBP4Z/cn54btsRn6ZMw7IJGJU1381e7p/yGvMTLeGbugD53SghbnSa6g==}
 | 
			
		||||
  /vscode-vue-languageservice/0.31.4:
 | 
			
		||||
    resolution: {integrity: sha512-Pyvtj5iokBilGDH8KY6bocJh8NcIGoFmUksPOOZKBb+4usEHTBtWw/uoH4hjxWwLszMRQuStkXLMaSKtBIv3gQ==}
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/code-gen': 0.29.8
 | 
			
		||||
      '@volar/html2pug': 0.29.8
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      '@volar/source-map': 0.29.8
 | 
			
		||||
      '@volar/transforms': 0.29.8
 | 
			
		||||
      '@volar/vue-code-gen': 0.29.8
 | 
			
		||||
      '@volar/code-gen': 0.31.4
 | 
			
		||||
      '@volar/html2pug': 0.31.4
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      '@volar/source-map': 0.31.4
 | 
			
		||||
      '@volar/transforms': 0.31.4
 | 
			
		||||
      '@volar/vue-code-gen': 0.31.4
 | 
			
		||||
      '@vscode/emmet-helper': 2.8.4
 | 
			
		||||
      '@vue/reactivity': 3.2.31
 | 
			
		||||
      '@vue/shared': 3.2.31
 | 
			
		||||
      request-light: 0.5.7
 | 
			
		||||
      upath: 2.0.1
 | 
			
		||||
      vscode-css-languageservice: 5.1.13
 | 
			
		||||
      vscode-html-languageservice: 4.2.1
 | 
			
		||||
      vscode-html-languageservice: 4.2.2
 | 
			
		||||
      vscode-json-languageservice: 4.2.0
 | 
			
		||||
      vscode-languageserver: 8.0.0-next.8
 | 
			
		||||
      vscode-languageserver-protocol: 3.17.0-next.14
 | 
			
		||||
      vscode-languageserver-textdocument: 1.0.4
 | 
			
		||||
      vscode-pug-languageservice: 0.29.8
 | 
			
		||||
      vscode-typescript-languageservice: 0.29.8
 | 
			
		||||
      vscode-pug-languageservice: 0.31.4
 | 
			
		||||
      vscode-typescript-languageservice: 0.31.4
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vue-eslint-parser/7.1.1_eslint@7.32.0:
 | 
			
		||||
| 
						 | 
				
			
			@ -5596,8 +5588,8 @@ packages:
 | 
			
		|||
      - supports-color
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vue-eslint-parser/8.2.0_eslint@7.32.0:
 | 
			
		||||
    resolution: {integrity: sha512-hvl8OVT8imlKk/lQyhkshqwQQChzHETcBd5abiO4ePw7ib7QUZLfW+2TUrJHKUvFOCFRJrDin5KJO9OHzB5bRQ==}
 | 
			
		||||
  /vue-eslint-parser/8.3.0_eslint@7.32.0:
 | 
			
		||||
    resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==}
 | 
			
		||||
    engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      eslint: '>=6.0.0'
 | 
			
		||||
| 
						 | 
				
			
			@ -5636,15 +5628,15 @@ packages:
 | 
			
		|||
      vue: 3.2.31
 | 
			
		||||
    dev: false
 | 
			
		||||
 | 
			
		||||
  /vue-tsc/0.29.8_typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-pT0wLRjvRuSmB+J4WJT6uuV9mO0KtSSXEAtaVXZQzyk5+DJdbLIQTbRce/TXSkfqt1l1WogO78RjtOJFiMCgfQ==}
 | 
			
		||||
  /vue-tsc/0.31.4_typescript@4.5.5:
 | 
			
		||||
    resolution: {integrity: sha512-8RnKGmQRo/0rbXkyZmKCOdT62fNWyEaMdS/BDAPE+saGNAniUZsjpOSOjAiLwsQc5qgeI9/mY1W3o4tX7H/7MA==}
 | 
			
		||||
    hasBin: true
 | 
			
		||||
    peerDependencies:
 | 
			
		||||
      typescript: '*'
 | 
			
		||||
    dependencies:
 | 
			
		||||
      '@volar/shared': 0.29.8
 | 
			
		||||
      '@volar/shared': 0.31.4
 | 
			
		||||
      typescript: 4.5.5
 | 
			
		||||
      vscode-vue-languageservice: 0.29.8
 | 
			
		||||
      vscode-vue-languageservice: 0.31.4
 | 
			
		||||
    dev: true
 | 
			
		||||
 | 
			
		||||
  /vue/3.2.31:
 | 
			
		||||
| 
						 | 
				
			
			@ -5765,9 +5757,9 @@ packages:
 | 
			
		|||
      '@babel/core': 7.17.5
 | 
			
		||||
      '@babel/preset-env': 7.16.11_@babel+core@7.17.5
 | 
			
		||||
      '@babel/runtime': 7.17.2
 | 
			
		||||
      '@rollup/plugin-babel': 5.3.0_@babel+core@7.17.5+rollup@2.67.3
 | 
			
		||||
      '@rollup/plugin-node-resolve': 11.2.1_rollup@2.67.3
 | 
			
		||||
      '@rollup/plugin-replace': 2.4.2_rollup@2.67.3
 | 
			
		||||
      '@rollup/plugin-babel': 5.3.1_@babel+core@7.17.5+rollup@2.68.0
 | 
			
		||||
      '@rollup/plugin-node-resolve': 11.2.1_rollup@2.68.0
 | 
			
		||||
      '@rollup/plugin-replace': 2.4.2_rollup@2.68.0
 | 
			
		||||
      '@surma/rollup-plugin-off-main-thread': 2.2.3
 | 
			
		||||
      ajv: 8.10.0
 | 
			
		||||
      common-tags: 1.8.2
 | 
			
		||||
| 
						 | 
				
			
			@ -5776,8 +5768,8 @@ packages:
 | 
			
		|||
      glob: 7.2.0
 | 
			
		||||
      lodash: 4.17.21
 | 
			
		||||
      pretty-bytes: 5.6.0
 | 
			
		||||
      rollup: 2.67.3
 | 
			
		||||
      rollup-plugin-terser: 7.0.2_rollup@2.67.3
 | 
			
		||||
      rollup: 2.68.0
 | 
			
		||||
      rollup-plugin-terser: 7.0.2_rollup@2.68.0
 | 
			
		||||
      source-map: 0.8.0-beta.0
 | 
			
		||||
      source-map-url: 0.4.1
 | 
			
		||||
      stringify-object: 3.3.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								src/App.vue
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/App.vue
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -16,18 +16,12 @@
 | 
			
		|||
    </div>
 | 
			
		||||
    <SideMenu />
 | 
			
		||||
  </div>
 | 
			
		||||
  <ToastMessage />
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { onMounted } from 'vue'
 | 
			
		||||
 | 
			
		||||
import AppHeader from '@/components/AppHeader.vue'
 | 
			
		||||
import SideMenu from '@/components/SideMenu.vue'
 | 
			
		||||
import { darkMode } from '@/composables/settings'
 | 
			
		||||
import { LSK_DARKMODE } from '@/globals'
 | 
			
		||||
import { getItem } from '@/storage'
 | 
			
		||||
import ToastMessage from '@/components/ToastMessage.vue'
 | 
			
		||||
 | 
			
		||||
onMounted(() => {
 | 
			
		||||
  darkMode.value = JSON.parse(getItem(LSK_DARKMODE, 'true'))
 | 
			
		||||
})
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,10 @@ export function isSolvable(result: number, plaquettes: number[]): boolean {
 | 
			
		|||
        if (a < b) [a, b] = [b, a]
 | 
			
		||||
        const ops = shuffle([...operators])
 | 
			
		||||
        for (const op of ops) {
 | 
			
		||||
          if (op === '/' && a % b !== 0) continue
 | 
			
		||||
          // Avoid non-integer divisions, or divisions by 1
 | 
			
		||||
          if (op === '/' && (a % b !== 0 || b === 1)) continue
 | 
			
		||||
          // Avoid multiplications by 1
 | 
			
		||||
          if (op === '*' && (a === 1 || b === 1)) continue
 | 
			
		||||
          recursOperation(op, a, b, plaquettes, history)
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,11 +8,10 @@
 | 
			
		|||
    </RouterLink>
 | 
			
		||||
    <h1
 | 
			
		||||
      class="z-20 py-2 font-mono text-3xl text-center bg-stone-300 dark:bg-stone-900">
 | 
			
		||||
      N<span class="text-cyan-500">0</span>mbers
 | 
			
		||||
      N<span class="text-cyan-500">0</span>mbers<span class="text-xs">beta</span>
 | 
			
		||||
    </h1>
 | 
			
		||||
    <button @click="isSideMenuVisible = true">
 | 
			
		||||
      <IconMenu
 | 
			
		||||
        class="text-xl btn" />
 | 
			
		||||
      <IconMenu class="text-xl btn" />
 | 
			
		||||
    </button>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,8 +86,8 @@ function canOperationBeDeleted(op: Operation): boolean {
 | 
			
		|||
 | 
			
		||||
function undoOperation(index: number): void {
 | 
			
		||||
  if (gameState.value !== GameState.Playing) return
 | 
			
		||||
  const l = operations.length
 | 
			
		||||
  for (let i = operations.length - 1; i >= index; --i) {
 | 
			
		||||
  const len = operations.length
 | 
			
		||||
  for (let i = len - 1; i >= index; --i) {
 | 
			
		||||
    let popped: Operation
 | 
			
		||||
    if (i === index) {
 | 
			
		||||
      popped = operations[index]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@
 | 
			
		|||
      <div class="flex flex-col flex-1 content-center items-center">
 | 
			
		||||
        <div class="h-12" />
 | 
			
		||||
        <InputSwitch
 | 
			
		||||
          class="mb-4 "
 | 
			
		||||
          class="mb-4"
 | 
			
		||||
          id="toggleNight"
 | 
			
		||||
          lbl-left="Day"
 | 
			
		||||
          lbl-right="Night"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										24
									
								
								src/components/ToastMessage.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/components/ToastMessage.vue
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
<template>
 | 
			
		||||
  <Transition>
 | 
			
		||||
    <div
 | 
			
		||||
      v-if="toastVisible"
 | 
			
		||||
      class="fixed inset-x-0 top-4 z-20 p-3 mx-auto w-max text-center bg-stone-800 rounded border border-cyan-500"
 | 
			
		||||
      v-html="toastMessage" />
 | 
			
		||||
  </Transition>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
.v-enter-active,
 | 
			
		||||
.v-leave-active {
 | 
			
		||||
  transition: opacity 0.5s ease;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.v-enter-from,
 | 
			
		||||
.v-leave-to {
 | 
			
		||||
  opacity: 0;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
import { toastMessage, toastVisible } from '@/composables/toast-manager'
 | 
			
		||||
</script>
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@ export function numberOfGamesSinceStart(): number {
 | 
			
		|||
    new Date(GAME_STARTING_DATE as string),
 | 
			
		||||
    BXL_TZ,
 | 
			
		||||
  )
 | 
			
		||||
  return differenceInDays(startDate, getCurrentDate())
 | 
			
		||||
  return differenceInDays(getCurrentDate(), startDate)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function clearOperationsList(): void {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,20 +1,25 @@
 | 
			
		|||
import { computed, ref, watch } from 'vue'
 | 
			
		||||
import { ref, watch } from 'vue'
 | 
			
		||||
 | 
			
		||||
import { LSK_DARKMODE, LSK_LOCALE } from '@/globals'
 | 
			
		||||
import { setItem } from '@/storage'
 | 
			
		||||
import { i18n } from '@/i18n'
 | 
			
		||||
import { getItem, setItem } from '@/storage'
 | 
			
		||||
 | 
			
		||||
// #region Dark Mode
 | 
			
		||||
 | 
			
		||||
export const darkMode = ref(true)
 | 
			
		||||
watch(darkMode, val => {
 | 
			
		||||
  if (val) {
 | 
			
		||||
    document.documentElement.classList.add('dark')
 | 
			
		||||
  }
 | 
			
		||||
  else {
 | 
			
		||||
    document.documentElement.classList.remove('dark')
 | 
			
		||||
  }
 | 
			
		||||
  setItem(LSK_DARKMODE, val ? 'true' : 'false')
 | 
			
		||||
})
 | 
			
		||||
export const darkMode = ref(getItem(LSK_DARKMODE, 'true') === 'true')
 | 
			
		||||
watch(
 | 
			
		||||
  darkMode,
 | 
			
		||||
  val => {
 | 
			
		||||
    if (val) {
 | 
			
		||||
      document.documentElement.classList.add('dark')
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
      document.documentElement.classList.remove('dark')
 | 
			
		||||
    }
 | 
			
		||||
    setItem(LSK_DARKMODE, val ? 'true' : 'false')
 | 
			
		||||
  },
 | 
			
		||||
  { immediate: true },
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
export function isDarkModeDefault(): boolean {
 | 
			
		||||
  return (
 | 
			
		||||
| 
						 | 
				
			
			@ -27,10 +32,14 @@ export function isDarkModeDefault(): boolean {
 | 
			
		|||
 | 
			
		||||
// #region Locale
 | 
			
		||||
 | 
			
		||||
export const isLocaleFrench = ref(true)
 | 
			
		||||
 | 
			
		||||
watch(isLocaleFrench, v => {
 | 
			
		||||
  setItem(LSK_LOCALE, v ? 'fr' : 'en')
 | 
			
		||||
})
 | 
			
		||||
export const isLocaleFrench = ref(getItem(LSK_LOCALE, 'en') === 'fr')
 | 
			
		||||
watch(
 | 
			
		||||
  isLocaleFrench,
 | 
			
		||||
  v => {
 | 
			
		||||
    setItem(LSK_LOCALE, v ? 'fr' : 'en')
 | 
			
		||||
    i18n.global.locale.value = v ? 'fr' : 'en'
 | 
			
		||||
  },
 | 
			
		||||
  { immediate: true },
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// #endregion Locale
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										38
									
								
								src/composables/sharing.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/composables/sharing.ts
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
import { i18n } from '@/i18n'
 | 
			
		||||
import { percentageDiff } from '@/utils'
 | 
			
		||||
 | 
			
		||||
import { numberOfGamesSinceStart, operations, result } from './game-state'
 | 
			
		||||
import { showToast } from './toast-manager'
 | 
			
		||||
 | 
			
		||||
function getSharingText(): string {
 | 
			
		||||
  // × ÷ + -
 | 
			
		||||
  const emojis: string[] = []
 | 
			
		||||
  for (const op of operations) {
 | 
			
		||||
    switch (op.operator) {
 | 
			
		||||
      case '+':
 | 
			
		||||
        emojis.push('+')
 | 
			
		||||
        break
 | 
			
		||||
      case '-':
 | 
			
		||||
        emojis.push('-')
 | 
			
		||||
        break
 | 
			
		||||
      case '*':
 | 
			
		||||
        emojis.push('×')
 | 
			
		||||
        break
 | 
			
		||||
      case '/':
 | 
			
		||||
        emojis.push('÷')
 | 
			
		||||
        break
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  const endResult = operations[operations.length - 1].result?.value ?? 0
 | 
			
		||||
  return `N0mbers #${numberOfGamesSinceStart()}
 | 
			
		||||
===========
 | 
			
		||||
${emojis.join(' ')} = ${endResult}
 | 
			
		||||
Score: ${100 - percentageDiff(result.value, endResult) * 100}%
 | 
			
		||||
===========
 | 
			
		||||
https://n0mbers.scambier.xyz`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function toClipboard(): void {
 | 
			
		||||
  navigator.clipboard.writeText(getSharingText())
 | 
			
		||||
  showToast(i18n.global.t('copiedInClipboard'), 3000)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								src/composables/toast-manager.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/composables/toast-manager.ts
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
import { ref } from 'vue'
 | 
			
		||||
 | 
			
		||||
export const toastMessage = ref<string>()
 | 
			
		||||
export const toastVisible = ref(false)
 | 
			
		||||
const timeout = ref<NodeJS.Timeout>()
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Adds a toast to the list, that will be destroyed after `duration`
 | 
			
		||||
 * @param message
 | 
			
		||||
 * @param duration In milliseconds
 | 
			
		||||
 */
 | 
			
		||||
export function showToast(txt: string, duration: number): void {
 | 
			
		||||
  if (timeout.value) {
 | 
			
		||||
    clearTimeout(timeout.value)
 | 
			
		||||
  }
 | 
			
		||||
  // Set toast message
 | 
			
		||||
  toastMessage.value = txt
 | 
			
		||||
  // Show toast
 | 
			
		||||
  toastVisible.value = true
 | 
			
		||||
  // Hide toast after duration
 | 
			
		||||
  timeout.value = setTimeout(() => {
 | 
			
		||||
    toastVisible.value = false
 | 
			
		||||
  }, duration)
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								src/i18n.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/i18n.ts
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
import messages from '@intlify/vite-plugin-vue-i18n/messages'
 | 
			
		||||
import { createI18n } from 'vue-i18n'
 | 
			
		||||
 | 
			
		||||
export const i18n = createI18n({
 | 
			
		||||
  legacy: false,
 | 
			
		||||
  locale: 'fr',
 | 
			
		||||
  fallbackLocale: 'en',
 | 
			
		||||
  messages,
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			@ -59,7 +59,7 @@
 | 
			
		|||
.route-move,
 | 
			
		||||
.route-enter-active,
 | 
			
		||||
.route-leave-active {
 | 
			
		||||
  transition: all 1s ease;
 | 
			
		||||
  transition: all 0.8s ease;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.route-enter-from {
 | 
			
		||||
| 
						 | 
				
			
			@ -82,7 +82,7 @@
 | 
			
		|||
.route_back-move,
 | 
			
		||||
.route_back-enter-active,
 | 
			
		||||
.route_back-leave-active {
 | 
			
		||||
  transition: all 1s ease;
 | 
			
		||||
  transition: all 0.8s ease;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.route_back-enter-from {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,10 @@
 | 
			
		|||
  "medium": "medium",
 | 
			
		||||
  "randomGame": "Random number",
 | 
			
		||||
  "startGame": "Start",
 | 
			
		||||
  "dailyDescription": "The daily challenge changes every day at midnight, and is common to all players.",
 | 
			
		||||
  "share": "Share"
 | 
			
		||||
  "dailyDescription": "The daily challenge changes every day at midnight (CET), and is common to all players.",
 | 
			
		||||
  "share": "Share",
 | 
			
		||||
  "finishDailyToPlayRandom": "Finish the daily challenge to unlock.",
 | 
			
		||||
  "gameDescription": "Combine the numbers to reach the result.",
 | 
			
		||||
  "randomDescription": "A challenge at random, just for fun.",
 | 
			
		||||
  "copiedInClipboard": "Copied in clipboard"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,9 +9,10 @@
 | 
			
		|||
  "impossible": "☠",
 | 
			
		||||
  "dailyGame": "Défi quotidien",
 | 
			
		||||
  "randomGame": "Nombre au hasard",
 | 
			
		||||
  "gameDescription": "Combinez les nombres imposés afin d'atteindre le résultat, ou de vous en         approcher le plus possible.",
 | 
			
		||||
  "dailyDescription": "Le défi quotidien change chaque jour à minuit, et est commun à tous les joueurs.",
 | 
			
		||||
  "gameDescription": "Combinez les nombres imposés afin d'atteindre le résultat.",
 | 
			
		||||
  "dailyDescription": "Le défi quotidien change chaque jour à minuit (CET), et est commun à tous les joueurs.",
 | 
			
		||||
  "randomDescription": "Une partie au hasard, pour le plaisir.",
 | 
			
		||||
  "share": "Partager",
 | 
			
		||||
  "finishDailyToPlayRandom": "Terminez le défi quotidien pour débloquer."
 | 
			
		||||
  "finishDailyToPlayRandom": "Terminez le défi quotidien pour débloquer.",
 | 
			
		||||
  "copiedInClipboard": "Copié dans le presse-papier"
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								src/main.ts
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1,29 +1,12 @@
 | 
			
		|||
import './index.css'
 | 
			
		||||
 | 
			
		||||
import messages from '@intlify/vite-plugin-vue-i18n/messages'
 | 
			
		||||
import { registerSW } from 'virtual:pwa-register'
 | 
			
		||||
import { createApp, watch } from 'vue'
 | 
			
		||||
import { createI18n } from 'vue-i18n'
 | 
			
		||||
import { createApp } from 'vue'
 | 
			
		||||
 | 
			
		||||
import App from '@/App.vue'
 | 
			
		||||
import router from '@/router'
 | 
			
		||||
 | 
			
		||||
import { isLocaleFrench } from './composables/settings'
 | 
			
		||||
import { LSK_LOCALE } from './globals'
 | 
			
		||||
import { getItem } from './storage'
 | 
			
		||||
 | 
			
		||||
const i18n = createI18n({
 | 
			
		||||
  legacy: false,
 | 
			
		||||
  locale: 'fr',
 | 
			
		||||
  fallbackLocale: 'en',
 | 
			
		||||
  messages,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
// Set locale
 | 
			
		||||
watch(isLocaleFrench, v => {
 | 
			
		||||
  i18n.global.locale.value = v ? 'fr' : 'en'
 | 
			
		||||
})
 | 
			
		||||
isLocaleFrench.value = getItem(LSK_LOCALE, 'en') === 'fr'
 | 
			
		||||
import { i18n } from './i18n'
 | 
			
		||||
 | 
			
		||||
registerSW({
 | 
			
		||||
  onOfflineReady() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,3 @@
 | 
			
		|||
import { hasPlayed } from './composables/statistics'
 | 
			
		||||
import { getCurrentSessionKey } from './utils'
 | 
			
		||||
 | 
			
		||||
export function setItem(k: string, v: string): void {
 | 
			
		||||
  return localStorage.setItem(k, v)
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								src/utils.ts
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/utils.ts
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -14,6 +14,16 @@ export function getCurrentSessionKey(): string {
 | 
			
		|||
  return localISOTime.slice(0, 10)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 *
 | 
			
		||||
 * @param a
 | 
			
		||||
 * @param b
 | 
			
		||||
 * @returns Percentage rounded to 2 decimals
 | 
			
		||||
 */
 | 
			
		||||
export function percentageDiff(a: number, b: number): number {
 | 
			
		||||
  return Math.round(((a - b) / ((a + b) / 2)) * 100) / 100
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// #region RNG
 | 
			
		||||
 | 
			
		||||
export let random = Math.random
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,7 @@
 | 
			
		|||
      </div>
 | 
			
		||||
    </Transition>
 | 
			
		||||
 | 
			
		||||
    <!-- END GAME RESULT -->
 | 
			
		||||
    <Transition name="slide_up">
 | 
			
		||||
      <div
 | 
			
		||||
        v-if="isEndGame"
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +61,9 @@
 | 
			
		|||
        </button>
 | 
			
		||||
        <button
 | 
			
		||||
          v-else
 | 
			
		||||
          class="btn-border">
 | 
			
		||||
          @click="toClipboard"
 | 
			
		||||
          class="inline-flex items-center btn-border">
 | 
			
		||||
          <IconShare class="mr-2" />
 | 
			
		||||
          {{ t('share') }}
 | 
			
		||||
        </button>
 | 
			
		||||
      </div>
 | 
			
		||||
| 
						 | 
				
			
			@ -94,6 +97,7 @@ import {
 | 
			
		|||
  plaquettes,
 | 
			
		||||
  result,
 | 
			
		||||
} from '@/composables/game-state'
 | 
			
		||||
import { toClipboard } from '@/composables/sharing'
 | 
			
		||||
import { hasPlayed } from '@/composables/statistics'
 | 
			
		||||
import { GameState, pools } from '@/globals'
 | 
			
		||||
import { OperatorType, Plaquette } from '@/types'
 | 
			
		||||
| 
						 | 
				
			
			@ -105,6 +109,7 @@ import {
 | 
			
		|||
  setDailyPRNG,
 | 
			
		||||
  setMathPRNG,
 | 
			
		||||
} from '@/utils'
 | 
			
		||||
import IconShare from '~icons/ph/share-network'
 | 
			
		||||
 | 
			
		||||
const { t } = useI18n() // call `useI18n`, and spread `t` from  `useI18n` returning
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -113,7 +118,7 @@ const { t } = useI18n() // call `useI18n`, and spread `t` from  `useI18n` return
 | 
			
		|||
 */
 | 
			
		||||
 | 
			
		||||
const difficultyLevel = ref<1 | 2>(1)
 | 
			
		||||
const cmpPlaquettes = ref<InstanceType<typeof PlaquettesList>>()
 | 
			
		||||
const cmpPlaquettes = ref<InstanceType<typeof PlaquettesList> | null>(null)
 | 
			
		||||
 | 
			
		||||
const isDaily = computed(() => useRoute()?.name === 'daily')
 | 
			
		||||
const shownPlaquettes = computed(() =>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user