From 5ac8e8a2c2d0220ec0d01c37c6409906c2187220 Mon Sep 17 00:00:00 2001 From: jinqiming <45981669@qq.com> Date: Wed, 16 Sep 2020 15:33:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 43 + LICENSE | 20 + README.md | 87 + bin/clean.bat | 12 + bin/package.bat | 12 + bin/run.bat | 14 + doc/若依环境使用手册.docx | Bin 0 -> 426497 bytes pom.xml | 264 + ry.sh | 86 + snow-admin/pom.xml | 116 + .../main/java/com/snow/RuoYiApplication.java | 20 + .../com/snow/RuoYiServletInitializer.java | 18 + .../controller/common/CommonController.java | 112 + .../demo/controller/DemoDialogController.java | 80 + .../demo/controller/DemoFormController.java | 326 + .../demo/controller/DemoIconController.java | 35 + .../controller/DemoOperateController.java | 326 + .../demo/controller/DemoReportController.java | 53 + .../demo/controller/DemoTableController.java | 441 + .../controller/demo/domain/CustomerModel.java | 116 + .../controller/demo/domain/GoodsModel.java | 82 + .../demo/domain/UserOperateModel.java | 149 + .../controller/monitor/DruidController.java | 26 + .../controller/monitor/ServerController.java | 31 + .../monitor/SysLogininforController.java | 94 + .../monitor/SysOperlogController.java | 89 + .../monitor/SysUserOnlineController.java | 88 + .../system/SysCaptchaController.java | 92 + .../system/SysConfigController.java | 157 + .../controller/system/SysDeptController.java | 203 + .../system/SysDictDataController.java | 120 + .../system/SysDictTypeController.java | 188 + .../controller/system/SysIndexController.java | 61 + .../controller/system/SysLoginController.java | 65 + .../controller/system/SysMenuController.java | 196 + .../system/SysNoticeController.java | 112 + .../controller/system/SysPostController.java | 163 + .../system/SysProfileController.java | 173 + .../system/SysRegisterController.java | 46 + .../controller/system/SysRoleController.java | 304 + .../controller/system/SysUserController.java | 291 + .../web/controller/tool/BuildController.java | 26 + .../controller/tool/SwaggerController.java | 24 + .../web/controller/tool/TestController.java | 175 + .../snow/web/core/config/SwaggerConfig.java | 69 + .../src/main/resources/application-druid.yml | 57 + snow-admin/src/main/resources/application.yml | 137 + snow-admin/src/main/resources/banner.txt | 24 + .../main/resources/ehcache/ehcache-shiro.xml | 81 + snow-admin/src/main/resources/logback.xml | 93 + .../main/resources/mybatis/mybatis-config.xml | 15 + .../ajax/libs/beautifyhtml/beautifyhtml.js | 617 ++ .../ajax/libs/blockUI/jquery.blockUI.js | 620 ++ .../libs/bootstrap-fileinput/fileinput.css | 550 ++ .../libs/bootstrap-fileinput/fileinput.js | 5697 ++++++++++++ .../bootstrap-fileinput/fileinput.min.css | 12 + .../libs/bootstrap-fileinput/fileinput.min.js | 10 + .../libs/bootstrap-fileinput/loading-sm.gif | Bin 0 -> 2670 bytes .../ajax/libs/bootstrap-fileinput/loading.gif | Bin 0 -> 847 bytes .../bootstrap-select/bootstrap-select.css | 429 + .../libs/bootstrap-select/bootstrap-select.js | 3139 +++++++ .../bootstrap-select/bootstrap-select.min.css | 6 + .../bootstrap-select/bootstrap-select.min.js | 9 + .../bootstrap-table/bootstrap-table.min.css | 1 + .../bootstrap-table/bootstrap-table.min.js | 9 + .../bootstrap-table-auto-refresh.min.js | 10 + .../columns/bootstrap-table-fixed-columns.js | 1544 ++++ .../bootstrap-table-fixed-columns.min.js | 10 + .../editable/bootstrap-editable.css | 663 ++ .../editable/bootstrap-editable.min.js | 7 + .../editable/bootstrap-table-editable.js | 2462 ++++++ .../editable/bootstrap-table-editable.min.js | 10 + .../extensions/editable/clear.png | Bin 0 -> 244 bytes .../extensions/editable/loading.gif | Bin 0 -> 1849 bytes .../export/bootstrap-table-export.js | 119 + .../extensions/export/tableExport.js | 2257 +++++ .../mobile/bootstrap-table-mobile.js | 1239 +++ .../print/bootstrap-table-print.min.js | 10 + .../reorder/bootstrap-table-reorder.js | 117 + .../extensions/reorder/jquery.tablednd.js | 598 ++ .../locale/bootstrap-table-zh-CN.js | 771 ++ .../locale/bootstrap-table-zh-CN.min.js | 10 + .../bootstrap-treetable.js | 747 ++ .../static/ajax/libs/cropper/cropper.css | 304 + .../static/ajax/libs/cropper/cropper.js | 3616 ++++++++ .../static/ajax/libs/cropper/cropper.min.css | 9 + .../static/ajax/libs/cropper/cropper.min.js | 10 + .../ajax/libs/cxselect/jquery.cxselect.js | 406 + .../ajax/libs/cxselect/jquery.cxselect.min.js | 11 + .../datapicker/bootstrap-datetimepicker.css | 418 + .../datapicker/bootstrap-datetimepicker.js | 1978 +++++ .../bootstrap-datetimepicker.min.css | 9 + .../bootstrap-datetimepicker.min.js | 1 + .../duallistbox/bootstrap-duallistbox.css | 86 + .../libs/duallistbox/bootstrap-duallistbox.js | 841 ++ .../duallistbox/bootstrap-duallistbox.min.css | 1 + .../duallistbox/bootstrap-duallistbox.min.js | 10 + .../static/ajax/libs/flot/curvedLines.js | 315 + .../static/ajax/libs/flot/jquery.flot.js | 2599 ++++++ .../static/ajax/libs/flot/jquery.flot.pie.js | 750 ++ .../ajax/libs/flot/jquery.flot.resize.js | 60 + .../ajax/libs/flot/jquery.flot.spline.js | 212 + .../ajax/libs/flot/jquery.flot.symbol.js | 71 + .../ajax/libs/flot/jquery.flot.tooltip.min.js | 12 + .../ajax/libs/fullscreen/jquery.fullscreen.js | 182 + .../static/ajax/libs/iCheck/custom.css | 72 + .../static/ajax/libs/iCheck/green-login.png | Bin 0 -> 3785 bytes .../static/ajax/libs/iCheck/green.png | Bin 0 -> 20818 bytes .../static/ajax/libs/iCheck/green@2x.png | Bin 0 -> 7708 bytes .../static/ajax/libs/iCheck/icheck.min.js | 11 + .../ajax/libs/jasny/jasny-bootstrap.css | 621 ++ .../static/ajax/libs/jasny/jasny-bootstrap.js | 1025 +++ .../ajax/libs/jasny/jasny-bootstrap.min.css | 7 + .../ajax/libs/jasny/jasny-bootstrap.min.js | 6 + .../jquery-layout/jquery.layout-latest.css | 1 + .../jquery-layout/jquery.layout-latest.js | 18 + .../3.5/css/default/img/diy/1_close.png | Bin 0 -> 601 bytes .../3.5/css/default/img/diy/1_open.png | Bin 0 -> 580 bytes .../3.5/css/default/img/diy/2.png | Bin 0 -> 570 bytes .../3.5/css/default/img/diy/3.png | Bin 0 -> 762 bytes .../3.5/css/default/img/diy/4.png | Bin 0 -> 399 bytes .../3.5/css/default/img/diy/5.png | Bin 0 -> 710 bytes .../3.5/css/default/img/diy/6.png | Bin 0 -> 432 bytes .../3.5/css/default/img/diy/7.png | Bin 0 -> 534 bytes .../3.5/css/default/img/diy/8.png | Bin 0 -> 529 bytes .../3.5/css/default/img/diy/9.png | Bin 0 -> 467 bytes .../3.5/css/default/img/line_conn.gif | Bin 0 -> 45 bytes .../3.5/css/default/img/loading.gif | Bin 0 -> 381 bytes .../3.5/css/default/img/zTreeStandard.gif | Bin 0 -> 5564 bytes .../3.5/css/default/img/zTreeStandard.png | Bin 0 -> 11173 bytes .../3.5/css/default/zTreeStyle.css | 102 + .../3.5/css/metro/img/line_conn.gif | Bin 0 -> 45 bytes .../3.5/css/metro/img/line_conn.png | Bin 0 -> 933 bytes .../3.5/css/metro/img/loading.gif | Bin 0 -> 381 bytes .../jquery-ztree/3.5/css/metro/img/metro.gif | Bin 0 -> 3981 bytes .../jquery-ztree/3.5/css/metro/img/metro.png | Bin 0 -> 7273 bytes .../jquery-ztree/3.5/css/metro/zTreeStyle.css | 107 + .../3.5/css/simple/img/left_menu.gif | Bin 0 -> 216 bytes .../3.5/css/simple/img/left_menu.png | Bin 0 -> 421 bytes .../3.5/css/simple/img/line_conn.gif | Bin 0 -> 45 bytes .../3.5/css/simple/img/loading.gif | Bin 0 -> 381 bytes .../3.5/css/simple/img/zTreeStandard.gif | Bin 0 -> 5564 bytes .../3.5/css/simple/img/zTreeStandard.png | Bin 0 -> 11173 bytes .../3.5/css/simple/zTreeStyle.css | 118 + .../3.5/js/jquery.ztree.all-3.5.js | 3820 ++++++++ .../3.5/js/jquery.ztree.core-3.5.js | 1650 ++++ .../3.5/js/jquery.ztree.excheck-3.5.js | 624 ++ .../3.5/js/jquery.ztree.exedit-3.5.js | 1178 +++ .../3.5/js/jquery.ztree.exhide-3.5.js | 366 + .../ajax/libs/jquery-ztree/3.5/log v3.x.txt | 170 + .../ajax/libs/jsonview/jquery.jsonview.css | 50 + .../ajax/libs/jsonview/jquery.jsonview.js | 250 + .../static/ajax/libs/layer/layer.min.js | 2 + .../libs/layer/theme/default/icon-ext.png | Bin 0 -> 5911 bytes .../ajax/libs/layer/theme/default/icon.png | Bin 0 -> 11493 bytes .../ajax/libs/layer/theme/default/layer.css | 1 + .../libs/layer/theme/default/loading-0.gif | Bin 0 -> 5793 bytes .../libs/layer/theme/default/loading-1.gif | Bin 0 -> 701 bytes .../libs/layer/theme/default/loading-2.gif | Bin 0 -> 1787 bytes .../ajax/libs/layer/theme/moon/default.png | Bin 0 -> 7563 bytes .../ajax/libs/layer/theme/moon/style.css | 138 + .../modules/laydate/default/font/iconfont.eot | Bin 0 -> 2456 bytes .../modules/laydate/default/font/iconfont.svg | 45 + .../modules/laydate/default/font/iconfont.ttf | Bin 0 -> 2272 bytes .../laydate/default/font/iconfont.woff | Bin 0 -> 1492 bytes .../css/modules/laydate/default/laydate.css | 2 + .../ajax/libs/layui/lay/modules/laydate.js | 2 + .../resources/static/ajax/libs/layui/layui.js | 2 + .../ajax/libs/report/echarts/echarts-all.js | 52 + .../libs/report/peity/jquery.peity.min.js | 13 + .../report/sparkline/jquery.sparkline.min.js | 5 + .../ajax/libs/select2/select2-bootstrap.css | 7 + .../static/ajax/libs/select2/select2.css | 484 + .../static/ajax/libs/select2/select2.js | 5885 +++++++++++++ .../static/ajax/libs/select2/select2.min.css | 1 + .../static/ajax/libs/select2/select2.min.js | 1 + .../static/ajax/libs/staps/jquery.steps.css | 381 + .../static/ajax/libs/staps/jquery.steps.js | 2042 +++++ .../ajax/libs/staps/jquery.steps.min.js | 6 + .../ajax/libs/suggest/bootstrap-suggest.js | 1042 +++ .../libs/suggest/bootstrap-suggest.min.js | 10 + .../ajax/libs/summernote/font/summernote.eot | Bin 0 -> 17342 bytes .../ajax/libs/summernote/font/summernote.ttf | Bin 0 -> 17156 bytes .../ajax/libs/summernote/font/summernote.woff | Bin 0 -> 10604 bytes .../ajax/libs/summernote/summernote-bs3.css | 5972 +++++++++++++ .../ajax/libs/summernote/summernote-zh-CN.js | 155 + .../ajax/libs/summernote/summernote.css | 1 + .../static/ajax/libs/summernote/summernote.js | 7763 +++++++++++++++++ .../ajax/libs/summernote/summernote.min.js | 3 + .../libs/typeahead/bootstrap3-typeahead.js | 774 ++ .../typeahead/bootstrap3-typeahead.min.js | 1 + .../libs/validate/additional-methods.min.js | 4 + .../libs/validate/jquery.validate.extend.js | 180 + .../ajax/libs/validate/jquery.validate.min.js | 4 + .../ajax/libs/validate/messages_zh.min.js | 27 + .../src/main/resources/static/css/animate.css | 2880 ++++++ .../resources/static/css/bootstrap.min.css | 6 + .../resources/static/css/font-awesome.min.css | 4 + .../static/css/jquery.contextMenu.min.css | 16 + .../src/main/resources/static/css/login.css | 161 + .../main/resources/static/css/login.min.css | 1 + .../resources/static/css/main/animate.min.css | 12 + .../static/css/main/bootstrap.min14ed.css | 6 + .../static/css/main/font-awesome.min93e3.css | 4 + .../static/css/main/style.min862f.css | 1 + .../css/patterns/header-profile-skin-blue.png | Bin 0 -> 26278 bytes .../patterns/header-profile-skin-yellow.png | Bin 0 -> 33032 bytes .../static/css/patterns/header-profile.png | Bin 0 -> 5877 bytes .../static/css/patterns/shattered.png | Bin 0 -> 137733 bytes .../src/main/resources/static/css/skins.css | 985 +++ .../src/main/resources/static/css/style.css | 7040 +++++++++++++++ .../src/main/resources/static/favicon.ico | Bin 0 -> 16958 bytes .../src/main/resources/static/file/rml.txt | 1 + .../resources/static/fonts/FontAwesome.otf | Bin 0 -> 134808 bytes .../static/fonts/Simple-Line-Icons.woff2 | Bin 0 -> 30064 bytes .../static/fonts/fontawesome-webfont.eot | Bin 0 -> 165742 bytes .../static/fonts/fontawesome-webfont.svg | 2671 ++++++ .../static/fonts/fontawesome-webfont.ttf | Bin 0 -> 165548 bytes .../static/fonts/fontawesome-webfont.woff | Bin 0 -> 98024 bytes .../static/fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../resources/static/i18n/messages.properties | 36 + .../src/main/resources/static/img/blue.png | Bin 0 -> 4088 bytes .../resources/static/img/loading-upload.gif | Bin 0 -> 1688 bytes .../src/main/resources/static/img/loading.gif | Bin 0 -> 2538 bytes .../src/main/resources/static/img/locked.png | Bin 0 -> 1132 bytes .../resources/static/img/login-background.jpg | Bin 0 -> 142718 bytes .../src/main/resources/static/img/pay.png | Bin 0 -> 144900 bytes .../src/main/resources/static/img/profile.jpg | Bin 0 -> 81131 bytes .../main/resources/static/img/progress.png | Bin 0 -> 1269 bytes .../src/main/resources/static/img/qr_code.png | Bin 0 -> 8602 bytes .../src/main/resources/static/img/user.png | Bin 0 -> 1106 bytes .../main/resources/static/js/bootstrap.min.js | 6 + .../static/js/jquery-ui-1.10.4.min.js | 12 + .../static/js/jquery.contextMenu.min.js | 2 + .../static/js/jquery.i18n.properties.min.js | 9 + .../main/resources/static/js/jquery.min.js | 4 + .../main/resources/static/js/jquery.tmpl.js | 492 ++ .../js/plugins/metisMenu/jquery.metisMenu.js | 120 + .../slimscroll/jquery.slimscroll.min.js | 8 + .../src/main/resources/static/ruoyi.png | Bin 0 -> 5645 bytes .../main/resources/static/ruoyi/css/ry-ui.css | 1092 +++ .../src/main/resources/static/ruoyi/index.js | 636 ++ .../main/resources/static/ruoyi/js/common.js | 431 + .../main/resources/static/ruoyi/js/ry-ui.js | 1607 ++++ .../src/main/resources/static/ruoyi/login.js | 95 + .../main/resources/static/ruoyi/register.js | 82 + .../templates/demo/form/autocomplete.html | 322 + .../resources/templates/demo/form/basic.html | 593 ++ .../resources/templates/demo/form/button.html | 620 ++ .../resources/templates/demo/form/cards.html | 319 + .../templates/demo/form/cxselect.html | 161 + .../templates/demo/form/datetime.html | 236 + .../templates/demo/form/duallistbox.html | 65 + .../resources/templates/demo/form/grid.html | 432 + .../resources/templates/demo/form/jasny.html | 118 + .../resources/templates/demo/form/select.html | 148 + .../templates/demo/form/sortable.html | 198 + .../templates/demo/form/summernote.html | 93 + .../templates/demo/form/tabs_panels.html | 353 + .../templates/demo/form/timeline.html | 113 + .../resources/templates/demo/form/upload.html | 55 + .../templates/demo/form/validate.html | 193 + .../resources/templates/demo/form/wizard.html | 192 + .../templates/demo/icon/fontawesome.html | 1944 +++++ .../templates/demo/icon/glyphicons.html | 1364 +++ .../templates/demo/modal/dialog.html | 215 + .../resources/templates/demo/modal/form.html | 95 + .../resources/templates/demo/modal/layer.html | 256 + .../resources/templates/demo/modal/table.html | 56 + .../templates/demo/modal/table/check.html | 86 + .../templates/demo/modal/table/parent.html | 90 + .../templates/demo/modal/table/radio.html | 86 + .../resources/templates/demo/operate/add.html | 78 + .../templates/demo/operate/detail.html | 69 + .../templates/demo/operate/edit.html | 79 + .../templates/demo/operate/other.html | 77 + .../templates/demo/operate/table.html | 125 + .../templates/demo/report/echarts.html | 1264 +++ .../templates/demo/report/metrics.html | 478 + .../templates/demo/report/peity.html | 206 + .../templates/demo/report/sparkline.html | 232 + .../templates/demo/table/button.html | 92 + .../resources/templates/demo/table/child.html | 113 + .../resources/templates/demo/table/curd.html | 178 + .../resources/templates/demo/table/data.html | 76 + .../templates/demo/table/detail.html | 86 + .../templates/demo/table/editable.html | 128 + .../resources/templates/demo/table/event.html | 107 + .../templates/demo/table/export.html | 81 + .../templates/demo/table/fixedColumns.html | 145 + .../templates/demo/table/footer.html | 83 + .../templates/demo/table/groupHeader.html | 80 + .../resources/templates/demo/table/image.html | 79 + .../resources/templates/demo/table/multi.html | 222 + .../resources/templates/demo/table/other.html | 106 + .../templates/demo/table/pageGo.html | 77 + .../templates/demo/table/params.html | 158 + .../resources/templates/demo/table/print.html | 83 + .../templates/demo/table/refresh.html | 79 + .../templates/demo/table/remember.html | 86 + .../templates/demo/table/reorder.html | 75 + .../templates/demo/table/search.html | 202 + .../templates/demo/table/subdata.html | 185 + .../main/resources/templates/error/404.html | 27 + .../main/resources/templates/error/500.html | 28 + .../resources/templates/error/business.html | 20 + .../resources/templates/error/unauth.html | 28 + .../src/main/resources/templates/include.html | 207 + .../src/main/resources/templates/index.html | 315 + .../src/main/resources/templates/login.html | 84 + .../src/main/resources/templates/main.html | 1032 +++ .../src/main/resources/templates/main_v1.html | 336 + .../monitor/logininfor/logininfor.html | 133 + .../templates/monitor/online/online.html | 152 + .../templates/monitor/operlog/detail.html | 74 + .../templates/monitor/operlog/operlog.html | 164 + .../templates/monitor/server/server.html | 254 + .../main/resources/templates/register.html | 83 + .../src/main/resources/templates/skin.html | 165 + .../templates/system/config/add.html | 82 + .../templates/system/config/config.html | 144 + .../templates/system/config/edit.html | 86 + .../resources/templates/system/dept/add.html | 128 + .../resources/templates/system/dept/dept.html | 112 + .../resources/templates/system/dept/edit.html | 141 + .../resources/templates/system/dept/tree.html | 52 + .../templates/system/dict/data/add.html | 100 + .../templates/system/dict/data/data.html | 148 + .../templates/system/dict/data/edit.html | 101 + .../templates/system/dict/type/add.html | 77 + .../templates/system/dict/type/edit.html | 81 + .../templates/system/dict/type/tree.html | 42 + .../templates/system/dict/type/type.html | 148 + .../resources/templates/system/menu/add.html | 188 + .../resources/templates/system/menu/edit.html | 216 + .../resources/templates/system/menu/icon.html | 928 ++ .../resources/templates/system/menu/menu.html | 154 + .../resources/templates/system/menu/tree.html | 49 + .../templates/system/notice/add.html | 97 + .../templates/system/notice/edit.html | 102 + .../templates/system/notice/notice.html | 117 + .../resources/templates/system/post/add.html | 103 + .../resources/templates/system/post/edit.html | 110 + .../resources/templates/system/post/post.html | 120 + .../resources/templates/system/role/add.html | 150 + .../templates/system/role/authUser.html | 149 + .../templates/system/role/dataScope.html | 107 + .../resources/templates/system/role/edit.html | 159 + .../resources/templates/system/role/role.html | 165 + .../templates/system/role/selectUser.html | 120 + .../resources/templates/system/user/add.html | 268 + .../templates/system/user/authRole.html | 109 + .../resources/templates/system/user/edit.html | 234 + .../templates/system/user/profile/avatar.html | 261 + .../system/user/profile/profile.html | 292 + .../system/user/profile/resetPwd.html | 92 + .../templates/system/user/resetPwd.html | 45 + .../resources/templates/system/user/user.html | 270 + .../resources/templates/tool/build/build.html | 168 + snow-common/pom.xml | 105 + .../com/snow/common/annotation/DataScope.java | 28 + .../snow/common/annotation/DataSource.java | 28 + .../com/snow/common/annotation/Excel.java | 128 + .../com/snow/common/annotation/Excels.java | 18 + .../java/com/snow/common/annotation/Log.java | 40 + .../snow/common/annotation/RepeatSubmit.java | 21 + .../java/com/snow/common/config/Global.java | 116 + .../com/snow/common/config/ServerConfig.java | 34 + .../DynamicDataSourceContextHolder.java | 45 + .../config/thread/ThreadPoolConfig.java | 62 + .../com/snow/common/constant/Constants.java | 94 + .../snow/common/constant/GenConstants.java | 106 + .../common/constant/PermissionConstants.java | 27 + .../common/constant/ScheduleConstants.java | 50 + .../snow/common/constant/ShiroConstants.java | 74 + .../snow/common/constant/UserConstants.java | 110 + .../core/controller/BaseController.java | 186 + .../snow/common/core/domain/AjaxResult.java | 182 + .../snow/common/core/domain/BaseEntity.java | 114 + .../com/snow/common/core/domain/CxSelect.java | 69 + .../snow/common/core/domain/TreeEntity.java | 63 + .../com/snow/common/core/domain/Ztree.java | 104 + .../com/snow/common/core/page/PageDomain.java | 72 + .../snow/common/core/page/TableDataInfo.java | 85 + .../snow/common/core/page/TableSupport.java | 30 + .../com/snow/common/core/text/CharsetKit.java | 86 + .../com/snow/common/core/text/Convert.java | 999 +++ .../snow/common/core/text/StrFormatter.java | 92 + .../com/snow/common/enums/BusinessStatus.java | 19 + .../com/snow/common/enums/BusinessType.java | 59 + .../com/snow/common/enums/DataSourceType.java | 19 + .../com/snow/common/enums/OnlineStatus.java | 24 + .../com/snow/common/enums/OperatorType.java | 24 + .../com/snow/common/enums/UserStatus.java | 30 + .../common/exception/BusinessException.java | 30 + .../common/exception/DemoModeException.java | 15 + .../snow/common/exception/UtilException.java | 26 + .../common/exception/base/BaseException.java | 97 + .../common/exception/file/FileException.java | 19 + .../FileNameLengthLimitExceededException.java | 16 + .../file/FileSizeLimitExceededException.java | 16 + .../file/InvalidExtensionException.java | 71 + .../common/exception/job/TaskException.java | 34 + .../exception/user/CaptchaException.java | 16 + .../exception/user/RoleBlockedException.java | 16 + .../exception/user/UserBlockedException.java | 16 + .../exception/user/UserDeleteException.java | 16 + .../common/exception/user/UserException.java | 18 + .../user/UserNotExistsException.java | 16 + .../user/UserPasswordNotMatchException.java | 16 + .../UserPasswordRetryLimitCountException.java | 16 + ...UserPasswordRetryLimitExceedException.java | 16 + .../main/java/com/snow/common/json/JSON.java | 187 + .../java/com/snow/common/json/JSONObject.java | 749 ++ .../com/snow/common/utils/AddressUtils.java | 55 + .../java/com/snow/common/utils/Arith.java | 114 + .../com/snow/common/utils/CacheUtils.java | 188 + .../java/com/snow/common/utils/DateUtils.java | 155 + .../com/snow/common/utils/ExceptionUtil.java | 40 + .../java/com/snow/common/utils/IpUtils.java | 194 + .../com/snow/common/utils/MapDataUtil.java | 50 + .../com/snow/common/utils/MessageUtils.java | 26 + .../com/snow/common/utils/ServletUtils.java | 135 + .../com/snow/common/utils/StringUtils.java | 408 + .../java/com/snow/common/utils/Threads.java | 99 + .../java/com/snow/common/utils/YamlUtil.java | 86 + .../com/snow/common/utils/bean/BeanUtils.java | 110 + .../common/utils/file/FileUploadUtils.java | 232 + .../com/snow/common/utils/file/FileUtils.java | 142 + .../snow/common/utils/file/MimeTypeUtils.java | 55 + .../snow/common/utils/html/EscapeUtil.java | 155 + .../snow/common/utils/html/HTMLFilter.java | 570 ++ .../com/snow/common/utils/http/HttpUtils.java | 263 + .../com/snow/common/utils/poi/ExcelUtil.java | 950 ++ .../common/utils/reflect/ReflectUtils.java | 407 + .../snow/common/utils/security/Md5Utils.java | 66 + .../utils/security/PermissionUtils.java | 119 + .../snow/common/utils/spring/SpringUtils.java | 146 + .../com/snow/common/utils/sql/SqlUtil.java | 37 + .../com/snow/common/utils/uuid/IdUtils.java | 49 + .../java/com/snow/common/utils/uuid/UUID.java | 484 + .../java/com/snow/common/xss/XssFilter.java | 97 + .../xss/XssHttpServletRequestWrapper.java | 39 + snow-dingtalk/pom.xml | 28 + .../snow/dingtalk/common/BaseConstantUrl.java | 12 + .../com/snow/dingtalk/common/BaseService.java | 52 + .../src/main/java/com/snow/dingtalk/test.java | 10 + snow-framework/pom.xml | 98 + .../framework/aspectj/DataScopeAspect.java | 163 + .../framework/aspectj/DataSourceAspect.java | 72 + .../com/snow/framework/aspectj/LogAspect.java | 177 + .../framework/config/ApplicationConfig.java | 20 + .../snow/framework/config/CaptchaConfig.java | 83 + .../snow/framework/config/DruidConfig.java | 128 + .../snow/framework/config/FilterConfig.java | 46 + .../com/snow/framework/config/I18nConfig.java | 43 + .../framework/config/KaptchaTextCreator.java | 76 + .../snow/framework/config/MyBatisConfig.java | 108 + .../framework/config/ResourcesConfig.java | 59 + .../snow/framework/config/ShiroConfig.java | 403 + .../config/properties/DruidProperties.java | 77 + .../datasource/DynamicDataSource.java | 27 + .../interceptor/RepeatSubmitInterceptor.java | 55 + .../impl/SameUrlDataInterceptor.java | 94 + .../snow/framework/manager/AsyncManager.java | 55 + .../framework/manager/ShutdownManager.java | 87 + .../manager/factory/AsyncFactory.java | 137 + .../snow/framework/shiro/realm/UserRealm.java | 141 + .../shiro/service/SysLoginService.java | 136 + .../shiro/service/SysPasswordService.java | 90 + .../shiro/service/SysRegisterService.java | 80 + .../shiro/service/SysShiroService.java | 62 + .../shiro/session/OnlineSession.java | 148 + .../shiro/session/OnlineSessionDAO.java | 118 + .../shiro/session/OnlineSessionFactory.java | 43 + .../shiro/web/filter/LogoutFilter.java | 102 + .../filter/captcha/CaptchaValidateFilter.java | 79 + .../filter/kickout/KickoutSessionFilter.java | 186 + .../filter/online/OnlineSessionFilter.java | 97 + .../filter/sync/SyncOnlineSessionFilter.java | 37 + .../web/session/OnlineWebSessionManager.java | 170 + .../SpringSessionValidationScheduler.java | 131 + .../com/snow/framework/util/LogUtils.java | 136 + .../com/snow/framework/util/ShiroUtils.java | 96 + .../com/snow/framework/web/domain/Server.java | 241 + .../snow/framework/web/domain/server/Cpu.java | 101 + .../snow/framework/web/domain/server/Jvm.java | 122 + .../snow/framework/web/domain/server/Mem.java | 61 + .../snow/framework/web/domain/server/Sys.java | 84 + .../framework/web/domain/server/SysFile.java | 114 + .../web/exception/GlobalExceptionHandler.java | 116 + .../framework/web/service/ConfigService.java | 28 + .../framework/web/service/DictService.java | 46 + .../web/service/PermissionService.java | 262 + snow-generator/pom.xml | 34 + .../com/snow/generator/config/GenConfig.java | 73 + .../generator/controller/GenController.java | 241 + .../com/snow/generator/domain/GenTable.java | 372 + .../snow/generator/domain/GenTableColumn.java | 373 + .../mapper/GenTableColumnMapper.java | 52 + .../snow/generator/mapper/GenTableMapper.java | 83 + .../service/IGenTableColumnService.java | 44 + .../generator/service/IGenTableService.java | 115 + .../impl/GenTableColumnServiceImpl.java | 70 + .../service/impl/GenTableServiceImpl.java | 467 + .../com/snow/generator/util/GenUtils.java | 263 + .../generator/util/VelocityInitializer.java | 35 + .../snow/generator/util/VelocityUtils.java | 384 + .../src/main/resources/generator.yml | 11 + .../mapper/generator/GenTableColumnMapper.xml | 120 + .../mapper/generator/GenTableMapper.xml | 189 + .../resources/templates/tool/gen/edit.html | 604 ++ .../resources/templates/tool/gen/gen.html | 197 + .../templates/tool/gen/importTable.html | 101 + .../src/main/resources/vm/html/add.html.vm | 317 + .../src/main/resources/vm/html/edit.html.vm | 324 + .../main/resources/vm/html/list-tree.html.vm | 151 + .../src/main/resources/vm/html/list.html.vm | 149 + .../src/main/resources/vm/html/tree.html.vm | 51 + .../main/resources/vm/java/controller.java.vm | 200 + .../src/main/resources/vm/java/domain.java.vm | 100 + .../src/main/resources/vm/java/mapper.java.vm | 91 + .../main/resources/vm/java/service.java.vm | 73 + .../resources/vm/java/serviceImpl.java.vm | 197 + .../main/resources/vm/java/sub-domain.java.vm | 72 + .../src/main/resources/vm/sql/sql.vm | 22 + .../src/main/resources/vm/xml/mapper.xml.vm | 147 + snow-quartz/pom.xml | 41 + .../snow/quartz/config/ScheduleConfig.java | 57 + .../quartz/controller/SysJobController.java | 174 + .../controller/SysJobLogController.java | 103 + .../java/com/snow/quartz/domain/SysJob.java | 169 + .../com/snow/quartz/domain/SysJobLog.java | 155 + .../snow/quartz/mapper/SysJobLogMapper.java | 64 + .../com/snow/quartz/mapper/SysJobMapper.java | 67 + .../quartz/service/ISysJobLogService.java | 56 + .../snow/quartz/service/ISysJobService.java | 102 + .../service/impl/SysJobLogServiceImpl.java | 88 + .../service/impl/SysJobServiceImpl.java | 256 + .../java/com/snow/quartz/task/RyTask.java | 28 + .../snow/quartz/util/AbstractQuartzJob.java | 107 + .../java/com/snow/quartz/util/CronUtils.java | 63 + .../com/snow/quartz/util/JobInvokeUtil.java | 182 + .../QuartzDisallowConcurrentExecution.java | 21 + .../snow/quartz/util/QuartzJobExecution.java | 19 + .../com/snow/quartz/util/ScheduleUtils.java | 113 + .../mapper/quartz/SysJobLogMapper.xml | 93 + .../resources/mapper/quartz/SysJobMapper.xml | 111 + .../resources/templates/monitor/job/add.html | 109 + .../templates/monitor/job/detail.html | 99 + .../resources/templates/monitor/job/edit.html | 111 + .../resources/templates/monitor/job/job.html | 181 + .../templates/monitor/job/jobLog.html | 135 + snow-system/pom.xml | 29 + .../com/snow/system/domain/SysConfig.java | 110 + .../java/com/snow/system/domain/SysDept.java | 185 + .../com/snow/system/domain/SysDictData.java | 176 + .../com/snow/system/domain/SysDictType.java | 93 + .../com/snow/system/domain/SysLogininfor.java | 159 + .../java/com/snow/system/domain/SysMenu.java | 201 + .../com/snow/system/domain/SysNotice.java | 99 + .../com/snow/system/domain/SysOperLog.java | 277 + .../java/com/snow/system/domain/SysPost.java | 122 + .../java/com/snow/system/domain/SysRole.java | 197 + .../com/snow/system/domain/SysRoleDept.java | 46 + .../com/snow/system/domain/SysRoleMenu.java | 46 + .../java/com/snow/system/domain/SysUser.java | 366 + .../com/snow/system/domain/SysUserOnline.java | 177 + .../com/snow/system/domain/SysUserPost.java | 46 + .../com/snow/system/domain/SysUserRole.java | 46 + .../snow/system/mapper/SysConfigMapper.java | 60 + .../com/snow/system/mapper/SysDeptMapper.java | 118 + .../snow/system/mapper/SysDictDataMapper.java | 95 + .../snow/system/mapper/SysDictTypeMapper.java | 83 + .../system/mapper/SysLogininforMapper.java | 42 + .../com/snow/system/mapper/SysMenuMapper.java | 124 + .../snow/system/mapper/SysNoticeMapper.java | 52 + .../snow/system/mapper/SysOperLogMapper.java | 48 + .../com/snow/system/mapper/SysPostMapper.java | 83 + .../snow/system/mapper/SysRoleDeptMapper.java | 44 + .../com/snow/system/mapper/SysRoleMapper.java | 84 + .../snow/system/mapper/SysRoleMenuMapper.java | 44 + .../com/snow/system/mapper/SysUserMapper.java | 124 + .../system/mapper/SysUserOnlineMapper.java | 52 + .../snow/system/mapper/SysUserPostMapper.java | 44 + .../snow/system/mapper/SysUserRoleMapper.java | 71 + .../system/service/ISysConfigService.java | 73 + .../snow/system/service/ISysDeptService.java | 110 + .../system/service/ISysDictDataService.java | 61 + .../system/service/ISysDictTypeService.java | 99 + .../system/service/ISysLogininforService.java | 40 + .../snow/system/service/ISysMenuService.java | 131 + .../system/service/ISysNoticeService.java | 52 + .../system/service/ISysOperLogService.java | 48 + .../snow/system/service/ISysPostService.java | 92 + .../snow/system/service/ISysRoleService.java | 159 + .../system/service/ISysUserOnlineService.java | 67 + .../snow/system/service/ISysUserService.java | 207 + .../service/impl/SysConfigServiceImpl.java | 191 + .../service/impl/SysDeptServiceImpl.java | 312 + .../service/impl/SysDictDataServiceImpl.java | 111 + .../service/impl/SysDictTypeServiceImpl.java | 242 + .../impl/SysLogininforServiceImpl.java | 66 + .../service/impl/SysMenuServiceImpl.java | 396 + .../service/impl/SysNoticeServiceImpl.java | 82 + .../service/impl/SysOperLogServiceImpl.java | 77 + .../service/impl/SysPostServiceImpl.java | 181 + .../service/impl/SysRoleServiceImpl.java | 383 + .../impl/SysUserOnlineServiceImpl.java | 115 + .../service/impl/SysUserServiceImpl.java | 521 ++ .../java/com/snow/system/utils/DictUtils.java | 183 + .../mapper/system/SysConfigMapper.xml | 108 + .../resources/mapper/system/SysDeptMapper.xml | 158 + .../mapper/system/SysDictDataMapper.xml | 123 + .../mapper/system/SysDictTypeMapper.xml | 105 + .../mapper/system/SysLogininforMapper.xml | 56 + .../resources/mapper/system/SysMenuMapper.xml | 180 + .../mapper/system/SysNoticeMapper.xml | 85 + .../mapper/system/SysOperLogMapper.xml | 82 + .../resources/mapper/system/SysPostMapper.xml | 110 + .../mapper/system/SysRoleDeptMapper.xml | 34 + .../resources/mapper/system/SysRoleMapper.xml | 131 + .../mapper/system/SysRoleMenuMapper.xml | 34 + .../resources/mapper/system/SysUserMapper.xml | 223 + .../mapper/system/SysUserOnlineMapper.xml | 57 + .../mapper/system/SysUserPostMapper.xml | 34 + .../mapper/system/SysUserRoleMapper.xml | 48 + sql/quartz.sql | 170 + sql/ruoyi.html | 2890 ++++++ sql/ruoyi.pdm | 4851 ++++++++++ sql/ry_20200708.sql | 703 ++ 636 files changed, 157451 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 bin/clean.bat create mode 100644 bin/package.bat create mode 100644 bin/run.bat create mode 100644 doc/若依环境使用手册.docx create mode 100644 pom.xml create mode 100644 ry.sh create mode 100644 snow-admin/pom.xml create mode 100644 snow-admin/src/main/java/com/snow/RuoYiApplication.java create mode 100644 snow-admin/src/main/java/com/snow/RuoYiServletInitializer.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/common/CommonController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/controller/DemoDialogController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/controller/DemoFormController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/controller/DemoIconController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/controller/DemoOperateController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/controller/DemoReportController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/controller/DemoTableController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/domain/CustomerModel.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/domain/GoodsModel.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/demo/domain/UserOperateModel.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/monitor/DruidController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/monitor/ServerController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/monitor/SysLogininforController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/monitor/SysOperlogController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/monitor/SysUserOnlineController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysCaptchaController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysConfigController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysDeptController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysDictDataController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysDictTypeController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysIndexController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysLoginController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysMenuController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysNoticeController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysPostController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysProfileController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysRegisterController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysRoleController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/system/SysUserController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/tool/BuildController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/tool/SwaggerController.java create mode 100644 snow-admin/src/main/java/com/snow/web/controller/tool/TestController.java create mode 100644 snow-admin/src/main/java/com/snow/web/core/config/SwaggerConfig.java create mode 100644 snow-admin/src/main/resources/application-druid.yml create mode 100644 snow-admin/src/main/resources/application.yml create mode 100644 snow-admin/src/main/resources/banner.txt create mode 100644 snow-admin/src/main/resources/ehcache/ehcache-shiro.xml create mode 100644 snow-admin/src/main/resources/logback.xml create mode 100644 snow-admin/src/main/resources/mybatis/mybatis-config.xml create mode 100644 snow-admin/src/main/resources/static/ajax/libs/beautifyhtml/beautifyhtml.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/blockUI/jquery.blockUI.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/fileinput.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading-sm.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-fileinput/loading.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-select/bootstrap-select.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/bootstrap-table.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/auto-refresh/bootstrap-table-auto-refresh.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/columns/bootstrap-table-fixed-columns.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-editable.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/bootstrap-table-editable.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/clear.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/editable/loading.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/export/tableExport.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/print/bootstrap-table-print.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder/bootstrap-table-reorder.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/extensions/reorder/jquery.tablednd.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/bootstrap-treetable/bootstrap-treetable.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/cropper/cropper.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/cropper/cropper.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/cropper/cropper.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/cxselect/jquery.cxselect.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/datapicker/bootstrap-datetimepicker.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/duallistbox/bootstrap-duallistbox.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/flot/curvedLines.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.pie.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.resize.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.spline.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.symbol.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/flot/jquery.flot.tooltip.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/fullscreen/jquery.fullscreen.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/iCheck/custom.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/iCheck/green-login.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/iCheck/green.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/iCheck/green@2x.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/iCheck/icheck.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jasny/jasny-bootstrap.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-layout/jquery.layout-latest.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-layout/jquery.layout-latest.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_close.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_open.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/2.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/3.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/4.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/5.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/6.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/7.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/8.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/9.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/line_conn.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/loading.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/zTreeStyle.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/loading.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/line_conn.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/loading.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/zTreeStyle.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.core-3.5.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.excheck-3.5.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exedit-3.5.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.exhide-3.5.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jquery-ztree/3.5/log v3.x.txt create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/jsonview/jquery.jsonview.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/layer.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/default/icon-ext.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/default/icon.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/default/layer.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/default/loading-0.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/default/loading-1.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/default/loading-2.gif create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/moon/default.png create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layer/theme/moon/style.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/font/iconfont.eot create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/font/iconfont.svg create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/font/iconfont.ttf create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/font/iconfont.woff create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layui/css/modules/laydate/default/laydate.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layui/lay/modules/laydate.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/layui/layui.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/report/echarts/echarts-all.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/report/peity/jquery.peity.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/report/sparkline/jquery.sparkline.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/select2/select2-bootstrap.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/select2/select2.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/select2/select2.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/select2/select2.min.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/select2/select2.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/staps/jquery.steps.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/staps/jquery.steps.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/staps/jquery.steps.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/suggest/bootstrap-suggest.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/font/summernote.eot create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/font/summernote.ttf create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/font/summernote.woff create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/summernote-bs3.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/summernote-zh-CN.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/summernote.css create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/summernote.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/summernote/summernote.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/typeahead/bootstrap3-typeahead.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/typeahead/bootstrap3-typeahead.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/validate/additional-methods.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.extend.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/validate/jquery.validate.min.js create mode 100644 snow-admin/src/main/resources/static/ajax/libs/validate/messages_zh.min.js create mode 100644 snow-admin/src/main/resources/static/css/animate.css create mode 100644 snow-admin/src/main/resources/static/css/bootstrap.min.css create mode 100644 snow-admin/src/main/resources/static/css/font-awesome.min.css create mode 100644 snow-admin/src/main/resources/static/css/jquery.contextMenu.min.css create mode 100644 snow-admin/src/main/resources/static/css/login.css create mode 100644 snow-admin/src/main/resources/static/css/login.min.css create mode 100644 snow-admin/src/main/resources/static/css/main/animate.min.css create mode 100644 snow-admin/src/main/resources/static/css/main/bootstrap.min14ed.css create mode 100644 snow-admin/src/main/resources/static/css/main/font-awesome.min93e3.css create mode 100644 snow-admin/src/main/resources/static/css/main/style.min862f.css create mode 100644 snow-admin/src/main/resources/static/css/patterns/header-profile-skin-blue.png create mode 100644 snow-admin/src/main/resources/static/css/patterns/header-profile-skin-yellow.png create mode 100644 snow-admin/src/main/resources/static/css/patterns/header-profile.png create mode 100644 snow-admin/src/main/resources/static/css/patterns/shattered.png create mode 100644 snow-admin/src/main/resources/static/css/skins.css create mode 100644 snow-admin/src/main/resources/static/css/style.css create mode 100644 snow-admin/src/main/resources/static/favicon.ico create mode 100644 snow-admin/src/main/resources/static/file/rml.txt create mode 100644 snow-admin/src/main/resources/static/fonts/FontAwesome.otf create mode 100644 snow-admin/src/main/resources/static/fonts/Simple-Line-Icons.woff2 create mode 100644 snow-admin/src/main/resources/static/fonts/fontawesome-webfont.eot create mode 100644 snow-admin/src/main/resources/static/fonts/fontawesome-webfont.svg create mode 100644 snow-admin/src/main/resources/static/fonts/fontawesome-webfont.ttf create mode 100644 snow-admin/src/main/resources/static/fonts/fontawesome-webfont.woff create mode 100644 snow-admin/src/main/resources/static/fonts/fontawesome-webfont.woff2 create mode 100644 snow-admin/src/main/resources/static/fonts/glyphicons-halflings-regular.eot create mode 100644 snow-admin/src/main/resources/static/fonts/glyphicons-halflings-regular.svg create mode 100644 snow-admin/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf create mode 100644 snow-admin/src/main/resources/static/fonts/glyphicons-halflings-regular.woff create mode 100644 snow-admin/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 create mode 100644 snow-admin/src/main/resources/static/i18n/messages.properties create mode 100644 snow-admin/src/main/resources/static/img/blue.png create mode 100644 snow-admin/src/main/resources/static/img/loading-upload.gif create mode 100644 snow-admin/src/main/resources/static/img/loading.gif create mode 100644 snow-admin/src/main/resources/static/img/locked.png create mode 100644 snow-admin/src/main/resources/static/img/login-background.jpg create mode 100644 snow-admin/src/main/resources/static/img/pay.png create mode 100644 snow-admin/src/main/resources/static/img/profile.jpg create mode 100644 snow-admin/src/main/resources/static/img/progress.png create mode 100644 snow-admin/src/main/resources/static/img/qr_code.png create mode 100644 snow-admin/src/main/resources/static/img/user.png create mode 100644 snow-admin/src/main/resources/static/js/bootstrap.min.js create mode 100644 snow-admin/src/main/resources/static/js/jquery-ui-1.10.4.min.js create mode 100644 snow-admin/src/main/resources/static/js/jquery.contextMenu.min.js create mode 100644 snow-admin/src/main/resources/static/js/jquery.i18n.properties.min.js create mode 100644 snow-admin/src/main/resources/static/js/jquery.min.js create mode 100644 snow-admin/src/main/resources/static/js/jquery.tmpl.js create mode 100644 snow-admin/src/main/resources/static/js/plugins/metisMenu/jquery.metisMenu.js create mode 100644 snow-admin/src/main/resources/static/js/plugins/slimscroll/jquery.slimscroll.min.js create mode 100644 snow-admin/src/main/resources/static/ruoyi.png create mode 100644 snow-admin/src/main/resources/static/ruoyi/css/ry-ui.css create mode 100644 snow-admin/src/main/resources/static/ruoyi/index.js create mode 100644 snow-admin/src/main/resources/static/ruoyi/js/common.js create mode 100644 snow-admin/src/main/resources/static/ruoyi/js/ry-ui.js create mode 100644 snow-admin/src/main/resources/static/ruoyi/login.js create mode 100644 snow-admin/src/main/resources/static/ruoyi/register.js create mode 100644 snow-admin/src/main/resources/templates/demo/form/autocomplete.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/basic.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/button.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/cards.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/cxselect.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/datetime.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/duallistbox.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/grid.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/jasny.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/select.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/sortable.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/summernote.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/tabs_panels.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/timeline.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/upload.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/validate.html create mode 100644 snow-admin/src/main/resources/templates/demo/form/wizard.html create mode 100644 snow-admin/src/main/resources/templates/demo/icon/fontawesome.html create mode 100644 snow-admin/src/main/resources/templates/demo/icon/glyphicons.html create mode 100644 snow-admin/src/main/resources/templates/demo/modal/dialog.html create mode 100644 snow-admin/src/main/resources/templates/demo/modal/form.html create mode 100644 snow-admin/src/main/resources/templates/demo/modal/layer.html create mode 100644 snow-admin/src/main/resources/templates/demo/modal/table.html create mode 100644 snow-admin/src/main/resources/templates/demo/modal/table/check.html create mode 100644 snow-admin/src/main/resources/templates/demo/modal/table/parent.html create mode 100644 snow-admin/src/main/resources/templates/demo/modal/table/radio.html create mode 100644 snow-admin/src/main/resources/templates/demo/operate/add.html create mode 100644 snow-admin/src/main/resources/templates/demo/operate/detail.html create mode 100644 snow-admin/src/main/resources/templates/demo/operate/edit.html create mode 100644 snow-admin/src/main/resources/templates/demo/operate/other.html create mode 100644 snow-admin/src/main/resources/templates/demo/operate/table.html create mode 100644 snow-admin/src/main/resources/templates/demo/report/echarts.html create mode 100644 snow-admin/src/main/resources/templates/demo/report/metrics.html create mode 100644 snow-admin/src/main/resources/templates/demo/report/peity.html create mode 100644 snow-admin/src/main/resources/templates/demo/report/sparkline.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/button.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/child.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/curd.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/data.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/detail.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/editable.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/event.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/export.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/fixedColumns.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/footer.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/groupHeader.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/image.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/multi.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/other.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/pageGo.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/params.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/print.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/refresh.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/remember.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/reorder.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/search.html create mode 100644 snow-admin/src/main/resources/templates/demo/table/subdata.html create mode 100644 snow-admin/src/main/resources/templates/error/404.html create mode 100644 snow-admin/src/main/resources/templates/error/500.html create mode 100644 snow-admin/src/main/resources/templates/error/business.html create mode 100644 snow-admin/src/main/resources/templates/error/unauth.html create mode 100644 snow-admin/src/main/resources/templates/include.html create mode 100644 snow-admin/src/main/resources/templates/index.html create mode 100644 snow-admin/src/main/resources/templates/login.html create mode 100644 snow-admin/src/main/resources/templates/main.html create mode 100644 snow-admin/src/main/resources/templates/main_v1.html create mode 100644 snow-admin/src/main/resources/templates/monitor/logininfor/logininfor.html create mode 100644 snow-admin/src/main/resources/templates/monitor/online/online.html create mode 100644 snow-admin/src/main/resources/templates/monitor/operlog/detail.html create mode 100644 snow-admin/src/main/resources/templates/monitor/operlog/operlog.html create mode 100644 snow-admin/src/main/resources/templates/monitor/server/server.html create mode 100644 snow-admin/src/main/resources/templates/register.html create mode 100644 snow-admin/src/main/resources/templates/skin.html create mode 100644 snow-admin/src/main/resources/templates/system/config/add.html create mode 100644 snow-admin/src/main/resources/templates/system/config/config.html create mode 100644 snow-admin/src/main/resources/templates/system/config/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/dept/add.html create mode 100644 snow-admin/src/main/resources/templates/system/dept/dept.html create mode 100644 snow-admin/src/main/resources/templates/system/dept/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/dept/tree.html create mode 100644 snow-admin/src/main/resources/templates/system/dict/data/add.html create mode 100644 snow-admin/src/main/resources/templates/system/dict/data/data.html create mode 100644 snow-admin/src/main/resources/templates/system/dict/data/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/dict/type/add.html create mode 100644 snow-admin/src/main/resources/templates/system/dict/type/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/dict/type/tree.html create mode 100644 snow-admin/src/main/resources/templates/system/dict/type/type.html create mode 100644 snow-admin/src/main/resources/templates/system/menu/add.html create mode 100644 snow-admin/src/main/resources/templates/system/menu/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/menu/icon.html create mode 100644 snow-admin/src/main/resources/templates/system/menu/menu.html create mode 100644 snow-admin/src/main/resources/templates/system/menu/tree.html create mode 100644 snow-admin/src/main/resources/templates/system/notice/add.html create mode 100644 snow-admin/src/main/resources/templates/system/notice/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/notice/notice.html create mode 100644 snow-admin/src/main/resources/templates/system/post/add.html create mode 100644 snow-admin/src/main/resources/templates/system/post/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/post/post.html create mode 100644 snow-admin/src/main/resources/templates/system/role/add.html create mode 100644 snow-admin/src/main/resources/templates/system/role/authUser.html create mode 100644 snow-admin/src/main/resources/templates/system/role/dataScope.html create mode 100644 snow-admin/src/main/resources/templates/system/role/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/role/role.html create mode 100644 snow-admin/src/main/resources/templates/system/role/selectUser.html create mode 100644 snow-admin/src/main/resources/templates/system/user/add.html create mode 100644 snow-admin/src/main/resources/templates/system/user/authRole.html create mode 100644 snow-admin/src/main/resources/templates/system/user/edit.html create mode 100644 snow-admin/src/main/resources/templates/system/user/profile/avatar.html create mode 100644 snow-admin/src/main/resources/templates/system/user/profile/profile.html create mode 100644 snow-admin/src/main/resources/templates/system/user/profile/resetPwd.html create mode 100644 snow-admin/src/main/resources/templates/system/user/resetPwd.html create mode 100644 snow-admin/src/main/resources/templates/system/user/user.html create mode 100644 snow-admin/src/main/resources/templates/tool/build/build.html create mode 100644 snow-common/pom.xml create mode 100644 snow-common/src/main/java/com/snow/common/annotation/DataScope.java create mode 100644 snow-common/src/main/java/com/snow/common/annotation/DataSource.java create mode 100644 snow-common/src/main/java/com/snow/common/annotation/Excel.java create mode 100644 snow-common/src/main/java/com/snow/common/annotation/Excels.java create mode 100644 snow-common/src/main/java/com/snow/common/annotation/Log.java create mode 100644 snow-common/src/main/java/com/snow/common/annotation/RepeatSubmit.java create mode 100644 snow-common/src/main/java/com/snow/common/config/Global.java create mode 100644 snow-common/src/main/java/com/snow/common/config/ServerConfig.java create mode 100644 snow-common/src/main/java/com/snow/common/config/datasource/DynamicDataSourceContextHolder.java create mode 100644 snow-common/src/main/java/com/snow/common/config/thread/ThreadPoolConfig.java create mode 100644 snow-common/src/main/java/com/snow/common/constant/Constants.java create mode 100644 snow-common/src/main/java/com/snow/common/constant/GenConstants.java create mode 100644 snow-common/src/main/java/com/snow/common/constant/PermissionConstants.java create mode 100644 snow-common/src/main/java/com/snow/common/constant/ScheduleConstants.java create mode 100644 snow-common/src/main/java/com/snow/common/constant/ShiroConstants.java create mode 100644 snow-common/src/main/java/com/snow/common/constant/UserConstants.java create mode 100644 snow-common/src/main/java/com/snow/common/core/controller/BaseController.java create mode 100644 snow-common/src/main/java/com/snow/common/core/domain/AjaxResult.java create mode 100644 snow-common/src/main/java/com/snow/common/core/domain/BaseEntity.java create mode 100644 snow-common/src/main/java/com/snow/common/core/domain/CxSelect.java create mode 100644 snow-common/src/main/java/com/snow/common/core/domain/TreeEntity.java create mode 100644 snow-common/src/main/java/com/snow/common/core/domain/Ztree.java create mode 100644 snow-common/src/main/java/com/snow/common/core/page/PageDomain.java create mode 100644 snow-common/src/main/java/com/snow/common/core/page/TableDataInfo.java create mode 100644 snow-common/src/main/java/com/snow/common/core/page/TableSupport.java create mode 100644 snow-common/src/main/java/com/snow/common/core/text/CharsetKit.java create mode 100644 snow-common/src/main/java/com/snow/common/core/text/Convert.java create mode 100644 snow-common/src/main/java/com/snow/common/core/text/StrFormatter.java create mode 100644 snow-common/src/main/java/com/snow/common/enums/BusinessStatus.java create mode 100644 snow-common/src/main/java/com/snow/common/enums/BusinessType.java create mode 100644 snow-common/src/main/java/com/snow/common/enums/DataSourceType.java create mode 100644 snow-common/src/main/java/com/snow/common/enums/OnlineStatus.java create mode 100644 snow-common/src/main/java/com/snow/common/enums/OperatorType.java create mode 100644 snow-common/src/main/java/com/snow/common/enums/UserStatus.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/BusinessException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/DemoModeException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/UtilException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/base/BaseException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/file/FileException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/file/FileNameLengthLimitExceededException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/file/FileSizeLimitExceededException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/file/InvalidExtensionException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/job/TaskException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/CaptchaException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/RoleBlockedException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/UserBlockedException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/UserDeleteException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/UserException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/UserNotExistsException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/UserPasswordNotMatchException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/UserPasswordRetryLimitCountException.java create mode 100644 snow-common/src/main/java/com/snow/common/exception/user/UserPasswordRetryLimitExceedException.java create mode 100644 snow-common/src/main/java/com/snow/common/json/JSON.java create mode 100644 snow-common/src/main/java/com/snow/common/json/JSONObject.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/AddressUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/Arith.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/CacheUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/DateUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/ExceptionUtil.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/IpUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/MapDataUtil.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/MessageUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/ServletUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/StringUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/Threads.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/YamlUtil.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/bean/BeanUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/file/FileUploadUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/file/FileUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/file/MimeTypeUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/html/EscapeUtil.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/html/HTMLFilter.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/http/HttpUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/poi/ExcelUtil.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/reflect/ReflectUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/security/Md5Utils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/security/PermissionUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/spring/SpringUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/sql/SqlUtil.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/uuid/IdUtils.java create mode 100644 snow-common/src/main/java/com/snow/common/utils/uuid/UUID.java create mode 100644 snow-common/src/main/java/com/snow/common/xss/XssFilter.java create mode 100644 snow-common/src/main/java/com/snow/common/xss/XssHttpServletRequestWrapper.java create mode 100644 snow-dingtalk/pom.xml create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/common/BaseConstantUrl.java create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/common/BaseService.java create mode 100644 snow-dingtalk/src/main/java/com/snow/dingtalk/test.java create mode 100644 snow-framework/pom.xml create mode 100644 snow-framework/src/main/java/com/snow/framework/aspectj/DataScopeAspect.java create mode 100644 snow-framework/src/main/java/com/snow/framework/aspectj/DataSourceAspect.java create mode 100644 snow-framework/src/main/java/com/snow/framework/aspectj/LogAspect.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/ApplicationConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/CaptchaConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/DruidConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/FilterConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/I18nConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/KaptchaTextCreator.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/MyBatisConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/ResourcesConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/ShiroConfig.java create mode 100644 snow-framework/src/main/java/com/snow/framework/config/properties/DruidProperties.java create mode 100644 snow-framework/src/main/java/com/snow/framework/datasource/DynamicDataSource.java create mode 100644 snow-framework/src/main/java/com/snow/framework/interceptor/RepeatSubmitInterceptor.java create mode 100644 snow-framework/src/main/java/com/snow/framework/interceptor/impl/SameUrlDataInterceptor.java create mode 100644 snow-framework/src/main/java/com/snow/framework/manager/AsyncManager.java create mode 100644 snow-framework/src/main/java/com/snow/framework/manager/ShutdownManager.java create mode 100644 snow-framework/src/main/java/com/snow/framework/manager/factory/AsyncFactory.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/realm/UserRealm.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/service/SysLoginService.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/service/SysPasswordService.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/service/SysRegisterService.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/service/SysShiroService.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/session/OnlineSession.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/session/OnlineSessionDAO.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/session/OnlineSessionFactory.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/web/filter/LogoutFilter.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/web/filter/captcha/CaptchaValidateFilter.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/web/filter/kickout/KickoutSessionFilter.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/web/filter/online/OnlineSessionFilter.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/web/session/OnlineWebSessionManager.java create mode 100644 snow-framework/src/main/java/com/snow/framework/shiro/web/session/SpringSessionValidationScheduler.java create mode 100644 snow-framework/src/main/java/com/snow/framework/util/LogUtils.java create mode 100644 snow-framework/src/main/java/com/snow/framework/util/ShiroUtils.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/domain/Server.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/domain/server/Cpu.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/domain/server/Jvm.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/domain/server/Mem.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/domain/server/Sys.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/domain/server/SysFile.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/exception/GlobalExceptionHandler.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/service/ConfigService.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/service/DictService.java create mode 100644 snow-framework/src/main/java/com/snow/framework/web/service/PermissionService.java create mode 100644 snow-generator/pom.xml create mode 100644 snow-generator/src/main/java/com/snow/generator/config/GenConfig.java create mode 100644 snow-generator/src/main/java/com/snow/generator/controller/GenController.java create mode 100644 snow-generator/src/main/java/com/snow/generator/domain/GenTable.java create mode 100644 snow-generator/src/main/java/com/snow/generator/domain/GenTableColumn.java create mode 100644 snow-generator/src/main/java/com/snow/generator/mapper/GenTableColumnMapper.java create mode 100644 snow-generator/src/main/java/com/snow/generator/mapper/GenTableMapper.java create mode 100644 snow-generator/src/main/java/com/snow/generator/service/IGenTableColumnService.java create mode 100644 snow-generator/src/main/java/com/snow/generator/service/IGenTableService.java create mode 100644 snow-generator/src/main/java/com/snow/generator/service/impl/GenTableColumnServiceImpl.java create mode 100644 snow-generator/src/main/java/com/snow/generator/service/impl/GenTableServiceImpl.java create mode 100644 snow-generator/src/main/java/com/snow/generator/util/GenUtils.java create mode 100644 snow-generator/src/main/java/com/snow/generator/util/VelocityInitializer.java create mode 100644 snow-generator/src/main/java/com/snow/generator/util/VelocityUtils.java create mode 100644 snow-generator/src/main/resources/generator.yml create mode 100644 snow-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml create mode 100644 snow-generator/src/main/resources/mapper/generator/GenTableMapper.xml create mode 100644 snow-generator/src/main/resources/templates/tool/gen/edit.html create mode 100644 snow-generator/src/main/resources/templates/tool/gen/gen.html create mode 100644 snow-generator/src/main/resources/templates/tool/gen/importTable.html create mode 100644 snow-generator/src/main/resources/vm/html/add.html.vm create mode 100644 snow-generator/src/main/resources/vm/html/edit.html.vm create mode 100644 snow-generator/src/main/resources/vm/html/list-tree.html.vm create mode 100644 snow-generator/src/main/resources/vm/html/list.html.vm create mode 100644 snow-generator/src/main/resources/vm/html/tree.html.vm create mode 100644 snow-generator/src/main/resources/vm/java/controller.java.vm create mode 100644 snow-generator/src/main/resources/vm/java/domain.java.vm create mode 100644 snow-generator/src/main/resources/vm/java/mapper.java.vm create mode 100644 snow-generator/src/main/resources/vm/java/service.java.vm create mode 100644 snow-generator/src/main/resources/vm/java/serviceImpl.java.vm create mode 100644 snow-generator/src/main/resources/vm/java/sub-domain.java.vm create mode 100644 snow-generator/src/main/resources/vm/sql/sql.vm create mode 100644 snow-generator/src/main/resources/vm/xml/mapper.xml.vm create mode 100644 snow-quartz/pom.xml create mode 100644 snow-quartz/src/main/java/com/snow/quartz/config/ScheduleConfig.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/controller/SysJobController.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/controller/SysJobLogController.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/domain/SysJob.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/domain/SysJobLog.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/mapper/SysJobLogMapper.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/mapper/SysJobMapper.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/service/ISysJobLogService.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/service/ISysJobService.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/service/impl/SysJobLogServiceImpl.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/service/impl/SysJobServiceImpl.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/task/RyTask.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/util/AbstractQuartzJob.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/util/CronUtils.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/util/JobInvokeUtil.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/util/QuartzDisallowConcurrentExecution.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/util/QuartzJobExecution.java create mode 100644 snow-quartz/src/main/java/com/snow/quartz/util/ScheduleUtils.java create mode 100644 snow-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml create mode 100644 snow-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml create mode 100644 snow-quartz/src/main/resources/templates/monitor/job/add.html create mode 100644 snow-quartz/src/main/resources/templates/monitor/job/detail.html create mode 100644 snow-quartz/src/main/resources/templates/monitor/job/edit.html create mode 100644 snow-quartz/src/main/resources/templates/monitor/job/job.html create mode 100644 snow-quartz/src/main/resources/templates/monitor/job/jobLog.html create mode 100644 snow-system/pom.xml create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysConfig.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysDept.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysDictData.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysDictType.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysLogininfor.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysMenu.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysNotice.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysOperLog.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysPost.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysRole.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysRoleDept.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysRoleMenu.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysUser.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysUserOnline.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysUserPost.java create mode 100644 snow-system/src/main/java/com/snow/system/domain/SysUserRole.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysConfigMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysDeptMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysDictDataMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysDictTypeMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysLogininforMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysMenuMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysNoticeMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysOperLogMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysPostMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysRoleDeptMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysRoleMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysRoleMenuMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysUserMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysUserOnlineMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysUserPostMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/mapper/SysUserRoleMapper.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysConfigService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysDeptService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysDictDataService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysDictTypeService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysLogininforService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysMenuService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysNoticeService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysOperLogService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysPostService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysRoleService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysUserOnlineService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/ISysUserService.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysConfigServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysDeptServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysDictDataServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysDictTypeServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysLogininforServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysMenuServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysNoticeServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysOperLogServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysPostServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysRoleServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysUserOnlineServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/service/impl/SysUserServiceImpl.java create mode 100644 snow-system/src/main/java/com/snow/system/utils/DictUtils.java create mode 100644 snow-system/src/main/resources/mapper/system/SysConfigMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysDeptMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysDictDataMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysDictTypeMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysLogininforMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysMenuMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysNoticeMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysOperLogMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysPostMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysRoleDeptMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysRoleMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysRoleMenuMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysUserMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysUserOnlineMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysUserPostMapper.xml create mode 100644 snow-system/src/main/resources/mapper/system/SysUserRoleMapper.xml create mode 100644 sql/quartz.sql create mode 100644 sql/ruoyi.html create mode 100644 sql/ruoyi.pdm create mode 100644 sql/ry_20200708.sql diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd446f4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +###################################################################### +# Others +*.log +*.xml.versionsBackup + +!*/build/*.java +!*/build/*.html +!*/build/*.xml \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8564f29 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 RuoYi + +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 0000000..94a3d79 --- /dev/null +++ b/README.md @@ -0,0 +1,87 @@ +## 平台简介 + +一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 + +性别男,若依是给还没有出生女儿取的名字(寓意:你若不离不弃,我必生死相依) + +* 感谢 [hplus](https://gitee.com/hplus_admin/hplus) 后台主题 UI 框架。 +* 前后端分离版本,请移步[RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue),微服务版本,请移步[RuoYi-Cloud](https://gitee.com/y_project/RuoYi-Cloud) +* 阿里云优惠券:[点我进入](https://www.aliyun.com/minisite/goods?userCode=brki8iof&share_source=copy_link),腾讯云优惠券:[点我领取](https://cloud.tencent.com/redirect.php?redirect=1025&cps_key=198c8df2ed259157187173bc7f4f32fd&from=console) + +## 内置功能 + +1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 +2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 +3. 岗位管理:配置系统用户所属担任职务。 +4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 +5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 +6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 +7. 参数管理:对系统动态配置常用参数。 +8. 通知公告:系统通知公告信息发布维护。 +9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 +10. 登录日志:系统登录日志记录查询包含登录异常。 +11. 在线用户:当前系统中活跃用户状态监控。 +12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 +13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 +14. 系统接口:根据业务代码自动生成相关的api接口文档。 +15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 +16. 在线构建器:拖动表单元素生成相应的HTML代码。 +17. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 + +## 在线体验 + +- admin/admin123 +- 陆陆续续收到一些打赏,为了更好的体验已用于演示服务器升级。谢谢各位小伙伴。 + +演示地址:http://ruoyi.vip +文档地址:http://doc.ruoyi.vip + +## 演示图 + +
+ | + |
+ | + |
+ | + |
+ | + |
+ | + |
+ | + |
+ | + |
+ | + |
+ | + |
+ | + |
bUT&G08*J%A)S>pk-8eIC@O0sPQNbVCxAQo zwnm)Rhlr2BWjd)1?tg3?+MLm`6@p z9{6NkQ!m=f?5SwmKv#D(eix-l$xszgrStFmT7U$ruAz0KMzfSw4_(U$$C?rvX~!Al zPyG2rLSrOKi-GOhf@B!GfKP?`Lj}MF7TwBUgJgE433Mjrbp=GS*9zGY+a^dA^A(zL zK7zC cKD86pj@vvF1gZII?=$lpiSUul9t=)5 Ht9yk$Bb@>J>4z1UM5!w#|d?#%ec+ zYoeGJ@0#_RsI2u~V!#tcn^W$WFIpb3RlECQ9(5Zul1^A(>cI*w*VqO|tt-P5t=x zE-mzOM6%&@aSz^MW!BD^RT#Mt!rOOw3a>WOuM%7(l?^J03B@epk5~^4JQcBFq+gwN zBr&6&W|ZpsE_QsZelHIO$L+U=<5xpw$FtDwe9o?utxv4X{?$f=Za#)=jM hq1N=%7U4vdY}K~-;QixFlGIx@r9r2|bRRF&w-%*;M~ zRfWl}ij|9sjFhZ~HzkD&0ID@m5)qc7Je5y=tdI!BD2X9A%Nm<|XqtOBbCCvoGkJtd zESX0cd7ErcY7^!y?eXfd@7ey>n KjctGoU7hO9&P+YaD`oDZlhbKu68 zX3tCQx39RJfs+1QKrv<)7d!Uq*THX@&vtHhcG%l`Ov}G8I_OUn{A+x;N<`O>2Bwn? zn&Gs6>FKa^8ap2B378GV7*23(bS-asnb_!``ZyzAApgOUUi+%s5jJ5_83?fwwi+7U zHldnSfUDq5L&O;l2`@gFQPze_jGowd2MXSOQ{LZ=8V9?~w4|Ta_RcWmp?0!gB&;Rp zf8ku2`Za$Dq9tv83BlJ{N+(GrOkI3XIG^|}F4gZf{T2hFzBbrBP7w{QHdIj--K?H^ zb%^q|Cb=$9T+EJUYmoxY$1~IgQzRX1g>O|odovV&3d*T0`;|k4;Ai>g&o}f+Z*V$1 zch8lZ8@W^52MMmE%Z~Ak&Fu>~exE3=1r53)c^SdEz{9w$;Jv~|MZ;x6d8+4gTfKX9 z0Va}1KXnSY+YHCX_;v;a_eVH =w4Z&lAxIa--|J{6LL(5CI?KVYG8SV zRB-r*zskWxhdR8QKQRBMhZiYT)^S;bIIv^#m>p41S9nPv1l*py1dRh%$iUC;ypwR^ zDY|oBX&$cK*^}=#(Q+%d|AS-8WrM -sS16>V2Y2T@r0wKf@2U!Xc5_E(v|V$^@|jyM2KEBW*y(J%#xfQ zzp@5RzoA4;s)Lu5@Fes&iBVnREXEKUXNuy4Ef2&`gGk<(fX$OLQ5jN5yb%VB^X#Ih zbA=o9iT*iNS*s =0%AeoJ(i6v0q8)2%J++_zNzG?{muUOcpfxX)gA~+ScwU7 z(bzSxFs+eK4vW!Ec?%v!gt=WmHooKugCFwq)r79^7yxOL#+S-bgn%PPfcMaCJ&SFr z{;SbkK*3L2jC>FpwXLL|GWN>~#}4ZLfhI2ZgPO%10R^XR#s7n;J)m_W3NWu2v><5f z_a13{Z!NNmyYcMM>Qu5#p9M-%wF}eN0!vAW(h #N-vcIE`7T`MedFHfFifBqXBFeneQ=SX#=UH z{HM|9l{V&Mg##y8{tRqm_Gs?>HZX^aE$GoHLGaCa*zk*tJnUanrmsQ$u+zmaG2!UH zVkV&df%koLkCKItZwG2%U0(3$kZ~>mSQT3NxqSPq_&YLrnp^KbSP&lfo&A5m4{N#a zg9R5XH7I792x?LB^V=o$2C6F`wis_T^lhy%^L;OJiR2um@=}XKt6!%)(JTa8M9CD& z$9I79y4IhG#nhaGzqd$+!qgz0vhOe @872w^J0+qKb(L@U~3$n|MLe?d`+Jl_F3f09?C%~FLlPn^59n!>FLrA5yp<%!n^ zpc2Yz54#qZi#Mf3pC2Vh22G#bDa Ix3g4d>0yOEE4}wyhSgAQ2Vm^8flGcwtR+%bUN{!WY=&oM9{B_bo z+p!>k2&5t1S@H!5%y~{hBas!KBAuA|vbw~ftFZ@8PYMOm`3yMo@t8WCSIh0vdPkrk zV-Qj-;7txRmf69rB@fC|h=}zMf``={|FX_0xauj lksLB!Nmj-*B*fUrQfrUk(X z3=-$UZ*2>NKCNN;kQp-qp&0hg3IUY@C6bm!q>?TGg2$VZC
Fk6bijC;YoO2mpZ5kA?!_zqx1&Q$rI|C+2@zJH=|!b_Z+-o8Tk3 z5LhFX{3#py&4-9g!7yfs12-fP4OlZsi+dSJtR#z@PpAzOyiUOzWNqS6#UveNmwi5+ z7RuF?>c9DD?)C-?k}QUs5G&;zSO_t0xs=<=TOhwKm-B|GV`5BQr-~~*gRWcq=;?aC zuZ-l!b%^U~VK><|gQTsoxpK3r4^WwtrA)LiRaYcSD=Vm=5^qoSPJOVFBVJUCREJ^# z)#)|6jKSO;7Ado=JYc(_N~p~yMNTgpjozAVhXS@3sO>^fp5W?63&Ry5?ObKKh4upz zm lDdBrPFk~%0fQHtIp3@sN5MwrT5K35R9rCvNf$+B?Y zvWI+dvU-%P;z`{CcmO?%Fx?rbj3$7qZ--a<#b6}LgU+iC2*Tj-h5xOe{v|mm!rSYk zYlTOS4%grE@N8YPW|lu6VK3~hybY&uCF2Lk+;BsF?Pzfn4ImeHwVuR^Q$$r{-`q5J zAqG_B%OYG$d`mhJ33f?2k^aHe7ecdqeEy2`to_@gPs=jbL~IX#KfP~H%DcbiNzO@O zlQGkv`S1LAH02Jcr2=ARSLcf2zQ#&N7;z%`%VuEjHaB)|Kf?%$OA6w%0CgN%NX!Sl zSX34mjyG;vPdKV3B8ESM>==mpsT0Zk;!my7Cr}z)w*kv}OiV z5CoKf0NP3r#GJ^z0Yj87!f-p&gUcZGR}_v07Qelt9|;nul;Af`B6)Lgdb|%vG%`N! z42=ReP?bpB9H$g|SqC*j&J~^F**ROt1tJ=SF5YRoNHH{e?QjMj`ARB?reB?1fgQ4q z?kkh(GS8pdGsr0|W7S6s?MfIfZr%71ve=Q4We_z*3Zm-0y62IQMeWf(3caAOsF)>_ zg_4Hn*bP$1DQH9A;Wl{vX(T&|I@c0f#iAI87QvwDkrOdZ0yo-b(iL2m7l7ty(M~+k zKaX?EIEA 6fP?hj*2>9I+^H&ij&wqb@KL^j=6p;&%n->S&*52(yd> zrJ0kJ`UbNcA%&|Qx`<6ni-U&45Rr7+z|+)PaKO|N&7ds^7VBX2SRjA7lv$nh)#8DY z80yqXjc~v9hpVkl`ul&sUi15hJ`P21t`sTmdr3rB+HW%K8X$kXxo^2veIe8)J|h-* zPht(6!65ktaGpd*cEIM(+Xgso`x;Wb3&PA}4mD)Yexd6{r2oh;{zF?iR*al6@CS50 zVEzZ_F#ZEN7wXb>8*CU`=qI=k?I%`vDLnFVhY(HkMA3y|$%Pi|fV7IlLn-A6IhgC} zCk@XhuwL0uc%PC|4dlk)o&{B2hRWaj@7w&R$>!{-BHFdF3a&v#h unPZ||ayQez zyYcB5n9>$GlPixPyAQ$mxj)~kl5uIBV+A_cT$W8B>1u3GJZu`0)F)!75-m+t48=1m zhbk#VhK9LI?j2=__T*#LFxkOma_hauVeED*g;^GFuxwDJ)F-kM=gu7mA0A6FfxP;w zTalDjw0p_^z=@H16j`rvv0UIfQL%6=e4Vm92%^NVz-Ap&t*dl4Z|!L~L-Licr4+Wo z?<>y|3^X`fzIPKer(PVm$+B?PEr)*)vT`ijfS0s_^8|R4V0tQ4nv4WjUHhtTi^hz+ z2U$|@5qRPA4TSn;=aQo$yTadFR(NLUV1!MdUgI~ev2=0AzVI}nKf1;rn%xoe5Hs_8 z!V5FwgE}y@(@QTo#8k#~Yb;Csp@zh}EQEBzjg&W(XR#1B>^Vq>Bs1ye(UUuFCC uceTt&LtT`ZPH)ZOx2^=mXH|~YrARuD$_G%~@@-(!^juZK{v&;_S zr?-BBktSH0Ulh{{+_GmOHq!e&B%wGTU`XG8$L>G`4Rj9QESb4Ol?!juj-hhOLNVfk z28W}wq0|z|mW1gq_CZS{|EFRG@gLZ6KpOypHY0NH{0DY^U8!_(=cnQ|`~y2Rj-A8* zz|I#&qWDPP7&lwcP+%;Y1(MD>@ISCaDP Lb)4B1@klUZr~OH=(3#2otvb^>Tr!E$ryz)e!cOm?h+$|z6} Q z6$~G>oD`yt33>>ENiiEME^LV1C4+8-G`1bD`j`KNU?aKcT1qca5O3Hf><}}xDxu+Y zpqwK;*s-ht*qi_H;EW&}Z~M(DvVKkt6{lZB8)|_(;S8uX)y}@|?rDvV;+@2N$^QYO zQ;xfg?quv|n0Ai8TlsN%21`OsWP&9=UlP5>0&g}rU;?y|Fj3S6$YckFydf&OnyTnz z{3><#SE<423N{nvJd0}#itebXJe;=Wv!N1jHh08Ul6=+(h22fnDIFDS@~FrIYFkUw zKYDK8qP-nEitCu&1>-kWQCRMyVMSxBa+7J2nZvi!CyF-)-63sRU#Ksq$DKwZFW?*_ ze&`M3hBH?45gwPwpJ@k6GbO544Q4vSNYq;Q;)xWMn-vD3Aj;?7xwEYPJ*vNUfRM#l zX?@XTeMN4SZ+JH6iULSspj9EACEMMb6diBJ)7#%)=kX4Dp3U0cELJ-3mWr-5*laim zeYO6_x^@e{|FYiE5xJCU25aOB7TO!YzZvbN0bDhLAY8T6)0p-|7;?Wi`Lt&Hs{7rW zX!9+_D{BmWOY+MZGi7Z&@7r(@$+s9cZi|1n?5EogZ|m`jn^)3_zyZ@`d^qKv>cMyG z?)s YFrR{XByBS+H z$PvSQ?Uk3Ss;}y=s%5nb0_akfbj=eF+GRqTXw$!cEKhje_S~FL5Ns{d6bPBoxWZ+) zm!J5)PR^JzNTUGUOM^}E!lx!Ocr036d5kF+Yf^@#tT-8KG)iqbGjB4Q(v?VUw;y#n z#!_Q4m-5fZCec*5OIlr&vnDjb+R2nk7EaPs=G~+g`*`ew9&)g{r$O1n3Dz&wjZ97^ zRMAqvSeL;Fr4=w#zEp6m`lD&Rpr^E%ewEQMs~KxE0 xd~aloYmt$6Q;gOiMp(MCVWv2N5l?=?sOm zPmLv|+}Y3`ebydb911b|Nce3lI{o@RIr ;47Fr6#*mR7B^I`e;S7zFxd;+tzt&8t3*-w0FKP5d7R23aV%$E17)b`|Qu{)A zAaH|sqfOK5R}2<}$$wcB&oi448kfggEI14&9<$lV7#yMshNSAxOx4ZUP+>5<0(0=Y zU=z0}>Y0{g8&rWFBHP&v?FPpl!@SYl7+IK;q-Pn+L*`Q38S7&)Tma@x1=yDefNQK@ zzZZoq uO z37TgHs5CUQRmNkT)^V7e$cdwSH!u-Y%Wm`9hB=L~CAISiPTK=MErqon9UQlejnC?t zR;N015u;3-o%(bnL*)koAS8+)jBakV?Dogv5*iJKY+<@@$Hb#kSfZ&-HRN&Eg}hAJ zOcZ@ +XW7sOdSLIVntIQj@kWjCYr01$X53uOg}JYvEU##!;Caja77 z*Z?ygQb)*HNSO{USiU<;ni=fI=l=b9(95O;@d=227)ObxMyW-BgCIzco0czQoSu{H zZq7Nlq>!^f69&Bt2&b{nMG7cG8EMBM)fX+t8G0aM4(+t1k9UzV{7X|K($~a|cfJfH zrS%Fiw3Yc(xBpS_x~48p+$4dT&9G7m NbS0uDQkwXE|UuGEyik_nb|Jzbf`C@cGh6+pmnnT=!m(?4>f|PueH)n zPk_j=ilY}@p~&AVjUvNI_#3qUbW{L Mw^ppfZvbg(9F(V|z9L%XqItut4?E-Hh7#w`Ks?_DR0z3`T)I z 7u*PF)#5C7Z4Z3 zlOtU+IC=)XUJmq$of*q{8*RJpJotcJQGIQJc*ZKhUL-n178pa>FNFs7&0lx{fgk6G zzgevbr=7BGZ@!1Ndj8{vTt@%dRrp78+4GZd{{LiSW^eCe>h!PLxL9@FZcPBe_xFN- z-4m`2MCeddBt@g*R$-W5uhH*I)u+-`(Ee@rCHABwA_+YkYqz5uW@hgFj`uE Qn$O6J 2D#y$!*D*|DKiNn|B1^F4+} z%Tbah;ZfxowPU*sE6g*VV@hahSWS*NF~v_)fwBp$VlAbnqO?YbI}};$(gf;df{H)F zu%Z-{oi>vIv#_o{{h;pP197FeF>)hlDjQH(4?#W>8xU6dx*$0ww{Z5zZF8q;OovuO z2pIyfTB}Lf##s2G{V3ydb5}Y@+>~5BV=-jpKE7k=4+fx(f7NgR<#)Cy#g;%MXBYaO zpH~+B5yfZQOxEH&BJ}!6k+z)Nq(}}c!(TNl_0ZA7cbT8x0UwqgoM66j){4AN>px`l z3TU#HlApO)y-|BdPx#Uo7?4I-{Ag0Z+7Zjkv1Eb#iAQmsLm(?Lo~56-2^Cp7y4pV3 zh;uCmo!U{S@?;8c<8K=xJ%YGyR&haumvK=c3z(6-tl?A|$OW817xHnft8T{f*M&+- zh6vqkt~(1ZU|Ol6{P8P2dJsB$Wx+cstn+~Fy1+27)I7%9Z^H@AcI0nuwdm;&gCG{D z8%!m;ww|ng88ixE@1wLXur7>5YO8};k4~OVZD3^)rvd)JxW!E5p~3S9_gY`#X2aAP zzsB2zHC?H`dwDECYj3di#BnSe)iTkjZx)7Z$P}g3(fJBT%71)LeE+!B|EzAr%MN7z z{?t7wp#P>uG_^Ca`*Atve^Edw+w%Pc2*ca5ANW{X>?aKv^VQ6=qWe|+UjW4}q-oqh zF0S8Qjn*BO>89=IQi1Oq&m321?)vR9Y;# ~uP znwX6hC60r7z~Qj3B*N#7v9KWf)Z^5guS+eKRh-{7GbQt}uNK3pQn$g_I!+lglE#GQ zAhTeCu#!#4%ikZ++)xG)d$`9@qoky7YQ(KfFs-wnz@T- zqNv>WT ktK(1*(f44lr*Kx9Ju5}_7i3v(^LApk~4W_4nG;`W=ZO- zm-=N;M!0T<;o#Dif2oBb%YD7Jz=#OcM_s;F>HA3=p<8%N@fy;c-)vttZvP( Srd z31d%J=AvZW31F9tqCtSP6|s_%hdq*1E=BQ?U3F^R3B$8-V3yG@YC_9cwjyM-KTo3? zD06KHH;MgW+zrF0gs`z82-M Sib>Vcw4wQim;plUH0YrNs>i7olQZ z3V%peAusJWp}0r(L^d|ZNdK|8t;mnXaS(J0CJ1A{=Y*m}%NjY;2gK4hJJ$y01v~i; zrLF23JK;(=0Ki+3vlB1TPMuodWqsjQKV@T9+f1HNEfKo @2PZ+<~v-T%p zX&ooOKW*xny5ba qsb6<0?K9l$6yKY0-kwi91=&1#y`KR@j$CWAG zizmI#S|Tn+ZfD&rO7_z}TS#IkX-bJXa?ge=JK&i9rZlt}BZE&KHWTA+OyT@3<^ND3 zxPCOZf8ryyUhlwq>FlnMyMO?pC%DLVwQf)97CS3>$Js%!QPKX&{vR!ViSYZf>*os5 zkJYjN+v5Kv )kmqr1h4ol<^s3Ahtq-jVK zmE&qXG0k&_5#9{wQlq4B<$J(owF$$9u DCvnXGgndgyAGMoK!_-XW!a8CW*butF5#4#) mIZ@xN4qB(J1Qq{059hOE_DJ-kiV6 zF!q>a$~-$akmg#LNGXDTAk@0bDDnM+wY7fy+{|@cuu1t}pj^bjQXw^70i**M-ItG` z5!)oVC!d6us|b|JT33NyX2=~<2KYB2BvB)Hf{S9d=k=zT-LHe(2Q?ABNY+aEaHEG^ z$`#y?hfT%8rBc%#!cJRw)H#T)PRm@#C+(Oj-EPt!Jg*x0R_#+Mw{gc24QYt!Za@~( zgQ&v?NFCF@3}p992RHO7D@^r&;)ce`>i*Jg;lp-!%Kk1#&s-Pc{IekYOs-HtYps(! zeSk6 UvJv?;+yX#&$&zY8J>_ogg2mGT>YWyg%q;k)dw z@L(I0vLdvw^>9pMLzs5QWAEDOo%ur0^i`9Pd@0mldY=*Xe &Hw;#1OFU=snl>ke~(QkDI%!ip?9g<6^|{R zW`BiW-$%x^egMK02 7ZjU8 ziOIwOBMeB+3>bO_Dy-``_W a}k|78X|<)LGLNv9+)Tqq8uXsbN@X6B8MKx;`@00NyAx$ zp!V~3X_uLEI~SY5ycvCdztx(}(?#WO*7r(m*daOw;L10APxH8B%WN)93(aaVV5+6e z4qg=s&z`&+caqYUu2lUvoh-*sTMg~YrUT`amr+|yU^$rtX&!uxv^c?uh17I*+wZ+b zi~G`AW$~7i$YBqHBg^xJ#-ziv^tT~Em_+rj>>sIP<3LSo8*sMzWwMVuRzd>F%3RM( zs!K=1c|i8&RS2p`J3vy3PZ%B$7hFYvQd)tbhCHb&gckSOcVy3$Mpp=g$GyMruM4^C zrZ{Ge>9?BRhmu*mhbmRKj<@12&uOy5tI1Yn!)1#ib1RvnbIs_3%DJ8^7e`ms{ZZ=F zwZp|lan6=&I6}(A885APeow1M^Yg&@3f8jP{z_o~Me1$}nMjBnP$0w4P}dLja1$n- z`2xJKmoOc&@;^X)an$`Bv?yV2d^^@$FLy~QnX%uH+~P8E5IGz`1@HcgRG13%S6(Lm zldA3g>w_L=ci2~xg ;qap*0Io8&N;(FfX5+1y&S(C>+ +c`wt5EOU--{8LeGjECu{?sL9Z1)^lB1pZY|8bKc!Qa=#Kmsd zyia$e_yW2DCtShR4f1zMFeR$W0d~UZwJD?+CJQY=FMlv*V Khl Te?-Wp#&u1br~2TfRvs(zjXy)71jWta)FlQL5jtKXR+8+p0I7 zJY<3uJznvd3S@Xu zWB$#4ajIM<%|+D@Uu%avXDnm5V+STkWqQgHrN+`Bf}{MDJYE>u3%=C{Y+WC1`Zw% zA#X+(ERFdhyZG>DtX}o&UwQV6@DCL612L*`+9PF3@9^rebhZZ}C|%3yt3O8B04Fl* z&A~#T3~oM}g1D;uf-W9v-v-fE?adSNJ)u-1eHg=T76uQc9olI5Yt;$BDs%&J{|>M^ zGNw-%2KD!es-_2W`YVujobGaS ( zl#Jx4o_V|UO#knh_9c8S;%cpX8L@ba9&J&RZh48kcy{EHuYq^slTjFP?4TKI h zT`WYZ-#|{{^v(EyronQz(D|>p2pwh Kg-M1L59$DW16zX7Db*2e1|ta5)r-)gT%Cu4jRB z_*Bf*g&V*BSUXiS5D_49oPFUp|AW&wsDO>%MStT%iGjpL0WQDGZ;W?Kgz{f}zKR_R zKgmU5=81vIf&tdPPa91Ut%Cdjqh_FPT?O8s>!{G}`TelVq%~Q30B)@VFEQ||3Rn0! z-+u96Xnc4LNkUHG;rH006^{xac~-;1ZG(+MJC0F`XF2>zuJ6L&CIDrp(iUm39iG>| zud=}3{^}~aw#Ky7csT+b=21SP49~GP|K#!^qsM
K2zW@!g^&^1rIsdS{%h{l z!THGaP`Ifv%ls|V>2%k#sE-{?EJUaWMiJ#=L!@RTAb$i=E`Io|R-HrPE+U3w^H>sV z+Y5d*%jLLvzz$FUI$@t%`eZ~IBo{cg6-VOdl7N_QYwv1ed1kod`}!gI2^unhZWew@ z2v{)ced~XEQgy#;+v(0N|4W1dg$|79^(NBuoy{N6j8_zO_kxczu!qz!v1SU!C;T<~ z3O!&blE#rcEpa+8#ao%@i~nXN*DVk6Fff8`L6e6IpD*Ou?otc;G7tt?$9Hb4^Z39+ zIc%WQH@YVPffw7BAVH13_ajfJ%NpJo7E<&XTH(&kWZv(kO0OQPR3#E> (yyb&tf12!SpL^Y z8z@~T_0j=*^xHf_ILFT#(EI^+KYXk^+Fa)QcZ60liUj-srMBY+GKVegzY^6cPJ;-` z9;l{sJTgqGy~ga(&%Y7)+Crc0c1P!3E0jW3^y<(OVp{O`=n2ZpD3H}Y9*9-c9&adp ze8O&@y39fEp%uQ|SiB#{M?vC tdk78x-qb)-_XMC^YHCp z@OAFXm<}2< lmxx-!nca1sg7+sVCi>S5U@EO zjX1<7 A)bqi#gPUBvM!=mC^Bk)+9dZ1M{eY9-!)4wyH}@6 zU80cnVfL$(;bW+9m}IrUU6M3fN=l=T<f0KH0YO5L?gr`ZX48$dG)PHz z=LSU(kZy@hcL+#Gmz2`oE!~~_Tj=kc_kEu4oO}PeJc|u$&oOh1IeN_n s@hkXE10SOjqdC^->U!*FFcwBhYeHf^@39!*vm|K_YuM~B&-A*GGw)j_UN~5 z_{s%S;oh}kn>$C(oi$yCRCs@;QuE$#m~cr+5C;zbLymzHJb!@u9@BLDmLnSN5b2f7 zS0bh*q_XRVjt+=c*+fGI!m?<6kZ}G=m#07v*26uxwe{j-Y2j4@npoqUrJ@UXa#Kez z$WW-to(})G<6L3Eckhurp}j}z4GyVq{}kE&Pr?$(UV9+swKHF&s({1fzjm*p!23z_ z1etCjE)sDO{8rv6_o7F)ol+U=2F!3bxNh+wGAN3xmwl<%HVB)M@BkW2gkAa`>6O$< z(H=Co(bPo>2D1+jVB>ZtQr4fuQZdBt*feajD?W+U0ZKTw@X0UlI!9aurWe4ju&`#B zz{cz&3-Ui8zuB6tM^=!6fBCUJ^AZgIc#|E|;ert~E(<8?_@Q72yZB ?aH~QY!=~jDMnj-f$8f4zTV-KQ` zhhT$LAHfoj0&cJ s`Ye=Q2b$aF!pf*8A2>tbTAimAVg!)`9cf4? zImsXeyJI2WZ0Q*&bHHY0dJ9R?0GDkmSL;6o_QZ^$xh zk47@r>>_cGx#tmY RVoZ#S6XQ2#%LGEJkL#ROwThJj?yfRiQCp-YD5NR$m8cbMf0HfEY6mZ^@s(w+( zb6_L;Xcx?&wI{{+o>wq9WV?42gC4)~^Rsynd~_(q)i@G~72_9Gl8q13@z_W@Zg#N} z@^QFzH@)?R1H`$0h`VA@TybCc%${Q^eKEpGNhC+KTP`!|lI#!jZVyX`ei--X& ~jw -JnE32V>fYekAqF eJ1hn1Omv&?FDq7D_umf(mkCFQ7=rnu%d!hyh_`Q&{+=y zJ=rZr5fg1E_xwmI?rL>f?sgvv9;9OMY|s(X#=h_gx3rP^D~NM <;Cp8aV z5C^oghD|mi$md-iju_tfFjGULtB+S chAo$V48Sqpp {P@g>Ssp2vPIgr!h!;@`A4e#bxd$<0>b!wThT-a0gm zyYzBCEw=uX=MS3%midnwFgkTF5MheF9?Ql3M|YTa2ZYjeULNE4Dp5KiJFRke9t^yx z9GT*{B}Ez*=VS6~L;3a`JJg#e(ETRGTO%epjl$m)^m3*Zv(8g6fX4JSKRnd ILJ8q`+UY50~EiC?&Dd@gU@>eyAZpdV`BxS91zKb}_ z0SI3QNXk@2fzJU$*`#?? $zCr7ScJiVzKIb56lg4oY^ly;1ml{8nsuiHiL`(`_O%Gny4iPaX zg%=GXQ#vW#LD|bRO9%Jv>{j5dH|x_U=hgi04V)gUVSB{Wx!_LWe|TMjG6L|`+t8<5 zJbZ5{HQ>pjJ-TF5<>9R(T9_@}7ad+!o>2 J^HxukqGypVzCw(@UMRX?OmeB zZ_R?+pmQ?_3*eNO^DWDwgv@vky-}`<1s{0b5VfvVi|c%sU|y?_rD+YuETDJMwxI7& zMvDIK%F`C5sevs`$4y>740;g56I}sQKw2ulwJN>y-QFp7Gm;S~--@`1P&v%1o+fW5 zy#98hoPVn9dMhO9JV|ZLGzi&FhWMOY=bu7ab}F&nB|Wb$D*)Tab%V9^#kw@SH;C_t z(JVur5kU8*q3&|e_|K~S&cH1%8ayjQ2kYAmKjYPGMc?F|-@rXTn9sj+x?g`8AmoPs z%yMMC;NrSJf}>@pqRoXZv~xuiRS4wAQ+VYGWU}8#_uiAgei+R?6vAlOjvpPS+G-Rj zX g;yzaEr_xYZ zNa35dhK2ifrH9Ag2Z52$L_W_Yr|T|5-&c+3TjI7G6%b$7h55~_Q^&*c6VpqbCGLUm z5Y`OdqYyGpNZUqtiqk}9%Z4dASPNf 5F|=EVqVR0R%dD6)&ad(B#|OO#`P8hF58qUB(y7 zYD#NmC=bs*-|T`o*Di`*1R_5Ch<4qwzo$8|x!!yqJ$&fkw?iB$d3nvs+8BMf1nrU( zQ5rIt3t=8w7F;KvE^COmg)TO<1-P{uO@Uie9~+CIu|ppN4kiNv`0rnkLfatqpvVyx z92MT{u2aSy_xJo=UhM@B$J%%J&oGqY$Y7W6$z=i@?v*G|YpA>82=0}bmrr*%_)qSv zb)hIr3wKRTvKMTRVJXj *AyhUZraOFQORq5eitGpe4SydODg+~>A1dcDnl4$>9+V{PkJLol U_p_%QC==V4T#{?O1$Ia)0bF<9}{ Sll3_V^(#x!m+&*-;+bwV--_}bf9`xb<721Q?N3?$GCX#&Bkx*KX z#r!^&pq*BYU}4{S*X5HR?~|n&EBk_cM2J}@8*8fk>mM3d{RD#&?+@7wAA=T_Utgyz zZwIuzg6I ~CQr|%JiZ5)U5V~Vg$+a7kJNLG9b}E; zj8CiI(CU#rXnj6pYdr8D>NlsM(_7!h(Yjt#o5k29#MrXhVE?g%lt&1?V*SPq_mcB5 z`FW%P?vE3I_t|%1M?+;tv0g~SV+09f6t#OOlDVkS0)7e{a##{*#Ij5gB~=VQ+%}Yp z&0LL@Dh4O0D-^x^1Y}KYa?6brSaXs>`D YV@nn_Y z8w<*?+AJYvi)Q}IR4Z(n?hqAC(e*R y2{3g0Kr!g+M@0Wh^Ut*pZU5*^m>sqw9Fl2Oxp)}K}smj{AbRI<$@$eIf z^Amk}Q1?0k+q={;pC^A>QKs(dB%RucLFA;4AVr8Rxpu|d7sS|_j&P=VuWa2>{*C{; zk)MO&ckb}|&(t!;V%q`|0~S@iekLuoPUhUNQ?W89VBpYVh|4Om&;}J(emo?!%TurV zxS($Eh1alLC+C;jU0a<@%eCm>)Uj%XP9+9x+FLUwGxWF?g;^}VKMMOKFy(%4D9{Rm z;~rdzwu81_FLz7H34 m9CdCb>dbDkkN46tR!Uov9*#Miv1 z@U{8Lb6E6ado|3u4YA{F!aA(Dwe{1g!h)4?sHDP*^L0BxBAIG5U#9sn_nKL8@~0QC zB~h{NtpqDAk&_f%o$@HF3TrMzs?KYUO;_(~s6P{zQ-hixeD}aJzUM5j-u4zuIX~ai z1+_yx9eYSyJ$O%+wgAuh>C( tEyY_k5+5(%R&7MqJh=RtzJuzF*fps<;UTRcbMOP=I(O`^fph3&&?&pH$>pi0nrS zePDk>aTtw!2^KXMDP@ViZ52x{VZVWB+tgaq`hg9O-Nb&OJ(g&@Ju}bftO1Lde&=zx z|Lcx?=?AzY%iK3kI|oEQ_byC+n 9i(5{k>rz9xBmfOUQ5mp8gIl^l eCJC0_4o@=TL?kdH()$3XCJ zjuD1BCGs)HwY;F!+{q7`*JDMMt`zL{D)LLdcc3tI7I?ky((ff~gv`N?T8hin =0r~P&C6jR#tuj|Z_DR#8S>qn=F zj^7vZp1cRKQVPEgBwNpMf#WgZtNFz0KF%npF4vv0&~84@sMnkxkJqAKW LYsmzJtJVo1m|os02&n2-HzpBdWoC9L zyM#l+Q*p`l<8@CsCQ3W%@v_D0aFOPT+(M)6p6?!^k1C+h8SfLv&-vyY>~jvX_+-xC zb)}sg+Xh@bbew_Z1%DchcXn?N3QgX(vj4?CKHgO@*j_j6$>spvisM3bi-r|C&t) zxH^q;I=X+LjUPnAoI)>qF=!~@ETmVix4=KcNp>TV63By~h?P2d_>AO2r9e0hMqc{0 zRE5Ob_fH3B{!j33=nMPd7giu$1o-`r!8@-19K3_$1)7}y6TCZ#Rl)~u{;$D1R?t7e zyNouEwdSdw#Ip=VN*rASSOZut<&tkZSw5lMZVcn2Vy~qeziE!68o+*kU&a8pg*U{q zF@I}2oAlY9*=#+O$M%hB9?K5h?EJjTrR&+l!{9M2ECvj41^vdn);? !@yAh*N7^dlNwqEf!hmsF&N-tEji>l-kYv$Oq25cQ~nw#KS<|0CweLud;)kD z|C#bV(2ST6a)Ogu)6U@Fpq190*Rwjs0@+ft18Rv6PZeR{bm6NFCLDN3Bi}TcU!2_f z3Vnx}3_OV2c_{PjN%1HhwfZ8H&teMQL9Hu70S00S2X!$LiCz#=Zo55u2;fa}ifY>V zltV`*rfgq{OIpaL`Ko%2MwY2M+g6G)y!2k}O-iF4{g^`%sV&R|&!Mly#4A&-(M2zu z&D}zH6Es_?cikN)c5RTWHl#V5 +uC1$n@#{2{rjjC!;;t*dOt--> zIwOU0Nrgyk;>fWC_ihoys-_+r^KLDxwH^*a=9OMfPn4Tc^x0VaX L 8+-DDf^YkYvodWgX$`18|D=HTnCjaMcmR7e7xjt2Um-1w9BKIo+ehS}T?Q;g zEKoKgr2VDI14@i;=~1B#l~XkeX}vpLU#qObza?l?KnahP-!{shJtAg{oFErCF;|td z{ 0&WJkjC37uJr@T^BU$FDt-r-*w1;)Q`jKr&d8#@%KPf7%%^NN!;;2Aaw5 zh|Lh5_TL-KzzCa3x9pmyrbcMsObinoA;@ %n>{ 0! zGMl?WOLJ99OP>oF;`DQmZEAogc>z7F67m%xJO-;YP+wktfI8h>rH)1TfgS1Ws)5sB zRRkYrm1T1ozy$oQkgw5gh|sT5rLq=$@6>s@{jO(iF)-Z_00j5Lf7#4Y_kD$%BUDkq zXiA{GW7;Ix%YAWHrX%K!LaO_@plLjMW@x9fSjfl~ LC>MXw|Up**@-d{beFHrtK5-DS&y?cG3+t2?N9_WM^zO%7tf9p}mg(x?%#TM+# zhZ>x*JhR;LGwt^3u8B)O+xFbZpiD8K$MzJ9)=ogUhCF)H@OQYdL3RKM)K1h3ho*G2 zrgiyhY<*`|u{ENcG~-a=Qbr?@tMx`QckIh{yireUP-i@rOsk6~Fa`a f-nFL(O<-dX)fZ%aoTzGcs$h4 zsu$#)o_MT^BTaf}bbXDd=I^t=b=ust-1eZs`PfgUTq7Ll)7H&| QFY@8|7glzsPeG-CCyT`$PHp^pKlmX^&$bB-LjE6?I&tyeUqqNAW#{yE~kFvqN= zD6Q+}GvU1?8)GC%@td5r7v_BtQM2)HGf{e0b(Ec7hh;Da&|j)8``RB%>+}mQgl}5V zGTGO}y IPc?DgOXgc&TtwCTGagUT5ygx6=wE7T3GtZ3P@U&yo5hmR zY@XZ>yRXfEl&lJ|lBJG*5FOtPHj{JB(%By#b_YA>k{|ZJaWFdUE|UVKvW~;Y^yaXc z873K%?;x*uEhtV_%ML`OnyAS)nJg}9f)s~*zkTlJygS;fgvYqC9hrC>!gIy|i0@U9 zjI bKt4*m?5iT*w-DBL7&upn2&Q(BF+#EwuY7<+eGGbY>SI_kyvteR%?-hBS2 zfinE-GK_60)V)uEFBMhz( 3nnR9s;wzMB)Kk+!Fc3&QIM$H?1 z&8PWzM&t9a(s1{{U^IG3sy!vzCI$WBFv)$k*naXW;O7TN3pLfQF7?NCYTtkvVZ440 z=j%H@I?5Zy)hlnuRP%aVd#4IZkp~4CE0&$~E?Ev>TygO4Z##hvw;M9O8?=CkJVMhL zM*f=C=Z?-NHA(_wjw#1CKwQO ~;i_oR{kFnxflyMGzAP^4&Eu(-)} z2L|^7D=?yw!jBv6ud*Qx!-}#8bp0gxvf+ugbEH^L&d$>nI$AZG@&zLl{)jbLK&)x1 zwa~++yKLsg^G~qjy4St%&n2S8Q3fR3w@fj!^Bns5dPV!NIBVjYHw=oeA*dO2mN(2I zg;WRcb|q#>arGi6v~|T5rBavs&?J|OE(%{h2Lz_-vmheQl+BTdoOB1;w)8%MLaqxI zx_G(5u-4Qf)Bw>8I%DtXOpR3!|3=k1%1oZ&S1l11rLM1DfKpS5Z)IpseX;?W-tLZJ z6=I|*k=ozKEWp`P9PHwdQ8@4Rj$do3d`q+0Fggo|@0&-VYPHQZe9^bhc;}He4Rn&& zz|`!iMn2Iq#u5m{>8=^`A0Y?}sw|y4h!n0J_`v6La{1m#LAu*t%cxB|GX<*wQw vN+6&P+kAQJj;Dk#cUvGDM;kPVZ| z#oN@*2>&_=UK`=F880Wf1=I>BOgNeay+=lb^BmI>*|kVfT#&SJOkmt>)# =XslbS?;N?pf%X4-&Eh@48Yu5l2Tv2OR_kpyd;5SNCr39fZ z>BckSVe#3WXEf&*TN?&h?KkkOx%ln@ZTTOkr?s~jKaVXRSkBRH3%LjeX{%2sFRu+W z@!qCF>hI}XYXTAwuQ~ih6+7s3J2mqlHRq*%lJ0w&7Ta z^;4Je`VJ4A#NwJwNb-DPbacHw4`MS&cU|j@u0Yi=z`}_WcbtE*-{aT4k9%LvwF;Uv zvKanmr5sc2S2> wz2tBg%fnXw_bPI>z7j7JA!OD)0#+=muDYG z6N4(ywG3_EZkfXG4!Mz0Ol!UrVQkEw^geqjacXV7IkHX&D}4zP^uU0EBTfsDhSv*$ zXNU#2>VI|ht54yo#b?A0hv!Tjw+L#z!2`vOa6WH&7)6FLd`R|&8(()<4*GPaX)4a( zNuy{H`SZu%XON5z2BlavEK&0fudPu|@YM-f)4Yh)wLy*U=(L9N4K^XE&~d@0wu50+ zLS}NR*Rs#?37_I8%j)QFBh96dPy=}B3i8&a2_(ORcjt6fmzwe4P_N%tpGxWZhvoSB ze?8bz6cnO&n}##+*<;r&HPReuNL%KxUd`W-q@@ tk0*p4hs& z&=EfGCrVznb7__U^AiOrbLB$9bh(_;57bppuJi7OpARqJcVtzG!HypJ3g$JgPUGel znuD(PK)GpjGB+gwtTNzhiId9EnYB+U cn* z&~o463)=VHU_3o&giM#7_&{5JC)cc>46j`}OE<}H5th|lI`}kw&!v~Y);d(JCO*1A z?6TPCEbn~i*n+Gdvgtb@rh%9)1-2nIB3uMYGh0W`;twBPAivHe_9a@*iXG4BJb*J1 zzVSvQ`)|S9Oh=Ru`JRTkR`Tf|Z9P;nEXR!`U;Yu)ci&_MX|znW9gU0bw-nDG51g;= z&Q=RsfB6MC*PQD>a$f#?uhBLz{$9H Cnv?uI@?8kEhJIMRPwaMp5-@8SL zU*68y#X93=EaaT6)qwABNnQplp+LV;o3OI*{XU4+*8bdj-Lz6OsA$Lg!M7?=H=)hO z(~Hme2r{d9`hb84MyYRDNzwVr9V|OrUAc(;5X+=__(pkBU`3csiec`f&ud{1dO ;d|32ANm0pm=uk-{*5Z{UsOuFYe-=M~v3EIhTbl}FOhCAURn7z3|0aX*hAO~&$Q z5HT4jG~TptFV{%Srrz9Fk%4BcCw9funl@Q{3*t} 5MO#0pGXEgzMG0W6`DlEQ@k@>bf zX* RNt8mz2_@2u61QwD*Adi*JkA%n^6qfEAd?3^>zv9KHu2>Q z^oQxi!WzYH=yB`F+eN}$E~VqP2}n8=Uz_mY))jX98|E&04QI6`j;T{s=TaWx4_{3$ zG7)9&!Kj@Axq{4JCIL3Z>A!Wnnh$iLm+sW(JiFXh34O2HC5A_&_sPwp@Z) F_aV|FA}LchSlCp?w(=O$r^hsb80a3OtUz5P2hbnWxPB?fgF}%5p}9%nNqBm zyeEB9UvKhtulqfYiZ&vNALq2B^xnWwula-Z_vAJM^d0w#kZuHdQ@^Um3v;>(xokF7 zCoxN`x0;~ySCcl&r4j36*ke_)dTa^?4Q9Igb|Z)Sn)R)*O@{jH;d{??wfCtG@TM|= z!#ERckrAg=PSg2BMISFz2OC}Xv@Obp-`}bj@cn8$_*8BeeW)GlPOvDJ-@t48ASt`6 z6siWk0RQx4wP-zdIx?OzTi#wP8(%}rV>j7DUhE}Xd6_KptJr1{-m^*A{dVrWTGnO8 zy5pK8I^}!nciwU0Ve*jZe!cZnRry9z5t4> 05^XwvpyiudnH;P_$hqh0pjkAkLEP!OvhX zyV`wovhtL*UgB0I@uFsAw=nTw{G@T_7X7xYh=LSnSeBv)`=$S|%Wb4+%b6YT5Q_*U zkx$4H)-t8S&Q-%jOgD=MNqxY~k#(|-)comr_h3Lx*JMRoE`odEmx33Y1_3;KbhG}) zC#%@Mb MwO$ GFIOs)YpftigY4H?J0#63Y_QPkF zOHU?VqAJ7Mk=_KZOwy!D0@6y|ERc#` _$~={Xnp8L?h Z2gTm&bqp@o9dhF z)6XpEvC82&At$uka+(3e{!EGk1?c(;dl-8 x2Nd-rG_0v(* z2SmP3u$0M&Cr&HB?PhdN&MsorheT3owO5v%LZrX?vj*_ a;wB$jK)bcvOieHwl1{vmg!x7sap!4n-KVUkqW zAp^>RyRSv~PAs)n nHJ_^1b-;>%Fb+6v#~#Ti7h3QY|FW zQ6~cu6XJ46sl$`Lk (34X@ zY#ymyn#ZmuOK9>dvbZNu%qj;I3*WPDzZN$xxxW=t28gu=xm`L@e1>$9VOud#m%Qj1 zV5?)oX39+6u;N82cFMn$l~E6hU}Np)h{qyctI_* 7T^!p4LjaomBe9h~n_pnewYt z^7RF?=$>qyw^_aVZPMdnbv++TAXD?i7J5Jod})Fc&U*2{;P6KO)G`B0so!3B^Ut@r zUjp(b_BReVMJI-XCRL-=)-FMFdrFy!? {oE %oJirn;%jw7A}l>K#xmB1u{;g%_DY8>z}akC zPT#ZmfgR`#U(q#gWR7Dvn(@9BCr9MT7lRpSG~rD~R{J-O^d7VQL+e{B6M{eZUJ(Xx zxOF0F|2NS07Qp!X?2jgY@6G@uX7r-}yJBDjN(f%a-)7*0#(Z3y)O5t3hzQ6l0DSqA zBVpq8zy$Qf15eGP%F>g{w_PIyk?|*U`b)}66S}9o)kmEZ-yMf2dnWS8hS>dVMoxXl z_n127Jm8|g-rKwSi?y#qom0}UQS9wW_Y$_e5EBvakjBeXDsRFOD>67?-ybpdKOfbu zs;vwa21GUG$Isk`wP|w=2MR^cw@N5J#AoZpn48Dxo~DycsV3jH;aIN^L$v|zE|Pcf zb=ZZg=r7b4bT|CNz43~-<`9*-v~MGsXXg;`BS%I(ShT;JRkedbvq%JINOI-tCjQ>$ z)E81`sepakE050T5qAg#bWgWB_8IO|Yg!tChQ2%fDq~*8cCH};GMImU^9yMK%6DvU z=^-m^13uENvyN)EIZi(kjNsUO2T%T0(L{1g^Q5@Iz_$w@($Hs}owE*4=FH#BR~@0_ zAW{M6RQaeL=Aa6en0_xUf}Z#y^`2-5XV@|f()o&L)>M>vzY0V=pl!L&2;g>YwiflH z{8TFoIhfLeb~c##hkJW|zQVCwR^Q;$Vh+#-bje}6PP#--HO+Bd!rsjrV?IO`TK53| z>0|-HE2`w&%DVeTiu7QHH~e2PJuP=iGiw%g$hS|W$Rs=~Rh!&e*pnRtl;zziVoeMM z1-udRUW78JL^8sSMb2u2S0l(plqu85U`FqfaEqHl6sn#V4kUk)nN-QRHc`oo|ws zSn&+Q)?Jue*ZZr|QGWXQaqeqYSM-4i>brY|!WIp0uA2NwB1P&Z@7`@I%af3uC{fb zuNvp6dA3WN?_9aekxj2Cd4e47g@f?)YQ&_Leqs1a%WX4}U%6FKzqf7WE#D;kNE&tX zYJPlsPm|vWj=Jr=8eW4c)%^5agpj5Ee7rty wZ|yQrW{gRe39BQ z$gzYfDp>)Z+8eJyXpM0=(zHLi{Usb7r)-%XokM>hAySyP?v(kaj4pZWJNCeYY 3#!!QKUwnLe+L*i_g3Ssf2N*Z?3O%=$G$Z zgfdM8x26Lm(hRT!oMyF1F1Z@|5yXP3VXO*<>qWVG^tr=b4kfgHXuvr;y49` @#Hzd6){OnyVpG(s13^O^P2r7@tA890S&V*xKCPeKOO_HK zdDQoY?K?9_q~viVL1f@DCPQUUxs4j%_)-4Z3F-8~#-@D6`5C2|ywGGhlO8&5t5?SU z7K7-{jZ@{Y#=5)H<#yMN1bup;3#*YaRO8msJ-$ZQ*e?e99D`;vfbF1ZTlW6cTF8I< z(?UfuaPT$@qEKT_`4_8sV@DjCfq2pySuB0R+k&NO);6YkqvWs4`%ZOfexzOSXkpVd z*GQ8~pU)yi8z=MqUk*~u^`5q5uB@+bynX(YqhP7 B9bn< C-|Xu#|}o(kc5tQ-@xx0 zIBs3lP2#QO=!y7m3)6{BM--w5y{G!>PfuHbi-Nf{eeU#<9AN4zPmG#c=GkBFyNR^o z9_F&3`ZouIf* A`&+w?V(npIZA&uC8f(W=a zizK|@*zxcxDmIAHslDY^+QDq|aGPE}E7#7W`PH(((&zq9`|$-|RgVS CpVnCBSV@G@7`&0dP&})F(%ErQg|f?A``{;UOw82p zIo 7_g#JJ5>l zzO8-Z_Bq{0PSl?^7Bd}=fb4ZxmaGNvNP_WIz*%3wy~PpEz?R$ nF>~mQrd)E%|OZTAEw^%jET}YR>)zw7YUQxkYYq zcJ)IsRV!nXE}01Gf#JOk=O6kKh9ht{E8R=zi~XobePu%2dvA+X$(bZ0^^iDv1*b00 z@^eU5r=2spjWpFDWDU(4kb)v3wSv~6t>hWAtd>afsw$ijePB|Wnnzm`Uit4zTPP=} zNEv$J1oO=jD%Qp=iI!{HUSwPN4f7K7HsEVToK7Ds4$eNNw&X1t%bgVxnE=bT!<(T8 zlFtM@e rwUicR8P^E8pZ1zh`G+a7H%bFAo4S@=*Zt2UfK)W zmD85_$If6em!55m%MWaWLqy}tXc8+n+6s2$XpBS07XWs#i(1@CCi1FK6dOH-nT12B z+PMPJ7@V+ydmz1o<&hV+Vq7EohHSBbiQl+nOyB0N7Bh9|!!o?)k{D7;4(;A@`aga< zCgWG694VFolD`x)J%l(BIzneX$mcU2(}-QEt@S2na`gkUz2;-UThaBI&Kb+YAuw z4#8>3K2wv4%CbAF6yYcV*n!Xg@_+%%_C2isvt=w<-V7gO$;`%(@C+714#-LA%y~)= zgT=6-2RP0y-SbACNv@C50DF23#Q#bH=00psHE=p5ANpwd$mI(KhCgwum{1@mgG}L& zvvzmtbE1RB&7mI8@U-N>)W^<84VrOyY5>Sd&0 C$@8O7bEbX|iSmRrK zW4jj1nuI7Dy<6AXw`VN_(_bMqKQsvrs#^N;dqDN~q5VmN!Ar0=h09lhZCyfU z@T9{BP$8U Lop2w3Ea9#w{4lA&JinA;PtrJpD-+BGa71>_E$)J5QcKOA# z+;;P#-Z1CsQ;)^piIL{%9ma&J7N91Au4^{r?RDp~RG|HZkXO-k2RPHooR?a2))|B? zHFH^{BBVs|qnP)Vi7=NrC`;WqW925l3il+@*Bp#zF554CdyHn}0DBj(bS-^+WPH^$ z^zr&9bqgOgLIUEtWEe!Utt1@=eFP_b{U6Ym66qWAR7v2)+ErHc{2kHO2a5IMr!F{% z<%9#qh~;R7IU7a4$x9QxcA-EvB>$q4pR_Rzrs~(cptPnZ-Sj$$*@#nno^vWV6NfkU zuyLz|T&%GdLR6)R_7hz>Pz)c5V%(eOiftsiIE1?FNsa|R1(AQk{;^sB%k=BN%?*Hj zS8~4oL&Zc2fSH+%{lVdHs$#pe2^tP{pyxouiG(#kmt0R44J^9WUmHdOYda_6eWpeq zF2ej1X{r(iu{P3g3ux8(y+wNJNCK {8 zVYCay_=(wP39AtLGqNGdr_E3VX`kEy%H)};DvfZ8#lE{`{u)r+HWP;yKe}SE0Om0P z+;l!Zf(V^R72QRST?XAeXm;!QIm9U+sNKLGWcxGmg-Bs=@US@jS%G;emY_ 6P8foUE-^hu*-m>*+utG0ir}@EQ+m@Pk+{vcZY6>GVaqfsfj(pvtHG zifgy_5wWaD_(rN8Sdqf0<#3a0V5;`7MsV>bd%lZ9o>n4j9lpYWtz`WyZ1pKb+l~ut z?Z%w`Zq+Bwu+oS$@}c!;j|fu+plM*0oM-^YTCF=3_~CYPsv>v!>ARR{U{i~}rU!Dg zp4L$)h_ bakaiOgTdU7FcNJx$WQM%aSmQ1u%mKkFcHVp>|qpKpEZ^|_nUptB>#~W3NXG? zc)8EiD;0Npd!^%#vA%^n+ThmZ;T{g8VvOB}v?zL?HQ0%X%Xg#Bw-O?F1}Aa3xU*9{ zIa?nqPS2&(X54F4^A?$femUq|oBISaFsW+)SXVkD{=PaJ06GF=rcbio6vfM74gX{# zJpZFB*-(qIWklFb!GbvMLc3fz)0yjsE?@p!b@Kk&I;TEcF6fkHJmbXBX84*`P2l!j zPP9gB|7lh!bFt4mZ<|=gKH9!khZd(MGNFY6!gjuk_~#UNGR9KW`Ew cECb^8tpj|>exV>+M8p%52N~;>5 z6>)2U&2hYtg;dC^GDm4Lwet`y_C?;9jV@O@wruueu~DRP|C1VOpb<(+UMiC#prNyV zdsHekCatP9xfTp?&!7-2tJgS*DA`!qJy-SgCZ-sL=&yrK1cg^QBG?=v*6^`syCu>M z4tmzIihMd%n_uiI$|C*9Ez?lbY}Lm|_>)G6hrQyfChpi1f9cyYJNJFjB@h256MJ>? zI^e7BwsPvaL)B<3Hk9h3;A1oL^-~^CZM5rCO6VC9LvHilR5p+ks*k~WeqO}a9c8M| zIHv{#3W_RAfBZIaaO{&NcHh%gY2(8Z?6KcQ!)bg<3Ur1OU$ngp2t&b _M*Rij~4o_D^ylZQ|V1rU67q*f$*{z7CD*RPCddTo?5I&&HhN=IZV-F z{*sQyjCbxO>qOG+(R@)U $0jX`sKx$ZV_waQ**hWh+ovR0A~G z$wY!PAldxCWV18pXIG*DY3xtG|1q1L_djQ|!*~NtDk41xJ~id&kAOdfZqhn#8jkPW zJWX6IV8qQGO)V(opH8z<2i~6I?c8r63 q0;72W> s4gY*PhY^D z2$hwao0A|Lo2Mu6=3g#WM;A*r4gmpyr#3h_SpWzYS8oS56E7AASL%PYAZ6id=3?#S zX6@)e@zkP;siV7_2o*5Wzf-Vx`ggMquKz3(uwZOnCQfV|tn5!y`WK+G^8Xps-u~av zu5RiU|1;kI*s!anx03~%x`nHwyNelsxOdb~T{#I#x>%UFIl5>%I@ &Iw)aonf4zqOKa7R w{V*M%HlvotV38A OzT|L(W(iD3M>(X(Bz+b9 zF^0|*O>1HvKZ5qdpUvVTRx`ac|MQ{!|1bStAlge!aRf_Z+8_h}U`jWMNYT>`Tj^YP zqk=wz62CK;Tak()A{7M5an0Mngf>Rfy`Sn$Y$#je$}5fH#Y%6|#zA8>rL{%$P`56n zO F zmk&u93d!v5R0hkaxrlw%tpUF&W6YaI)oh6aI2Fc48oqC @9irV5j(+Ws_~`HSNyx>MHlg`{fN)G z8yYsW{c^rNMxCA$u5`1ldm!p%mi=0YuZ~AIA$yLzmQ|2jftsNEp69C0l88+O{*l>! z!nJ`-9vX6~)a5Nb_S2~a5z8+sL$Wwo%^M;;!Od7&-!l2p)! WEC6XlEp_ae03#&K#Fi#2NBIunXzgxnSuF?r$KPMTi# zvkPf!Pfu}&-yBO`??3LKykq7Tj__XY@m&tPqqb;k)*}r7t6Y)<{}St6zj`I?`>f4h z;sED29QGHU(3czA9~qgTEgYs$*!@#=yM}|nycx|J=!zX@0pA`8KV^X;2Pf=Z%t7 zbY(4vqlCrLhW7|R7lkQRa$XJ_O)Y0eRs&)%u| $0t%mKl!C={mGV%%MXH~MeC zM(}Y!jj?Ry;WTT^smV9xx`@3&KJ}2YI+7^g2fJMPeoj^X0!BU}VR%kN#2?{Fyr+ij zbIhGhZPWW(lH>{w vk_L4RT+(`I zmX!(dB;%1StuY~F;#j)q-BY&aJrAbqVZoRAej9Y-%~-=>@M6cF^pPKhkCc{LU7&h; z@nfm)@=A7!<0d_(Y21>l&;WZw@gTps1@Xswz|(z6*Do9gsBR8sZz@x#m o+72iV z3y$1Zh?^GF`xV$NmMvX+IV3;V3}z?S0;F6B?4f(Do|V_nd%+`l#A;BuY1ZMMAGE%=1VFUgmy_S(4Cikrae49yvEyY?*=XQeCnOKPYF^=AhryG$6-E z&o?esly&xbey5G|C^d+X=7kQB7}K;Q8VY|6*B+x%&Y2v%{aw Wt4rcOz-!IA|M=z?ZoNIo}g45pzc6V z!!#1bjaeG9%dM PKY*lTSBOh4>xY8tN14fUo3f0&A|PCl zFaP^4A*8LIZwy7at@sFrm;7O@&3QPpX5@t=iG%%e1VcLRaWE7t#;_yW0b%)iU@Ep2 z4ANK>>8w%&&k!K D|ktA4Za; z`BUjzP>5)O2(949#=$Bz9rN`?HL0{&)3h%HG%ivaiiHVrmo8WH4}Wl4AoEd%@Kv?# z4A%16N3|bK%uYa|#?h2m!qXuI&|LEw;T!ojjX|4YmQMsU(#*X *vM1FX9}8V!z^9!iFQ#432LVj~;{i=%y~>RA!*GqQ-7*-5M%^ z$~Y(s1*|UsO`X!xxoltTXoZ&sQ~-+QJR8bqVCxLfM`X17tT76v3l16rOYVVVx9# z?6~h}kbB6AO5jV2_Fj-jqXE47#l=$KH0kNDmQ2^Sh{I=7(<)ToK8 zWQM2U*wdW9 z@V%orHurqqwl0_|UV0 &cHy85o9GA z9z9T%U=IU`JB98=(O(k +{Z_}bCEwSB<&D--1zdR6HOUow&n3$u6LP{(rg@PnKZVIM*5M$nLZqX@AGqCU zaEg|E`%|;P#2#~&2zD%tp0zIe#lrN{3Eu;<>^4Tog75Mz @(B3S^wEY^4R#}LC@CAD@u)ZiMx6HPyRYO`z+JvTEBRW0HoxZdv*V( z>a}H2jv^wNdsm@qGhKtOWzAXN`x=@n^)WAvtb^#(QAh5cU?_XxPdrrV`e;`!rYx~) z90(q7;CN{WVe`HenzGjT?M9IJrk#;(JiSI1PuS(m*h>s^fI3AX3GCle-Ja6W%Q9#{ zQC+uZKdp}1@-qt-Dz=PA0`GTC-silN200wk>T?q^5%G?t`@WLJC9^?Kj9bueUdvU} z4zql9cY)|YezJ@o EqP5E>yJESc=@$y(wzny+1MGF!6&D~Yc zzJpzLBspI{^m0?7s!j?F#(cUB?Z}*4n9^?2GK&(Xc4>DeN=&0Ujz+wCm^mM3(Tf)) zRDxEQozRYYz4jYu8cl$No(@Jq-aHd7iw&9R=gV&Fu*oj_Z6IW_=3?^2B2lI$aCImy z@* dA~Um!vI|fb027bQz^}PyHU0`iYFiB z)BRxGf` fhhwmqbJU2+M`Nk#7O-Crw&=uRrt@dsFupry*%J{z#=i%^*~0s>~3@F&Id z*h?}3e59@K2qL-`Oi6EzP1;9B5lWKtYDHO_vdK91>_l}Sm5C!Zg$mQ5a}k5_DCV)? zV_T3GeSRX`4ckHZ<#->&`$_87vS#W6BIRS^L7kw&H$)G#)JXf7r$GaFw>#&pC$Ld< z`tGcg`bAbH_YV$lO)?2))*RHj9@NPfn(%ZEbW|2%y(zZ{D<^$QxFZ8*M&MXx8DC36 z;NfJb`r}4MhU3B*y+4p0a_B+vcj2GTCfqTqbT)zSyooBmxNV= ;JIU%%>p#_Dnh%J0&D_{ z*O3~O8|!}xsh)m^^hdMlg`@@OysKxSF&buSM_w8ojfQl`j28_kk_~Njbduo>BMabh z9k8g))iJ_hy|v|MD9J=F?IGtKUN50geNR%Cm&pDku(#3u_G1Tx-Rs$^K|kjB+UAxu zmh(cz5pWU44=xWv7l0vvpVa&)uP(AQTyfAadpCar<-Pfmf}D@cV=ras2OB<)CH4km zep8Gx`3sFu5YNH<(@A CJM9=Jpi-2A-H3O$n6VBEo|L!8s+%D;F0 zSS{{IpID%tBFFBnt;_Y}B{FHV%exhFkasc{0v_&rZ9DvAYMMHg0qSVKjUc=?vg8~+ z&4ZALe$}Pu4b0}u{)AJyiV` 7m1fAeR@+8jHW%no`N@l zwQCPty@cz4ZjPqki!s%Itj)%wYo-_dhONRV_3u)cp!JX{#eoub+<+K_(@f_li0Mg> z0Z^`j@X*%~aq?nzkfv})@ssnm_&`s_1T_ivkf4TAG2bqyd x5cWRw@o<{G|x^pSOmkZbqbxV%j?O+3ys{t+|! zH 5v@gh5d^H?9!vRta8j1R z_ehx-p>u0KA-))#4n-YW^Ln5yYEeR?8nxWLDnxfa9#U3fE^9Tb;-NDh)H(68?XV9{ z7gPK)ip00-l$^|OlsxBYpLssqXw&r^m79!};wMtBTDSjrLO5yXJH-)W|63ir9*qt1 z?~XWLF!U$^uMVkYO~cpaUAKCeXe%$9TMH08*hSi?39(EKG7?$07Sov!_>tz}Vo;;1 zL0EVmN9nXza72gHf_$wkZP#%RrN~=XLLu{%azwSA=qbrpRls1@4|KpnkILC;@Ow=o zmI0FOsAPH=SQS+DjZNb1c0{!@m|bX!{28rZd}K#-*llET;tV7H@jDOrcP(wr-5(Nk zP?rA2;y+Ed8^a`Z_%ptUI*Z3`kQU`o$lf&L5xT6Q#cw|}tJE?~E|QJS;YnOF`L@`2 zo$v((JIIBpT6i%MRNdD)0b(^tYGOy$Fyj5ozg-1@c>wj$6;#12G5tA0*&4<4#nB?H zFqO(c2663dUoXD3Y6eT3*~B^xDm#WV^ eg8TAsmf6sA! z$G+d7;`zT6n-8%D$@u?JY(Dgy|A;#Oe(T0L`VPkg7L<>K*`7dy{Fgxcf0skK6uVCP z%nt_k*X#cjklFul0U2WQqshX*%c0P12H$?X`Ts44!uR{%awuLNCu{Q#W&o(VJ9r}m zHJoo?B7)65yq5LlGcs^Nzl7mP(Le%u3AGYSG;2w=U}6fOIQm%Ca*hH^3pJXx7!Kvc zCuO2nD!9+}2xw(Fg3^~Xw)RYN2xg}#3&SYVE+>9{t`iww9Emp0U)MeMM{3W`*S|QL z@?WQZx#rs#;ya=b*1O;E5$N<=EKJtLTYttE??$zUA^`vYJtX1y eDFc*nWT{qoUOAyTn_ ;XNu4Fq&}s z259-iy2Mt`0)3_n$l;I)Z`FM^a6K&WWutW~+{eqNDA)%8O3|W*&S{`l4Q`Lpmnpz~ zZE-S@$%iUrnL({p<$h>47a!@7|2DYgK(dT!s#63(F1NV0ae2D9RnfR#A!gvX)d{#+ z+c~vLw{rY2VxxJ@&(p-NjvLo@0zV*mOqXo{2MZl-uiA~{WuJWss+F&t6Cac6Tr@Z6 zi{_JoLO{|yI=+N}!A9*_G>8}*TZf-ZIPz07W+F|>w*)z_N@D&&s$tB8h+GMaZ;xfy zkuqVnSeG&ev6=5l4`JoiX4(sk 38XQ=C&^PsQ#za z*P3X$szYW6g-{d&i9kB5;=tg!xn@APiBP#8=+n%x1P2dYJLYMVy}CpR8Ih?Q0~#ad z&|KQ^x850gUFiY$yv@`R8IE0 {Db}6)&&!4HH>J|4zA_6903H_F;aL~nk!qmh(>+11< z-h(km+3LGmSHo!AVK0&jv|`iBS&AjVSjFFonug(59m9Ii-3dhS!Y9pqxF2UJ3MA?$ z4$@+ZUtVKmJ1BN!QJZKWml1``xGC|{^%}6f;1+nfrRz-7OcwYi*4H7N4@5}-K^KXa zF;dELga{BPDiz`q5lgS-qxFt+fl3=Q5|9=VZwuoogeqYo>r{BYMmXKyQw#$jWk^ z2fbKE4SspQudhijM=99uws=ZGMS@8+(j>=rrM I4f3p;51BD5so0%Q0!U_m)PY<#09{(1qm?8BCQ=OVPVqtJu@)VfJ zh-ek~mbxoesz> {*-Cna2J|=vGF-R<6d{^YbA*3W5QSLSLHRoG0 z*NTEfBRuunOlV0~PHG2SRCqj#$FKbX4QixMTh{HjrKc3WM+*M v<6`gNRR^x zdAvplbxQB7ds<<#E^k91g;+* b^2LXzS&utfi_^_rQ 6QUgEil0YIV07U17CnF}I3qWhZ%ejoc@I6;QS z^8!(W3u4`1_x_K6R{j(bC`u1W3#1x?)!nF`qY_K|CNGG85W#O9pu7&gvJwGz*jGk* z3X?dp!oDbhWHXtbocNU*k iI_;MRcfw!#0W@3?*HPW+_XR)mC+8rSr&OM}MmIfQrkKUj zO$K^x+!Q2AGYx+(<+_|GztHhcXC*LSa(wlrKE{UrQb;An16?!M4j;e_KcbDnsnb;n zUyO1uAlk_svd0Iv=Kc53lc2#}Ao!bY9y2P?Z?61LRNHIgLY35(@~euHbfE~PW#}2= zM{tA7^^^@HqbH t91)L9Msj zLL#ec5Dtlnz0i0P5ld)MRwn&k{!+`AM~=an&sW!5$Bp99r%*w|Qw=d$E{pvys^j4M z&2e~G7AmXCdpR^Pc3}9s1`u{uG?JP(dK91Unq{J$7Bk?`|Caq(IbhiO3Ty=38s8>s zW(m{%*<6C#x&HDGtS69kpGz2&`Cq2YG$$qCB*l(1*b(mklAi~JaJ4I#1!CWkikv%2 zgMRQxG93POo4aSo>@nsp?c1PoP?91qNco!3euBW+=23Dm DEvi}a| zztiGh>mv9IdfOQZ5jb;xhVtAQar<8rhn#ei(<=h1UT){_3o4S?_pg7w70da05VT;& zX4Gg{x?(U`LxTx{JkIriJ)XCUzWd`(|F@%iPfXG(0CHv*=y}5Zi{av|I)PI^ mZ;@x8*gegO`k$UBmZVnf z-BV0oCrNuVzE>oViY%=v>|3wVWp*fclFKIrG#(uWU6*|Xu#Q#o$qiidv#d$*ZaI;V zVHbKPTmm(cOS^|>o$r5mK8J5MAY7Y;E{nGs^FVYGuSext*+UHqfpKyiXm?ySC1*L< zUuY2caYJ1#+Dr|OT%8P)5Esj5R6c}qeP(C0x><7kf(k8lmvj^wS&&_AC-%o&>yz** zg3_}Q!9~1p`hbSJGU-UTYG{HaNJJ)&R6b|w7M91^$GMZ4U-?4jH*IE9DG7^r(w@|q zeNeQH4@aj^;>14A?nNjCqyH Q&1fWN$wwfK`y!tNVJYB1gs;A|n{5pcVrdr_priX9*C3{EqI`EuA4S5YSDn5|A{1syN)Qgp`+2cdOcBilLFWmuU z=b6*UX=sG74w(BWbYef2;l#|uhe`b+qH$(P? o_UVdSx;Zx^UtgOt@cqI*Qo|~!T%19(ZO@ZG@!_8*)tJX-!w?ov3&OHGF zwJqB@wQ;i5{z!}40`O~kqZPL+`VDf9{^!J6pcg)AQKaiN_a{}LW z4_Yjwanm3)29p-z6$3jSRGIA#QJA}E5~e1|N3*RnMg7W&C^n>Ya%MwQs#|Doer&l( zN&w$9tm}{lLsR`rYFFgxx?MWgV4=tDAL5{ef#Wwg!+FJRdV@z6H8!;@2S%t)V!fNL zrJnF*iu?!eCoktFKG+`S?X^Q}Tsu>D$RnrlKClf#id83bXbrd9kJ9!4PZ35_6Oqw& zM?W92wZW c=-0Lig_6Oif+)bBe3}m zhL)I@UHPx2g@waJ@+|S~DVPG`FPPC=gEj4J(LsAHl|EB2^-@`?qV#m#^8?^igv)OX zE~?jvX2mE9K7VtdOET`MT1(}0%u#p}R`*Af42E4_G5+D|1J%zn_9BWyQ6Ld?Xt!xS z%IrVIXDkD%5n`%cL_NCgwXjj+DZLxQ?YY-v9PFQsN(?pLaAHgEu!YRET_e73qXjas z4$*T_^UqX$Eu$iIK;SUDW>%RzB`rx(e#wM;!xC5Yl!}Z@|D !G-9NMGqm*JfUw z>Io1)LcOiqDivS`iMIBGq9kio1TT|iMQ@?TPh{-1GZH{be2f#q4*CGIF9mWojNr=A zXsfP)InbJLN)e7Y)KO@EaJ5o0pR$=Z6rF0X1ty}xJS~2cGZQNv=F4*<2_?7ZR4ORN zCXEy%-0jSvGat~gX>=CGDLiJ(lW_+sy2XrPbaVM6zWma~-W~zQN$O#%PlqRijk*^s zI&udVa+#?mDaX}%axPpmJgChfHWH|-29uyik5|etFj+w1Ae7la^KGeAh~f^PlykJX zZ=%SyOiZI(G!IExx4YH{=QB=tH8glEO7+=$-_EaAR;aC+4nNy<-{oz)x+{vS?Pz@5 zM^`$PyiNM+KX$QJ4AvGZ^sosC(Z(J`g(OEQdQRvjv1BYIdb9mLD4m4P37iDs3D{@h ze=~=Vb)V@ARFwO%mR^_qO|if$P(AqldGvpI!hX7d?uEhJ4#d{JEgNx0d!6Y2{BRRM zV981iAFLV8DO)Z$x%EsSi~2v_v$?onr#X2&;kskJ$O+zm{A520altlGHtm_qWveRs zFVbh7|I?Z>xqUqg+GN4hEbaX4gW&%(rLGB8Zwo2pm(_ ;G>=j1lX0rwsh4!xBkX&hRf+`|AMi=g$h{qFlu~CgJ{1(;pVp7s@fUgFFvyF#m!3 zKfShxvTQ{Z9mhv9`(GAQN1^7A_m_NyU7_1-{YZ@c3rqhR3Bhu1$ye}m>C0^SQW$%9 z$n&oEH~qm6Wr7 q8$6#^HoVV0 zHmo=+ojf3u*aUn{kDrEp3xqdwYi7OKB$%m(vtun-(?;ph1IL8zm$K>84wrJTfB0Y8 z&>?XfqTe*d(yZamg!tt1yatP8`&E(6-%)vi>pmE|wOI$xF++&?HUYv(0r1JBD9n&r z7X(h_Xysq74CO;a|A_3X{dgr;9>D575bGn-3tM3+hY0I(nW{Fjh0~kXHbO{t!FOdD zur+BfxYgNp|F8TY`uQ*UVa1IlWA`6q_U2lZcVzT%KMZ|6T|qSdFEp>>e?W6|>TD&` zacwQ33R|PBt2xnv#=MoX^8>tlU_yoW;a6u2FM)PEZsG$#L Vn8rxe%A799lyjt!zEXZmBx6=sD*9XtC{ z@>^o<#Ep{#>R7KCu+kVW>|hov{%WL!OT0>+7ct_q>(?8@reI8P&nveoEjJcf#|WP+ z_zR&Qh#1!Zc%?_Kc$er7fOw4CAzBSd0Z$@bG6bbrXmgA%`8qNBdCEbOaGXr)z%R}m zW%5o_wVi`+VIK$`LM8dTSa4wn%|rZF{>>OppRK|FT@oM~*Iz#**I%l2!MUe4@|M^B zZL5kJRbym0TSl7i%tclGq-hhFgv!A*01qEx7)@QYlR;1J<$y%eZrI#N0nUR{KkonDWjGoTN8Ws#bHs zm&B;yB k+lxJtsde4t=K7wYhoL z@l%_VSShe|*8nm+jYhm V)_-->~MGrjaf2k8^&CFi@af=@= zky^lvhuqPb1l-mT1S%uUjR++=a;{3y6LD27mx9YJ=4t36{x2$XQ@dVj2Sro4+jcI5 z0YB1=aab=)54arngv~)(DEcYM6vK=@L5BqD$*^$QYPt_Z&KqFZtXe|ns=B60{C}ww z<#_U$WRsYbKiLeXL*2?Y3B=>Q(6DhS7!9BP#%G71BV`)oWr;1xt(;A|E1|jgktgNp zg+*x98+Aom(&};qF=y!;T9xm0i5!FIqjoec?pt!jC~C}7nFR{Nm30nbCW}CsZXcRL zxX$ICh^Yq4bqM#~GR;tynE#J(F@gDV0p;azR%XLiYeI!LQPr9DY&qI%h+XoIsGb5z z)CkV_aO?IC?#{D)8h4UYp|h2PmtaJ)(|-M@Y8r?=O19}xjMA{L0Dlq1H6*?dqMi)w z&hh^8Mv0Wb-?CaT7x*6t{cxabP|TNCs9zD62K;S#?Us?Pmf0irD<*gUgC_D&Ctcvj z%?%_|m%Q5ID)dB;>i S4isJ03TA5W?GJmBQXyq$v>xQ$De~6gS9t+`N}_a zGo$~bV|1fdljJz#+n<+R;oo?*MdmJ=hKcQHNA}Sx{2uW|w7*wy9f%BU!qfPq^RITU zPXnM{`#R*I*Ehqpj0fUU*twWFFinS35M=vqJSxTK?DlUz0!4E^$hxhylaEFg){NJT zn{o+cAP@2NLGsGUKclFQ0T`#jyi_b!_n~Gn!{g&`JS{Y#pf*<5 $h5zfosLUPvEGNzpqvh9igzm{I1n1wY|oe zf#Mt$+AWl?6>F~@Rh_N3g~^In&$?c>9*1_Pb rX)r7j@9hX}&))gz#`{hH?4{g7=ZWW|$pfd}dP@T#>TtFM zT>O^f2xzCB(wj_AU^;$4fndFamFF-4Itg?S92&4mhl7}+ZQp yE9EhUqb6524C@>whg{lrz5US zUtcg5@IqfLK{WYH2{x~pT-2#Mj)My7OBw1LX?S(qyOq)b5G&C7cE-*V&}+@$aw^OO zvmWw<$!8tn8bmE!?5f6Gg?2c{AcoURCy^Vr4hj(F8_&weO)IV3Kuv*zsD|%tcWop) z;hTC5O;vCB6#w=b&gh@s`~$5~;%)09_$^HwN;-NR(1zE?SL{htgFn7^Cq?lwNB7F* zb^#I5U|A>KNf7UPUN_U&F^&W~>AS2n0Nz%g_s#&=8t9()SGMsRxcEbkO{9d2pWp4+ zi-={LramaS6VyeR)KW&b6=i#w`sZGKZ2!fm?u8IN5O?XO dxm%h=)@xci?wkS&R%n-l(H Q^V1;^fkDgpySvU(x_+B;7Pw{&XvC|Q0@oSHK3jhUnPojLq04D^+N|tV zXl>k0iCox?HriaA@5u2wtgue5wpd}?HmX(k@)uxdT}F64=6i^a>aVo}*!7WyA>VKS zpWsDd4WVNFU4`aITu_8~dJE&a`SeLHP?kcXDIvY@PCbrDSh$7LeIG8Bw_zjz#EHek zc*RAA!L5;D2K@b~`T%Jcfo^hk4X6WusD|g$`}J@_7+znrEb%W>==Gb5aOxRno^NjI zC6$kF_XgAc^Hytp$iYe5QXfl&--)q 1O3VDdKxhRQ0^13&VD7qnhY~X`%0_nn9 zjlWq97^`1)x8mjzN~ZXabgI0IDV01!T0(&Z)?5AYO^GE0#k=tnD@D%)>G?q=CdOL) zPe8;{@xUWlQUC^94TZ6}S)^#g_8d3=CAGt%5O{@CG6XrT?Krfd{7ksgF>zQ-(qQ0n z_qJH-*xt+|78Sxy0MQR4&s4WTc*CJDVjL9blJQ6m0Q(-yz;nGi7|Z*4t3|vuAZ7q9 zo5Amv3lZYwF7MY-t3} ZirY;N8lsF6r7BVmO4iW{R8 zg@Bo+xqn?=P2;Hs0 b@*S3SSnhiGLWK8mF`MC!fqR(%?ynx9a;}7`&D<-4E?Qa<2&-Bn!aS%x} z36Cm`b3*B8QahKe6ELqUgLUFL+LuxSdYIP%PwDP@r*zV41@T1o)iv`ROR$6Gh4M-( zDYE2d+s(z>>S6fHxVpgW2p23;RSdm0Qw0{QuB>x z9@sYRU~nyL`{lPms_cGrvUAT}R4&r18%(usqP9!rZ&>K$d)E`h)80~ CORa~yyx-jPxh_0+#yQ_-#RZ-Mtt#OJ*cSus z*wi2RaeNEqfQ=3ax}P^7WZyXT9pDcA6~c2tZ{+nJUzMa@X%gjdrB`OQz$_NEjm>hJ zQ9Y$$79JKstF#Qxb#k7{&=YHy?Uv(dUEI$nYuI|8_ZntBg&$i@wn4LT(O)I `9!U^s^ rl+BzTy!Xgkc_!9RVAj{12t#Ip$Y#)OGMUBL$L1~|kP 1!1Y}NRDIV`Q~wq`E!JbKW@>|1pFPvWmR#?*b C+DF7QggkL6A`ty7#;ZXQ2HEc~3?kqOCsoyEI>KhBB`NNNCpE$t|1~mF zY%g_L3^0@2Ylfhn$m^oLJ9`~UxAm8_q~nwRl$8v|{@QL;6__s0@U%2!Xj%(3wk(3K z*H1dCWf`C@(tl%?WEQ}HMQy}S14I2dDy?XrBOP@)nZzSCY{*krAcHDh?om^H#yASW zkumV6P4A%>+pgtL5^a@shtUu-EYckFyPU4;md=mW%d0eYGL@Uw3RmoF$#S%?H)R!t z)j5%v$AL%ghcJ=@7HG$rZ#>hoh2>7n&QKKdXVLoUay7010(YE6V6k?qyK|tGz3z*Z z$DOCi`Fba|uClst@Xar(NYjT4GAK#xJ+eP}On=~3hhP2Jt=79-Y}V|0R=eyr%(A^2 z-A4=7lCcoK?us9AX!0^gv2&N-n>?Jpa1dawm7wZkJ3<*kZF0opFI08qynw^lzY^AC z>&ft@>ch)7Eye>~w>UlpgRPLmq4)eoZDx6rzgBp|z&-e~>GI3N`zC*DEGu_!;E=-< zkSBKvpu>l-PhHuU<*6_ifSgF|CW1LJ7R+W|h0Yqq0^I+o1$66FO*wYk!k)NcyiO3@ z5OAKaTC@jx)Se9mMb6ng`1KMv^vXCxVL;^s^*ZNdyFIU*QuoNhSQ~jdPZHU&oaD3^ z10hOPC^ODe=7FZ)Qp*-90}-S1)}l7to(=_;8mxkV=sOF|QPFcYQ0rqf>xKP)dt@P~ zzOa!S4$BsUu#Q{#O+}uq{UYt(03qR{V_Jw|Oj*W$@zH};Jey5s0-Z)f(hPf34rN+H z$8C|VQcy?b+64*f`g(h8&GiOD2huOSnHpQ3i$RF*JuahgY`7P7>f5SJA|7ld$47}2 zTKky-Cr<%$e*jq2PN}(WD<5(4H2N;LKZ#v6-mg{VT4qAG;f(DU#6M2-<3>0{MqDqi zm79YPIOrxuSoCEwOf{S_MQXW=DdmI5=GsfDgQ0&!*@w_q+57w?1spy|Kxy@C@ZPVU zOiG-rw?F!1x)ogk{BXB sW2AHy mTMK*;H z48pQWd#i&GSd!Na4`NNR43hTq^fOBoJ`;oiX87&L2qVn|k*k18M(g`f1d1hl$z3-4 zELWYD7k}W>AMP4qBZKR^SV%Gw0mAoDS3PQ9dl48F&mFw(*3N_YA&E}4-Nn+;O)mjE zM2Tcz8jvlJxHle?0#y-#1V5!Sj>WTxFX 6OqX<-_C@7DD+!eUg?jdzl>6D%Cy*C zs Q+RiWfKpr zzYj>#y#Rly!MiEmT2?-aL~<^4E3ZifG6r^`ohi5Cf^-$$r6LvVX)6Srj% Hx7a zlpJ6?&*X!1G%mwDce|Db)sSUL7ss+XtkQ1BeTP*JR2$*V&lC%B-j|lLRpeddd$}+P z4UX;G8Qf|r-OLSkkt_YYZGEV4^E9gqOD%Bh375b3m+6zZK_TgZm220PCOY|Zg*jUu zBf*x&x(_Yc0WXp|zri)&CNBoAY{$q84+4Wqd4>npU_J?2ePt@-=1^z(NLafqQ|A98 zdxTRm@Jc#}1;Q<{+l7lvHknr-IKfONWy)xofX_gkENim%Bh;CG6Tds}ay?$SgC)d6 z_#?for66ZYbnN#D2k$+Pdv L0*ef!(W%ywOdN;%W+{7&ShhG(ZEXjK0WLWFYMem&CGB*ET<%bIsq={ z8n(Dnuu=c>>OS0l&iO(=v#!uDOU3hp^$_CC60<|RS$pUcNPoR3TSFaY8D_89@?HJ; z$tK&-7;(WvQF63@*!C|P;Wr;00csK=!cBcrJ)xCS$a4%e0*&bW>SBWjzJA2n0ZP1) zQ8)woE|eDi oXe@1d;{0z;6NUqbH4LXsz56IqlzF0?r U{xJ`VFU{Lox9-8DX!;qIH{80<1Kta83zgT@KnMwScFXiG2>2WP+KP z%m-gUdB&`kJpEb_^GR7BQY>b`Eg)#gq%9K&iz =7729xx@rhAJpS`QmTWcDcGnduvummyzF`ff# zhvBOvQ*jzjr9cLi&l-aRh0^ue7RRH+(6G#1bXV%m8siuus>=IyCyKrOgEY6iKYg#L z8W{R158EXZF$(!NzK;OkRh~5Rf^9o)H%AgLA&S)?rDhJf$Z1dHVQp^Z7$)&Vp>GN+ zza>(SWmNU$;q|*bKU vv^c!6T=iaJAm@?LUhe9WjsBnv1AEyRraJS*A;7m`P1 zHJ&M_N*7YphYBUx$IJuuqaWEGXG(H>4KZ&;Ncz3|*IFn^RJuC6nAowvas;1xgFf;6 zZ0e`6S-JNnv+UFD2QEph;uRcN#_R!9byui gUcq03PQ&s=6!`(aXM16ybaK za>Hn7kjE)tjKEJST7bV%Xlyn${TGhB4`tyQ8hDqlgTFOOfFkw=oI7WX#0>_cG_xob zUs-cE$KY8wW0b@50kXIKWVAOMN*1tze3Q3Ud^V%fu5)N^o-q`V64Hbk+NAI))?xM& zBJY=*v$}~en*ieI3h%3NX _tj%Ut^-jTl~jpd0Yf -m)y#288o?8;d3`ei+)&1&zX11(<=`__%`%Uoa(&~YEsmgA3Y2ALw;UMtE`u64{ z1BVDTQuk4}AUH{Kr}0PZ8)&e@%Vn5-nCntJW#D5TJIEv6t_|jxwtN@YuLbm*IPATe z{3!2i{89CgFOOZJIbXO{!s>cyU)k3qP7evOWGOf}Fd=L!95g`)5a*Rj&?L?lF!G{? zA0qCh%7wN2vVoPopKrMXl$<;-VuN~4y=+zbgs2_UPg ~PF-&~N_CmdvWc~v@= zay#1mIpk8&zeJRmLqcI9M5Zq?zxM7J)&P_fuEE;V+-=vL^}6UoALn>pR;62Gga5{) z<)Q8LRy@_X2