From b2fa2b90b85f14bc0b1477ee09d9b38352487e91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B1=E7=9C=A0=E4=BB=AA=E5=BC=8F?= <854085467@qq.com> Date: Mon, 27 Sep 2021 06:09:33 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=85=B6=E4=BB=96]=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E9=A1=B9=E7=9B=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .browserslistrc | 3 + .eslintrc.js | 26 + .github/workflows/build docs.yml | 27 + .github/workflows/test.yml | 20 + .gitignore | 20 + .helperrc.js | 53 + .lintstagedrc | 4 + .postcssrc.json | 9 + .prettierrc | 4 + LICENSE | 20 + README.md | 102 + docs/docs/en-US/components/button.md | 700 +++ docs/docs/en-US/guide/home.md | 1 + docs/docs/en-US/guide/index.md | 5 + docs/docs/zh-CN/components/button.md | 32 + docs/docs/zh-CN/guide/home.md | 1 + docs/docs/zh-CN/guide/index.md | 5 + docs/index.html | 23 + docs/prerender.js | 47 + docs/public/favicon.ico | Bin 0 -> 4286 bytes docs/src/App.vue | 3 + docs/src/components/LayCode.vue | 152 + docs/src/entry-client.ts | 7 + docs/src/entry-server.ts | 51 + docs/src/layouts/Layout.vue | 25 + docs/src/main.ts | 25 + docs/src/plugin/common-plugins.ts | 47 + docs/src/plugin/create-container.ts | 33 + docs/src/plugin/demo.ts | 146 + docs/src/plugin/highlight.ts | 46 + docs/src/plugin/pre-wrapper.ts | 11 + docs/src/plugin/snippet.ts | 49 + docs/src/router/index.ts | 20 + docs/src/router/zh-CN.ts | 32 + docs/src/styles/code.css | 214 + docs/src/styles/custom-blocks.css | 71 + docs/src/styles/index.css | 4 + docs/src/styles/markdown.css | 220 + docs/src/styles/vars.css | 52 + docs/src/tsconfig.json | 4 + docs/vite.config.ts | 13 + jest.config.js | 27 + package.json | 98 + shims-vue.d.ts | 25 + src/css/layui.css | 6593 ++++++++++++++++++++++++++ src/font/iconfont.eot | Bin 0 -> 52080 bytes src/font/iconfont.svg | 387 ++ src/font/iconfont.ttf | Bin 0 -> 51904 bytes src/font/iconfont.woff | Bin 0 -> 33172 bytes src/font/iconfont.woff2 | Bin 0 -> 28556 bytes src/index.ts | 50 + src/module/body/index.ts | 9 + src/module/body/index.vue | 9 + src/module/button/index.ts | 9 + src/module/button/index.vue | 14 + src/module/footer/index.ts | 9 + src/module/footer/index.vue | 9 + src/module/header/index.ts | 9 + src/module/header/index.vue | 9 + src/module/icon/index.ts | 9 + src/module/icon/index.vue | 7 + src/module/layout/index.ts | 9 + src/module/layout/index.vue | 9 + src/module/logo/index.ts | 9 + src/module/logo/index.vue | 9 + src/module/radio/index.ts | 9 + src/module/radio/index.vue | 7 + src/module/side/index.ts | 9 + src/module/side/index.vue | 9 + src/module/type/index.ts | 1 + src/module/type/public.ts | 17 + tsconfig.json | 20 + vite.config.ts | 44 + 73 files changed, 9752 insertions(+) create mode 100644 .browserslistrc create mode 100644 .eslintrc.js create mode 100644 .github/workflows/build docs.yml create mode 100644 .github/workflows/test.yml create mode 100644 .gitignore create mode 100644 .helperrc.js create mode 100644 .lintstagedrc create mode 100644 .postcssrc.json create mode 100644 .prettierrc create mode 100644 LICENSE create mode 100644 README.md create mode 100644 docs/docs/en-US/components/button.md create mode 100644 docs/docs/en-US/guide/home.md create mode 100644 docs/docs/en-US/guide/index.md create mode 100644 docs/docs/zh-CN/components/button.md create mode 100644 docs/docs/zh-CN/guide/home.md create mode 100644 docs/docs/zh-CN/guide/index.md create mode 100644 docs/index.html create mode 100644 docs/prerender.js create mode 100644 docs/public/favicon.ico create mode 100644 docs/src/App.vue create mode 100644 docs/src/components/LayCode.vue create mode 100644 docs/src/entry-client.ts create mode 100644 docs/src/entry-server.ts create mode 100644 docs/src/layouts/Layout.vue create mode 100644 docs/src/main.ts create mode 100644 docs/src/plugin/common-plugins.ts create mode 100644 docs/src/plugin/create-container.ts create mode 100644 docs/src/plugin/demo.ts create mode 100644 docs/src/plugin/highlight.ts create mode 100644 docs/src/plugin/pre-wrapper.ts create mode 100644 docs/src/plugin/snippet.ts create mode 100644 docs/src/router/index.ts create mode 100644 docs/src/router/zh-CN.ts create mode 100644 docs/src/styles/code.css create mode 100644 docs/src/styles/custom-blocks.css create mode 100644 docs/src/styles/index.css create mode 100644 docs/src/styles/markdown.css create mode 100644 docs/src/styles/vars.css create mode 100644 docs/src/tsconfig.json create mode 100644 docs/vite.config.ts create mode 100644 jest.config.js create mode 100644 package.json create mode 100644 shims-vue.d.ts create mode 100644 src/css/layui.css create mode 100644 src/font/iconfont.eot create mode 100644 src/font/iconfont.svg create mode 100644 src/font/iconfont.ttf create mode 100644 src/font/iconfont.woff create mode 100644 src/font/iconfont.woff2 create mode 100644 src/index.ts create mode 100644 src/module/body/index.ts create mode 100644 src/module/body/index.vue create mode 100644 src/module/button/index.ts create mode 100644 src/module/button/index.vue create mode 100644 src/module/footer/index.ts create mode 100644 src/module/footer/index.vue create mode 100644 src/module/header/index.ts create mode 100644 src/module/header/index.vue create mode 100644 src/module/icon/index.ts create mode 100644 src/module/icon/index.vue create mode 100644 src/module/layout/index.ts create mode 100644 src/module/layout/index.vue create mode 100644 src/module/logo/index.ts create mode 100644 src/module/logo/index.vue create mode 100644 src/module/radio/index.ts create mode 100644 src/module/radio/index.vue create mode 100644 src/module/side/index.ts create mode 100644 src/module/side/index.vue create mode 100644 src/module/type/index.ts create mode 100644 src/module/type/public.ts create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.browserslistrc b/.browserslistrc new file mode 100644 index 00000000..b29aeba8 --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,3 @@ +current node +last 2 versions and > 2% +ie > 10 diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..60e16ae9 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,26 @@ +module.exports = { + env: { + browser: true, + node: true, + }, + parser: 'vue-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser', + sourceType: 'module', + ecmaVersion: 10, + }, + plugins: ['@typescript-eslint', 'prettier'], + extends: [ + 'eslint:recommended', + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + ], + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', + quotes: ['error', 'single'], + semi: ['error', 'never'], + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': 'off', + }, +} diff --git a/.github/workflows/build docs.yml b/.github/workflows/build docs.yml new file mode 100644 index 00000000..ca01066d --- /dev/null +++ b/.github/workflows/build docs.yml @@ -0,0 +1,27 @@ +name: build docs + +on: + push: + branches: [ master ] + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2.3.1 + with: + persist-credentials: false + + - name: Install and Build + run: | + npm install + npm run build:docs + - name: Deploy + uses: JamesIves/github-pages-deploy-action@3.6.2 + with: + GITHUB_TOKEN: ${{ secrets.TOKEN }} + BRANCH: gh-pages + FOLDER: docs/dist + CLEAN: true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 00000000..a5a3745a --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,20 @@ +name: test + +on: + pull_request: + branches: [ master ] + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2.3.1 + with: + persist-credentials: false + + - name: Install and Test + run: | + npm install + npm run test \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c89ed60e --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +.DS_Store +node_modules/ +dist/ +example/dist/ +lib/ +/types/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +yarn.lock +package-lock.json + + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/.helperrc.js b/.helperrc.js new file mode 100644 index 00000000..54245a3f --- /dev/null +++ b/.helperrc.js @@ -0,0 +1,53 @@ +const helper = require('components-helper') +const { name, version } = require('./package.json') + +helper({ + name, + version, + entry: 'docs/docs/en-US/components/*.md', + outDir: 'lib', + reComponentName, + reDocUrl, + reAttribute, + titleRegExp: '#+\\s+(.*)\n+>\\s*([^(#|\\n)]*)', + tableRegExp: + '#+\\s+(.*\\s*Props|.*\\s*Events|.*\\s*Slots|.*\\s*Directives)\\s*\\n+(\\|?.+\\|.+)\\n\\|?\\s*:?-+:?\\s*\\|.+((\\n\\|?.+\\|.+)+)', +}) + +function reComponentName(title) { + return 'ele-' + title.replace(/\B([A-Z])/g, '-$1').toLowerCase() +} + +function reDocUrl(fileName, header) { + // TODO: `zh-CN` -> `en-US` + const docs = 'https://gitee.com/Jmysy/layui-vue' + const _header = header ? header.replace(/[ ]+/g, '-') : undefined + return docs + fileName + (_header ? '#' + header : '') +} + +function reAttribute(value, key) { + if (key === 'Name' && /^(-|—)$/.test(value)) { + return 'default' + } else if (key === 'Name' && /v-model:(.+)/.test(value)) { + const _value = value.match(/v-model:(.+)/) + return _value ? _value[1] : undefined + } else if (key === 'Name' && /v-model/.test(value)) { + return 'model-value' + } else if (key === 'Name') { + return value.replace(/\B([A-Z])/g, '-$1').toLowerCase() + } else if (key === 'Type') { + return value + .replace(/\s*\/\s*/g, '|') + .replace(/\s*,\s*/g, '|') + .replace(/\(.*\)/g, '') + .toLowerCase() + } else if (value === '' || /^(-|—)$/.test(value)) { + return undefined + } else if (key === 'Options') { + return /\[.+\]\(.+\)/.test(value) || /^\*$/.test(value) + ? undefined + : value.replace(/`/g, '') + } else { + return value + } +} \ No newline at end of file diff --git a/.lintstagedrc b/.lintstagedrc new file mode 100644 index 00000000..9e87aea5 --- /dev/null +++ b/.lintstagedrc @@ -0,0 +1,4 @@ +{ + "*.{ts,vue,js,tsx,jsx}": ["prettier --write --no-verify ", "eslint --fix"], + "*.{html,css,md,json}": "prettier --write", +} \ No newline at end of file diff --git a/.postcssrc.json b/.postcssrc.json new file mode 100644 index 00000000..67ab504b --- /dev/null +++ b/.postcssrc.json @@ -0,0 +1,9 @@ +{ + "map": false, + "plugins": { + "postcss-preset-env": { + "stage": 1 + }, + "autoprefixer": {} + } +} \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..fd496a82 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "semi": false +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..5d5d01c2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright 2019 Jmys + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..3032dd3d --- /dev/null +++ b/README.md @@ -0,0 +1,102 @@ + + +a component library for Vue 3 base on element-plus + +

+ + Vue Version + + + Vue Router Version + + + Element Plus Version + +

+ +[开 发 文 档](https://jmysy.github.io/layui-vue) | [更 新 日 志](https://gitee.com/Jmysy/layui-vue/releases) | [常 见 问 题](https://gitee.com/Jmysy/layui-vue/issues) + +##### 📖 概述 + +Element Enhance 是基于 Element Plus 而开发的模板组件,提供了更高级别的抽象支持,开箱即用,更加专注于页面。 + +### Status: Beta + +This project is still under heavy development. Feel free to join us and make your first pull request. + +[![Edit layui-vue](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/layui-vue-template-vh9bg?fontsize=14&hidenavigation=1&theme=dark) + +##### 📢 理念 + +Element Plus 定义了基础的设计规范,对应也提供了大量的基础组件。但是对于中后台类应用,我们希望提供更高程度的抽象,提供更上层的设计规范,并且对应提供相应的组件使得开发者可以快速搭建出高质量的页面。 + +列表页应该可以用 EleLayout + EleTable 完成,编辑页应该使用 EleLayout + EleForm 完成,详情页可以用 EleLayout + EleDescriptions 完成。 一个页面在开发工程中只需要关注几个重型组件,降低心智负担,专注于更核心的业务逻辑。 + +##### ✒️ 特性 + +该组件库的开发理念就是面向未来,如果查看源码你就会发现像是 vue 3 的 [script setup](https://github.com/vuejs/rfcs/pull/227.) 实验性功能、像是 CSSNext 的 [CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/--*)。在保证大部分浏览器的兼容性的情况下,会更多的使用新特性、新功能来开发 + +##### 💡 计划 + +- [x] PageContainer: 为了减少繁杂的面包屑配置和标题。 +- [ ] StatisticCard: 指标卡结合统计数值用于展示某主题的核心指标。 +- [ ] Search: 有些是时候表单要与别的组件组合使用,需要一些特殊形态的表单。 + +##### ☁️ 入门 + +让 Element Plus 更简单, 更通用, 更流行 + + + +安装 + +``` +npm install element-plus --save + +npm install layui-vue --save +``` + +引入 + +```js +import { createApp } from 'vue' +import App from './App.vue' +import ElementEnhance from 'layui-vue' +import 'layui-vue/lib/style.css' +import ElementPlus from 'element-plus' +import 'element-plus/lib/theme-chalk/index.css' + +const app = createApp(App) + +app.use(ElementEnhance) +app.use(ElementPlus) +app.mount('#app') +``` + +使用 + +```vue + +``` + +效果 + +![输入图片说明](https://images.gitee.com/uploads/images/2021/0530/172502_95f955fc_4835367.png '屏幕截图.png') + +##### 🔥 案例 + +[Element Enhance Admin](https://gitee.com/Jmysy/layui-vue-admin) : 基于 Element Enhance 的 前端 Cli template + +##### 📈 趋势 + +[![Giteye chart](https://chart.giteye.net/gitee/Jmysy/layui-vue/9X8CXNEY.png)](https://giteye.net/chart/9X8CXNEY) + +##### 🍚 贡献 + +组件库还处于早期开发阶段,功能还需要完善。如果你希望参与贡献,欢迎 [Pull Request](https://github.com/Jmysy/layui-vue/pulls)。如果只是简单的文档相关的错误修正,你可以直接 PR,但如果是当前组件的 BUG 或者新功能、新组件等,最好优先提 [issues](https://github.com/Jmysy/layui-vue/issues) + +[![Giteye chart](https://chart.giteye.net/gitee/Jmysy/layui-vue/57W94KFG.png)](https://giteye.net/chart/57W94KFG) diff --git a/docs/docs/en-US/components/button.md b/docs/docs/en-US/components/button.md new file mode 100644 index 00000000..f48affb6 --- /dev/null +++ b/docs/docs/en-US/components/button.md @@ -0,0 +1,700 @@ +##### 基础 + +::: demo 传入 columns 数据,自动生成表格 + + + + + +::: + +##### 索引 + +::: demo 通过配置 index 显示索引列,支持 columns 的参数 + + + + + +::: + +##### 多选 + +::: demo 通过配置 selection 显示多选框,支持 columns 的参数 + + + + + +::: + +##### 展开 + +::: demo 通过配置 expand 开启展开插槽,通过 #expand 插槽定制显示内容,支持 columns 的参数 + + + + + +::: + +##### 操作 + +::: demo 通过配置 menu 开启按钮插槽,通过 #menu 插槽定制显示内容,支持 columns 的参数 + + + + + +::: + +##### 插槽 + +::: demo + + + + + +::: + +##### 分页 + +::: demo 当传入 total 数据时,将自动显示分页。可以通过 `v-model:current-page` 绑定当前页数、通过 `v-model:page-size` 绑定每页显示条目个数 + + + + + +::: + +##### 多级 + +::: demo 通过 columns 的 `children` 配置多级表头 + + + + + +::: + +##### 配置 + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| :---------------------- | :------------------------------------------------------------------ | :------------------------------------------------------ | :----------------------------- | :--------------------------------------------------- | +| data | 显示的数据 | array | - | - | +| columns | 自动生成表单的参数,参考下面 columns | array | - | - | +| selection | 显示多选框,支持 columns 的配置 | boolean / object | - | false | +| index | 显示索引,支持 columns 的配置 | boolean / object | - | false | +| expand | 开启展开插槽,支持 columns 的配置 | boolean / object | - | false | +| menu | 开启操作按钮插槽,支持 columns 的配置 | boolean / object | - | false | +| show-overflow-tooltip | 当内容过长被隐藏时显示 tooltip | boolean | - | false | +| align | 对齐方式 | string | left / center / right | left | +| header-align | 表头对齐方式 | string | left / center / right | 同 align | +| total | 总条目数 | number | - | - | +| current-page | 当前页数,可以通过 `v-model:current-page` 绑定值 | number | - | - | +| page-size | 每页显示条目个数,可以通过 `v-model:page-size` 绑定值 | number | - | - | +| pagination | pagination 的配置,同 el-pagination | object | - | [参考全局配置](../guide/index#全局配置) | +| height | Table 的高度 | string / number | - | 自动高度 | +| max-height | Table 的最大高度 | string / number | - | - | +| stripe | 是否为斑马纹 table | boolean | - | false | +| border | 是否带有纵向边框 | boolean | - | false | +| size | Table 的尺寸 | string | medium / small / mini | - | +| fit | 列的宽度是否自撑开 | boolean | - | true | +| show-header | 是否显示表头 | boolean | - | true | +| highlight-current-row | 是否要高亮当前行 | boolean | - | false | +| current-row-key | 当前行的 key,只写属性 | string / number | - | - | +| row-class-name | 为行增加 className | Function({row, rowIndex}) / string | - | - | +| row-style | 为行增加 style | Function({row, rowIndex}) / object | - | - | +| cell-class-name | 为单元格增加 className | Function({row, column, rowIndex, columnIndex}) / string | - | - | +| cell-style | 为单元格增加 style | Function({row, column, rowIndex, columnIndex}) / object | - | - | +| header-row-class-name | 为表头行增加 className | Function({row, rowIndex}) / string | - | - | +| header-row-style | 为表头行增加 style | Function({row, rowIndex}) / object | - | - | +| header-cell-class-name | 为表头单元格增加 className | Function({row, column, rowIndex, columnIndex}) / string | - | - | +| header-cell-style | 为表头单元格增加 style | Function({row, column, rowIndex, columnIndex}) / object | - | - | +| row-key | 行数据的 Key,使用 reserveSelection 功能时必填 | Function(row) / string | - | - | +| empty-text | 空数据时显示的文本内容 | string | - | 暂无数据 | +| default-expand-all | 是否默认展开所有行 | boolean | - | false | +| expand-row-keys | Table 目前的展开行,与 row-key 配合使用 | array | - | - | +| default-sort | 默认的排序列的 prop 和顺序 | Object | `order`: ascending, descending | ascending | +| tooltip-effect | tooltip `effect` 属性 | String | dark / light | - | +| show-summary | 是否在表尾显示合计行 | Boolean | - | false | +| sum-text | 合计行第一列的文本 | String | - | 合计 | +| summary-method | 自定义的合计计算方法 | Function({ columns, data }) | - | - | +| span-method | 合并行或列的计算方法 | Function({ row, column, rowIndex, columnIndex }) | - | - | +| select-on-indeterminate | 当仅有部分行被选中时,点击表头的多选框时的行为,配合 selection 使用 | boolean | - | true | +| indent | 展示树形数据时,树节点的缩进 | number | - | 16 | +| lazy | 是否懒加载子节点数据 | boolean | - | - | +| load | 加载子节点数据的函数,lazy 为 true 时生效 | Function(row, treeNode, resolve) | - | - | +| tree-props | 渲染嵌套数据的配置选项 | Object | - | { hasChildren: 'hasChildren', children: 'children' } | + +##### 参数 + +| 参数 | 说明 | 类型 | 可选值 | 默认值 | +| :------------------ | :-------------------------------------------------------------------- | :-------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------- | +| prop | 对应 data 的字段名 (**必填,需要是唯一值**) | string | - | - | +| label | 显示的标题 | string | - | - | +| slot | 是否开启自定义插槽功能 | boolean | - | false | +| hide | 是否在表格中隐藏 | boolean | - | false | +| children | 实现多级表头 | array | - | - | +| columnKey | 当前项的 key,使用 filter-change 事件时需要 | string | - | - | +| width | 对应列的宽度 | string | - | - | +| minWidth | 对应列的最小宽度 | string | - | - | +| fixed | 列是否固定,true 表示固定在左侧 | string / boolean | true / left / right | - | +| renderHeader | 列标题 Label 区域渲染使用的 Function | Function(h, { column, $index }) | - | - | +| sortable | 对应列是否可以排序 | boolean / string | true / false / 'custom' | false | +| sortMethod | 对数据进行排序的时候使用的方法 | Function(a, b) | - | - | +| sortBy | 指定数据按照哪个属性进行排序 | string / array / Function(row, index) | - | - | +| sortOrders | 数据在排序时所使用排序策略的轮转顺序 | array | `ascending` 表示升序,`descending` 表示降序,`null` 表示还原为原始顺序 | ['ascending', 'descending', null] | +| resizable | 对应列是否可以通过拖动改变宽度,配合 border 使用 | boolean | - | true | +| formatter | 用来格式化内容 | Function(row, column, cellValue, index) | - | - | +| showOverflowTooltip | 当内容过长被隐藏时显示 tooltip | Boolean | - | false | +| align | 对齐方式 | string | left / center / right | left | +| headerAlign | 表头对齐方式 | string | left / center / right | 同 align | +| className | 列的 className | string | - | - | +| labelClassName | 当前列标题的自定义类名 | string | - | - | +| filters | 数据过滤的选项 | Array[{ text, value }] | - | - | +| filterPlacement | 过滤弹出框的定位 | string | top / top-start / top-end / bottom / bottom-start / bottom-end / left / left-start / left-end / right / right-start / right-end | - | +| filterMultiple | 数据过滤的选项是否多选 | boolean | - | true | +| filterMethod | 数据过滤使用的方法 | Function(value, row, column) | - | - | +| filteredValue | 选中的数据过滤项 | array | - | - | +| index | 自定义索引,只能够在 index 中配置 | Function(index) / number | - | - | +| selectable | 这一行的 CheckBox 是否可以勾选,只能够在 selection 中配置 | Function(row, index) | - | - | +| reserveSelection | 是否保留之前选中的数据(需指定 `row-key`),只能够在 selection 中配置 | boolean | - | false | + +##### 事件 + +| 事件名 | 说明 | 参数 | +| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | +| select | 当用户手动勾选数据行的 Checkbox 时触发的事件 | selection, row | +| select-all | 当用户手动勾选全选 Checkbox 时触发的事件 | selection | +| selection-change | 当选择项发生变化时会触发该事件 | selection | +| cell-mouse-enter | 当单元格 hover 进入时会触发该事件 | row, column, cell, event | +| cell-mouse-leave | 当单元格 hover 退出时会触发该事件 | row, column, cell, event | +| cell-click | 当某个单元格被点击时会触发该事件 | row, column, cell, event | +| cell-dblclick | 当某个单元格被双击击时会触发该事件 | row, column, cell, event | +| row-click | 当某一行被点击时会触发该事件 | row, column, event | +| row-contextmenu | 当某一行被鼠标右键点击时会触发该事件 | row, column, event | +| row-dblclick | 当某一行被双击时会触发该事件 | row, column, event | +| header-click | 当某一列的表头被点击时会触发该事件 | column, event | +| header-contextmenu | 当某一列的表头被鼠标右键点击时触发该事件 | column, event | +| sort-change | 当表格的排序条件发生变化的时候会触发该事件 | { column, prop, order } | +| filter-change | 当表格的筛选条件发生变化的时候会触发该事件,参数的值是一个对象,对象的 key 是 column 的 columnKey,对应的 value 为用户选择的筛选条件的数组。 | filters | +| current-change | 当表格的当前行发生变化的时候会触发该事件,如果要高亮当前行,请打开表格的 highlight-current-row 属性 | currentRow, oldCurrentRow | +| header-dragend | 当拖动表头改变了列的宽度的时候会触发该事件 | newWidth, oldWidth, column, event | +| expand-change | 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded) | row, (expandedRows \| expanded) | +| size-change | pageSize 改变时会触发 | 每页条数 | +| current-change | currentPage 改变时会触发 | 当前页 | +| prev-click | 用户点击上一页按钮改变当前页后触发 | 当前页 | +| next-click | 用户点击下一页按钮改变当前页后触发 | 当前页 | + +##### 方法 + +| 方法名 | 说明 | 参数 | +| ------------------ | ----------------------------------------------------------------------------------------------------------------------- | --------------------------- | +| clearSelection | 用于多选表格,清空用户的选择 | - | +| toggleRowSelection | 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中) | row, selected | +| toggleAllSelection | 用于多选表格,切换全选和全不选 | - | +| toggleRowExpansion | 用于可展开表格与树形表格,切换某一行的展开状态,如果使用了第二个参数,则是设置这一行展开与否(expanded 为 true 则展开) | row, expanded | +| setCurrentRow | 用于单选表格,设定某一行为选中行,如果调用时不加参数,则会取消目前高亮行的选中状态。 | row | +| clearSort | 用于清空排序条件,数据会恢复成未排序的状态 | - | +| clearFilter | 不传入参数时用于清空所有过滤条件,数据会恢复成未过滤的状态,也可传入由 columnKey 组成的数组以清除指定列的过滤条件 | columnKey | +| doLayout | 对 Table 进行重新布局。当 Table 或其祖先元素由隐藏切换为显示时,可能需要调用此方法 | - | +| sort | 手动对 Table 进行排序。参数`prop`属性指定排序列,`order`指定排序顺序。 | prop: string, order: string | + +::: tip 提示 +如果使用 `typescript` 可以从组件中导出 `ITableExpose` 提供更好的类型推导 +::: + +### 插槽 + +| name | 说明 | +| :------------ | :----------------------------------------------------------------------- | +| - | 在右侧菜单前插入的任意内容 | +| menu | 表格右侧自定义按钮,参数为 { size, row, column, $index } | +| expand | 当 expand 为 true 时,配置展开显示的内容,参数为 { row, column, $index } | +| append | 插入至表格最后一行之后的内容 | +| [prop] | 当前这列的内容,参数为 { size, row, column, $index } | +| [prop]-header | 当前这列表头的内容,参数为 { size, column, $index } | + +::: tip 提示 +[prop] 为 columns 中定义的 prop +::: diff --git a/docs/docs/en-US/guide/home.md b/docs/docs/en-US/guide/home.md new file mode 100644 index 00000000..0a75d65a --- /dev/null +++ b/docs/docs/en-US/guide/home.md @@ -0,0 +1 @@ +##### 介绍 diff --git a/docs/docs/en-US/guide/index.md b/docs/docs/en-US/guide/index.md new file mode 100644 index 00000000..d89e87a8 --- /dev/null +++ b/docs/docs/en-US/guide/index.md @@ -0,0 +1,5 @@ +##### 安装 + +``` +npm install layui-vue --save +``` diff --git a/docs/docs/zh-CN/components/button.md b/docs/docs/zh-CN/components/button.md new file mode 100644 index 00000000..11fb5515 --- /dev/null +++ b/docs/docs/zh-CN/components/button.md @@ -0,0 +1,32 @@ +##### 基础 + +::: demo 传入 columns 数据,自动生成表格 + + + + + +::: + +#### 插槽 + +| name | 说明 | +| :------------ | :----------------------------------------------------------------------- | +| type | 按钮类型 | \ No newline at end of file diff --git a/docs/docs/zh-CN/guide/home.md b/docs/docs/zh-CN/guide/home.md new file mode 100644 index 00000000..0a75d65a --- /dev/null +++ b/docs/docs/zh-CN/guide/home.md @@ -0,0 +1 @@ +##### 介绍 diff --git a/docs/docs/zh-CN/guide/index.md b/docs/docs/zh-CN/guide/index.md new file mode 100644 index 00000000..d89e87a8 --- /dev/null +++ b/docs/docs/zh-CN/guide/index.md @@ -0,0 +1,5 @@ +##### 安装 + +``` +npm install layui-vue --save +``` diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..a6b47b89 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + +
+ + + diff --git a/docs/prerender.js b/docs/prerender.js new file mode 100644 index 00000000..c3224d9e --- /dev/null +++ b/docs/prerender.js @@ -0,0 +1,47 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const fs = require('fs') +const path = require('path') + +const toAbsolute = (p) => path.resolve(__dirname, p).replace(/\\/, '/') + +const manifest = require('./dist/static/ssr-manifest.json') +const template = fs.readFileSync(toAbsolute('dist/static/index.html'), 'utf-8') +const { render } = require('./dist/server/entry-server.js') + +const writeFileRecursive = function (path, buffer) { + const lastPath = path.substring(0, path.lastIndexOf('/')) + + fs.mkdir(lastPath, { recursive: true }, () => { + fs.writeFileSync(path, buffer) + }) +} + +const fileDisplay = (file) => { + fs.readdirSync(toAbsolute(file)).forEach(async (filename) => { + const filedir = path.join(file, filename).replace(/\\/, '/') + + if (fs.statSync(toAbsolute(filedir)).isDirectory()) { + fileDisplay(filedir) + } else { + const url = filedir + .replace(/^docs/, '') + .replace(/\.(vue|md)$/, '') + .replace(/index$/, '') + .replace(/\/([^/]*)$/, (item) => + item.replace(/\B([A-Z])/g, '-$1').toLowerCase() + ) + const [appHtml, preloadLinks] = await render(url, manifest) + const html = template + .replace('', preloadLinks) + .replace('', appHtml) + + const filePath = `dist/static${url.replace(/\/$/, '/index')}.html` + writeFileRecursive(toAbsolute(filePath), html) + console.log('pre-rendered:', filePath) + } + }) +} + +fileDisplay('docs') + +fs.unlinkSync(toAbsolute('dist/static/ssr-manifest.json')) diff --git a/docs/public/favicon.ico b/docs/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b2d220434ec7e9f1ba5c30e5dc38b7b053467d9d GIT binary patch literal 4286 zcmcJTeN>m_8OJY#BNA-X+{BtrR)<96guK7}`0+!b?CmsL&Nj1jJKM5Zf2@X169wNQ z--hubqNW>X2xrWxr>(F&YfGIlr@7Svb4{6vs41AD#LK2jFY}{rM(lw0)GmvY<&xA5m)50bo-1&Ln9bwm z_^Kp150_Ua-#H+e16fr5%vdpH6Xer;mzeVVUTP_2U-`|>oX<>3|O|l$YdBxU^Ym$SJJrk@C9bE4jJ}sZG_f%k? zIAe^plQF-Oy4?8wAo_iNU}22pK7Pg4f1VfVi_DC+^`5HE*V5V@On6k|gE?Ss1^cq| zyklcp13Z^B7p9CfznUP8Yh1z_DVwR0cLmI2 zl>{5t*gcrN&#|x0kqL*3*q{`>qRgoo%FV9Tcr?EpkFQ*J5RVJMJ?^!q72UTJ8}1cP zeADMMUAz53se0kwJ{;gF#E)a^o!+)?+u+&TQk?p2*7&!qOO=|eXzSlkRwspHhbUA1 zn4HarPvg^i7Nf9FDSR(@@i+sw)o1fvqs*r9Vh(+$55AtC^F{7S`0uQ<4_)e!HJ39# z%xs>ZI)a-juV;n}?*v;siH&s49NrCOub``ZurzKkd?&$sH+pnB^038@qbm{vRoC8^ zDbIkrdv@2_4s2ZkpGdO@-3rj{tw&|g{K)QY=qK3oyU5ow*a_ATv@j)ApmZF>e5TkZV02dIC2a6U&U`|UYjzSA!X0r-Dj;nAXcQ} z*|9$8{0Kg%>5}i{qYvQsee(1zl|Q-1ueHQe)f3;-M`lm_w1(ya_vrJ5eeL9IJhmcH z-d`Li>IZV;?Znq2{NL#Cz%Q-%uoB<7iI2B$4Byj0Y=NKR!1bAlBRP;A>%aMj;e&`1 z`<}Cy4CW3vwK+WS&q?g#_$|77QUgL4Vn zm*I$a@WVxi2fv%(R!FSwxiNfCV^fjFe~PWc`>xT~9U%|x{&}R(3&`Qz_`&4=$IyMB z!$D{K({Ww=3Y-6CvsTx)VY6I%p08=W(z>m6C2xADbNqVDE1vp>_GQwLmt<=(zeCXb zC46$in+LyZJ2!el7(MpujrJJo=56I z2=`Bb5sE#!@l~1HW%06WcBIW6hZe>9kzXEU%`UI_(Ojo}-3)9M1dc49HqwXKNP*in z__jLO@I3*)9Bh4u+T}=Yg4GZH$;8D4-f6EP`{{LcI9K_s(Q=wThrZI*HhQ1iSo?g( z2G3zfHheyZ*A8;qlbo$p;GXV&M;?Sr`GsQb!`Ik8@eTStYE{7Qc~ODLyB}_s&|&e; zpG5{9%!v(R407Js+_x#+oKouwu|Cpn;OpHl#g-~hNy4;u{f4q zF-A&%G{y(KC7h}EkfA+o2Wvm!{s3be<8}wP_pCmtoOO@&$-8r-e6e*py1xl_o1-)O z90xCp7#^-MMPF+5{>`j0awsQO(#PH^U}O^CIw7l-XnaTeyNt>9&2v&W|E+<*yQjMU*9m3<7ml=jmndW+JyZp=## z + + diff --git a/docs/src/components/LayCode.vue b/docs/src/components/LayCode.vue new file mode 100644 index 00000000..fbbe32e1 --- /dev/null +++ b/docs/src/components/LayCode.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/docs/src/entry-client.ts b/docs/src/entry-client.ts new file mode 100644 index 00000000..d552319c --- /dev/null +++ b/docs/src/entry-client.ts @@ -0,0 +1,7 @@ +import { createApp } from './main' + +const { app, router } = createApp() + +router.isReady().then(() => { + app.mount('#app') +}) diff --git a/docs/src/entry-server.ts b/docs/src/entry-server.ts new file mode 100644 index 00000000..f418790e --- /dev/null +++ b/docs/src/entry-server.ts @@ -0,0 +1,51 @@ +import { createApp } from './main' +import { renderToString } from '@vue/server-renderer' + +export async function render(url, manifest): Promise { + const { app, router } = createApp() + + // set the router to the desired URL before rendering + router.push(url) + await router.isReady() + + // passing SSR context object which will be available via useSSRContext() + // @vitejs/plugin-vue injects code into a component's setup() that registers + // itself on ctx.modules. After the render, ctx.modules would contain all the + // components that have been instantiated during this render call. + const ctx = {} + const html = await renderToString(app, ctx) + + // the SSR manifest generated by Vite contains module -> chunk/asset mapping + // which we can then use to determine what files need to be preloaded for this + // request. + const preloadLinks = renderPreloadLinks(ctx.modules, manifest) + return [html, preloadLinks] +} + +function renderPreloadLinks(modules, manifest) { + let links = '' + const seen = new Set() + modules.forEach((id) => { + const files = manifest[id] + if (files) { + files.forEach((file) => { + if (!seen.has(file)) { + seen.add(file) + links += renderPreloadLink(file) + } + }) + } + }) + return links +} + +function renderPreloadLink(file) { + if (file.endsWith('.js')) { + return `` + } else if (file.endsWith('.css')) { + return `` + } else { + // TODO + return '' + } +} diff --git a/docs/src/layouts/Layout.vue b/docs/src/layouts/Layout.vue new file mode 100644 index 00000000..c0747059 --- /dev/null +++ b/docs/src/layouts/Layout.vue @@ -0,0 +1,25 @@ + + \ No newline at end of file diff --git a/docs/src/main.ts b/docs/src/main.ts new file mode 100644 index 00000000..3f943e0d --- /dev/null +++ b/docs/src/main.ts @@ -0,0 +1,25 @@ +import Layout from './App.vue' +import { App, createApp as _createApp, createSSRApp } from 'vue' +import { createRouter } from './router/index' +import { Router } from 'vue-router' +import Layui from '/@src/index' +import LayCode from './components/LayCode.vue' +import './styles/index.css' + +export function createApp(): { + app: App + router: Router +} { + const app = + import.meta.env.MODE === 'production' + ? createSSRApp(Layout) + : _createApp(Layout) + const router = createRouter() + + app + .use(router) + .component('LayCode', LayCode) + .use(Layui) + + return { app, router } +} diff --git a/docs/src/plugin/common-plugins.ts b/docs/src/plugin/common-plugins.ts new file mode 100644 index 00000000..c940c96c --- /dev/null +++ b/docs/src/plugin/common-plugins.ts @@ -0,0 +1,47 @@ +import vue from '@vitejs/plugin-vue' +import Markdown from 'vite-plugin-md' +import container from 'markdown-it-container' +import highlight from './highlight' +import snippet from './snippet' +import demo from './demo' +import createContainer from './create-container' +import preWrapper from './pre-wrapper' +import type Token from 'markdown-it/lib/token' + +const plugins = [ + vue({ + include: [/\.vue$/, /\.md$/], + }), + Markdown({ + markdownItOptions: { + html: true, + linkify: true, + typographer: true, + highlight, + }, + markdownItSetup(md) { + md.use(snippet) + .use(preWrapper) + .use(container, 'demo', demo) + .use(...createContainer('tip', 'TIP')) + .use(...createContainer('warning', 'WARNING')) + .use(...createContainer('danger', 'WARNING')) + .use(container, 'v-pre', { + render: (tokens: Token[], idx: number) => + tokens[idx].nesting === 1 ? '
\n' : '
\n', + }) + .use(container, 'details', { + render: (tokens: Token[], idx: number) => { + const info = tokens[idx].info.trim().slice(7).trim() // 7 = 'details'.length + return tokens[idx].nesting === 1 + ? `
${ + info ? `${info}` : '' + }\n` + : '
' + }, + }) + }, + }), +] + +export default plugins diff --git a/docs/src/plugin/create-container.ts b/docs/src/plugin/create-container.ts new file mode 100644 index 00000000..8a403568 --- /dev/null +++ b/docs/src/plugin/create-container.ts @@ -0,0 +1,33 @@ +import container from 'markdown-it-container' +import type Token from 'markdown-it/lib/token' + +type ContainerArgs = [ + typeof container, + string, + { + render(tokens: Token[], idx: number): string + } +] + +export default function createContainer( + klass: string, + defaultTitle: string +): ContainerArgs { + return [ + container, + klass, + { + render(tokens, idx) { + const token = tokens[idx] + const info = token.info.trim().slice(klass.length).trim() + if (token.nesting === 1) { + return `

${ + info || defaultTitle + }

\n` + } else { + return '
\n' + } + }, + }, + ] +} diff --git a/docs/src/plugin/demo.ts b/docs/src/plugin/demo.ts new file mode 100644 index 00000000..588474c9 --- /dev/null +++ b/docs/src/plugin/demo.ts @@ -0,0 +1,146 @@ +import markdown from 'markdown-it' +import highlight from './highlight' +import type Token from 'markdown-it/lib/token' + +/** + * Combine the script content + * @param {string} script script string + */ +function assignScript(script: string) { + const dependencies = {} as Record + const attrs = {} as Record + const content = script + // import { ref } from 'vue' -> '' + .replace(/import\s?\{.*\}.*/g, (item) => { + const key = getInnerString(item.replace(/'/g, '"'), '"', '"') + const value = getInnerString(item.replace(/\s+/g, ''), '{', '}') + const list = value ? value.split(',') : [] + if (key && dependencies[key]) { + dependencies[key] = dependencies[key].concat(list) + } else if (key) { + dependencies[key] = list + } + return '' + }) + /** + * const -> let + * + * const a = -> let a = + * const a = -> a = + */ + .replace(/(const|let|var)\s\w*\s?=/g, (item) => { + const attr = getInnerString(item, '\\s', '\\s?=') + if (attr && !(attr in attrs)) { + attrs[attr] = attr + return `let ${attr} =` + } else { + return attr + ' =' + } + }) + // Remove extra line breaks + .replace(/\n+/gm, '\n') + // Combine the import + const reImport = Object.keys(dependencies).reduce((all, item) => { + const filterAttrs = [...new Set(dependencies[item])] + return all + `import {${filterAttrs + ','}} from '${item}';\n` + }, '') + + return reImport + content +} + +/** + * Extract part of the new string from the middle of the string + * @param {string} string string + * @param {string} prefix RegExp string + * @param {string} postfix RegExp string + * @param {string} type g | m | i + */ +function getInnerString( + string: string, + prefix: string, + postfix = '', + type: 'i' | 'g' | 'm' = 'i' +): string | undefined { + const result = new RegExp(`${prefix}(.*)${postfix}`, type) + const match = string.match(result) + return match ? match[1].trim() : undefined +} + +let script = '' // Record the ` + } + } + } + + return ` + + ${description ? `` : ''} + + ` + }, +} diff --git a/docs/src/plugin/highlight.ts b/docs/src/plugin/highlight.ts new file mode 100644 index 00000000..c16d210c --- /dev/null +++ b/docs/src/plugin/highlight.ts @@ -0,0 +1,46 @@ +// copy from [vitepress](https://github.com/vuejs/vitepress) +import prism from 'prismjs' +import loadLanguages from 'prismjs/components/index' +import escapeHtml from 'escape-html' + +// required to make embedded highlighting work... +loadLanguages(['markup', 'css', 'javascript']) + +function wrap(code: string, lang: string): string { + if (lang === 'text') { + code = escapeHtml(code) + } + return `
${code}
` +} + +export default (str: string, lang: string): string => { + if (!lang) { + return wrap(str, 'text') + } + lang = lang.toLowerCase() + const rawLang = lang + if (lang === 'vue' || lang === 'html') { + lang = 'markup' + } + if (lang === 'md') { + lang = 'markdown' + } + if (lang === 'ts') { + lang = 'typescript' + } + if (lang === 'py') { + lang = 'python' + } + if (!prism.languages[lang]) { + try { + loadLanguages([lang]) + } catch (e) { + console.warn(lang, e) + } + } + if (prism.languages[lang]) { + const code = prism.highlight(str, prism.languages[lang], lang) + return wrap(code, rawLang) + } + return wrap(str, 'text') +} diff --git a/docs/src/plugin/pre-wrapper.ts b/docs/src/plugin/pre-wrapper.ts new file mode 100644 index 00000000..edef8176 --- /dev/null +++ b/docs/src/plugin/pre-wrapper.ts @@ -0,0 +1,11 @@ +import MarkdownIt from 'markdown-it' + +export default (md: MarkdownIt): void => { + const fence = md.renderer.rules.fence! + md.renderer.rules.fence = (...args) => { + const [tokens, idx] = args + const token = tokens[idx] + const rawCode = fence(...args) + return `
${rawCode}
` + } +} diff --git a/docs/src/plugin/snippet.ts b/docs/src/plugin/snippet.ts new file mode 100644 index 00000000..730a3686 --- /dev/null +++ b/docs/src/plugin/snippet.ts @@ -0,0 +1,49 @@ +// copy from [vitepress](https://github.com/vuejs/vitepress) +import fs from 'fs' +import MarkdownIt from 'markdown-it' +import { RuleBlock } from 'markdown-it/lib/parser_block' + +export default (md: MarkdownIt): void => { + const parser: RuleBlock = (state, startLine, endLine, silent) => { + const CH = '<'.charCodeAt(0) + const pos = state.bMarks[startLine] + state.tShift[startLine] + const max = state.eMarks[startLine] + + // if it's indented more than 3 spaces, it should be a code block + if (state.sCount[startLine] - state.blkIndent >= 4) { + return false + } + + for (let i = 0; i < 3; ++i) { + const ch = state.src.charCodeAt(pos + i) + if (ch !== CH || pos + i >= max) return false + } + + if (silent) { + return true + } + + const start = pos + 3 + const end = state.skipSpacesBack(max, pos) + const rawPath = state.src + .slice(start, end) + .trim() + .replace(/^@/, process.cwd()) + const content = fs.existsSync(rawPath) + ? fs.readFileSync(rawPath).toString() + : 'Not found: ' + rawPath + const meta = rawPath.replace(rawPath, '') + + state.line = startLine + 1 + + const token = state.push('fence', 'code', 0) + token.info = rawPath.split('.').pop() + meta + token.content = content + token.markup = '```' + token.map = [startLine, startLine + 1] + + return true + } + + md.block.ruler.before('fence', 'snippet', parser) +} diff --git a/docs/src/router/index.ts b/docs/src/router/index.ts new file mode 100644 index 00000000..6074573e --- /dev/null +++ b/docs/src/router/index.ts @@ -0,0 +1,20 @@ +import { + createMemoryHistory, + createRouter as _createRouter, + createWebHistory, + Router, +} from 'vue-router' +import zhCN from './zh-CN' +import type { IRouteRecordRaw } from '/@src/index' + +const routes: IRouteRecordRaw[] = [...zhCN] + +export function createRouter(): Router { + const baseUrl = import.meta.env.BASE_URL + return _createRouter({ + history: import.meta.env.SSR + ? createMemoryHistory(baseUrl) + : createWebHistory(baseUrl), + routes: routes + }) +} \ No newline at end of file diff --git a/docs/src/router/zh-CN.ts b/docs/src/router/zh-CN.ts new file mode 100644 index 00000000..c7152e86 --- /dev/null +++ b/docs/src/router/zh-CN.ts @@ -0,0 +1,32 @@ +import BaseLayout from '../layouts/Layout.vue' + +const zhCN = [ + { + path: '/', + redirect: '/zh-CN/guide/', + component: BaseLayout, + meta: { title: '指南', icon: 'el-icon-position' }, + children: [ + { + path: '/zh-CN/guide/', + component: () => import('../../docs/zh-CN/guide/home.md'), + meta: { title: '介绍' }, + } + ], + }, + { + path: '/zh-CN/components/', + redirect: '/zh-CN/components/button', + component: BaseLayout, + meta: { title: '组件', icon: 'el-icon-copy-document' }, + children: [ + { + path: '/zh-CN/components/button', + component: () => import('../../docs/zh-CN/components/button.md'), + meta: { title: '按钮' }, + } + ], + }, +] + +export default zhCN diff --git a/docs/src/styles/code.css b/docs/src/styles/code.css new file mode 100644 index 00000000..447ae812 --- /dev/null +++ b/docs/src/styles/code.css @@ -0,0 +1,214 @@ +/* copy from [vitepress](https://github.com/vuejs/vitepress) */ +code { + margin: 0; + border-radius: 3px; + padding: 0.25rem 0.5rem; + font-family: var(--code-font-family); + font-size: 0.85em; + color: var(--c-text-light); + background-color: var(--code-inline-bg-color); +} + +code .token.deleted { + color: #ec5975; +} + +code .token.inserted { + color: var(--c-brand); +} + +div[class*='language-'] { + position: relative; + margin: 1rem -1.5rem; + background-color: #fafafa; + overflow-x: auto; + border: 1px solid #eaeefb; +} + +li > div[class*='language-'] { + border-radius: 6px 0 0 6px; + margin: 1rem -1.5rem 1rem -1.25rem; +} + +@media (min-width: 420px) { + div[class*='language-'] { + margin: 1rem 0; + border-radius: 6px; + } + + li > div[class*='language-'] { + margin: 1rem 0 1rem 0rem; + border-radius: 6px; + } +} + +[class*='language-'] pre, +[class*='language-'] code { + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +[class*='language-'] pre { + position: relative; + z-index: 1; + margin: 0; + padding: 1.25rem 1.5rem; + background: transparent; + overflow-x: auto; +} + +[class*='language-'] pre p { + margin: auto !important; +} + +[class*='language-'] code { + padding: 0; + line-height: var(--code-line-height); + font-size: var(--code-font-size); + color: #000; + background-color: #fafafa; +} + +/* Line highlighting */ + +.highlight-lines { + position: absolute; + top: 0; + bottom: 0; + left: 0; + padding: 1.25rem 0; + width: 100%; + line-height: var(--code-line-height); + font-family: var(--code-font-family); + font-size: var(--code-font-size); + user-select: none; + overflow: hidden; +} + +.highlight-lines .highlighted { + background-color: rgba(0, 0, 0, 0.66); +} + +/* Line numbers mode */ + +div[class*='language-'].line-numbers-mode { + padding-left: 3.5rem; +} + +.line-numbers-wrapper { + position: absolute; + top: 0; + bottom: 0; + left: 0; + z-index: 3; + border-right: 1px solid rgba(0, 0, 0, 0.5); + padding: 1.25rem 0; + width: 3.5rem; + text-align: center; + line-height: var(--code-line-height); + font-family: var(--code-font-family); + font-size: var(--code-font-size); + color: #888; +} + +/* Language marker */ + +[class*='language-']:before { + position: absolute; + top: 0.6em; + right: 1em; + z-index: 2; + font-size: 0.8rem; + color: #888; +} + +/** + * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML. + * Based on https://github.com/chriskempson/tomorrow-theme + * + * @author Rose Pritchard + */ +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #999; +} + +.token.punctuation { + color: #ccc; +} + +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted { + color: #e2777a; +} + +.token.function-name { + color: #6196cc; +} + +.token.boolean, +.token.number, +.token.function { + color: #f08d49; +} + +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: #f8c555; +} + +.token.selector, +.token.important, +.token.atrule, +.token.keyword, +.token.builtin { + color: #cc99cd; +} + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #7ec699; +} + +.token.operator, +.token.entity, +.token.url { + color: #67cdcc; +} + +.token.important, +.token.bold { + font-weight: bold; +} + +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.inserted { + color: green; +} diff --git a/docs/src/styles/custom-blocks.css b/docs/src/styles/custom-blocks.css new file mode 100644 index 00000000..5feed973 --- /dev/null +++ b/docs/src/styles/custom-blocks.css @@ -0,0 +1,71 @@ +.custom-block.tip, +.custom-block.warning, +.custom-block.danger { + margin: 1rem 0; + border-left: 0.3rem solid; + padding: 0.1rem 1.5rem; + overflow-x: auto; + border-radius: 4px; +} + +.custom-block.tip { + background-color: #f3f5f7; + border-color: #409eff; +} + +.custom-block.warning { + border-color: #e7c000; + color: #6b5900; + background-color: rgba(255, 229, 100, 0.3); +} + +.custom-block.warning .custom-block-title { + color: #b29400; +} + +.custom-block.warning a { + color: var(--c-text); +} + +.custom-block.danger { + border-color: #c00; + color: #4d0000; + background-color: #ffe6e6; +} + +.custom-block.danger .custom-block-title { + color: #900; +} + +.custom-block.danger a { + color: var(--c-text); +} + +.custom-block.details { + position: relative; + display: block; + border-radius: 2px; + margin: 1.6em 0; + padding: 1.6em; + background-color: #eee; +} + +.custom-block.details h4 { + margin-top: 0; +} + +.custom-block.details figure:last-child, +.custom-block.details p:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +.custom-block.details summary { + outline: none; + cursor: pointer; +} + +.custom-block-title { + margin-bottom: -0.4rem; + font-weight: 600; +} diff --git a/docs/src/styles/index.css b/docs/src/styles/index.css new file mode 100644 index 00000000..5221e9cf --- /dev/null +++ b/docs/src/styles/index.css @@ -0,0 +1,4 @@ +@import './code.css'; +@import './custom-blocks.css'; +@import './markdown.css'; +@import './vars.css'; diff --git a/docs/src/styles/markdown.css b/docs/src/styles/markdown.css new file mode 100644 index 00000000..7397fe02 --- /dev/null +++ b/docs/src/styles/markdown.css @@ -0,0 +1,220 @@ +html { + line-height: 1.4; + font-size: 16px; + -webkit-text-size-adjust: 100%; +} + +h4 { + font-weight: 700 !important; + font-size: 16.8px !important; + margin-top: 20px !important; + margin-bottom: 20px !important; +} + +h5 { + font-weight: 700; + font-size: 16.8px; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + color: #303133; + line-height: 1.25; +} + +h1, +h2, +h3, +h4, +h5, +h6, +strong, +b { + font-weight: 600; +} + +h1:hover .header-anchor, +h1:focus .header-anchor, +h2:hover .header-anchor, +h2:focus .header-anchor, +h3:hover .header-anchor, +h3:focus .header-anchor, +h4:hover .header-anchor, +h4:focus .header-anchor, +h5:hover .header-anchor, +h5:focus .header-anchor, +h6:hover .header-anchor, +h6:focus .header-anchor { + opacity: 1; +} + +h1 { + margin-top: 1.5rem; + font-size: 1.9rem; +} + +@media screen and (min-width: 420px) { + h1 { + font-size: 2.2rem; + } +} + +h2 { + margin-top: 2.25rem; + margin-bottom: 1.25rem; + border-bottom: 1px solid var(--c-divider); + padding-bottom: 0.3rem; + line-height: 1.25; + font-size: 1.65rem; + /* overflow-x: auto; */ +} + +h2 + h3 { + margin-top: 1.5rem; +} + +h3 { + margin-top: 2rem; + font-size: 1.35rem; +} + +h4 { + font-size: 1.15rem; +} + +h1 { + margin-top: 4px !important; + margin-bottom: 22px !important; + color: #000000d9 !important; + font-weight: 500 !important; + font-size: 20px !important; + font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, + helvetica neue, Arial, noto sans, sans-serif, apple color emoji, + segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif; + line-height: 38px; +} + +h2 { + margin-top: 4px !important; + margin-bottom: 16px !important; + color: #000000d9 !important; + font-weight: 500 !important; + font-size: 16px !important; + border-bottom: 0px; + font-family: Avenir, -apple-system, BlinkMacSystemFont, segoe ui, Roboto, + helvetica neue, Arial, noto sans, sans-serif, apple color emoji, + segoe ui emoji, segoe ui symbol, noto color emoji, sans-serif; + line-height: 38px; +} + +p, +ol, +ul { + margin: 1rem 0; + line-height: 1.7; +} + +p { + color: #454d64 !important; + margin-top: 20px !important; + font-size: 14px !important; +} + +a, +area, +button, +[role='button'], +input, +label, +select, +summary, +textarea { + touch-action: manipulation; +} + +a { + text-decoration: none; + color: var(--c-brand); +} + +a:hover { + text-decoration: underline; +} + +a.header-anchor { + float: left; + margin-top: 0.125em; + margin-left: -0.87em; + padding-right: 0.23em; + font-size: 0.85em; + opacity: 0; +} + +a.header-anchor:hover, +a.header-anchor:focus { + text-decoration: none; +} + +figure { + margin: 0; +} + +img { + max-width: 100%; +} + +ul, +ol { + padding-left: 1.25em; +} + +li > ul, +li > ol { + margin: 0; +} + +blockquote { + margin: 1rem 0; + border-left: 0.2rem solid #dfe2e5; + padding: 0.25rem 0 0.25rem 1rem; + font-size: 1rem; + color: #999; +} + +blockquote > p { + margin: 0; +} + +form { + margin: 0; +} + +table { + width: 100%; /*表格宽度*/ + border-collapse: collapse; /*使用单一线条的边框*/ + empty-cells: show; /*单元格无内容依旧绘制边框*/ +} + +table th, +table td { + font-size: 14px; + color: #606266; + height: 50px; /*统一每一行的默认高度*/ + border-top: 1px solid whitesmoke; /*内部边框样式*/ + padding: 0 10px; /*内边距*/ +} + +table tr:hover { + background: #efefef; +} +table th { + white-space: nowrap; /*表头内容强制在一行显示*/ +} +table td { + white-space: nowrap; +} diff --git a/docs/src/styles/vars.css b/docs/src/styles/vars.css new file mode 100644 index 00000000..701a36fd --- /dev/null +++ b/docs/src/styles/vars.css @@ -0,0 +1,52 @@ +/* TODO: rebuild... copy from [vitepress](https://github.com/vuejs/vitepress) */ +:root { + --c-white: #ffffff; + --c-black: #000000; + + --c-divider-light: rgba(60, 60, 67, 0.12); + --c-divider-dark: rgba(84, 84, 88, 0.48); + + --c-text-light-1: #2c3e50; + --c-text-light-2: #476582; + --c-text-light-3: #90a4b7; + + --c-brand: #409eff; + --c-brand-light: #4abf8a; + + /** + * Typography + * --------------------------------------------------------------------- */ + + --font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, + Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', + sans-serif; + --font-family-mono: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', + monospace; + + /** + * Shadows + * --------------------------------------------------------------------- */ + + --shadow-1: 0 1px 2px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.06); + --shadow-2: 0 3px 12px rgba(0, 0, 0, 0.07), 0 1px 4px rgba(0, 0, 0, 0.07); + --shadow-3: 0 12px 32px rgba(0, 0, 0, 0.1), 0 2px 6px rgba(0, 0, 0, 0.08); + --shadow-4: 0 14px 44px rgba(0, 0, 0, 0.12), 0 3px 9px rgba(0, 0, 0, 0.12); + --shadow-5: 0 18px 56px rgba(0, 0, 0, 0.16), 0 4px 12px rgba(0, 0, 0, 0.16); +} + +/** Fallback Styles */ +:root { + --c-divider: var(--c-divider-light); + + --c-text: var(--c-text-light-1); + --c-text-light: var(--c-text-light-2); + --c-text-lighter: var(--c-text-light-3); + + --c-bg: var(--c-white); + + --code-line-height: 24px; + --code-font-family: var(--font-family-mono); + --code-font-size: 14px; + --code-inline-bg-color: rgba(27, 31, 35, 0.05); + --code-bg-color: #282c34; +} diff --git a/docs/src/tsconfig.json b/docs/src/tsconfig.json new file mode 100644 index 00000000..f42260bf --- /dev/null +++ b/docs/src/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": [".", "../../shims-vue.d.ts"] +} diff --git a/docs/vite.config.ts b/docs/vite.config.ts new file mode 100644 index 00000000..bb79e7d7 --- /dev/null +++ b/docs/vite.config.ts @@ -0,0 +1,13 @@ +import path from 'path' +import { defineConfig } from 'vite' +import plugins from './src/plugin/common-plugins' + +export default defineConfig({ + base: '/layui-vue/', + resolve: { + alias: { + '/@src': path.resolve(__dirname, '../src'), + }, + }, + plugins, +}) diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..eb9a2f41 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,27 @@ +module.exports = { + roots: ['/test'], + preset: 'ts-jest', + testEnvironment: 'jsdom', + moduleFileExtensions: ['ts', 'vue', 'js', 'jsx', 'tsx', 'json', 'node'], + transformIgnorePatterns: ['node_modules/(?!(@vue/shared|element-plus)/)'], + moduleNameMapper: { '\\.css$': '/test/__mocks__/css.ts' }, + transform: { + '^.+\\.vue$': 'vue-jest', + '^.+\\.(t|j)sx?$': [ + 'babel-jest', + { + presets: [ + [ + '@babel/preset-env', + { + targets: { + node: 'current', + }, + }, + ], + '@babel/preset-typescript', + ], + }, + ], + }, +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..e6a76176 --- /dev/null +++ b/package.json @@ -0,0 +1,98 @@ +{ + "name": "layui-vue", + "version": "0.3.7", + "description": "a component library for Vue 3 base on layui-vue", + "main": "lib/layui-vue.umd.js", + "module": "lib/layui-vue.es.js", + "exports": { + ".": { + "import": "./lib/layui-vue.es.js", + "require": "./lib/layui-vue.umd.js" + }, + "./lib/": "./lib/" + }, + "types": "types/index.d.ts", + "style": "lib/style.css", + "scripts": { + "dev": "vite", + "build": "vite build --emptyOutDir && npm run build:helper && npm run build:types", + "build:types": "rimraf types && tsc -d", + "build:helper": "node .helperrc.js", + "build:docs": "vite build docs", + "test": "jest", + "lint": "eslint . --fix --ext .ts,.vue,.js --ignore-pattern \"/lib/\" --ignore-pattern \"/types/\"", + "prettier": "prettier --check --write --ignore-unknown \"{example,src,docs,test}/**\"" + }, + "repository": { + "type": "git", + "url": "https://gitee.com/Jmysy/layui-vue" + }, + "keywords": [ + "layui-vue", + "layui", + "vue" + ], + "author": "<就眠仪式 jmys1992@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://gitee.com/Jmysy/layui-vue/issues" + }, + "homepage": "https://gitee.com/Jmysy/layui-vue/blob/master/README.md", + "peerDependencies": { + "vue": "^3.1.2", + "vue-router": "^4.0.10" + }, + "dependencies": { + "vue": "^3.1.2", + "vue-router": "^4.0.10" + }, + "devDependencies": { + "@babel/core": "^7.14.0", + "@babel/preset-env": "^7.14.0", + "@babel/preset-typescript": "^7.13.0", + "@types/jest": "^26.0.23", + "@types/markdown-it": "^12.0.1", + "@types/markdown-it-container": "^2.0.3", + "@typescript-eslint/eslint-plugin": "^4.22.0", + "@typescript-eslint/parser": "^4.22.0", + "@vitejs/plugin-vue": "^1.2.2", + "@vue/compiler-sfc": "^3.1.2", + "@vue/server-renderer": "^3.1.1", + "@vue/test-utils": "^2.0.0-rc.6", + "babel-jest": "^26.6.3", + "components-helper": "^1.0.3", + "escape-html": "^1.0.3", + "eslint": "^7.25.0", + "eslint-plugin-prettier": "^3.4.0", + "eslint-plugin-vue": "^7.9.0", + "husky": "^4.3.6", + "jest": "^26.6.3", + "lint-staged": "^10.5.4", + "markdown-it-container": "^3.0.0", + "postcss": "^8.2.13", + "postcss-preset-env": "^6.7.0", + "prettier": "2.2.1", + "prismjs": "^1.23.0", + "rimraf": "^3.0.2", + "rollup-plugin-babel": "^4.4.0", + "ts-jest": "^26.5.5", + "typescript": "^4.2.4", + "vite": "2.3.7", + "vite-plugin-md": "^0.6.3", + "vue-jest": "^5.0.0-alpha.8" + }, + "vetur": { + "tags": "lib/tags.json", + "attributes": "lib/attributes.json" + }, + "web-types": "lib/web-types.json", + "files": [ + "lib", + "types" + ], + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + } +} diff --git a/shims-vue.d.ts b/shims-vue.d.ts new file mode 100644 index 00000000..94bb18ed --- /dev/null +++ b/shims-vue.d.ts @@ -0,0 +1,25 @@ +declare module '*.vue' { + import { DefineComponent } from 'vue' + const comp: DefineComponent + export default comp +} + +declare module '*.md' { + import { DefineComponent } from 'vue' + const comp: DefineComponent + export default comp +} + +declare module 'prismjs' +declare module 'prismjs/components/index' +declare module 'escape-html' + +interface ImportMeta { + env: { + MODE: string + BASE_URL: string + PROD: boolean + DEV: boolean + SSR: boolean + } +} diff --git a/src/css/layui.css b/src/css/layui.css new file mode 100644 index 00000000..a10e959e --- /dev/null +++ b/src/css/layui.css @@ -0,0 +1,6593 @@ +.layui-inline, +img { + display: inline-block; + vertical-align: middle +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 400 +} + +a, +body { + color: #333 +} + +.layui-edge, +.layui-header, +.layui-inline, +.layui-main { + position: relative +} + +.layui-edge, +hr { + height: 0; + overflow: hidden +} + +.layui-layout-body, +.layui-side, +.layui-side-scroll { + overflow-x: hidden +} + +.layui-edge, +.layui-elip, +hr { + overflow: hidden +} + +.layui-btn, +.layui-edge, +.layui-inline, +img { + vertical-align: middle +} + +.layui-btn, +.layui-disabled, +.layui-icon, +.layui-unselect { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none +} + +.layui-elip, +.layui-form-checkbox span, +.layui-form-pane .layui-form-label { + text-overflow: ellipsis; + white-space: nowrap +} + +blockquote, +body, +button, +dd, +div, +dl, +dt, +form, +h1, +h2, +h3, +h4, +h5, +h6, +input, +li, +ol, +p, +pre, +td, +textarea, +th, +ul { + margin: 0; + padding: 0; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0) +} + +a:active, +a:hover { + outline: 0 +} + +img { + border: none +} + +li { + list-style: none +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +h4, +h5, +h6 { + font-size: 100% +} + +button, +input, +optgroup, +option, +select, +textarea { + font-family: inherit; + font-size: inherit; + font-style: inherit; + font-weight: inherit; + outline: 0 +} + +pre { + white-space: pre-wrap; + white-space: -moz-pre-wrap; + white-space: -pre-wrap; + white-space: -o-pre-wrap; + word-wrap: break-word +} + +body { + line-height: 1.6; + color: rgba(0, 0, 0, .85); + font: 14px Helvetica Neue, Helvetica, PingFang SC, Tahoma, Arial, sans-serif +} + +hr { + line-height: 0; + margin: 10px 0; + padding: 0; + border: none !important; + border-bottom: 1px solid #eee !important; + clear: both; + background: 0 0 +} + +a { + text-decoration: none +} + +a:hover { + color: #777 +} + +a cite { + font-style: normal; + *cursor: pointer +} + +.layui-border-box, +.layui-border-box * { + box-sizing: border-box +} + +.layui-box, +.layui-box * { + box-sizing: content-box +} + +.layui-clear { + clear: both; + *zoom: 1 +} + +.layui-clear:after { + content: '\20'; + clear: both; + *zoom: 1; + display: block; + height: 0 +} + +.layui-inline { + *display: inline; + *zoom: 1 +} + +.layui-btn, +.layui-btn-group, +.layui-edge { + display: inline-block +} + +.layui-inline-container>.layui-inline { + margin-right: 10px; + margin-bottom: 10px +} + +.layui-edge { + width: 0; + border-width: 6px; + border-style: dashed; + border-color: transparent +} + +.layui-edge-top { + top: -4px; + border-bottom-color: #999; + border-bottom-style: solid +} + +.layui-edge-right { + border-left-color: #999; + border-left-style: solid +} + +.layui-edge-bottom { + top: 2px; + border-top-color: #999; + border-top-style: solid +} + +.layui-edge-left { + border-right-color: #999; + border-right-style: solid +} + +.layui-disabled, +.layui-disabled:hover { + color: #d2d2d2 !important; + cursor: not-allowed !important +} + +.layui-circle { + border-radius: 100% +} + +.layui-show { + display: block !important +} + +.layui-hide { + display: none !important +} + +.layui-show-v { + visibility: visible !important +} + +.layui-hide-v { + visibility: hidden !important +} + +@font-face { + font-family: layui-icon; + src: url(../font/iconfont.eot?t=270); + src: url(../font/iconfont.eot?t=270#iefix) format('embedded-opentype'), url(../font/iconfont.woff2?t=270) format('woff2'), url(../font/iconfont.woff?t=270) format('woff'), url(../font/iconfont.ttf?t=270) format('truetype'), url(../font/iconfont.svg?t=270#layui-icon) format('svg') +} + +.layui-icon { + font-family: layui-icon !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.layui-icon-eye:before { + content: "\e695" +} + +.layui-icon-eye-invisible:before { + content: "\e696" +} + +.layui-icon-backspace:before { + content: "\e694" +} + +.layui-icon-help-circle:before { + content: "\e77c" +} + +.layui-icon-tips-fill:before { + content: "\eb2e" +} + +.layui-icon-test:before { + content: "\e692" +} + +.layui-icon-clear:before { + content: "\e788" +} + +.layui-icon-keyboard:before { + content: "\e693" +} + +.layui-icon-heart-fill:before { + content: "\e68f" +} + +.layui-icon-light:before { + content: "\e748" +} + +.layui-icon-music:before { + content: "\e690" +} + +.layui-icon-time:before { + content: "\e68d" +} + +.layui-icon-ie:before { + content: "\e7bb" +} + +.layui-icon-firefox:before { + content: "\e686" +} + +.layui-icon-at:before { + content: "\e687" +} + +.layui-icon-bluetooth:before { + content: "\e689" +} + +.layui-icon-chrome:before { + content: "\e68a" +} + +.layui-icon-edge:before { + content: "\e68b" +} + +.layui-icon-heart:before { + content: "\e68c" +} + +.layui-icon-key:before { + content: "\e683" +} + +.layui-icon-android:before { + content: "\e684" +} + +.layui-icon-mike:before { + content: "\e6dc" +} + +.layui-icon-mute:before { + content: "\e685" +} + +.layui-icon-gift:before { + content: "\e627" +} + +.layui-icon-windows:before { + content: "\e67f" +} + +.layui-icon-ios:before { + content: "\e680" +} + +.layui-icon-logout:before { + content: "\e682" +} + +.layui-icon-wifi:before { + content: "\e7e0" +} + +.layui-icon-rss:before { + content: "\e808" +} + +.layui-icon-email:before { + content: "\e618" +} + +.layui-icon-reduce-circle:before { + content: "\e616" +} + +.layui-icon-transfer:before { + content: "\e691" +} + +.layui-icon-service:before { + content: "\e626" +} + +.layui-icon-addition:before { + content: "\e624" +} + +.layui-icon-subtraction:before { + content: "\e67e" +} + +.layui-icon-slider:before { + content: "\e714" +} + +.layui-icon-print:before { + content: "\e66d" +} + +.layui-icon-export:before { + content: "\e67d" +} + +.layui-icon-cols:before { + content: "\e610" +} + +.layui-icon-screen-full:before { + content: "\e622" +} + +.layui-icon-screen-restore:before { + content: "\e758" +} + +.layui-icon-rate-half:before { + content: "\e6c9" +} + +.layui-icon-rate-solid:before { + content: "\e67a" +} + +.layui-icon-rate:before { + content: "\e67b" +} + +.layui-icon-cellphone:before { + content: "\e678" +} + +.layui-icon-vercode:before { + content: "\e679" +} + +.layui-icon-login-weibo:before { + content: "\e675" +} + +.layui-icon-login-qq:before { + content: "\e676" +} + +.layui-icon-login-wechat:before { + content: "\e677" +} + +.layui-icon-username:before { + content: "\e66f" +} + +.layui-icon-password:before { + content: "\e673" +} + +.layui-icon-refresh-3:before { + content: "\e9aa" +} + +.layui-icon-auz:before { + content: "\e672" +} + +.layui-icon-shrink-right:before { + content: "\e668" +} + +.layui-icon-spread-left:before { + content: "\e66b" +} + +.layui-icon-snowflake:before { + content: "\e6b1" +} + +.layui-icon-tips:before { + content: "\e702" +} + +.layui-icon-note:before { + content: "\e66e" +} + +.layui-icon-senior:before { + content: "\e674" +} + +.layui-icon-refresh-1:before { + content: "\e666" +} + +.layui-icon-refresh:before { + content: "\e669" +} + +.layui-icon-flag:before { + content: "\e66c" +} + +.layui-icon-theme:before { + content: "\e66a" +} + +.layui-icon-notice:before { + content: "\e667" +} + +.layui-icon-console:before { + content: "\e665" +} + +.layui-icon-website:before { + content: "\e7ae" +} + +.layui-icon-face-surprised:before { + content: "\e664" +} + +.layui-icon-set:before { + content: "\e716" +} + +.layui-icon-template:before { + content: "\e663" +} + +.layui-icon-app:before { + content: "\e653" +} + +.layui-icon-template-1:before { + content: "\e656" +} + +.layui-icon-home:before { + content: "\e68e" +} + +.layui-icon-female:before { + content: "\e661" +} + +.layui-icon-male:before { + content: "\e662" +} + +.layui-icon-tread:before { + content: "\e6c5" +} + +.layui-icon-praise:before { + content: "\e6c6" +} + +.layui-icon-rmb:before { + content: "\e65e" +} + +.layui-icon-more:before { + content: "\e65f" +} + +.layui-icon-camera:before { + content: "\e660" +} + +.layui-icon-cart-simple:before { + content: "\e698" +} + +.layui-icon-face-cry:before { + content: "\e69c" +} + +.layui-icon-face-smile:before { + content: "\e6af" +} + +.layui-icon-survey:before { + content: "\e6b2" +} + +.layui-icon-read:before { + content: "\e705" +} + +.layui-icon-location:before { + content: "\e715" +} + +.layui-icon-dollar:before { + content: "\e659" +} + +.layui-icon-diamond:before { + content: "\e735" +} + +.layui-icon-return:before { + content: "\e65c" +} + +.layui-icon-camera-fill:before { + content: "\e65d" +} + +.layui-icon-fire:before { + content: "\e756" +} + +.layui-icon-more-vertical:before { + content: "\e671" +} + +.layui-icon-cart:before { + content: "\e657" +} + +.layui-icon-star-fill:before { + content: "\e658" +} + +.layui-icon-prev:before { + content: "\e65a" +} + +.layui-icon-next:before { + content: "\e65b" +} + +.layui-icon-upload:before { + content: "\e67c" +} + +.layui-icon-upload-drag:before { + content: "\e681" +} + +.layui-icon-user:before { + content: "\e770" +} + +.layui-icon-file-b:before { + content: "\e655" +} + +.layui-icon-component:before { + content: "\e857" +} + +.layui-icon-find-fill:before { + content: "\e670" +} + +.layui-icon-loading:before { + content: "\e63d" +} + +.layui-icon-loading-1:before { + content: "\e63e" +} + +.layui-icon-add-1:before { + content: "\e654" +} + +.layui-icon-pause:before { + content: "\e651" +} + +.layui-icon-play:before { + content: "\e652" +} + +.layui-icon-video:before { + content: "\e6ed" +} + +.layui-icon-headset:before { + content: "\e6fc" +} + +.layui-icon-voice:before { + content: "\e688" +} + +.layui-icon-speaker:before { + content: "\e645" +} + +.layui-icon-fonts-del:before { + content: "\e64f" +} + +.layui-icon-fonts-html:before { + content: "\e64b" +} + +.layui-icon-fonts-code:before { + content: "\e64e" +} + +.layui-icon-fonts-strong:before { + content: "\e62b" +} + +.layui-icon-unlink:before { + content: "\e64d" +} + +.layui-icon-picture:before { + content: "\e64a" +} + +.layui-icon-link:before { + content: "\e64c" +} + +.layui-icon-face-smile-b:before { + content: "\e650" +} + +.layui-icon-align-center:before { + content: "\e647" +} + +.layui-icon-align-right:before { + content: "\e648" +} + +.layui-icon-align-left:before { + content: "\e649" +} + +.layui-icon-fonts-u:before { + content: "\e646" +} + +.layui-icon-fonts-i:before { + content: "\e644" +} + +.layui-icon-tabs:before { + content: "\e62a" +} + +.layui-icon-circle:before { + content: "\e63f" +} + +.layui-icon-radio:before { + content: "\e643" +} + +.layui-icon-share:before { + content: "\e641" +} + +.layui-icon-edit:before { + content: "\e642" +} + +.layui-icon-delete:before { + content: "\e640" +} + +.layui-icon-engine:before { + content: "\e628" +} + +.layui-icon-chart-screen:before { + content: "\e629" +} + +.layui-icon-chart:before { + content: "\e62c" +} + +.layui-icon-table:before { + content: "\e62d" +} + +.layui-icon-tree:before { + content: "\e62e" +} + +.layui-icon-upload-circle:before { + content: "\e62f" +} + +.layui-icon-templeate-1:before { + content: "\e630" +} + +.layui-icon-util:before { + content: "\e631" +} + +.layui-icon-layouts:before { + content: "\e632" +} + +.layui-icon-prev-circle:before { + content: "\e633" +} + +.layui-icon-carousel:before { + content: "\e634" +} + +.layui-icon-code-circle:before { + content: "\e635" +} + +.layui-icon-water:before { + content: "\e636" +} + +.layui-icon-date:before { + content: "\e637" +} + +.layui-icon-layer:before { + content: "\e638" +} + +.layui-icon-fonts-clear:before { + content: "\e639" +} + +.layui-icon-dialogue:before { + content: "\e63a" +} + +.layui-icon-cellphone-fine:before { + content: "\e63b" +} + +.layui-icon-form:before { + content: "\e63c" +} + +.layui-icon-file:before { + content: "\e621" +} + +.layui-icon-triangle-r:before { + content: "\e623" +} + +.layui-icon-triangle-d:before { + content: "\e625" +} + +.layui-icon-set-sm:before { + content: "\e620" +} + +.layui-icon-add-circle:before { + content: "\e61f" +} + +.layui-icon-layim-download:before { + content: "\e61e" +} + +.layui-icon-layim-uploadfile:before { + content: "\e61d" +} + +.layui-icon-404:before { + content: "\e61c" +} + +.layui-icon-about:before { + content: "\e60b" +} + +.layui-icon-layim-theme:before { + content: "\e61b" +} + +.layui-icon-down:before { + content: "\e61a" +} + +.layui-icon-up:before { + content: "\e619" +} + +.layui-icon-circle-dot:before { + content: "\e617" +} + +.layui-icon-set-fill:before { + content: "\e614" +} + +.layui-icon-search:before { + content: "\e615" +} + +.layui-icon-friends:before { + content: "\e612" +} + +.layui-icon-group:before { + content: "\e613" +} + +.layui-icon-reply-fill:before { + content: "\e611" +} + +.layui-icon-menu-fill:before { + content: "\e60f" +} + +.layui-icon-face-smile-fine:before { + content: "\e60c" +} + +.layui-icon-picture-fine:before { + content: "\e60d" +} + +.layui-icon-log:before { + content: "\e60e" +} + +.layui-icon-list:before { + content: "\e60a" +} + +.layui-icon-release:before { + content: "\e609" +} + +.layui-icon-add-circle-fine:before { + content: "\e608" +} + +.layui-icon-ok:before { + content: "\e605" +} + +.layui-icon-help:before { + content: "\e607" +} + +.layui-icon-chat:before { + content: "\e606" +} + +.layui-icon-top:before { + content: "\e604" +} + +.layui-icon-right:before { + content: "\e602" +} + +.layui-icon-left:before { + content: "\e603" +} + +.layui-icon-star:before { + content: "\e600" +} + +.layui-icon-download-circle:before { + content: "\e601" +} + +.layui-icon-close:before { + content: "\1006" +} + +.layui-icon-close-fill:before { + content: "\1007" +} + +.layui-icon-ok-circle:before { + content: "\1005" +} + +.layui-main { + width: 1140px; + margin: 0 auto +} + +.layui-header { + z-index: 1000; + height: 60px +} + +.layui-header a:hover { + transition: all .5s; + -webkit-transition: all .5s +} + +.layui-side { + position: fixed; + left: 0; + top: 0; + bottom: 0; + z-index: 999; + width: 200px +} + +.layui-side-scroll { + position: relative; + width: 220px; + height: 100% +} + +.layui-body { + position: relative; + left: 200px; + right: 0; + top: 0; + bottom: 0; + z-index: 900; + width: auto; + box-sizing: border-box +} + +.layui-layout-admin .layui-header { + position: fixed; + top: 0; + left: 0; + right: 0; + background-color: #23262E +} + +.layui-layout-admin .layui-side { + top: 60px; + width: 200px; + overflow-x: hidden +} + +.layui-layout-admin .layui-body { + position: absolute; + top: 60px; + padding-bottom: 44px +} + +.layui-layout-admin .layui-main { + width: auto; + margin: 0 15px +} + +.layui-layout-admin .layui-footer { + position: fixed; + left: 200px; + right: 0; + bottom: 0; + z-index: 990; + height: 44px; + line-height: 44px; + padding: 0 15px; + box-shadow: -1px 0 4px rgb(0 0 0 / 12%); + background-color: #FAFAFA +} + +.layui-layout-admin .layui-logo { + position: absolute; + left: 0; + top: 0; + width: 200px; + height: 100%; + line-height: 60px; + text-align: center; + color: #009688; + font-size: 16px; + box-shadow: 0 1px 2px 0 rgb(0 0 0 / 15%) +} + +.layui-layout-admin .layui-header .layui-nav { + background: 0 0 +} + +.layui-layout-left { + position: absolute !important; + left: 200px; + top: 0 +} + +.layui-layout-right { + position: absolute !important; + right: 0; + top: 0 +} + +.layui-container { + position: relative; + margin: 0 auto; + padding: 0 15px; + box-sizing: border-box +} + +.layui-fluid { + position: relative; + margin: 0 auto; + padding: 0 15px +} + +.layui-row:after, +.layui-row:before { + content: ""; + display: block; + clear: both +} + +.layui-col-lg1, +.layui-col-lg10, +.layui-col-lg11, +.layui-col-lg12, +.layui-col-lg2, +.layui-col-lg3, +.layui-col-lg4, +.layui-col-lg5, +.layui-col-lg6, +.layui-col-lg7, +.layui-col-lg8, +.layui-col-lg9, +.layui-col-md1, +.layui-col-md10, +.layui-col-md11, +.layui-col-md12, +.layui-col-md2, +.layui-col-md3, +.layui-col-md4, +.layui-col-md5, +.layui-col-md6, +.layui-col-md7, +.layui-col-md8, +.layui-col-md9, +.layui-col-sm1, +.layui-col-sm10, +.layui-col-sm11, +.layui-col-sm12, +.layui-col-sm2, +.layui-col-sm3, +.layui-col-sm4, +.layui-col-sm5, +.layui-col-sm6, +.layui-col-sm7, +.layui-col-sm8, +.layui-col-sm9, +.layui-col-xs1, +.layui-col-xs10, +.layui-col-xs11, +.layui-col-xs12, +.layui-col-xs2, +.layui-col-xs3, +.layui-col-xs4, +.layui-col-xs5, +.layui-col-xs6, +.layui-col-xs7, +.layui-col-xs8, +.layui-col-xs9 { + position: relative; + display: block; + box-sizing: border-box +} + +.layui-col-xs1, +.layui-col-xs10, +.layui-col-xs11, +.layui-col-xs12, +.layui-col-xs2, +.layui-col-xs3, +.layui-col-xs4, +.layui-col-xs5, +.layui-col-xs6, +.layui-col-xs7, +.layui-col-xs8, +.layui-col-xs9 { + float: left +} + +.layui-col-xs1 { + width: 8.33333333% +} + +.layui-col-xs2 { + width: 16.66666667% +} + +.layui-col-xs3 { + width: 25% +} + +.layui-col-xs4 { + width: 33.33333333% +} + +.layui-col-xs5 { + width: 41.66666667% +} + +.layui-col-xs6 { + width: 50% +} + +.layui-col-xs7 { + width: 58.33333333% +} + +.layui-col-xs8 { + width: 66.66666667% +} + +.layui-col-xs9 { + width: 75% +} + +.layui-col-xs10 { + width: 83.33333333% +} + +.layui-col-xs11 { + width: 91.66666667% +} + +.layui-col-xs12 { + width: 100% +} + +.layui-col-xs-offset1 { + margin-left: 8.33333333% +} + +.layui-col-xs-offset2 { + margin-left: 16.66666667% +} + +.layui-col-xs-offset3 { + margin-left: 25% +} + +.layui-col-xs-offset4 { + margin-left: 33.33333333% +} + +.layui-col-xs-offset5 { + margin-left: 41.66666667% +} + +.layui-col-xs-offset6 { + margin-left: 50% +} + +.layui-col-xs-offset7 { + margin-left: 58.33333333% +} + +.layui-col-xs-offset8 { + margin-left: 66.66666667% +} + +.layui-col-xs-offset9 { + margin-left: 75% +} + +.layui-col-xs-offset10 { + margin-left: 83.33333333% +} + +.layui-col-xs-offset11 { + margin-left: 91.66666667% +} + +.layui-col-xs-offset12 { + margin-left: 100% +} + +@media screen and (max-width:768px) { + .layui-hide-xs { + display: none !important + } + + .layui-show-xs-block { + display: block !important + } + + .layui-show-xs-inline { + display: inline !important + } + + .layui-show-xs-inline-block { + display: inline-block !important + } +} + +@media screen and (min-width:768px) { + .layui-container { + width: 750px + } + + .layui-hide-sm { + display: none !important + } + + .layui-show-sm-block { + display: block !important + } + + .layui-show-sm-inline { + display: inline !important + } + + .layui-show-sm-inline-block { + display: inline-block !important + } + + .layui-col-sm1, + .layui-col-sm10, + .layui-col-sm11, + .layui-col-sm12, + .layui-col-sm2, + .layui-col-sm3, + .layui-col-sm4, + .layui-col-sm5, + .layui-col-sm6, + .layui-col-sm7, + .layui-col-sm8, + .layui-col-sm9 { + float: left + } + + .layui-col-sm1 { + width: 8.33333333% + } + + .layui-col-sm2 { + width: 16.66666667% + } + + .layui-col-sm3 { + width: 25% + } + + .layui-col-sm4 { + width: 33.33333333% + } + + .layui-col-sm5 { + width: 41.66666667% + } + + .layui-col-sm6 { + width: 50% + } + + .layui-col-sm7 { + width: 58.33333333% + } + + .layui-col-sm8 { + width: 66.66666667% + } + + .layui-col-sm9 { + width: 75% + } + + .layui-col-sm10 { + width: 83.33333333% + } + + .layui-col-sm11 { + width: 91.66666667% + } + + .layui-col-sm12 { + width: 100% + } + + .layui-col-sm-offset1 { + margin-left: 8.33333333% + } + + .layui-col-sm-offset2 { + margin-left: 16.66666667% + } + + .layui-col-sm-offset3 { + margin-left: 25% + } + + .layui-col-sm-offset4 { + margin-left: 33.33333333% + } + + .layui-col-sm-offset5 { + margin-left: 41.66666667% + } + + .layui-col-sm-offset6 { + margin-left: 50% + } + + .layui-col-sm-offset7 { + margin-left: 58.33333333% + } + + .layui-col-sm-offset8 { + margin-left: 66.66666667% + } + + .layui-col-sm-offset9 { + margin-left: 75% + } + + .layui-col-sm-offset10 { + margin-left: 83.33333333% + } + + .layui-col-sm-offset11 { + margin-left: 91.66666667% + } + + .layui-col-sm-offset12 { + margin-left: 100% + } +} + +@media screen and (min-width:992px) { + .layui-container { + width: 970px + } + + .layui-hide-md { + display: none !important + } + + .layui-show-md-block { + display: block !important + } + + .layui-show-md-inline { + display: inline !important + } + + .layui-show-md-inline-block { + display: inline-block !important + } + + .layui-col-md1, + .layui-col-md10, + .layui-col-md11, + .layui-col-md12, + .layui-col-md2, + .layui-col-md3, + .layui-col-md4, + .layui-col-md5, + .layui-col-md6, + .layui-col-md7, + .layui-col-md8, + .layui-col-md9 { + float: left + } + + .layui-col-md1 { + width: 8.33333333% + } + + .layui-col-md2 { + width: 16.66666667% + } + + .layui-col-md3 { + width: 25% + } + + .layui-col-md4 { + width: 33.33333333% + } + + .layui-col-md5 { + width: 41.66666667% + } + + .layui-col-md6 { + width: 50% + } + + .layui-col-md7 { + width: 58.33333333% + } + + .layui-col-md8 { + width: 66.66666667% + } + + .layui-col-md9 { + width: 75% + } + + .layui-col-md10 { + width: 83.33333333% + } + + .layui-col-md11 { + width: 91.66666667% + } + + .layui-col-md12 { + width: 100% + } + + .layui-col-md-offset1 { + margin-left: 8.33333333% + } + + .layui-col-md-offset2 { + margin-left: 16.66666667% + } + + .layui-col-md-offset3 { + margin-left: 25% + } + + .layui-col-md-offset4 { + margin-left: 33.33333333% + } + + .layui-col-md-offset5 { + margin-left: 41.66666667% + } + + .layui-col-md-offset6 { + margin-left: 50% + } + + .layui-col-md-offset7 { + margin-left: 58.33333333% + } + + .layui-col-md-offset8 { + margin-left: 66.66666667% + } + + .layui-col-md-offset9 { + margin-left: 75% + } + + .layui-col-md-offset10 { + margin-left: 83.33333333% + } + + .layui-col-md-offset11 { + margin-left: 91.66666667% + } + + .layui-col-md-offset12 { + margin-left: 100% + } +} + +@media screen and (min-width:1200px) { + .layui-container { + width: 1170px + } + + .layui-hide-lg { + display: none !important + } + + .layui-show-lg-block { + display: block !important + } + + .layui-show-lg-inline { + display: inline !important + } + + .layui-show-lg-inline-block { + display: inline-block !important + } + + .layui-col-lg1, + .layui-col-lg10, + .layui-col-lg11, + .layui-col-lg12, + .layui-col-lg2, + .layui-col-lg3, + .layui-col-lg4, + .layui-col-lg5, + .layui-col-lg6, + .layui-col-lg7, + .layui-col-lg8, + .layui-col-lg9 { + float: left + } + + .layui-col-lg1 { + width: 8.33333333% + } + + .layui-col-lg2 { + width: 16.66666667% + } + + .layui-col-lg3 { + width: 25% + } + + .layui-col-lg4 { + width: 33.33333333% + } + + .layui-col-lg5 { + width: 41.66666667% + } + + .layui-col-lg6 { + width: 50% + } + + .layui-col-lg7 { + width: 58.33333333% + } + + .layui-col-lg8 { + width: 66.66666667% + } + + .layui-col-lg9 { + width: 75% + } + + .layui-col-lg10 { + width: 83.33333333% + } + + .layui-col-lg11 { + width: 91.66666667% + } + + .layui-col-lg12 { + width: 100% + } + + .layui-col-lg-offset1 { + margin-left: 8.33333333% + } + + .layui-col-lg-offset2 { + margin-left: 16.66666667% + } + + .layui-col-lg-offset3 { + margin-left: 25% + } + + .layui-col-lg-offset4 { + margin-left: 33.33333333% + } + + .layui-col-lg-offset5 { + margin-left: 41.66666667% + } + + .layui-col-lg-offset6 { + margin-left: 50% + } + + .layui-col-lg-offset7 { + margin-left: 58.33333333% + } + + .layui-col-lg-offset8 { + margin-left: 66.66666667% + } + + .layui-col-lg-offset9 { + margin-left: 75% + } + + .layui-col-lg-offset10 { + margin-left: 83.33333333% + } + + .layui-col-lg-offset11 { + margin-left: 91.66666667% + } + + .layui-col-lg-offset12 { + margin-left: 100% + } +} + +.layui-col-space1 { + margin: -.5px +} + +.layui-col-space1>* { + padding: .5px +} + +.layui-col-space2 { + margin: -1px +} + +.layui-col-space2>* { + padding: 1px +} + +.layui-col-space4 { + margin: -2px +} + +.layui-col-space4>* { + padding: 2px +} + +.layui-col-space5 { + margin: -2.5px +} + +.layui-col-space5>* { + padding: 2.5px +} + +.layui-col-space6 { + margin: -3px +} + +.layui-col-space6>* { + padding: 3px +} + +.layui-col-space8 { + margin: -4px +} + +.layui-col-space8>* { + padding: 4px +} + +.layui-col-space10 { + margin: -5px +} + +.layui-col-space10>* { + padding: 5px +} + +.layui-col-space12 { + margin: -6px +} + +.layui-col-space12>* { + padding: 6px +} + +.layui-col-space14 { + margin: -7px +} + +.layui-col-space14>* { + padding: 7px +} + +.layui-col-space15 { + margin: -7.5px +} + +.layui-col-space15>* { + padding: 7.5px +} + +.layui-col-space16 { + margin: -8px +} + +.layui-col-space16>* { + padding: 8px +} + +.layui-col-space18 { + margin: -9px +} + +.layui-col-space18>* { + padding: 9px +} + +.layui-col-space20 { + margin: -10px +} + +.layui-col-space20>* { + padding: 10px +} + +.layui-col-space22 { + margin: -11px +} + +.layui-col-space22>* { + padding: 11px +} + +.layui-col-space24 { + margin: -12px +} + +.layui-col-space24>* { + padding: 12px +} + +.layui-col-space25 { + margin: -12.5px +} + +.layui-col-space25>* { + padding: 12.5px +} + +.layui-col-space26 { + margin: -13px +} + +.layui-col-space26>* { + padding: 13px +} + +.layui-col-space28 { + margin: -14px +} + +.layui-col-space28>* { + padding: 14px +} + +.layui-col-space30 { + margin: -15px +} + +.layui-col-space30>* { + padding: 15px +} + +.layui-btn, +.layui-input, +.layui-select, +.layui-textarea, +.layui-upload-button { + outline: 0; + -webkit-appearance: none; + transition: all .3s; + -webkit-transition: all .3s; + box-sizing: border-box +} + +.layui-elem-quote { + margin-bottom: 10px; + padding: 15px; + line-height: 1.6; + border-left: 5px solid #5FB878; + border-radius: 0 2px 2px 0; + background-color: #FAFAFA +} + +.layui-quote-nm { + border-style: solid; + border-width: 1px 1px 1px 5px; + background: 0 0 +} + +.layui-elem-field { + margin-bottom: 10px; + padding: 0; + border-width: 1px; + border-style: solid +} + +.layui-elem-field legend { + margin-left: 20px; + padding: 0 10px; + font-size: 20px; + font-weight: 300 +} + +.layui-field-title { + margin: 10px 0 20px; + border-width: 1px 0 0 +} + +.layui-field-box { + padding: 15px +} + +.layui-field-title .layui-field-box { + padding: 10px 0 +} + +.layui-progress { + position: relative; + height: 6px; + border-radius: 20px; + background-color: #eee +} + +.layui-progress-bar { + position: absolute; + left: 0; + top: 0; + width: 0; + max-width: 100%; + height: 6px; + border-radius: 20px; + text-align: right; + background-color: #5FB878; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-progress-big, +.layui-progress-big .layui-progress-bar { + height: 18px; + line-height: 18px +} + +.layui-progress-text { + position: relative; + top: -20px; + line-height: 18px; + font-size: 12px; + color: #666 +} + +.layui-progress-big .layui-progress-text { + position: static; + padding: 0 10px; + color: #fff +} + +.layui-collapse { + border-width: 1px; + border-style: solid; + border-radius: 2px +} + +.layui-colla-content, +.layui-colla-item { + border-top-width: 1px; + border-top-style: solid +} + +.layui-colla-item:first-child { + border-top: none +} + +.layui-colla-title { + position: relative; + height: 42px; + line-height: 42px; + padding: 0 15px 0 35px; + color: #333; + background-color: #FAFAFA; + cursor: pointer; + font-size: 14px; + overflow: hidden +} + +.layui-colla-content { + display: none; + padding: 10px 15px; + line-height: 1.6; + color: #666 +} + +.layui-colla-icon { + position: absolute; + left: 15px; + top: 0; + font-size: 14px +} + +.layui-card-body, +.layui-card-header, +.layui-form-label, +.layui-form-mid, +.layui-input-block, +.layui-input-inline, +.layui-input-wrap, +.layui-panel, +.layui-textarea { + position: relative +} + +.layui-card { + margin-bottom: 15px; + border-radius: 2px; + background-color: #fff; + box-shadow: 0 1px 2px 0 rgba(0, 0, 0, .05) +} + +.layui-form-select dl, +.layui-panel { + box-shadow: 1px 1px 4px rgb(0 0 0 / 8%) +} + +.layui-card:last-child { + margin-bottom: 0 +} + +.layui-card-header { + height: 42px; + line-height: 42px; + padding: 0 15px; + border-bottom: 1px solid #f6f6f6; + color: #333; + border-radius: 2px 2px 0 0; + font-size: 14px +} + +.layui-card-body { + padding: 10px 15px; + line-height: 24px +} + +.layui-card-body[pad15] { + padding: 15px +} + +.layui-card-body[pad20] { + padding: 20px +} + +.layui-card-body .layui-table { + margin: 5px 0 +} + +.layui-card .layui-tab { + margin: 0 +} + +.layui-panel { + border-width: 1px; + border-style: solid; + border-radius: 2px; + background-color: #fff; + color: #666 +} + +.layui-bg-black, +.layui-bg-blue, +.layui-bg-cyan, +.layui-bg-green, +.layui-bg-orange, +.layui-bg-red { + color: #fff !important +} + +.layui-panel-window { + position: relative; + padding: 15px; + border-radius: 0; + border-top: 5px solid #eee; + background-color: #fff +} + +.layui-border, +.layui-border-black, +.layui-border-blue, +.layui-border-cyan, +.layui-border-green, +.layui-border-orange, +.layui-border-red { + border-width: 1px; + border-style: solid +} + +.layui-auxiliar-moving { + position: fixed; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + height: 100%; + background: 0 0; + z-index: 9999999999 +} + +.layui-bg-red { + background-color: #FF5722 !important +} + +.layui-bg-orange { + background-color: #FFB800 !important +} + +.layui-bg-green { + background-color: #009688 !important +} + +.layui-bg-cyan { + background-color: #2F4056 !important +} + +.layui-bg-blue { + background-color: #1E9FFF !important +} + +.layui-bg-black { + background-color: #393D49 !important +} + +.layui-bg-gray { + background-color: #FAFAFA !important; + color: #666 !important +} + +.layui-badge-rim, +.layui-border, +.layui-colla-content, +.layui-colla-item, +.layui-collapse, +.layui-elem-field, +.layui-form-pane .layui-form-item[pane], +.layui-form-pane .layui-form-label, +.layui-iconpicker, +.layui-iconpicker-main, +.layui-input, +.layui-input-split, +.layui-layedit, +.layui-layedit-tool, +.layui-panel, +.layui-quote-nm, +.layui-select, +.layui-tab-bar, +.layui-tab-card, +.layui-tab-title, +.layui-tab-title .layui-this:after, +.layui-textarea { + border-color: #eee +} + +.layui-border-red { + border-color: #FF5722 !important; + color: #FF5722 !important +} + +.layui-border-orange { + border-color: #FFB800 !important; + color: #FFB800 !important +} + +.layui-border-green { + border-color: #009688 !important; + color: #009688 !important +} + +.layui-border-cyan { + border-color: #2F4056 !important; + color: #2F4056 !important +} + +.layui-border-blue { + border-color: #1E9FFF !important; + color: #1E9FFF !important +} + +.layui-border-black { + border-color: #393D49 !important; + color: #393D49 !important +} + +.layui-timeline-item:before { + background-color: #eee +} + +.layui-text { + line-height: 1.6; + font-size: 14px; + color: #666 +} + +.layui-text h1, +.layui-text h2, +.layui-text h3 { + font-weight: 500; + color: #333 +} + +.layui-text h1 { + font-size: 30px +} + +.layui-text h2 { + font-size: 24px +} + +.layui-text h3 { + font-size: 18px +} + +.layui-text a:not(.layui-btn) { + color: #01AAED +} + +.layui-text a:not(.layui-btn):hover { + text-decoration: underline +} + +.layui-text ul { + padding: 5px 0 5px 15px +} + +.layui-text ul li { + margin-top: 5px; + list-style-type: disc +} + +.layui-text em, +.layui-word-aux { + color: #999 !important; + padding-left: 5px !important; + padding-right: 5px !important +} + +.layui-text p { + margin: 10px 0 +} + +.layui-text p:first-child { + margin-top: 0 +} + +.layui-font-12 { + font-size: 12px !important +} + +.layui-font-14 { + font-size: 14px !important +} + +.layui-font-16 { + font-size: 16px !important +} + +.layui-font-18 { + font-size: 18px !important +} + +.layui-font-20 { + font-size: 20px !important +} + +.layui-font-22 { + font-size: 22px !important +} + +.layui-font-24 { + font-size: 24px !important +} + +.layui-font-26 { + font-size: 26px !important +} + +.layui-font-28 { + font-size: 28px !important +} + +.layui-font-30 { + font-size: 30px !important +} + +.layui-font-red { + color: #FF5722 !important +} + +.layui-font-orange { + color: #FFB800 !important +} + +.layui-font-green { + color: #009688 !important +} + +.layui-font-cyan { + color: #2F4056 !important +} + +.layui-font-blue { + color: #01AAED !important +} + +.layui-font-black { + color: #000 !important +} + +.layui-font-gray { + color: #c2c2c2 !important +} + +.layui-btn { + height: 38px; + line-height: 38px; + border: 1px solid transparent; + padding: 0 18px; + background-color: #009688; + color: #fff; + white-space: nowrap; + text-align: center; + font-size: 14px; + border-radius: 2px; + cursor: pointer +} + +.layui-btn:hover { + opacity: .8; + filter: alpha(opacity=80); + color: #fff +} + +.layui-btn:active { + opacity: 1; + filter: alpha(opacity=100) +} + +.layui-btn+.layui-btn { + margin-left: 10px +} + +.layui-btn-container { + font-size: 0 +} + +.layui-btn-container .layui-btn { + margin-right: 10px; + margin-bottom: 10px +} + +.layui-btn-container .layui-btn+.layui-btn { + margin-left: 0 +} + +.layui-table .layui-btn-container .layui-btn { + margin-bottom: 9px +} + +.layui-btn-radius { + border-radius: 100px +} + +.layui-btn .layui-icon { + padding: 0 2px; + vertical-align: middle\9; + vertical-align: bottom +} + +.layui-btn-primary { + border-color: #d2d2d2; + background: 0 0; + color: #666 +} + +.layui-btn-primary:hover { + border-color: #009688; + color: #333 +} + +.layui-btn-normal { + background-color: #1E9FFF +} + +.layui-btn-warm { + background-color: #FFB800 +} + +.layui-btn-danger { + background-color: #FF5722 +} + +.layui-btn-checked { + background-color: #5FB878 +} + +.layui-btn-disabled, +.layui-btn-disabled:active, +.layui-btn-disabled:hover { + border-color: #eee !important; + background-color: #FBFBFB !important; + color: #d2d2d2 !important; + cursor: not-allowed !important; + opacity: 1 +} + +.layui-btn-lg { + height: 44px; + line-height: 44px; + padding: 0 25px; + font-size: 16px +} + +.layui-btn-sm { + height: 30px; + line-height: 30px; + padding: 0 10px; + font-size: 12px +} + +.layui-btn-xs { + height: 22px; + line-height: 22px; + padding: 0 5px; + font-size: 12px +} + +.layui-btn-xs i { + font-size: 12px !important +} + +.layui-btn-group { + vertical-align: middle; + font-size: 0 +} + +.layui-btn-group .layui-btn { + margin-left: 0 !important; + margin-right: 0 !important; + border-left: 1px solid rgba(255, 255, 255, .5); + border-radius: 0 +} + +.layui-btn-group .layui-btn-primary { + border-left: none +} + +.layui-btn-group .layui-btn-primary:hover { + border-color: #d2d2d2; + color: #009688 +} + +.layui-btn-group .layui-btn:first-child { + border-left: none; + border-radius: 2px 0 0 2px +} + +.layui-btn-group .layui-btn-primary:first-child { + border-left: 1px solid #d2d2d2 +} + +.layui-btn-group .layui-btn:last-child { + border-radius: 0 2px 2px 0 +} + +.layui-btn-group .layui-btn+.layui-btn { + margin-left: 0 +} + +.layui-btn-group+.layui-btn-group { + margin-left: 10px +} + +.layui-btn-fluid { + width: 100% +} + +.layui-input, +.layui-select, +.layui-textarea { + height: 38px; + line-height: 1.3; + line-height: 38px\9; + border-width: 1px; + border-style: solid; + background-color: #fff; + color: rgba(0, 0, 0, .85); + border-radius: 2px +} + +.layui-input::-webkit-input-placeholder, +.layui-select::-webkit-input-placeholder, +.layui-textarea::-webkit-input-placeholder { + line-height: 1.3 +} + +.layui-input, +.layui-textarea { + display: block; + width: 100%; + padding-left: 10px +} + +.layui-input:hover, +.layui-textarea:hover { + border-color: #eee !important +} + +.layui-input:focus, +.layui-textarea:focus { + border-color: #d2d2d2 !important +} + +.layui-textarea { + min-height: 100px; + height: auto; + line-height: 20px; + padding: 6px 10px; + resize: vertical +} + +.layui-select { + padding: 0 10px +} + +.layui-form input[type=checkbox], +.layui-form input[type=radio], +.layui-form select { + display: none +} + +.layui-form [lay-ignore] { + display: initial +} + +.layui-form-item { + margin-bottom: 15px; + clear: both; + *zoom: 1 +} + +.layui-form-item:after { + content: '\20'; + clear: both; + *zoom: 1; + display: block; + height: 0 +} + +.layui-form-label { + float: left; + display: block; + padding: 9px 15px; + width: 80px; + font-weight: 400; + line-height: 20px; + text-align: right +} + +.layui-form-label-col { + display: block; + float: none; + padding: 9px 0; + line-height: 20px; + text-align: left +} + +.layui-form-item .layui-inline { + margin-bottom: 5px; + margin-right: 10px +} + +.layui-input-block { + margin-left: 110px; + min-height: 36px +} + +.layui-input-inline { + display: inline-block; + vertical-align: middle +} + +.layui-form-item .layui-input-inline { + float: left; + width: 190px; + margin-right: 10px +} + +.layui-form-text .layui-input-inline { + width: auto +} + +.layui-form-mid { + float: left; + display: block; + padding: 9px 0 !important; + line-height: 20px; + margin-right: 10px +} + +.layui-form-danger+.layui-form-select .layui-input, +.layui-form-danger:focus { + border-color: #FF5722 !important +} + +.layui-input-wrap { + height: 38px; + line-height: 38px +} + +.layui-input-wrap .layui-input { + padding-right: 35px; + cursor: pointer +} + +.layui-input-wrap .layui-input::-ms-clear, +.layui-input-wrap .layui-input::-ms-reveal { + display: none +} + +.layui-input-wrap-prefix .layui-input { + padding-left: 35px +} + +.layui-input-prefix, +.layui-input-split, +.layui-input-suffix { + position: absolute; + right: 0; + top: 0; + padding: 0 10px; + width: 35px; + height: 100%; + text-align: center; + transition: all .3s; + cursor: pointer; + pointer-events: none; + box-sizing: border-box +} + +.layui-input-prefix { + left: 0; + border-radius: 2px 0 0 2px +} + +.layui-input-suffix { + right: 0; + border-radius: 0 2px 2px 0 +} + +.layui-input-wrap .layui-input:focus+.layui-input-split { + border-color: #d2d2d2 +} + +.layui-input-prefix .layui-icon, +.layui-input-split .layui-icon, +.layui-input-suffix .layui-icon { + position: relative; + font-size: 16px; + color: rgba(0, 0, 0, .6); + transition: all .3s +} + +.layui-input-wrap .layui-input-prefix.layui-input-split { + border-width: 0 1px 0 0 +} + +.layui-input-wrap-prefix .layui-form-select { + position: static +} + +.layui-input-affix-event .layui-icon { + color: rgba(0, 0, 0, .8) +} + +.layui-input-affix-event .layui-icon-clear { + color: rgba(0, 0, 0, .3) +} + +.layui-input-affix-event .layui-icon:hover { + color: rgba(0, 0, 0, .6) +} + +.layui-input-split { + border-width: 1px; + border-style: solid +} + +.layui-input-affix-event { + pointer-events: auto +} + +.layui-input-group { + position: relative; + display: inline-table; + cursor: pointer +} + +.layui-input-group>* { + display: table-cell; + vertical-align: middle; + position: relative; + cursor: pointer +} + +.layui-input-group .layui-input { + padding-right: 15px +} + +.layui-input-group .layui-input-prefix { + width: auto; + border-right: 0 +} + +.layui-input-group .layui-input-suffix { + width: auto; + border-left: 0 +} + +.layui-form-select { + position: relative +} + +.layui-form-select .layui-input { + padding-right: 30px; + cursor: pointer +} + +.layui-form-select .layui-edge { + position: absolute; + right: 10px; + top: 50%; + margin-top: -3px; + cursor: pointer; + border-width: 6px; + border-top-color: #c2c2c2; + border-top-style: solid; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-form-select dl { + display: none; + position: absolute; + left: 0; + top: 42px; + padding: 5px 0; + z-index: 899; + min-width: 100%; + border: 1px solid #eee; + max-height: 300px; + overflow-y: auto; + background-color: #fff; + border-radius: 2px; + box-sizing: border-box +} + +.layui-form-select dl dd, +.layui-form-select dl dt { + padding: 0 10px; + line-height: 36px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis +} + +.layui-form-select dl dt { + font-size: 12px; + color: #999 +} + +.layui-form-select dl dd { + cursor: pointer +} + +.layui-form-select dl dd:hover { + background-color: #F6F6F6; + -webkit-transition: .5s all; + transition: .5s all +} + +.layui-form-select .layui-select-group dd { + padding-left: 20px +} + +.layui-form-select dl dd.layui-select-tips { + padding-left: 10px !important; + color: #999 +} + +.layui-form-select dl dd.layui-this { + background-color: #F6F6F6; + color: #5FB878; + font-weight: 700 +} + +.layui-form-checkbox, +.layui-form-select dl dd.layui-disabled { + background-color: #fff +} + +.layui-form-selected dl { + display: block +} + +.layui-form-checkbox, +.layui-form-checkbox *, +.layui-form-switch { + display: inline-block; + vertical-align: middle +} + +.layui-form-selected .layui-edge { + margin-top: -9px; + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + margin-top: -3px\9 +} + +:root .layui-form-selected .layui-edge { + margin-top: -9px\0/IE9 +} + +.layui-form-selectup dl { + top: auto; + bottom: 42px +} + +.layui-select-none { + margin: 5px 0; + text-align: center; + color: #999 +} + +.layui-select-disabled .layui-disabled { + border-color: #eee !important +} + +.layui-select-disabled .layui-edge { + border-top-color: #d2d2d2 +} + +.layui-form-checkbox { + position: relative; + height: 30px; + line-height: 30px; + margin-right: 10px; + padding-right: 30px; + cursor: pointer; + font-size: 0; + -webkit-transition: .1s linear; + transition: .1s linear; + box-sizing: border-box +} + +.layui-form-checkbox span { + padding: 0 10px; + height: 100%; + font-size: 14px; + border-radius: 2px 0 0 2px; + background-color: #d2d2d2; + color: #fff; + overflow: hidden +} + +.layui-form-checkbox:hover span { + background-color: #c2c2c2 +} + +.layui-form-checkbox i { + position: absolute; + right: 0; + top: 0; + width: 30px; + height: 28px; + border: 1px solid #d2d2d2; + border-left: none; + border-radius: 0 2px 2px 0; + color: #fff; + font-size: 20px; + text-align: center +} + +.layui-form-checkbox:hover i { + border-color: #c2c2c2; + color: #c2c2c2 +} + +.layui-form-checked, +.layui-form-checked:hover { + border-color: #5FB878 +} + +.layui-form-checked span, +.layui-form-checked:hover span { + background-color: #5FB878 +} + +.layui-form-checked i, +.layui-form-checked:hover i { + color: #5FB878 +} + +.layui-form-item .layui-form-checkbox { + margin-top: 4px +} + +.layui-form-checkbox[lay-skin=primary] { + height: auto !important; + line-height: normal !important; + min-width: 18px; + min-height: 18px; + border: none !important; + margin-right: 0; + padding-left: 28px; + padding-right: 0; + background: 0 0 +} + +.layui-form-checkbox[lay-skin=primary] span { + padding-left: 0; + padding-right: 15px; + line-height: 18px; + background: 0 0; + color: #666 +} + +.layui-form-checkbox[lay-skin=primary] i { + right: auto; + left: 0; + width: 16px; + height: 16px; + line-height: 16px; + border: 1px solid #d2d2d2; + font-size: 12px; + border-radius: 2px; + background-color: #fff; + -webkit-transition: .1s linear; + transition: .1s linear +} + +.layui-form-checkbox[lay-skin=primary]:hover i { + border-color: #5FB878; + color: #fff +} + +.layui-form-checked[lay-skin=primary] i { + border-color: #5FB878 !important; + background-color: #5FB878; + color: #fff +} + +.layui-checkbox-disabled[lay-skin=primary] span { + background: 0 0 !important; + color: #c2c2c2 !important +} + +.layui-checkbox-disabled[lay-skin=primary]:hover i { + border-color: #d2d2d2 +} + +.layui-form-item .layui-form-checkbox[lay-skin=primary] { + margin-top: 10px +} + +.layui-form-switch { + position: relative; + height: 22px; + line-height: 22px; + min-width: 35px; + padding: 0 5px; + margin-top: 8px; + border: 1px solid #d2d2d2; + border-radius: 20px; + cursor: pointer; + background-color: #fff; + -webkit-transition: .1s linear; + transition: .1s linear +} + +.layui-form-switch i { + position: absolute; + left: 5px; + top: 3px; + width: 16px; + height: 16px; + border-radius: 20px; + background-color: #d2d2d2; + -webkit-transition: .1s linear; + transition: .1s linear +} + +.layui-form-switch em { + position: relative; + top: 0; + width: 25px; + margin-left: 21px; + padding: 0 !important; + text-align: center !important; + color: #999 !important; + font-style: normal !important; + font-size: 12px +} + +.layui-form-onswitch { + border-color: #5FB878; + background-color: #5FB878 +} + +.layui-checkbox-disabled, +.layui-checkbox-disabled i { + border-color: #eee !important +} + +.layui-form-onswitch i { + left: 100%; + margin-left: -21px; + background-color: #fff +} + +.layui-form-onswitch em { + margin-left: 5px; + margin-right: 21px; + color: #fff !important +} + +.layui-checkbox-disabled span { + background-color: #eee !important +} + +.layui-checkbox-disabled em { + color: #d2d2d2 !important +} + +.layui-checkbox-disabled:hover i { + color: #fff !important +} + +[lay-radio] { + display: none +} + +.layui-form-radio, +.layui-form-radio * { + display: inline-block; + vertical-align: middle +} + +.layui-form-radio { + line-height: 28px; + margin: 6px 10px 0 0; + padding-right: 10px; + cursor: pointer; + font-size: 0 +} + +.layui-form-radio * { + font-size: 14px +} + +.layui-form-radio>i { + margin-right: 8px; + font-size: 22px; + color: #c2c2c2 +} + +.layui-form-radio:hover *, +.layui-form-radioed, +.layui-form-radioed>i { + color: #5FB878 +} + +.layui-radio-disabled>i { + color: #eee !important +} + +.layui-radio-disabled * { + color: #c2c2c2 !important +} + +.layui-form-pane .layui-form-label { + width: 110px; + padding: 8px 15px; + height: 38px; + line-height: 20px; + border-width: 1px; + border-style: solid; + border-radius: 2px 0 0 2px; + text-align: center; + background-color: #FAFAFA; + overflow: hidden; + box-sizing: border-box +} + +.layui-form-pane .layui-input-inline { + margin-left: -1px +} + +.layui-form-pane .layui-input-block { + margin-left: 110px; + left: -1px +} + +.layui-form-pane .layui-input { + border-radius: 0 2px 2px 0 +} + +.layui-form-pane .layui-form-text .layui-form-label { + float: none; + width: 100%; + border-radius: 2px; + box-sizing: border-box; + text-align: left +} + +.layui-form-pane .layui-form-text .layui-input-inline { + display: block; + margin: 0; + top: -1px; + clear: both +} + +.layui-form-pane .layui-form-text .layui-input-block { + margin: 0; + left: 0; + top: -1px +} + +.layui-form-pane .layui-form-text .layui-textarea { + min-height: 100px; + border-radius: 0 0 2px 2px +} + +.layui-form-pane .layui-form-checkbox { + margin: 4px 0 4px 10px +} + +.layui-form-pane .layui-form-radio, +.layui-form-pane .layui-form-switch { + margin-top: 6px; + margin-left: 10px +} + +.layui-form-pane .layui-form-item[pane] { + position: relative; + border-width: 1px; + border-style: solid +} + +.layui-form-pane .layui-form-item[pane] .layui-form-label { + position: absolute; + left: 0; + top: 0; + height: 100%; + border-width: 0 1px 0 0 +} + +.layui-form-pane .layui-form-item[pane] .layui-input-inline { + margin-left: 110px +} + +@media screen and (max-width:450px) { + .layui-form-item .layui-form-label { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap + } + + .layui-form-item .layui-inline { + display: block; + margin-right: 0; + margin-bottom: 20px; + clear: both + } + + .layui-form-item .layui-inline:after { + content: '\20'; + clear: both; + display: block; + height: 0 + } + + .layui-form-item .layui-input-inline { + display: block; + float: none; + left: -3px; + width: auto !important; + margin: 0 0 10px 112px + } + + .layui-form-item .layui-input-inline+.layui-form-mid { + margin-left: 110px; + top: -5px; + padding: 0 + } + + .layui-form-item .layui-form-checkbox { + margin-right: 5px; + margin-bottom: 5px + } +} + +.layui-layedit { + border-width: 1px; + border-style: solid; + border-radius: 2px +} + +.layui-layedit-tool { + padding: 3px 5px; + border-bottom-width: 1px; + border-bottom-style: solid; + font-size: 0 +} + +.layedit-tool-fixed { + position: fixed; + top: 0; + border-top: 1px solid #eee +} + +.layui-layedit-tool .layedit-tool-mid, +.layui-layedit-tool .layui-icon { + display: inline-block; + vertical-align: middle; + text-align: center; + font-size: 14px +} + +.layui-layedit-tool .layui-icon { + position: relative; + width: 32px; + height: 30px; + line-height: 30px; + margin: 3px 5px; + color: #777; + cursor: pointer; + border-radius: 2px +} + +.layui-layedit-tool .layui-icon:hover { + color: #393D49 +} + +.layui-layedit-tool .layui-icon:active { + color: #000 +} + +.layui-layedit-tool .layedit-tool-active { + background-color: #eee; + color: #000 +} + +.layui-layedit-tool .layui-disabled, +.layui-layedit-tool .layui-disabled:hover { + color: #d2d2d2; + cursor: not-allowed +} + +.layui-layedit-tool .layedit-tool-mid { + width: 1px; + height: 18px; + margin: 0 10px; + background-color: #d2d2d2 +} + +.layedit-tool-html { + width: 50px !important; + font-size: 30px !important +} + +.layedit-tool-b, +.layedit-tool-code, +.layedit-tool-help { + font-size: 16px !important +} + +.layedit-tool-d, +.layedit-tool-face, +.layedit-tool-image, +.layedit-tool-unlink { + font-size: 18px !important +} + +.layedit-tool-image input { + position: absolute; + font-size: 0; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: .01; + filter: Alpha(opacity=1); + cursor: pointer +} + +.layui-layedit-iframe iframe { + display: block; + width: 100% +} + +#LAY_layedit_code { + overflow: hidden +} + +.layui-laypage { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + margin: 10px 0; + font-size: 0 +} + +.layui-laypage>a:first-child, +.layui-laypage>a:first-child em { + border-radius: 2px 0 0 2px +} + +.layui-laypage>a:last-child, +.layui-laypage>a:last-child em { + border-radius: 0 2px 2px 0 +} + +.layui-laypage>:first-child { + margin-left: 0 !important +} + +.layui-laypage>:last-child { + margin-right: 0 !important +} + +.layui-laypage a, +.layui-laypage button, +.layui-laypage input, +.layui-laypage select, +.layui-laypage span { + border: 1px solid #eee +} + +.layui-laypage a, +.layui-laypage span { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + padding: 0 15px; + height: 28px; + line-height: 28px; + margin: 0 -1px 5px 0; + background-color: #fff; + color: #333; + font-size: 12px +} + +.layui-laypage a:hover { + color: #009688 +} + +.layui-laypage em { + font-style: normal +} + +.layui-laypage .layui-laypage-spr { + color: #999; + font-weight: 700 +} + +.layui-laypage a { + text-decoration: none +} + +.layui-laypage .layui-laypage-curr { + position: relative +} + +.layui-laypage .layui-laypage-curr em { + position: relative; + color: #fff +} + +.layui-laypage .layui-laypage-curr .layui-laypage-em { + position: absolute; + left: -1px; + top: -1px; + padding: 1px; + width: 100%; + height: 100%; + background-color: #009688 +} + +.layui-laypage-em { + border-radius: 2px +} + +.layui-laypage-next em, +.layui-laypage-prev em { + font-family: Sim sun; + font-size: 16px +} + +.layui-laypage .layui-laypage-count, +.layui-laypage .layui-laypage-limits, +.layui-laypage .layui-laypage-refresh, +.layui-laypage .layui-laypage-skip { + margin-left: 10px; + margin-right: 10px; + padding: 0; + border: none +} + +.layui-laypage .layui-laypage-limits, +.layui-laypage .layui-laypage-refresh { + vertical-align: top +} + +.layui-laypage .layui-laypage-refresh i { + font-size: 18px; + cursor: pointer +} + +.layui-laypage select { + height: 22px; + padding: 3px; + border-radius: 2px; + cursor: pointer +} + +.layui-laypage .layui-laypage-skip { + height: 30px; + line-height: 30px; + color: #999 +} + +.layui-laypage button, +.layui-laypage input { + height: 30px; + line-height: 30px; + border-radius: 2px; + vertical-align: top; + background-color: #fff; + box-sizing: border-box +} + +.layui-laypage input { + display: inline-block; + width: 40px; + margin: 0 10px; + padding: 0 3px; + text-align: center +} + +.layui-laypage input:focus, +.layui-laypage select:focus { + border-color: #009688 !important +} + +.layui-laypage button { + margin-left: 10px; + padding: 0 10px; + cursor: pointer +} + +.layui-table, +.layui-table-view { + margin: 10px 0 +} + +.layui-flow-more { + margin: 10px 0; + text-align: center; + color: #999; + font-size: 14px +} + +.layui-flow-more a { + height: 32px; + line-height: 32px +} + +.layui-flow-more a * { + display: inline-block; + vertical-align: top +} + +.layui-flow-more a cite { + padding: 0 20px; + border-radius: 3px; + background-color: #eee; + color: #333; + font-style: normal +} + +.layui-flow-more a cite:hover { + opacity: .8 +} + +.layui-flow-more a i { + font-size: 30px; + color: #737383 +} + +.layui-table { + width: 100%; + background-color: #fff; + color: #666 +} + +.layui-table tr { + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-table th { + text-align: left; + font-weight: 400 +} + +.layui-table tbody tr:hover, +.layui-table thead tr, +.layui-table-click, +.layui-table-header, +.layui-table-hover, +.layui-table-mend, +.layui-table-patch, +.layui-table-tool, +.layui-table-total, +.layui-table-total tr, +.layui-table[lay-even] tr:nth-child(even) { + background-color: #FAFAFA +} + +.layui-table td, +.layui-table th, +.layui-table-col-set, +.layui-table-fixed-r, +.layui-table-grid-down, +.layui-table-header, +.layui-table-page, +.layui-table-tips-main, +.layui-table-tool, +.layui-table-total, +.layui-table-view, +.layui-table[lay-skin=line], +.layui-table[lay-skin=row] { + border-width: 1px; + border-style: solid; + border-color: #eee +} + +.layui-table td, +.layui-table th { + position: relative; + padding: 9px 15px; + min-height: 20px; + line-height: 20px; + font-size: 14px +} + +.layui-table[lay-skin=line] td, +.layui-table[lay-skin=line] th { + border-width: 0 0 1px +} + +.layui-table[lay-skin=row] td, +.layui-table[lay-skin=row] th { + border-width: 0 1px 0 0 +} + +.layui-table[lay-skin=nob] td, +.layui-table[lay-skin=nob] th { + border: none +} + +.layui-table img { + max-width: 100px +} + +.layui-table[lay-size=lg] td, +.layui-table[lay-size=lg] th { + padding: 15px 30px +} + +.layui-table-view .layui-table[lay-size=lg] .layui-table-cell { + height: 40px; + line-height: 40px +} + +.layui-table[lay-size=sm] td, +.layui-table[lay-size=sm] th { + font-size: 12px; + padding: 5px 10px +} + +.layui-table-view .layui-table[lay-size=sm] .layui-table-cell { + height: 20px; + line-height: 20px +} + +.layui-table[lay-data] { + display: none +} + +.layui-table-box { + position: relative; + overflow: hidden +} + +.layui-table-view .layui-table { + position: relative; + width: auto; + margin: 0; + border-collapse: separate +} + +.layui-table-view .layui-table[lay-skin=line] { + border-width: 0 1px 0 0 +} + +.layui-table-view .layui-table[lay-skin=row] { + border-width: 0 0 1px +} + +.layui-table-view .layui-table td, +.layui-table-view .layui-table th { + padding: 5px 0; + border-top: none; + border-left: none +} + +.layui-table-view .layui-table th.layui-unselect .layui-table-cell span { + cursor: pointer +} + +.layui-table-view .layui-table td { + cursor: default +} + +.layui-table-view .layui-table td[data-edit=text] { + cursor: text +} + +.layui-table-view .layui-form-checkbox[lay-skin=primary] i { + width: 18px; + height: 18px +} + +.layui-table-view .layui-form-radio { + line-height: 0; + padding: 0 +} + +.layui-table-view .layui-form-radio>i { + margin: 0; + font-size: 20px +} + +.layui-table-init { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + text-align: center; + z-index: 110 +} + +.layui-table-init .layui-icon { + position: absolute; + left: 50%; + top: 50%; + margin: -15px 0 0 -15px; + font-size: 30px; + color: #c2c2c2 +} + +.layui-table-header { + border-width: 0 0 1px; + overflow: hidden +} + +.layui-table-header .layui-table { + margin-bottom: -1px +} + +.layui-table-tool .layui-inline[lay-event] { + position: relative; + width: 26px; + height: 26px; + padding: 5px; + line-height: 16px; + margin-right: 10px; + text-align: center; + color: #333; + border: 1px solid #ccc; + cursor: pointer; + -webkit-transition: .5s all; + transition: .5s all +} + +.layui-table-tool .layui-inline[lay-event]:hover { + border: 1px solid #999 +} + +.layui-table-tool-temp { + padding-right: 120px +} + +.layui-table-tool-self { + position: absolute; + right: 17px; + top: 10px +} + +.layui-table-tool .layui-table-tool-self .layui-inline[lay-event] { + margin: 0 0 0 10px +} + +.layui-table-tool-panel { + position: absolute; + top: 29px; + left: -1px; + padding: 5px 0; + min-width: 150px; + min-height: 40px; + border: 1px solid #d2d2d2; + text-align: left; + overflow-y: auto; + background-color: #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12) +} + +.layui-table-cell, +.layui-table-tool-panel li { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap +} + +.layui-table-tool-panel li { + padding: 0 10px; + line-height: 30px; + -webkit-transition: .5s all; + transition: .5s all +} + +.layui-iconpicker-list li, +.layui-keyboard-list li, +.layui-menu li, +.layui-menu-body-title a:hover, +.layui-menu-body-title>.layui-icon:hover, +.layui-nav .layui-nav-item a { + transition: all .3s +} + +.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] { + width: 100%; + padding-left: 28px +} + +.layui-table-tool-panel li:hover { + background-color: #F6F6F6 +} + +.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i { + position: absolute; + left: 0; + top: 0 +} + +.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span { + padding: 0 +} + +.layui-table-tool .layui-table-tool-self .layui-table-tool-panel { + left: auto; + right: -1px +} + +.layui-table-col-set { + position: absolute; + right: 0; + top: 0; + width: 20px; + height: 100%; + border-width: 0 0 0 1px; + background-color: #fff +} + +.layui-table-sort { + width: 10px; + height: 20px; + margin-left: 5px; + cursor: pointer !important +} + +.layui-table-sort .layui-edge { + position: absolute; + left: 5px; + border-width: 5px +} + +.layui-table-sort .layui-table-sort-asc { + top: 3px; + border-top: none; + border-bottom-style: solid; + border-bottom-color: #b2b2b2 +} + +.layui-table-sort .layui-table-sort-asc:hover { + border-bottom-color: #666 +} + +.layui-table-sort .layui-table-sort-desc { + bottom: 5px; + border-bottom: none; + border-top-style: solid; + border-top-color: #b2b2b2 +} + +.layui-table-sort .layui-table-sort-desc:hover { + border-top-color: #666 +} + +.layui-table-sort[lay-sort=asc] .layui-table-sort-asc { + border-bottom-color: #000 +} + +.layui-table-sort[lay-sort=desc] .layui-table-sort-desc { + border-top-color: #000 +} + +.layui-table-cell { + height: 28px; + line-height: 28px; + padding: 0 15px; + position: relative; + box-sizing: border-box +} + +.layui-table-cell .layui-form-checkbox[lay-skin=primary] { + top: -1px; + padding: 0 +} + +.layui-table-cell .layui-table-link { + color: #01AAED +} + +.laytable-cell-checkbox, +.laytable-cell-numbers, +.laytable-cell-radio, +.laytable-cell-space { + padding: 0; + text-align: center; + -webkit-box-pack: center +} + +.layui-table-body { + position: relative; + overflow: auto; + margin-right: -1px; + margin-bottom: -1px +} + +.layui-table-body .layui-none { + line-height: 26px; + padding: 30px 15px; + text-align: center; + color: #999 +} + +.layui-table-fixed { + position: absolute; + left: 0; + top: 0; + z-index: 101 +} + +.layui-table-fixed .layui-table-body { + overflow: hidden +} + +.layui-table-fixed-l { + box-shadow: 1px 0 8px rgba(0, 0, 0, .08) +} + +.layui-table-fixed-r { + left: auto; + right: -1px; + border-width: 0 0 0 1px; + box-shadow: -1px 0 8px rgba(0, 0, 0, .08) +} + +.layui-table-fixed-r .layui-table-header { + position: relative; + overflow: visible +} + +.layui-table-mend { + position: absolute; + right: -49px; + top: 0; + height: 100%; + width: 50px +} + +.layui-table-tool { + position: relative; + z-index: 890; + width: 100%; + min-height: 50px; + line-height: 30px; + padding: 10px 15px; + border-width: 0 0 1px; + box-shadow: 0 2px 8px rgb(0 0 0 / 8%) +} + +.layui-table-tool .layui-btn-container { + margin-bottom: -10px +} + +.layui-table-page, +.layui-table-total { + border-width: 1px 0 0; + margin-bottom: -1px; + overflow: hidden +} + +.layui-table-page { + position: relative; + width: 100%; + padding: 7px 7px 0; + height: 41px; + font-size: 12px; + white-space: nowrap +} + +.layui-table-page>div { + height: 26px +} + +.layui-table-page .layui-laypage { + margin: 0 +} + +.layui-table-page .layui-laypage a, +.layui-table-page .layui-laypage span { + height: 26px; + line-height: 26px; + margin-bottom: 10px; + border: none; + background: 0 0 +} + +.layui-table-page .layui-laypage a, +.layui-table-page .layui-laypage span.layui-laypage-curr { + padding: 0 12px +} + +.layui-table-page .layui-laypage span { + margin-left: 0; + padding: 0 +} + +.layui-table-page .layui-laypage .layui-laypage-prev { + margin-left: -7px !important +} + +.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em { + left: 0; + top: 0; + padding: 0 +} + +.layui-table-page .layui-laypage button, +.layui-table-page .layui-laypage input { + height: 26px; + line-height: 26px +} + +.layui-table-page .layui-laypage input { + width: 40px +} + +.layui-table-page .layui-laypage button { + padding: 0 10px +} + +.layui-table-page select { + height: 18px +} + +.layui-table-pagebar { + float: right; + line-height: 26px +} + +.layui-table-view select[lay-ignore] { + display: inline-block +} + +.layui-table-patch .layui-table-cell { + padding: 0; + width: 30px +} + +.layui-table-edit { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + padding: 0 14px 1px; + border-radius: 0; + box-shadow: 1px 1px 20px rgba(0, 0, 0, .15) +} + +.layui-table-edit:focus { + border-color: #5FB878 !important +} + +select.layui-table-edit { + padding: 0 0 0 10px; + border-color: #d2d2d2 +} + +.layui-table-view .layui-form-checkbox, +.layui-table-view .layui-form-radio, +.layui-table-view .layui-form-switch { + top: 0; + margin: 0; + box-sizing: content-box +} + +.layui-colorpicker-alpha-slider, +.layui-colorpicker-side-slider, +.layui-menu, +.layui-menu *, +.layui-nav { + box-sizing: border-box +} + +.layui-table-view .layui-form-checkbox { + top: -1px; + height: 26px; + line-height: 26px +} + +.layui-table-view .layui-form-checkbox i { + height: 26px +} + +.layui-table-grid .layui-table-cell { + overflow: visible +} + +.layui-table-grid-down { + position: absolute; + top: 0; + right: 0; + width: 26px; + height: 100%; + padding: 5px 0; + border-width: 0 0 0 1px; + text-align: center; + background-color: #fff; + color: #999; + cursor: pointer +} + +.layui-table-grid-down .layui-icon { + position: absolute; + top: 50%; + left: 50%; + margin: -8px 0 0 -8px +} + +.layui-table-grid-down:hover { + background-color: #fbfbfb +} + +body .layui-table-tips .layui-layer-content { + background: 0 0; + padding: 0; + box-shadow: 0 1px 6px rgba(0, 0, 0, .12) +} + +.layui-table-tips-main { + margin: -44px 0 0 -1px; + max-height: 150px; + padding: 8px 15px; + font-size: 14px; + overflow-y: scroll; + background-color: #fff; + color: #666 +} + +.layui-table-tips-c { + position: absolute; + right: -3px; + top: -13px; + width: 20px; + height: 20px; + padding: 3px; + cursor: pointer; + background-color: #666; + border-radius: 50%; + color: #fff +} + +.layui-table-tips-c:hover { + background-color: #777 +} + +.layui-table-tips-c:before { + position: relative; + right: -2px +} + +.layui-upload-file { + display: none !important; + opacity: .01; + filter: Alpha(opacity=1) +} + +.layui-upload-drag, +.layui-upload-form, +.layui-upload-wrap { + display: inline-block +} + +.layui-upload-list { + margin: 10px 0 +} + +.layui-upload-choose { + max-width: 200px; + padding: 0 10px; + color: #999; + font-size: 14px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap +} + +.layui-upload-drag { + position: relative; + padding: 30px; + border: 1px dashed #e2e2e2; + background-color: #fff; + text-align: center; + cursor: pointer; + color: #999 +} + +.layui-upload-drag .layui-icon { + font-size: 50px; + color: #009688 +} + +.layui-upload-drag[lay-over] { + border-color: #009688 +} + +.layui-upload-iframe { + position: absolute; + width: 0; + height: 0; + border: 0; + visibility: hidden +} + +.layui-upload-wrap { + position: relative; + vertical-align: middle +} + +.layui-upload-wrap .layui-upload-file { + display: block !important; + position: absolute; + left: 0; + top: 0; + z-index: 10; + font-size: 100px; + width: 100%; + height: 100%; + opacity: .01; + filter: Alpha(opacity=1); + cursor: pointer +} + +.layui-btn-container .layui-upload-choose { + padding-left: 0 +} + +.layui-menu { + position: relative; + margin: 5px 0; + background-color: #fff +} + +.layui-menu li, +.layui-menu-body-title a { + padding: 5px 15px +} + +.layui-menu li { + position: relative; + margin: 1px 0; + width: calc(100% + 1px); + line-height: 26px; + color: rgba(0, 0, 0, .8); + font-size: 14px; + white-space: nowrap; + cursor: pointer +} + +.layui-menu li:hover { + background-color: #F6F6F6 +} + +.layui-menu-item-parent:hover>.layui-menu-body-panel { + display: block; + animation-name: layui-fadein; + animation-duration: .3s; + animation-fill-mode: both; + animation-delay: .2s +} + +.layui-menu-item-group .layui-menu-body-title, +.layui-menu-item-parent .layui-menu-body-title { + padding-right: 25px +} + +.layui-menu .layui-menu-item-divider:hover, +.layui-menu .layui-menu-item-group:hover, +.layui-menu .layui-menu-item-none:hover { + background: 0 0; + cursor: default +} + +.layui-menu .layui-menu-item-group>ul { + margin: 5px 0 -5px +} + +.layui-menu .layui-menu-item-group>.layui-menu-body-title { + color: rgba(0, 0, 0, .35); + user-select: none +} + +.layui-menu .layui-menu-item-none { + color: rgba(0, 0, 0, .35); + cursor: default; + text-align: center +} + +.layui-menu .layui-menu-item-divider { + margin: 5px 0; + padding: 0; + height: 0; + line-height: 0; + border-bottom: 1px solid #eee; + overflow: hidden +} + +.layui-menu .layui-menu-item-down:hover, +.layui-menu .layui-menu-item-up:hover { + cursor: pointer +} + +.layui-menu .layui-menu-item-up>.layui-menu-body-title { + color: rgba(0, 0, 0, .8) +} + +.layui-menu .layui-menu-item-up>ul { + visibility: hidden; + height: 0; + overflow: hidden +} + +.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon, +.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon { + color: rgba(0, 0, 0, 1) +} + +.layui-menu .layui-menu-item-down>ul { + visibility: visible; + height: auto +} + +.layui-breadcrumb, +.layui-tree-btnGroup { + visibility: hidden +} + +.layui-menu .layui-menu-item-checked, +.layui-menu .layui-menu-item-checked2 { + background-color: #F6F6F6 !important; + color: #5FB878 +} + +.layui-menu .layui-menu-item-checked a, +.layui-menu .layui-menu-item-checked2 a { + color: #5FB878 +} + +.layui-menu .layui-menu-item-checked:after { + position: absolute; + right: 0; + top: 0; + bottom: 0; + border-right: 3px solid #5FB878; + content: "" +} + +.layui-menu-body-title { + position: relative; + overflow: hidden; + text-overflow: ellipsis +} + +.layui-menu-body-title a { + display: block; + margin: -5px -15px; + color: rgba(0, 0, 0, .8) +} + +.layui-menu-body-title>.layui-icon { + position: absolute; + right: 0; + top: 0; + font-size: 14px +} + +.layui-menu-body-title>.layui-icon-right { + right: -1px +} + +.layui-menu-body-panel { + display: none; + position: absolute; + top: -7px; + left: 100%; + z-index: 1000; + margin-left: 13px; + padding: 5px 0 +} + +.layui-menu-body-panel:before { + content: ""; + position: absolute; + width: 20px; + left: -16px; + top: 0; + bottom: 0 +} + +.layui-menu-body-panel-left { + left: auto; + right: 100%; + margin: 0 13px +} + +.layui-menu-body-panel-left:before { + left: auto; + right: -16px +} + +.layui-menu-lg li { + line-height: 32px +} + +.layui-menu-lg .layui-menu-body-title a:hover, +.layui-menu-lg li:hover { + background: 0 0; + color: #5FB878 +} + +.layui-menu-lg li .layui-menu-body-panel { + margin-left: 14px +} + +.layui-menu-lg li .layui-menu-body-panel-left { + margin: 0 15px +} + +.layui-dropdown { + position: absolute; + left: -999999px; + top: -999999px; + z-index: 66666666; + margin: 5px 0; + min-width: 100px +} + +.layui-dropdown:before { + content: ""; + position: absolute; + width: 100%; + height: 6px; + left: 0; + top: -6px +} + +.layui-dropdown .layui-none { + line-height: 26px; + color: #999; + text-align: center +} + +.layui-iconpicker { + position: relative; + height: 38px; + line-height: 38px; + border-width: 1px; + border-style: solid; + border-radius: 2px; + cursor: pointer +} + +.layui-iconpicker .layui-inline { + height: 36px; + line-height: 36px; + vertical-align: top +} + +.layui-iconpicker-title { + padding-left: 5px +} + +.layui-iconpicker-main { + padding: 0 10px +} + +.layui-iconpicker-main .layui-icon { + font-size: 20px +} + +.layui-iconpicker-main .layui-inline { + vertical-align: top +} + +.layui-iconpicker-split .layui-iconpicker-main { + padding: 0 15px; + border-right-width: 1px; + border-right-style: solid +} + +.layui-iconpicker-suffix { + position: relative; + width: 35px; + text-align: center +} + +.layui-iconpicker-suffix .layui-icon { + font-size: 14px; + color: rgba(0, 0, 0, .5); + transition: all .3s +} + +.layui-iconpicker-down .layui-iconpicker-suffix .layui-icon-down { + transform: rotate(180deg) +} + +.layui-iconpicker-none { + color: rgba(0, 0, 0, .5) +} + +.layui-iconpicker-search { + padding: 10px; + box-shadow: 0 2px 8px #f0f1f2; + border-bottom: 1px solid whitesmoke; +} + +.layui-iconpicker-list { + padding: 10px 10px 5px +} + +.layui-iconpicker-list ul { + width: 262px; + margin-right: -6px +} + +.layui-iconpicker-list li { + display: inline-block; + vertical-align: top; + width: 60px; + margin: 0 5px 5px 0; + padding: 5px; + border: 1px solid #eee; + border-radius: 2px; + cursor: pointer; + text-align: center +} + +.layui-iconpicker-list li:hover { + background-color: #FAFAFA; + color: rgba(0, 0, 0, .5) +} + +.layui-iconpicker-list li.layui-this { + border-color: #5FB878; + color: #5FB878 +} + +.layui-iconpicker-list li .layui-icon { + font-size: 20px +} + +.layui-iconpicker-list li .layui-elip { + margin-top: 2px; + line-height: 20px; + font-size: 12px +} + +.layui-iconpicker-list .layui-none { + margin: 30px 0 35px +} + +.layui-iconpicker-scroll .layui-iconpicker-list { + max-height: 194px; + overflow: auto +} + +.layui-iconpicker-page { + position: relative; + padding: 10px 10px 5px; + border-top: 1px solid #eee; + text-align: right +} + +.layui-iconpicker-page .layui-laypage { + margin: 0 +} + +.layui-iconpicker-page .layui-laypage a, +.layui-iconpicker-page .layui-laypage span { + padding: 0 10px; + color: #666 +} + +.layui-iconpicker-page .layui-laypage-count { + position: absolute; + left: 10px +} + +.layui-iconpicker-page .layui-laypage-curr .layui-laypage-em { + background: 0 0 +} + +.layui-iconpicker-page .layui-laypage-curr em { + color: #666; + color: rgba(0, 0, 0, .6) +} + +.layui-iconpicker-page .layui-laypage-first, +.layui-iconpicker-page .layui-laypage-last, +.layui-iconpicker-page .layui-laypage-spr { + display: none +} + +.layui-keyboard-header { + height: 40px; + line-height: 40px; + padding: 0 60px; + text-align: center; + background-color: #fff; + box-shadow: 0 2px 8px #f0f1f2; + border-bottom: 1px solid whitesmoke; +} + +.layui-keyboard-list { + padding: 10px 10px 5px; + text-align: center +} + +.layui-keyboard-header button { + position: absolute; + right: 10px; + top: 10px; + height: 20px; + line-height: 20px; + border: none; + color: #009688 +} + +.layui-keyboard-header button:first-child { + left: 10px; + right: auto; + color: #999 +} + +.layui-keyboard-list ul { + margin-right: -5px +} + +.layui-keyboard-list li { + display: inline-block; + vertical-align: top; + margin: 0 5px 5px 0; + padding: 5px; + width: 30px; + height: 36px; + line-height: 26px; + border: 1px solid #eee; + border-radius: 2px; + cursor: pointer; + text-align: center; + background-color: #fff +} + +.layui-keyboard-list li:hover { + background-color: #FAFAFA; + color: rgba(0, 0, 0, .5) +} + +.layui-keyboard-list li.layui-this { + border-color: #5FB878; + color: #5FB878 +} + +.layui-nav { + position: relative; + padding: 0 20px; + background-color: #393D49; + color: #fff; + border-radius: 2px; + font-size: 0 +} + +.layui-nav * { + font-size: 14px +} + +.layui-nav .layui-nav-item { + position: relative; + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + line-height: 60px +} + +.layui-nav .layui-nav-item a { + display: block; + padding: 0 20px; + color: #fff; + color: rgba(255, 255, 255, .7); + -webkit-transition: all .3s +} + +.layui-nav .layui-this:after, +.layui-nav-bar { + content: ""; + position: absolute; + left: 0; + top: 0; + width: 0; + height: 5px; + background-color: #5FB878; + transition: all .2s; + -webkit-transition: all .2s; + pointer-events: none +} + +.layui-nav-bar { + z-index: 1000 +} + +.layui-nav[lay-bar=disabled] .layui-nav-bar { + display: none +} + +.layui-nav .layui-nav-item a:hover, +.layui-nav .layui-this a { + color: #fff +} + +.layui-nav .layui-this:after { + top: auto; + bottom: 0; + width: 100% +} + +.layui-nav-img { + width: 30px; + height: 30px; + margin-right: 5px; + border-radius: 50% +} + +.layui-nav .layui-nav-more { + position: absolute; + top: 0; + right: 3px; + left: auto !important; + margin-top: 0; + font-size: 12.5px !important; + cursor: pointer; + transition: all .2s; + -webkit-transition: all .2s +} + +.layui-nav .layui-nav-mored, +.layui-nav-itemed>a .layui-nav-more { + transform: rotate(180deg) +} + +.layui-nav-child { + display: none; + position: absolute; + left: 0; + top: 65px; + min-width: 100%; + line-height: 36px; + padding: 5px 0; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12); + border: 1px solid #eee; + background-color: #fff; + z-index: 100; + border-radius: 2px; + white-space: nowrap +} + +.layui-nav .layui-nav-child a { + color: #666; + color: rgba(0, 0, 0, .8) +} + +.layui-nav .layui-nav-child a:hover { + background-color: #F6F6F6; + color: rgba(0, 0, 0, .8) +} + +.layui-nav-child dd { + margin: 1px 0; + position: relative +} + +.layui-nav-child dd.layui-this { + background-color: #F6F6F6; + color: #000 +} + +.layui-nav-child dd.layui-this:after { + display: none +} + +.layui-nav-child-r { + left: auto; + right: 0 +} + +.layui-nav-child-c { + text-align: center +} + +.layui-nav-tree { + width: 200px; + padding: 0 +} + +.layui-nav-tree .layui-nav-item { + display: block; + width: 100%; + line-height: 40px +} + +.layui-nav-tree .layui-nav-item a { + position: relative; + height: 40px; + line-height: 40px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap +} + +.layui-nav-tree .layui-nav-item>a { + padding-top: 5px; + padding-bottom: 5px +} + +.layui-nav-tree .layui-nav-more { + right: 15px +} + +.layui-nav-tree .layui-nav-item>a .layui-nav-more { + padding: 5px 0 +} + +.layui-nav-tree .layui-nav-bar { + width: 5px; + height: 0; + background-color: #009688 +} + +.layui-side .layui-nav-tree .layui-nav-bar { + width: 2px +} + +.layui-nav-tree .layui-nav-child dd.layui-this, +.layui-nav-tree .layui-nav-child dd.layui-this a, +.layui-nav-tree .layui-this, +.layui-nav-tree .layui-this>a, +.layui-nav-tree .layui-this>a:hover { + background-color: #009688; + color: #fff +} + +.layui-nav-tree .layui-this:after { + display: none +} + +.layui-nav-itemed>a, +.layui-nav-tree .layui-nav-title a, +.layui-nav-tree .layui-nav-title a:hover { + color: #fff !important +} + +.layui-nav-tree .layui-nav-child { + position: relative; + z-index: 0; + top: 0; + border: none; + box-shadow: none +} + +.layui-nav-tree .layui-nav-child dd { + margin: 0 +} + +.layui-nav-tree .layui-nav-child a { + color: #fff; + color: rgba(255, 255, 255, .7) +} + +.layui-nav-tree .layui-nav-child, +.layui-nav-tree .layui-nav-child a:hover { + background: 0 0; + color: #fff +} + +.layui-nav-itemed>.layui-nav-child { + display: block; + background-color: rgba(0, 0, 0, .3) !important +} + +.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child { + display: block +} + +.layui-nav-tree.layui-bg-gray a, +.layui-nav.layui-bg-gray .layui-nav-item a { + color: #666 !important; + color: rgba(0, 0, 0, .8) !important +} + +.layui-nav-tree.layui-bg-gray .layui-nav-itemed>.layui-nav-child { + background: 0 0 !important +} + +.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this, +.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a { + background: 0 0 !important; + color: #5FB878 !important; + font-weight: 700 +} + +.layui-nav.layui-bg-gray .layui-nav-bar { + background-color: #5FB878 +} + +.layui-nav-side { + position: fixed; + top: 0; + bottom: 0; + left: 0; + overflow-x: hidden; + z-index: 999 +} + +.layui-breadcrumb { + font-size: 0 +} + +.layui-breadcrumb>* { + font-size: 14px +} + +.layui-breadcrumb a:hover { + color: #5FB878 !important +} + +.layui-breadcrumb a cite { + color: #999; + font-style: normal +} + +.layui-breadcrumb span[lay-separator] { + margin: 0 10px; + color: #ccc +} + +.layui-tab { + margin: 10px 0; + text-align: left !important +} + +.layui-tab[overflow]>.layui-tab-title { + overflow: hidden +} + +.layui-tab-title { + position: relative; + left: 0; + height: 40px; + white-space: nowrap; + font-size: 0; + border-bottom-width: 1px; + border-bottom-style: solid; + transition: all .2s; + -webkit-transition: all .2s +} + +.layui-tab-title li { + display: inline-block; + *display: inline; + *zoom: 1; + vertical-align: middle; + font-size: 14px; + transition: all .2s; + -webkit-transition: all .2s; + position: relative; + line-height: 40px; + min-width: 65px; + padding: 0 15px; + text-align: center; + cursor: pointer +} + +.layui-tab-title li a { + display: block; + padding: 0 15px; + margin: 0 -15px +} + +.layui-tab-title .layui-this { + color: #000 +} + +.layui-tab-title .layui-this:after { + position: absolute; + left: 0; + top: 0; + content: ""; + width: 100%; + height: 41px; + border-width: 1px; + border-style: solid; + border-bottom-color: #fff; + border-radius: 2px 2px 0 0; + box-sizing: border-box; + pointer-events: none +} + +.layui-tab-bar { + position: absolute; + right: 0; + top: 0; + z-index: 10; + width: 30px; + height: 39px; + line-height: 39px; + border-width: 1px; + border-style: solid; + border-radius: 2px; + text-align: center; + background-color: #fff; + cursor: pointer +} + +.layui-tab-bar .layui-icon { + position: relative; + display: inline-block; + top: 3px; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-tab-item { + display: none +} + +.layui-tab-more { + padding-right: 30px; + height: auto !important; + white-space: normal !important +} + +.layui-tab-more li.layui-this:after { + border-bottom-color: #eee; + border-radius: 2px +} + +.layui-tab-more .layui-tab-bar .layui-icon { + top: -2px; + top: 3px\9; + -webkit-transform: rotate(180deg); + transform: rotate(180deg) +} + +:root .layui-tab-more .layui-tab-bar .layui-icon { + top: -2px\0/IE9 +} + +.layui-tab-content { + padding: 15px 0 +} + +.layui-tab-title li .layui-tab-close { + position: relative; + display: inline-block; + width: 18px; + height: 18px; + line-height: 20px; + margin-left: 8px; + top: 1px; + text-align: center; + font-size: 14px; + color: #c2c2c2; + transition: all .2s; + -webkit-transition: all .2s +} + +.layui-tab-title li .layui-tab-close:hover { + border-radius: 2px; + background-color: #FF5722; + color: #fff +} + +.layui-tab-brief>.layui-tab-title .layui-this { + color: #009688 +} + +.layui-tab-brief>.layui-tab-more li.layui-this:after, +.layui-tab-brief>.layui-tab-title .layui-this:after { + border: none; + border-radius: 0; + border-bottom: 2px solid #5FB878 +} + +.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after { + top: -1px +} + +.layui-tab-card { + border-width: 1px; + border-style: solid; + border-radius: 2px; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, .1) +} + +.layui-tab-card>.layui-tab-title { + background-color: #FAFAFA +} + +.layui-tab-card>.layui-tab-title li { + margin-right: -1px; + margin-left: -1px +} + +.layui-tab-card>.layui-tab-title .layui-this { + background-color: #fff +} + +.layui-tab-card>.layui-tab-title .layui-this:after { + border-top: none; + border-width: 1px; + border-bottom-color: #fff +} + +.layui-tab-card>.layui-tab-title .layui-tab-bar { + height: 40px; + line-height: 40px; + border-radius: 0; + border-top: none; + border-right: none +} + +.layui-tab-card>.layui-tab-more .layui-this { + background: 0 0; + color: #5FB878 +} + +.layui-tab-card>.layui-tab-more .layui-this:after { + border: none +} + +.layui-timeline { + padding-left: 5px +} + +.layui-timeline-item { + position: relative; + padding-bottom: 20px +} + +.layui-timeline-axis { + position: absolute; + left: -5px; + top: 0; + z-index: 10; + width: 20px; + height: 20px; + line-height: 20px; + background-color: #fff; + color: #5FB878; + border-radius: 50%; + text-align: center; + cursor: pointer +} + +.layui-timeline-axis:hover { + color: #FF5722 +} + +.layui-timeline-item:before { + content: ""; + position: absolute; + left: 5px; + top: 0; + z-index: 0; + width: 1px; + height: 100% +} + +.layui-timeline-item:first-child:before { + display: block +} + +.layui-timeline-item:last-child:before { + display: none +} + +.layui-timeline-content { + padding-left: 25px +} + +.layui-timeline-title { + position: relative; + margin-bottom: 10px; + line-height: 22px +} + +.layui-badge, +.layui-badge-dot, +.layui-badge-rim { + position: relative; + display: inline-block; + padding: 0 6px; + font-size: 12px; + text-align: center; + background-color: #FF5722; + color: #fff; + border-radius: 2px +} + +.layui-badge { + height: 18px; + line-height: 18px +} + +.layui-badge-dot { + width: 8px; + height: 8px; + padding: 0; + border-radius: 50% +} + +.layui-badge-rim { + height: 18px; + line-height: 18px; + border-width: 1px; + border-style: solid; + background-color: #fff; + color: #666 +} + +.layui-btn .layui-badge, +.layui-btn .layui-badge-dot { + margin-left: 5px +} + +.layui-nav .layui-badge, +.layui-nav .layui-badge-dot { + position: absolute; + top: 50%; + margin: -5px 6px 0 +} + +.layui-nav .layui-badge { + margin-top: -10px +} + +.layui-tab-title .layui-badge, +.layui-tab-title .layui-badge-dot { + left: 5px; + top: -2px +} + +.layui-carousel { + position: relative; + left: 0; + top: 0; + background-color: #f8f8f8 +} + +.layui-carousel>[carousel-item] { + position: relative; + width: 100%; + height: 100%; + overflow: hidden +} + +.layui-carousel>[carousel-item]:before { + position: absolute; + content: '\e63d'; + left: 50%; + top: 50%; + width: 100px; + line-height: 20px; + margin: -10px 0 0 -50px; + text-align: center; + color: #c2c2c2; + font-family: layui-icon !important; + font-size: 30px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale +} + +.layui-carousel>[carousel-item]>* { + display: none; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: #f8f8f8; + transition-duration: .3s; + -webkit-transition-duration: .3s +} + +.layui-carousel-updown>* { + -webkit-transition: .3s ease-in-out up; + transition: .3s ease-in-out up +} + +.layui-carousel-arrow { + display: none\9; + opacity: 0; + position: absolute; + left: 10px; + top: 50%; + margin-top: -18px; + width: 36px; + height: 36px; + line-height: 36px; + text-align: center; + font-size: 20px; + border: 0; + border-radius: 50%; + background-color: rgba(0, 0, 0, .2); + color: #fff; + -webkit-transition-duration: .3s; + transition-duration: .3s; + cursor: pointer +} + +.layui-carousel-arrow[lay-type=add] { + left: auto !important; + right: 10px +} + +.layui-carousel:hover .layui-carousel-arrow[lay-type=add], +.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add] { + right: 20px +} + +.layui-carousel[lay-arrow=always] .layui-carousel-arrow { + opacity: 1; + left: 20px +} + +.layui-carousel[lay-arrow=none] .layui-carousel-arrow { + display: none +} + +.layui-carousel-arrow:hover, +.layui-carousel-ind ul:hover { + background-color: rgba(0, 0, 0, .35) +} + +.layui-carousel:hover .layui-carousel-arrow { + display: block\9; + opacity: 1; + left: 20px +} + +.layui-carousel-ind { + position: relative; + top: -35px; + width: 100%; + line-height: 0 !important; + text-align: center; + font-size: 0 +} + +.layui-carousel[lay-indicator=outside] { + margin-bottom: 30px +} + +.layui-carousel[lay-indicator=outside] .layui-carousel-ind { + top: 10px +} + +.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul { + background-color: rgba(0, 0, 0, .5) +} + +.layui-carousel[lay-indicator=none] .layui-carousel-ind { + display: none +} + +.layui-carousel-ind ul { + display: inline-block; + padding: 5px; + background-color: rgba(0, 0, 0, .2); + border-radius: 10px; + -webkit-transition-duration: .3s; + transition-duration: .3s +} + +.layui-carousel-ind li { + display: inline-block; + width: 10px; + height: 10px; + margin: 0 3px; + font-size: 14px; + background-color: #eee; + background-color: rgba(255, 255, 255, .5); + border-radius: 50%; + cursor: pointer; + -webkit-transition-duration: .3s; + transition-duration: .3s +} + +.layui-carousel-ind li:hover { + background-color: rgba(255, 255, 255, .7) +} + +.layui-carousel-ind li.layui-this { + background-color: #fff +} + +.layui-carousel>[carousel-item]>.layui-carousel-next, +.layui-carousel>[carousel-item]>.layui-carousel-prev, +.layui-carousel>[carousel-item]>.layui-this { + display: block +} + +.layui-carousel>[carousel-item]>.layui-this { + left: 0 +} + +.layui-carousel>[carousel-item]>.layui-carousel-prev { + left: -100% +} + +.layui-carousel>[carousel-item]>.layui-carousel-next { + left: 100% +} + +.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left, +.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right { + left: 0 +} + +.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left { + left: -100% +} + +.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right { + left: 100% +} + +.layui-carousel[lay-anim=updown] .layui-carousel-arrow { + left: 50% !important; + top: 20px; + margin: 0 0 0 -18px +} + +.layui-carousel[lay-anim=updown]>[carousel-item]>*, +.layui-carousel[lay-anim=fade]>[carousel-item]>* { + left: 0 !important +} + +.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add] { + top: auto !important; + bottom: 20px +} + +.layui-carousel[lay-anim=updown] .layui-carousel-ind { + position: absolute; + top: 50%; + right: 20px; + width: auto; + height: auto +} + +.layui-carousel[lay-anim=updown] .layui-carousel-ind ul { + padding: 3px 5px +} + +.layui-carousel[lay-anim=updown] .layui-carousel-ind li { + display: block; + margin: 6px 0 +} + +.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this { + top: 0 +} + +.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev { + top: -100% +} + +.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next { + top: 100% +} + +.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left, +.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right { + top: 0 +} + +.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left { + top: -100% +} + +.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right { + top: 100% +} + +.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next, +.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev { + opacity: 0 +} + +.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left, +.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right { + opacity: 1 +} + +.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left, +.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right { + opacity: 0 +} + +.layui-fixbar { + position: fixed; + right: 15px; + bottom: 15px; + z-index: 999999 +} + +.layui-fixbar li { + width: 50px; + height: 50px; + line-height: 50px; + margin-bottom: 1px; + text-align: center; + cursor: pointer; + font-size: 30px; + background-color: #9F9F9F; + color: #fff; + border-radius: 2px; + opacity: .95 +} + +.layui-fixbar li:hover { + opacity: .85 +} + +.layui-fixbar li:active { + opacity: 1 +} + +.layui-fixbar .layui-fixbar-top { + display: none; + font-size: 40px +} + +body .layui-util-face { + border: none; + background: 0 0 +} + +body .layui-util-face .layui-layer-content { + padding: 0; + background-color: #fff; + color: #666; + box-shadow: none +} + +.layui-util-face .layui-layer-TipsG { + display: none +} + +.layui-transfer-active, +.layui-transfer-box { + display: inline-block; + vertical-align: middle +} + +.layui-util-face ul { + position: relative; + width: 372px; + padding: 10px; + border: 1px solid #D9D9D9; + background-color: #fff; + box-shadow: 0 0 20px rgba(0, 0, 0, .2) +} + +.layui-util-face ul li { + cursor: pointer; + float: left; + border: 1px solid #e8e8e8; + height: 22px; + width: 26px; + overflow: hidden; + margin: -1px 0 0 -1px; + padding: 4px 2px; + text-align: center +} + +.layui-util-face ul li:hover { + position: relative; + z-index: 2; + border: 1px solid #eb7350; + background: #fff9ec +} + +.layui-code { + position: relative; + margin: 10px 0; + padding: 15px; + line-height: 20px; + border: 1px solid #eee; + border-left-width: 6px; + background-color: #FAFAFA; + color: #333; + font-family: Courier New; + font-size: 12px +} + +.layui-transfer-box, +.layui-transfer-header, +.layui-transfer-search { + border-width: 0; + border-style: solid; + border-color: #eee +} + +.layui-transfer-box { + position: relative; + border-width: 1px; + width: 200px; + height: 360px; + border-radius: 2px; + background-color: #fff +} + +.layui-transfer-box .layui-form-checkbox { + width: 100%; + margin: 0 !important +} + +.layui-transfer-header { + height: 38px; + line-height: 38px; + padding: 0 10px; + border-bottom-width: 1px +} + +.layui-transfer-search { + position: relative; + padding: 10px; + border-bottom-width: 1px +} + +.layui-transfer-search .layui-input { + height: 32px; + padding-left: 30px; + font-size: 12px +} + +.layui-transfer-search .layui-icon-search { + position: absolute; + left: 20px; + top: 50%; + margin-top: -8px; + color: #666 +} + +.layui-transfer-active { + margin: 0 15px +} + +.layui-transfer-active .layui-btn { + display: block; + margin: 0; + padding: 0 15px; + background-color: #5FB878; + border-color: #5FB878; + color: #fff +} + +.layui-transfer-active .layui-btn-disabled { + background-color: #FBFBFB; + border-color: #eee; + color: #d2d2d2 +} + +.layui-transfer-active .layui-btn:first-child { + margin-bottom: 15px +} + +.layui-transfer-active .layui-btn .layui-icon { + margin: 0; + font-size: 14px !important +} + +.layui-transfer-data { + padding: 5px 0; + overflow: auto +} + +.layui-transfer-data li { + height: 32px; + line-height: 32px; + padding: 0 10px +} + +.layui-transfer-data li:hover { + background-color: #F6F6F6; + transition: .5s all +} + +.layui-transfer-data .layui-none { + padding: 15px 10px; + text-align: center; + color: #999 +} + +.layui-rate, +.layui-rate * { + display: inline-block; + vertical-align: middle +} + +.layui-rate { + padding: 10px 5px 10px 0; + font-size: 0 +} + +.layui-rate li i.layui-icon { + font-size: 20px; + color: #FFB800; + margin-right: 5px; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-rate li i:hover { + cursor: pointer; + transform: scale(1.12); + -webkit-transform: scale(1.12) +} + +.layui-rate[readonly] li i:hover { + cursor: default; + transform: scale(1) +} + +.layui-colorpicker { + width: 26px; + height: 26px; + border: 1px solid #eee; + padding: 5px; + border-radius: 2px; + line-height: 24px; + display: inline-block; + cursor: pointer; + transition: all .3s; + -webkit-transition: all .3s +} + +.layui-colorpicker:hover { + border-color: #d2d2d2 +} + +.layui-colorpicker.layui-colorpicker-lg { + width: 34px; + height: 34px; + line-height: 32px +} + +.layui-colorpicker.layui-colorpicker-sm { + width: 24px; + height: 24px; + line-height: 22px +} + +.layui-colorpicker.layui-colorpicker-xs { + width: 22px; + height: 22px; + line-height: 20px +} + +.layui-colorpicker-trigger-bgcolor { + display: block; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); + border-radius: 2px +} + +.layui-colorpicker-trigger-span { + display: block; + height: 100%; + box-sizing: border-box; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 2px; + text-align: center +} + +.layui-colorpicker-trigger-i { + display: inline-block; + color: #FFF; + font-size: 12px +} + +.layui-colorpicker-trigger-i.layui-icon-close { + color: #999 +} + +.layui-colorpicker-main { + position: absolute; + left: -999999px; + top: -999999px; + z-index: 66666666; + width: 280px; + margin: 5px 0; + padding: 7px; + background: #FFF; + border: 1px solid #d2d2d2; + border-radius: 2px; + box-shadow: 0 2px 4px rgba(0, 0, 0, .12) +} + +.layui-colorpicker-main-wrapper { + height: 180px; + position: relative +} + +.layui-colorpicker-basis { + width: 260px; + height: 100%; + position: relative +} + +.layui-colorpicker-basis-white { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + background: linear-gradient(90deg, #FFF, hsla(0, 0%, 100%, 0)) +} + +.layui-colorpicker-basis-black { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + background: linear-gradient(0deg, #000, transparent) +} + +.layui-colorpicker-basis-cursor { + width: 10px; + height: 10px; + border: 1px solid #FFF; + border-radius: 50%; + position: absolute; + top: -3px; + right: -3px; + cursor: pointer +} + +.layui-colorpicker-side { + position: absolute; + top: 0; + right: 0; + width: 12px; + height: 100%; + background: linear-gradient(red, #FF0, #0F0, #0FF, #00F, #F0F, red) +} + +.layui-colorpicker-side-slider { + width: 100%; + height: 5px; + box-shadow: 0 0 1px #888; + background: #FFF; + border-radius: 1px; + border: 1px solid #f0f0f0; + cursor: pointer; + position: absolute; + left: 0 +} + +.layui-colorpicker-main-alpha { + display: none; + height: 12px; + margin-top: 7px; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.layui-colorpicker-alpha-bgcolor { + height: 100%; + position: relative +} + +.layui-colorpicker-alpha-slider { + width: 5px; + height: 100%; + box-shadow: 0 0 1px #888; + background: #FFF; + border-radius: 1px; + border: 1px solid #f0f0f0; + cursor: pointer; + position: absolute; + top: 0 +} + +.layui-colorpicker-main-pre { + padding-top: 7px; + font-size: 0 +} + +.layui-colorpicker-pre { + width: 20px; + height: 20px; + border-radius: 2px; + display: inline-block; + margin-left: 6px; + margin-bottom: 7px; + cursor: pointer +} + +.layui-colorpicker-pre:nth-child(11n+1) { + margin-left: 0 +} + +.layui-colorpicker-pre-isalpha { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==) +} + +.layui-colorpicker-pre.layui-this { + box-shadow: 0 0 3px 2px rgba(0, 0, 0, .15) +} + +.layui-colorpicker-pre>div { + height: 100%; + border-radius: 2px +} + +.layui-colorpicker-main-input { + text-align: right; + padding-top: 7px +} + +.layui-colorpicker-main-input .layui-btn-container .layui-btn { + margin: 0 0 0 10px +} + +.layui-colorpicker-main-input div.layui-inline { + float: left; + margin-right: 10px; + font-size: 14px +} + +.layui-colorpicker-main-input input.layui-input { + width: 150px; + height: 30px; + color: #666 +} + +.layui-slider { + height: 4px; + background: #eee; + border-radius: 3px; + position: relative; + cursor: pointer +} + +.layui-slider-bar { + border-radius: 3px; + position: absolute; + height: 100% +} + +.layui-slider-step { + position: absolute; + top: 0; + width: 4px; + height: 4px; + border-radius: 50%; + background: #FFF; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +.layui-slider-wrap { + width: 36px; + height: 36px; + position: absolute; + top: -16px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + z-index: 10; + text-align: center +} + +.layui-slider-wrap-btn { + width: 12px; + height: 12px; + border-radius: 50%; + background: #FFF; + display: inline-block; + vertical-align: middle; + cursor: pointer; + transition: .3s +} + +.layui-slider-wrap:after { + content: ""; + height: 100%; + display: inline-block; + vertical-align: middle +} + +.layui-slider-wrap-btn.layui-slider-hover, +.layui-slider-wrap-btn:hover { + transform: scale(1.2) +} + +.layui-slider-wrap-btn.layui-disabled:hover { + transform: scale(1) !important +} + +.layui-slider-tips { + position: absolute; + top: -42px; + z-index: 66666666; + white-space: nowrap; + display: none; + -webkit-transform: translateX(-50%); + transform: translateX(-50%); + color: #FFF; + background: #000; + border-radius: 3px; + height: 25px; + line-height: 25px; + padding: 0 10px +} + +.layui-slider-tips:after { + content: ""; + position: absolute; + bottom: -12px; + left: 50%; + margin-left: -6px; + width: 0; + height: 0; + border-width: 6px; + border-style: solid; + border-color: #000 transparent transparent +} + +.layui-slider-input { + width: 70px; + height: 32px; + border: 1px solid #eee; + border-radius: 3px; + font-size: 16px; + line-height: 32px; + position: absolute; + right: 0; + top: -14px +} + +.layui-slider-input-btn { + position: absolute; + top: 0; + right: 0; + width: 20px; + height: 100%; + border-left: 1px solid #eee +} + +.layui-slider-input-btn i { + cursor: pointer; + position: absolute; + right: 0; + bottom: 0; + width: 20px; + height: 50%; + font-size: 12px; + line-height: 16px; + text-align: center; + color: #999 +} + +.layui-slider-input-btn i:first-child { + top: 0; + border-bottom: 1px solid #eee +} + +.layui-slider-input-txt { + height: 100%; + font-size: 14px +} + +.layui-slider-input-txt input { + height: 100%; + border: none +} + +.layui-slider-input-btn i:hover { + color: #009688 +} + +.layui-slider-vertical { + width: 4px; + margin-left: 33px +} + +.layui-slider-vertical .layui-slider-bar { + width: 4px +} + +.layui-slider-vertical .layui-slider-step { + top: auto; + left: 0; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.layui-slider-vertical .layui-slider-wrap { + top: auto; + left: -16px; + -webkit-transform: translateY(50%); + transform: translateY(50%) +} + +.layui-slider-vertical .layui-slider-tips { + top: auto; + left: 2px +} + +@media \0screen { + .layui-slider-wrap-btn { + margin-left: -20px + } + + .layui-slider-vertical .layui-slider-wrap-btn { + margin-left: 0; + margin-bottom: -20px + } + + .layui-slider-vertical .layui-slider-tips { + margin-left: -8px + } + + .layui-slider>span { + margin-left: 8px + } +} + +.layui-tree { + line-height: 22px +} + +.layui-tree .layui-form-checkbox { + margin: 0 !important +} + +.layui-tree-set { + width: 100%; + position: relative +} + +.layui-tree-pack { + display: none; + padding-left: 20px; + position: relative +} + +.layui-tree-iconClick, +.layui-tree-main { + display: inline-block; + vertical-align: middle +} + +.layui-tree-line .layui-tree-pack { + padding-left: 27px +} + +.layui-tree-line .layui-tree-set .layui-tree-set:after { + content: ""; + position: absolute; + top: 14px; + left: -9px; + width: 17px; + height: 0; + border-top: 1px dotted #c0c4cc +} + +.layui-tree-entry { + position: relative; + padding: 3px 0; + height: 20px; + white-space: nowrap +} + +.layui-tree-entry:hover { + background-color: #eee +} + +.layui-tree-line .layui-tree-entry:hover { + background-color: rgba(0, 0, 0, 0) +} + +.layui-tree-line .layui-tree-entry:hover .layui-tree-txt { + color: #999; + text-decoration: underline; + transition: .3s +} + +.layui-tree-main { + cursor: pointer; + padding-right: 10px +} + +.layui-tree-line .layui-tree-set:before { + content: ""; + position: absolute; + top: 0; + left: -9px; + width: 0; + height: 100%; + border-left: 1px dotted #c0c4cc +} + +.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before { + height: 13px +} + +.layui-tree-line .layui-tree-set.layui-tree-setHide:before { + height: 0 +} + +.layui-tree-iconClick { + position: relative; + height: 20px; + line-height: 20px; + margin: 0 10px; + color: #c0c4cc +} + +.layui-tree-icon { + height: 12px; + line-height: 12px; + width: 12px; + text-align: center; + border: 1px solid #c0c4cc +} + +.layui-tree-iconClick .layui-icon { + font-size: 18px +} + +.layui-tree-icon .layui-icon { + font-size: 12px; + color: #666 +} + +.layui-tree-iconArrow { + padding: 0 5px +} + +.layui-tree-iconArrow:after { + content: ""; + position: absolute; + left: 4px; + top: 3px; + z-index: 100; + width: 0; + height: 0; + border-width: 5px; + border-style: solid; + border-color: transparent transparent transparent #c0c4cc; + transition: .5s +} + +.layui-tree-btnGroup, +.layui-tree-editInput { + position: relative; + vertical-align: middle; + display: inline-block +} + +.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after { + transform: rotate(90deg) translate(3px, 4px) +} + +.layui-tree-txt { + display: inline-block; + vertical-align: middle; + color: #555 +} + +.layui-tree-search { + margin-bottom: 15px; + color: #666 +} + +.layui-tree-btnGroup .layui-icon { + display: inline-block; + vertical-align: middle; + padding: 0 2px; + cursor: pointer +} + +.layui-tree-btnGroup .layui-icon:hover { + color: #999; + transition: .3s +} + +.layui-tree-entry:hover .layui-tree-btnGroup { + visibility: visible +} + +.layui-tree-editInput { + height: 20px; + line-height: 20px; + padding: 0 3px; + border: none; + background-color: rgba(0, 0, 0, .05) +} + +.layui-tree-emptyText { + text-align: center; + color: #999 +} + +.layui-anim { + -webkit-animation-duration: .3s; + -webkit-animation-fill-mode: both; + animation-duration: .3s; + animation-fill-mode: both +} + +.layui-anim.layui-icon { + display: inline-block +} + +.layui-anim-loop { + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite +} + +.layui-trans, +.layui-trans a { + transition: all .2s; + -webkit-transition: all .2s +} + +@-webkit-keyframes layui-rotate { + from { + -webkit-transform: rotate(0) + } + + to { + -webkit-transform: rotate(360deg) + } +} + +@keyframes layui-rotate { + from { + transform: rotate(0) + } + + to { + transform: rotate(360deg) + } +} + +.layui-anim-rotate { + -webkit-animation-name: layui-rotate; + animation-name: layui-rotate; + -webkit-animation-duration: 1s; + animation-duration: 1s; + -webkit-animation-timing-function: linear; + animation-timing-function: linear +} + +@-webkit-keyframes layui-up { + from { + -webkit-transform: translate3d(0, 100%, 0); + opacity: .3 + } + + to { + -webkit-transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes layui-up { + from { + transform: translate3d(0, 100%, 0); + opacity: .3 + } + + to { + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +.layui-anim-up { + -webkit-animation-name: layui-up; + animation-name: layui-up +} + +@-webkit-keyframes layui-upbit { + from { + -webkit-transform: translate3d(0, 15px, 0); + opacity: .3 + } + + to { + -webkit-transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes layui-upbit { + from { + transform: translate3d(0, 15px, 0); + opacity: .3 + } + + to { + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +.layui-anim-upbit { + -webkit-animation-name: layui-upbit; + animation-name: layui-upbit +} + +@keyframes layui-down { + 0% { + opacity: .3; + transform: translate3d(0, -100%, 0) + } + + 100% { + opacity: 1; + transform: translate3d(0, 0, 0) + } +} + +.layui-anim-down { + animation-name: layui-down +} + +@keyframes layui-downbit { + 0% { + opacity: .3; + transform: translate3d(0, -5px, 0) + } + + 100% { + opacity: 1; + transform: translate3d(0, 0, 0) + } +} + +.layui-anim-downbit { + animation-name: layui-downbit +} + +@-webkit-keyframes layui-scale { + 0% { + opacity: .3; + -webkit-transform: scale(.5) + } + + 100% { + opacity: 1; + -webkit-transform: scale(1) + } +} + +@keyframes layui-scale { + 0% { + opacity: .3; + -ms-transform: scale(.5); + transform: scale(.5) + } + + 100% { + opacity: 1; + -ms-transform: scale(1); + transform: scale(1) + } +} + +.layui-anim-scale { + -webkit-animation-name: layui-scale; + animation-name: layui-scale +} + +@-webkit-keyframes layui-scale-spring { + 0% { + opacity: .5; + -webkit-transform: scale(.5) + } + + 80% { + opacity: .8; + -webkit-transform: scale(1.1) + } + + 100% { + opacity: 1; + -webkit-transform: scale(1) + } +} + +@keyframes layui-scale-spring { + 0% { + opacity: .5; + transform: scale(.5) + } + + 80% { + opacity: .8; + transform: scale(1.1) + } + + 100% { + opacity: 1; + transform: scale(1) + } +} + +.layui-anim-scaleSpring { + -webkit-animation-name: layui-scale-spring; + animation-name: layui-scale-spring +} + +@keyframes layui-scalesmall { + 0% { + opacity: .3; + transform: scale(1.5) + } + + 100% { + opacity: 1; + transform: scale(1) + } +} + +.layui-anim-scalesmall { + animation-name: layui-scalesmall +} + +@keyframes layui-scalesmall-spring { + 0% { + opacity: .3; + transform: scale(1.5) + } + + 80% { + opacity: .8; + transform: scale(.9) + } + + 100% { + opacity: 1; + transform: scale(1) + } +} + +.layui-anim-scalesmall-spring { + animation-name: layui-scalesmall-spring +} + +@-webkit-keyframes layui-fadein { + 0% { + opacity: 0 + } + + 100% { + opacity: 1 + } +} + +@keyframes layui-fadein { + 0% { + opacity: 0 + } + + 100% { + opacity: 1 + } +} + +.layui-anim-fadein { + -webkit-animation-name: layui-fadein; + animation-name: layui-fadein +} + +@-webkit-keyframes layui-fadeout { + 0% { + opacity: 1 + } + + 100% { + opacity: 0 + } +} + +@keyframes layui-fadeout { + 0% { + opacity: 1 + } + + 100% { + opacity: 0 + } +} + +.layui-anim-fadeout { + -webkit-animation-name: layui-fadeout; + animation-name: layui-fadeout +} \ No newline at end of file diff --git a/src/font/iconfont.eot b/src/font/iconfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..7bc337451f6b30351732415a5cb950f7a8e5ad89 GIT binary patch literal 52080 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 literal 0 HcmV?d00001 diff --git a/src/font/iconfont.svg b/src/font/iconfont.svg new file mode 100644 index 00000000..b64f7915 --- /dev/null +++ b/src/font/iconfont.svg @@ -0,0 +1,387 @@ + + + + Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/font/iconfont.ttf b/src/font/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8661b19ee649d7e7be0ba65c5c844ef62741d919 GIT binary patch literal 51904 zcmd?Sd7K-?nKxe5tyZ^MQcJDYeT{C-sToNlY3|W@#xwT#_IP|BV|)TOmpL84hH&N} z5E2Lwh;xtw2nlCMLJ~uc%_flbX4z!PK^&II?6OJ7=Gg4U(|*6zJ-z~YclX`j?~nKM zTJuy_S65YcS3ULI)h3h>VkZX)Pr4?irspNzo!w6e?Lq0PWmBD{omVbJ4f-CO&urVf z^`eM+bRQv>BZN36ckQ`q=S8#rWrTQcC*;ww-8;5!k009oBh)<#sP0CA^n}3j&jK>L z_g;EsW9-Cl(cixi!o9ZV!fji3ZM*w>gs4%JUAlMcl^1a?{-2Q#qJH9nt$TO$yFWih z$l;ez|G-5T?z=R)@_pYR~wUKOxtn+S#MQu^av$0s8rGwHx?v*8lH3 zSNeb2_lXm4|1KwV3;9de{-^hxYj1nI{{O3GbA7yJE>6r^&MJGm{{9Ege^%e&8zSzib>o#vK!m`HxkOEjYIN*xF+k9lQG2Eyo@`_T^(oUzc8A z^G^@GQ8)pL;1(KWuI*!uZ=TiG`=7PN6a1h2qj>Hidfwb`553^5-zD@f{&2Hr$kXHt zw2DekPW0l z%A}ukf=(An2Pu#?%>E3?ku(W`R&ON{;w3&3APRAjy~Isa;vpJwkOjmBu9yI2mJF=n z$a1oRtRy{TiYx+8XeEAfKG{Qh$tsc|(`1aS0Zy$aE#w^Fl1SzeCyA06*-p9{K2k>E z|6l*-U;`k1er_0^VXMXj;3IKkgctxbiCZ)QI7%8QVgPI<4Xj=Uz+2J)M`i#FCJn51 z2Eb*~z=~%8tR@Zg&j9#M8t9t=Fr75eKLg-AX@IXX0QQrH%>=9i(g1~EfE7U+b`!8R zNCR)d0IP&FoF-tskcMIcRt{;nOu!l<4YvtcO{AfkfOSP09uu&_NJBFLYmGF#CScW( zhR+17Khp4H35{2G-@V*rjbUE37~GI z(Q5+e9BK5K0E$N%{U(6+k;Z@tpn{|^XaeXVX$+YF%19c+CV)ngM%@HZOVSuI0d$iz z=9xea;y7voXenuonEb^YfS)mAdPhfCx z0DmG4Hpc*PD$-zc3?OwJ*?R)Oy-0(N3jlnKG}yQRz|lzKd=tRiNMnx);Bus~*97o8 z(qMB80OunOHtqoMK+<4y1^_oC4K_Cb@I}(N!~}3i(qQuk0IwtsHs1hnP10a<3;_Qm z4K{xOa8lA>cmn`WB@Ko*0B~2*V0Z%npCt{3X8>?q(qOm(dkg8?KUa!fD*vJg3jIbZ;(h#bQlFo1kSj-f9Gkd(-=iV2XJ$T5r; z116ClTWtd5C~|DA36QABv5QQAY(y{@5)hK;9z99yI}y7diH26Ci_;V@FMZ zG)7*>_%eW8MqbCg89+iK|MZXvkk!Z=z+DE07J&oC^4qjPzr+#lF760_JO6^^F3X$3 zxbO|@ko5;*LA+NQlRho|!FILn6?szrgFSBlghO)N<@kX!=e*u|T=|yrit-27IqtA~ zzxzw-cJ%@E8y<_N%X61j@cO+!@qNs%_`e#k1TG3Z8IJK>UH!tE6q{G* zW-oCc!D{e#hyaT1vEf1O7y< z+MUmFTsW7jWV4ZUe=5~K-j`1IWoN#*+iKnY&BNa~*J?fY8#6EeJQRABKK3e0pUYNQ z^?Is*et$ZRB(-VhxmJ($+?{iW`m3Sw(5ps540{cG#;5SKZaiZ@s5)?%))cNL`V}rO z`iD4yJyW?9sO9qJgRxvLo5Mx(xzj0@E#YzbK+!K!YrdGP(JH-uf1;NBWzk{_Cfvo` z>OuSLG4{C4&E54e_RK>I3JZs<{L)oBJ9kfs;_h$GEFSOLxbx+ohrb&L1ZLk1_yYmX z?WZ^Ir^#BV=uQM|e3#!bxH@XX``9X8`f6w*G~8V%4_oK28SWfh&0cg@tk{MN<5Wfa z**E=oNX`wyY0k$-xu>z3BH#ogc+XUUR)=X7)8eAma;lSJZc0rwP8AwRrgH3jnBwJ= zCBIMgTB+6BMEy9cR@ClXI++sbYm&>#TOYLr-O{7Bk2`FSN@~FNsMR96KCOHFIpu3^ z=kw0IpZ+RetIaw&{%Z~o{gun-bLk$BgF0llipFXXjnOoyqN(bZpYymI-lFGq)l1+ZNu-I%g%n{)0?6FT(Ffy;RD*Br&{j~XV#vC2xKgu_O8jpgjVUC1U9?RWa z;}~%^5em(rEPeVh%f_T(M(}`ME2x6T8r8HRV5P__R0Nh5fRhYMMXS-{$%|Hwu3EBa zUsE#Kv~SUpRp+c()hF@3h*Y{`#g>)JI=i|$m#y5gZN;*VPRzw{f8X8BHqjx9kBFgw zX#K3krP`(M$rg9m{-WI?$@&`EhU0gou+JiWM{Yu=lS@8h^xxJxX%D-3xjwC*w0Hy?ap_IVnn81+2RV@^?w0x zW3s@BZ}89ZW0<#uF-~vARxK~)#ef*71!{SE{Hl}la|#P<9XH?7ar4a`x7^%u^MHX^ zXI0@AoxF(axFwTgfH1%39*6YQ1nI7ZSy~2(au>9K15AUW$&?j1a%#QvUMrS-4okmk z5Ck6A&8ywHY?&=RU=vD!TW_1srcYn}@7Cu(di<-YVllWKyY2iuyZge~ zoesC#!QG2=cKsB~v*deb&aSH8n?hn|r!;x$@_)T1_joa_kEM&nG<`N*oPCqsfIiDo z{RwwKRRiuRchLQ3e?8{;lv&}-vhiVTRFP1dtNkJuJY1Ir81I9_SFWrp1W## zs3)%RycX{nnqGD8*1=j|GQ*}E^4W=J`NMo2xR!*3-w%#A4T}m3u@JwPo_UfrI1K0v<2LlnldMUEOp+v=dBTzD1rsf8Z7mZE z9y*zs9=&9A^pcxcGK$p}#)2~sbjlX7Wn>MBZT4%Y^IWqHB@sytS4u4 z!f@fsd=_-Oij%aO1Kks?CKgngLh91IcAI2%P>FK9*KKp~npJi=nzXi*E96r7`s~diyKQlIFdT4oSgn0!Z)?n3 zr1v-zS~3?cWD>lSw_0499Fy7;eVxr2UoP&7gyJR-exCm-KLp7s35^i?15GKMH_nxY zxb6a{L7*#e-9ua{&Uvj_2n;4U3DnM>pg)Vn zB8w+H&La*@a~yGc_`%baS)19;+Ns*C(dTKxSe)OpIW1wQ#}oEI*<J6^>=o44=IHe{nc26i?uFZuxahKb<3CTi~cM)y>mL? zr(D;P4NE)uPY0+seNKPyVX}GS0%@7jGmE(EtvR^WtEoeqa?R2J+T8XW$hIT~y)o3eCsq5X$hfc+F~#rGAA^ zbC&nLQjN)(#obnGuhoA=Ut}Kd%sB=mtCMqdM5S??9B%f7f~_7c9EZ0U z<%_CLza`~wFFB=!^KbkBN848Heb1uKyRV-2@W=1!e6PsaT6$?Uo3p>|nT1#g7(VqNwAE;kf% zogoFW`Q(@c!R8o(`&oR}2NY0f8?J)16_5eJi$Ori<omcjlVyB+C)iGj3{@O372{wos~L!#Ypx7sCvvj!k; zt~;{M?0((u{6r)ap_`X}QIa^$DmOJb-E?5*J9ZD#V%rAVnz>+@Hw0KcU0Bl5v19{F zOu6xSek(r?>vjjz)H*n*X1RPe2MHjbQ>Z^6_yiovrD3XqL6vIRAq*2QRI2$9SIt)h zeu@4)T9#y+q`%i4`-vPCYfky2$I?m7cf~B<_j-w$nW_U2#kh=&$C5sa8=6YzX+icJQuU8Svj7*FMHLJ z<*RpZT0eBRrDt8KV{v=?;*R`SfJ^1)wb1wIf7{&YuzA1YQugoO**~a{^q1O_&t{s- z#m}App=NHu!i(dHj`pSczn4~ZB|8?cU)-LIbL~B?3kpJXO{pp2&*)#I27;{C|1sOt zOXt@Pj$OEQ^EGZNYQ|dq3jbMtlv!pB!~=?%^vFzIZ0#~CH77nZrqD!_IaV?ZI%fP_ zz=}B$;^fi1UNJ5+v_1Ljq)D`dezYduQS2G2Pmc5zJF&qREREbweLEs&U9?m#$^Z69AaI9%#V#RKJNK0Q(`HD_WW zkK1k&ER=GS7LIp$x%-<_S%1i4aXDk5T%tAIoJa)&9?v{A8gB7=6lcI2_J>rDD-iZW zUUEd6ldZ{YIP7(}Ji%Zrnv5nR@j%EG5O`T~J6z5$Mjfi?pwupF?tm8XcwJ6=AU!^B zgFy>`;D@>6(0c1kzA;|D!d5Is2XB8;^HZp)5E^3!;{-0TA5;EJ{lsj^k(Rp`tmvxN z_Z}E&%jerh4(zR0yH+f?`%lHGVk%zi?5}KU-c;%Dti@9(8JVB)Nq)tbOqVP(3#X>H ztsdE1k7}`)7On3cS-ov~YT*obxHwfBni#70l-qlH+RHt4oRp@Dpe`cDLSbe&X2&{l zkniTNgY_~4Z%sS1;8JEc0T}}YVs8R0_GK9-^J4xPmBJd%rTMa&*2=!L55SjOTW(u9 zJu$vw#rVWSIOs3V@9P;I?df~hK;QiNeFO6o^?Kqk{&7pD7tCLQ+MjqY6T;rR^50Xb zeK%g7&ZLvZVfL6lMeF#7XM^qY#6$d@{5jCaRd}#^VA0%&r(=qMp(LEl2yqb9ld_{= zD4@{tm?)V(d1M+!7VnY78|8CD6!?u7!@GdzYIBvCc1UlwIUF8`<4@*6?+vC>#Z-#B zJQHq971K-8UFp_vmfkYBaQ4@egUz6ZR<5PGzuLkw-0Q4vF~!~O^f*ubol8@}--lAE z(C>q3yZ+8__BwWQotb9C^qON$7mto!+_Z=nd5&Kc2rR-u6Wtmm|GfdV028!jd)l zc}wTzjfDPG3u)B8WZw<@me?us&gp}TAQ3M*xXM9E&z9apMl<6;FUqr4`9tQR%c-f3 z`tJVz-F1hmIfco0ED=A(gyD~gi{CLhH=nPN-`mjCbmFr`&FD8$U$;gim%U+s$>ai!qC-tvco>d+6phNwt zMN*_$f`l8_KlcglUfo5<^`Fc2y6lbFhs}ng$jf7_L%bKnAxzNu+#A5q5qOB!!)km! z^G4D%6SJ{c3<^3&9ziV`8D)!~S%d;AWLs#yLtI70V#Ac?L}sE$R?4M33gQO+O;^Dg z4HA-OqLyK6@uds2qNy01R8C0a=(X}u^sew;HJq;v^d>|p-rnDn=(5`_iXidHV6-Xd zjwV(5xH}njxg5TBw0OK6GH;^ueT4ntgo>W9pA}J4zTAjgU zIn}#kU$>US{!*p7In6K;o^qYW%`jjTE zk3u##>><}eH@*&>eHHp*{H<)vipk*&xeb&J@|yLezHCx!lL!XW~D_Ty2I zhnNfIh%0=Bc88NRKhn~g%==q{vg-H9!K5c19JwUfmWXw>#yUE@UWY&I3e|#2m&5N* z#zJ9tG#0RnlxkiGZS=aB;#cksLAA&j%bqyWKH=PpkNAW&&_hlwCCH(m5Ib*tV%cuijJ4mr zY-0Spm=FxfLh9-jQyWhi68CSMTEW~rjDG<=p5wj)FJ2iM*mCBr#Y2MhF|%@zR{`a zXQrpdILc=@teT014=kMMnVr1$9EUdE`o5kf{OiHJSa~rViG+*B74f}`TYwvjc(cV=CY#IR=B$mr zG{Sn!8tVsR)5blAl@kO1%tKD;##{l#eT=DNe$!<`-(cq$B;nM1@@?g=$1l0!`ipjL zzqhsR@2C5EXSVO#xO_=R=Ls@h8ZY6me*G2u9xIln+gtD5w(H_cw{7j|UtK6HStg}R zrHN9BO^Y!%4{#3~wm_878;RF(&;jy=gp#`A(VQ$4hTYGZJQIL3EDC`?CUK5fnAD?{i6+G##rDFYdR7tmB;)EMH>p|NPa9FwLtnQD8`xdh?KcP($Fh=ESz%kW+ZAh)JBK>urkHaQg$7-NF zXFq1>&kD+{qEXqbc&c1LC%?FiKCcgb;S03g>D81Q6|Yyhan$McI&WeLSJQ`Z{knfJ z%2^HCei`@3=&1htdGqu?jE-_^QD4!(yIEU0`^L#WoL>5OqocELjE>SJbDg2b(RuTj zym;d8`G@%qP~;*cM&=#4ghgl3bOr1+39C@Rm(D4iPlc#hhRn{Kql2^zd{YZFo2v$r z>_w8$d6@6Sctw=>U@;Waz;hHrw!~=ERI{#6zzHJ*RlhY~26khN7_tj6Z$KeR#?ceM zxRdM2>igA1&`EndiJ*fk<$5YvdQ-O2nX7SJ&+I3eZgG=4q8I4*{ce4~+wXVd+bfZVm)|ey((d%S%1(t7iX>-Rogj!0!&JK{_wn-JPAsh1_(^xZX}- z^Wt1k7ZewV>}6DxAxV4T8{T3hK_-y;yM;=*OEoq)mv#`z^J;&=2mx*~V zw^7yj0Y7s3s7t2(ihPHx(4+8ndZ&b9TPd30_CEOF`CL3&>b$5Z#JuxjtWUqkV!407 z8;i@z9$8V~S7C8KC;l0B$F{k3;6ij!0CtBatb(MP3;>u+%(J7RltW#bJ07G5^@DYa zZ7CGlIu2wO%Jtzo%FM&VW^r9-RS#35qXBDl5^#T0#ySAKEe5~NI>h!}j!~?MrcEahf#VhKwFH(3$=dL^= z+Nnb{uh0{y>p;~PMXw^haFJxk`BS28cJ;-u?%0tl&{DNb8C^|t6D8_N>%V&A_^+s^q#u4m|5b?=^g|`?kNWrN zOo{##t-oQ^DCu_Ud4twV`mcDgq#x4Z8=Jv28tdR;{`dSgP*$c(W$n~S`K-W;DyAU7 z|4zT>z38MHp?4AH!q|NHp#>2Kg=d=h~{}PO8zUnBI}Jkyjyegd-R6QWfjDi$2ifYNxykh z(p(}p_Od9@UrG)?^)X_hzu|YN9_#b^Pi-EV3isbH*gZCye%=bti}^0k8Mb&Ei?w6# zA_UmGxM(du4EY}K^ELg2cfVVI;b$QI)K@urr1^<|J$LtS9?Q~y?u1p~<<8giXYaX( zj-7Ye8&4;W9!)*<2Kr?-rvvF^`EC~Zjak$ zB;|)hSr%CWV$&Hp{sLO!$amv7=2d2|;BHmC$8Yf}yLKtw`LauvT^ei3eO*>${NY`| zm|@#{0s3wVF{zuGd~52g>YTY35)Ly(Kw9#f8Ze7qF>+ues(I;@yBNAImaS>x6>W&+ z>4YFO#DQjJ4I>4|4c2@8V6=;YbCj^Wd6^#jCfh zqw!QpkP@L@FYl=&Lr$@jdjI?PZCg7wluGj7kmf})67RO_uPs}(Xl!UnG+r54w*K7R zo4Yd9q47#2(=Sr}KK+=Dm#hyP?-XOmkDC){F_)ehy~ zVday38_Ux0_DeREq@nHY_Tpeq((3T6Y>8!UvE5rX-j;7}&fm6i%aPOBLyP9kZ)vNR z+BPlHoV;YQ3D(+l%EMc2X@9i2b^hYd@)p(au(>U=94I7ZkykZ|zlrzyWZte6M^ko> z;IMaX8THbHRSrj-_DCei39@Xl*ya7!!u&7ov{SH&>rxJ90!X$C%7`50h`UL z+S=^0=#`W6D}IS{_&vNFU$k`&|Bd+!AwK?k%;H~~pR@*Z0e;4EKtPyzW<{hL=8eT} zp~%F16fq5A*tk+O3M(v_tA^k_GpuXQr~plY^)}aKplHN~<%=A7`>ELdk31*Z98NGE zyA`4fXR+E9Z!qBxYY}+mB3js=2znJeL~+P9aMH<=$1PbBs)MJtgv(`hiXvam^u-FX zzD${i$S!a^Y(h3gb_kSrs0sey+YkEeJ4LJ8?St4M+U$y35Un<=1V1S+h<2CDF2WNd zSR@pRf?KiMM2jVqaND~re3Q#nEcl%rK?i?MPm42dKck5h|u!uab~0j6_uCR(zWMMf$+k$kkdMi7tf{Rz zsko?J4W|mNF}waV+3l7U5A_^i8N>|e=eXcy@_0Vs3IuTYi}Ue&x~>&YUmG0N%bT5D z8wwkOS()QFi|8xcDlm zbbNlr9!NS`FBs%mU4wT&$6o_Krw1Ib1nRw>?GJ)25K`nR*9U9>ImWQfh_k90f_k=H z3f>0rb6D5mQZeEM!Pz0;vR;@rHm8e$8^Y~32n!=Z8O*pt)JucjLma}0ibVu)h)rz) zBcdqSPW`jjMRK_acL3?^9buO%%(bvo|AV4=106#h0jQU8)Tf@1hiU=ZrauIg(muGp z);q9y+0qWH*D0%(?7@Y@7cE5yBVE(hevG7IWTTgKnirk|gS(9cA2G#}B|;P6lA z{1L3e2wfF+>5pj23K`YfX$RWLD-`WSTilniO#wNbQ?`sR-u9GN;jF#e7J9v%g{3wb zcb9GT$?D9I!h|fW;luowA@jB41f-GqFy?|{jpzjy(Q;P&gE1;1RFm$(r7PB6xqExx z;9%eO-B<3|u;!Z3<$;Yu_3`yfCfhqY+9#K+9~tN?JVS5ezSy5k4)kx|^_yKg`Ucxu z@7_}17L9haFIw`%l0|JD!C?Cr=xuYd%@;vWywK`~+4JCG42v&<2`G#4PC-h^rUlr< z3`z`Ye9C;UR&%^b;~9a^<<+b}$DA>n(|NB2j$s?kJDrZWP5(9h2YruU-xITpRMyQ~ z3PW#Lxo&OlmfYqq0v=q>0=I6?^(HGus0crcJvM{UPy0yCpNq=pT|G)KjhmXp(kM- z0P%#f5B=w)R`2x#c@57IQ%@^hMWA!`&uVA^wVS`esjAN7S35vyZr2kyIOtIn9l!95 zE5e&Gk7IyU96$v1QR83~yor=GL88BSH|;Q<>(`JadBf(|$@UJN`5f%|=$}1>aK>}8 z>wI42KX?2|X13xN!`^lL)AV^GsA>pB{F*ba2tVg})!xHAc|CSjA96d)yuJl4P}DmbsCeTa7T!Ic=8i+TlbVbQN* zV3_)Fq(2{?-*L&~ErTKKJJ_Or__4?DQ@0=+9%_B;lJ@c8`GtM=w+w{NPn@^OeeeDE z-|OCtY;dsU!?;*~$5_WjPwxD%y17^@h6h`A?nF1pZc*>w`QjxV2H)GFF8SphwqT-xss0clU|Euh+>o)%N#&x&k^7-5?M)uZhUiVzN%UqPZe!XjZ z{{UNeR}><-a5xuP!hF~axY4z@vR1dQ-T0ji>u$~A->vI5d}sDm)ZY2#u5GN@wq0-T zM0@TsEfUE_BKmID^tUWAar)iRJ1>Jyl?CPu!L*0h5@B2wc?iH1vNBdIwm78n5U(_7 zC)p}Wy%2m&8QU7bB^F_Zs0u6pV?FCgY5HTy4$e!RPWt2EM2Kz+)%6ccAxY2LKpEY3 zy4-1_KbB^TA&;jtI$BoM(%9&gzPitC^JEJ-)dqvekI~r6btLu2w3I{7hFC8XJ?KWF zKejpPa=RN{+0bK1h2l(IsS zotiHkOJ|EKTST#?ySKg26!E^B_d4GB5~Bw%VfE9@_2F_vJ+0Jp%a94XzxzOhGJ?YYJ_0zb)DObdRE`~2ZcX0}v&`+LvX zaoN6YGkpV=x}{uNF}-#B>ZxL>tFV0K40rV433A9X&^NPf-(@?_>Fw{SZQgpx))fe> zFBPX&Z{NCVWvL8;Yx1?jh^>GR2+~3f$aywvGiHwY63%!KbLlZhz7em^94?0x&%pOC zKkcNvWZTTpu!FiIJ}Or$Q`1{dIX3_1@$L^9j!(PBw`tA?cU*SLFr zmoIHEoN}Y?UJLP!+MSv)X3z20<9R#TK0O%H%;z##Sq^!_Q~@!?h$vtPXZWU>zryef zp}JYscuBQt)-cAJzd-VcHZ_^KmJ&X##;j{>`Y}H zHc@bjhyj*3ugyK%a0r5AZ_4A8x6>!l#Nm#YybiI9ulBU5|ag z+o7Ld!1gK6X?8vqC(PWrrZ~ogS0m1y(NL3MGNFYH5SABrhBJui-}zI-6IL8%ZG>=p z+9P^8r=7ZbQkiR?I{&K6D%?5eH)VYJnBr5bUfEE#=$OrI5443^^YgFmZ`<5iSUHb* zz*)HEz#uQ&T{riY>95z>X0%F<22YkeKUY$o>0Q>-v#gg-7#;2&+rJs}%3UQ3F1y7# zkQ_4A$=L^?qq#-<#Dcc={N#=vL}MDeh|aw#8AyKt4&h2J_n3L8n1^?n2mRO0Jw3~N zunpAImp=lV+6;EnvPdvO!7mNm^1-hIS=iXl#ImqxKnnncs+8GCRkAQq!s)YhVqvbO zzTlnH>#m<)Up*CQn_NBFR!8@%IPcgqcpMQj^)elm|?jmwr!bh z!`3GJ;bEHVb%JL(apJ^li0TVN0-9huQ)|rp0)ss>T^TXz@L-sT%Zyjd8&|F5@(Aa^ zTpMC2G#Lc1lDDml5oq=^p%WJ^ktHZ74n_SV)l>q8E)(0b|8#Xf%< zF9-cR=q{I;nE&+l;`XQKPh^_7S8YMtqk;_)T-Y}9IopqqU&_QJ{yj*~b=bv#ee*|B=Vx~Xl87fuVp^uop4rq&^F7TeP}7BUvHiP-F> z4`QX^53kSm6`yz!vi3aWny~A(0?)-V>`LDZ-T89p&hNrk6As}^6kj5L1Fya*#Tx9Q zY)n|Tj5Xf`f@NIM`~g;qXrwAaYuWfQnqXebSBw^OLunORCt_``HOK@)lQo6}E(|_? zFk7*3!o zE27gStAdT*!6}ZgXLjwUs7+Ai?n2%Zb|^bqYpPYEpXTB|x~nPd&IoR+$Tf48gewrc zgGz!c?6g}Qio9%BIOUGq?GI{>u%l(c(j6 zFIUGdjrmu??*JnHIv#FLp4B+yH7ObsE3=)zA@_{}VLzj@z=wK!=%$;>lm z#EhGOLG*2A*L1R%{HKgFbHoG`2J#(S$xx|*WoVj1TopSv&7o{<=V;@cb<;Oy@$bgz zbzfh%`i5*Sm%U;2x~)d&Gz)@0wfFHvqL9EJo##&`JCezped(68&q%0;${ z^keiM%*MnIFdi0Beag>5zfV1J-Xro&yn~x|wJ3FkvkxE^3WhQ07rV3wJjAW_!-T z#_5dq7^k;y?PBkO*~KV(BHU}DU5LAP!Igu*U205#mzB2}Z)?HJ=G+l?kXI?st)?9M z3#nlxkC77CK-pkWIo)`t8W-$yZ84BWTQ%$4$$2?ACnOv(z{1!yX#c*l#*6@!G{TB&c^=t(4aNjt zxdPK`C2b_IEr?lFV8#T13gB_-%d3G3OSo4CGH&m{z`zXB8#3g z$zOMulsE)yDR{NZ4oefcdF;`+@-ldCL})S8|zn|Eyb z0fS+ZP?jkOY)=xDAs8e;>7XcNnXMrpn2t@sD*k!NTM7{Wr?=C4ync`BwA<)MIJZ;Q zcZRS-MPFvK%MyJ_;&e!P@KVvA(4WX&QMBnH4%?|%spPetQ7XS}ReJD8k3r|=dBO51 zFZ%2r`j{*{%_BzMqTk5<(BjoZ%lE%;5jC&nhuqz)z#|Grj#wnk%m2_gKeGbiAYcCw zA=q1BlL3OjR#(Zh5OTw)$THTn#<&WCH6UEqY>0cKe9!D-t7$RE^=P(YAoitY5B$mE zw&?Kx_#Eu{9X`IfB+$q7y;&tl->)x=hdAHB<ACukXEXPaV(B;tOu)zm2{AIq2mJK}`dB=Jn3kM4m}%=_IpExUjX4 z1z9q-j*FcfCQ{*mTWMy}gFym?fh5Ec&Cm35M8T;1Cacx&gbT8-Z<`SED4yAdJBp2C zoDvZaYj+B6>{Q@wVqNCkiOvr9{da~EktVmR(!_;JiyXV;fUCtf`(oc``}&+#kK}OB z<=&KR;}z%>HvKbD4Z_cg0>}9rSB&-@^yZpuiu!fdoUREa;&Fi=?9xBmmGJnms0ZoS z=WKk>^B2K-Ibm2_k|2s0eXEOOjvhunfpxW{;quo4Z2xb%mWH{G;UW-JOd_7ta5yoX zt(Eb{aPPAiEq;^!1JTAi9g7&aX4u{tX z{ByT^@n(ZO7mp-DbPam4T6q5Js$y%(d1nur?|R~Z;WKA4{tPhkZEVkm9B#%mxY-*e z*eZ21%+(Mq%Pc2tSdOrlL1`>NJ}|=SSRj|rP{nbabD|jz*}vowzwW|4!y_ZZdoHBh z$=o?#|2ngpeei>#7zkS*c~}ewMDeZf6@ z^nH6+5gl*7=@6B${rf0jg*USM-H42d??C#4^e7~Y5OAJoX9}gszj$&KpKA%Xce4ac z{q6IKxe7+Dwlw?of4kYXT3sNgP6l#`efWLIsM=DE0R6-6hbya+)u)pjMX8{W+YIxziE~P;k#CB zss5hi&~F;tH88O2DwYh=;>xbBm0MX-{I_-7t^Iy1R4LG#4e3Gj5T>t(va>(Jf|Tg% zl4H4B;MA24$v3!jKWn~!=b*k9&6#r;eb75QI>4AfV?N0L5xgRfuZeWS%L9LPjfG($ zSO#I4bH*Hzufe682id{ibLOr-^^$q>BQ&X8_H9ewuyx0{w(G2pgn#yTc13}DpbGB@ z&K`4yEk`UKuZ^ddM+((K#7ORnwZ!8sG45k$6yY4D--NgIurC{M`CM*&3ML`$e2`*I zKK`8u3;L?EB;t$3T4OQaTS|ai%fqCuDX7wlLzc@dGU@A?+?s13O^O+vi zVdVr(gNc_Od`rwrZ&mcFoY>WUs%w_HcI4`s&1)BI1MgbJdPm1b`eIK{G;Z_Stg=N^ zogE!cRkX-f6vY339yjKh0)0DW`8USgAZY>r{{`cw|F%|(#cdiQWnmpw+S?U`4B13k z!@%Jmiz~jJ|0#Uv?Au)l*nA7Xz6I=Chu8|?Q)^&pEKWkq&qY2`7WQapO7NOi#B$zO zgN#_^L->2%wVl9DS zqLQE~dS6pDQB@D@I^fF9e@I9?Km$0_PdF}%2B6#P*E5d-`(D)t5fURvKE~7e zouj-^7@)jGM0h(-`v!%BAK+Is$MlEX`d$%h_n(5Df!RO;-2M=qX{t8OKHja3h;ZtXDS;a1_0#vo2r=i9d8=g`+MS|Bv$(y^MBkI;xE#%6bo#ltle^YUtPbPXM?xSb+gnt~RP6kQ!TcaP+c!YS zu&7#~W8DQ8FV49I=s_0Vs%V3oXO;vt1Xnqu#tpvBbvWEsi&bA>mGCJWk1G~cy>``V z6X`S9WvMFo+6?WB#sz)Ev_yCEu6v~rtmU6Fqpu}eXcNbpve6FnO}^_b<94O*Nm?gn4Hy!_hG(m=BG9d zbIgav5QToj+YiUDw_fSXFR6B~+xWwc>$sU%7oCENC99;4LiMxU5iER%nXZG|`4lM@;5;KmSX929^?L=N@7E9bn_e@SNti zcv+~KXENur0)Cly5$dQG=X?mM5-U9RcXti4c}USGQ0lDNXG3>N3-FUkRy-`(Dvb^?2V>?z5cjI zD%c~~Y?khfx-1$}e9lkgx;Q0K%VtMdl*gII{r&;|P%eAZ+V$T$^G0iL%I5S*d#YKB zv_%B{mvXE%?#nlM=uh?k5b`5!!F*H5FUgiy1bdIi#aN9v)yu+XHZ7Mta+AwxsG2sf$n4^)!u;7_l2o#G0n6=T0geX}3 z9v;!}^jurWBkAAa{s=E2{TQv_6qh)B+yuMc@3NsHtSk}P=d z*+G~Hex*$MhnWQFS<*j8vcuWz@FYvJT`M{}SIn@4u6e@ks5#u zp@l;kBhg^vuJz9 zjLaX3QQ2&dBK9=+p++aIV)qd)7@tsJlnL?s{QiU}f{J?vWn0+S;&Z^!W*WdPRxzZw zgBHPpFPg-9J6qyumte6V)>e>t?776(q3|_Rr&qYA8gYVnxb=$jK zq9@beJ-T$z?{8A<_^J_@OQaO*Pq*#qQ6O=YMpoTF_3ed0d_~C-0nHPIAVN4Kf4pyC z!=m>s8R+o({F>U_o*7ECjfYf6DA1E_9U1KEZj!B*q?Wnt?stp~+C^2h#R^TSbbrR> zmi^elml&Q{wyI<2ri6t3yi)!G#9`_}K^UqQYnae}_8fb>dGyY@VWjMw|bN|7*kruss@KM1-t>-RWe1;>mB0zO@7l z3|eD$n6KuU!8e_R7?0?3C`bKN!<7=uH+a%?l23~Cf>>*7Uu$a&s;V32qbJTdwcGV~ z+npSC^nDp0F6sqOcgeHfZeEdw8ISMy7Vot2JXd2Uvwwdb_m!?`)>U8Y28Y{jcRMzm zbw+z2r8zrzt2_%S(jvPKVbdApp4kV@BfW(Qjt1>K%(vog!H3v~Pzu;wg%^PH51-U3 zK}?KuSV-){r`(&0`^fj**_gt&eZnc*quMWaN{LKD-1V9kg_ZKb7K_rQnGe1{UnxqdC8?mn$VTTn&6k5z4^*T1FU&4N3SF;1s6?8bd3uF@(_GOy6h-q&p3*Dn z0hA$6*U=5EdS1WvEd_+K|F_3t<9^P*cuu>DOcw{Xh%m_-vGO1}VBIilR?^s%2D1tH zdx7JJQ>n|w7G9OeM%yP_rGad&du`?L0U!x?;JNN~WlL=xePsflL|Q!TXq#+RgMqH{ zFv<^8PS+1xq~V!r?+n5t4ZAQV;E#M2mZm*;03sWe0U4)_tz)y)jR2tY?* z3|!{0qB7Z@5j@Cih7-e&3(P#u=qZBLS)qU^Bm-+Me@CgkEG+JCjWx$g!vCgqLVj340oDnUX-+e)6eNf{3Q4iwjeG8_Rf&hD1&zz*)pPlw%8GZ4 zIYfTB=)i{|W-k;bhw94(n9q7AMlZSH;$&*PPnLvb*G}@sf56Mlg~y&XduqKQUXmSL)7A6m zT{1e>(|7ZgDdB(B_T_77%&9Cn`KFKgA7yK7G#xH&CBuuD{Rs&ZG@c z-s7KNmV3|Kd(N42&ppd`{d@`WCwTDoE$rUNWtnA#5Zt94f^SbQvo$C>M6=-CcExfM z#f^PtzMoFRm%k4h36&x%B$X_K+bLN?#@JaMApvd*{&(x$eC9d3Pd~|TE3UHpe0KIU z%n2Ske3-8(&Uqc*78ZLQbKkIg|G@V5uPD}6yj8we ztR{Pv^_5p_A%5d4lJq;#Y1R{Fr-bw?lGDt7WOnM|mtJCzy!6rvYe;#Q{zr1{XSRP* zLP14&*Si#`N-_1JA3JWy;{sR#Nb(3u3^V0?-hG7Dh&JZn;78UNn&Ma9WFq)R8C!i# zZ}RinVw-X5w!d!xN(218mE2mdsO_ucAF}(j)rtM#Ygnh3AZ-Q`uLpcf z6tV|ucNg@$1CSSA1YIxb+RirYToZ+|&nl)x90Gh=Tqp&DM>ql*zCT#<&Y47>%RvT{ z$O_%(s?w(R?27uXdiv{ig=1k?GL!sxXQVkAZH}-_tu}wqZ?)oJW0%CeRbKpkJYe@Y z93FelML+zt>iYWb`uba{j5_q6xx!9o*abnO{;Y;dqR|_yep|Vk-H`U94(5lCyw`63 zqXp26X?7ZXFR!G%dHB*z>2`&qXyf75{&uQ}Hf3 z^1bUyCp!LZJ_G76$$X(vFzl(8k~aQ-v7~YmnTrSpxlSk1#XxZ}8e?D*KrRa|;B}wp z?Ni@4_{QEbeV}(>p!dKu6X#Rh=Z3nP4#l&nx9}Jgeo964x%r}{N{XA|wA4qH=%?v; zE=_$&^XUZE;S*R}S}`7%{}1yC^dUXn8&pdPPqG#`0a!EOF`G-~I)E^ccx!*kYo<%u zqiH73r>^;t{uxkNP}0h5EA(FCTg|q)7_>wS3hIBOD%dZdmLXEqFNb-v{4~}E0mLX| zs2C%^7Hk-KBDmaMJli`Eaq69TzI3vSWz)&BnJNUOcyFW>B$qQRC3tzQOf%#N*qmde z4Q*vE+Q^ZumwA%eW)@GtAJbTNz{!-snlmwq3Ss=xa4_t)Ng9XphO{oNp!4WA!LnM) zCpI67Ums*%!G9$Od>=?SFoE;GQsS3xhxJHwv)apLepgSN~dh*(x(mF zh`gv2UsJ5ARtps>+4y_BQLT>s*5Ppk196D>C{KaBq-le^Imq|LfOvxgv{3>c>g zPqS9<_0;;Cg2yJtdwP3&#zET|`{UPyC6JQ%F*jg}4I2xrTp%xqy1;r&4aCxwOryPY zgGdrI^z1E(uF|s2zN2{TN^@IVvtsus*{V>eidkB>6MDtQriO;5jf7CKy|tzIJ9m4s zCR4+&r3=l6P8@2cJlPckHxI0+I<$>SZ=4wW+1UO~RN=Nm2VcF|jr=um`zozle-{S% zU*Yr80?q#}w76E0Kr7IOj>QP>YT(ulh+icQx{1sS4NH6sQefOoLOTzC! zP?XA8tWr?~tCDOxw7eS@vLa?|W^s2rWT-Z!dpZA;sQd?zlwPF@=NNykIP;#hB24%s zi@WXk7u6Uz{o}6VM_D2V4F%R&Q@bqv)5Ki4J1)Qmd zMg6P43tT*p?bI(;FKw@lI78x1_*ndWpE;9U){v9+FK*w?E|fd#`(pL%^roeCwT;2B zej3VZ{d85JK9O3v5ot)axY?Omb`%i7%3-)KS!j>M-h+Yn9G5}uc|a|YHan38iX`3+ z>=NMTic~fsrRb8D$tiTvxc_9nr3HT*FKB^<@$S|OT3Whb-Fd<1T0X~4jp(n!D9xJu zqsjrT%Kt_&Pd3FY-7zck<80s5xt8M#iET=szU}Ejh`0 ziHk@;mP=^^&i5HMv~O%fZrP#@mv-%4-F(0P+{2fT2V1hu&7tF?_YGFoWl|ShDXe#O z?ONP3Ua1w1jLo2B`0c!@$JNurL@_)37vo=-Ota^veVCQ$PARV4@_WI^~Ia=;_m zn*p^7zi$J86&h%gHW2$w(pf|FAm3)SLBDcTsf5|KC?8c_a~3N`pBwX3f5PSz{kEet zmU*|$Dfz8PyY1IKeKw1D;*G^c{aEeFD){6jw^E>mtpS%SJund1YN_;CF0EP#cU_Np zYtXnD+-k1Ghvd-En##)Lr52$=4A@N4QB{T^hb$fiaGBs%kJHy52U3^*1ou}ufeY?A z&0Qfc*FyFu7T)iFW9fUtA=HhEJ(Xz3z(CsNLOT!?VrwYO>JW%wYjB_+&VgtLa$E{T z=?nG_q1mP34&No=AMl&4#@aqWvD6HNXv}$^;gmruUTM27K}Zl3yzvXIps^k#lI074 zpGu?@6&6K_WUO=#UN=P;l{)>vV+UXZy3-#842&P%u?&_&m4A^$3taEb1Rh|qy5|5M z0ALBT)h*mI^lu-2?%8IZ5uTZw1V?4X%J~e3@vcer1QNjEcG;X}6`C~qsM>))af+0z zDC;cd2&6(Wb%+v`Gu`%`+p%ANi}8GxkO}ZTcyNxW>DPnCx&|_z- zA53{;lOqwZ>?w`A@_0%S=SQQ=Koeqe+pgO7M56tj+pZ^n&c6QO!yX`duiCyco=nv~ z9BXgAV`V0h$UNMB?X~%H`Ihzjzk)FmTyk zYv0cJ!%46btNKtFH6#-G*JXVm*xwgig=ZoiM#)A)!@gIFX){aDRt`vkxdgh7Cl(2= za>xpUO2gX)WwwY3<@ac8=e>+PbT9}?FS4}lAt$-#fc#5)$~$^33WEDKc6X#9)EIs2 zeQVd=^4PPF-I7WsQ@1=edN$NW@8(E29NFA^&$chglEV|KuH950i}>9TDk~Nl0{}?s zv1DWGg^TOMb{TSKAW+6i_8XOK0DM*^nGBv-`@YA%ZG6R^UH`Ic&n;_($LB+1^lm^ z*@{Nf`MHLdp7*V;7c-@-MzOxqbCer?-qYNPQXX2n?iINuY~vq3lr9oAPd76r0@_7TQf z%xBn4fH2FtT3NRAk;JB$zjQ@-aBdy@;8yR%(ZYy-2OHSpeemhgJDcKR@3!&uTHn7x+W4-Ht4;@4L{cvm))8rj1habxWu*~C8{hu`ipjQixldLRe4C+SwdNV(t`y^q$RPBxr1rT&L8Q z3Pch~7#tl5(kWAGh4^Ec68v7`P$oRDLawf+QG`Dvh2CH-)_~y@%#m(vUJ3|Bw?t9~!-ABI5rM99R!W!3{bviWr|7V~hOo;Avd5h3+-7_E`1RzELomDGC5~T$X~#XHFB?v0i7Bv)u{%%VX@)W5sW*y_$=-hD%LO zebd!!(=mO;vscgK$`<&OhFp(!p$mbZJPJSZcS1&hmD&*S(XfY14Krrp?7+M#qiWzj zO|&FUoLm-)!?=<(R4nuJ#w(}5@XXwK1U_!@UL9@9IWB!;HV}~nrc~5 z{uZGW9j>E~GTjKk9P49LO25n#W-kg{zYKyc#y$qWtB`xCr?S$s)E#OTgr#ts2)R|d zpyC4Tp9J9-CQ1Jt)rlw#IG#T}zt%p3wbl;5eXLzsAlVw~CR$q;Oa_CM0t7}1c5!q7 zIxjp1Ay_XRP_7dmSz7r3PSvj=w{bB14cI4s^BYrpG}YOeing1!@87kJzQCG8RSIe$VHFY&>vprf*qqJ(3)QCjK#ke$o>*9_cZ6rFeY~@94yd{$A zytp$JVfRo~XQ_Ip@N{|URvarCptcLk@e zeK;YopRZi0M-n$C5;yWxLceWIRo|(dS9)&UW9&Ci2rpp2X`x$}F}MSp%r`$sXys3v?7T1v_mcZdQb`K(kj;d7!a#UVU?{*WBay^EfRKF>&e%JBEX_W3y}pFM ztY;p@Ps^9T{AKnm4#lHJf^EI;c)IurzFoiipUq$6Z%w+w-oW-i0>MAcmBFrec@d=1Oz~ud z^;0+v_TJhWj=?d$L1|I zb3+60i7Kq-#zwRC*ZTc6?TtZqga3P*{r4mKf+^^3Y;*^IRny*HqgNzw&$Y$J8XJAz z3%WONb_dysQcYA{BSAv{>U(DEKPqhIQk}nUuW4v-2lwpJH#f8=*yfscoeJF##m<)Y z1V@GK395g~mg1)yaEEUJWCc`jnAb-H6ZU5pbZ-<0RuN?Tz_-u^0)m-+ycLRyJ^5?79J0Lra6}{jv9Z7uWl4jos>Z zI{j_hlK$@2Kp@Z%YmCQT4Xq8XhFIDa0tQCNnT}nOwue&o^d-fsq2u2f+o`|y+2n)H z#+F8BJpQMu-+Aj6d--v%H#QW5`Rf2|8a>K$H^tto&)yKbVTkmbx5sYxvAS+A&i*A! z{p@Bf5NPcl=++wXeR~p4x7*nmYj=e@FAllzb?tV9Cv4xS54N`cd`E1D{*&KVy-IoF zgYk!IKkHpo$H*s10nPRy#3B2nF-EnDD5&3dvaFQeK*uD(-xwjg=7kAo5i!puBw`kX z56qoGG&Hx+fMf9kd|UCp=kB|YJ|u#{2^UU*zyxeIaAMyC2i-6laPzNFiQ-Ckpn>hz zKfw00b(9-f796ksO+yf|f*$*!(l`kdOoXsIxdyg%#a<4je^>x=7qf7Cb-jB*? zDwOqtSUZSsTWo0HH&p2gHOR9laO6v5*sxa0Fh;B}E}-h#?k+a2g%!fMED6XBWe!WT?YQ_7nkW zT1KoDeid-{Axc?sMoWO?V_P4f1T^j6scCf)*AvOw`~@jw%hPgO6g zbcU*hXb>7ipjO_@Uhq^aT09kGm2SPsT`2|PX4RkaO6-hYA-P-5t&y1L(*Go5^W9wh7Z_N zNnaJX2g8n#>^qJby7vz7XoMlTaDQ63Z=IKOWLh?r%PLaFlhAyc;>%?@H?U<(fU@5? zhb=pL{J?lmUtiDof#Q5ZZ~Eiu(|=@+nte5WNC?O3Yu~$ru$kxaXurFA$9rq*=UTB- zq13*meSJ&!8O3|qV`I(hFK!-rjsbA+;`PmA#2^{6N#Wl>V>>}dr6FnFTrr5TM%MWV zR*B`+=ZE?t0sJ1q;4n5>EVpNGr$MEZGIUUel64#LeJK)KlI8lElt$Cgyb!i(7uno_Nw_u{)Ck^))@KBl_K7O;)bHYBl~=EoJL+Ij8+RrW&8-jiOc9`!-6BxwRrAR{Cl9tut#{x@gepIeNDvx|4;rx zaTEUxJbrIOHU$_7C&UzF^$Pa!rAB<6k&1&DJqYZG;0+mLt2UfFNZ&(3ZU$|f5j*j% zQnW>5fi6k$l>{6gFl(8HSP?0K3L3tL(5ZpH(G>De)o@V}9^5*6f$N>_wP!M!VpZsV zn-FP$MYCNM9ZGf9A=#n+KTk@sE0G4<{ia9n{hKU$EUw1Rted@buNpQVV=q=8v2eB0 z*;XS)+meDaD>qa+DEcTt5BBH<`KmUVS`pvsz_guepUtTMho*YeF^bnZ{Q(upR3V ze^~!2zL;JQ&Dke~Um|{V5S$O$m~E(-#)veml&~!*^UF2C!~1=mS!sUnHrO}X0zfmC zR0HrtF(xfdW7-bOeqtpv251avCjieuY%)C235cEGqVzD2WPVBH2i_yn}gO}wNWt!JruyLuW+Pq}bnsqH1l;3+QHP)%w z5hY2>jbfDzceHg}f9v&`bVu0FUfV_}ze_r;ytOvj(|2K8b7Rvbdq=9t?)!CrOd}}Z zZJSs3H`m+Nsp>jgeRKcn%|>zE6mK;ncx<~{Ft^5|$@Z@7o>W~^Q(bCLwyV9iyrv5` zz~_mmb&{510bnsQ*j*600p6U@AYkOhdJw4wOJWQw8=^O4DSXQOw#t8~uWsGY2G0rh z2p!rs=t1^KqC3fpeLUICch@Yf(O2WZpDgz9C-u91kw`-%BAh_x;+|4TehOy@y%LE< zvAG}Ckb6Z9!tf=Fp-4k@bwk8>|KCM>+l)D?f@-cYByS+Y=6~U#i*Z1ZED}j~N#uk# zjC~xonK77MDlxp#Y>X{N4B=Vh-=zN)4iUN4Fb_B*`1K5I1YK#r{w;r+Jzi{LN~*)e zZZN?PLt$U6-ch|H!uz64P0_jE2;PTHp0S%BQGRZ*=>TPdfo_*4 zbobr-(&pl8;kvpof1;{RvOJ<(Y&Sm}@)RfBp%9$eUV6X|1_eL-IsScG)nGuBWcTZv z`Tv0l`JLr;?n>T=ENElW69dP3sF-92wy|I6w;J^3bHc+yu;Sh1=D|WVzrb%0&ryp> zVsQJQBDvg3m=s2MZcG)-B^)RZoiU?eQcb!@`iImH?;vAtMa zS!sjoq$%k^xMrsb_B_nmFDvkx;to?)7zn(;plvmo>V2xs9A0a+tpU-fx|>C*6&62z zfnW&Rt(7U_O2OpdPE$k)NEeyRZL-v6;*wc{K6H~+f5$oatWF~;_x1~$n=fRyIW>HX zP;Ip>H-|0O6ab1ckfqoWBjFO8%cE|h0M%AOFg2P5^g_hG*kT31o=Ju~r{?TW;Mur> z9}@sLEd2-*8;3E9nOqu0i*Km{!!>swr)Lr&q-`+^Y8xC){EGxwZ3k5jJ8dWQ_sq_n zmXIZ=tg@ghL>cZ$fU2>n?v*M8HB0Rpj8>f1C_LF(P1eQXU>L#FxphG0HYpGa276?a z)C$kr7MH3@9_Ph^B8gkfKD3YvSrEyxX_;DS^{XZoFV*^q&K(B`MC`zhPW{&A3lU=9umGG^dbUVJN(1fU=EQE$GZOb6-8Ztdr)TNNzCZ69UDDIDWOU!r{qsh2FYemjk;`># z-!;KLvY?pX@1Tm<$9k8H?EA}jso3~m_Khs*o%;-BKU>a7&~q7^u<%YHX2c?HHn_Bk zoD2LCmM!pIq;bZ%ES3kOR_npSOd1@ZQp3H1)9mTtpj+&QHz#})bE(GyG2Rv|KBC3r z8edv`D&E!<{n^ia)$IuL^Ii5t-$Zj__`2z=&Aenw+oH?rBHL#7wyNfii^9Pb?x7*~ zTD~&y!OzEA?QVd_DA-24j*Uk zgSS&XZ|BSSI=+)n@>zb2zl-0(@8qB0pW$EPr}@9~7x)kO&xN(ZQQ^IaIQ=*xNB&Uw z5you}YdPex6d%g3)GDBbplXm)NEi}ZlJ@3OfE$m%Z@wKVqo63Rs(v&!%$Rh`GBkY@Ir0_KkxK@*3s}mlH3IxJfvlDVeAiRVWc7R&C zY+OYhbeq1U7D9RrmZ-R;;Q&}x6vvk&GYE+$Ll_NJwKq|lfVoHlZAXks*bTvyQ1QXg zvX{lPvM<+}>&W4Z6d}BVe9R#@pdXh2IuKWU;Q!Hb+)rSa#>3)yl(;X47U8S1DIY8p z5#$(|eVEwLC;P}SHk*ToY$v|RP|P5S3kuzGVC#WE6MGSEqbgrc=|pd!e9qSioklI{ zq5ez=*bmV?Xc1AO$d#jRq$ic3Z%m zZUTr)!%gHtEAS1*K>#r(qcN#;Z9?**OR?I;6>PT(X!cfvEQ-qK-vDKg}@6u)rtE2`!dGuyRPC!mO>9z|CTc4^S2{7d0h| z;R6aR8^f1kT+yrd8?L?>QRH9chav#nP%aw>o>XbYLTk`~1a2f<{v34EE^i{unj}^! zIeq>VZ*>c8!1i|`d{R$X;vezk5!IflVuHiE4H}Mm0T$-Sj=R9< zY=C|XhQ7?qye$B|6mo2!hBim9yHOTu;1k}&Dsk7%OaZGHQW3#bK}1x6N143_%9bbs z9Kl3hiOP0V;uDw`@NpahtaOb8*W)C1YHOq#ZGpLZm6Q_1n1~qNh=~q9RAdgWdc1AC z3DE~6k(s;fz!Y`ZJ?hP1``yeE=M7A(Q>rb31A#OVq~4KYO;K*QxSSA3*DwU0Zi2cE z{~5t&3z(Fsk77mhZb7JtQM2Mqsu5~I(K2(qT0jt2*vdo06K77D2L!|)=5c`qEGPmR zI*b5tcqJBYk$$^A>=4|m+}5@>yXYNgHY?!dIld889CLCi#oDE2^sZ2Ebx1r1+J%K> z(Ht@fN=OPSfbtYwCT=45S5kPMAi8a%-~Ft2nP_+4A4c^h=6BJU z56mARHw8EpY%&?M`nq^E)b@dTZ$MTpEQCi9J(WQZ`=X#Y)f%P%&qh)t7mO+eIBdh^ z`u76xWr134_7so1G)U=HlVVq7N#^dln(b>nl1V|RE>Niga|Kld7}Dy(T!gn;cfBsm2RvVpZh|q`d$|KzkoARs!>eF~FK| zH^0dRyB*wVLXg|F-#SX(J5jgNU#vJXyPhS za5}|^*#aOx?0-?o$yvh5cno7G#T|{zA+faSDnM|7GEO;I5XA9aJcvF~91V+NVYR6T zl)PUuTUk&^2Ay))0yQ;i4>_G6b2Xc=QnpqC#o6u*Su7zX3ai&ht3~q5wicULQ8m6! z6nxCZXGNzP?_pt4O+u?3ht`YxMgIs!AKsTFaSRs8WCjxhl3i>PWEGlJ0KPCkSH(Us zHUhKT5L;HfkXs$h>;OcM*UM8GFfo$TCVHehz~4|*I*{zD52M8-S@95}EecQ>umMs6 zZ^#BvZ?4*~_5zhV0Jj!It(B@cROafHq8)mA#gVFVZO)pwr7_^$lbkd$J8)nEvIVP< zSQ*4S_Qe8NoFp)uZoy{BZZOFjV672Q%I~BQnhXnyY$nJW%ol)inP^SI;>Eer;rFR5 zv)qd5Av9+Tm_mrVz?_1`%On?nh=Ub%1Z*`x*{X9e)9v_oa}$So4hu2CR>=md&8k@K z=c}y15q4s=v0~~nPo>20gsNAnvE$W4>uj7%waD7!(eRxkO6~fHYEX3g)WHAGYLR|iKGJOkk#$|Gd2~!o< z;sL-wVDT44f6#6Nx{x;+><%&JhU6c34wf5PAQoU%vM|U*TPwhc{HkDa*?=Ep2LC1N zuaTscE#ht!;6vf#zK9PW0UQ}nO`bp?;&QN1WlS?e^Nl5u34v%tD9x_f2xla&F`o*ec?gfc{F{Rb=z*1Cb~M_}p$Wd&1wl493? z!dZ<|mL&aKkmDM>*ki&ou<0N>w=Cq?6>s0xO(4NPDVI8GWkfv0)=eprHh|C}od9jV zDbBA1*95L>WZ!G!quo6{-J|12fwj|_BR$wl^PoGEcFpar4y1fQru4hLH5#5i5l(p` zK2Mz*5tgC+_@Bp16_pZmpCYgxRIs2XKH~Jd12MQ9a{cRebNGT@i_In2>@hV|b)v@U zQ`K5a1kYWPXMc@<5&9bP#U=X8_$`w-px<&rOwdxEm`5pveliTK$(aixYz4fTB7E%! zc`W^IEt<;K*}%bz!#^0??%@&7_N#n)+&f!yx961o(bZOWdO3rmjBV9d9H%^Y*YMEo z7PCF*@-xkVAv$HyG;V-QHalW#X{ z%%W&9T+GrSi7>Z7J$B?WNT-p8{07kK?HUsPc&Qj&mzXq{S-%T{XQ!-x$n4Uv z9qXT?GaI6T{vo{DBy)B)5{}^_mPfIK1z~qa0Q^tTMW4!2u>qSmUbi& zqu~SbnUN-$9et+jfea(;dKequHD68qNS93shScskm$5rUo;J4~N&f zk{s3FRM;AM+lBRAt?OG`*I!15*72%zSGvkLu*d(uedU|m`}&9duX1zHrq5QDn^To8 zjl=H<-xf9+`q>@>U6?#%34)6t8vfTP6Rc!#0``e`Zz##}hM@M)h_7IeT(G=9Ulk5l z<@=X^VA(*v3P1UQWfyK*v#P$av3}K>Ppw(mfS;9X*i<6$k>p*bpv&~(+7AcP#jB$6 zc(fMk?${BOLGcAOQL>8POXbd1U?k=q3ZOKAo=kToKN47xW>-Wn*}frK8{N7!hQSKC z$up3zZ8tnA%VUoCHDipH1}fNf;;V?YDsfo87hKZEhZ0QVXzVk%3hNvTr2 z9E?+nr=jsvX87=MSyW93E8;^?045>0t{B9?ONF|-%$~R%+BiNp%a}>C$2^v<#Q;k2 z3my)t*~}F;2i_jyfgz$3cGHGPdwfZ&J8TA;9@lFZ1+$388)&Pv0leQ5^tk9-U@?%f zsMgA$h(PL&KxRcSxFQp9AVj(tthB0@j4UA%lx#L#3~JOIbti0+8^l*{Hr;RWNv3MI zBs7^7ViFN^5fM>Z9Ac~&G>v%n zn$LkyCx8wUT5Su9SrQIGN(+kFZgcype4T*}e#CtTes@m;<^aEK3QUgv`$OBr2nbeqB4QQ&*Y603H)?7rEhSuB$Zei}95IGkm%qW45 zgijhMbhkYk3;DF57SOyJVorj_5iE9(kg{8WD-Jvlhuy11v?amq0l2Ax%T#3WYt$%3 z6hM&UOI4f08}J4L!GO+Y`Lh?63p)T$Is2nx+Lp^?o?iSeOFIw6`)=9Svw6w*?HVeY4f&Yy!b4 zqNe7&L==u{6_bd{)@Nq z{}cvZciYJKYFxiQen&h``!!_P|M(v8E;bwcbq}QTm!QYq_KxiV`DYl-8NkV8XNS&B z&iA1&b~c5!&KpJjiHxFXGe0uDdsnWjE4OR+PxkDj#Lhi=yd?kF@i8BPt@FyGA3R#g zW&M&6d?J$}wx)CzHY0=%Y_!VN7_oHbK0(EQ^12FH7Fv>J;?ottD(hvUnpkDF~t0xyB%pFKzK;h)-K}0{#OL2Kf@m z#t0b}3SXPMM!0(J9%1R+Q(#PMGVqg!DP^qz;(Ah?wganx5@QoP)u2sQJ1+0phD^)#8K}AZ&YwB~s`;qKzuLEK+3|a}_g~!!lZ&9* zy1xtY3On$FDz&rYg zsNO6HU#SaL{h}~oxIy*Eo1^uto15tKRl^}ML0P_+>) z`v!_VLH_+&!-xrP224LPKmQCPM`J$E4h?p7cXtgA{pWmQ)?IVv4F2Y=Dvh9mCG$#Q zd@)A zSg=Wd)Bs$f{r#sxg-~t86*KJc!N0(ABa^MAS%7%}3WlszNMK$5HGFAst4s(13=Q*x zCQmJYs4m^Sbl2kM#@k6WXm|M**TDN#_4on8ZgVQwVI5aNnkZVT>*Eg1T&w@QE+=F+ z@WU-WiH9` z^hO{)7<#yW79M~Pm4ua6t?vbsV+dDc?d}Qm|3-^07^-4Cgar55s9or7s``1-ozG2g@gL`-97B9~2-uw5c z&)*QS23&5p3*e>|^w#h&P5jTsy6S-STy1GLZbrZ+A*ZQ~jOJhw2Ln`~BgAV{Ilx+% ztdVF{Ehzw?5%L+{55Pe&#^4T4iIvh=Y&35uece|@=1uU;r zV=n)R{|9h*up?5uniOMIi`Y&2!9{F6f4*Cv(Pz5ZC2z=wahYTM=Zo}%?50Kf=NIH7 zKKRqZFR-uHz*2BG+5G>{$cuPiN%BYQ;ovEW4K%`_5no8$CNY*2fPsknYG5~Zk~w83 z{6Gk*k7Ap_{f5lqXmIma0=_3s2RfU4Qu1RStE(>bqdiuHAh7QFQK-&k^?WQT`TRls zHAVim#Sgi99k)E7z{SJz8;3F?x&3ZwL~;Da;>5KFEVyfO`7Pg;_3wZv1tBL{aIA-k zy&~Vfn5(MDmkP=zb!^NkRHrLnzQ@zv9us5F1j6CKGf1?zd+vF;GVO4EUYwGc)noY` z+#?inp-yny85mrc&lpLM2Vds+oy7xz?39RDOe#c~Ao;;nL$Y0c9c1pRe1lS27SOj( zBevyIgJ$W+`#RrxbzTXB2lN}rJs+@TFxJqYWax$~>>q$lCaMHsp!?TZEq4*d`MA51={ zi6Lcj`f!HS6`%D#;OzAA$Bl%;ujs$0j1Gl4_1`N96NrpX1+G(N8Q6Ou=kQ`Kp1;>T z;B>+HV(}omAaKj%BuR^>*THzjenR3VNbWQ9iH!)>Ab<3uGNLu$crGoJvu&sR+e`V2 z-+xoKQW07z@J>&Ihh1Ut>%jQ?Uy#h+usM;p8`HSBW7CGK;x#q#t2S(UWaEab68O1l z!^WNC^TML%=M!J~+4@^p$NFBtDsI^L$fosI#}i1dr&34?D@nxk@AI-IBT+o|G8KWq zv;uOnAD7-7(qyi03`-mdJFk@HSOLT3w1De1<+O-&OF1pUy11*HCO@`i<+KI6^V)Kn z&~>gr??B6l@2RbLPdUx-4j(M1IXvK=E~f=t|MzlQMEaNIv;+^izn9Z;g_pU?X-mZx zmMo{$iduGbSs_0-n;(wuJrW%snwlJ$nw*^&JaTBfnLb^TA3ZcNSU7j#Txv_cFf%?i z8BMpeox8XyKbbGgS2uI{X#4E!NOYtybs)MD_2wrgrlQk@seSpO*_N@{+3Cftt@M3# zy=7?X06L@qcd5aOSsaHeqF~*R;5ZJKpeck69WjoxfHxh)^+UMceD>ZYC^3p_bgyvU z9Oo;w1*HlVGpL2?kHQST1rz0bIaeX)q>=lLt(yVZ`zXwuX7M|MIz~|A6hdM|5qO$v zrDvJI?-Z^~8~66%$`G!%RE!y=reR3bir@L?o6p~3Joka}JjQ4+e5P=IJ*SoCTOEAPzYHOv69FKCsZwN=&-$vXhV$!7~CeHn5lx`l8pYM3?@pjs;PmUWG%MA zI#$mbU}Mw7nvFfF4L+0YEWIMuZt~$`DiyRaF$}%>ScYbpAE2OY&l!ORCBB*jjcmTgTS34eS!Ok!@m|*%nyrYz2<)cD94!4zNi!#irRoR$w!17Ir?Dv%|pSJ;JVJN7+@d`Z)$9&lBt?8EGKb_ctYeT3b` z?nYFPj{;-;9(FJLIQs;<4^~8va%_s)#Z=ItYR-_0|J3h0WN{ID>SpEb?q4@^(sxrD*#Y0LbF=CnA5w zssdd!G-$k+;i(BM*UIqt;DM>hVY!f>Jye)PRa9eX5YmXU(f2f?ukl2K6C!<+d1iL7 zP|AV6x?G&hUok5mnx2>%99B!G=HbHNs7T!|V>IWR_nNU{PvfOc&YDLs$c(}Y6&Rl! zHJ8uLX$j*8$LT?o6wxh5q{}gMrW6d^VRV*s`4si)%yb@aq+q7qV5WIEKVd1Q#%2%9 zCuv+*OIK%R3saM$@}bEIykcc~dYi!&+s{rRyoSlVI5Jf@Aku5H%ofH6Cr9zV3g?o;81QKL0SmpGQUmR% zd;CB%mWoMwbi8hQ^eU z!gzjict#qxY;4=f#F|3L!X2(fE!wD^*Xv&m0Kq>9L6N}DZ4GQp{%O(w_Q?Iq_2UNC3ESH_{mb#*{CB=)007Dw zPcd%DJ=;j%SYLnFkU_uBNZ--n0mfi=Qi5jODBe)tz#kCL!<5BH&di$-05$?PQSWbo zNN5@q4hkUSh7bq*FW11pG`p{FqOWgh+&MHLpnyP#xyO{j@DLEmRL8`u4*_CPLkSNB zuC8~%$o^@kA8ybyI0ueqDy%RB4p6gzCw9-?T2Zl6@jx5d(}P3r5}>@c6^ZJ^aHF`k z9jfykuJ(i3!;NRKdO8Y?8Yj_~mCHSTZ0h7RyLsyI0?`ma zU!7KYDs3IVH8a+IQDdgks}*{hSgkazdB}sBpZKYf(2d<{(sCWW-XQieoxKX_u5YDe zHYpBNPL5pMR8Evs(x8%iSx9+d9=tKtNmYh6tBr715i)+m=MQ?3Y&DV>zMB+Ns`fN}|A zKt!|&3o-Tp^gCnn-lG}T)z{{uDJvXhAyUwppq%G?j!?(@vYsf^`a(JxO)2FYOaAZX z@~fq#s(Az`D%DBcLeteGW9j>cYN z@*sufeDrZuq1}{`=(CvK$j%Y=mCrO?7&eq3>sqV>*}n=!K)d0zj(0yW2paB0!X?@c{40OQHxwGdPRyp= zMO=@(Zxa!Nb|Yh*>>gxTG~9`XOT1n2SN+a+cqD?ImQAE1_Ou ze=AxB!_LAw(p}F;X*dfvi)?%Euk#(-sA>2M7n@SoUcH7;*XY`Qb=)-ajh}T5@WvxtCl2A>?%fV&4tky5O}NOp9d5Au5E!HUgMuQT~sNf3yQnEJFTK3_S5l0j?T1 z16OTgfUADhz*W~A;6t-+c>7<%AsTBm!)rDeM*6Ifu{Dg}$F`L~W?iZwuQjrvx4(2l z(KkRMDDIH-H65Wti&mh=IGi<`JkC3rLFK~^Qus%T}19+mZUX5MBr~uJeLl0Upp7MuyGc4e(faq^zuQ-`57XD zJ4*+RNG>h7El(R`AKy_VT(+BP$mc8*_)>U*f?Kr}|5x*>1o+aeC1iXN3ta1<7jD6a zotKLX9$QoT&GaQ5F3pcw=%xqlFzZ1)1mA_o zi3mO7M*2U)h!~z}^qnGc(tTX?a%JyUq7(`1=W=cD9ilDNoi1^?AvcBvsXLqKNbS4s z=tz%!T%6kL$Q#QpI<$sw5bKKqoqrdyd-hVdhd-W54u|edcSmPOM@3~v<;_QWM(%aS zb?$ZUM=o9xchU!8Kro2_P`nKtMP7jCRudDV-+dRNaIApB5}>1lj;W!VW};%;?fM4W zc3#tIO4U1Cd7eQ6bnWfs_x1Z^TCUaYt~~F4@yPq=W}pH48EbqkiXH<`2URk|QijX) zE}2`kHc>Vvlea;8QjxF6XbLRJFO)7&KedV}R2AKop-#7C{fLB!CJqrI&Wke*W6CHX z4O+X@_kC$ay8R5WBluZ?;PLBkb>)AFvVRqM?2BUY=Gn;~9%cT+{AY~@JR|3WZujdG z;$yw_4s%dyfSwCv@b=2iJKX>qp~oQ{+cdS`twnhgC6I~^wqIdt-mYS`O10qB7b^z+ z9%9V7mpiLq9><%mzCsY>ZrHLQB=dB{N~!wsrlJZ>(qeg_1bOz;?)1df`7uUr(GFin zRfBILX&LwV2`?Qr7;I;|+fm{s)@SyM=-y|t;aD$(T|*tNP^(7dOtr0|m?q*8G9^KV z5r&J1Rr=A;-NL=9R*~Sqj4kdd+PaW;lb|-0&E$pAc&< z;(WbGzTDdvsoyePdhfwRTlD9t&iu2mJ+ptm^##95j(rBS;0x2Ds#m%&lkBK`9~D?xindlGT&- zP2rJ*1Zmlqj#(RKc!Rftw3_Y#4UljwrG!@6?~_MHi9)pRcbaxAL6`vg4*;r{POVm~ zV8Z`cVleH8m&6ik_Q0y(0E$n0r_`&6F_>%HcRvf}=L;U_Uk3vo!o);FXZh`~0;;nv ze0-j!weq%G%D2sz*loDwGik9E{QSiJ<1QRWPF5Ne9lG^0)L>QD^o6o1BMyz5U-#oE z>PC&ro1a;1GVyk^@EEtk+KyHI4^IJXTbwR_l0~Ig&*nT8XEL)~`NcXymOgsY;hrNy zUz%(*`3yeKgdw=+80cu$1RhmmFi$FxMrK;0bGk@?N#th#Uz)vayrYNM56*@X0t=Bp8#f%%zG|8v zb#t_Wzhpp}IDn!WAgxG&?tc9!jbDUNsfs6CvN%3St!l$z_Yf+W0A6T#<#XX$t+%+i zvC(MyRl|F+lI*2VHxdeIcM}gT0=z~YNbU2>eLBOx3uCGj;gR!DS7>3MMA_`67X__) z<>iElnW=fNTJ$ZqT0xx;=jlmidy9FpqVC?(X{2^r;LP;$Yh?7d#3Q)Nj}*HNMgO=F zkwCr%5(^Ruo!<3m01KIzOja=O{{D=@J%k!m^@!jTFEZFsnq})ERf{T6z^3XqSE(ZB zw3!;bViwe?^c-CsY1vZtex=^i4w@ZuAa@!5Mx~2{Rv>uI* z%6bzkRhy2H1P2~--XX-5c#Qog)@kgUS7-s-12*txg&!z1+ZC;vEm z#E|hB*HK7hr#jdSle%{OwPpUTf1Z}32b0Gech-}-b%WjL(z{}$+MBY)*HUcHxO&w# z$-ZzAV}cY?i|9`cd%f1!YRR4+g_lPm}bx!UXCO7_6HWH>D``#<@|9*;|5UU5TPWml=e$-nKXdM=|^ITP-l;ePk&aaONTm+t2((f4na?oXb& ziTl1YKE&lk_BxNGG25uW;*5iB+YbCur3Y-Ix?{p-BDPqcUMKanHfko@w`MvwZ1VH4 zZSZrotqn#5DyCy`YAz{9H#H>OixbrnA{!W5CJMppK2u5*CEtbkaAD{5l3pgLK8Fyc z)=oVHxinJSs?LXXQxfZht2k2blk!|JAGZC?!MQvegMfw6W68F+xJ5n0HAdqoWm%kt zm#0vz&**Db*i`F>WN=2`WRJ9hvA*{ZAf)4}*EEy8Uy;-1XLb1^?>XG=S@GKtv+XoC zKSg;l<%f(C!H|9LmZJ_W;JJEAN>BL3de*M2+-F)vpj$}p%)Kp6B$Q__ggWM#a+g@LTrF1WEU70 zMW$lWx~(GmoXp!(MN7(dnQ@WwUayI{phtRse2%F|arratjyBq>8USl^F8P|(`A2==$@wV=Nr9Z_xFP^d zEHDjx9Bk}$x83y=DNw-#;;y6q@A>ktzB!PvHj9lNg-}H7j#~YE=~9XaUBSbsJ?B)G z)>eBTt)xfm=p!?SZte|ECg*PuQtmEijtg+(Y{!Tn*|p)iT^LXIxG{rmP&S8)MXjyl zR(uM&n9!or?B%#fqLHp_X-`&`uA6D75&7n(UoJ=6ETVXjD>JI9DU+2gi+xA9d4wm4 zq|(T3qVY=;SU}%`bo#zTS`1~hrZxantEUb885ya}n*tWu0BhzjgDnOwo`%T}a9KnH z<;uPu9v6Tdq2%jngaZpA}6H z6StQMM~C%+jD2Hr&$O?iSbPzt-fN{=-a0$;puJdJj?Z*PdF6%dw2<3LK z<}bZwgzmHZ2^;FpMVQU4o#v{6VYb!8a{U=!G)_Rn_;;GOBVf8IR#wmPnse1coFTjU z-R0hcX&5gUzZto+FYoTf zog;(6VVY+uqWE@AIw>|{*_{!r5{KT1I;|;2hyQGaA7O+%&`3kZhq|+zFb*|HbMY`T z7^1A!LYxAl;rsI+ew1^j@3K`!g1-98N0m76m6UWP;ac*97+LA=?N5O_%`Yi2RMo#` z4#F6$!zVs0C8vRb@nUQ&lXagZvlsOZQe>^%Z2-V02Oo&y4abpPb}aj8WJp4RR4)Q1 zl_P|Z*$_&fD;a4tx z+33uOyc~5xKypNewg7xZfOE^pwJu+)!)!@J)TogtkL}P1eeT~TvxCk1tyg!K8nzB+ z=dRxEt(_g68-lQ~b#3&zD1cExW)mD<--yD3n63UN;f4!f_zD8c;(`DG#wiZpkyx5M z<@{I73<0y@zZ$a`PeNROf^s*P?H1pI1=5QZT8($kwl%qF_-8qpC!`)DcY9M)dv`Kc zzFaQEpWBLia)#>&R-wHk5!ZXe^fPwGbEU;YRln`>PyYZAn- ztxeXfL3S_i-BGI$6sYe?97!-gl*vzj?P3n?@{!ov4EO?TK4k72%F8Dcslx>rGz>JT zcgcVs*CCP_BG}&OyJQH)?GjwDMRdFlWia}r`-*Vk+)YLO^YtL0@DAx?@C0Ho))3n0 z;6S}8_{;N~9hY#(tf-_)@+et5gK*j&`J;Twt={c|cq*m%Tl!fl;;lED|4h*J2 z2m0(Vimav>nFr;2h|F90!JuCS_fbXd3lt2U7Sj3aveWV2H45~<(MA6!zy$5_^GM3cWHlrT>QPcxTFoWlPKrGejNXK z+evJF+Eg=!&oN&x=)<|VafR~E)@8u?$EJ>*j>oopQ`<7N#DZ=KD zyxW%V$UW25fqJa}TEObh2Hw9lyCY2!p){iu)QNq?Q`m{=&VK`8*Zpwe3sb-BB=cqB z;*yMlg?jtku?V8ea#s@&dDYwat#_i>)?X4Gyr6w>eJ8JKpYjPiHhsZGu4>oRVhS`K zO+FYj7gxfxks9t01lHK)C85LHd~q13+E9~=3+Dp6x(I2MNT9uSo%TH7O}5@hk{3X- zE}-RT7X*9~Sg2&3U5lgoXX2}%z8op81ol<g*<%wF5cM- zM-9`)`Ntc8E{58MSMs&A)gLXk*VM#ft#_N!pksxfrjK=zDcPi79tpEBb9CBWT+=EQ z&7+9&B=A-d){#vT52mqjcU&X@QI^dM7(;3%ol~XSShf|;NI;k;8Q{7u5Besll6`-x zMLMc5r4DA!e{-Qt{Ynch(kr^mu($MH$3qezG1YE=uq8dbqhN+Q81H#Mwvn>~>tVs> z=O}XL`EBy$lCfE6OP|&r8;z^$#Xbx?O3 zlyP;$z5 zd{Z*mPtFhJ`)RP#+>;e0MzlgU_Vzj@2Y^c*u4TlPMt@kk#r1qnVZ+#)pGChnYH&0Z z;ENF;cjn|=yyg!#8(_Vaz<$c?oT_z6PPy#W>wH>)OTX3o5?iytZ;gldxBKNbwz+bG zmpmh;nUu9{#IEc77HoNay6a8FS;}9MJru z^FnU#p+=Se-rhpP!0FdCXO6~zpfJbomt667r=Vva^cDG4fv3!YO$v@2!6P|AIJM`M z<>6&jutt+Fcartcf&p!Qy4a-n(DUIw1AULwcsb}jw~Lqgjv!Y1%am$r*NSEQ8kXUg z`RuvbqC2idgadsR1G(zI!fR_9)V()<;ao2^xoW{eH@kHhc#f;aw2zP#vw z<|i3rN^L)Ef6k;orNiS~n)jS#3)U^fv|drOkNwLn^uNMp_2%m7OxTnx4`S(-ZCb=u z6^1TshI!mNjvty{e^ilT2;$ISk;xfSiXzXz!?D%ALen5CF^o=c*CJ6$fEoOfiwwaJ zofb^^r3MoO4}&Igoo+neq7c8f_bLgqWI%nkhAvI%jB5%!MV4r|l;&3)6cxDR^Vgv& za|L2u6D$Rylm~3(5$q3=)$yU=XBHRc#ucQ`t_y$Hrys!$LjpIs#7l>*ixB(#@d8*Q z0*kP44qw3?mCc<20s8SS&?*zutKJ^d6OP4h@CBqXf14{k+8GsTVp$FYZ1(=M+|OUv z8jF+jc6X%FtEvDA20eE#>_x+Aq*uX{xu)-g`vONo>$saX&sV2Hhl>CD@J9in$I-oZ z@uWh0SfoBc1OU)<$d?xCi6Nm`N6h{kMGlt z4_RkoPg^=cmi9Q&;tNzB_NgUV^g2#wwY4waGMs3A06pDv!OgBH@)f4~Fl-%96sd~R zZMrd)u=Fv|o4P`=9cA~H!lCJ#qOugsVpnJ(hDA1JV|4D?p=ks1+=jp@Z~Z9iG)eYt z5d&%d#P68q0zTMWj1bvB%7CQw^W&D<=AFRlza&1>OiiU2ffkTU@4@!YbHm>kW$Kx# z-PQah`qHT9P5DZ%tY>)2-^=KyFkX+7dZJspi}H4gGD_VR6IPkqSr-0U&lHC{w{fyu zv;iHpeJ?UHYkry8O+QAKuyz5?%Yb#6i^8`wjP={h)0@(gW4+8wq003bK?YV%iMQdT zAAxI9lfE&PU957KL!cAyuR+N8RcBEMQC=;12LUM6dVG82W9SO7t~2yxdX{RID{-9m z*Tpl~;XDj~zm~nf@&T>E^X6x^8tNa)sklPZgnCtA&VyL<0VfNw;c2o0QpP4o*Rva| z=jHL3PajIZAy#3(Vt6_@cTOpr7_Rev&{Ak^R|;Jrcu|)wt(x`agHCpBC=PEd1h%}3 z^q3j@Fuv04-Vvt-;{Ov>%og_h)e+LA~TJqNVqzcUEe z3IxJmqJhJ8&CHH#NkpAFkdUvUfrBYKv*4-btH5*65YpUKB_-@pq6&z0|6R@Z?6%I- zbh6mZ7j|SZ}=h1+j%#gz76AUt2VvlS){K*jwIVIz%}N8X7rjMFZ!+G zn^#qcIi)_8eNa)XNfScfbCMfnPo#R$-ZU{hJ40AK{faib^G-L z`P$Po28G*qB@FVyEUGD|bz9WMP~av;0p(Ec!yg&DE;fqnlqd-N6^6@qCnF^;r2TpQY8rE)nDbmdoL82z8VDvJBR{2kqR^|vk*`@h?U>MO0*Lh zkA&U_O5zw@fzi8UThtR{#JbPP`I&*dKWO(f$D8Et@kDK$rzHPT$Ujo{D~AwhQ+e*b z83<@+2 z(|_?2e}1_zd5aql&d13`~GnE5R4QsDL6t1F+zf5rf&6>x!Y( zn%*to+?!pc>2cjL-LGCA(67<2$`A9Y4*Ip^33ghYa+`mWmI_Zl6aGkUmtke_fOf4kvnRUO3)A{;2i2aOrdA+jE<&b9IV?xXz@dk~Xm%tSf0S!*{ z&M9m7x(E_xW^tVRZazHV+-tX>d4<1wsf`Sk>sy?K!F$gs16S}Tg8L}WFZ_5Tzs!^L z#ddJp8us`^nc(aHzoa*OW{1y>i_{=;6f0~79pqT^2%g8+rA?1^8N)T+8%D8+}c~@HIx_6de z@6={8H^`;>KvqZQC97z--aFQR*^fz^ zRdt#8I-P}|rmnZU77s+)HW_(cC$9_czUyaTZ&||$W!CCl79GbHukywi<6a#CQ2jkH zZABv!>*HTekBh0tL!^XMC~E%=vgWqln-D&>Lk$VWmx^hZrDo4@;Bb4XkQ#93 z_!P4>1@FZ8pn6QKtd>tSAs?9jH`aeDudffzP%6Y9(F7EAbaRy3(oal55(0wD^gmjm z!FZ!6&-5j$>g{t1SVbLq);2h3h$6ieN?P7?f=Mx z6*J=xc?mzMc_fgo%c6|DkglpCio7~`mlM8OYF}5~MjjMD`)Yo*qH}XawqE^xdMrP! zM^9qTDK@QcathfaC8BolwlW%#bEm|Oc5$Ar`s6Wq$|tg@qR~oeq5*CJ$ESzj$A*ej zOPTQbOWi%)WHKm*Clkt6QDZ_G$R}wo5^9gAnW-TSb8|D+`cKt}IOBTN;Z7X!f9s8= zbv;XMo<`_tsEWDyy?ttypD`vY4*dx%(@b^WhY@xp?7QcoPZ zP#hf6}7c?LT=TzdvosX4M!G-zbbj6F8&I! zD7rxQo&PqXIqFU%nu3}`1Y%SbB5^e1`$ju4y?Squ$qPP- zT=W(G==%H))JXSt!{p|Uy4kM35MzN20-1;MDP-SGNQvyLkx}JwkiieHzP|eipS@u% zR;JZ}ETG;ZFM5$G-|mzCZ!x*pyhSm3(ve5wT)dL+aGp3rQf<@dM|*`u)E46p5pq&Z^2B%-fQsf6?J_*gdtUZv%O_-qqDn#H#v=QqzYK(g#s213UzXE zuYGf7{Uq%I&9k2@-ec#|PLHhw;>;n}RAgt42wiRZzIm&l*5gWVro$s+O9&>=>6M`| zIylfQ&zafXVN_hv3CnM};W~z`(Ilo+?Y-mQ3845eRViOC(1A-TR-=~~vQokvLV?zx zge&lV?no&lqUpAzG*&sOSbp+4_VhZLlS~eO@mNS*P_RuS0h6lLVPl-ji_>FibZ*9n zKR14wIur#dDqih+SucJTb{X78P$932%U_l<#lfepcJ8(ao@+q7^3B#3E5YKI@50f) zv6<4+-YUV?X7M4^r=2fcDL?DT&n-`z;JP<}P;kmUpoi`)+>q?vf*&&!KzL}bD5&mz)~ovAfh3WN-e@da4FjTM3@))9T_LU@zWDNi`k#U()9C(Rl1T#vqhjw zTEOEF=_A3QAn}V6NXbjQp$Rs4Ql+7DEK^(6_*OJIN~cpz1ZG1=8pLVAyPRK>=GbpM z-ctq?$&0~|XSB2n-RKoMcG&=vfdG=LmXRk8LOP=y~-cD!1vH zh1alZotcGSjW!Tyjy_SOgxiu2g|>CA*K2D`_$wv_N>q(bthM`zOO5Uo^B#2p0nanD zoXMYuR_s+T{(PFya_5)%RW&HbiJsCx-6P*UTWyV(T$c!l^n)&UvHa*MCgIr-Y3Y%D z?a0>zgAbnS=PAU=F-aF}0jkR9vr=nO!-GyOfL;PG$7nW?&25hx?`h4dC(uiVkMjHw zjvT+xlDa{0z6mu?P>w@Zr6^vQEiZNOD-gJ~C`aq@g};TrjK*GL-kYy54I_Wf_Mv8z z-i51=(&k*VU8gxLiXseXYmF4DKibw3pu(}YGX@jshkf*So_qGR@#=+L!Gi7k^<`*X z;(aQWL%bJL9@F_4$8%fE{iFkoiFW0+FY_AzD}8jUlQXy%rHFaGblrAQ!`(SwT_UD7IFi*)wg_t0>a>WtOAm6)9eA%!ClhmD!|ZoW{YJ8g`<#DB-lK=OhZ&8;n7rxf-WJ zF=p89zSVZ?u9dr`r(2!|WBXdzZW`0(XZd4Gr2Qx5%PTDOtfR96g;tm-?dgU(;sxTkS>A$2$Z$=D0}V15o`Ah116H zB^%FO3&@~Cif5i+Kxrm+pmM22)P#Nqr&bm4E`h#G0r{F_r#-)f>1r7?dceqY;F69smY66tI zozO!gc6nUWeG0UjS0!klHJ)sCPItdFkL#yywl?Hba2OMAc4ToMB^4E&7AS#EHkktg zhW=0;P%1IxE_nAQy``)?pc#-MEUH63p-T*mFnd^j$_boXW1rKJ5S?~IQS!KGL?hsV zt0XwG?Xq`-fP*g?jdU#r8DjCP89h+>)YW;`$BTM&eOaY07TEor=YU%fU4Dx6UkB0e zemgYJGj5;I%U_!cR<19V_<7cr8{zDhKZ-B!r`&}0hp$G5QO4{;T&JgJHQWljEUjOv zsr*N3CziKbuTi5&SKG^YSU4OvpVWvqYrGs&v5imb9Wf`@TP$kTPpT_5J2843o{5|z zh)CDlPOp&^78qbLGcEiKv zoXwAAzjyA`N<)*3D*Rr<)N+{=@z)!@oTUXdS^N)8jcgCvqe7>9KNNSu@CHjq2}uXN zX5Z9ka71x^Hr#ZN5rA7>*Xzq$DI(100knOczvEWTFZgVOZ>|hfBT*{+)ibJq@YGRq*7OlK-m{yGL#OaQW2ls z4&mbnC!U-O6o29C_H=Y^+`73ryRcWHHn&e#n^H-j&`g4jxpR{@`l7$8?&`SAM%>67 z`*#4qP3*{O#X(Qd-B-vBl@^Zus_nB+B{239+~@wti_D|2Dmggw!Y-!-;H5$Ox{Ta4 z7OQUCOyQf-kDb^V)@UXZfiB6VXIf)^{xvVfso@F0nEF_vhCFT!lw*cec!LopPDgah^s;@ZJ^~*UraM1M^%={uPTaBb7Ny719~Wyo!`Eb5>rJ_aBD+ zxh*G;P}|1nmXFD^-RPNVlPE|ChGMRH>5>~#)!B_6vw&hvI)~2{CqwNkPR4_Wx-SRs zxo`g`FJX~IpxIf2qMO6>=eHG|y}@mu)q?8tq{6!59>~jzz1@wy-81#CuP>{QkBpX{ z)1o>=S7zi<)M!Bg`mN=%)hE6Vofyv}fn-Uunly#2fJSdFff&9MIvw3pJiX_Y7%jVO z>>U=f6jS!;)RBU>H_WklR51xh!$5kq6}zqpUyx$gZo8|@m#dO`sF%x3`V`YM2!h4E zSKovra=GusVG>ZhIYrZ015M=%MH-Hw**k?+**7ZKSk{^~3bczQ?vm5G0yG?d%Etns zm6R_4qQ5Op=@q>M%4FhNG{vHaOwY_NT03RswXr~7>d zHxd+4SCG!fR+EYB%-kh87Z_^j(K(&}6$8 zjnANjR4V7GFcUgbukmWq=sJ)bYJ{Z|VfrOUMAAs(DaCj`JMBQUD`lXGRQeSm#TTMZ z(||j|;lpK0BX+C>oSfjuTs8_B?XL2#xf~OI#yP98m(I-f0d*Mq6WuRvmYjr}gCFw} zzBVI2-h1dRelmyp;7MqaydX}r$$MI&NT-_GRj5~^YI#aDf!yP%X$L8`&V_f6=}3&~ z*tW=MO4^8edz0ad+PwHlHq&FZz}m1HSjwiBdwm^?CmB)zs|;aj$~m;E5Z2-Txq4!= z<*tPPz18G!k)*}mO{@2>DcNFi(H?uj;u5I4`Qgr_BGDg07Ify!nbSiWe>DY}4R~Wb z7Lg-CHG!B;cEtbT81+EsHMFk+s&dH0$6+|K+pND2t;nz+!Ip}Qi&1LwHp9gdX?~=C zfRY1T@4ww?@oN!O4(_P7X(B^sBklQy!Grx_v<8F2=3gMnlK89|0tX3p0FPJDPRt7d z^VI#}rqpFn#$>xl<=6EBHu280*7cIjbSy}rg^cI_Dcq1!tm0YS=;1je2cFrzf*+zHpObTSfXaSAoOiF#6 zwGb09c(M8l?5<${{RnL3OZtnhgjJ~~Kr4I13&(E)chg)zm#APpa*8IvU(ardZ?P!O zRf8a3%?3HA@$m7t5%xA5*Vl(~Hkxb-#e-Z5#hp+h_JV!fWGmNB3OdPInNPF_pN-7l zU+-GGuO6H{Jb;uJKmzPTuxA?&3kHT(78b17J+%R_0(WBk6ELsb-s8+2Js(yo@t|!f zxzBH=A3{HMoJ09Ip0U~9Hi)0)RO*k*7@wcJ6uk3s+S48WKi>(~p$_?-Z6E0%rksuE zG<+TwywxXB$qtUsN2_>HV~yxsT14-KU#?<5F08>O9|Q`>vwYOAA!ZQ$?RO8e-8BLO zJ;M_1q3FX6UwBlB9esk73eJ*idH;>9d*vRznLz}VBHV?3(Ut~lN!8sHkj_1?mdyJ; zkY6R~f%BmpN^la8rvimW>;D1f%yq$MF{XY##UvJekOl)&D_OoEB!aC zGDyPT{?!bD1^@XZr!MTu2q^$ISj-$lg%we`wR+;v20j%;56Z&M*f85!z7!2b5BeuMCqQ2kpaj#Pb`^y2{q=O`guK%Fa%! zx63b<{Z%C-&2mDJrpx*RRH)HWq-}Aq!~x-3K+?UwAM%|ejDmrCAL zl84XdE&^s;oSye!|6NPhtM0wdCus@5@y)TXL^Z*ZJc>4eLv`7?9~rM~V+d%;ZSA6#G1Xe@fQx!`j$n~vRrAcN1gl!K5mV3S(=;yqG7==x z6-zIoZv^MY0JFnO2F#h8h8lx; z$}1Hc^k)cMK0NQkjhIV$zOR4A`7TbCSk{ZsAmpd-^vBrN`RHSNro=Q{CmdR~V!+^D z*uc3V*Vr4vckIXe>mwrSgVG4QfZR9Zv)B`(iwZMAty;}YV8OccO~?uJ;O}GUQq2cmY(q!kbPQqNwjnv3a;YjbM;t z?1RVQG~dB6Oros>aW?`4|FS&ZTuZTSLi3MZ-f%q-oE3XnzBTcBh@3!_lmZ_(-A%K* zYJ$QG+i=hGrE==ivni+NXgXtrUHh>kBvPJ2_Sdg`D$jkSFsF8g?-OylQR;nfS@5c7 zw_ik~K6#^xCrBd0Js!qCx3}L`<_v)q7hYbgc~U{=ezwD{h!6$^kt+gx)?xV}(C;=J z{6BJagd&ex3L2FT>Uy=|0SP{<3+JoXxb^g*=Sv*$Hu*@&lh@xvNQwMl)#41KyP9NW z-5nxZb7%(Ah7fS^wOCM9b!DLEfd8|*Q<@B*q?6;Cs96w@l6`)bI zPIidXKO?vXd8S__!gDF}l8q=XfxWSAWGFcfpLdIiyV#1ozi9Ih0=kaiURk_mZq#l? z{38+GhF%Jn)+!}}%n9*tB1ge$r7Uh-xL_Y&AvDX0v?8A~Zeqbm8(X?+{3dmkdo-<$Fz<)Y8>4A;Coa#El}f z8@nky+*HK>B82OAHXZ{VQ_Ec6sQa` zxvg=3l8<6Lk!gUn-Htdd>|<925>YTGqksk18oNl_1Ori({ym;x5b@@GFVO|p{__dT zhat$yb#JI=l?OG%(l^$6jy2f{!BWkRpO1~1Cye&$p8;|ufbd^Z(h zmqN5P4BW=FzlMJThV~!5qTL3m{$niHJ?4mC%&|tR1=z7vhf91uYUJC;s9Po3UY3?qc|ZwWb_7=fEvNE@N=T#SwKZ`SnM-(o>@6Dz;9daj4`t;^jH2+wL3K zZD_SZXEObz?uyb7NFj`ey0IPta=E#^!Hr05QFwWqv1M3UY6aAzm}xi_{LC4S5Cm9* z!*{Q?5v3t3aaBDovgoul<~ZVm)CVd@#yC6GLf|8Yx6>a2Z}uAs?`Z7k4@3+tef4-s zvhZ`#z#q}+$o|34B7N$iw1oHn9B!K!8h2jylXF zGlH@iOX_+g6}VMHMR^KpT*345Ow((VpCIvv!klQy9H26gU#D5xL~P;j_7K8oGgkDd zB)Tu@o;24FR%FN?kLa($GL#1d>)5)62)sCFSyRRaq;O2+S(=UTQdxtr-boKsVR4-q zn*jHOYm8n1^cm45P4=hrNV~kmk|s~j9;++kOE5G#I>O0PUBe^eTe9YW{**|L8Z0?UVkQa7)=Bk8}?|eQ7+=NX3Az&emytT=|8W*O+r%w&6Q7 z%)MQ2ymdJtFEDG5zo=R7{q&f?+PPX=9M)K^)9W?;v}lz&8!9a$0P0D)!`S6!Zho`u z6-J!Bcf#4&U^<#9X(B_4odz$MsGWQ8b?9cyZp7tz4b!o+S5;ctT|Y?QOs8l-7ywoh z83KtN5)51LoC*%J^g-43cMMWFRgRZ1b@r-f5mYW{ON*HY-1M*_Xx;$}0 zK2s;pf$Ufn-|I2i(#!cJqGdaSd8r{+G8mp(nEl1gxt#)ymgM`W^wHbCFHET{9U4?P z^&JgI)~MN5N=>)DRIE&!ciSaBFsw_>zMe#aiYV)iG13I@?SvU^Nv~w4>5mFy zvY##ZXs~LO8f&=W2Z#M=j3wY8gd;AkT84`OGCw(ysOOjF-uAZBkUeFo#pXWe5P;s* z5$zGkM-$og`>)&19cI!n)7zTuhY~LHWb7or$4MWQyw6)?Wo{pzu|45`QQnW$s}~P` zpq^0xCjb972cf_fn)v}A2M(2!Do3{2{mR9OL{!12A)BZ7^Vz6>Ma7gmO zdkqzvC#$4c)trWGc3YoAe0>yF%caJ%RLBU@gCrjzMo*h?NKQ% zho|&aha6aHt6dWLohvt%be2Y?o(fL;C+*=C>^8VVINC@80Z|`f#*`?h@Dwyr+7KL* za0V)H^?3gWWI&t08>k2313jIItdC<^%yOJeSkBKwLB8%aby#ybL+f}~Ppi5*Q(fDV z1VHw^%e#|HE4^KVg$}>ZpN^!c=WQ28h~<-=hSx&`k0%i=bk=;ToDju`u7-k1&7w{- zg!TB-YA7Uykn9u0tRY%q9&4tMh)HPoswLwsk2n-zd0()!q@$3jg*l*9NRWKPN8fX? zsd;*Rf)|If;pYNI&>FrC(JexLhSKR*Qi4l*W>r%Xu%w&gh zK1~h^EKZFrU9+LQZ)Zw06)YCtbX8j?^eUbunzJt_e)?%GfdzA4R$q)^CQ&L4mr98< zZ}`&6R0XbMJ(E3f*~i_-_IWkmA%9CE&K`{jlLblm)G4jP!kMG5PochKsGc7q&0^Ep zB1t{7+Uf|yp=Zw8&8A6OKyQk7bq#iP#X(fn6a_ta+M~x~ztiKzJ{f&Y=D7i&={|Yh z>?5i;MhS2EZ-`eS1h?qJ{6E})zuvo%)*bBHPU~vQ_A{PPKX7T@GU4TU;38SscTAKK zuqE^NxOepS=iK%7EICfP=w2(%IS8eK$B^R?H-_o?2Eg56o}PuGBK)eVJ^hT9kE^8g zNw4gQ8Nb>mrgAA^|1XW0NAlj&$*Recc;J9Uf?59yANJ;RA>8$}ZU(fcJ4h&(^WOP_ zkqIsMgM1g>+j4w9Qw(D`hx!TJ_FA_cs^f^ z!LxlmItod#PAFpENsD%%8(){O@a|{H!=&V#1DK&6gVbu=lG=wqRssK>k&s1I@{qk( zEyh%|&AvyCc6f{ED*NVk(pE@{71bg_SED142640%ZKruf`_|VbFzDn-5XvR|3!qjE z>aF%UPTkItevYragY~IevyqihHc)Q>eXn3LmdRW(z5JR~KGr?kB@X8ceOnsGj{uP1 zBaioOt+TDI=x0lZ2WM7}DW%yiJ!JLP#~}SU!nS>!6~}fr2X>FP^};X+eI90t8PmdtfA;4FHSWZ_rY4 zdxN#(C+41n<{WY5`u{t}h_{OZhn8Nb?;ep7IF;p|`CLJGPh)h|_~f0FbiDn)!T|4#lra1s+l95=_8-sAt;KlbK{01_6Ik7xHS+aqO9QLTV^H? zO-=U?-g0$@qbL4^FS}zC`egE)`qZH)=6pU9*xjmc39~*{BIeesr>QFLz=(0#!H$CsDx19Jsg*8`Ahn(vdL_tKn0dv^5?p5nz1;D249e|cB2Nu|-Qq$q={Ii6J6(~fD; zUvq4WZoVP#9k}t*i^nD>$1c7Uu?sOA@Q1^G8q6=o-T)ZM3$%iL;>5w7U*9!-;WyAd~IP@sjEPvz^JB%1lwNSRlZ_!G-zcL@ zmTRBQ43bRyu;zN&TG*6*+R^rU-@=La)rFJhvZ!Gd1LV;Y_u*cj$FEruh%h&LB#!e% zSWMWECaTg6h)6+Qmwh&y@&#h_G)<&NG+x5o=bUpR&S!=BKM9J*D#()K<8PQLs{{Sc zXZXUQj6%?us;FAb3X3c&_QYk`?;k@%$%G<6&%broop|%;kcm0PpHXAAZ4yR)P15Z> zeo50gVOuSsrgbk1QgR`R(buEiU?K!UJhD5EWRCsk;>Bfs-AUE6Ep)35wr;LBKp>o?;v;oB{3G=~ z#3*Y2%K3GR{!$PqLr17=99%fY>7Y@zI!&Vx><(Xl@Pg5?vC#_-wrTG-$uOBtw!KaL&tER6i|bafP1Mia_c9KE7U%QR*t-#a-IyJ9P?J$LZHiw7>+KpWh8 z#btk7?T7NY8q>yGeoh0V`es$s@(7Ln$o5`(x)F-V-BU zg(ay&Q>W;~<8Vs@<)ylt_8EbN64KkEroQ00(sGR7sNUY7kv6h=+TF!Lj=h%)X~nLA ziDge8qlSlLzg{*{DCdP+t3QW**Tu>M8`LbbQDVAxP9D+ z820g4s54t!G6!)aAS`M1sW;n?BH^m3nqNlD!r5>?!aQ($2GBNY&CWKmdL3p57KjC5 zqu$7JMVe&QTLMjV@}D@rQh{r3wlez!+SM~#sr2`t%Ip^^UqHw9*?+wHYNX_U^PBu5 zkJx{F_Sql*7%9K`js3^`;`p!({yIqR8D|IKDK9hXEJ`7H;XoMPY=e^Q%@MoDF%$u1H!567*C)rWQ-L@dKoD*P! z?cJ9d!BKU%@Rj9G#Y@!uc}Br(>$Oc~|DW2vJV277%DW;W@2t$qqcXFOuBxuPyQ{ma ztE#JNdZy2rVGdxJ8RkBjVVD~ba9o99E;-z97X(F7L1hFK6!BtLL}VRMWZe}NmSaU% z#gC8AgIz^MT*B%Xprmv33yRhI-AT zGf9}Er)Ou}!-Yj%`Dir1p87plAJO&7{P~gfQp}XrbuB^*6;oUv^-f0Di!nIJ@7S?4 z7R#@bNPvkb0((&A)R@dM2ZMNm81fN%`y;A}+=sCp(=gom1lHqW?8McFXJ4N>J@=i7 zIFt%%8_Cr(;jn7L`_f(Pi7H#nRhX^LA(6uV;(AjChjGr~PYI8n*-?tl5f&5MiM? z?e37N*+DpDcr*4Y%Sb|y7b$pv6f~wsJYWeiXpr~s_}7m-@%R9)k;kSl297ESBj;my zHzI;;MzWG3>xw4Ih$@Cfva%XCW5?+tE9BK$O$t)M3&RXc^9eV9?-rP^zk~43Iz=Xs zJfkiATI;oIfyTNjko7EcJKf6R+g)nh({68ilbi>*VfqQ${i)b&_c9Mn2ysJO3e{}3 z`koEfQhUzHspx%X*iaX5T$ITd3-_g~Cm0 zUtPU+!+WBWQ&q!&?B#MfJh@>}X3M_Knfvmr+qzy7@7}!RxO{89$ogn2fypxV%wH~-m>le%g93= z*BBFP-f`)r2i8t3Xx+~XM#u_M2;qwl{{5NX#cm{ zkMaOAv|tv#hk1d;ry&8-AnTvV&pMAzMzd`CWFlu)ocwfpl77SF1cZ;%SnGs$9GG=} z`gh(alaVfAO!3qc?jlrRBx( z$%_Bw^Q{^_d3o}biofA*`e^5=sP6P@|I_=LUC;cRoOj;J`99Q0r&DF$rgt5n&B z23@x@A|c`(FsX>|LeIOY*&80$4COP5ah;*u6Ev^%b138y8XC&{qCZT;T$!^05NzW$bKijLOT52JRjI(p)**PHgwSIBWP-=obl9AAW*QC-U!DWDa0 zSRdTRcZ1Soy(NjZE-Ar<1@?dQ!XNF0#nO^eY0289CFK6u8cBIarSyo62reyM>m8wL zI(f({J6EQ%eM{Fa?dw}w62+@5$GaZ2-!04SGWt&PRx9um0WqLZi6>A9z7sGW6_Epk z1VM)&619bDPV@FQ(3lX-!&0_$Kl zeK50JJss#4cXUmLM{GPVVHTbB4#AUELQhSadepJD4gq&S?}==nh)c zGqlXE_>QT0J-HRt*#%TrK*lwj2REsc74vw9XL zA-a+X^8t+7gkslt05#;B`Ip=e{W6EXxakKQ??7qyC+LRI!OtDp5`Ej%_hkusVbLNt zmAyWjy&e~{?#)ZPCXa8v!n|o)8>90nm~RGYtCw*I$*7F7A#@V{yBVj3H7V+#3!5q8 zsjocn>AeaUKaa&owL<}={q23;8*ebsP7?GABVY$&z#(Nk?Vte4 z7xUD>tX@mttcUQNg^fCz$-_1V^Ck;>m^&?0L7%?X9mUVPwFlrg_?54G1w9Ty>!24w z>+d>JX?+TBbPpXnRyuYJtv?38&-&Z5u=D!npUF4y?_plu-|>!AMvZ25UfXepPrp;I zyv|@p%Vh@Nuh91I))sJe)L@*Bb_(Ywqh++ExKs(I<}n528_H;RU#7Bh&it-szO=fO z?a71$F&`O=^*UiGecoua+bm}EsFPVZnbBg#;fv3>Nbky7{aqQo%g!&YaHFw4-BRqF zUC!%?aAad78;Z$dEIQ|J!zN6p)SnDlkw7f3A+l^v!Zx(1L?$dC&6C50zJw_R?Vj#h ztt1eEktN1qc_qlRl3qv{XB4QaCFLqLnd!BQz14|A4pQs!*tL6N1v{JFy=&|F*Gt__ za&#za_a|SJgL-BLbJ1VZpq$@q$^LAKzj<<&J2~@_T6^ISCYQ1=9zW@43(S6L#P+em5WS+SX_K;0j(FHK_kjXsgSK0JEzeusn|nX8@0UUSNlZ&qDP>n)G!SE4-&F=fL=e zsCg}Qg6LfXBElC4aMWgsGS!~E!0Rp))WxY3d2juV`T%M=Z4se^s63e#)^s}FzWr=T z)I_oH+;IB*v}L8!RFM6Fo4Rj8^RG!?Ghgo;?9)Gx{y=zcuXR)UCR@|&A!l@IUO5tp z^rcIgjNVu7)BDmDJzgj_;#wtrZbgk3)ylc8LxTu!PH%Q!`CR^sT4}JPWir3(`gOQx zZWtd4htoUK;d$ZtX(~d0;)e8l-2>O9uiHV_H*ZPbVxgXSVc6TFV>Y_ciA2it=Ff9V zaKCL?%`mi5x~j(;=frimT~#e~snu2P_Hy}!P3cYUPkz(&dzvP*J@ci)=fWdB$ZXs7 zewduVcehc&yMg+xQq4;CG&&{^T!81Y>vf2jGZB_D3*>{-&lr)2LHZzUeGqSG-Sxy> zchQ4vGs`Dhe1KQYwrvGn7lg5c@@;dy75FuQcLm-DGrmXdHT^H% zs(W-`wrv$hX~_mPp{wV!dJWC;kJ6;?(ah@2YE5_S8Lhfz$7coGhHa)_h$qYSb@xMP zwt;p>gWpGosdf-+$uA?uB+5iuZ+Egl@}amnmWkl&W2!!>$EH6xIfe9O95~=~+jh4zPl|+-`g}PgunG=w;!rGE6C_DMnizCn&W8&Eql73h zd_*ngtuC#tM@aQM4tw*|Fz{#-|D&zr>AlgZ7n^mSt(jTJa(Js*$9T_4K-uq|jP5>i z(cbaN$??4xwK@^E|FIA%}Yl@7+YFr%s;lpSS6~h2H7%gqLgI*yQBc zJ}>(OdT`IcigN~bJ%J7`95`piz@EO2Y?Ayd%)1)UQI)`a=xy7nX5=7(;jjY3t7TIQ zzvd7fMcdjCWi)fS;yo5kFiaEhGkjf72YNC=H zA0HR{=JiQ0_n+BsT^D~6yhvo2%-n@@)A}?<=|%6l{#}bQk92o;KY~(Y zdk*dyO=c3cxzWF~KaNmzZY^=^WtW*&dT=mpnco>aXLIrCZ1zcvi<{0F{7>}oBf6w& z`T4!M@g*tuHegK_ExB?D{4X9u%bQKjy$?4I?VFg`cc{_vNB%WZ4#Z(poae32Qybpp zfmOisZSuI0tTnU!1yP9QEsgmbHKPOywAtR?EKWXoSLQ_K2kE;-MG?s|2!V;3z7I1D zzB~N`xO5jGt=zF=)5nhe?AS3k^ZFS6!-)4&#MZc^C=z}|R9Zby3c-&MGRON7a&#;G zt(+CM^#_mRr#+t$0kiENVjG$4Z$>HyygPURwP$JN+~er`PbPM zxD(p~lh(In4&py)=<$d&pC; zsG`GD`&5VKBwt*A;7t8J#wN_XB9)+a(RGC#}Cd4P}Ay$>p8^u_aPxUGH2oK!( zCyp^Cz0{~1=!bX83Gpy`HhH;(<(M{OMF= ze(b{^M!#?#)B55>Q&=RbtloeD@Grz5;Xmgez5e$cV>O2Jl5V*_zCpzDd)>W}8|5wu zy<(8mP!2X@X*`D>EB)6>v}rku824*%<3RhHeT4j9G7i*I#?vud8Mwr=Uu?tFHBRCR z^S0Hfvoi|;oyg460GVaY(?;z$Y3XBn_7%uuWM+WqQPo#q){IaIOa1+Ax??(V^K`p5nbz0*mj>EWf@w>C#=1Iy1`H6|p*(bY?r57r?6`NxZU z8je~ls7`Y?jIxR0q2X(9y0%ssPT1&`4HV^fv=PMRLVkSmtf7HY|GDSyN>YXIQ~r@d zp@286Su!=yt1Or0=`{%TkSFAiAiUsRs17&NqOba(8@Bpp9VuK-6*<0 zJ1>u0lQ=&QpO+iUxl16xkF>_|BkpZhD%F=tk)x2fwaw3okHfx{9?51$($hc6QS*x2 zKndqt@l;RK~@z9&11w!-@UNj>XHn8y(nS5ssGiUXBK zbJ2C~0dEuBKcXVnT+-y+XNc|AijAUPvEA?374%T6AMwRu0bM5y7ZH#CF}W$ZDTODy z`}@16Un1c}Mn0O&Mw>#cT#mIi;Aidd!oI$RVY{uP@*L3jy=_0S0otasyth#fnD@M3 z%pO9E)SmpEJzcF^62+b_^o%Or&%Yok?rt+4H}M=Ze%oz$-9YP=L{CowKit*BO84{U zsN&;svvr{nj~nR6KfG7!tEe2#TaWZ%w>k7VNhVq3@azpDJ5hJ9F$CKZM?`48FO4*;2B|3>5?l!wHGru$SSKtTAm~40_i9- zh^un^5F>Iz-gIKNCh#PPf>Rui83Bicu7s`iOENACLa!w&Vq#fPSqem>Yz#1LnUR>u zNHh-9Z4mLyA|iyaCZzZXd$u4BaqN(QS&`+X;Oe0J?vwCY4bLn0#(Kr5uwxl&Npps9#L9BnEK&xU#U2}G2n zDLE0&FftaYNh2d!W4xxPj7dzNiNTm16p1_()PnX1VO2IN;}Eel#PCSPniQ9!{9*~3 zg5jd7CW*Wv8;fL?SH@I_ks((%hoBjPa}&{o#i}?sU&aa>iASU3oWPa|B7?dtv!-?q z;aO&_Xh97zsRNPB2@B*{(3S-mUTW}DjZGKPR=8+W!@X(Xtc~rq=&WaaiF}Jp1iD~+ zT0)Utyp^N2tE|%jJ+g0z`qx(KJdK9VR`4B1tfYN}x_>)jCoL~>=fQou#>U6TcJ2Ga zzTKna;>0cQdh*$wL>FY zdr}(?oL`p3;jOw9Kc{zo;nLe~^Rjv4^B>4RkZu^Cliv7DO`Iq_YtGQK`C8j=T-|qBREKFL z%#oYY1McywKU!>}$wBP=XFVTbly9a-$d(WI=>yv|1Q-kP* z!6SQm67T#kySvrfn?MWPhZ4QCDbI#FJV2fxYXd2meTM^Q06nuQurF{~;EKRifxioU zB=CvAy@7uSJQ#Q+@Uy^w23|!1kbPMga_eXmEkMiBI@?P=)d5AnhenkF*dM)z=w+-qa%H|6^&_cY!b49*wHb|wt%_8T(qc@sWh(UY; zc@o`X6DX(#z1RdYw%Dj=AsNIyQkNRg^BIaF4=Fqo$fD!Lcu(=y6L2+})N(6D$LuVZ zA`~y72m^hAp7zc{VtSe0q(C9)_*#P^)q7WHb|@`h;~b01pDkeQvxRKE(achmRvNLJ z4d6m;YBHOta~3?!a1-_rqX@4+J~sJm-G)=VQ_S#IisC93;d&NkX?R$89zJ6=sTmo} zTt%zVtW7{gdB=heo69yWsu){uau)AH6+oLo6i)E;QV6CVn6h9lg3C~p1x@LA`I}aw zR?ilo9NL~);v=B9F{mL`lQv_`d&pwLbGGBu8%3{etv2{Km7q82qL5wlceI%cMf#E) z3LwEj`_WT%u1v|JW}}RG`sV5$?lo2EZC0U#0yI0K?Ltv*i{3qW`YxMLL>B4?-X=a3QbTbZuG>XDg_mMKM;h>>@53WJnj0&T#U0g28ghU`=Ip ziA5L{U_(fkk%?p`i$xiQ2<|0_p~>MYgK!^@Nr}fuMBzcgBhp0kb98bH8zqk9Sj_aJ z7+f`w5D7AI*+Pg90~LU~k(%RS$FOjK_-;;xLM(#9)KN66>y;df3M3CRbug8Lx@0li z#TE&ZW+F%+m<2wRK_M)g;UU~FP#ifV&QTe(KBSuRjllLBNXpB)QeqajppvLNzFK|g!#TEVAHZ@pE zIhMzg+CX6>fwl-S6z-wONIVi?W4`93sAZFFd#Nm%3P=%+V(T*}Q=#iH!HQ^D?6;5^ zjho1`_cnq!$cqRCtvNW!Ar$EiM>ttRad;HQj73fKkA&Cc9O5x1EYIo;D-m7*f*JpY z;D{=qlxVh&=uX5SvcRi6$8y-{$!%O_vH~vvjme7y=}|cp!|q4X3Fw(GvI3TKYU?Vb zb>lC$j%x7O4Af7+yP<~X3xr{XP*4+cVZtI=#(e82G#u0wKh%m5oIC-UsiCWifOXRuF-S0g|2RC!9>6x4@TTW0{!*#)cqOLA=DAg@Yj^ zhOk`?hjFn6Obn|jjLF^#{0;R=2PC^}K|c`KAUp)4baNsPYyg{uH>5}kk7WhMUQQMw zibNgQvRzohNWOwmk&O6Iu}fc57qC={gtz4{7LZB=F2YGL3Nf)LykjdJfx(FdhSMO5 zR9`7@4l-~o6tXqyLKDG&!if~J2EG>-a{?WcVDQ42AGR$S)fNWf^B@ED%it3V2^eWa z3L{p>U&6qOh9XK%=b4@m5^jObzydCbB8nrT#L)JnC^JbLFAg#?(O|R*!l#SO7>nQu z3PbCQTTnOXQ&5`7208C?i5S)mI%nFwl@Ven@dJE|%?tA+E?d2xgc z1`&=y()B2kj-W1%Y)6bz##pgsBIyc&Dgyt-xvx-3D;mLu%vt5c5i4cEA;wlj7R*Q_ zrH4>FmUcur2r+2ONK%%v-GhV^69_RZ9u<!mgikP+Zhf<~JIGlXnRaL`UcghZAa z>@%iDCnonflmOPc54)E$1W9m)w^&|ve}Yj?<5<@H4&Ua*9wd*E1>X8uJ+S<*SwACG z@J|<)h6|kOi5F>%N*jRCvBEwmR}teYfNKKwY1h72_U@)g>bv(Iyr{GM^}`P6&c&)@ zgp-k?r3N|M2f$OI6%KONt!rCGi~y|>!;d` z%deX6=81g$xt%cd8%}qz-lG5q&s^}_o{c6>nH#UP+)VgD?l$wd`oNN)QCWxO)Ft*+k#HTMdN^{G4TsIP zp3i&m#*XbMg7;9N+G<<|sK;TbU6`+U4v&VL6}X1TSyDohW%r{}Qj(;KEW@FDD@2nL zx&SXfd7O~t1nkhxcKWu>>s9z{;Qaz(8;Qm<21K5T81$}l1xFX%k25N(aqfpj-GS-Y z{XE^H9kio=m|pMj`u_yn(uCK)`aF!Dx8A?fvrUFEn(>75`wle!75g@>AFkJj*Kd4k z)B0MyUR%FupL_S_<6k+xWeWtG$pppi|6Rv>iHGDr{Z&Z6>E9rIqfzrB!*z7c=Hr_; zAAf)bUY);9?kCN_k-&9<>jSsY{^3iyeQbOm(cbSU9SNVWjpGaWR8M@@0jNoI@bP_D zptdjC^L^#EWqTeK+Vu5)ym%S;-kN+A{NVySTdr0-)hX}?7pYN(!;H`egL_I!$s=;N ztQirQZXC5=bzmQs^+-}0k>RR@g+398k5D+ch#IQDE^{#TmNUCs$}7s{6$c6A{5Tvxj~T@}9{evf>Ytn$`p$31l6zsk!5@)b^e!!iot zfIL_C4&^J*{bw$m+S!#zbnTp4_`wD9cXq*V=llg{tzNpgw^Zs~y!6vc7xlq!(Ngrb zY~*A4j|)*<_(DHOn)f?xkV!?d_4cL z$Qc#%uI_U;uIw&!uV0_`^==;{-y$15OUibivpaUbZC^INu(|D3mdbI{!|gR5Ul2Tj z+aqDP?bfB>gCVv1DfOq};Nv2~KngIjzzU2-fc9iXjxbSp7sdFzIii_S9UkH70|*I@ znl`05bGwSFO-u|_vxs>ED?H4AKtn);?MqcNqh%u@iVVhXVI*32L@_cHQ&^doqNYyo zA~Re~l7q1*!w1Dsq;^I$dPXf05`#PwjRj??#<3#La-wh!P@`hEkyTg&h_8uyWlFMG zA!)FjCi1=x>6h6WSrj-w@K_+gmV@;P#+l%N)1Sa)IV3vS5K1x46vL;0SWiy?O~cHb zvqHL+B5<;-%+4ldLximmUQ`vs>arSSQhx@|hPZJU~= zsv?Jgtn=X5B}fCb3=-tDC`TOG3Q8JK+cdMFqKpE3!1VvpR2g!JkOLZ0=BTe-L+wt- zEhp+koUo$>MIc{@q?)9t26><*1SzD3os=^g-58N19=J@NR6kR6MdhOX%$S(aHK33)+QH8UJZPIAGn zZcPLZTGMoAIUzxoQFS@4nY~6&R1XCef#)PyC3W3$V(CS^lFAwqixRqFM%RfURS^Y- zgZ6P8Clc?qO%teDUJh#ESUTAqaZE!3hE-h?)U|#fI2kA^Y8x_(B8iw~ntE6ZDl!WU ztr(o4Z@xj!2qXi=z))a>&YVf?*ed2#+{Srt_zRhI{jLL6F#~JSiJ<8%cV4*!p@~aw zUgy-tmksUTEj5Z3uMbaQwCM6XQ9jow6dF1AwL-H1|8Ab{@?;@e^sYO$tpDgc&k+f{ zE>22gF&ykOMn1BB%bf?8xa0ABzLC!Z1zLm*@i>%GDERe$27e&czQ>R8dW z#(X_(;lLF@7QsZfYwzzn5uhtxa>M@Cx*7kR%s=I_7x{h0y*6`eCexN-zxFgaLDqQl z^>|=O;M~7v#x_0ppG+Im)^p+8DC9eBXr*UjP}dokH=W7+@=MO!(wsA=x#hf{Y}-sD zo44(Rmt^lbvd5xe>o|7sLkDA+bI*Sh)d zVfsf+#8Yj=V$&gCpT3G5n!baKO@9Lz(_F2V!?|j;;DLD9>9pN?(m|&E8~0TQ34(LC z^Y?ezcdf>UTestJ_hmmZ1hpH}Hg4x}ud-pbdIgEL`)by{$NmuH@W-?h9##qURZKm7 zW;`$=AJ)}Vw>fpOB-4Q%s#V9a=iJ)T;h@qs?*(F>j85En-<^jS=Cgdv;`mf|y|!-S z6C2l2QfuADJr{14qY5Vv|IPRYNVL#>y9Tw>eyTZ+_JD)GHo0KIkvld{9csv|8kNiY z=j_?IZWw-0#D?{?;U>@9QLa0^@W>tia7W$I+@FTbNVoGl%?Y&iKQF^S_N+5ff$Xd| zG3PWdBLu2y&R#sWYM#~%d>Z^|dlv6=-%hQ3@FK-PiLX4&F|Dss1YUH-Gp$y$xr?qo z>^g0ap2t5nl$Hk%jDGaV))C-3S$vq~9xgU}V;3}g<2#!@v3+g7kG}(2ci6K^7c3PaZ|YeO@>J+ZOn6ikY*9O3nxw!z}mwPbJ>ALu5;J1-jWa(uF4^Rh1qWO%`jd ztC+P_?raXnEM%kGMMmLOe~kGCd5BB}ENEM=UEdIuG^@Yi0vxsPuX_qiR@Or9<(=>E zw=>`KfgRiD%$ql7`;MP?A_t7zGta<(N2{_k0_>bOM)uC7DKFSIGI#FCwhL&Mxvh(y zrRkrY!QsL8QtcxIjmc9Jof8ACpSph?+VzOz+ zt%RcSFvEtfdIc4PXW`V%l&nqK=ZT= zIbX|g7TO5)OH=h08$7l6YiiXs>z}0lKMT2QRvp-}YGrw-QW^U6Zi#zv-QO2_=8kN? z;O7@?ADN4gJ~;G_ZAO=t@7>;8(9mtW)~~4!4@34{>zAFiKV0kO>$O#D&fmLf!#mWe z<*~n6xq8c`=bzV{JGXh>`G4-V?7mbmq8o-D3;24)@G$-O58k*M3d92ie>NUKEFw)u zMwZu|tY($s$iWQK9Bw$iHWD3G{RIH7gsi$Ra3~?t?>^-|h5BE8^^bqNP8;06u_qi} z2^2vzn~~)Oa%jmE+&)?^L=;i4eB|DH@#fZ#Zny#cuJx_MheIJfGFWq*iqmDOp>?59 zzwIc;t~aXsoHHcdlD%*FcliGhh0ci7UriCAt`T&Dd+7*TfuEe`zTJKMJaq19>7ZXW z5q@FBy%gOr;(lRPI{K}BhP(*#YA&!Ua30n9|I5gW@V@fY9&H?ZdK%-t8?>^gz~iBu zs<^G@k%ST&RGqR>YkJ;;sBg0dEshGvIUfI4#CrHdq|tA&`P0X}YHR+`gzl$|&gWbi4UXnC8cdrCj1>Kgu%emhJ zq7(=@R)VmXqbi)Y%*C?I;4#9lmiO!ll4K?J{2gYsnr70EMG}d~V-TrU%{!itRYLj~ zn76SgXiC2h!QH6wZ5Aufh_Wm`<3&vqZWj8rWCjuYHU@3tWeFo7`Ju&R2_>Aj%= z<534|?osj}8S`kCslSR|;eFI`y^Ry%gM<_^=(WptUqDB(3wFP}#|Jjv^R7#`Z)uK< zG`DPje*0ERR&3qgb4atb!-A~|pAn+4X*ThadamZj=I-<}Pk-u^OwZF|(BXY(p{!}L z``~`aCVWB^KLO>m$GK7bD10FS5qt1FqAzx7OJYQ?f+Xa=?7l2mnt&iCXcp{Ih#tEy z!(OxSLtZ3g^X_kG!Vr%%_cwgVOQ`X7s3QaWd(wn<8+wygGkqvd-UsI>`q-FFAHM?! z_ERKo3d#LUC$fqQ>f9$j!RbL7o{W=rvW+y^Mn8S)2d_)!#{(Vwz;6NFPWkoPU+oi; zs+c;M*|d7)m6=>FbLGm__pe%cWfp!{u3WWwZ%0`4WGC{~pRIU58eTDx%^X^}>i*R$ z4rQ_sT|sj}lq{kmrhn_mn!HHs@bfgw^1%NCi~2~Y0001ZoMT{QU|;~^**3TC#q-;I zW#DFE0D-$2lk#Bn|G)q1SdE#Rfm{v-CXgrqTXPJH0001ZoMT{QU|??e-@w4Yy7K?u z|9@GH8Gs@vU?%{p(FdG(oMT~NU|=B!Gm@y@hD>{i!OE1H@&7*#@qf7GsDwGOnNO@3 zuDJOB7gdbPen7WR9TZN~GoN)Ob;B3{L_ih{0000000000QUJ&SE&;j%00Nc*&;yVI z%mkJM@C8N%#0EYF)(0*Jng~P)s0j86dEST)o(J~rMrN;kGRBsg9;b~y|=QaP?U{5m2!+B;x7mOJ1)C_KU;kCR2V>)KlzKP*k*43{@aiG*#kONLGGU%vU0KoMT{QU|`tEe2>A0 z0R)(Umz+<3soa?%nzjZakDx5<;6h`R2@-xsw*aHNN0r|J?BG*+GNZo+~)V zo$wj;d*LeC6|SL)C*eBvk#GZ#couGQ;tMA@)eB~Aya_vK;a#|bOMD2QQU4UKlD~y( zxW$if9WCcdxPh7TAlyXTc^w(;S-nv6LWO>s1ZiR;uh@j0T{hLrP2`z_aG;qsd6*`u z@AeMjL?_z(jmx*ofwh4OOd6{(=jtd*Rc6w)_N}|JHXC-kf#|NE#{3`#8Xhd;0t#~! zj3IoaND!3KBBG+OB3!I!6 ziwn)KxA6bJZCFGL9()97qk}Gb=wpB-EMo;5uoHI1F4z^jVR!6-J+T+|#y;2=`(b|^ zfCF(54#puk6o=t(9DyTo6pqF*I2Iv}!|~XNRh)oL*o+f#5>Cb`I2EVibew@RaTdJYK+ycnL4#6}*bq@H*bWn|KRv;~l(<_wYVGz=!wi%gR(0)Si%zR7`!& zR2JcsmmZ-K4Ov<^9L+wEAn^KdA z!;BK!HHDfcnP89{GhU%A1%?W#^!5m=?YZUg!I5uM$|>N33`aXs1!qp}DGiOZw45;C zp{X=OVJL1HvK>o#nQ>h$QI@^+Nx15z%vz8z=ou5lgKu3{L8%41wsb!9a>gl$xGF9B zkrRfI>`k5el1R^b&272NIOj@FXy&;P3{fO%USgGHLbqcna#h5ECR^#E-$ZOg=oGc& z?g<%du1I8_yQyoe(9H?PYT^~NW`nBCl!*JyCyccic@Fk~k5M@6Mk+6vw8C~17Fq4w zb|+;q>dwF6s?Yl2u@vm-F%mO>!qQP~7H-U7`4i<(H6<}4x|^uNnlPrU*I22|*G;F3 zL1P-LRWS;xB4di%rHr^r^4w&w1E6p?5ZqEl7;%QA`^}`*L$9%&9NJC9YW|g;6+;s= zz2IxELHQ;X+I5?>0VhT*7b;kYG+-S%ifWbn^~7gyCYO1or8#O%sD3R2YIIOp$v}x2 z_oC@LwAXu&iBJqv0mlG1|JHZ4&KLbDJ83WG(PtknWDZCDjxf>O6%{RSZy~0kATLom z_Z&?VFJnuPfnroIhw#-9*DhikOhGyE-;NrA4Z`|yQA*bALw(6$v z-1)_->@`8y-F94PCk4Jk=qPO`T2c`kf5f$wJxygctM|J(6;*Am{D(A`{b0^$J!x@$ zOs%oplU%Z)l^sdf2Nu=XbMLL^o`sfGrC)RGId(m#>Xr4P))9>|WvEw=O(tqQ-&$Ds L7eudI3IG5Az1+Oo literal 0 HcmV?d00001 diff --git a/src/font/iconfont.woff2 b/src/font/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..4adc7ce456c89c281ea2b18ffc74122a232deff7 GIT binary patch literal 28556 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 X4Yekd11KHKie=GRpY75=00000jiZBc literal 0 HcmV?d00001 diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..f2a9afcd --- /dev/null +++ b/src/index.ts @@ -0,0 +1,50 @@ +import type { App } from 'vue' +import type { IDefineComponent, InstallOptions } from './module/type/index' + +import "./css/layui.css"; +import LayRadio from './module/radio/index' +import LayButton from './module/button/index' +import LayIcon from './module/icon/index' +import LayLayout from "./module/layout/index" +import LaySide from "./module/side/index" +import LayBody from "./module/body/index" +import LayHeader from "./module/header/index" +import LayFooter from "./module/footer/index" +import LayLogo from "./module/logo/index" + +const components: Record = { + LayRadio, + LayButton, + LayIcon, + LayLayout, + LaySide, + LayHeader, + LayBody, + LayFooter, + LayLogo +} + +const install = (app: App, options?: InstallOptions): void => { + const _options = options; + app.config.globalProperties.$PROOPTIONS = _options + + for (const key in components) { + const item = components[key] + app.component(item.name || key, item) + } +} + +export { + LayRadio, + LayIcon, + LayButton, + LayLayout, + LaySide, + LayHeader, + LayBody, + LayFooter, + LayLogo, + install, +} + +export default { install } diff --git a/src/module/body/index.ts b/src/module/body/index.ts new file mode 100644 index 00000000..71e7fc3d --- /dev/null +++ b/src/module/body/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayBody', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/body/index.vue b/src/module/body/index.vue new file mode 100644 index 00000000..17d157d3 --- /dev/null +++ b/src/module/body/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/module/button/index.ts b/src/module/button/index.ts new file mode 100644 index 00000000..5a103a42 --- /dev/null +++ b/src/module/button/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayButton ', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/button/index.vue b/src/module/button/index.vue new file mode 100644 index 00000000..ecbea342 --- /dev/null +++ b/src/module/button/index.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/module/footer/index.ts b/src/module/footer/index.ts new file mode 100644 index 00000000..24567c9e --- /dev/null +++ b/src/module/footer/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayFooter', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/footer/index.vue b/src/module/footer/index.vue new file mode 100644 index 00000000..2dfae169 --- /dev/null +++ b/src/module/footer/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/module/header/index.ts b/src/module/header/index.ts new file mode 100644 index 00000000..754facf7 --- /dev/null +++ b/src/module/header/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayHeader', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/header/index.vue b/src/module/header/index.vue new file mode 100644 index 00000000..a2f1d6dd --- /dev/null +++ b/src/module/header/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/module/icon/index.ts b/src/module/icon/index.ts new file mode 100644 index 00000000..b52d60e1 --- /dev/null +++ b/src/module/icon/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayIcon', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/icon/index.vue b/src/module/icon/index.vue new file mode 100644 index 00000000..9eb717d7 --- /dev/null +++ b/src/module/icon/index.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/module/layout/index.ts b/src/module/layout/index.ts new file mode 100644 index 00000000..fd9067c0 --- /dev/null +++ b/src/module/layout/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayLayout', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/layout/index.vue b/src/module/layout/index.vue new file mode 100644 index 00000000..6fc2fc73 --- /dev/null +++ b/src/module/layout/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/module/logo/index.ts b/src/module/logo/index.ts new file mode 100644 index 00000000..388106e5 --- /dev/null +++ b/src/module/logo/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayLogo', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/logo/index.vue b/src/module/logo/index.vue new file mode 100644 index 00000000..b31d0143 --- /dev/null +++ b/src/module/logo/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/module/radio/index.ts b/src/module/radio/index.ts new file mode 100644 index 00000000..1164d0cb --- /dev/null +++ b/src/module/radio/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LayRadio ', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/radio/index.vue b/src/module/radio/index.vue new file mode 100644 index 00000000..69e485a5 --- /dev/null +++ b/src/module/radio/index.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/module/side/index.ts b/src/module/side/index.ts new file mode 100644 index 00000000..0b0e25fc --- /dev/null +++ b/src/module/side/index.ts @@ -0,0 +1,9 @@ +import type { App } from 'vue' +import Component from './index.vue' +import type { IDefineComponent } from '../type/index' + +Component.install = (app: App) => { + app.component(Component.name || 'LaySide', Component) +} + +export default Component as IDefineComponent diff --git a/src/module/side/index.vue b/src/module/side/index.vue new file mode 100644 index 00000000..b2827ceb --- /dev/null +++ b/src/module/side/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/module/type/index.ts b/src/module/type/index.ts new file mode 100644 index 00000000..545977d1 --- /dev/null +++ b/src/module/type/index.ts @@ -0,0 +1 @@ +export * from './public' diff --git a/src/module/type/public.ts b/src/module/type/public.ts new file mode 100644 index 00000000..fa0681fa --- /dev/null +++ b/src/module/type/public.ts @@ -0,0 +1,17 @@ +import type { App, DefineComponent } from 'vue' +export type StringObject = Record + +export type UnknownObject = Record + +export type UnknownFunction = (...arg: unknown[]) => unknown + +export type IDefineComponent = DefineComponent & { + install: (app: App, options?: InstallOptions) => void +} + +export interface InstallOptions extends StringObject { + /** Pagination Attributes */ + pagination?: null + /** Menu Attributes */ + menu?: null +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..f09e7147 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "module": "esnext", + "target": "es2015", + "moduleResolution": "Node", + "strict": true, + "resolveJsonModule": true, + "declaration": true, + "emitDeclarationOnly": true, + "esModuleInterop": true, + "declarationDir": "types", + "lib": ["ESNext", "DOM"], + "paths": { + "/@src/*": ["./src/*"] + } + }, + "include": ["src/**/*", "shims-vue.d.ts"], + "exclude": ["node_modules"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 00000000..1b8eb1c3 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,44 @@ +import path from 'path' +import { defineConfig } from 'vite' +import babel from 'rollup-plugin-babel' +import { name } from './package.json' +import plugins from './docs/src/plugin/common-plugins' + +const camelize = (name: string) => + name.replace(/(^|-)(\w)/g, (a, b, c) => c.toUpperCase()) + +export default defineConfig({ + root: path.resolve(__dirname, 'docs'), + resolve: { + alias: { + '/@src': path.resolve(__dirname, 'src'), + }, + }, + build: { + target: 'es2015', + outDir: path.resolve(__dirname, 'lib'), + lib: { + entry: path.resolve(__dirname, 'src/index.ts'), + name: camelize(name), + }, + rollupOptions: { + output: { + exports: 'named', + globals: (id: string) => { + const name = id.replace(/^@/, '').split('/')[0] + return camelize(name) + }, + }, + external: (id: string) => + /^(vue|@vue|element-plus|resize-observer-polyfill)/.test(id), + plugins: [ + babel({ + exclude: 'node_modules/**', + extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'], + presets: ['@babel/preset-env', '@babel/preset-typescript'], + }), + ], + }, + }, + plugins, +})