login page

This commit is contained in:
landaiqing
2024-08-11 15:21:16 +08:00
parent 438965f2a2
commit ff6a4a5d09
54 changed files with 2731 additions and 170 deletions

20
components.d.ts vendored
View File

@@ -9,16 +9,32 @@ declare module 'vue' {
export interface GlobalComponents {
AButton: typeof import('ant-design-vue/es')['Button']
AButtonGroup: typeof import('ant-design-vue/es')['ButtonGroup']
ACard: typeof import('ant-design-vue/es')['Card']
ACheckbox: typeof import('ant-design-vue/es')['Checkbox']
AConfigProvider: typeof import('ant-design-vue/es')['ConfigProvider']
ADatePicker: typeof import('ant-design-vue/es')['DatePicker']
ARadioButton: typeof import('ant-design-vue/es')['RadioButton']
ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup']
ADivider: typeof import('ant-design-vue/es')['Divider']
AFlex: typeof import('ant-design-vue/es')['Flex']
AForm: typeof import('ant-design-vue/es')['Form']
AFormItem: typeof import('ant-design-vue/es')['FormItem']
AInput: typeof import('ant-design-vue/es')['Input']
AInputPassword: typeof import('ant-design-vue/es')['InputPassword']
ASelect: typeof import('ant-design-vue/es')['Select']
ASelectOption: typeof import('ant-design-vue/es')['SelectOption']
ATabPane: typeof import('ant-design-vue/es')['TabPane']
ATabs: typeof import('ant-design-vue/es')['Tabs']
ATimePicker: typeof import('ant-design-vue/es')['TimePicker']
ATooltip: typeof import('ant-design-vue/es')['Tooltip']
BoxDog: typeof import('./src/components/BoxDog/BoxDog.vue')['default']
DynamicTitle: typeof import('./src/components/DynamicTitle/DynamicTitle.vue')['default']
LoginPage: typeof import('./src/views/Login/LoginPage.vue')['default']
RegisterPage: typeof import('./src/views/Register/RegisterPage.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SafetyOutlined: typeof import('@ant-design/icons-vue')['SafetyOutlined']
TabletOutlined: typeof import('@ant-design/icons-vue')['TabletOutlined']
TestI18n: typeof import('./src/views/TestI18n.vue')['default']
TestTheme: typeof import('./src/views/TestTheme.vue')['default']
UserOutlined: typeof import('@ant-design/icons-vue')['UserOutlined']
}
}

View File

@@ -13,29 +13,31 @@
"@ant-design/icons-vue": "^7.0.1",
"@types/crypto-js": "^4.2.2",
"@types/json-stringify-safe": "^5.0.3",
"@types/node": "^22.1.0",
"@types/node": "^22.2.0",
"@types/nprogress": "^0.2.3",
"alova": "^3.0.5",
"alova": "^3.0.6",
"ant-design-vue": "^4.2.3",
"axios": "^1.7.3",
"crypto-js": "^4.2.0",
"eslint": "9.x",
"eslint": "9.9.0",
"json-stringify-safe": "^5.0.1",
"less": "^4.2.0",
"localforage": "^1.10.0",
"nprogress": "^0.2.0",
"pinia": "^2.2.1",
"pinia-plugin-persistedstate-2": "^2.0.23",
"pinia-plugin-persistedstate": "^3.2.1",
"unplugin-auto-import": "^0.18.2",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-html": "^3.2.2",
"vite-plugin-node-polyfills": "^0.22.0",
"vue": "^3.4.31",
"vue": "^3.4.37",
"vue-i18n": "^10.0.0-beta.5",
"vue-router": "^4.4.3"
"vue-router": "^4.4.3",
"zipson": "^0.2.12"
},
"devDependencies": {
"@eslint/js": "^9.8.0",
"@eslint/js": "^9.9.0",
"@intlify/unplugin-vue-i18n": "^4.0.0",
"@vitejs/plugin-vue": "^5.0.5",
"eslint-plugin-vue": "^9.27.0",
"globals": "^15.9.0",
@@ -43,7 +45,7 @@
"typescript": "^5.2.2",
"typescript-eslint": "^8.0.1",
"unplugin-vue-components": "^0.27.3",
"vite": "^5.3.4",
"vite": "^5.4.0",
"vue-tsc": "^2.0.24"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -4,12 +4,30 @@ body {
position: relative;
transition: background-color 0.3s,
color 0.3s;
width: 100vw;
height: 100vh;
@include useTheme {
background-color: getModeVar('bgColor');
color: getModeVar('infoColor');
background-color: getModeVar('bgColor') !important;
color: getModeVar('infoColor') !important;
}
}
#app {
@include useTheme {
background-color: getModeVar('bgColor') !important;
color: getModeVar('infoColor') !important;
}
}
* {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
}
#nprogress .bar {
background: #48c453 !important; //自定义颜色
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 75 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 66 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 91 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -0,0 +1,352 @@
<svg xml:space="preserve" style="enable-background:new 0 0 1024 1024;" viewBox="0 0 1024 1024" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" id="图层_1" version="1.1">
<style type="text/css">
.st0{fill:#FFC156;}
.st1{fill:#FFD9BF;}
.st2{fill:#FFA246;}
.st3{fill:#FE6048;}
.st4{fill:#DF615D;}
.st5{fill:#F4C5A9;}
.st6{fill:#F88B79;}
.st7{fill:#B14F59;}
.st8{fill:#A7343F;}
.st9{fill:#63344A;}
.st10{fill:#760906;}
.st11{fill:#C33935;}
.st12{fill:#CF4847;}
.st13{fill:#FFA490;}
.st14{fill:#FFBCA9;}
.st15{fill:#6C3D4F;}
.st16{fill:#FEF2E1;}
.st17{fill:#E54A3E;}
.st18{fill:#FEE09C;}
.st19{fill:#7D434D;}
.st20{fill:#FF8F53;}
.st21{fill:#FF8044;}
.st22{fill:#958A9C;}
.st23{fill:#E2917E;}
.st24{fill:#F6F7F9;}
.st25{fill:#F0D1CD;}
.st26{fill:#FBB2B1;}
</style>
<title>8</title>
<g>
<path d="M621.9,280.8c0.3,3.4-1.6,6.5-5,7.8c-0.3,0-0.3,0.3-0.3,0.5c0,0.3,0,0.5,0,0.8c0,0.5,0.5,0.8,0.8,0.8h0.3
c1.8-0.5,3.6-1,5.5-1.8c1.6-0.5,3.4-1,5.2-1c13.6-0.8,26.8-2.6,39.9-5.5c2.6-0.8,5.5,0.8,6.5,3.4c0.8,8.3-0.8,16.7-4.4,24.2
c-6,12-13.6,23.5-22.4,33.6c-0.5,0.5-0.5,1.3,0.3,1.8c0.3,0.3,0.5,0.3,0.8,0.3l2.1,0.3l-26.3,13.6L596.9,377c-0.8,0.3-1,1-0.5,1.8
v0.3c0.3,0.3,0.5,0.8,1,0.8c-0.3,0.3-0.5,0.8-0.5,1.3c0,0.8-0.3,1-1,0.5L553.7,347c0.5-0.3,0.8-0.3,1.3-0.3c0.8,0,1-0.5,1-1
c0-0.5-0.3-1-0.8-1.3c-13-10.7-27.1-20.1-42-27.9c-24.8-12.3-52.1-18.8-79.8-19c-10.4-0.3-20.6-0.5-30.2-0.5
c-2.3,0-4.7,0.5-6.8,1.6c-3.9,1.8-5,0.8-3.4-3.1c2.6-5.7,6-11.2,10.4-15.9c3.6-4.2,3.6-14.1,4.4-18c2.6-10.9,8.3-20.9,16.4-28.7
c2.1-1.8,5.2-2.1,7.3-0.3c3.9,3.4,8.1,6.8,12,9.9c8.3,6.8,17.7,10.7,27.4,15.9c12.3,6.5,18.2,14.1,26.1,25.5c0.5,1,1.6,1.6,2.6,2.1
c0.5,0.3,1,0,1.3-0.8c0-0.3,0-0.3,0-0.5c-0.3-1.8-0.5-3.6,0-5.5c0.3-1.3,0.8-1.6,1.8-0.5c3.6,2.9,4.2,8.3,1.3,12
c-0.5,0.8-0.3,1.8,0.5,2.1c0.3,0,0.3,0.3,0.5,0.3l0.8,0.3c0.5,0,0.8,0,1-0.5c3.9-8.3,9.4-20.1,16.2-26.1c0.8-0.5,1.6-0.5,2.3,0
c4.4,3.1,7.8,7.3,10.4,12c0.3,0.5,1,0.8,1.6,0.5c0.3,0,0.5-0.3,0.5-0.5c5.2-10.2,14.3-19.5,25.5-21.6c7-1.3,13.6-3.6,19.8-7
c2.9-1.6,6.3-0.5,7.8,2.3c2.9,5.5,3.9,11.5,3.4,17.7c0,1,0.5,1.8,1.6,2.1c2.9,0.8,5.7,1,8.6,0.8
C611.5,271.9,619.3,273.5,621.9,280.8z" class="st0"></path>
<path d="M350.3,313.4c-1-0.3-1.8,0.3-2.6,0.8c-0.5,0.5-1,1.6-1,2.3c-0.3,1.6-1,3.1-1.6,4.7l-7,4.4
c-9.6,4.7-18.5,11.2-26.1,19c-0.3-0.3-0.3-0.8-0.5-1c0-0.5-0.5-1-1-1l0,0h-1l13.3-15.4c0.5-0.5,1-1,1.6-1c1.6-0.5,2.9-1.8,3.4-3.4
c0.3-1,0-1.6-1-1.6h-5.2c-0.5,0-1-0.3-1.6-0.5c-3.9-3.1-8.3-6-12.8-8.6c-4.2-2.6-8.3-5.7-12-8.9c-2.9-2.6-7.6-3.6-9.6-8.3
c-0.3-0.8-1-1-1.8-0.8c-0.5,0.3-0.8,0.5-0.8,0.8c-0.3,1-0.5,2.1-0.5,3.1c-1-6.5-0.8-13.3,0.5-19.8c0.3-1.6,1.6-2.9,3.4-2.9
c9.9,0,19.8,2.1,29.2,6c2.1,0.8,4.4,0,5.2-2.1c0.3-0.3,0.3-0.8,0.3-1c0.5-7.3,7-12.8,14.6-12.3c0.5,0,1.3,0.3,1.8,0.3
c7.8,1.8,15.1,4.7,22.2,8.3c9.6,5.2,16.4,14.3,22.4,23.5c1,1.6,0.5,3.4-0.8,4.4c-0.3,0.3-0.8,0.5-1,0.5
C369.9,305.5,360,308.9,350.3,313.4z" class="st0"></path>
<path d="M674.9,285.7c-0.8-2.6-3.6-4.2-6.5-3.4c-13,2.9-26.6,4.7-39.9,5.5c-1.8,0-3.6,0.5-5.2,1
c-1.8,0.8-3.6,1.3-5.5,1.8c-0.5,0.3-1,0-1-0.5v-0.3c0-0.3,0-0.5,0-0.8s0.3-0.5,0.3-0.5c3.1-1.3,5-4.4,5-7.8c1,3.1,2.9,3.9,5.5,2.6
c13.3-6,28.2-7,42-2.9C673,281.3,674.9,283.1,674.9,285.7z" class="st1"></path>
<path d="M309.7,342.5c-1.8,1.3-3.4,3.1-4.7,5c-0.8,1-2.1,1-3.6-0.3c-9.9-14.6-16.2-31.5-18.2-49.3c0-1,0-2.1,0.5-3.1
c0.3-0.8,1-1,1.8-0.8c0.5,0.3,0.8,0.5,0.8,0.8c2.1,4.7,6.8,5.7,9.6,8.3c3.6,3.4,7.8,6.3,12,8.9c4.4,2.6,8.6,5.5,12.8,8.6
c0.5,0.3,1,0.5,1.6,0.5h5.2c1,0,1.3,0.5,1,1.6c-0.5,1.6-1.8,2.9-3.4,3.4c-0.8,0.3-1.3,0.5-1.6,1L309.7,342.5z" class="st2"></path>
<path d="M575,690.3l2.1,0.3C576.3,690.5,575.8,690.3,575,690.3z" class="st3"></path>
<path d="M685.8,640c-0.8,0-1.8,0-2.3-0.5c-6.5-3.9-12-9.6-15.9-16.2c-1.3-2.3-1-5.2,0.5-7.3l9.9-13.3
c2.3-3.9,3.1-6.8,2.6-8.6c-0.3-0.5-0.3-1.3,0-1.8c0.5-1.3,0.5-2.9-0.3-4.2c-6.5,2.1-12.8,5.2-18,9.6c-0.5,0.3-1,0.3-1.6,0
c-0.3-0.3-0.3-0.5-0.3-0.8c0-0.3,0-0.5,0.3-0.8c5.5-7.8,11.5-14.9,18.5-21.4c0.5-0.5,1.3-0.5,1.6,0l8.9,7.6
c0.5,0.5,0.8,1.3,0.8,2.1c0,0.5-0.3,0.8-0.5,1.3c1.3-0.3,2.6-1,3.4-2.1c0.8-0.8,0.8-1.8,0-2.6l0,0c-0.3-0.3-0.3-0.8,0-1l0,0
c0.8-0.8,1-1.8,0.8-2.9c-1-4.7-2.1-9.6-2.9-14.9c-0.3-0.8-0.5-1.8-1-2.3c-2.1-2.9-3.4-6.5-3.1-10.2c0-0.8-0.3-1.6-1-1.8l-0.8-0.5
c-1-0.3-1.6-0.8-2.1-1.8c-2.6-5.5-4.4-11.2-5.7-16.9c-2.6-12.3-7.6-23.7-14.3-34.1c-0.5-1-1.8-3.1-3.6-6.5
c-1.6-3.4-3.9-5.2-5.5-8.3c-2.1-4.4-5-8.3-8.6-11.5c-2.9-3.6-5.2-7.6-7-12c-7.3-22.2-17.5-43.3-30.2-62.8c-3.1-4.4-7-8.6-11.2-12.3
c-0.3,0.3-0.5,0.8-0.5,1.3c0,0.8-0.3,1-1,0.5l-42.2-34.7c-11.5-8.6-23.5-16.4-36.2-23.2c-21.4-11.5-44.6-18.2-68.8-20.1l-33.9-2.6
c-0.5,0-1.3,0.3-1.6,0.8c0.3,0.5,0.3,1,0,1.6c-0.3,0.8-0.3,1.6,0.3,2.3c0.8,1.8,0.5,3.9-0.8,5.5c-0.5,0.8-1.3,1.3-2.1,1.6
c-1,0.3-1.8,0.8-2.6,1.6c-0.5,0.5-1.3,1-2.1,1.3l-7.3,1.8c-2.9,0.8-5.7-1-6.3-3.6c0-0.3,0-0.5-0.3-0.8c-0.3-1.8-0.8-3.4-2.1-4.4
c-0.8-0.8-1-0.5-1,0.5c0,0.8,0.3,1.6,0.8,2.3c0.5,0.8,0.8,1.6,0.8,2.3v9.1c0,0.8,0.3,1.6,0.8,2.1c3.9,4.4,9.4,7,15.1,7.3
c2.3,0.3,4.7-0.8,6.3-2.3c0.5-0.5,1-0.5,1.6-0.3c0.8,0.3,1.6,0.3,2.1-0.5c1.8-1.8,4.2-3.6,6.3-5.2c1.6-1,3.9-1,5.5,0
c2.9,2.1,5.5,2.3,7.6,1l5-10.7c1.3-2.9,5-4.2,8.1-2.9c0,0,0,0,0.3,0c3.6,1.6,6.5,4.4,8.3,7.8c0.5,1,0.3,2.3-0.8,3.1
c-0.3,0-0.3,0.3-0.5,0.3c-2.9,0.3-5.2,1.8-7,4.2c10.9,12.8,18,29.7,21.6,50.8c4.4,26.6,4.4,53.4,0,80c-0.5,3.6-1,7.3-1.3,10.7
c1.3,0,2.1,0.3,2.3,0.5c0.5,1,0.5,2.3-0.5,3.4c-15.4,13-35.4,12-53.7,6.8c-1-0.3-2.1,0.3-2.6,1.3c-2.6,6.3-5,13.6-7.6,21.4
c-1.3,4.4-3.4,8.9-5.7,13c-7.6,12.5-22.2,17.7-35.2,9.1c-9.9-6.5-15.9-16.4-18-29.7c0-0.8-0.8-1.3-1.6-1.3
c-5.5,0.5-20.6-0.5-23.2-6.5c-0.8-0.5-1.6-1.6-2.1-2.3c-1.8-4.4-3.6-8.9-5.5-13c-1-2.1-1.6-4.4-2.1-6.8c-0.3-3.1-1-6.3-1.8-9.1
c-1.6-4.2-2.9-8.3-3.4-12.8c-2.6-24.5-1-49,4.4-73c1.6-5.7,3.9-11.2,7-16.2c0.8-1.6,1.8-3.1,3.1-4.4c1-1.3,1.8-2.9,2.6-4.2
c1.3-2.6,5-5.7,10.9-9.1c3.1-1.6,3.9-5,2.6-9.6c-9.6,4.7-18.5,11.2-26.1,19c-10.2,11.7-16.2,19.3-18.2,22.7
c-10.7,19.3-19.5,39.6-25.8,60.7c-2.9,10.2-7.6,20.9-10.4,31.5c-1,4.2-3.1,8.1-5.5,11.7c-5.2,7.8-9.9,16.2-13.8,24.8
c-1,2.3-1.8,5-2.3,7.6c-0.3,4.2-1.6,4.4-3.4,0.8c-2.9-5.7-0.3-1.3-0.3-3.9c-0.3,0.5-0.8,0.8-1.3,1l3.9,15.9c0.3-1.3,1-1.3,2.1,0
c0.5,0.5,0.8,1,1,1.6c6.3,14.9,16.2,27.9,28.7,38.1c0.5,0.5,0.5,1.3,0.3,1.8l-0.3,0.3c-0.8,0.3-1.6,0.3-2.3,0
c1.8,1.3,3.4,2.6,4.7,4.4c2.1,2.9,1.3,3.6-1.8,2.3c-1.8-1-4.2-1.6-6.3-1.6c-8.3,1-16.9,1.8-25.3,2.6c-2.6,0.3-5.2,0.8-7.8,1.8
c-2.3,1-5,1.8-7.6,2.9c-1.6,2.6-3.4,5.2-5.5,7.8c-10.9,14.1-14.9,29.5-9.1,46.9c5.2,15.6,15.6,33.9,29.7,44.3
c7.6,5.5,13,3.1,21.4,0.8c0.5,0,0.8,0,0.8,0.5c1,12,3.6,24,7.3,35.7c3.9,7,7,14.6,9.9,22.2c1,3.4,2.6,6.8,4.7,9.6
c1.8,2.9,3.6,6,5.5,9.1c1,1.6,2.1,2.9,3.4,3.9c1.3,1.3,2.6,2.6,3.4,4.2c0.5,0.8,1,1.3,1.8,1.6c1.8,0.5,3.9,0.8,5.7,0.5
c5.2-0.5,10.2-2.1,15.1-4.2c0.8-0.3,1.8-0.5,2.6-0.5c4.7,0,7.6-2.9,8.9-8.3c-9.9-6.5-18.8-14.3-26.1-23.7
c-9.6-11.5-16.9-24.5-21.6-38.6c-2.3-6.8-3.4-13.8-3.1-20.9c0.3-7.6,6-11.2,10.7-15.9c6.5-6.8,9.4-15.6,8.1-26.6
c0-0.8,0-1.6,0.5-2.3c5.5-9.1,5.5-20.3,0-29.5c-0.5-1-0.5-2.3-0.3-3.4c10.2-22.2,24.8-30,49.5-33.9c41.4-6.8,83.2-11.2,125.1-13.8
c14.9-1.3,30,1.6,43.5,8.1c11.2,6.3,21.1,14.9,29.2,24.8c1.6-3.4,2.6-7,3.1-10.9c0.3-5,0.8-9.9,2.1-14.9c0.3-0.8,0.8-1.6,1.6-1.8
c3.4-1.3,5.2-1,6,0.8c3.6-1.3,7.6-1.6,11.5-0.5c2.3,0.5,3.6,2.9,3.1,5.2c0,0.3-0.3,0.8-0.5,1c-5,8.6-12.5,6.5-19,1.6
c-1.8,8.6-1.8,17.5-0.3,26.1l14.1-0.5c0.8,0,1.6,0.3,2.3,0.5l2.1,1c0.3-2.1,1.6-1.8,3.4,0.3c0.8,0.8,1.3,1.6,1.6,2.6
c2.9,7,3.9,12.8,13,15.6c9.6,3.4,20.3,2.3,29.5-2.6c1-0.5,2.3-0.5,3.1,0.5c2.1,2.1,3.1,5,3.1,7.8c0,0.8,0.5,1.6,1.6,1.6
c0.3,0,0.5,0,0.8-0.3c3.4-2.1,6.5-4.7,9.1-7.6c0.8-0.8,1.6-1.3,2.6-1.3c1-0.3,2.1,0.5,2.3,1.6c0.3,0.5,0,1.3-0.5,1.8
c-10.2,11.7-21.1,18.8-33.1,21.4c-7.3,3.1-15.4,3.9-23.2,2.6c-3.4-1-6.5-2.6-9.4-4.7c-3.1-2.1-6.5-3.6-9.9-4.4l1,36.8
c0,0.8-0.3,1.6-1,2.1c-1.6,1.3-3.9,2.9-6.8,5c-1.8,1.3-3.1,3.1-3.4,5.5c-1.8,9.9,1,19,9.1,27.1c2.9,1.3,5.5,3.1,7.8,5.5
c1.8,0,3.6,0.3,5.2,1c-0.8-2.6-0.5-4.2,1-4.4c-9.4-1.6-15.4-6.8-17.5-15.6c-5.2-7.6-5-17.7,6.3-19.3c4.4-1,9.1,1,11.5,5
c2.9,4.2,4.7,8.9,5.2,13.8c1-2.1,1.3-4.2,1.3-6.5c0-0.3,0-0.5,0.3,0c1.3,3.4,3.1,4.4,5.5,3.4c7.6-0.8,13.3,1.3,17.5,6.3
c2.3,2.6,4.4,5.7,6,8.9c0.5-0.3,0.8-1.3,0.8-3.1c0-1,0.3-1,0.8-0.3c0.5,0.8,0.5,1.8,0,2.6c-0.3,0.5-0.3,1,0,1.6
c0,0.3,0.3,0.5,0.5,0.3l0,0c1-0.5,2.1,0,2.6,1c0.3,0.3,0.3,0.8,0.3,1c-0.3,2.6-1.6,5-3.6,6.5c-0.8,0.5-1.3,1.3-1.6,2.3
c-0.5,2.3-2.3,3.9-4.7,3.9c-0.8,0-1.6,0.5-2.3,1c-2.1,2.1-3.6,5-4.4,7.8c-0.3,1-1,1.8-1.8,2.1c-2.3,0.8-4.4,2.6-5.5,4.7
c-0.3,0.5-0.3,0.8,0.5,0.5c0.5-0.3,0.8,0,1.3,0.3c0.3,0,0.5,0.5,0.5,1c0,0.3-0.3,0.3-0.3,0.3c-0.8,1-1.3,2.1-1.6,3.1
c-0.3,0.8,0,1.3,1,1l6-1.3c1-0.3,1.6,0.3,1.6,1.3c0,0.3,0,0.8-0.3,1c-0.5,0.8-0.3,1,0.5,0.8l13.8-2.3c0.8,0,1.3-0.5,1.6-1.3
l3.1-6.3c0.3-0.8,1-1.3,1.8-1.8l7.8-3.1c0.8-0.3,1.3-0.8,1.3-1.6c0.3-1.3,0.5-2.3,1-3.6c2.3-5.5,5-10.7,7.8-15.9
c0.5-0.8,0.3-1.8-0.3-2.3c0,0-0.3,0-0.3-0.3c-0.5-0.3-1-0.8-1.3-1.6c-0.5-0.8-0.5-1.6,0.3-2.3c1.3-1.3,2.9-1.8,4.7-1.6
c15.9-6.8,30.8-15.6,44.1-26.8c4.2-3.9,8.3-8.1,12-12.5C694.7,640.5,690.2,639.4,685.8,640z M262.8,501c-5.7-5.5-5.2-15.4,1-21.9
c6.3-6.5,16.2-7.6,21.9-2.3c5.7,5.5,5.2,15.4-1,21.9C278.4,505.2,268.5,506.5,262.8,501z M281,644.4c-0.8,0.5-1.6,0.8-2.6,0.5
c-3.1-0.5-6.3-1.8-8.6-3.9c-6-5.7-2.3-13.8,2.9-18.2c0.8-0.5,1.6-0.8,2.3-1l12-0.8c0.8,0,1.3,0.3,1.6,1
C292.7,630.6,287.8,639.4,281,644.4z M286.7,613.9c-3.1,2.1-7.3,1-9.1-2.1c-0.5-1-1-2.1-1-3.1c-0.3-0.8,0-1.8,0.3-2.3
c2.1-3.9,3.1-8.3,3.9-12.5c-2.9-1-5.5-2.3-8.3-3.6c-1.6-0.5-2.3-2.3-1.6-3.9c0-0.3,0.3-0.5,0.5-0.8c0.5-0.8,1.3-1,2.1-0.8
c3.4,0.5,6.5,2.1,9.1,4.4c0.5,0.5,1.3,0.8,2.3,0.5c5-1,7.6,0.8,8.1,5.2C295.1,604,293.3,610.2,286.7,613.9L286.7,613.9z
M295.3,459.6c-0.3,2.9-2.9,4.7-5.5,4.4c-5.7-0.5-11.2,0-16.9,1.6c-3.9,1-7,3.9-10.2,5c-4.4,1.3-5.7-0.3-3.9-5
c1-2.3,2.9-4.2,5.2-5.2c2.1-1,4.2-1.6,6.5-1.6c3.1,0,6-1.8,7.6-4.4c0.5-0.8,1.3-1,2.1-1.3c3.1-0.5,6.5-0.5,9.9,0
C294,453.6,295.9,455.9,295.3,459.6L295.3,459.6z M559.6,471.1c-3.1,14.1-16.2,19.5-29.7,17.2c-8.9-1.6-14.3-7.3-16.2-16.9
c-0.5-2.6,0.8-5.5,3.1-6.8c7.6-4.7,15.9-7.6,24.8-8.3c0.8,0,1.6-0.5,2.3-1l5-4.2c0.5-0.5,1.6-0.8,2.3-0.8c1.3,0,2.6,0.8,3.4,1.8
c0.5,0.5,1,1,1.6,1.3C561.2,456.2,560.7,466.4,559.6,471.1L559.6,471.1z M588.6,514.8c3.6-7.6,9.1-14.3,15.9-19.5
c7.3-5.5,16.7-0.3,20.3,6.8c0.3,0.5,0.5,1,0.3,1.6c-0.3,1-0.8,1-1.6,0.5c-2.6-2.6-6.5-3.1-9.6-1.3c-4.7,2.3-8.9,5-13,8.1
c-3.4,2.3-7,4.2-10.9,5.2c-0.5,0.3-1.3-0.3-1.3-0.8C588.3,515.4,588.3,515.1,588.6,514.8L588.6,514.8z M643.8,569.8l-1.3,0.3
c-2.6,0.5-5.2-1.3-5.7-3.9l0,0c-1-5.7-3.1-11.2-6.3-16.2c-0.5-0.8-1.3-0.8-2.1-0.3c-0.3,0.3-0.5,0.5-0.5,0.8
c-1.3,4.2-3.9,7.8-7.6,10.4c-3.4,2.3-7.6,3.4-11.7,2.9c-9.6-1-15.9-6.8-19-16.4c-1.3-3.1-0.5-7,2.1-9.1c3.6-3.4,8.9-4.2,13.3-2.1
c0.8,0.3,1.6,0.3,2.3,0c3.9-1.8,7-4.2,9.9-7.3c1.8-1.8,2.9-4.4,2.3-7c-0.5-2.3-1.3-4.4-2.6-6.5c-0.5-1-0.3-2.3,0.8-2.9
c0.5-0.3,1-0.3,1.3-0.3l8.1,1.6c1,0.3,2.1-0.3,2.6-1c0.8-0.8,1-2.1,1-3.1c0-2.6,0.8-2.9,2.1-0.5l10.2,19.8
c4.2,8.3,6.8,19.3,7.3,33.1c0.5,3.9-2.1,7.3-6,7.8C644.1,569.8,643.8,570.1,643.8,569.8L643.8,569.8z" class="st3"></path>
<path d="M412.9,302.1c0.3,0.5,0.3,1,0,1.6c-0.3,0.8-0.3,1.6,0.3,2.3c0.8,1.8,0.5,3.9-0.8,5.5c-0.5,0.8-1.3,1.3-2.1,1.6
c-1,0.3-1.8,0.8-2.6,1.6c-0.5,0.5-1.3,1-2.1,1.3l-7.3,1.8c-2.9,0.8-5.7-1-6.3-3.6c0-0.3,0-0.5-0.3-0.8c-0.3-1.8-0.8-3.4-2.1-4.4
c-0.8-0.8-1-0.5-1,0.5c0,0.8,0.3,1.6,0.8,2.3c0.5,0.8,0.8,1.6,0.8,2.3v9.1c0,0.8,0.3,1.6,0.8,2.1c3.9,4.4,9.4,7,15.1,7.3
c2.3,0.3,4.7-0.8,6.3-2.3c0.5-0.5,1-0.5,1.6-0.3c0.8,0.3,1.6,0.3,2.1-0.5c1.8-1.8,4.2-3.6,6.3-5.2c1.6-1,3.9-1,5.5,0
c2.9,2.1,5.5,2.3,7.6,1c3.6,2.9,8.6,3.4,13,1.8c10.9,12.8,18,29.7,21.6,50.8c4.4,26.6,4.4,53.4,0,80c-0.5,3.6-1,7.3-1.3,10.7
c-15.4,16.4-42.7,11.7-61.3,3.1c-7.3-3.4-15.9-2.9-22.7,1.3c-11.7,6.8-23.5,15.6-37.5,15.9c-7.8,0.5-15.4-0.8-22.7-3.9
c-0.5-0.3-1,0-1.6,0.3c-0.3,0.3-0.3,0.8-0.3,1c-0.8-0.5-1.6-1.6-2.1-2.3c-1.8-4.4-3.6-8.9-5.5-13c-1-2.1-1.6-4.4-2.1-6.8
c-0.3-3.1-1-6.3-1.8-9.1c-1.6-4.2-2.9-8.3-3.4-12.8c-2.6-24.5-1-49,4.4-73c1.6-5.7,3.9-11.2,7-16.2c0.8-1.6,1.8-3.1,3.1-4.4
c1-1.3,1.8-2.9,2.6-4.2c1.3-2.6,5-5.7,10.9-9.1c3.1-1.6,3.9-5,2.6-9.6l6.8-4.4c1,0.3,1.3,1,1,1.8c-1.8,4.7-0.8,7.8,3.9,9.4
c1,0.3,2.1,0.3,3.1,0c4.4-1.6,9.1-1.6,13.3-0.3c1,0.3,2.1,0.3,2.9-0.3c3.6-2.1,7-5,5.7-9.9c-0.8-3.4-2.9-6-5.7-7.6
c-0.8-0.3-1-1.3-1-2.1c0.3-0.8,0.5-1.6,1-2.3l15.9-4.4l6.5,0.8c0.8,0,1.6,0.5,2.1,1.3c0.8,1.3,1.3,2.6,1.6,4.2
c0.3,2.1,2.1,3.6,4.2,3.6c0.3,0,0.5,0,1-0.3c6.5-2.1,9.6-5.5,9.9-10.2L412.9,302.1z M365.7,446.8c0-1.3-2.1-2.3-4.4-2.3
s-4.4,1-4.4,2.3c0,1.3,2.1,2.3,4.4,2.3S365.7,448.1,365.7,446.8L365.7,446.8z" class="st4"></path>
<path d="M410.6,305.5c-0.3,4.7-3.4,7.8-9.9,10.2c-2.1,0.8-4.2-0.3-5-2.3c0-0.3-0.3-0.5-0.3-1c-0.3-1.6-0.8-2.9-1.6-4.2
c-0.5-0.8-1.3-1.3-2.1-1.3l-6.5-0.8c2.1-1.8,5-2.1,7.3-1c0.8,0.3,1.6,0.5,2.3,0.3c3.1-0.8,6.5-0.3,9.4,1.3
C406.6,307.6,409.2,307.1,410.6,305.5z" class="st5"></path>
<path d="M369.4,310.5c-0.5,0.5-1,1.3-1,2.3c-0.3,0.8,0.3,1.6,1,2.1c2.9,1.6,5.2,4.4,5.7,7.6c1,5-2.1,7.8-5.7,9.9
c-0.8,0.5-2.1,0.5-2.9,0.3c-4.4-1.6-9.1-1.6-13.3,0.3c-1,0.3-2.1,0.3-3.1,0c-4.4-1.8-5.7-5-3.9-9.4c0.3-0.8,0-1.3-1-1.8
c0.5-1.6,1-2.9,1.3-4.4c0.3-0.8,0.5-1.6,1-2.3c0.8-0.8,1.6-1,2.6-0.8c-1.3,2.1-0.3,3.1,3.4,2.9c1.3-0.3,2.6-0.5,3.6-1.3
C361.3,313.1,365.5,311.5,369.4,310.5z" class="st6"></path>
<path d="M448.3,326.9c-4.4,1.6-9.4,1-13-1.8l5-10.7c1.3-2.9,5-4.2,8.1-2.9c0,0,0,0,0.3,0c3.6,1.6,6.5,4.4,8.3,7.8
c0.5,1,0.3,2.3-0.8,3.1c-0.3,0-0.3,0.3-0.5,0.3C452.5,323.3,449.9,324.6,448.3,326.9z" class="st6"></path>
<path d="M682.9,339.7c-3.6,2.3-8.1,3.6-12.5,3.9c-5.2,0-10.7,0.5-16.7,1c7.8-3.6,15.9-6.3,24-8.1
c1-0.3,2.1-0.3,3.1,0.3C682.4,337.1,682.9,338.4,682.9,339.7z" class="st6"></path>
<path d="M682.9,339.7c1,2.3,1.8,5,2.3,7.6c-5,0.5-9.9,2.3-14.3,5c-0.8,0.3-1,1-0.8,1.8l3.6,10.9
c0.5,1.8-0.5,3.4-2.1,4.2c-0.5,0.3-1,0.3-1.6,0c-2.9-0.5-5.7-1-8.6-1.3c-6.8-0.8-14.1-5.7-20.3-8.3c-0.5-0.3-1-0.3-1.6-0.3
l-14.9,0.8l26.3-13.6c0.8-0.8,1.8-1.3,2.9-1.6c5.7-0.5,11.2-0.8,16.7-1C674.9,343.3,679.3,342,682.9,339.7z" class="st7"></path>
<path d="M309.7,342.5h1c0.5,0,1,0.3,1,0.8l0,0c0,0.5,0.3,0.8,0.5,1c-10.2,11.7-16.2,19.3-18.2,22.7
c-10.7,19.3-19.5,39.6-25.8,60.7c-2.9,10.2-7.6,20.9-10.4,31.5c-1,4.2-3.1,8.1-5.5,11.7c-5.2,7.8-9.9,16.2-13.8,24.8
c-1,2.3-1.8,5-2.3,7.6c-0.3,4.2-1.6,4.4-3.4,0.8c-2.9-5.7-0.3-1.3-0.3-3.9c4.4-10.7,10.7-21.4,14.9-31.3c3.1-7.8,6.3-15.6,9.1-23.5
c2.6-7,5-14.3,6.5-21.4c3.9-14.6,8.6-28.7,14.3-42.7c0.5-1.3,0.3-2.9-0.8-3.6c-4.4-4.4-9.4-8.1-14.9-10.9
c-12-5.7-23.5-13-33.9-21.4c2.6,0,5.2,1,7.3,2.6s4.2,2.9,6.3,4.2c12.5,5.7,24.5,12.5,35.7,20.3c1.6,1,3.9,0.8,5.2-0.8l18.8-24.5
c1.6,1.3,2.9,1.3,3.6,0.3C306.3,345.7,307.9,343.8,309.7,342.5z" class="st1"></path>
<path d="M227.8,345.7c10.4,8.3,21.9,15.6,33.9,21.4c5.5,2.9,10.4,6.5,14.9,10.9c1,1,1.3,2.3,0.8,3.6
c-5.7,13.8-10.7,28.2-14.3,42.5c-1.8,7.3-3.9,14.6-6.5,21.4c-3.1,8.1-6,15.9-9.1,23.5c-3.9,9.9-10.2,20.6-14.9,31.3
c-0.3,0.5-0.8,0.8-1.3,1c-3.1-6-5-12.5-5.2-19.3c-0.3-3.1,1.8-6.3,6-8.9l9.4-31.3c0.3-0.8,0.8-1.6,1.3-2.1c2.3-2.3,3.4-5.2,3.6-8.3
c0-1,0.3-1.8,0.8-2.6c3.1-4.7,4.7-10.2,4.4-15.9c0-1.3-0.8-2.1-2.1-2.3c-11.5-2.1-15.6-13-6-20.3c6-4.7,13.8-6.3,20.9-4.2
c0.8,0.3,1.6,0,2.1-0.5l4.4-5.5c1.3-1.6,1-3.6-0.5-4.7c-0.8-0.5-1.6-0.8-2.6-0.8c-5.5,0.8-8.9-2.3-13.6-2.6
c-5.2-0.3-10.7,0.5-15.6,2.3c-0.8,0.3-1.3,0.3-2.1,0.3c-0.8-0.3-1.6,0-2.3,0.3c-2.9,2.1-6.5,3.4-10.2,3.6c-0.8,0-1.6,0.3-2.3,0.8
l-5.7,4.2c-0.8,0.5-1,1.3-1.3,2.1c-0.8,3.6-2.9,6.8-6,8.9C212.4,377.5,219,361.1,227.8,345.7z M247.9,439.3
c2.1-2.3,3.4-5.2,3.6-8.3c0-1.3,0-1.3-0.8-0.3l-4.7,9.6c-0.5,1-0.3,1.3,0.8,0.8C247.6,440.8,247.9,440,247.9,439.3L247.9,439.3z" class="st8"></path>
<path d="M685.3,347.2c3.6,16.2,7,34.4,9.6,55c1.3,7.6,0.5,15.4-2.6,22.7c-2.1,5-3.6,9.9-5.2,15.1
c-0.3,0.5,0.3,1,0.8,1.3c0.3,0,0.3,0,0.5,0c9.6-2.3,19.5-2.3,29.2,0c4.2,0.8,7,4.2,6.8,8.3c0.8,15.6-0.5,31.5-4.2,46.9
c-3.9,10.9-7.6,22.7-10.9,35.2c-3.1,11.7-10.9,16.7-23.7,14.9c-1-0.3-1.6-0.8-2.1-1.8c-2.6-5.5-4.4-11.2-5.7-16.9
c0.3-7-1.6-14.1-5-20.3c-0.8-1.3-0.3-2.9,0.8-3.6c0.5-0.3,1-0.3,1.6-0.3c8.6-0.3,13.6-5.5,14.3-14.9c0.5-6.8-1-16.2-10.2-15.4
c-3.6,0.3-7,1.3-10.4,2.6c-4.7,2.1-8.3,0.8-10.7-3.4c-0.3-0.5-0.8-0.8-1.3-0.8s-1-0.3-1.3-1.3c0-0.3,0-0.8,0.3-1
c1.6-2.1,3.4-3.9,5.2-5.7c6-4.7,5.2-7.3-2.3-8.1c-4.7-0.5-11.5-0.5-19.8-0.5c-7.3-22.2-17.5-43.3-30.2-62.8
c-3.1-4.4-7-8.6-11.2-12.3c-0.5-0.3-0.8-0.5-1-0.8c-0.5-0.5-0.3-1.6,0.3-1.8h0.3l27.9-17.5l14.9-0.8c0.5,0,1,0,1.6,0.3
c6.3,2.6,13.6,7.6,20.3,8.3c2.9,0.3,5.7,0.8,8.6,1.3c1.8,0.3,3.4-0.8,3.9-2.6c0-0.5,0-1,0-1.6l-3.6-10.9c-0.3-0.8,0-1.6,0.8-1.8
C675.4,349.3,680.1,347.8,685.3,347.2z M642.8,385.6c-0.5-0.5-1-1-1.8-1.3l-17.7-4.4c-1.8-0.5-3.6,0.8-4.2,2.3
c-0.3,0.8,0,1.6,0.3,2.1l12.3,27.1c0.8,1.6,2.9,2.3,4.4,1.6c0.3,0,0.5-0.3,0.5-0.3l14.9-10.7c1.6-1,1.8-3.1,0.8-4.7l0,0
L642.8,385.6z" class="st9"></path>
<path d="M231.7,473.7c-3.1-0.5-6.3-1.3-9.4-2.3c-6.3-1.6-10.9-6.8-12-13.3c-1.3-6.8-2.6-13.3-3.9-20.1
c-1.3-6.5-2.1-13.3-1.8-20.1c0.5-7.8,1.8-15.6,3.6-23.2c2.9-2.1,5.2-5.2,6-8.9c0.3-0.8,0.8-1.6,1.3-2.1l5.7-4.2
c0.8-0.5,1.6-0.8,2.3-0.8c3.6-0.3,7.3-1.6,10.2-3.6c0.8-0.3,1.6-0.5,2.3-0.3c0.8,0,1.3,0,2.1-0.3c5-1.8,10.4-2.6,15.6-2.3
c4.7,0.3,8.1,3.4,13.6,2.6c1.8-0.3,3.6,1,3.9,2.9c0,1-0.3,1.8-0.8,2.6l-4.4,5.5c-0.5,0.5-1.3,0.8-2.1,0.5
c-7.3-2.1-15.1-0.5-21.1,4.2c-9.4,7.3-5.2,18.2,6,20.3c1.3,0,2.1,1,2.1,2.3c0.3,5.7-1.3,11.2-4.4,15.9c-0.5,0.8-0.8,1.6-0.8,2.6
c0,3.1-1.3,6.3-3.6,8.3c-0.5,0.5-1,1.3-1.3,2.1L231.7,473.7z" class="st9"></path>
<path d="M642.8,385.6l9.1,12c1,1.6,0.8,3.6-0.5,4.7l0,0l-14.9,10.7c-1.6,1-3.6,0.8-4.7-0.8c-0.3-0.3-0.3-0.5-0.3-0.5
l-12.3-27.1c-0.8-1.6,0-3.6,1.6-4.4c0.8-0.3,1.6-0.3,2.1-0.3l17.7,4.4C641.8,384.5,642.3,385,642.8,385.6z" class="st7"></path>
<path d="M503.1,410.1c9.9,4.7,15.6,26.3,14.9,37.3c0,2.3-1.8,3.9-4.2,3.9c-3.1,0-6-2.1-6.8-5.2
c-2.9-11.2-5-22.7-6.3-34.1c-0.3-0.8,0.3-1.6,1.3-1.8C502.3,409.8,502.8,409.8,503.1,410.1z" class="st10"></path>
<path d="M247.9,439.3c0,0.8-0.3,1.6-1,1.8c-1,0.5-1.3,0.3-0.8-0.8l5-9.6c0.5-1,0.8-1,0.8,0.3
C251.3,434,250,436.9,247.9,439.3z" class="st11"></path>
<ellipse ry="4.4" rx="2.3" cy="446.9" cx="361.2" class="st8" transform="matrix(1.745299e-03 -1 1 1.745299e-03 -86.2693 807.2921)"></ellipse>
<path d="M555.7,453.3c5.5,2.6,5,12.8,3.6,18c-3.1,14.1-16.2,19.5-29.7,17.2c-8.9-1.6-14.3-7.3-16.2-16.9
c-0.5-2.6,0.5-5.5,3.1-6.8c7.6-4.7,15.9-7.6,24.8-8.3c0.8,0,1.6-0.5,2.3-1l5-4.2c0.5-0.5,1.6-0.8,2.3-0.8c1.3,0,2.6,0.8,3.4,1.8
C554.7,452.5,555.2,453.1,555.7,453.3z" class="st6"></path>
<path d="M258.8,465.6c1-2.3,2.9-4.2,5.2-5.2c2.1-1,4.2-1.6,6.5-1.6c3.1,0,6-1.8,7.6-4.4c0.5-0.8,1.3-1,2.1-1.3
c3.1-0.5,6.5-0.5,9.9,0c4.2,0.8,6,3.1,5.5,6.8c-0.3,2.9-2.9,4.7-5.5,4.4c-5.7-0.5-11.2,0-16.9,1.6c-3.9,1-7,3.9-10.2,5
C258.3,471.8,257,470.3,258.8,465.6z" class="st10"></path>
<path d="M677.5,527.6c-2.6-12.3-7.6-23.7-14.3-34.1c-0.5-1-1.8-3.1-3.6-6.5c-1.6-3.4-3.9-5.2-5.5-8.3
c-2.1-4.4-5-8.3-8.6-11.5c-2.9-3.6-5.2-7.6-7-12c8.3,0,15.1,0.3,19.8,0.5c7.6,0.8,8.3,3.4,2.3,8.1c-1.8,1.8-3.6,3.6-5.2,5.7
c-0.3,0.3-0.3,0.8-0.3,1c0.3,0.8,0.5,1.3,1.3,1.3c0.5,0,1,0.3,1.3,0.8c2.3,4.2,6,5.2,10.7,3.1c3.4-1.3,6.8-2.3,10.4-2.6
c9.1-0.8,10.9,8.6,10.2,15.4c-1,9.4-5.7,14.6-14.3,14.9c-1.6,0-2.6,1-2.6,2.6c0,0.5,0,1,0.3,1.6
C676.2,513.5,677.7,520.6,677.5,527.6z" class="st12"></path>
<path d="M468.4,468.4c1.3,0,2.1,0.3,2.3,0.5c0.5,1,0.5,2.3-0.5,3.4c-15.4,13-35.4,12-53.7,6.8c-1-0.3-2.1,0.3-2.6,1.3
c-2.6,6.3-5,13.6-7.6,21.4c-1.3,4.4-3.4,8.9-5.7,13c-7.6,12.5-22.2,17.7-35.2,9.1c-9.9-6.5-15.9-16.4-18-29.7
c0-0.8-0.8-1.3-1.6-1.3c-5.5,0.5-20.6-0.5-23.2-6.5c-0.3-0.3,0-0.5,0.3-1c0.5-0.5,1-0.5,1.6-0.3c7,3.1,14.9,4.4,22.7,3.9
c14.1-0.3,25.8-9.4,37.5-15.9c6.8-4.2,15.4-4.7,22.7-1.3C425.4,480.2,452.8,485.1,468.4,468.4z M387.4,476
c-10.4,5.5-20.9,12.8-32.3,16.9c-2.3,0.5-3.6,2.9-3.1,5c0,0,0,0,0,0.3c4.7,27.4,35.7,40.4,48.7,8.6c3.4-8.6,6.8-17.7,10.2-27.4
c0.5-1,0-2.6-1-3.1c0,0,0,0-0.3,0C402.5,472.4,394.1,472.4,387.4,476z" class="st11"></path>
<path d="M354.8,492.9c11.5-3.9,21.9-11.2,32.3-16.7c6.8-3.6,15.1-3.6,22.2,0c1.3,0.5,1.8,1.8,1.3,2.9c0,0,0,0,0,0.3
c-3.1,9.6-6.5,18.8-10.2,27.4c-13,31.8-43.8,18.8-48.7-8.6C351.1,495.8,352.4,493.5,354.8,492.9L354.8,492.9z" class="st13"></path>
<ellipse ry="14.3" rx="16.7" cy="489" cx="274.3" class="st13" transform="matrix(0.6871 -0.7266 0.7266 0.6871 -269.4631 352.3323)"></ellipse>
<path d="M600.6,511.2c-3.4,2.3-7,4.2-10.9,5.2c-0.5,0.3-1.3-0.3-1.3-0.8c0-0.3,0-0.5,0-0.8
c3.6-7.6,9.1-14.3,15.9-19.5c7.3-5.5,16.7-0.3,20.3,6.8c0.3,0.5,0.5,1,0.3,1.6c-0.3,1-0.8,1-1.6,0.5c-2.6-2.6-6.5-3.1-9.6-1.3
C609.2,505.2,604.7,508.1,600.6,511.2z" class="st14"></path>
<path d="M720,496.3c4.2,3.9,7.6,8.6,10.4,13.6c19.5,36.8,13.8,84.2-5.5,119.9c-6.3,10.4-13.6,20.1-21.6,28.9
c-3.4,3.9-6.3,8.6-7.8,13.6c-1.8,6-3.4,11.5-4.7,16.7c-0.3,1-0.8,2.1-1.8,2.9c-2.9,0-3.9-2.1-3.6-5.5c1.3-10.9,5-21.1,11.2-30.2
c0.3-0.5,0.3-1,0.3-1.3c-0.3-0.5-0.3-1,0-1.6c0.5-1.6,0-1.8-1.3-1c-1.8,0.8-3.4,2.3-4.4,4.2c-2.3,5.2-6.8,9.1-12.3,10.7
c-1,0.3-1.8,0.8-2.3,1.6c-1.8,1.6-3.9,2.9-6.3,3.6c-6.5,3.6-13.3,6.8-20.1,9.6c-2.9,1.3-6,2.1-9.4,2.3c-1.3,0.3-1.6-0.3-0.3-1
c0.5-0.3,1-0.8,1.3-1.6c15.9-6.8,30.8-15.6,44.1-26.8c4.2-3.9,8.3-8.1,12-12.5c0.3,1.6,0,3.4-0.8,5c-0.3,0.3,0,0.8,0.3,1
c0.3,0.3,0.5,0.3,0.5,0.5c0.5,0.3,1.3,0,1.8-0.5c4.7-6,7.3-13.6,7.3-21.4c0.3-12.5-2.3-25-8.1-36.2c-0.8-1.6-2.6-2.1-4.2-1.6
c-0.3,0-0.3,0.3-0.5,0.3l-16.7,12.5c2.3-3.9,3.1-6.8,2.6-8.6c-0.3-0.5-0.3-1.3,0-1.8c0.5-1.3,0.5-2.9-0.3-4.2l9.4-2.6
c1.3-0.3,2.6-1,3.4-2.1c0.8-0.8,0.8-1.8,0-2.6l0,0c-0.3-0.3-0.3-0.8,0-1l0,0c0.8-0.8,1-1.8,0.8-2.9c-1-4.7-2.1-9.6-2.9-14.9
c-0.3-0.8-0.5-1.8-1-2.3c-2.1-2.9-3.4-6.5-3.1-10.2c0-0.8-0.3-1.6-1-1.8l-0.8-0.5c12.8,1.8,20.6-3.1,23.7-14.9
C712.4,519,716,507.3,720,496.3z M720.7,553.4c2.3-2.6,2.6-6.5,0.8-9.6c-0.5-0.8-1.3-1.3-2.3-1.3l-7.8-0.3c-1,0-1.8,0.5-2.3,1.3
c-1.8,4.2,0,9.4,4.2,11.2c0.8,0.3,1.6,0.5,2.1,0.5C717.6,556.3,719.7,555.2,720.7,553.4z" class="st11"></path>
<path d="M591.4,538c3.6-3.4,8.9-4.2,13.3-2.1c0.8,0.3,1.6,0.3,2.3,0c3.9-1.8,7-4.2,9.9-7.3c1.8-1.8,2.9-4.4,2.3-7
c-0.5-2.3-1.3-4.4-2.6-6.5c-0.5-1-0.3-2.3,0.8-2.9c0.5-0.3,1-0.3,1.3-0.3l8.1,1.6c1,0.3,2.1-0.3,2.6-1c0.8-0.8,1-2.1,1-3.1
c0-2.6,0.8-2.9,2.1-0.5l10.2,19.8c4.2,8.3,6.8,19.3,7.3,33.1c0.5,3.9-2.3,7.3-6,7.8c0,0,0,0-0.3,0l-1.3,0.3
c-2.6,0.5-5.2-1.3-5.7-3.9l0,0c-1-5.7-3.1-11.2-6.3-16.2c-0.5-0.8-1.3-0.8-2.1-0.3c-0.3,0.3-0.5,0.5-0.5,0.8
c-1.3,4.2-3.9,7.8-7.6,10.4c-3.4,2.3-7.6,3.4-11.7,2.9c-9.6-1-15.9-6.8-19-16.4C588.3,544,589.1,540.4,591.4,538z" class="st15"></path>
<path d="M264.6,559.7l-3.9-3.4c-10.2-9.9-22.4-24.5-25.8-38.6c0.3-1.3,1-1.3,2.1,0c0.5,0.5,0.8,1,1,1.6
c6.3,14.9,16.2,27.9,28.7,38.1c0.5,0.5,0.5,1.3,0.3,1.8l-0.3,0.3C265.9,559.9,265.1,559.9,264.6,559.7z" class="st11"></path>
<path d="M541.1,570.1c2.3,5.5,3.9,10.9,5,16.9c2.1,9.9,7.6,19,15.6,25.3l1,36.8c0,0.8-0.3,1.6-1,2.1
c-1.6,1.3-3.9,2.9-6.8,5c-1.8,1.3-3.1,3.1-3.4,5.5c-1.8,9.9,1,19,9.1,27.1c-7,6.3-17.7,11.2-31.8,14.3
c-62.3,14.6-120.9,21.9-175.9,22.2c-18,0-35.7-0.8-53.4-2.9c-9.6-11.5-16.9-24.5-21.6-38.6c-2.3-6.8-3.4-13.8-3.1-20.9
c0.3-7.6,6-11.2,10.7-15.9c6.5-6.8,9.4-15.6,8.1-26.6c0-0.8,0-1.6,0.5-2.3c5.5-9.1,5.5-20.3,0-29.5c-0.5-1-0.5-2.3-0.3-3.4
c10.2-22.2,24.8-30,49.5-33.9c41.4-6.8,83.2-11.2,125.1-13.8c14.9-1.3,30,1.6,43.5,8.1C523.2,551.6,533.1,559.9,541.1,570.1z
M432.7,595.4c3.6-9.4-1.8-20.3-12-24.2c-10.2-3.9-21.4,0.5-25,9.9c-3.6,9.4,1.8,20.3,12,24.2C417.8,609.2,429.1,604.8,432.7,595.4
z M389.7,643.9c10.4,13.6,26.3,28.4,42,15.6c1.8-1.6,3.4-3.4,4.7-5.5c5.2-7.6,9.6-12.3,12.8-21.1c0.8-2.1,2.9-3.4,5-3.1
c16.7,1.8,31-3.1,35.7-20.6c0.3-0.5,0.8-0.8,1.3-0.8h0.3c13.8,8.3,24.5,5.7,32.3-7.8c2.1-2.9,2.6-6.8,1-10.2c-2.6-5.2-4.2-5-5,0.8
s-6,14.3-12.8,15.1c-6.8,0.8-15.6-4.7-21.4-7.6c-0.5-0.3-1.6,0-1.8,0.5c0,0.3-0.3,0.3-0.3,0.5c-1,9.4-4.7,22.7-16.2,23.2
c-6.8,0.5-13.6-1.3-19-5.5c-0.8-0.5-1.8-0.3-2.3,0.5c-0.3,0.3-0.3,0.5-0.3,0.8c-0.8,13.6-7.8,25.3-20.9,29.7c-6.3,2.1-13,2.1-19,0
c-6.3-2.1-9.6-7-13-12c-0.8-1-2.3-1.3-3.4-0.5c-0.3,0.3-0.3,0.3-0.5,0.5c-0.5,0.5-0.8,1.3-0.8,2.1
C387.9,640.2,388.4,642.3,389.7,643.9z M351.4,625.1c-2.9-0.3-5.7-0.8-8.6-1c-10.2-1-16.4-7-17.7-17.2c0-1-0.5-1.3-1.6-0.8
c-0.5,0.3-0.8,0.8-0.8,1.3c-0.5,6.8,2.6,19.8,10.7,22.2c2.1,0.5,6.8,1.6,13.8,2.6c1.3,0.3,2.9-0.3,3.9-1c0.5-0.5,1.6-0.5,2.1,0
c1.3,0.8,2.6,1,3.9,0.5c9.9,7.6,19.3,9.1,28.2,4.2c2.9-1.6,5-3.6,6.5-6.5s2.9-6,3.9-8.9c0.3-0.8,0.3-1.8,0-2.6
c-5-12.3-14.1-20.9-27.6-20.1C353.2,598.3,348.5,612.6,351.4,625.1z" class="st16"></path>
<path d="M554.2,543.3c-3.4,0.5-5.7,3.6-5.2,7l0,0c-1.8,8.6-1.8,17.5-0.3,26.1c-0.3,7.6,2.1,15.1,6.8,21.1
c1.6,5,4.7,9.4,9.1,12.3c3.4,2.1,7.3,3.9,10.9,5.7c3.4,1.6,7.3,2.1,10.9,1.8c6-0.3,11.7,0.3,17.7,1.3c-7.3,3.1-15.4,3.9-23.2,2.6
c-3.4-1-6.5-2.6-9.4-4.7c-3.1-2.1-6.5-3.6-9.9-4.4c-8.1-6.3-13.8-15.1-15.6-25.3c-1-5.7-2.6-11.5-5-16.9c1.6-3.4,2.6-7,3.1-10.9
c0.3-5,0.8-9.9,2.1-14.9c0.3-0.8,0.8-1.6,1.6-1.8C551.6,541.2,553.4,541.4,554.2,543.3z" class="st11"></path>
<path d="M549.2,550.6c-0.5-3.4,1.8-6.5,5.2-7l0,0c3.6-1.3,7.6-1.6,11.5-0.5c2.3,0.5,3.6,2.9,3.1,5.2
c0,0.3-0.3,0.8-0.5,1C563.3,557.3,555.7,555.5,549.2,550.6z" class="st0"></path>
<path d="M720.7,553.4c-1,1.8-3.1,2.9-5.2,2.1c-4.7-0.8-7.8-5-7-9.6c0-0.8,0.3-1.6,0.5-2.1c0.3-1,1.3-1.6,2.3-1.3
l7.8,0.3c1,0,1.8,0.5,2.3,1.3C723.3,546.9,723.1,550.8,720.7,553.4z" class="st8"></path>
<path d="M260.7,556.3l3.9,3.4c1.8,1.3,3.4,2.6,4.7,4.4c2.1,2.9,1.3,3.6-1.8,2.3c-1.8-1-4.2-1.6-6.3-1.6
c-8.3,1-16.9,1.8-25.3,2.6c-2.6,0.3-5.2,0.8-7.8,1.8c-2.3,1-5,1.8-7.6,2.9c3.4-6.5,9.1-11.2,15.9-13.3c7.3-1.8,14.9-1.6,22.2,0.5
c0.8,0.3,1.6,0,2.1-0.8C260.9,557.8,260.9,556.8,260.7,556.3z" class="st5"></path>
<ellipse ry="19.8" rx="18.2" cy="588.3" cx="414.3" class="st3" transform="matrix(0.3584 -0.9336 0.9336 0.3584 -283.446 764.2116)"></ellipse>
<path d="M690,585l-9.4,2.6c-6.5,2.1-12.8,5.2-18,9.6c-0.5,0.3-1,0.3-1.6,0c-0.3-0.3-0.3-0.5-0.3-0.8
c0-0.3,0-0.5,0.3-0.8c5.5-7.8,11.5-14.9,18.5-21.4c0.5-0.5,1.3-0.5,1.6,0l8.9,7.6c0.5,0.5,0.8,1.3,0.8,2.1
C690.5,584.4,690.2,584.7,690,585z" class="st13"></path>
<path d="M567.5,577.4c1.6,11.2-2.3,17.7-11.7,20.1c-4.7-6-7-13.6-6.8-21.1l14.1-0.5c0.8,0,1.6,0.3,2.3,0.5L567.5,577.4
z" class="st2"></path>
<path d="M604.2,618.6c-5.7-1-11.7-1.3-17.7-1.3c-3.6,0.3-7.6-0.5-10.9-1.8c-3.6-1.6-7.6-3.4-10.9-5.7
c-4.4-2.9-7.6-7.3-9.1-12.3c9.4-2.3,13.3-8.9,11.7-20.1c0.3-2.1,1.6-1.8,3.4,0.3c0.8,0.8,1.3,1.6,1.6,2.6c2.9,7,3.9,12.8,13,15.6
c9.6,3.4,20.3,2.3,29.5-2.6c1-0.5,2.3-0.5,3.1,0.5c2.1,2.1,3.1,5,3.1,7.8c0,0.8,0.5,1.6,1.6,1.6c0.3,0,0.5,0,0.8-0.3
c3.4-2.1,6.5-4.7,9.1-7.6c0.8-0.8,1.6-1.3,2.6-1.3c1-0.3,2.1,0.5,2.3,1.6c0.3,0.5,0,1.3-0.5,1.8C627.4,608.9,616.2,616,604.2,618.6
z" class="st17"></path>
<path d="M292.7,594.9c-0.8,6.5-4.7,6.3-12-1c-2.9-1-5.5-2.3-8.3-3.6c-1.6-0.5-2.3-2.3-1.6-3.9c0-0.3,0.3-0.5,0.5-0.8
c0.5-0.8,1.3-1,2.1-0.8c3.4,0.5,6.5,2.1,9.1,4.4c0.5,0.5,1.3,0.8,2.3,0.5C289.3,588.6,292.2,590.4,292.7,594.9z" class="st18"></path>
<path d="M389.7,643.9c-1.3-1.6-1.8-3.4-1.6-5.5c0-0.8,0.3-1.3,0.8-2.1c0.8-1,2.3-1.3,3.4-0.5c0.3,0.3,0.3,0.3,0.5,0.5
c3.6,5,6.8,9.9,13,12c6.3,2.1,13,2.1,19,0c13.3-4.4,20.1-15.9,20.9-29.7c0-1,1-1.6,1.8-1.6c0.3,0,0.5,0,0.8,0.3
c5.5,4.2,12.3,6.3,19,5.5c11.5-0.5,15.1-13.8,16.2-23.2c0-0.8,0.8-1.3,1.6-1c0.3,0,0.3,0,0.5,0.3c5.5,2.9,14.9,8.3,21.4,7.6
c6.5-0.8,12-9.6,12.8-15.1s2.3-6,5-0.8c1.6,3.4,1,7.3-1,10.2c-7.8,13.6-18.5,16.2-32.3,7.8c-0.5-0.3-1-0.3-1.3,0.3v0.3
c-4.7,17.5-19,22.4-35.7,20.6c-2.1-0.3-4.2,1-5,3.1c-3.1,8.9-7.3,13.6-12.8,21.1c-1.3,2.1-2.9,3.9-4.7,5.5
C415.8,672.3,400.1,657.2,389.7,643.9z" class="st5"></path>
<path d="M698.1,642.8c-3.6-2.1-8.1-3.1-12.3-2.9c-0.8,0-1.8,0-2.3-0.5c-6.5-3.9-12-9.6-15.9-16.2
c-1.3-2.3-1-5.2,0.5-7.3l9.9-13.3l16.7-12.5c1.3-1,3.4-0.8,4.4,0.5c0,0.3,0.3,0.3,0.3,0.5c5.5,11.2,8.3,23.7,8.1,36.2
c0,7.8-2.6,15.4-7.3,21.4c-0.3,0.5-1,0.8-1.8,0.5c-0.3,0-0.5-0.3-0.5-0.5c-0.3-0.3-0.3-0.5-0.3-1
C698.1,646.2,698.3,644.4,698.1,642.8z" class="st19"></path>
<path d="M280.7,593.8c7.3,7,11.5,7.6,12,1c2.3,9.1,0.3,15.6-6,19c-3.1,2.1-7.3,1-9.1-2.1c-0.5-1-1-2.1-1-3.1
c-0.3-0.8,0-1.8,0.3-2.3C278.9,602.4,280.2,598,280.7,593.8z" class="st20"></path>
<path d="M357.1,631.4l-5.7-6.3c-2.9-12.5,1.6-26.8,16.7-27.6c13.6-0.8,22.9,7.8,27.6,20.1c0.3,0.8,0.3,1.8,0,2.6
c-1.3,2.9-2.6,6-3.9,8.9c-1.3,2.9-3.6,5.2-6.5,6.5C376.4,640.5,367,639.2,357.1,631.4z" class="st3"></path>
<path d="M351.4,625.1l5.7,6.3c-1.3,0.5-2.9,0.3-3.9-0.5c-0.5-0.5-1.6-0.5-2.1,0c-1,0.8-2.3,1.3-3.9,1
c-7-1-11.5-2.1-13.8-2.6c-8.1-2.3-11.5-15.4-10.7-22.2c0-0.5,0.3-1,0.8-1.3c0.8-0.5,1.3-0.3,1.6,0.8c1.3,10.2,7.8,16.4,17.7,17.2
C345.6,624.3,348.5,624.8,351.4,625.1z" class="st5"></path>
<path d="M269.8,641.3c-6-5.7-2.3-13.8,2.9-18.2c0.8-0.5,1.6-0.8,2.3-1l12-0.8c0.8,0,1.3,0.3,1.6,1
c3.9,8.3-1.3,17.2-7.8,22.4c-0.8,0.5-1.6,0.8-2.6,0.5C275.3,644.9,272.1,643.3,269.8,641.3z" class="st2"></path>
<path d="M689.2,692.1c0.3,0.3,0,1-0.8,1.8c-2.3-1-3.9-0.8-4.7,0.8c-2.1,4.2-3.4,8.6-3.9,13c0.5-5-2.9-5.7-9.9-2.3
c-7.3,3.4-14.3,7.3-20.9,12c-3.6,2.6-11.2,5.5-22.4,9.1c-5.7,1.8-11.5,3.9-17.2,6.5s-11.2,5-16.7,7.3c-5.2,2.1-12,2.6-17.2,5.5
s-8.3,4.4-9.9,5c-3.4,1.3-6.8,2.6-9.6,4.2c-4.4,1.6-9.1,2.3-13.6,2.1c8.9-18.2,17.5-37.3,25.3-56.6c1-2.1,1.6-4.4,1.6-7
c1.8,0,3.6,0.3,5.2,1c11.5,1.6,28.4,0.3,36.8-8.6c0.5-0.3,0.8-1.3,0.8-3.1c0-1,0.3-1,0.8-0.3c0.5,0.8,0.5,1.8,0,2.6
c-0.3,0.5-0.3,1,0,1.6c0,0.3,0.3,0.5,0.5,0.3l0,0c1-0.5,2.1,0,2.6,1c0.3,0.3,0.3,0.8,0.3,1c-0.3,2.6-1.6,5-3.6,6.5
c-0.8,0.5-1.3,1.3-1.6,2.3c-0.5,2.3-2.3,3.9-4.7,3.9c-0.8,0-1.6,0.5-2.3,1c-2.1,2.1-3.6,5-4.4,7.8c-0.3,1-1,1.8-1.8,2.1
c-2.3,0.8-4.4,2.6-5.5,4.7c-0.3,0.5-0.3,0.8,0.5,0.5c0.5-0.3,0.8,0,1.3,0.3c0.3,0,0.5,0.5,0.5,1c0,0.3-0.3,0.3-0.3,0.3
c-0.8,1-1.3,2.1-1.6,3.1c-0.3,0.8,0,1.3,1,1l6-1.3c1-0.3,1.6,0.3,1.6,1.3c0,0.3,0,0.8-0.3,1c-0.5,0.8-0.3,1,0.5,0.8l13.8-2.3
c0.8,0,1.3-0.5,1.6-1.3l3.1-6.3c0.3-0.8,1-1.3,1.8-1.8l7.8-3.1c0.8-0.3,1.3-0.8,1.3-1.6c0.3-1.3,0.5-2.3,1-3.6
c2.3-5.5,5-10.7,7.8-15.9c0.5-0.8,0.3-1.8-0.3-2.3c0,0-0.3,0-0.3-0.3c-0.5-0.3-1-0.8-1.3-1.6c-0.5-0.8-0.5-1.6,0.3-2.3
c1.3-1.3,2.9-1.8,4.7-1.6c-0.3,0.5-0.8,1-1.3,1.6c-1.3,0.8-1,1,0.3,1c3.1-0.3,6.3-1,9.4-2.3c7-2.6,13.6-6,20.1-9.6
c2.3-0.8,4.4-2.1,6.3-3.6c0.5-0.8,1.6-1.3,2.3-1.6c5.5-1.6,9.9-5.5,12.3-10.7c1-1.8,2.6-3.1,4.4-4.2c1.3-0.8,1.8-0.5,1.3,1
c-0.3,0.5-0.3,1,0,1.6s0.3,1-0.3,1.6c-6,9.1-9.9,19.3-11.2,30.2C685.3,690,686.6,691.8,689.2,692.1z" class="st17"></path>
<path d="M580.2,674.4c-2.1,3.1-5.7,4.7-9.4,4.2c-4.4-0.8-9.1-1.8-13.3-3.6c-5.2-7.6-5-17.7,6.3-19.3
c4.4-1,9.1,1,11.5,5C577.9,664.7,579.7,669.4,580.2,674.4z" class="st21"></path>
<path d="M587.5,671l-10.4,19.5c-10.7-1-17.2-6.5-19.5-15.9c4.2,1.8,8.6,3.1,13.3,3.6c3.6,0.3,7.3-1.3,9.4-4.2
c1-2.1,1.3-4.2,1.3-6.5c0-0.3,0-0.5,0.3,0C583.1,671.2,584.9,672.3,587.5,671z" class="st17"></path>
<path d="M611,686.1c-8.3,8.9-25.5,10.2-36.8,8.6c-1-3.6,0-5.2,2.9-4.2l10.4-19.5c7.6-0.8,13.3,1.3,17.5,6.3
C607.3,679.8,609.4,683,611,686.1z" class="st19"></path>
<path d="M561,688.2c2.9,1.3,5.5,3.1,7.8,5.5c-0.3,2.3-0.8,4.7-1.6,7c-7.8,19.3-16.2,38.3-25.3,56.6
c-2.9,6.5-7,12-12.8,16.2c-2.1-0.8-4.4-1-6.8-1c-16.2,1.3-32.3,2.6-48.5,3.9c-6.3,0.5-13.6,0.8-21.4,0.8c-7,0-14.3,0-21.4,0.3
c-28.9-1.3-56-10.2-83.2-19.8c-7.8-2.9-15.4-6.8-22.2-11.7c-9.9-6.5-18.8-14.3-26.1-23.7c17.7,1.8,35.7,2.9,53.4,2.9
c55-0.3,113.6-7.6,175.9-22.2C543.2,699.4,553.9,694.7,561,688.2z" class="st5"></path>
<path d="M688.4,693.9c-0.3,4.4-1.3,8.6-3.4,12.3c-0.5,0.8-0.5,1.6-0.5,2.3v3.9c-0.3-1-1-1.6-2.1-1.6
c-0.8,0-1.6-0.5-1.8-1.3l-1-2.1c0.5-4.4,1.8-8.9,3.9-13C684.5,693.1,686.1,692.9,688.4,693.9z" class="st13"></path>
<path d="M679.8,707.7l1,2.1c0.3,0.8,1,1.3,1.8,1.3c1,0,1.8,0.5,2.1,1.6c-0.3,1-0.3,1.6,0,1.8
c-1.3-1.3-2.1-1.6-2.9-0.8c-6.5,10.2-13,20.1-19.8,29.7c-2.9,4.2-5.2,8.6-7,13.3c-1.6,5-4.2,9.4-7.6,13c-5,5.5-9.9,10.7-14.9,16.2
c-0.5,0.5-1.3,1-2.1,1c-1.6,0.3-2.9,0.8-4.2,1.6c-0.8,0.5-0.8,1,0,1.8c2.1,1.8,5,1.6,8.9-0.8c-1.3,1.3-2.9,2.3-4.7,2.6l-30.2,0.3
c-3.1-7.3-8.6-10.4-15.9-9.6c-6,0.8-6.8,5.5-9.4,9.9h-22.4c-1.6,0-3.1-0.3-4.7-0.5l-4.7-0.8l-3.1-4.4l-11.5-10.7c0-1,0.5-1.8,1-2.6
c5.5-4.2,9.9-9.6,12.8-16.2c4.7,0.3,9.4-0.5,13.6-2.1c2.9-1.3,6.3-2.9,9.6-4.2c1.3-0.5,4.7-2.1,9.9-5c5.2-2.9,12-3.4,17.2-5.5
c5.2-2.1,11.2-5,16.7-7.3c5.5-2.6,11.2-4.7,17.2-6.5c11.5-3.6,19-6.8,22.4-9.1c6.5-4.7,13.6-8.6,20.9-12
C676.9,702,680.3,702.8,679.8,707.7z M657.4,747.3c1.8-4.7,2.1-9.9,0.5-14.6c-0.8-2.1-2.9-3.4-5-2.6c-8.9,2.6-16.2,8.9-20.1,17.2
c-1.3,2.9,0,6.3,2.9,7.6c0.3,0,0.3,0.3,0.5,0.3C646.2,758.8,653.5,756,657.4,747.3z" class="st11"></path>
<path d="M264.6,708c3.9,7,7,14.6,9.9,22.2c1,3.4,2.6,6.8,4.7,9.6c1.8,2.9,3.6,6,5.5,9.1c1,1.6,2.1,2.9,3.4,3.9
c1.3,1.3,2.6,2.6,3.4,4.2c0.5,0.8,1,1.3,1.8,1.6c1.8,0.5,3.9,0.8,5.7,0.5c5.2-0.5,10.2-2.1,15.1-4.2c0.8-0.3,1.8-0.5,2.6-0.5
c4.7,0,7.6-2.9,8.9-8.3c6.8,5,14.3,8.9,22.2,11.7c27.1,9.6,54.5,18.5,83.2,19.8c0.8,0,0.8,0.8,0,2.3l-11.2,8.3l-13.3,2.9l-32.3,1.6
c-9.4-5.5-16.2-8.6-20.6-9.4c-5.2-1.6-10.4,1.6-12,6.8c0,0.3,0,0.3,0,0.5c-0.8,2.1-2.3,2.6-4.7,2.1c-8.1,0.3-13.8-0.5-16.4-2.6
C294.3,771.1,269.3,740.8,264.6,708z" class="st11"></path>
<path d="M684.5,714.2c-2.6,9.6-5.2,19.5-7.8,29.5c-4.4,17.2-6,28.7-22.9,32.6c-2.9,0.5-5.5,1.6-7.8,3.1
c-2.3,1.8-4.7,3.6-6.8,5.5l-4.7,4.4c-3.6,2.3-6.8,2.6-8.9,0.8c-0.8-0.5-0.8-1.3,0-1.8c1.3-0.8,2.6-1.3,4.2-1.6c0.8,0,1.6-0.5,2.1-1
c4.7-5.2,9.6-10.7,14.9-16.2c3.4-3.9,6-8.3,7.6-13c1.8-4.7,4.2-9.1,7-13.3c6.8-9.6,13.6-19.3,19.8-29.7
C682.4,712.7,683.5,712.9,684.5,714.2z M666.8,745.3L653,769.8c0,0.3,0,0.5,0.3,0.5l0,0c3.9,2.1,10.2-1.6,14.1-8.1l0.5-0.8
c3.9-6.8,3.9-14.1,0-16.2l0,0C667.3,745,667,745,666.8,745.3L666.8,745.3z" class="st8"></path>
<path d="M657.4,747.3c-3.9,8.6-11.2,11.2-21.4,7.8c-3.1-1-4.7-4.2-3.6-7.3c0-0.3,0.3-0.3,0.3-0.5
c3.9-8.3,11.2-14.6,20.1-17.2c2.1-0.8,4.4,0.5,5,2.6C659.5,737.4,659.2,742.7,657.4,747.3z" class="st4"></path>
<path d="M666.8,745.3c0-0.3,0.3-0.3,0.5,0l0,0c3.9,2.3,3.9,9.4,0,16.2l-0.5,0.8c-3.9,6.8-10.2,10.4-14.1,8.1l0,0
c-0.3,0-0.3-0.3-0.3-0.5L666.8,745.3z" class="st11"></path>
<path d="M752.3,790.4c0.3-0.3,0.3,0.5-0.5,2.1l-54.7-0.5c-6.8,0.5-9.9-0.5-9.4-3.4c8.3-10.9,20.3-19,33.6-22.7
c4.4-1.3,8.6-2.3,12.5,1c7.3,6.3,11.5,10.4,12.5,12.8C748.1,783.1,750.2,786.7,752.3,790.4z" class="st22"></path>
<path d="M529.4,773.4c-0.5,0.8-0.8,1.6-1,2.6c-15.1,0.8-30.2,1.6-45.4,2.6c-15.4,1-31.3,1-46.9,1.3
c-0.5,0-1.3,0.3-1.8,0.3c-1,0.3-2.1,0-3.1-0.8c0.5-1.3,0.5-2.1,0-2.3c7.3-0.3,14.3-0.3,21.4-0.3c7.8,0,15.1-0.3,21.4-0.8
c16.2-1.3,32.3-2.6,48.5-3.9C524.7,772.4,527.1,772.6,529.4,773.4z" class="st23"></path>
<path d="M528.4,776l11.5,10.7c0,0.3,0,0.5,0,1c0,0.5-0.5,1-1.3,1L419.9,788l11.2-8.3c0.8,0.5,2.1,0.8,3.1,0.8
c0.8-0.3,1.6-0.3,2.1-0.5c15.6-0.5,31.5-0.5,46.9-1.3S513.2,776.8,528.4,776z" class="st24"></path>
<path d="M600,792.2l-25.3,0.3c2.6-4.4,3.4-9.1,9.4-9.9C591.4,781.8,596.7,784.9,600,792.2z" class="st21"></path>
<path d="M374.3,792.4l-37.3-0.3c2.6,0.5,3.9,0,4.7-2.1c1.3-5.2,6.3-8.3,11.5-7.3c0.3,0,0.3,0,0.5,0
C358.2,783.8,364.9,787,374.3,792.4z" class="st4"></path>
<path d="M639.4,784.9c0,1.6,0.3,2.3,0.5,2.3c10.4,0.8,25.3,1.6,44.3,1.8c1.3,0.3,2.6,0,3.6-0.5
c-0.5,2.9,2.6,3.9,9.4,3.4l-67,0.3c1.8-0.3,3.4-1.3,4.7-2.6L639.4,784.9z" class="st25"></path>
<path d="M539.6,787l3.1,4.4l-136.1-0.3l13.3-2.9l118.6,0.8c0.5,0,1-0.5,1.3-1C539.8,787.5,539.8,787.2,539.6,787z" class="st26"></path>
<path d="M820.6,788.5c-0.5,1.3-0.8,2.9-0.5,4.2l-68.3-0.5c0.5-1.6,0.8-2.3,0.5-2.1L820.6,788.5z" class="st25"></path>
<path d="M217.7,791.4c0.8-0.8,1-1.6,0.8-1.8l97.7-0.8c0.8,0,1,0.3,0.8,1v0.8c-0.3,0.8-0.8,1.6-1.8,1.6L217.7,791.4z" class="st25"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 80 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 80 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 96 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 70 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 68 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 78 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -0,0 +1,99 @@
<script lang="ts">
import {defineComponent} from 'vue';
export default defineComponent({
name: "BoxDog"
});
</script>
<template>
<body translate="no">
<div class="container">
<div class="box">
<div class="sign"></div>
</div>
<div class="dog">
<div class="dog-group">
<div class="tongue-open"></div>
<div class="body-group">
<div class="dog-box">
<div class="dog-box-sign">
<div class="content"></div>
</div>
<div class="bottom-shadow"></div>
<div class="top-left-shadow"></div>
</div>
<div class="tail-group">
<div class="tail">
<div class="tail">
<div class="tail">
<div class="tail">
<div class="tail">
<div class="tail">
<div class="tail last"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="dog-shape"></div>
</div>
<div class="head-group">
<div class="ear">
<div class="ear-container">
<div class="ear-left"></div>
</div>
</div>
<div class="head"></div>
<div class="ear right">
<div class="ear-container">
<div class="ear-right"></div>
</div>
</div>
<div class="face">
<div class="muzzle">
<div class="nose"></div>
<div class="mouth-close"></div>
<div class="mouth-open">
<div class="teeth"></div>
</div>
<div class="mouth-barks"></div>
</div>
<div class="eyes">
<div class="eye-left">
<div class="pupil"></div>
</div>
<div class="eye-right">
<div class="pupil"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="plant-group">
<div class="pot"></div>
<div class="plant">
<div class="stem">
<div class="leaf"></div>
<div class="leaf"></div>
<div class="leaf"></div>
<div class="leaf"></div>
<div class="leaf"></div>
</div>
</div>
</div>
<div class="shapes">
<div class="red-shape"></div>
<div class="blue-shape"></div>
<div class="yellow-shape"></div>
</div>
</div>
</body>
</template>
<style src="./index.scss" scoped>
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,19 @@
<script lang="ts">
import {defineComponent} from 'vue';
export default defineComponent({
name: "DynamicTitle"
});
</script>
<template>
<div>
<h1>
<span></span><span></span><span></span><span></span><span></span><span></span>
</h1>
</div>
</template>
<style src="./index.scss" scoped>
</style>

View File

@@ -0,0 +1,80 @@
/* vietnamese */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 300;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bOjM7sfA.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 300;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bPjM7sfA.woff2") format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 300;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 600;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bOjM7sfA.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 600;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bPjM7sfA.woff2") format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 600;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 700;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bOjM7sfA.woff2") format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 700;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bPjM7sfA.woff2") format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Signika';
font-style: normal;
font-weight: 700;
src: url("@/assets/fonts/vEFO2_JTCgwQ5ejvMV0Ox_Kg1UwJ0tKfX6bBjM4.woff2") format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@@ -0,0 +1,155 @@
@import url("fonts.scss");
h1 {
font-size: 5em;
font: bold 2.5vw/1.6 'Signika', sans-serif;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
h1 span {
display: inline-block;
-webkit-animation: float .2s ease-in-out infinite;
animation: float .2s ease-in-out infinite;
}
@-webkit-keyframes float {
0%, 100% {
transform: none;
}
33% {
transform: translateY(-1px) rotate(-2deg);
}
66% {
transform: translateY(1px) rotate(2deg);
}
}
@keyframes float {
0%, 100% {
transform: none;
}
33% {
transform: translateY(-1px) rotate(-2deg);
}
66% {
transform: translateY(1px) rotate(2deg);
}
}
body:hover span {
-webkit-animation: bounce .6s;
animation: bounce .6s;
}
@-webkit-keyframes bounce {
0%, 100% {
transform: translate(0);
}
25% {
transform: rotateX(20deg) translateY(2px) rotate(-3deg);
}
50% {
transform: translateY(-20px) rotate(3deg) scale(1.1);
}
}
@keyframes bounce {
0%, 100% {
transform: translate(0);
}
25% {
transform: rotateX(20deg) translateY(2px) rotate(-3deg);
}
50% {
transform: translateY(-20px) rotate(3deg) scale(1.1);
}
}
span:nth-child(4n) {
color: hsl(50, 75%, 55%);
text-shadow: 1px 1px hsl(50, 75%, 45%), 2px 2px hsl(50, 45%, 45%), 3px 3px hsl(50, 45%, 45%), 4px 4px hsl(50, 75%, 45%);
}
span:nth-child(4n-1) {
color: hsl(135, 35%, 55%);
text-shadow: 1px 1px hsl(135, 35%, 45%), 2px 2px hsl(135, 35%, 45%), 3px 3px hsl(135, 35%, 45%), 4px 4px hsl(135, 35%, 45%);
}
span:nth-child(4n-2) {
color: hsl(155, 35%, 60%);
text-shadow: 1px 1px hsl(155, 25%, 50%), 2px 2px hsl(155, 25%, 50%), 3px 3px hsl(155, 25%, 50%), 4px 4px hsl(140, 25%, 50%);
}
span:nth-child(4n-3) {
color: hsl(30, 65%, 60%);
text-shadow: 1px 1px hsl(30, 45%, 50%), 2px 2px hsl(30, 45%, 50%), 3px 3px hsl(30, 45%, 50%), 4px 4px hsl(30, 45%, 50%);
}
h1 span:nth-child(2) {
-webkit-animation-delay: .05s;
animation-delay: .05s;
}
h1 span:nth-child(3) {
-webkit-animation-delay: .1s;
animation-delay: .1s;
}
h1 span:nth-child(4) {
-webkit-animation-delay: .15s;
animation-delay: .15s;
}
h1 span:nth-child(5) {
-webkit-animation-delay: .2s;
animation-delay: .2s;
}
h1 span:nth-child(6) {
-webkit-animation-delay: .25s;
animation-delay: .25s;
}
h1 span:nth-child(7) {
-webkit-animation-delay: .3s;
animation-delay: .3s;
}
h1 span:nth-child(8) {
-webkit-animation-delay: .35s;
animation-delay: .35s;
}
h1 span:nth-child(9) {
-webkit-animation-delay: .4s;
animation-delay: .4s;
}
h1 span:nth-child(10) {
-webkit-animation-delay: .45s;
animation-delay: .45s;
}
h1 span:nth-child(11) {
-webkit-animation-delay: .5s;
animation-delay: .5s;
}
h1 span:nth-child(12) {
-webkit-animation-delay: .55s;
animation-delay: .55s;
}
h1 span:nth-child(13) {
-webkit-animation-delay: .6s;
animation-delay: .6s;
}
h1 span:nth-child(14) {
-webkit-animation-delay: .65s;
animation-delay: .65s;
}

View File

@@ -2,6 +2,7 @@
import {createI18n} from 'vue-i18n';
import zh from './language/zh.ts';
import en from './language/en.ts';
import {parse} from "zipson/lib";
const messages = {
en,
@@ -9,12 +10,14 @@ const messages = {
};
const language = (navigator.language || 'en').toLocaleLowerCase(); // 这是获取浏览器的语言
const i18n = createI18n({
const language: string = (navigator.language || 'en').toLocaleLowerCase(); // 获取浏览器的语言
const lang: string = localStorage.getItem("lang") as string;
const i18n: any = createI18n({
legacy: false,
compositionOnly: false,
globalInjection: true,
silentTranslationWarn: true,
locale: JSON.parse(localStorage.getItem("lang") as string).lang || language.split('-')[0] || 'zh', // 首先从缓存里拿,没有的话就用浏览器语言,
locale: parse(lang).lang || language.split('-')[0] || 'zh', // 首先从缓存里拿,没有的话就用浏览器语言,
silentFallbackWarn: true,
missingWarn: true,
fallbackWarn: false,

View File

@@ -1,6 +1,40 @@
// en.ts
export default {
login: {
test: 'login',
title: 'Schisandra Cloud Album',
accountLogin: 'account login',
account: 'account',
accountValidate: "please enter your phone/account/email",
password: 'password',
passwordValidate: "please enter password",
autoLogin: "auto login",
forgotPassword: "forgot password",
loginAndRegister: "login/Register",
qrLogin: "QR login",
phoneLogin: "phone login",
phone: "phone number",
phoneValidate: 'please enter a valid phone number',
captchaValidate: 'please enter captcha number',
phoneCaptcha: "captcha",
sendCaptcha: "send captcha",
login: "login",
register: "register",
reSendCaptcha: " re-send",
passwordRule: "The password must be 6~18 characters and must contain letters, numbers and special symbols!"
},
error: {
networkError: 'Network error, please try again later',
400: 'request error (400)',
401: 'request unauthorized (401)',
403: 'request forbidden (403)',
404: 'request not found (404)',
408: 'request timeout (408)',
500: 'server error (500)',
501: 'not implemented (501)',
502: 'bad gateway (502)',
503: 'service unavailable (503)',
504: 'gateway timeout (504)',
505: 'http version not supported (505)',
other: 'connect error',
}
};

View File

@@ -1,9 +1,41 @@
// zh.ts
export default {
login: {
test: '登录',
title: '五味子云存储',
accountLogin: '账号登录',
account: '账号',
accountValidate: '请输入手机号/账号/邮箱',
password: "密码",
passwordValidate: "请输入密码",
autoLogin: "自动登录",
forgotPassword: "忘记密码",
loginAndRegister: "登录",
qrLogin: "扫码登录",
phoneLogin: "短信登录",
phone: "手机号",
phoneValidate: '请输入正确的手机号',
captchaValidate: '请输入验证码',
phoneCaptcha: "验证码",
sendCaptcha: "发送验证码",
login: "登录",
register: "注册",
reSendCaptcha: "重新发送",
passwordRule: "密码要6~18位字符且必须包含字母、数字和特殊符号"
},
error: {
networkError: '网络连接失败!',
400: '请求错误(400)',
401: '未授权,请重新登录(401)',
403: '拒绝访问(403)',
404: '请求出错(404)',
408: '请求超时(408)',
500: '服务器错误(500)',
501: '服务未实现(501)',
502: '网关错误(502)',
503: '服务不可用(503)',
504: '网关超时(504)',
505: 'HTTP版本不受支持(505)',
other: '连接出错',
}
};

View File

@@ -1,6 +1,6 @@
export default [
{
path: '/',
path: '/login',
name: 'login',
component: () => import('@/views/Login/LoginPage.vue'),
meta: {

View File

@@ -0,0 +1,11 @@
export default [
{
path: '/register',
name: 'register',
component: () => import('@/views/Register/RegisterPage.vue'),
meta: {
requiresAuth: false,
title: '注册页'
}
}
];

View File

@@ -0,0 +1,11 @@
export default [
{
path: '/test2',
name: 'test2',
component: () => import('@/views/TestI18n.vue'),
meta: {
requiresAuth: false,
title: '测试'
}
}
];

View File

@@ -3,15 +3,18 @@
import {createRouter, createWebHistory, Router, RouteRecordRaw} from 'vue-router';
import login from './modules/login';
import test from "@/router/modules/test.ts";
import test2 from "@/router/modules/testI18n.ts";
import useStore from "@/store";
import {message} from "ant-design-vue";
import {close, start} from '@/utils/nprogress/nprogress.ts';
import register from "@/router/modules/register.ts";
const routes: Array<RouteRecordRaw> = [
...login,
...test
...register,
...test,
...test2,
];
const router: Router = createRouter({

View File

@@ -1,11 +1,12 @@
import {defineStore} from 'pinia';
import {ref} from 'vue';
import pinia from "@/store/pinia.ts";
import {parse, stringify} from "zipson/lib";
export const langStore = defineStore(
'lang',
() => {
const lang = ref<string>('');
const lang = ref<string>('zh');
function setLang(value: string) {
lang.value = value;
@@ -23,11 +24,14 @@ export const langStore = defineStore(
},
{
// 开启数据持久化
persistedState: {
persist: {
key: 'lang',
storage: localStorage,
includePaths: ["lang"],
overwrite: true,
paths: ["lang"],
serializer: {
deserialize: parse,
serialize: stringify,
},
}
}
);

View File

@@ -2,6 +2,7 @@ import {defineStore} from 'pinia';
import {computed, ref} from 'vue';
import {theme} from 'ant-design-vue';
import variables from '@/assets/styles/colors.module.scss';
import {parse, stringify} from "zipson/lib";
/**
* theme 配置 开启持久化
@@ -21,6 +22,7 @@ export const useThemeStore = defineStore(
return {
token: {
colorPrimary: variables[themeName.value] || '#27ba9b',
borderRadius: 10,
colorSuccess: '#1dc779',
colorWarning: '#ffb302',
colorError: '#cf4444',
@@ -39,11 +41,14 @@ export const useThemeStore = defineStore(
return {themeName, themeConfig, darkMode, darkModeComp, setThemeName, toggleDarkMode};
},
{
persistedState: {
persist: {
key: 'theme',
storage: localStorage,
includePaths: ["themeName", "darkMode"],
overwrite: true,
paths: ["themeName", "darkMode"],
serializer: {
deserialize: parse,
serialize: stringify,
},
}
}
);

View File

@@ -1,6 +1,7 @@
import {defineStore} from 'pinia';
import {ref} from 'vue';
import {User} from "@/types/user";
import {parse, stringify} from "zipson/lib";
export const useAuthStore = defineStore(
@@ -29,11 +30,14 @@ export const useAuthStore = defineStore(
},
{
// 开启数据持久化
persistedState: {
persist: {
key: 'user',
storage: localStorage,
includePaths: ["user"],
overwrite: true,
paths: ["user"],
serializer: {
deserialize: parse,
serialize: stringify,
},
}
}
);

View File

@@ -1,14 +1,9 @@
import {createPinia, Pinia} from "pinia";
import {createPersistedStatePlugin} from "pinia-plugin-persistedstate-2";
import stringify from 'json-stringify-safe';
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import {App} from "vue";
const pinia: Pinia = createPinia();
const installPersistedStatePlugin = createPersistedStatePlugin({
serialize: (value) => stringify(value),
deserialize: (value) => JSON.parse(value),
});
pinia.use((context) => installPersistedStatePlugin(context));
pinia.use(piniaPluginPersistedstate)
export function setupStore(app: App<Element>) {
app.use(pinia);

10
src/types/user.d.ts vendored
View File

@@ -1,6 +1,14 @@
export interface User {
token?: string
userId?: string
}
export interface AccountLogin {
account?: string
password?: string;
}
export interface PhoneLogin {
phone?: string
captcha?: string;
}

View File

@@ -7,7 +7,7 @@ import {AxiosError, AxiosResponse} from "axios";
import {message} from "ant-design-vue";
import {localforageStorageAdapter} from "@/utils/alova/adapter/localforageStorageAdapter.ts";
import {handleCode} from "@/utils/errorCode/errorCodeHandler.ts";
import i18n from "@/locales";
export const service = createAlova({
timeout: 5000,
@@ -19,7 +19,7 @@ export const service = createAlova({
cacheFor: {
GET: {
mode: 'restore',
expire: 60 * 10 * 1000
expire: 10 * 1000
},
},
cacheLogger: import.meta.env.VITE_NODE_ENV === 'development',
@@ -29,6 +29,8 @@ export const service = createAlova({
const user = useStore().user;
method.config.headers.token = user.getUser()?.token;
}
const lang = useStore().lang;
method.config.headers['Accept-Language'] = lang.getLang();
},
// 响应拦截器
@@ -46,7 +48,7 @@ export const service = createAlova({
handleCode(response.status);
}
if (!window.navigator.onLine) {
message.error("网络连接失败").then();
message.error(i18n.global.t('error.networkError')).then();
return Promise.reject(error);
}
}

View File

@@ -1,11 +1,11 @@
import {message} from "ant-design-vue";
import i18n from "@/locales";
export function handleCode(code: number): void {
switch (code) {
case 400:
message
.open({
content: "请求错误(400)",
content: i18n.global.t("error.400"),
type: "error",
})
.then();
@@ -13,7 +13,7 @@ export function handleCode(code: number): void {
case 401:
message
.open({
content: "未授权,请重新登录(401)",
content: i18n.global.t("error.401"),
type: "error",
})
.then();
@@ -21,7 +21,7 @@ export function handleCode(code: number): void {
case 403:
message
.open({
content: "拒绝访问(403)",
content: i18n.global.t("error.403"),
type: "error",
})
.then();
@@ -29,7 +29,7 @@ export function handleCode(code: number): void {
case 404:
message
.open({
content: "请求出错(404)",
content: i18n.global.t("error.404"),
type: "error",
})
.then();
@@ -37,7 +37,7 @@ export function handleCode(code: number): void {
case 408:
message
.open({
content: "请求超时(408)",
content: i18n.global.t("error.408"),
type: "error",
})
.then();
@@ -45,7 +45,7 @@ export function handleCode(code: number): void {
case 500:
message
.open({
content: "服务器错误(500)",
content: i18n.global.t("error.500"),
type: "error",
})
.then();
@@ -53,7 +53,7 @@ export function handleCode(code: number): void {
case 501:
message
.open({
content: "服务未实现(501)",
content: i18n.global.t("error.501"),
type: "error",
})
.then();
@@ -61,7 +61,7 @@ export function handleCode(code: number): void {
case 502:
message
.open({
content: "网络错误(502)",
content: i18n.global.t("error.502"),
type: "error",
})
.then();
@@ -69,7 +69,7 @@ export function handleCode(code: number): void {
case 503:
message
.open({
content: "服务不可用(503)",
content: i18n.global.t("error.503"),
type: "error",
})
.then();
@@ -77,7 +77,7 @@ export function handleCode(code: number): void {
case 504:
message
.open({
content: "网络超时(504)",
content: i18n.global.t("error.504"),
type: "error",
})
.then();
@@ -85,7 +85,7 @@ export function handleCode(code: number): void {
case 505:
message
.open({
content: "HTTP版本不受支持(505)",
content: i18n.global.t("error.505"),
type: "error",
})
.then();
@@ -93,7 +93,7 @@ export function handleCode(code: number): void {
default:
message
.open({
content: `连接出错(${code})!`,
content: i18n.global.t("error.other") + `(${code})`,
type: "error",
})
.then();

View File

@@ -1,36 +1,280 @@
<template>
<div>
<AButton @click="handleClick"> {{ t('login.test') }}</AButton>
<AButton @click="changeLang('zh')"> 切换中文</AButton>
<AButton @click="changeLang('en')"> 切换英文</AButton>
<div class="login-main">
<div class="login-left">
<BoxDog/>
</div>
<div class="login-right">
<span class="login-right-title">{{ t("login.title") }}</span>
<ACard class="login-card" bordered :hoverable="false">
<ATabs :centered="false" size="large">
<!-- 短信登录 -->
<ATabPane key="phoneLogin">
<template #tab>
<span class="login-tab-span">
{{ t("login.phoneLogin") }}
</span>
</template>
<AForm ref="phoneLoginFormRef" :rules="rules" :model="phoneLoginForm">
<AFormItem
class="login-form-item"
name="phone">
<span class="login-card-span">{{ t("login.phone") }}</span>
<AInput v-model:value="phoneLoginForm.phone" class="login-form-input" size="large"
:placeholder=phoneValidate
>
<template #prefix>
<TabletOutlined/>
</template>
</AInput>
</AFormItem>
<AFormItem
class="login-form-item"
name="captcha">
<AFlex :vertical="true">
<span class="login-card-span">{{ t("login.phoneCaptcha") }}</span>
<AFlex :vertical="false" align="center" justify="center">
<AInput v-model:value="phoneLoginForm.captcha" size="large" :placeholder=captchaValidate>
<template #prefix>
<SafetyOutlined/>
</template>
</AInput>
<AButton v-if="!state.showCountDown" @click="sendCaptcha" style="margin-left: 10px" size="large">{{
t("login.sendCaptcha")
}}
</AButton>
<AButton v-if="state.showCountDown" disabled style="margin-left: 10px" size="large">{{
state.countDownTime
}}s{{ t("login.reSendCaptcha") }}
</AButton>
</AFlex>
</AFlex>
<ADatePicker/>
<ATimePicker/>
{{ data }}
</AFormItem>
<AFormItem>
<AFlex :vertical="false" justify="space-between">
<ACheckbox>{{ t("login.autoLogin") }}</ACheckbox>
<a>{{ t("login.forgotPassword") }}</a>
</AFlex>
</AFormItem>
<AFormItem>
<AButton @click="phoneLoginSubmit" type="primary" size="large" class="login-form-button">
{{ t("login.login") }}
</AButton>
</AFormItem>
</AForm>
<ADivider/>
<AFlex :vertical="false" align="center" justify="space-around">
<AButton class="login-form-bottom-button" :icon="h(QrcodeOutlined)">{{ t("login.qrLogin") }}</AButton>
<AButton class="login-form-bottom-button" :icon="h(QqOutlined)"></AButton>
<AButton class="login-form-bottom-button" :icon="h(GithubOutlined)"></AButton>
</AFlex>
</ATabPane>
<!-- 账号登录 -->
<ATabPane key="accountLogin">
<template #tab>
<span class="login-tab-span">
{{ t("login.accountLogin") }}
</span>
</template>
<AForm ref="accountLoginFormRef" :rules="rules" :model="accountLoginForm">
<AFormItem
class="login-form-item"
name="account">
<span class="login-card-span">{{ t("login.account") }}</span>
<AInput v-model:value="accountLoginForm.account" class="login-form-input" size="large"
:placeholder=accountValidate>
<template #prefix>
<user-outlined/>
</template>
</AInput>
</AFormItem>
<AFormItem
class="login-form-item"
name="password">
<AFlex :vertical="true">
<span class="login-card-span">{{ t("login.password") }}</span>
<AInputPassword v-model:value="accountLoginForm.password" class="login-form-input" size="large"
:placeholder=passwordValidate>
<template #prefix>
<SafetyOutlined/>
</template>
</AInputPassword>
</AFlex>
</AFormItem>
<AFormItem>
<AFlex :vertical="false" justify="space-between">
<ACheckbox>{{ t("login.autoLogin") }}</ACheckbox>
<a>{{ t("login.forgotPassword") }}</a>
</AFlex>
</AFormItem>
<AFormItem>
<AButton @click="accountLoginSubmit" type="primary" size="large" class="login-form-button">
{{
t("login.loginAndRegister")
}}
</AButton>
</AFormItem>
</AForm>
<ADivider/>
<AFlex :vertical="false" align="center" justify="space-around">
<AButton class="login-form-bottom-button" :icon="h(QrcodeOutlined)">{{ t("login.qrLogin") }}</AButton>
<AButton class="login-form-bottom-button" :icon="h(QqOutlined)"></AButton>
<AButton class="login-form-bottom-button" :icon="h(GithubOutlined)"></AButton>
</AFlex>
</ATabPane>
</ATabs>
<ATooltip placement="left">
<template #title>
<span>{{ t("login.qrLogin") }}</span>
</template>
<div class="login-right-qrcode"/>
</ATooltip>
</ACard>
</div>
</div>
</template>
<script setup lang="ts">
import {useRequest} from "alova/client";
import {getUserInfo} from "@/api/user";
import {Rule} from "ant-design-vue/lib/form";
import {h, onMounted, reactive, ref, UnwrapRef} from "vue";
import {AccountLogin, PhoneLogin} from "@/types/user";
import {GithubOutlined, QqOutlined, QrcodeOutlined} from "@ant-design/icons-vue";
import {useI18n} from "vue-i18n";
import useStore from "@/store";
import BoxDog from "@/components/BoxDog/BoxDog.vue";
const {t, locale} = useI18n();
const {data, send} = useRequest(getUserInfo, {
immediate: false
const {t} = useI18n();
const accountLoginFormRef = ref();
const phoneLoginFormRef = ref<any>();
// 账号登录表单数据
const accountLoginForm: UnwrapRef<AccountLogin> = reactive({
account: '',
password: '',
});
const handleClick = () => {
send();
// 手机登录表单数据
const phoneLoginForm: UnwrapRef<PhoneLogin> = reactive({
phone: '',
captcha: '',
});
// 表单验证提示
const accountValidate = ref<string>(t('login.accountValidate'));
const passwordValidate = ref<string>(t('login.passwordValidate'));
const phoneValidate = ref<string>(t('login.phoneValidate'));
const captchaValidate = ref<string>(t('login.captchaValidate'));
// 表单验证规则
const rules: Record<string, Rule[]> = {
account: [
{required: true, message: t('login.accountValidate'), trigger: 'change'},
],
password: [
{
required: true, message: t('login.passwordValidate'), trigger: 'change'
},
{
pattern: /^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{6,18}$/,
message: t('login.passwordRule'),
},
],
phone: [
{required: true, message: t('login.phoneValidate'), trigger: 'change'},
{pattern: /^1[2-9]\d{9}$/, message: t('login.phoneValidate')}
],
captcha: [
{
required: true, message: t('login.captchaValidate'), trigger: 'change'
}
]
};
const state = reactive({
countDownTime: 60,
showCountDown: false,
});
/**
* 验证码发送倒计时
*/
const countDown = () => {
const startTime = localStorage.getItem('startTimeSendCaptcha');
const nowTime = new Date().getTime();
let surplus: number = 60;
let timer: any;
if (startTime) {
surplus = 60 - Math.floor((nowTime - Number(startTime)) / 1000);
surplus = surplus <= 0 ? 0 : surplus;
} else {
localStorage.setItem('startTimeSendCaptcha', String(nowTime));
}
const lang = useStore().lang;
state.countDownTime = surplus;
async function changeLang(language: any) {
lang.setLang(language);
locale.value = language;
if (timer) {
clearInterval(timer);
}
timer = setInterval(() => {
if (state.countDownTime <= 0) {
localStorage.removeItem('startTimeSendCaptcha');
clearInterval(timer);
state.countDownTime = 60;
state.showCountDown = false;
} else {
state.countDownTime--;
state.showCountDown = true;
}
}, 1000);
};
onMounted(() => {
const sendEndTime = localStorage.getItem('startTimeSendCaptcha');
if (sendEndTime) {
state.showCountDown = true;
countDown();
}
});
/**
* 发送验证码
*/
async function sendCaptcha() {
phoneLoginFormRef.value
.validateFields("phone")
.then(() => {
countDown();
console.log('values');
})
.catch((error: any) => {
console.log('error', error);
});
}
/**
* 账号登录提交
*/
async function accountLoginSubmit() {
accountLoginFormRef.value
.validate()
.then(() => {
console.log('values', accountLoginForm);
})
.catch((error: any) => {
console.log('error', error);
});
}
/**
* 手机登录提交
*/
async function phoneLoginSubmit() {
phoneLoginFormRef.value
.validate()
.then(() => {
console.log('values', phoneLoginForm);
})
.catch((error: any) => {
console.log('error', error);
});
}
</script>
<style src="./index.scss" scoped>
@import "@/assets/styles/global.scss";
</style>

View File

@@ -0,0 +1,91 @@
.login-main {
display: flex;
flex-direction: row;
//background-color: rgb(238, 255, 238);
width: 100vw;
height: 100vh;
/* 加载背景图 */
background-image: url("@/assets/images/login-back.png");
/* 背景图垂直、水平均居中 */
background-position: center center;
/* 背景图不平铺 */
background-repeat: no-repeat;
/* 当内容高度大于图片高度时背景图像的位置相对于viewport固定 */
background-attachment: fixed;
/* 让背景图基于容器大小伸缩 */
background-size: cover;
.login-left {
width: 50%;
}
.login-right {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 50%;
height: 100%;
.login-right-title {
font-size: 32px;
font-weight: 600;
margin-bottom: 32px;
}
}
.login-card {
width: 440px;
height: 490px;
border-radius: 15px;
box-shadow: 0 2px 8px 0 rgba(0, 0, 0, .08);
.login-card-span {
color: #999ba1;
font-size: 12px;
}
.login-tab-span {
font-weight: bolder;
font-size: large
}
.login-form-input {
}
.login-form-item {
height: 70px;
}
.login-form-button {
width: 100%;
}
.login-right-qrcode {
position: absolute;
right: 0;
top: 0;
background-position: 50%;
background-size: cover;
background-repeat: no-repeat;
width: 72px;
height: 72px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAAAXNSR0IArs4c6QAACRtJREFUeF7tnU2IVWUYx5/3jE6mppvSFoVhH4RB6MxoQQTSMojAPjA3Qa1ahPQhQkZ+jLqRMnPXwnKjgbgwwU0bKQac0QGhGih1iHShdwxTwS+cOXHMq9fjvfd9n3Oe533fc+9/tuc5/+d5//8f5/Peuebz0WUbptJ0PeGvkg4YQzfS1FwmQ5cN0fk0pT8NmT8ood9nUe/Pn/X9MqG5MJOJAyJNiwNqG0pNSr8RmZ8SY/YM9g+PSk9zCyBAJG1rpHrGjCVpuuuh2b3frn126LLElHcAAkQSdlZEw5gLCdE305KZX29YcvjfMlPfAxAgKmNlBfc1NJFQsnaw78j3xpi0yAruAwgQFbGx8vsMTafeVRsHhv7mrqQpQICIa2P1640xtSRJVgwuOTLEWU1LgAARx8bOqL31SMAkH2ztG97luqK2AAEiVxs7rM6Y7Yv7Fqx52+ybtK3MChAgslnYodsN/bi474kVNoicAAJEHQqJbVnGbN/aP/JxuzJngACRze0O3Z4k77e7JmIBBIg6FJI2y8ourJOk55VWd2dsgABRN0JkatPS6UubPScqBBAg6j6IiGhoS//Iy/kn1oUBAkTdB1Fikvc29w9/17jyUgABoi6DyNBEbzLrmcYXsKUBAkTdBVFizMbN/SMb6qsWAQgQdRFExlyYO2v6gvrnicQAAkTdA1FC9OnmgaNfZisWBQgQdQlExoxt7R95TgUgQNQdEPWYZCD7jLX4EahuHz6o39kgGTJfbRkY+UQNIByJOh0g+nXLwNHnVQEKAdG8GQtp4OHX6ek5L9Dc3kfpgZ6ZokmuG112j96W/pG2+tx67rDXJ6/QxRtn6cSlYTp2/gDVro1zJYrVG0pnmxnz1QHyBVGPmUavPvYRLXvkDUpMUswUh724QHDrHUZoWTKVTtHIxH46dGY7TaY3y0g57WuS5E0vAGlDlMHz7lM76Mk5S50WXqaICwS3vsxs9X1PXTpKu0+uVofIULLeG0CaEL32+Bp6cd5bEt5bNbhAcOutAzgWHKnto4OntzlWFy0ze7wCpAFRds3z4aI9qqetRnu5QHDri0aZ3y87ne0cW6V6TWSMOeYdIGmIsuuel+a/I+W7VYcLBLfeOgCjYOjc3lvXQ2p/xvwVBCBJiFYv+oHmPbhQzaO8MBcIbr3kQmpXx2nH2EpJyZyW+ScYQFIQfbH4sPitejvHuUBw6yXTzm7xNx1fLil5j1b2cdegAElAxH0OY3OTq6ddLz2vTY+7PThAZSHiBmgziKunXS89r02Puz0KgMpAxA3QZhBXT7teel6bHnd7NAAVhYgboM0grp52vfS8Nj3u9qgAKgIRN0CbQdJ6+X7S+tJ6Nn/y26MDiAuRtIHSegCIi6RQvevniaQDl9YDQEJAFJFxgUg6cGk9AFQkecF9bBBJBy6tB4AEYSgq1Q4i6cCl9QBQ0dSF92sFkXTg0noASBiEMnLNIJIOXFoPAJVJXGHfPES2wKVH4L4c5dZrzyutH+VzINsiGyECQO3dygNs85a7vZIANT5sBEAAiAv9nfrsSDTYN+z1p6q4pyRufWEzWuyII5DF0TRNs3814g0iLhDcegAk7YCDnk+IuEBw6x2WyyrBEcjRLl8QcYHg1jsu17kMADlbReQDIi4Q3HrGcp1KAZCTTXeLbO/OmHLWcttdoHaA1gGVCyp7G9/OF58QASBlQkPJ+4IIAIVK2ENfHxABIA9BhmzR6sLadm1iA8N1TbY+rjpF55Hq32rOjrwGyi+2GUQ2Y4sGlu9t6wOAXB0IXJeHyBYsAHILrCuOQHUrGiECQG6A2Kq6CqDMjDpEAMiGhtv2rgOoDtG60WVtX8DiFAaA2jpgu8UHQADI6kCZb3tYxW8X2E6VrjpFgZbq39W38ZqvPWzBagfoCqBWXVdeA+XNtJ3O2pkPgLTQrJhuUYgAUMWC1hy3CEQASDORCmrbPpTG/YAYt95mGVdP+xoM10BNEmsHUdkAbUcsAGRzoCLbXd/i24DgAmezh6uHI5DNUcXtLm/xAZBiAJ0gbXuLD4A6IWXlNbR7iw+AlM3vFPlWb/EBUKck7GEdGUT5t/gAyIPxndSiyMPGxvVzgbN5J61n65ffjudAXMeIqAxE0oFL63HtAEBcx27XF4VIOnBpPa4dAIjrWEN9EYikA5fW49oBgLiO5eq5EEkHLq3HtQMAcR1rUs+BSDpwaT2uHQCI61iLeleIpAOX1uPaAYC4jrWpd4FIOnBpPa4dAIjrmKXe9u5MuB0BIGlHI9DjfAO27LgAqKyDke7v+g3YsuMDoLIORrx/s3dn0uMCIGlHI9ML+dse1yev0Kbjy1UdwUW0qr3/i4f6bY/a1XHaMbZSdYUASNXeu+J1iGynHMlxhs7tpUNntktK3qcFgFTtvVfc5297TKVTtHNsFdWujauuEACp2nu/uO17Z1LjHKnto4Ont0nJtdQBQOoW+4fo1KWjtPvkappMb6qvDgCpW9y8gcaRKDttjUzsv3Xd4wOebGUAKBBAWVsJiLJb9Ys3ztKJS8N07PwB9WuevF0AKCBA+Vv8wKMUag+ACtkmu5PLW3zZjnJqAEjOy1JKVYUIAJWKXXbnKkIEgGQZKK1WNYgAUOnI5QWqBBEAks9fRLEqEAEgkbh1RKoAEQDSyV5MNXaIAJBY1HpCMUMEgPRyF1WOFSIAJBqzrliMEAEg3czF1WODCACJR6wvGBNEAEg/b5UOsUAEgFTi9SMaA0QAyE/Wal1CQwSA1KL1JxwSIgDkL2fVTqEgAkCqsfoVDwERAPKbsXo33xABIPVI/TfwCREA8p+vl46+IAJAXuIM08QHRAAoTLbeumpDBIC8RRmukSZEAChcrl47a0EEgLzGGLaZBkQAKGym3rtLQwSAvEcYvqEkRAAofJ5BJpCCCAAFiS+OphIQAaA4sgw2RVmIAFCw6OJpXAYiABRPjkEnKQoRAAoaW1zNi0AEgOLKMPg0XIgAUPDI4huAAxEAii+/KCZyhQgARRFXnEO4QASA4swumqlsEAGgaKKKd5B2EAGgeHOLarJWEAGgqGKKe5hmEAGguDOLbro8RAAouojiH6gRIgAUf15RTliHCABFGU81hsog+g91FMPahGnaAwAAAABJRU5ErkJggg==);
cursor: pointer;
}
.login-right-qrcode:hover {
opacity: 0.9;
}
.login-form-bottom-button {
color: #999ba1;
}
.login-form-bottom-button:hover {
color: rgba(15, 15, 16, 0.3);
}
}
}

View File

@@ -0,0 +1,17 @@
<script lang="ts">
import {defineComponent} from 'vue';
export default defineComponent({
name: "RegisterPage"
});
</script>
<template>
<div>
</div>
</template>
<style src="./index.scss" scoped>
</style>

View File

36
src/views/TestI18n.vue Normal file
View File

@@ -0,0 +1,36 @@
<template>
<div>
<AButton @click="handleClick"> {{ t('login.test') }}</AButton>
<AButton @click="changeLang('zh')"> 切换中文</AButton>
<AButton @click="changeLang('en')"> 切换英文</AButton>
<ADatePicker/>
<ATimePicker/>
{{ data }}
</div>
</template>
<script setup lang="ts">
import {useRequest} from "alova/client";
import {getUserInfo} from "@/api/user";
import {useI18n} from "vue-i18n";
import useStore from "@/store";
const {t, locale} = useI18n();
const {data, send} = useRequest(getUserInfo, {
immediate: false
});
const handleClick = () => {
send();
};
const lang = useStore().lang;
async function changeLang(language: any) {
lang.setLang(language);
locale.value = language;
}
</script>
<style scoped>
</style>

View File

@@ -17,12 +17,14 @@
</AButtonGroup>
<div class="test">test</div>
</AConfigProvider>
<DynamicTitle/>
</div>
</template>
<script setup>
import variables from "@/assets/styles/colors.module.scss";
import useStore from "@/store/index.ts";
import DynamicTitle from "@/components/DynamicTitle/DynamicTitle.vue";
const app = useStore().theme;

3
src/vite-env.d.ts vendored
View File

@@ -13,7 +13,7 @@ interface ImportMeta {
}
declare module '*.vue' {
import type { DefineComponent } from 'vue';
import type {DefineComponent} from 'vue';
const component: DefineComponent<object, object, any>;
export default component;
}
@@ -22,6 +22,7 @@ declare module '*.svg' {
const content: any;
export default content;
}
declare module '*.svg'
declare module '*.png'
declare module '*.jpg'

View File

@@ -24,9 +24,11 @@
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"noImplicitAny": false,
"baseUrl": "./",
"types": [
"node"
"node",
"@intlify/unplugin-vue-i18n/messages"
],
"paths": {
"@": [

View File

@@ -7,6 +7,9 @@ import {nodePolyfills} from "vite-plugin-node-polyfills";
import Components from 'unplugin-vue-components/vite';
import {AntDesignVueResolver} from 'unplugin-vue-components/resolvers';
import AutoImport from 'unplugin-auto-import/vite';
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite';
import {dirname, resolve} from 'node:path';
import {fileURLToPath} from 'node:url';
export default defineConfig(({mode}: { mode: string }): object => {
const env: Record<string, string> = loadEnv(mode, process.cwd());
@@ -18,6 +21,11 @@ export default defineConfig(({mode}: { mode: string }): object => {
}
},
plugins: [vue(),
VueI18nPlugin({
/* options */
// locale messages resource pre-compile option
include: resolve(dirname(fileURLToPath(import.meta.url)), './src/locales/language/**'),
}),
Components({
dts: true,
dirs: ['src/components', 'src/views'],

307
yarn.lock
View File

@@ -238,10 +238,10 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@9.8.0", "@eslint/js@^9.8.0":
version "9.8.0"
resolved "https://registry.npmmirror.com/@eslint/js/-/js-9.8.0.tgz#ae9bc14bb839713c5056f5018bcefa955556d3a4"
integrity sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==
"@eslint/js@9.9.0", "@eslint/js@^9.9.0":
version "9.9.0"
resolved "https://registry.npmmirror.com/@eslint/js/-/js-9.9.0.tgz#d8437adda50b3ed4401964517b64b4f59b0e2638"
integrity sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==
"@eslint/object-schema@^2.1.4":
version "2.1.4"
@@ -258,6 +258,21 @@
resolved "https://registry.npmmirror.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570"
integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==
"@intlify/bundle-utils@^8.0.0":
version "8.0.0"
resolved "https://registry.npmmirror.com/@intlify/bundle-utils/-/bundle-utils-8.0.0.tgz#4e05153ac031bfc7adef70baedc9b0744a93adfd"
integrity sha512-1B++zykRnMwQ+20SpsZI1JCnV/YJt9Oq7AGlEurzkWJOFtFAVqaGc/oV36PBRYeiKnTbY9VYfjBimr2Vt42wLQ==
dependencies:
"@intlify/message-compiler" "^9.4.0"
"@intlify/shared" "^9.4.0"
acorn "^8.8.2"
escodegen "^2.1.0"
estree-walker "^2.0.2"
jsonc-eslint-parser "^2.3.0"
mlly "^1.2.0"
source-map-js "^1.0.1"
yaml-eslint-parser "^1.2.2"
"@intlify/core-base@10.0.0-beta.5":
version "10.0.0-beta.5"
resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-10.0.0-beta.5.tgz#6a04ecbe2ed346fd8f0d10acbbd6813c24a8f36d"
@@ -274,11 +289,42 @@
"@intlify/shared" "10.0.0-beta.5"
source-map-js "^1.0.2"
"@intlify/message-compiler@^9.4.0":
version "9.13.1"
resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.13.1.tgz#ff8129badf77db3fb648b8d3cceee87c8033ed0a"
integrity sha512-SKsVa4ajYGBVm7sHMXd5qX70O2XXjm55zdZB3VeMFCvQyvLew/dLvq3MqnaIsTMF1VkkOb9Ttr6tHcMlyPDL9w==
dependencies:
"@intlify/shared" "9.13.1"
source-map-js "^1.0.2"
"@intlify/shared@10.0.0-beta.5":
version "10.0.0-beta.5"
resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-10.0.0-beta.5.tgz#4b87237ba2091f53275368a7ecacc321b37cf258"
integrity sha512-g9bq5Y1bOcC9qxtNk4UWtF3sXm6Wh0fGISb7vD5aLyF7yQv7ZFjxQjJzBP2GqG/9+PAGYutqjP1GGadNqFtyAQ==
"@intlify/shared@9.13.1", "@intlify/shared@^9.4.0":
version "9.13.1"
resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.13.1.tgz#202741d11ece1a9c7480bfd3f27afcf9cb8f72e4"
integrity sha512-u3b6BKGhE6j/JeRU6C/RL2FgyJfy6LakbtfeVF8fJXURpZZTzfh3e05J0bu0XPw447Q6/WUp3C4ajv4TMS4YsQ==
"@intlify/unplugin-vue-i18n@^4.0.0":
version "4.0.0"
resolved "https://registry.npmmirror.com/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-4.0.0.tgz#b82fb1bb1a3b982d8f35d07729ca5337d6018269"
integrity sha512-q2Mhqa/mLi0tulfLFO4fMXXvEbkSZpI5yGhNNsLTNJJ41icEGUuyDe+j5zRZIKSkOJRgX6YbCyibTDJdRsukmw==
dependencies:
"@intlify/bundle-utils" "^8.0.0"
"@intlify/shared" "^9.4.0"
"@rollup/pluginutils" "^5.1.0"
"@vue/compiler-sfc" "^3.2.47"
debug "^4.3.3"
fast-glob "^3.2.12"
js-yaml "^4.1.0"
json5 "^2.2.3"
pathe "^1.0.0"
picocolors "^1.0.0"
source-map-js "^1.0.2"
unplugin "^1.1.0"
"@jridgewell/gen-mapping@^0.3.5":
version "0.3.5"
resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
@@ -469,10 +515,10 @@
resolved "https://registry.npmmirror.com/@types/json-stringify-safe/-/json-stringify-safe-5.0.3.tgz#7eea481de6f248249c1452b5e056ca55df537f1e"
integrity sha512-oNOjRxLfPeYbBSQ60maucaFNqbslVOPU4WWs5t/sHvAh6tyo/CThXSG+E24tEzkgh/fzvxyDrYdOJufgeNy1sQ==
"@types/node@^22.1.0":
version "22.1.0"
resolved "https://registry.npmmirror.com/@types/node/-/node-22.1.0.tgz#6d6adc648b5e03f0e83c78dc788c2b037d0ad94b"
integrity sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==
"@types/node@^22.2.0":
version "22.2.0"
resolved "https://registry.npmmirror.com/@types/node/-/node-22.2.0.tgz#7cf046a99f0ba4d628ad3088cb21f790df9b0c5b"
integrity sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==
dependencies:
undici-types "~6.13.0"
@@ -599,7 +645,26 @@
estree-walker "^2.0.2"
source-map-js "^1.2.0"
"@vue/compiler-dom@3.4.36", "@vue/compiler-dom@^3.4.0":
"@vue/compiler-core@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.37.tgz#55db3900e09424c65c39111a05a3c6e698f371e3"
integrity sha512-ZDDT/KiLKuCRXyzWecNzC5vTcubGz4LECAtfGPENpo0nrmqJHwuWtRLxk/Sb9RAKtR9iFflFycbkjkY+W/PZUQ==
dependencies:
"@babel/parser" "^7.24.7"
"@vue/shared" "3.4.37"
entities "^5.0.0"
estree-walker "^2.0.2"
source-map-js "^1.2.0"
"@vue/compiler-dom@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.37.tgz#a1fcf79e287cb828545082ff1afa8630480a3044"
integrity sha512-rIiSmL3YrntvgYV84rekAtU/xfogMUJIclUMeIKEtVBFngOL3IeZHhsH3UaFEgB5iFGpj6IW+8YuM/2Up+vVag==
dependencies:
"@vue/compiler-core" "3.4.37"
"@vue/shared" "3.4.37"
"@vue/compiler-dom@^3.4.0":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.36.tgz#32f5f65d1fb242211df2ddc65a336779cd8b974c"
integrity sha512-eEIjy4GwwZTFon/Y+WO8tRRNGqylaRlA79T1RLhUpkOzJ7EtZkkb8MurNfkqY6x6Qiu0R7ESspEF7GkPR/4yYg==
@@ -607,28 +672,28 @@
"@vue/compiler-core" "3.4.36"
"@vue/shared" "3.4.36"
"@vue/compiler-sfc@3.4.36":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.36.tgz#887809183a273dc0ef8337d5e84ef6a781727ccc"
integrity sha512-rhuHu7qztt/rNH90dXPTzhB7hLQT2OC4s4GrPVqmzVgPY4XBlfWmcWzn4bIPEWNImt0CjO7kfHAf/1UXOtx3vw==
"@vue/compiler-sfc@3.4.37", "@vue/compiler-sfc@^3.2.47":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.37.tgz#8afaf1a86cb849422c765d4369ba1e85fffe0234"
integrity sha512-vCfetdas40Wk9aK/WWf8XcVESffsbNkBQwS5t13Y/PcfqKfIwJX2gF+82th6dOpnpbptNMlMjAny80li7TaCIg==
dependencies:
"@babel/parser" "^7.24.7"
"@vue/compiler-core" "3.4.36"
"@vue/compiler-dom" "3.4.36"
"@vue/compiler-ssr" "3.4.36"
"@vue/shared" "3.4.36"
"@vue/compiler-core" "3.4.37"
"@vue/compiler-dom" "3.4.37"
"@vue/compiler-ssr" "3.4.37"
"@vue/shared" "3.4.37"
estree-walker "^2.0.2"
magic-string "^0.30.10"
postcss "^8.4.40"
source-map-js "^1.2.0"
"@vue/compiler-ssr@3.4.36":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.36.tgz#5881f9303ad6a4fdf04fb4238ebb483caf040707"
integrity sha512-Wt1zyheF0zVvRJyhY74uxQbnkXV2Le/JPOrAxooR4rFYKC7cFr+cRqW6RU3cM/bsTy7sdZ83IDuy/gLPSfPGng==
"@vue/compiler-ssr@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.37.tgz#b75e1c76c3184f86fa9f0ba4d61d13bc6afcbf8a"
integrity sha512-TyAgYBWrHlFrt4qpdACh8e9Ms6C/AZQ6A6xLJaWrCL8GCX5DxMzxyeFAEMfU/VFr4tylHm+a2NpfJpcd7+20XA==
dependencies:
"@vue/compiler-dom" "3.4.36"
"@vue/shared" "3.4.36"
"@vue/compiler-dom" "3.4.37"
"@vue/shared" "3.4.37"
"@vue/compiler-vue2@^2.7.16":
version "2.7.16"
@@ -657,50 +722,55 @@
muggle-string "^0.4.1"
path-browserify "^1.0.1"
"@vue/reactivity@3.4.36":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.36.tgz#f0797308b1639db7f303e91fdd20577ad538a817"
integrity sha512-wN1aoCwSoqrt1yt8wO0gc13QaC+Vk1o6AoSt584YHNnz6TGDhh1NCMUYgAnvp4HEIkLdGsaC1bvu/P+wpoDEXw==
"@vue/reactivity@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.37.tgz#5a199563eaab51ed9f94ddf0a82f9179bcc01676"
integrity sha512-UmdKXGx0BZ5kkxPqQr3PK3tElz6adTey4307NzZ3whZu19i5VavYal7u2FfOmAzlcDVgE8+X0HZ2LxLb/jgbYw==
dependencies:
"@vue/shared" "3.4.36"
"@vue/shared" "3.4.37"
"@vue/runtime-core@3.4.36":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.36.tgz#7d956671800b2567deebf4a5f92cb476404dfa94"
integrity sha512-9+TR14LAVEerZWLOm/N/sG2DVYhrH2bKgFrbH/FVt/Q8Jdw4OtdcGMRC6Tx8VAo0DA1eqAqrZaX0fbOaOxxZ4A==
"@vue/runtime-core@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.37.tgz#3fe734a666db7842bea4185a13f7697a2102b719"
integrity sha512-MNjrVoLV/sirHZoD7QAilU1Ifs7m/KJv4/84QVbE6nyAZGQNVOa1HGxaOzp9YqCG+GpLt1hNDC4RbH+KtanV7w==
dependencies:
"@vue/reactivity" "3.4.36"
"@vue/shared" "3.4.36"
"@vue/reactivity" "3.4.37"
"@vue/shared" "3.4.37"
"@vue/runtime-dom@3.4.36":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.36.tgz#e4eeeba2cb2b9645de45eebd023939a35fff5e30"
integrity sha512-2Qe2fKkLxgZBVvHrG0QMNLL4bsx7Ae88pyXebY2WnQYABpOnGYvA+axMbcF9QwM4yxnsv+aELbC0eiNVns7mGw==
"@vue/runtime-dom@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.37.tgz#219f84577027103de6ddc71351d8237c7c16adac"
integrity sha512-Mg2EwgGZqtwKrqdL/FKMF2NEaOHuH+Ks9TQn3DHKyX//hQTYOun+7Tqp1eo0P4Ds+SjltZshOSRq6VsU0baaNg==
dependencies:
"@vue/reactivity" "3.4.36"
"@vue/runtime-core" "3.4.36"
"@vue/shared" "3.4.36"
"@vue/reactivity" "3.4.37"
"@vue/runtime-core" "3.4.37"
"@vue/shared" "3.4.37"
csstype "^3.1.3"
"@vue/server-renderer@3.4.36":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.36.tgz#352138e6a31a5eeabcbb75e66f6919f607f8c870"
integrity sha512-2XW90Rq8+Y7S1EIsAuubZVLm0gCU8HYb5mRAruFdwfC3XSOU5/YKePz29csFzsch8hXaY5UHh7ZMddmi1XTJEA==
"@vue/server-renderer@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.37.tgz#d341425bb5395a3f6ed70572ea5c3edefab92f28"
integrity sha512-jZ5FAHDR2KBq2FsRUJW6GKDOAG9lUTX8aBEGq4Vf6B/35I9fPce66BornuwmqmKgfiSlecwuOb6oeoamYMohkg==
dependencies:
"@vue/compiler-ssr" "3.4.36"
"@vue/shared" "3.4.36"
"@vue/compiler-ssr" "3.4.37"
"@vue/shared" "3.4.37"
"@vue/shared@3.4.36", "@vue/shared@^3.4.0":
version "3.4.36"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.36.tgz#7551f41684966acb6a307152b49a8308e7f69203"
integrity sha512-fdPLStwl1sDfYuUftBaUVn2pIrVFDASYerZSrlBvVBfylObPA1gtcWJHy5Ox8jLEJ524zBibss488Q3SZtU1uA==
"@vue/shared@3.4.37":
version "3.4.37"
resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.37.tgz#4f4c08a2e73da512a77b47165cf59ffbc1b5ade8"
integrity sha512-nIh8P2fc3DflG8+5Uw8PT/1i17ccFn0xxN/5oE9RfV5SVnd7G0XEFRwakrnNFE/jlS95fpGXDVG5zDETS26nmg==
acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.11.3, acorn@^8.12.0, acorn@^8.12.1, acorn@^8.8.2, acorn@^8.9.0:
acorn@^8.11.3, acorn@^8.12.0, acorn@^8.12.1, acorn@^8.5.0, acorn@^8.8.2, acorn@^8.9.0:
version "8.12.1"
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248"
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
@@ -715,10 +785,10 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
alova@^3.0.5:
version "3.0.5"
resolved "https://registry.npmmirror.com/alova/-/alova-3.0.5.tgz#876bd7108d5fecf19de1425e59f695f4769933fe"
integrity sha512-cOE2nTPOp7sXLhf9cthdh90lT389C1akgJULMytuFeV1loriJr1YbT3LCw3qb/P3N+o/QtJ9WLH2ccr0vJ380A==
alova@^3.0.6:
version "3.0.6"
resolved "https://registry.npmmirror.com/alova/-/alova-3.0.6.tgz#71d181b6079dbdb51feec69ce540a44eb75231f6"
integrity sha512-Y922qs6ps+4+r73dYBlUM0HyOCZDi7jYktqcqH9mDD3phGo5/g3A0NwHcd8I9fUb7A4WuwUINes2iHXLG70Z6w==
dependencies:
"@alova/shared" "^1.0.4"
rate-limiter-flexible "^5.0.3"
@@ -1452,6 +1522,17 @@ escape-string-regexp@^5.0.0:
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
escodegen@^2.1.0:
version "2.1.0"
resolved "https://registry.npmmirror.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
dependencies:
esprima "^4.0.1"
estraverse "^5.2.0"
esutils "^2.0.2"
optionalDependencies:
source-map "~0.6.1"
eslint-plugin-vue@^9.27.0:
version "9.27.0"
resolved "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-9.27.0.tgz#c22dae704a03d9ecefa81364ff89f60ce0481f94"
@@ -1482,7 +1563,7 @@ eslint-scope@^8.0.2:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
@@ -1492,16 +1573,16 @@ eslint-visitor-keys@^4.0.0:
resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
eslint@9.x:
version "9.8.0"
resolved "https://registry.npmmirror.com/eslint/-/eslint-9.8.0.tgz#a4f4a090c8ea2d10864d89a6603e02ce9f649f0f"
integrity sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==
eslint@9.9.0:
version "9.9.0"
resolved "https://registry.npmmirror.com/eslint/-/eslint-9.9.0.tgz#8d214e69ae4debeca7ae97daebbefe462072d975"
integrity sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.11.0"
"@eslint/config-array" "^0.17.1"
"@eslint/eslintrc" "^3.1.0"
"@eslint/js" "9.8.0"
"@eslint/js" "9.9.0"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.3.0"
"@nodelib/fs.walk" "^1.2.8"
@@ -1541,7 +1622,7 @@ espree@^10.0.1, espree@^10.1.0:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^4.0.0"
espree@^9.3.1:
espree@^9.0.0, espree@^9.3.1:
version "9.6.1"
resolved "https://registry.npmmirror.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
@@ -1550,6 +1631,11 @@ espree@^9.3.1:
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
esprima@^4.0.1:
version "4.0.1"
resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.4.0, esquery@^1.5.0:
version "1.6.0"
resolved "https://registry.npmmirror.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7"
@@ -1604,7 +1690,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.2:
fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -2071,6 +2157,21 @@ json-stringify-safe@^5.0.1:
resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
json5@^2.2.3:
version "2.2.3"
resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
jsonc-eslint-parser@^2.3.0:
version "2.4.0"
resolved "https://registry.npmmirror.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461"
integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==
dependencies:
acorn "^8.5.0"
eslint-visitor-keys "^3.0.0"
espree "^9.0.0"
semver "^7.3.5"
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
@@ -2263,7 +2364,7 @@ minimatch@^9.0.3, minimatch@^9.0.4, minimatch@^9.0.5:
dependencies:
brace-expansion "^2.0.1"
mlly@^1.4.2, mlly@^1.7.1:
mlly@^1.2.0, mlly@^1.4.2, mlly@^1.7.1:
version "1.7.1"
resolved "https://registry.npmmirror.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f"
integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==
@@ -2506,7 +2607,7 @@ pathe@^0.2.0:
resolved "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339"
integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==
pathe@^1.1.2:
pathe@^1.0.0, pathe@^1.1.2:
version "1.1.2"
resolved "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
@@ -2522,7 +2623,7 @@ pbkdf2@^3.0.3, pbkdf2@^3.1.2:
safe-buffer "^5.0.1"
sha.js "^2.4.8"
picocolors@^1.0.1:
picocolors@^1.0.0, picocolors@^1.0.1:
version "1.0.1"
resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
@@ -2537,12 +2638,10 @@ pify@^4.0.1:
resolved "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
pinia-plugin-persistedstate-2@^2.0.23:
version "2.0.23"
resolved "https://registry.npmmirror.com/pinia-plugin-persistedstate-2/-/pinia-plugin-persistedstate-2-2.0.23.tgz#503eb7254230de531cfe2c815ae492f770b09c2e"
integrity sha512-m2Py5Ntp1uyISTMpJsl30HCuOzhEuhVd2aYaVEZvd8wPMoHzbUoP80zoIgoKthQKj/NpvyfWXoM1T+s1EpPUiQ==
dependencies:
shvl "^3.0.0"
pinia-plugin-persistedstate@^3.2.1:
version "3.2.1"
resolved "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.1.tgz#66780602aecd6c7b152dd7e3ddc249a1f7a13fe5"
integrity sha512-MK++8LRUsGF7r45PjBFES82ISnPzyO6IZx3CH5vyPseFLZCk1g2kgx6l/nW8pEBKxxd4do0P6bJw+mUSZIEZUQ==
pinia@^2.2.1:
version "2.2.1"
@@ -2581,7 +2680,7 @@ postcss-selector-parser@^6.0.15:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
postcss@^8.4.39, postcss@^8.4.40:
postcss@^8.4.40:
version "8.4.41"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681"
integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==
@@ -2823,7 +2922,7 @@ semver@^5.6.0:
resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
semver@^7.3.6, semver@^7.5.4, semver@^7.6.0:
semver@^7.3.5, semver@^7.3.6, semver@^7.5.4, semver@^7.6.0:
version "7.6.3"
resolved "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
@@ -2870,11 +2969,6 @@ shebang-regex@^3.0.0:
resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
shvl@^3.0.0:
version "3.0.0"
resolved "https://registry.npmmirror.com/shvl/-/shvl-3.0.0.tgz#63b8e888730c24a779f8c574305924a144efc35e"
integrity sha512-5IomAM3ykE/g9K9L6lhODc+TpCuN03rrhlboegeKyyfh66DDdpRD5JN37DYhNHH+RaYjiIDx64K/Ms/xQYOR5w==
side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
@@ -2890,7 +2984,7 @@ slash@^3.0.0:
resolved "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.0:
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0:
version "1.2.0"
resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
@@ -2903,7 +2997,7 @@ source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0, source-map@~0.6.0:
source-map@^0.6.0, source-map@~0.6.0, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -3120,6 +3214,16 @@ unplugin-vue-components@^0.27.3:
mlly "^1.7.1"
unplugin "^1.11.0"
unplugin@^1.1.0:
version "1.12.1"
resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.12.1.tgz#dc5834dc9337f47ddb7cf4cbbb9b8dac07e5bea4"
integrity sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==
dependencies:
acorn "^8.12.1"
chokidar "^3.6.0"
webpack-sources "^3.2.3"
webpack-virtual-modules "^0.6.2"
unplugin@^1.11.0, unplugin@^1.12.0:
version "1.12.0"
resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.12.0.tgz#a11d3eb565602190748b1f95ecc8590b0f7dcbb4"
@@ -3196,13 +3300,13 @@ vite-plugin-node-polyfills@^0.22.0:
"@rollup/plugin-inject" "^5.0.5"
node-stdlib-browser "^1.2.0"
vite@^5.3.4:
version "5.3.5"
resolved "https://registry.npmmirror.com/vite/-/vite-5.3.5.tgz#b847f846fb2b6cb6f6f4ed50a830186138cb83d8"
integrity sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==
vite@^5.4.0:
version "5.4.0"
resolved "https://registry.npmmirror.com/vite/-/vite-5.4.0.tgz#11dca8a961369ba8b5cae42d068c7ad684d5370f"
integrity sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.39"
postcss "^8.4.40"
rollup "^4.13.0"
optionalDependencies:
fsevents "~2.3.3"
@@ -3267,16 +3371,16 @@ vue-types@^3.0.0:
dependencies:
is-plain-object "3.0.1"
vue@^3.4.31:
version "3.4.36"
resolved "https://registry.npmmirror.com/vue/-/vue-3.4.36.tgz#b2d9af110c8e9afdf08f4eec0d9196949877447c"
integrity sha512-mIFvbLgjODfx3Iy1SrxOsiPpDb8Bo3EU+87ioimOZzZTOp15IEdAels70IjBOLO3ZFlLW5AhdwY4dWbXVQKYow==
vue@^3.4.37:
version "3.4.37"
resolved "https://registry.npmmirror.com/vue/-/vue-3.4.37.tgz#64ce0eeb8de16a29fb74e504777ee8c0c1cf229e"
integrity sha512-3vXvNfkKTBsSJ7JP+LyR7GBuwQuckbWvuwAid3xbqK9ppsKt/DUvfqgZ48fgOLEfpy1IacL5f8QhUVl77RaI7A==
dependencies:
"@vue/compiler-dom" "3.4.36"
"@vue/compiler-sfc" "3.4.36"
"@vue/runtime-dom" "3.4.36"
"@vue/server-renderer" "3.4.36"
"@vue/shared" "3.4.36"
"@vue/compiler-dom" "3.4.37"
"@vue/compiler-sfc" "3.4.37"
"@vue/runtime-dom" "3.4.37"
"@vue/server-renderer" "3.4.37"
"@vue/shared" "3.4.37"
warning@^4.0.0:
version "4.0.3"
@@ -3328,7 +3432,26 @@ xtend@^4.0.2:
resolved "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
yaml-eslint-parser@^1.2.2:
version "1.2.3"
resolved "https://registry.npmmirror.com/yaml-eslint-parser/-/yaml-eslint-parser-1.2.3.tgz#3a8ae839fc8df376ef8497add7f40942b493389c"
integrity sha512-4wZWvE398hCP7O8n3nXKu/vdq1HcH01ixYlCREaJL5NUMwQ0g3MaGFUBNSlmBtKmhbtVG/Cm6lyYmSVTEVil8A==
dependencies:
eslint-visitor-keys "^3.0.0"
lodash "^4.17.21"
yaml "^2.0.0"
yaml@^2.0.0:
version "2.5.0"
resolved "https://registry.npmmirror.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d"
integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
zipson@^0.2.12:
version "0.2.12"
resolved "https://registry.npmmirror.com/zipson/-/zipson-0.2.12.tgz#501f92e93f1c602ff908ad2c1c602e72746ecebb"
integrity sha512-+u+fyZQXJUJDTf4NGCChW+LoWGqCrhwHAfvtCtcmE0e40KmQt4YSP4l3TOay1WjRNv+VfODgBD/vNwaSSGnDwA==