From 33f27bfc81906d00c06d0424d4de0ceabb50bb40 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Fri, 17 Mar 2023 18:21:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E5=88=86=E7=B1=BB=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../master/rest/ClassstandardController.java | 13 +- .../master/service/ClassstandardService.java | 5 + .../master/service/dto/ClassstandardDto.java | 9 +- .../impl/ClassstandardServiceImpl.java | 67 +++---- .../org/nl/wms/basedata/master/wql/mdpb.xls | Bin 192512 -> 192512 bytes .../api/wms/basedata/master/classstandard.js | 9 +- mes/qd/src/components/Crud/crud.js | 92 +++++++--- .../views/wms/basedata/master/class/index.vue | 168 +++++++++++++----- 8 files changed, 246 insertions(+), 117 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java index 5133928b..3148074d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/rest/ClassstandardController.java @@ -7,13 +7,12 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; - import lombok.RequiredArgsConstructor; -import org.nl.common.anno.Log; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.common.anno.Log; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.basedata.master.service.dto.ClassstandardDto; - import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -122,4 +121,12 @@ public class ClassstandardController { return new ResponseEntity<>(ClassstandardService.getType(type_id,level), HttpStatus.OK); } + @GetMapping("/getClassName") + @Log("获取分类名称下拉框") + @ApiOperation("获取分类名称下拉框") + public ResponseEntity getClassName() { + return new ResponseEntity<>(ClassstandardService.getClassName(), HttpStatus.OK); + } + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/ClassstandardService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/ClassstandardService.java index 6960a855..2772ff7b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/ClassstandardService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/ClassstandardService.java @@ -124,4 +124,9 @@ public interface ClassstandardService { */ String getAllChildIdStr(String class_idStr); + /** + * 获取分类名称下拉框 + * @return + */ + JSONArray getClassName(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/ClassstandardDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/ClassstandardDto.java index 57f934ba..2ad8af16 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/ClassstandardDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/ClassstandardDto.java @@ -3,12 +3,9 @@ package org.nl.wms.basedata.master.service.dto; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; import lombok.Data; -import java.util.Date; - import java.io.Serializable; import java.math.BigDecimal; -import java.util.Date; /** * @description / @@ -22,8 +19,6 @@ public class ClassstandardDto implements Serializable { @JsonSerialize(using= ToStringSerializer.class) private Long class_id; - private String base_data_type; - private String path_code; private String class_code; @@ -56,9 +51,9 @@ public class ClassstandardDto implements Serializable { private String create_time; - private String update_id; + private String update_optid; - private String update_name; + private String update_optname; private String update_time; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java index 04a5678a..50736c2f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/ClassstandardServiceImpl.java @@ -11,11 +11,10 @@ import cn.hutool.db.Entity; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; - import lombok.RequiredArgsConstructor; -import org.nl.common.anno.Log; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; - import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.ResultBean; import org.nl.modules.wql.core.bean.WQLObject; @@ -23,10 +22,6 @@ import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.basedata.master.service.dto.ClassstandardDto; - - - - import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -49,10 +44,10 @@ public class ClassstandardServiceImpl implements ClassstandardService { @Override public Map queryAll(Map whereJson, Pageable page) { WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); - String base_data_type = (String) whereJson.get("base_data_type"); + String class_code = (String) whereJson.get("class_code"); String where = ""; - if (!StrUtil.isEmpty(base_data_type)) { - where = "AND base_data_type = '" + base_data_type + "'"; + if (!StrUtil.isEmpty(class_code)) { + where = "AND class_code = '" + class_code + "'"; } ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "(parent_class_id is null OR parent_class_id = '0') AND is_delete = '0'" + where + "", "update_time desc"); final JSONObject json = rb.pageResult(); @@ -105,30 +100,26 @@ public class ClassstandardServiceImpl implements ClassstandardService { public void create(ClassstandardDto dto) { String class_code = dto.getClass_code(); ClassstandardDto classstandardDto = this.findByCode(class_code); - if (classstandardDto != null && classstandardDto.getIs_delete().equals("0") && dto.getBase_data_type().equals(classstandardDto.getBase_data_type())) { + if (classstandardDto != null && classstandardDto.getIs_delete().equals("0") ) { throw new BadRequestException("存在相同的基础类别编号"); } String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - + String now = DateUtil.now(); dto.setClass_id(IdUtil.getSnowflake(1, 1).nextId()); dto.setCreate_id(currentUserId); dto.setCreate_name(nickName); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); - dto.setUpdate_time(DateUtil.now()); - dto.setCreate_time(DateUtil.now()); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); dto.setIs_leaf("1"); dto.setClass_level(Math.ceil(dto.getClass_code().length() / 2.0) + ""); dto.setSub_count(new BigDecimal(0)); dto.setPath_code(dto.getClass_code()); dto.setLong_class_code(dto.getClass_code()); - if (StrUtil.equals(dto.getBase_data_type(), "03")) { - dto.setIs_modify("0"); - } - WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); wo.insert(json); @@ -149,7 +140,7 @@ public class ClassstandardServiceImpl implements ClassstandardService { String class_code = dto.getClass_code(); ClassstandardDto classstandardDto = this.findByCode(class_code); - if (classstandardDto != null && !dto.getClass_id().equals(classstandardDto.getClass_id()) && classstandardDto.getIs_delete().equals("0") && dto.getBase_data_type().equals(classstandardDto.getBase_data_type())) { + if (classstandardDto != null && !dto.getClass_id().equals(classstandardDto.getClass_id()) && classstandardDto.getIs_delete().equals("0") ) { throw new BadRequestException("存在相同的供应商编号"); } @@ -163,10 +154,10 @@ public class ClassstandardServiceImpl implements ClassstandardService { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - - dto.setUpdate_time(DateUtil.now()); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); @@ -182,7 +173,7 @@ public class ClassstandardServiceImpl implements ClassstandardService { public void deleteAll(Long[] ids) { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - + String now = DateUtil.now(); WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); for (Long class_id : ids) { @@ -192,7 +183,7 @@ public class ClassstandardServiceImpl implements ClassstandardService { param.put("is_delete", "1"); param.put("update_optid", currentUserId); param.put("update_optname", nickName); - param.put("update_time", DateUtil.now()); + param.put("update_time", now); wo.update(param); JSONArray child_rows = wo.query("parent_class_id = '" + String.valueOf(class_id) + "'").getResultJSONArray(0); @@ -245,15 +236,10 @@ public class ClassstandardServiceImpl implements ClassstandardService { @Override public JSONArray getSuperior(JSONObject jo, JSONArray ja) { - String base_data_type=jo.getString("base_data_type"); WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); if (StrUtil.isEmpty(jo.getString("parent_class_id")) || jo.getString("parent_class_id").equals("0")) { JSONArray null_pids = new JSONArray(); - if (jo.getString("base_data_type").equals(base_data_type)) { - null_pids = wo.query("(parent_class_id = '0' OR parent_class_id is null) and is_delete = '0' and base_data_type = '"+base_data_type+"'").getResultJSONArray(0); - } else { - null_pids = wo.query("(parent_class_id = '0' OR parent_class_id is null) and is_delete = '0'").getResultJSONArray(0); - } + null_pids = wo.query("(parent_class_id = '0' OR parent_class_id is null) and is_delete = '0'").getResultJSONArray(0); for (int m = 0; m < null_pids.size(); m++) { JSONObject null_pid = null_pids.getJSONObject(m); @@ -541,6 +527,21 @@ public class ClassstandardServiceImpl implements ClassstandardService { return str; } + @Override + public JSONArray getClassName() { + WQLObject wo = WQLObject.getWQLObject("MD_PB_ClassStandard"); + // 获取的是父节点 + JSONArray result = wo.query("(parent_class_id is null OR parent_class_id = '0') AND is_delete = '0'").getResultJSONArray(0); + JSONArray res = new JSONArray(); + for (int i=0; iAXG&NgdjbUqKLo?h|1a)dB|WxY%98m zAV^Wfh%U2SPPHsU&(8&H2ZvNh@E%)t*RKL{K)!E`bdV0#6iN?+2J{i9A^ytSv z@o5ss2IWZtB~SIE(Dr@kEn1+rZGPB%uL7j|+;%>!v!4g!gRae(zHQv*_Uj@WzLV>wG>J2gG;EAFuxi*V%q);*RXuf5!u zD7SJs>*Jt2#5ML53iNg4UF;gW1+jHjJ7vUj&GwPgr$U0GT}s@-IB44Ik`;|yn@2}i zx3p#T4h^kAOEm>u&O#W=U>4k3Y>Rtj*s^*I+Wc~lNm}Fr-%z%|7r6Zz#=GYJ?Uv0m zdZ#4tA-1(;?QM-GHL|rW3%8vpv+&~0{*yL^S!e#8(rcWLnILXqL2N&9&pi2UWu=pU zxFcW^VIjK|R#7&y^ri)Oj3mtZrow6m@p&;*2@7D493jkuPhJ+gFl^i{VDGkz-86U3R%sd!tAXPC8)@;hByZ;VCU z*O&*I=e?DK-{}9sdv6Ap4IPs^>ik=EY#(qr6lIRBH)i%~erh)`_mmGda**7B+xGb1 z_i7Mp-qw>Xr#be^JpRn^HwFx|4hil3&0V$Y;!fXQc=MrQbMpV;`=iI9eeoS`_dm3B z?TUVhL63%aoU_C?YwF?WZi%w?nAq=*%*RH={2W`A@3#t(0*UAEUFvn=58tg!X1Z;73;VeeCC+DGI?-&hAtiqutB0C5yRA$4hs|bfxO@NV ziBBeXv+mxIGe6{9?aWy{m*)k1cgvRkr{DhO!}P~L8XNIU`@s+QdbdURQ#0B<{lvk; z&&Euh5dP-=_b1IBGN%6%k@vn9->K=)w)=ZD-anxDo2`qiKV8^9c1iJ%S*6zv%(&0L z{GnN%iQbJWGivyhwZSzfZ>s!qUeCMk{>R>9KerpzEP=1&ll({hd~Ks%i&G;`ip7gc z!q*<)3$7h@?ThOdzcF^u(2hTT|KQ9kmyJ%f%#P>`8^~g*2pUCP^*KzOZ z{x4qRGwdzviuj;4<9m(&vO4-ItItiJJ~;g0fO)H<-~D^<9>3i5z=?aWf9B@%_dU@5 zrr{5DNglMidzw#eYWhvJPhSYlki@=Q_{h0&_m6pY%X@Q^x@PtHbp0a%zQwnFRx`cX z$Zv+6E;t(S^xKIOhWu1sx?$wIC%dnHVD83|vzE*~^>e^me_zzix4Yk8Rz3r2M_k6f*%I6E(p4{|# z-9z6@KeKD?5B{GIYHPi3^~p7FyuK=RTi*Al(>qsp+}!oyuV)Vm{jB!s)6Z0fi+Z*9o&k1ia2ar5jGzwAA7Jb$F$4?kCpPU%`Y+~>i~MLjB zWV>f+rmw}a)eAzJZ+>U#^w7>aPdOM)(0@wd=X=Lkbrj~+>S7^5(Ne`wgllb2-htJ4JeJUC5&Z4g}i|9Q-mQm zGuA7Vv6%?(L-+wg-!L$^6bvGKZK;*9ZwR;rKsaNsAp8p9z+1sc1Zse=4&k`lP~%9( zY7quBV=VqJXqD!OL)b2gv2C|A_A$cTI~XgE1~UkMLAd8mv{(zY-d&76(UP$~cQZD% z6=R+M%2+yD+Q+&a1R;zcNBDPy_uhjpfUfVlg0bF^v1<@Mfv}N{v0!wC72&N2|FV*? z<>-o6?qzH*x}ta$V^^UoK1cX9!o`BIW$23Z)o1~9!CHh*BAj_2V{_3JeeY*%5W2v- z8aHn@-h9{dulqMzww|#q8yTzEY)k&4hCqRf40&+c|P(E_s=@r|LAnz z_n%i=T?c18%5WdBtxd2tCRltb;ic(Go_s~sAKI-uns0zM~S%(>`p43&APX( zqZ#%(n&d~P`@a9WqgfYDeY6WUcn4UP>D>NjJMpjfO}aRqdAcob-)>vj{tVlv`;u(` zJ|1o>-Jk3I(en^>FS-bhq600suNV}@yT(Bj>9S)XRE;10!n^}f4rBD(2!F$E+Yht~ z8{Wu)f*&PuZ0{dP4Rh@#%GrcGPYF>qNABkAUz4g%DH zS@q6>G9ePIcTxOFQ&xckcM}mePob^aKr+h9gZ+?)dYT1Cu)4 zfzch|eM6-xq1hNuJ-ELlMxxOrkL~U^x-@Y`s^7?QLoC(qNJX`K zuIK6@KU8uHW;hKg zGn|H%D?UyYOk>M6Lg6&N%y1fGW;hKq7u*lw$b4&b6WDO@dT@3U<7MCGzrB^n z8+CXY>-~c;o&N1EplquT&+pH;@F&b#@7!5La z%t|B79W)bCe~^rFl|2^`QWup`WJ8i|=w1=B4c#%a4ILQjPnlsHI)Mr!+t86vVPqS+ zV`LjTV}`)&#fgF;Fne?3uMcDgrJ)*SMsgxaiAZ8*apNz0bMQN_H+IvEF>WOh=dmVO zoC!u|ku#T+m&_t}jLafCw)vV*4|;gr`xawUY)M~WDIt!9@~2{kdpTwov34qp$tWR5di?~_q+;D+V$XLO8OAeX!SZ612^1aI`>+lPao1Q|Y56uTEAKwcWi=t>gi{SQYNz(-W=eY=x0z8*XvLJ0#nrQ?0P>yY*BL zw-NM*$}(MSxrj1DzWpa;nVBfF{s(0l4GX&_(M6f7eA5jsmxS*2)~}akW}-}&Z@*QR zXIs+wR-jUJo@mX%XWz}M&*$?1 zlE2Gq;YK?PQFlR!2$HaWw;lg6fDgBw{jn84Y>W7*Rq|o)Z(Qt|;a;Qc&m`T3`<=3{ z#Ynmhw_W?w!&aitq;rKBRQIk-(@1RUwj3dY$Q>iQ$iOo7%8@KFFk|rm`DDi`t^6vf zT*)wUPe_K5J4S|)J4V99z$$fmBum^evWwg?D;Y)xXmCh|k%1Wm$uKf7BOM8orYuTM z)ha$xR)pHn9V5HQ9V25Kn40@WX0o*16Oxtfj*)@w&J2xXcZ_6-J4Uj^f$4Lf3?m1q zgai$EcZ>`pcZ}>JcZ_6-JJV#uxMQspK}QoB>U0P{$VA&_JZbZRx=B3h5q1o@x#kUR z=fNJ+-D95Y5mqRMaNg15A@-qI%z5i5-%KLmiRt->Gyv3-hNq9jE1XBflOBkMqgxnRuc3@#tm$y9rv>1-ncW^@)bioc{3}`AY$4g z3-Ch$bJ!PnCeHj&z+CpFPRP&BnI8(cmXRq)1^b~%*6QiKaYqfMa{I7Ee!~9bi`smJ zCz7?~Ad(FzzVPHt;%Lee6S0yBvVG^UlX}KRl8LXyU7oyG;5T+qQWNiZqTl0XuEsLg zDLp}Bnd@88%!~JmFnDN;Mso1bSbXHk!=x0TvfD^1Qlyc9KAVBydhA5FiPh7dyOpUwgg) z5v=hr(b9+ePVOKx1tQZ7c0tcXHseh8qy5Q)mCFSbb!#B%UcnY4j_MeQ&c9C9k!=3! zWalf~ht1M)U(ouAi4QAy;z(k%lPobvmiV(?MvyF#lq}_@y@qm`I|!w1W5evYQCg6_ zv|X$vX6oQT-a?!T;GTXYajBFfk>krd_o~2214T60&T6ndGZhw$Ij2|+#`u`Y$Ys8Z zH3#k|l0$e@Imv6Hm@N6GrPu^){HsA80=_5UxPbBG!6w>UDg?aGwzpIWik~3s6oTR> z+DAzUil3z8zDVIIV*Gf=;uKjJIm;*D?13WRR2JrqC*r#)8fl`;*c1ho*&C^;y`ZM{ zf~b+2icO7-Mk38ZRZ11Le!O*)@sdoaB$FY+8u4D8X*olp;v74Vzi;q=4u2QWk;#dr7dFoC<|H!Db-1N%ZmO5u$e! z9xkT)LxLy`NCxUAWXDo669KTm3Y#hXO#tIQe2cw8K_qvN~R3L6BSGw zElR3I$%2>a1xKM^12<}-X!)?VJQ%rYk0A=f}+ycxv zq+JUzGuMwE#m7Y1aY_DQVXN3^}A-3oxWaNDC=K$mu{Lqy?A}DIvUh53+!$ ze5J=*%JL1_*HV^m$i9}ce5z(k+3v%{!vQ?Xi)L_3yO{Im7V&cc@9Y8bCOQZ5s8-Zv zt?X>Hl57}~td){v5rJ>BTvh^cHeE}@{F)~g2J)`f1=4u6fH`*)Eye_+HH&+?IEksH zgJCqsyJ0k!EWoG{V&#aipb;QQufiap+FH;G4oPZ3D>x*n1ufx_q!#polB5>9fTQYL zP<Gn>YW~L|qr-TLLtWO&`p2Oz4&x~f zb#WL^aj1{OaEVh|pIVq&Q)&Hp6ut@OplZx`6#fV%V0j1+ONH5>a}kfy)ZC3nX%0&z z9;GQuB_1X1XJ^HWAuxpB#(6kT55|hbwN3e*0krZ%Z9tmThv1<+)F)iZy8v7D@d%L` z%5%g2im@LE8FF(BXUS=t1?F?stG^gOk>kJttzLKV;bL_d$I?~YS;lGYdNp`)_~M6q zIiA(pbv;T{@pA1d-Y?@1izmZ*sGIi+0|`UZbp?B=)vB?cyVPpcNawOxHN001uT~wa z8(Lzk)v7C|R;#X77XP>#p6~UES|M;Z`==R z#!m)DAOR&OSM3HCDf&0(Qv#dmpoavTi`~t6UmhhIMe*doXg$tT#^ zt@LKX$0eR^!AAv>pPXtz^}sSxgtr94T#RkWy9FACFD?Evwi0N_Oj@i!W{MOG)_TUOEkNqBc(KTW;td0W zRwyta#2!j%SOVyJwwJXQAu(v#HhMv{vUrXqh@mlj0RLI6p}4ksTrlD`uy*2D3>HW2 zWhFvbusC%+7DqX;r~*wHY6&v)H?WRkQY>1clh_aoBAxX(vdTALx$!mP>_nO>BE@ka zlB_2Tm7JuA>*K(4svY!Y|6*xkcN|D|(ZMjJe4eEXE#9eiVW{0c)>RCOM@mD`ha=?# z2>QF@!Pr@GB%a3v48;*3HBQM~6^~eXs4++_tuaWu>7|fmxPf&S(QPnDjgd=6AdTFW z1R5ik%(V@yx$sYrBX?K=I566mtS4&Ul?iCyL{UR=J@gXDvf0FX3QHp5dWq?Yi0iG# zwUTjt#QH@3kS@q8xe`q=7=Mlls4$vz?ikq}?iguB2llj_(5+oCMUT7}_H#1nX#mSv#44olUSL6D(O`O70p=r#PiE#9FEemZmU6kSqDu#Ux?6 z6J`|B)dZu(w$ZFcy6z@e4;QRJ3GJRPpu&1NVaE9A?Sd($`zTD@-JZt;X6j>%Y|2e6 zOYCZo!JMswWczJmIU>CSz+4@S1^5Wd6B{~U62oMHI16F1qGk*vLDPG8i(ntpt5VY!bl1I_Y*2EE21d_<*D#0I4SJV0$cw zXuU`Nt$(IFYaqF5)}31m0GGEPiE6^H9!X9WT4 zyC6xDagm~TDl!;?Bw2#Z#nx107$ts5MHNTu#8MD90qfJ=X~=N34yFQpm5mWw(@@20 zbTAFz9yV6A>jH3`4t9}XiCEJGtv6nL*#)GHmQ9zWJw&^7KEO{Ys}P7+Dd%nJPO7S_ zOz17PraLurh6H^@yRLjVgzE$pNJc<+_x4)X74223v(r;%nkXL6KyAu&u$KfUiRf+s z4I$YZAPLEp-K3DL=?2CPA=yX9^%0it`~j<);+6dGQmAF2^W3f7Y>BCK#_Y>6NtbJa z<(Xjl&RDv>vD4QX)Ukd}m@!KW6ecQq@Pr|*R(YXQa)Zx-CfFb+%pf~hVm0D8$lCRW zk^w_i6dIchJk?Ca5_2tnm{U5V_~B0JjG{)EU?ZI|LvM_726bIB+624G1iRV^Gng6U zgc;)d8i~2u^-*I@z;Ox_iM@DC;I;b5%fvw1&nAmey?9pO6g%k49$-_&x?ZrXrs-f7 zQXXd0#i?FSwnvtM64&&2q7zH)tC6Og2(}!79W7N_m~0G6yLquvx;t z52pQWF{}^b=T5THptz z#)Kat#d=Sk$w#S1PY#m>l#BGfD8T5+VX7x(0U?n5Qd&ON7X@VMl^iaa%@TY1IyLMF z3Fe62{Qw&3btFJiuUq?J0Nf&e>4(C@bSk4{+^wQ_0aWj8dU2za>V2#L#Vyklj+P1k zBK8!ZZ46C%l>|dY_x=EH*Hc~%a09zTZ0OH>@e|^!{ya7CPCaf6;`Xq+M5h5@xKbInQp_BJ4EO5bLk z;0E@zcy0uy@!!RT5pq?%9VbKq!K#7$t^ z#mcd=3v0&md+ah)&83@7=EzbL>=qO3R*5+z5A91-0(%DkYGb+*-AmgGYDQHOHyYa^ zz8iJ7Ws$JpKN z%DqlX&&|EQS#NMdD1o(lYYocezW(qq!8|4AXmE0bdzqy3cE${))v#yX)uLCPbyrMz z)?G2>S$D!9x_b+f6CIdRT1NASnIt4Hx_jmb z6O26T?&-+0?v6Eg!6qx`3whSv6Goe0Ele=-tUKo=^+eZDz6(ulc+p+FlL1p8M_<KQd4G~MO^-?&1yk`P5oZ945FNITk{!F(+OH{tbsj$V2kx!TFm-{v|eM?d-4${ORQA zZ#fG~6T{ITf(6GE7B8mGlIr$NS>;%4HoEzxw#>pXc}p*o9N?wwkk~jI!^9Xn5fZEt ziE}U_4of;AEJ8KiJ#(DYAD!TshjSEL=Aavn=p>uT+&x9&T;%Sh=WeFwo{QW@casC1 zx_ir9Ue@AmJvTYfOW9HT6YXQaBhs(uR|meUgXB&xW$%f#*Q34P7ss#15c)umYa!!~ ziNqVg(T6%ne)LjSBObg#s?v9F;8WZrbPT%7eYp^8g2kC&@g`Vn6ReFhW=QCUUFNPL z-^^v+-kG4jBq5)qdqsY;%iLKGk^UiOyD1MkeuNQ*=Z5Kgio{Anw;SaVgIjLB5Mt2c#LR#Giq%JcJhcXgkW!Xvy)&? zF$DVqH#-S-@{=#54cwP+=F{zFDmlurpcLJg^1h8Zc%e<&G=spCOVK@sTqpPWLdf-f zOQl>7zXeq?{f#0?+6mxyomjIUXSZ0 z<1UDO6!)VDzYTGQKIksvei9>YLtOl}M{nc(cuO7*d(wj3Um_&0eG+U=`Wjaw*p%OG zYk4~l*I+{t!g(U%{ewGbqnIdJj{{dUOX#9lb*Db**|%6sfYf-DPr-RyoJ?> zpv1;Kg+^uy=|sA583eRS`rcYyokdSugHYpjbsG`VB_r{no*2%EG5Jlq7B~w?Qny{@ zc@5FQM!GsW;O&8IV*cNGbg!d$BGZVDAkd{g9b~B(YE{ZUN)PE?;$qxgJi?c9lVPTa!3;C;7@;P4Qo&QkWxRT%GMGmhI#d*3VZw}CVxz(qR#yLuRS@68e zX1a`xxfIi@FNf*-U6~eF&~DG5iHsp-Z@1!leZFnigO|g|T31Hy;rT1Rw5T7`i~rL2 zRXyY8@h@}zXzcGqyS*;HUBi3$9>6U@BJE+Gm_}olp5E2N_Yr=8|6}<7P{%$(_%Z%# z^=I4i6KV3Bpp?;e;6!8;-Ta8ypYZ>)o=VOpn2A@^Tc%CrI>a8moJQK9xsCGtZ7)2* z^R=y2`~@t;Ns7?`-P&BukwWwks!;b5p3C-aYqbtD3DdB+h(Maq#XU{j=$b4z68~!pRtz?vwj=Ln5oQs<*kVwLRH%TrTcMDNFx`@gyE#5(p~i@H;vL&@{f<9!~?kZW4XS%U>rz4;BzASvtstfWdpo(jph!SFcma z(xEQ6k={Ren6_NjHI(?Hi;7TpkbsNU^Kd=J&~g63BeW6^sc6mf>_Q&B<%~R;ZtPOq zQ5hvmN13u!vh=D3@G%YGV_oqkdI4k=Y*)nrP0V#LuHH0~)(gagzV zmxg2{d?j=UT~ls$n>@OV=!bkt$S5HszTU(mt(i-oc9|l^6wF+@z5#qg1Ng=U@aG!9 zw-9bMYEtJYcxwY0wl{#k&;af#3LW%!I;GF7b1Hb3Q-m{KWs3U;FVdDZx_Dom!(cON zNIMV4b*a9J#NhZd`bzeR!LU=y$SyJKt3RSo98F)c)VWJW(c((Yh0LYqeUiEKfN5Wq zEOk??IvxMuC0eGx?88i>Z>ajlJ%u$8I!2SwzO`|=_o3+hJdgA>RQ!KxcKw(2Sf)#l zB|5sYp&s)OzEukfxcDqujqMnt2j&~ikI=mbj5M^grexcZ@6VV;)uv-GbLszniFdnJ z6L|5ynjGNhtJ|)iua+U-pV3!u{-5ou64s1~Sw%fV(OUM+KZM0*8`uT}+{T zM~0703&>o$+XZ)+9G^6Re`bpN2d~uDHdTE?{UB>D%GdM8ne<2(LF!I@M(R#a!iP9T zto;A3q}KQoyK=QwiM@KGzbLG`cvqg&d!AAj|9@9fGtlLje9m_L4CjbHdRE>qcL6eu zJ|V7*dkT;0{Y>~&r-=WbgR+_av^hvy3aiNhi9VseS&n-x0ybg^Zs;PAF1i;RUgnWg z>1i(|Ln_Kj7h!a%C-SJP%^AWHvCa!e3i2l!7k%N5;^?B1)LmVjAr9zyb%ZE-9KY01 z@i_Oa?~kAQIKCk50bhgQPw?n%@4UiGQm*|sTaVKN^od{kvHMi6k%$BD2QFsf=%+ir zobWmLc|o`I#70SGb#&^*< z(jv7L$+@097#aHM83?6ZBW4T+ zDayfMrex51Ne*=eDS1N-5@BNS95-Xoi_Mrl`?~2Un%d5dL90s>x^kF(c}=J@NU0lQ zump?|gQMy(Xr(3uhc`CJ;YAqCy&?uFbv*_r>U~_LH{o`K?tM(0uLW*FTIx?4fOPG^ zKaCiQuf+Wng!2%t^30H1?_ zIk9Y>lws5`gj4A>gs8&CbM301WlLFp<}Ey~0z;W}GX^&$xUr4}t7GIGv#_h2dbl;a z9s@dt&4X~ni#PCt8Y-QJ&^(=mjg{lKy%dhb1kt@jdQ4E9U?J&qnHgky5(Zb2p5~^J z-pi!|IQZnKsj2}7LnPjf44y6-%+otpz~eH~+bb{vP2_zU8H^fG6XTpT=I&Tt%wvIU6nz13PXYlWU> zI!QwAkTOa_yH+YIbA>JmY4WM`O8OW|(LMc2Jw3_y8n8`eA4N#5AH@E3VY8UbwP5Ss zD`H~x6*6(Z6B9)`6a5gb^0c5s!ITwTW$0Xavh7=r?2!$H1oLD9C2rP0+^m(YXklwm z`^Pc12zyk9*_nTHY2o7-O;k%is^!0w`LN2fTGHFWJlXK#JPV05YDMdMyjCKftplHp zp63 ze)D7BKev5LOsIT8u)1qeF-5Pcrdp>*)_5&?U!_0z^vj1KAc;^WB2IgblAjgwliru4 zE@ey(f}rLs5t3lN-q^|*BujJ@y1`K04sl0fomD}ovytsFs-uU6neb$-xS>*cju3&z)Xj`?bFR%1?3i%=sY z4GtSya)#z*4a>6(%gTm5WRY`5W=}$< zp$P58P#|KY`&ErC3{y_bX{?pD*h|9>V$RaRl8`gFaQMJM39`%f$l>@yW37D{4M*zZ z=j`oAxzqf$AzfAO#>^?R959sIF(T_{-s!J(@!BGbIOC5Ie`R#2J&!|5(#l-Px?k0i zdQYGqtyj>IB&2CdQsKtPS7XP=v`dwx&DkJ~Q^lsrzXMv*GHCEH%b?+f)g&lyGVu%QD_#rI za(L~k{!*n>^w;{L@vDNRo;lTDsv^q(t-z|RD>A&Oi>XuByUbA%31lfaddm6U-9Dok zSmB{0+hl}}7Ero|)+zXgl@KkpL0p;{B`0XbTzrKs~QiAHxj+VNsT=#rM5 zi@9cE*jaU7kE_Ax4NK_vvFvD0(&{0B85P|r#WYQQ>VGTMSLyU!+V5@BDFNooI(8f^ z-K(ynSV|vqO;A%4HyRQe60YHyYeGa$AhL2gc6@2wE01292B}$Z_WWx{&gSg=$(K2mEI;V={(A_@{kydSB>bZsCKYA8FeZ^0lF`ik=V z;o8-@HQF;mi)*cn37E`ndzj?W`4&qfwAM{si&W%xBBH&b0Zp5gn`=ohtG((HV%{Ij zTUCYtW+@t4FfeQAXv=`S(dHRdv%!E-*MbEJiKYdp{%*K=$%0i(U|hI2uWO`R^SVSf z*u13NiE>&qZDiYvwW$j^v89<7_40Bag*V?e{XV^6625A#?s$r2PCeUg`5xf{Z8n#3= zo*mRYkORJcD@#aFtEs2usHurGMh#7SqX0|duOrWyL7RpV4WdfWr*NKL4py8FTir0# zDZwZ^BMnV9V)QrLxK?T8Dvfyn^N@_j#;CcxAn?fAceWueZT+sr<}cAv%w24zl4(y0 z+sQCA3Ntf@`$@tMbC{!;%dv)oWIoc!O_{2f`XoWnR%Eu){G61FLyC=QrFC|3mnbQ( zYlFN&xt4XQx>~lHtL4t(TLCvo8q5 zSMgfcZVp3@Bnj2tpG_#ccFIi4_&Mb>rj(k~MLIF2wbnY^k=-HtS}`#-Q)?xH#%eyz zT@%n)Ql<1~V*L~?S-h92HNz{5$R3177VX+-E&S|urzmQpMFl&PkeS7THd%o*iYTqAZpv1IwB3|7PDD}rT#A~*ko}!}t>ip6w+GY$#?@&~-s{t=8d%h5@JA^J1o`a+sT&wpjO!EEv|$Zha=$*F6`b$YIL5S+^MG$VwxLMiB{p zHT7UpxD-HBg}Usb21clNM=A+YC=P2JT{YID)+dVsI zUE~G{?O`i>N=C4@Voki(T4dtvoY>ew^Gb1uIUhDIH)~i{LVdf_*&c*^4xXX4x!NJx zRIFYy^cgJ9%di(4vT@gAJFP*_u(LjKzPFoRI0B&d>1ixw!nI3bhTIx4n$uyAS%8y0 z7KyMHGFU$zAkXf>Gn^^S7iwX51MMhc%nYpje?+LZ6t!EKH4}0%lpVD zON!h}DN2#s`pZ>Nog%mOi?ZZ)OI51egGox0doY>V`tJUn*;u3)E;+M}dKv*rw9yul znl@(UiZ7>hW==TFak?Oa8W53I`=LL>;vi+ST^39x3l^1hUEyZ^JeglHsEMfZh0^XPTkTvQwV!U$tK2XxWmqJ#U%7F= z90mP8HV9r~Yi#)bJ~qe|Zqr&}d61vV7y{I!Gz>Q4w<46yafJj;=tI`GK?;|%PcrazjfOX+)TcSE&Ie90EMe6E zYP$R(=L7%SO@ho+nlHbjNpLEK2>yDLV57`$ZW5^Vm7(}sn2RryjktcGY4=_jr^%I+ zXjtq27ajeZhu?AiKVd=au(JBQb7mIBvLs^^UD=T|WdykH{uv$&vMib;fiRgCi3njx z`Vn)`eH|% zGQ&yJV2R{CQlk`ScQ2aC6MR|lolJUa zHyF5jaTl$T_`0taF@Sh)m@BfZsKRtnrQwzZ>Hkg(E2AUv_S-G2Qyqv7wTn8(ci9%! zcA1fO<}PJnJzk*YMZ8H4bd=FUn&E~byQGcP#q9i^vt8wUZ@00;ngLpr$p+cvcFLS8 zLAc7ZMj8}m{+ChsejB+*eA%8;`*v1Wzwi&`9;vY7FMYJ{oC9A5oUE|5dbpiJD}ZVp zIIf4Nyi6FWhe>+aPY+A1Yze!YVap{R4(AJfpX2Q#+kV`#L7IQSci=E+ZdvK{ z@w3Y0c8#C0UAaS46>1TFhC^+Ks43K1*>_{j!$Cd zh|?E2cOor)nNz9XhGb3x`@~)$3$uPAN3QX$496DR`ylj*oDLMy=vHYQ-?q?E`%ao8 zmHD?Vc3>RUJC;Wqa|!II+v^b~jLW-aQeTQhRrzt-f%)0RtCn|r|rC3N{$0Pw&)rJki1op8^r{*zznI!Wn zEuu5|zKk#8f2_G$jkIl|j8-ECU(gwXGv?}mSVlb6=omVNR^!yzbg)|Sqg2Vo_G%j1 zTq1gxI5%ZA{mxf?(+p=e^>b6lq;y#pXE6NR&P^4lb6Lj0Db@Zo`4Uk8g%*23X4^4F zf1#$LXR*tH7$Zu3Q^~O>7qIGnHB)@%k!t8Ssl8 zH^BM4Xl4=PT5C~FU4_^VRNf*F8MuAdGXcH#Yt-pvi_xA9s#DUK+|Z^OGCj1ZwE=Y+ zi3A!a$-(jYd#F=~4qVR|B)s~HBM#905$e?JP>P{Tsio}Nly==oj*^@**Kn>q=TN8T zS`s13dwJ>oqB(WQIRV zotkS?zC%=w(uQ1tI=wJTi_#C_Hy^FFYVX)R_QXN_wr*mKhL>u2L%)U^R<04XgT*n? zsz1KPdUPtjf`ayTkaRtF^J|o^(dn0~em$J@uW=s5(6Ppu6Lo0eBKmi^JUsqK=-*2m z?y$l%Hv86feGLrtCl7Zh{ae$V+KCwcZHGGwjFZvIH{#I0l_-G5_&j?-m(sufGyY`# z>&eQjP`|Fzn-r%r;(Sla-=R`z)T=s|G*jUygrty*5X!HgAzbB2zg=jqkRwB}1Tb6V zCgJp`!d*3TKj5TTOZ0G_9xm6zb$VE(he!4Blpgwqsr(i_%qYZ-nMN*>czumL8Myl* z_s?77R>_mw)FTZlW!E(>{nnXY8kl>e`-af|R)#miC3DOa+_jc4CMN$GC6k8OYL;%nV`GQ;n!oEtcN`=40r-Z{0wwXS|91Z%_@WdIE5 z(F?ki_Wj?!`pqoUSHDN$*Cl03e%@7{^mCHt%Jv*$%yexKB$}D7O$1K5Hd7Br>0yN) zE(_OJziV}1yB=2S;c-1=P%1Jd)Xbcvy=1jw!N&}tmH0Pc+Fl)YW~8Ta`Aq>tgQ5|$sO@x zy`21xY2CWvje6P1N$DMvl399IN>WO4~*Zv}m_WTkbWdY({E| zczKtW>b0ga*n6coyGzTkj>#zxnlYn%rl#$Y3-Kz)v9C%$_OZh?w3w~9mt}Yf|$*-%6*F5pr2EPhjSJxJf#}I^$t21zK zG30UHv~5>to+hjtvNmBokTrnyLe@Y%`Dx7?2VTxZvu)CY?lFXl-v zdW{i7_iOFK2H-uB>DUS$kDmfh!e<#$wH5d5*IMGOz#I4D+&;ZY(mh32Es_mO%T3D8 zPUC*X1%q-2k1QUud$w0`{=k%^!i4M=`If422ikPT8IRcHK2Dz z3*(ZquZyeluVibwOin_#`2D4dWku$(?A)xJ{G6PQ8s3xHF|BKIa!1xJ!;0yck&Sm> zX6Gj7Cnt6B$c)_cm*KO^X3ZYMlGBpArH#p|U=_LJ=ZqgySk6kvPaiX^Y(@nelQ*xl zY^Cm8v=o8kfDz=h+)G4pYUs+A_pj$d=C3i*+Y`lfPnUgxSY*JC) z#3^$;rVOnTlR{Zu)k{+{UruG#1vgg)yw*P@txIy(Wd+w2?M&{JlCyKbeRth8res!m z`J6E~FV7T1tMc;matnq{$fyj~ERO_Ra>{4UnYEyNdY^Plmn9+H)8|FQm$tklde$e= z*%{faOGpMKHc(;SiV^6Fu}jp78~o?sQsg?*`vP0CQq5o zMwZW-Hle(H+Pc0h(&8~}ZNQYO8?3P-wHv3g2{l;VOrFM?f9;iW!K*wZb#~RuGeS0e zI4vY*%LGfehh|v1S%RMQK)~vn3?H9#;B=FelTA{-Xp%AzL0yvxolYG5Au9dw$tLMv zG)c#2U6YTS%=vECi6(xQ?pdRdPiBGpJW~#Nb`I|_t=~Sp zqqzGsE#ra`M`yxnD;wCRtLXTq7R8fA!JAq~vG`4VL4}ET-qd2Xv&G`)H?>#e4vc?Z zzKz+_7vHvmd|Kz>L1I;29MeF<#$4QPZL!$6Tf=Lp#WkR91 z`b5(u(Y_{GdTGvur-PaAW-0zk9Q=i_;TTJp1?Z4+e9k~e6PNu=2zJ&)!s}XG$7z@$ zt~Ki-^AwomIW2B@U28d}KHsXC{w7(@y6~NhqH?<^zSlYUCY{6iUI5EUeMJe&L9OVX ziVnPl9tYo35ifeap#_PggIW?_M_4OSaZu}UPeo5r_y)el{@_8)*IFLt;rVcEWbTSZ zd+#b;zJ7wFN@Z>T=j29r)ePK{^~$J&`2+I|d`8S;`^&z4a?rz`eFHYO3+`axwjRR{ zU)Oh5=0mY(EBltu{M5kPy_(W}eQj#qy*0A}I^BMJw}F2?cia4_mW?BGZoltk&)Ng6 z-ZLWnFZ`olyZ9k__nd#F(Y6zZKQr)(_M<_1m3#S~6q%@=pL7A9ul5iQmdk5jN@j;Q#780*Ds z2rHCn;^%+mCk7qSEF%4g7789I%g-9?B*wj^MQxk(w&uyT`1xY`QSAi9j($fQs|{gd z$2(dldj0|-FBXySYV)~O*xuEa@*yJfJ*~4=#zet;T3e3~9{oHiy3_<{s0myhfZx;PnZ3yh_~oA?)YxaGNf6e4zCef4!G`ZS$(pa7 zpM%*ZFzcs?kCyQQp&i%W^sf5)t*YmDi+7J}={VmVCp*)_HpDAIWPYJluDZaJyy(RW b0o#(l)b?{x^@Wxxe819ywgr8qZS?pblj$Iw delta 52106 zcmeIb349bq`aWLOxkGLe2#~S55fQI|uHp?U2%_Zoyw%-vWdiEruKWLgXFfC4{Z!RkZ@pFZzHhzV zGhJENq_VEbiX#5Acw!lEy1noVWfgx=G4TCcBa|E^WbvA$viGN*82hO>j!IG63mA^ z0#vll#qhl6CqDiGW$#M@#=l1q0rU64cPg*BnHPjCa4SG#@0u@%bo6j#tYTit40Cd` zo42lP_Pk4r4GLd2ddR?J7R=s9DKEByBVl)KFqgD!?wA{B&3(Wzm$NjsOVR57(=k_J z&8>CMJLWRfwX_@2%AsA(dRi$Dvd=w-20g8Hm)PfSLvFpvLK(SygZZ@0w~7RY*|oTh zanQ8%B`XZIwvG&|ZEeo#8fw0$>j3k(uI;uS>pD#-sDs$t(a33~1!I|kfkuPTz*vpJ ziig_ai#&tbB2QGXyoU1VUXSK)9oi!$mKU0rmbF&~akE!hYx7%W2DiZ&3&mVFA!MuX z#8n}tjEz)H;e1S~xRV92J6@o3SAKWd_(?x3^P5Q6hTSSQt8B*jg^QLAC(Pq575jJq zuZWmJm>+BL4q+~Q($dJqA>;03L2UOKLfm-Q0aSO|ptyN=G9NbNXF?Ue`2Jfx22rup ze&+UzhQ;5)Cff8vVg8JrE2g5%{hSfs93A(dGxMfJoy?yvYU#1lgUUR=)qC-H7gHO? z&-q|7Mlz3cu1FQv)msaVbGE+QKG%T*<02uHO8IV=KaX9sN9mLjz{K<${qaTGkLEYV>+E!+T^v{ zKfm(L!dpL`m|fd--;dvP{_OGkTR&Pj{+@$FjYE`vFE`s0@3Vj zVtn4}KGQD8tUVKa`irf~Ue~hC0k7Qo)l#1~M^2^t~nP=$H;3N6r_8?0Edbp|_Toy~Yxr-F0)9$BryKm48>4leN`_cgDVq?4Ls+;z>77ls3-*Y`4eLQUO&P(U7{NqL6 z&8AWQU7Eeqw!QfHrr7DO*+v%UvbV-iGk4#Mck{%LPqu5ZZ0!qId}~t%G_9PNH1qD& zsWESQKJeoDZ(VmTaW$Sf)Oqs585@_}{G9O_moL9}d-k=@!;U9ktbA$8!!NFSwXfd? z|9E4K;j{R-ANssJ^6r$qPY*~PF%snl-+kntBcd<%Nh$kotZB~Ku@~N*{rG#?&mI4= z%c{R!-tqkK#38-j?Hk_Z?)yS+9sfwm{EnT=pIbDx;K-xvYTI9!7=F0d@tyyOU-(SU zXLX%R5AS$s%8MWU_2o}$U;gfcyg48K<<7Csbo#RRo6MTAuQlEHr2DzSci+}?)#ZwH zp5fzOUtBwM;o%>j`?19pFTT3hUtb^pK>rS=qgQ5oFTLaZ_?u4n_pEqu!CNnV`_lv8 z-xM46b^X|0<{uVaiTZN%JsA((Hos}Bv7x(`KEH0wV}n!A?CyQ6dE&pC4DS+j{OLB^ z{Lk;t+;~rU%cU+MY)_V0@&+4!)2J3R%_r{3c)8cO$8YYj?~}<#zu(VSyHv;Q z6T>_H@cyW5?dU$?3n$L_>D4ih|1xFqJq3NfKRMv*Tc#K0d=Yvn$=J^Q5q@Cs z;;@&x%@{iN=szd7IVqJm=vu&wAehzf^uRuydJLJx_Xc;6r2chw`MgqdS%Iq=3?8!?Ooxu_kP5 z--q3rxOQU?_?ZizdS>g@rylbS@nfz5&?u!PbIZm}C@C))S3ZAMnR(gsnI><=lf5^C zL1i*FbtbeF(!b1QY&W#qA*5H3_J(>|fNs?wJ&$zcJjU*Y{kZ8C#_of*47!!E9H`aD zksd{wQNh^FUeJ9=>ydVy&)76*yLXX#H(_kd0>-kOozv!9d0qA$=C<+9iy=6~vhT?Ti_lGPVurzmWRe z!C3cT#=b)u6#|B5>(yY4}o70@JH<7x)6hz<6*ifXO zAq|DC9J`dU`;o4`2TZqQZ1KH}ZE6MPmN9lq7-Q8)KSO%cax?^m-s3Nf&1?1{|O%@8MsU@6koNUtFE#}Ih_ zm9a1k!8=I5M7n+@W4kaE(**o841vok#+pO)FCcvlY3qj>OTiGFMfx++U5_wUiy`nU zdX%wA5PimDjP>!``pUL9e7p;v1)(iqWSiM|ypV^RA2>b;-#zyZG(WyK%oMI#H}20o zl>i2&;C|U-V5k8G<{DsVw*iJ>Z-8Mat(Zw`7~^UMH4H-otg9V^7^Vj0Fk}rd3|j+? zY_enLOc>7wAjY%-W^jT4``Sii>gFu+#GXsA~b#(a_>Nl zG;Nd-8d7I8cEew#p>56aHmAQbzG+r+Rhf#u=Y-{1SeRc#O&vJ2eq8})mP)KVtCcs z^_+v&p9OfPkn8#x$IDqIq^`Y+4xg4^FI#d zx<6da*gd=KG{mac!?~N8znvc91(_P${XrN?62`?F?_zVn;Wlo?-ayT{hf_oBbq1C6 zW#Q)KhhrT^2=rdmZAXlzu_Fdm*Z_k%Y=A)}S}|S2KtEbRZG>n&I5t9Zbi`n_ z8ep(o4KOmx9uA!|!K5_+Vcr^Gw5}X0(;9NbVCouRuyzeFSU$o`cA|#)vnxoNgH`$R`cRs)m-CBS!Pf5u>@~h|#=q#Ar@AVkVkUj-WH0^arUVdsTA{on$vmjw*@# zQ1TBPJ3_9XBSx;D6+{22GWmX1P{qjibHvE?bHvE?v&D4%*o_kfT|ai``nv~I0+pd2 z^$g`ik_wT6G;;l&we_BpZ!~c*gb@xc5$BOkuqY=OxjD96QeAR$95HfpEZEk!KRM#! z9)28=!nZBUY@oUK=N+H_!jpUMLs=Q>4frxRW+?jeI)KCYyn)YAe9D20 zdwllve@HuT>^5sA~y)|)@Lt)=<4z0FOm*v-0PNi=mWtj>f2x1uh< zdhP;4U__XXRv@i#SG)}&)_l?c#X;6{(f|eCexSA9p7G-0nXviY9+aO^;fO7p8o0+?wxuP8?!pbo<406D($b}J(=(S zHp7j&x5j+x+g4u0Xt9C#Xnn2?O7u9_)nQ8fp~^|qLw34JS6KfE<>X8^nf`;y39}Y2 zO$wTBvR7D|!(>*`F2Ip+kEM} zg}jfs{QDuiuleBj1MwaDLk_;j$nQ1s`xAWkGsj)X;r-3iE=2JG<`oyB%sCf>%&%Ms zlIiDK>I-b^g`lQ1w4??SjKo*~8tre+y{Oiik1|yEF*Wrke}u}W$g;ua%@;z<|GF52 zwk}l z>5<3dh?&UcaRkZb(J{SYa(Q%2CrDaF$MkX}!=|jI>~RerE;~XVk0VB2GcZ*N=mlvQ z91GI)bi~M0cEm`lG<6s{QYwxZDHSWGDFJeMte~nb$mMaw$mMaw$m4OuNU1ntUOb^!y|`Qp#{QOA#e1(b$6r9yjbBa6iT-cKuP89lyzi{5XC&^CD_Fz9~*`Dk%b{aS- z8dt9TJ7z}Zd1JBG9XloPp~-3c`_d_xWb!z(HK$;%S}AXc?%e5wNR+YQFw1J zYDtFLM1;ayh)oLjObwH4dq}oFMLx0Zfqp;1KEoODLIa!F=UM|^ zXy5|-LL=mb2A-3IywJcVHp7CuS#Wn8=?!>^6)C($6fI+FAX+v+o^Cn&66e%)Z!|EE zeI@c-d3XP>EubeD{zg3D%41r!m9?74THk5~n#fw`#4)OM-U6z%!rgd`DNfd+_+&Zz zPAlLeYY`_TEgy@t$V0rDwYA`GY>niN_J(VuQ%9WoU|{07&Y};b4Hi*{ri>4!%o?0q zri@X}8B#&iTsz5(FPPba8K-vK7tA~X*{aO=TA1;bLzg3dapN7cE+U)g`#PPHq|JzY zf+X)J$-~A--u)!`OJce^?`68Ik@0h6Q*ucPkjQk9Wc($WpENS$1V6#9;EY7(Z{gA( zTyAIMEw~%j3kivw?ic0wtK~h|kL;I;GQ$(w0i6+lr~M(VON=B-M#$bzXFubd2nT?X z8936aGPVM4e0X9dg=80;!6+S z(PcX;65*b_mD_ICngxn~dhm#;q}ZuQs$_+BW78Q$&WV*E$%=wAYAXmbnW^E#MkZ>h zxEq_T;qExnwN8+Qw;)WR8O%kT_T-73(quyv3NOX25NbnB(NHOFWzf%D*aSw%GXH6|xSrvy+xHADq2wIrGIC%{#R{ zKb#FYg;TODWVT7>=Xz3R3&>#$^U-A90y2Ms`C87%pplQDmZUYf1ZOlJEg<(N#Yate zb8&kU-c0!TaL-oENCjI;l71SImXf5u=;*^kF!%e3UOqf)q^B&|N|rQe4YZOa15l3| zpbIPC%Z6KF+T6@WX$`kR!&@}m9VKXp$mq4gguKGGh_8Jx)~c}%ljH+6M#3cdAdP$& z$g4Ue4CJ@7Dvf*?$m_UHo;no<^6|VWYSSf)FwFUjPOLV$Fp#Z@1 z78as05N_#TI2hPsu?OLn{)I!isr@4c!ofg0t{b0lFtEj955nyf?UO7|^&!Z4qLB`j z%(MnGRt47@%vcp%YcOL~aIL`*DY(&o+G1~wwp9h!S}GA;!L^o)U99%wo;*xE?Z-Pt zLAz;^Y=e%d8mSFBqG}{kd2LALg$KTayAH-c?@d$Eureyxa?#13cQVn2!T<`6PG5u* zjQl*ua#2n&3O?zMrS68uIAF9g3^Z~iFxB@lNP+2U*dPU_t6_r_7>$cT3QJc<21}<6 zmQK@bHdrKRkP>v^s=72_MU7})|}L)DBiVB`sQ31`GejD?XHFk%!xsp zRv#rsZ_~03cn6NfdTfvU(!DSjF%s*T658%DIeE- zK3tc}P^Hr&Ict^983F?=wl6nl9UmxfsF2YB@mMfNI6!O)=7R@Vscv+oW92;*7ZfGW3>Bs#Ax^Lh`Bkzh)GL1Jt9E6 ze+#IE4rur9s3m9*;)v06LZylVx|r$ecQ2T10?$ z`c}{yKXk;%O!~8Y8dgh>$yn*-D)|U08FIXAFium)mRI7qt-&(^%NzlX*P zZ9YqxrzmXAr~B(FnKpr?%v&5LP~WD~)(vV@6tuC~68m9s&tPpu@k|~sUT(t!{B>!I3aRx{;PGf=gP|ve?G0DLD;*LQwcnGVCx=0=(jv3I8_FBO} z6x_rT#194xNuuZ$0U{l=Jlg$iVjabz2nZudBN8NP27$=w2oOou3exUn6ZTlHk&;Ni zNDxWY@`5ENX<~UKc!oBV!Vd<|udxhql1g^cK-zS?z%oT>luhqKQ1TG#EG9&uq^|Uv zp=2q$B%X>wdzZymQ9QzL5N-ybZbrf@<+#bRz9k9M2uQq8=03S_QvwZH2tk>qzKGU>$+356sEr|>ze*RYUapH1tg9W?Th-Ow>_8RkZiDIb zqlX=)GTl?f#8d5fgnza+$H-~kf>7%5c9_|@8c0s;7M3UawFd~lL@ta-fKRYqVt;!~ z_X6RQfSKA`%Og+n3D!sSOF)Ib8c5#X%h*otC$PT;s-D;Y(Jc{F28yagP$|^%+M>c9 z1OxUbLObg!G!`JKP{U#bOb2z~DbSU75zoQl4Ue2UOLSX}kozMP^5U zgS1B4NpP^(*bxhEh`7{IYK0=?l2%BtYK811Xa%}xO?Vxq(hx1DJY9C3 zWS*xuoNgn#ObL1mV+J1ztvLZrkbJsW<+D2j@+s4r?k0;*6gxYC^P4rWy96hRluUrS z!s`K$6yAnRsqijlf)icg^^|#8BBL{Z)TA!gO8yV2pt3M|b+=4kHQ5rgU)DKJ%H=x2 z@|>fLv70GO$~E`4Y$Q~8!*Ba)a=4YCm02U^fA*L z8Eu28ki9iP>LpYc}Ki;dYfYkL5|Qg(-k&H-4Zl^h80BX~WlajBo*DbD7A zJ$>C5%0_#LxLmpJ%X5*ZulqqVFH3C8g&g!T91QSvc9)3Dvl+v|kT;ECMV`$V4nav8 z!g?HlVF}G>IG1@ zi^BnuT|C?i1AMm#E&!G0nm|U#yrrV30D1R_)s%OymN!!7Efen-pwqeu93{bKqOdo> z)T;O9z^ucVqPb)eGMGvt1MQ$H7xI!%Ng9i0| z&P~Xpea_)Na$<${wb|#4m3i3bl=QXP=Zur6A`bQiH5U=kkI!|`K_%cucV_gZTWW*p zOMJW&Y=RT4%n3Hp7SrPhH`{`mTAt(to9qOe;sl%O1e@jrGfj5_VuuJR*c+l*PRh-8 zg3WP)&2@s6tC+nXI?tw{F8*8WFx8d6)d^PN1e@;!TVRLvRtYYYpl+g7Y>`btecTs2 z!ETe-lj7h2p6>sEHgStF)jq)v%V!{#)`J>YBEc|GH4v-8tbwHfOW8x>67DMUatBD7 zw^Y@{c~EaIkMJfF>E*nVT%UNmEiN@$Z*itwRt%}^5U{bfXklZz7gP3 z*XHwNUY0mA0u^+9dW!^eMD|DWDQg~ z!R~Z|-6gTT;^bI(H+oR2Qa1UL@EiyJ^_bKW3GNb$2-H3B+a-91I5!Rgep&1O9TI#< zOe(fnKzFDM=vXlp&~B|@l`ObY{7?*%do=J)39b^8N&xE9?Jj^c-QF*u>9#$(l=tRM z`eV;`0UMT=W;%;%M-=;!u~OsM3XW=mtmkyQPov@PF_!SR8tx{$rjoIQyZiZJjd|N+YRuany8$t8duN+s-j1>H zKqpv`#O#@&@HQl)+A6(w6yJ6f7sa<7vF1)Nig`PhqnNiNMlo+IHc5?-P|Vv3s#us4 zjAGu7{pq#n=q3d3Y9zI__#BEkJ) z)nqK6S2WO7f(L}p6zGsw#fT};F9)?eH<{N%tU{hwPk?0Z+|<>|r((6frWJIT1rLen zsaS)ri)m9qk1Jpy$6z?97(DRDv@WjbeC3!W0e?6JKCElNIqc$n}P0nc840QRb zm^8!28Koe&47zWbVdIQa6dYzvgw90&Tqy3{*%IEMkT(U1*3Y!4w3f_Y4am2ch5qTW z4vKhF(7oF%o1i;Iw<+kpgTU`Jt|_cdLHD%THeI1RbS5L{UO8LZ)8kT-k?_VXvE)Ou zVNc)I1V<6*@$7^+Fb6Y0pBBv}xL5R;i=MwD?wt#%==LoXc@=D{I5ZbRJ*iQlTRz6a z*7hhzg`VQxa#YaAi=x#uUWdwgS@^qJ1&UUWXQwP@bPf7F(Qh6f?fNNs_)3*Zpny2OAh}nju z^>Vf$X&sAkQn#%wrmNS+L(=y8+F3}ty)8ja4gVn_XicTiAB+7U~Un7taNkhG&3 zrjRr+ipeonqg{`rkhD%v-wIGj+7Y9Wv?E3#X=@`RWx%boiis}sc?^OCAEPl+cLwWJ zUpgOC{S)A{$Rp+a_?M_!fT^zQt|$ri5I--FGq+$NW|^+8qGjG8v2>wSSGAOMXP;B7m{tnH#MW6&5#sUe3$bxA zRNypJAUztVsleNyBEHm!P}F!aZa_`D&1T`pW8p7iUyI7yctn%I{2N(6lC>9WGI)$Q zb{qfH|68qoqO5;T956u==QXf{1iuqKD$)A)vUU*bAd(E&z&}}u)_>3nQcQUe4kT#dIQ>#A6OyNz`q)Z9fv6 zrnOICTg8Y}thtwmisEJ5RqS7ZFg*P%jNvvPdiew!N*^0Os-5ILoKwo*yIYpbsh zKr`!sD!jhF5-Gi82EOQ+d1chSMS?OxT zH$=laC~7|CCT%~xoR8z?Bv*G;a_3NFKPn%mvYO;xN7_b=y^o*bKH~fe-r|8-lf=&Z z`Mu4FAqTc+{<0JH+z7$qvriqKE%uMa~8&q ziTMxlg>DqUIVLXSut^0SlDsiYNp(tyc<3XgxZPVgebEgAjF%krYq0*HJ?jtO7}kZx z`gJ9@>JMrDQLXt0zX;R*MDGjzPxSPIHDBcV(&T&zGCGXU%i{dwysIZcZ{Sp<{f);Z z(b>B=qx3zb@8k0UJ|AjW9n#bIoYBtB%fCz;ONHt4J-{FExq#0_e162|5d7TrkrKikx1=KIf|-HA7XVMT2F^Jlr>r zvI@+pt5~uDKhWr6DNvymAX1hB;ZY+1dxBCoOTislK}u{2uF?wjuoS%Hv|!tlvS4wQ z(Na(W&w5#(z--!#*(iJyWsSgu@X@9LxkdQbBdKvF-;rw};|ax1ITa{di4VOd-;v)S zf0bQ6&3yIcqt&M~gRIS1aaBQo3jtd`i>vxra8Dcli>vxsaNF`efddqyUB9Fu3#Q0~ zZmE0%3zbU^%ZQ|Bxw}cVb;ha!3we@<#wPe2Y{6}tEv_nR1RvH2KEf&P;|fEZDb8=? zt*mBt7VrUZCu_R`zYmC5P-ld&%66)@N_BZCw;UXVd&$Xx={Gj=Ou& zynVI^*lbgM1=_dI5A?JfnU!ci;yJtaYitQ5pnd!NV2Tl0hqhcvLU76I#~3Md2Rf!=`vg`fxN*>NSY~0Q^kKP^#^V~p zvI1rQTf?%+X{U@;n;RRJ8!di&=@(b&(jQ%4?_#5!j8)FXZ>&1tvmu z>GI>X#83aI^xqQyA*U0~SoL4mU|Ejh*Vm9E?tBUP1XhW^Rco7H1Id3C21y^0y9uyS zUgGC!9x4qRIZppc3v&3+D*qfuIsaDqFIP^A**i3qWFUDL`dLR{Fahi#>5h_Bx5~V@ z>WD=qw#u@&snlO8G8 zA|d=2$Lm2w-{})0^&)YX?ReE`V@YE+gbMuMc##nPi{tf>W!(`Y_2TP2w&S(lCTc@B zbp79WNg@2##*2c%#fT44M0^BN#e^*;h1uw(D?&QfL&VAwYm{UuRX}+nKrj39YUrG> zNpK9CA(w(g`m2)e`oON2LO0rR4IOVUUdPw)>iyi5VmiV$;u3X`-6Rn! zZj^Xp1H7`4@-@I0voRn&#b#~y0(poL0%UBzc7t8u7)eKi{OH-JEWyl_2Ak-;UJ^_8eX=_)PVtfdFFv<~S;Otx5NRO;}v zyg;U|s%>w*a4O@?t$Q{c+9f3w%MjKAtF$@{C~IJ&ln6EkpRo$95_(ZC;W2DXGlet! z;GP>;v65{p#TmWo#DSmqKvNz15x@)v!{iwg$|?-q4U-Lt23)GIWAvMDgCTFm1VitM z4Fx7gv~2E#QnWO|hAge(;kkVsP!goV2IpAI68&blP5+@Qyan{crYpQnDlN2ugR^q_ zcij!jbP#LlZcy837Q%~mq$+R5naaC~S|j>Kmy zKJ?S0G5Fks50x2*bP_%#V#zPKI5`T3Q^XU$@M8QfTBSP;<3a)(c9r*UJ^>A>fPqoN z6Ri!$H=z@~^fy=W4_(C83=C!{W|Wk$96%BS;Y5~Zn@UAJuM_$8ybZ<$&veix)ULOV zpClbyQ&;=OM#wjo6-knQQu7k}`sL%NYHLviTVT9WX(R*X}V@uI3^cit7V#PTw^EVvlyj1)b)}gRy`JoR?@3RD?^9m z84M=qMiSXZ{Nr0RTMN#bz!1`iMM%;URLM$1s!k%hMe*hJTfSDuiVSRkoRx&1_;J_I zRy@vvzw`bJ`>nW9!||U-U&rsGi}`pFp%F5J{!NSqF=UOhRYix zXsTbEkyy4t@~kqu0X@Nw9(La;?VmTiE!ET7DD6%xdrGMmN8FX>ef5s20@xw@8q2ED z*9}^~ZAsB&v1!~kTWPSy`Ym*hi1TU? zR!4Iu{I#(@(0kIE)HX0gnI^1r&Z60FOz&uTul1X;ntXec4qEj2CjuqlE3=xRcYAa4_t2JX~%}rp^THY%DUU1Sai`KS6jirJ< zEmT5#F%^gy*=x1O28NX*cKRyg!}rp(!)C;gV2I5b*l%e60kLw(YUFh6;-|C^q3K9n z*=Ug;)n4GI4CdI3zQ0jBZSs3+a77??_zG}8{SLo*Sp3Ur8h zt34T946@G6tICp8zHnuT0qR4%!B#LNNwrBe-xc{?4OUe4GDzB>0Zo;eurIrtD!q_g z?Wc4?(j!>uh-5~v(z}=H36YOPV@spC&Tes%E+8{#9TwYTi!UXv2E%>Pd#PF!+DR0; zs19)f(v_}sw+-nz>X_99BOhopO#)akN9XIH1-Ey;>MXd8^A!m~m$VG>zHFVZ0IbV8 z<|T^VU?RSAjgzPJ(;9m>%P4Vg;N+uO-K-H3C-;lWTiq;L?r_@ht+{D9qW0@i1HjT}B)k-y(T-TUesyn8Q)3wOD z!*6rJhwf9oJ|ow2$Lu>=P2pMUIcYgc*J%>i0nUG)BW5B;OjS;vEHQDQ46xcyR9&0s z6eA4 zm^v$?4g+ZexO#@(1B!A64joWL2VGIVm34XAssTw@912w;x?7z_tFj_$ZY(>mSMLE% z+Elq3g4PUTaVsT36tz&|H9z$B7D`l%>P8@f6i+NP)p|5DGKWys`le49|Aw)kD^i?{j zW%F9J$Yh8mSK!x}eqDId>1;^^)$Nk)=0v5__})R?hme;vgGpaSoC;S0o9vW+$Wjos z>}>Ri+OMPdr`Xx-zz>Z{%D=@S)}1%qEmpg0YTU;pJ3^k5bH~>g!>c>2aj~@PQ3+m) z9?f*38qE$WE~tS^5ffQ#th#G^N}>5v7pl)6Xc9{UhPdBHo->WMIM)U)iv12i-vH1o z8)0d-vDHXy{hQvh3BO6C?TEU!K7i39W6=ctl&?jLVrdUy>#AJeqh5obrV|~NxofS^ zYG!iQH`P`)bg>I0Vcq#uLp09Kxjs+SokxJIN0M%;cTDS@Atp9HwxLy{#ja|M7+FCq zj#T38;xTG2%?G^l2ILxg=XY&fVL~OKjI(xBI-GU1Q@0H%L7wfvKa8IG!oYxWgJVGw zItEZIh=g*tnj70qgdAIqV>tbd*>fy2$#Y{(uxs%wshTWtSbh2!qz`PpPO5JX^j(Q9 zGaE56^+;}GI4wZy_Cg)&x?mbQLVHte*>=0r7@5X!3wit}DuNUGyt8h4MxZSUc^4wZ zwO#p}1DbiZT+t?>5;@K`J*zCZ{ibKL1$Wr=9Mm!#H$8O{w`_VY$L38_pUR$6xRDJHu@-2<#O7?Jjp#8@@n~sZfTon%S|6~Jt@Od8 zW;8!v%!*UOGp&9qq!Vu_!TkkA^JkTHk1cYxDbf69JlbQWx6(p<7^irIIyR^_7s*6j zjuP2}nzOdS@js>(2C!F;b*kERmgATx%vIt>I1`Q9F?-EH9izEr8-U+|yOwp2(%$ur zmeiwGwo}|PiO#jmslN3kr=>trqydakDTv~BiicEU*C!#JTwg0owoWd2>8j}^c7B7i zOP+@KFkJD~9NtPaU~zc$ySRQ0O{=?mgCf5a%6INZs5>M35dIGB+Qx5jbgv!xH4W{j zJAT)9Sg+*(W1lp5)+pd5C{I$NVv(DJN zwgar;<4j4I`e+kAh6=u3^cbs3GE|NKWF}1>C!Xz~c-tsotE!Ke#vr;|JfcbJl>w{D z^I+q0vx>5u_`<4mRIx#YcO0v<9c@*nR@qth4Zp&-Y|I~ChiiKjtxi|Hx@);_w(%Ct z-x3K)N-HOBngKCca?|L?H+4|F+MNXQ&cciWpw zwvFEg4{DND!O?B2lz0eS?JZxcw+X00S1oxUfSPt;DhbWPcY}P?2uB2 zzXT}sP-1YgrgfIQnZQ-ldMG#H+%HWTj-*4jyp%IGTj`0j$JOM+Y-KxcB5)Pwyp(jn zM{?vvpdPvMBGB#(rMC-|s_^cF-HRUAi)-NMsd`w|M(Sjs&Xbd_akx!DI*C}& z^pai^>97VahDpCiP>ai{o3$O7e5zsjeYXiz$odTfapa@aVJv*u;ZI+BiSB|FQ+*U~ z^_Btcj$&f-dftoG(@NzQ19zUTVHE z{>E>-Ks-hYOuZXHoptIo*xW;(2EUP@Ej{7aMQM&jfD6n~qIVa?$E3}GuXnvg*Z8*V zcxSCXisWiQ7C8g^_s_$11&s_MBhs0{#koe@!6ufHs&izeXY2fHZn*Max}bfj8%gum zgx?yvKDHOMH%mGW9!bAn;gVEn3|#kuwrJN)85nX1*PT_*kM7x1dBVL`*SVnmdtHPc z&Rv8qnu~yRrRxZ37M-~SCz0dKB{*ln?Og&-+T%ES1lh2^1}($UCCHR`0Pe2eeqzs= z?I*T;ZGV$uq0G0q29xAzL)Sp=t>79uMtWAs@(o>s&A`8NJt)8H-gVi>Nm^!&P~1QUg-us-1$~syZ9z* z!mEfEO)p7QHi^FPtegcbP7&HpDngK86NcpZ)qTQf_Mh^0yTEQ0ygFZEfx z&fgb>pa_I-5(rZRaY!{EVt#?*1ApSK0;NQ5DsgqO5x0Qcz>#n!=|UR4s_{>^6G~^5 z%qgE-K6&O0L+O0Oq>{Ol;?$|tz&EyWjfs*PZ90rgP{dg%9^O?)KP(Aguhdo_rMr@9 z&%U{VECY#xCOv{OjWR~jBDEB5TDWE@S9w{Llpvx=<@Vg0^f*uBO<9~=t+{LW(jRxS z*|ag&x^r;KW(w1<=#yCJMWR8J7LEOx?j_7jB#!=l*Xvw@KDIW&pkL#9?T{5I6my+> z3B?zEmAvMM(NxT{GBN=Q)~14(rT2Y-`<5tj3&ib`N1JdsDVsy8 z9<7q)PdP}Y@jWvc288YLA|pbQaAAg|MtbJFS%zQ43>&NrkJoB9Qdu=YN1a_X9;aFvfJ_EAC*qq5%o^}b^7ZBo!gb$0a}nx8Yq+1~h0Kcl7i7tOxRXzJui zj1@;p@~2zBRTfpH+rVYA2I{P{%<)GCMDPaPYh}6B>ZDXIOQZ0+ca`HCd9Rf^BqWiz zD0LPakgDxCT%`$+rcfV4^iHCEIJ}JM|GGqp| zOBT?cq@uO^h{|wTd-6nwi_P*USSDmS-abTwdac`r^d?lROP%+OR69?PZ0XlAPV?8h}3+ zqI$TsPNqgJ9Z`e>XEt`0#2eb!rNFOs>q0ed(KpEZ6`Ig@Iw-MW%k{(bv; z2~VC;RqdbEzK)O_{(AcwC(HlG?dvyFl|jG3z8Xg>t+d|=6pvQgw6|VK#y?5K$2;gS z-Kt*G;C?t-iEs3V^xtEG^_lS-jId(0!ulO4x~0{x1*sPzXO?hSs$Zc%wU5c!rZ_h^S&E=s&rQ zt&z8Q(*QJTX6?7JD`bVnx3RO3e`C$;|ME7ru$it*uVZHE-%9i_sA`uR-;zeNudofK zMWuSt4gG<}>#9r75*e{>XV-@irxtUo{UeI~O10h2R><1^vO>Sx;zk+S!o_ z`TyN^_AGXd)Op%PlD$2NloONJ6k919fgwZ4ell2WG4gg zI}f=%)l#FD((gbBpQWWswRDY^?$FX&Ej?R=17`*oVQkhw%+$m*JfUF&iD~&6cm`W$T1s|eDjw9lc>67-ef19IUbpx#{PexPzO~|tZv*}dy1qUN zg7BB3AaT$u9=HoV;<9OcGPZ5rEEWHz=FQSkwF&Els`QiydVQ<7L)o8KJea#I?%|2z z_4VH3^id_=H&p&xeM{8EQ$a<~-O8hG^bEfY@$KtM^OdhFEt|l-z{8z0@npStaqJZ( zON@G5$sK!!wZmVC_mWTU%)kTw=$U(2_|W6|I^&(j=<$4M@`-$Ol#NIA@v++~IW9iZ z0|k>d^iftQxc00Rc(IzGV0Zje5udQ$#nly^s1j4El@)Ho2M*6j6ZO?fs@qeQf$oop zPTQ4ClOYb=WW&zK0USs-C9zTc8oI7)3xnam8hHLl}#th8QXT5Xsk~7Bi zA5t^0LvFu*QFjO2QOFF*86A=g155dm{f2&%OXrl#$)At^0OQS=N2SuA4auK5XZqY8 zEZdK}vmtn>;D$LhY&x6EQY&3u#nASq`h;Z zYJ4i$)FrJ*7o|kJdrDx=) zrZ3GHI+vBrnLDOpUdaqLCTrHL+>-JVHm2Xq@g>v76tS}Dv&Q6Aj4w-?mf0c6IDT)Z z4rSdcCKOC~yIW;sB|F`L<@w%U*D~PF4mC>g^8QV>WxeH+S~<9EV%~(w<@+YB9n2n{ zh#}oGxw0lSmEB(HSJfvaEq!@%r-I(56)z`uNV(%>mj@ns6522GQ*SD{f6+_PlvON^t?`4oiY;( zI(JU1$wXMq%NUlOHzwLYGNYKs-rK6!&&Zma z@*-03K-!vpJU?Qsf9d0%EVAhtR&l(=nTLi7_y$(JYzr9K~CBmhQ+u&c zgG*vwjJ(U#ws+){pWn;Ens#)YxzL7P6B8uVq!3#Eq6(+!;s z0e^RyZrIqF)%%tt9lqe3^0n`jl+P(isrN1I@a2XhKeWpD+Bf5KUwp62sP{eN``w%` zeZ34__C*{nd7hR_lRxno60VRj0iJVs*%I$ju5 z*bH&{HD$Zv%EcpxluBF9t-5B=@6k26Xo(&knvHiB_)10F^ng-&SgBNQb{xcu+`~$F z3m<4%KWN7Qq(S%u>11&NM|K(rC$|dr#SsPPOXU}7taYv!q6w;zqFdpoX;)F!9BJ;&NZ@^up zIY*CZveN8~TN{%=xnbL>c5P!$)*t>zZ99qDZb&Lcl7i}Q(2aDBlqfrbpLE2C#YjSE zI34@jNj!5zX^j#Gk0{|G8BR*Xi=U1t(MrrgVK}NZ3+d#f$hV^JQKfZaLk5#2gJg&t z+dVH}?Oz{+Fk17Vfg0gNEwY5rsSanQ^#?z?X ziXoHr5;skmIBo1B2PX_%9_48onsa-Mqz8%J7e8$Aollhw+|>3$S-YsoCv^O|==pOO z|b56jtFI@{B4XUKjXZ~4W*iokP!%fCJK z!29>d%*oYpN;A=)N;%vM`F!TWYcjS!@}|;-_a1Tj?&Mx9=%2i@>!dO^XWa|Q%>R&U zO5fwINeKr#c6qjSR6yKFBQ}RGv|ZUMeX)P~(E0w9nEaV38jtRXd3>S&MR%kBG4aq| zB@s`n4B#inDz(`%+!a$Ly~xo;~;e3zK_ zwqlAr3AjXNsx85I<2{J=ldUD({FRru4;ReEEhm&kn*yGM3T>YRcCoifwa5Aa?&-6L}|bF*@C z^73vc|Ua*}xGjB++GB_qK=pXB6>v;;$XQmQ!ivGN=Z)%MCyluG#+dgIDZ!Qgjd z-lt&jvbaFWFJj(j;L`_&XR_#gR(a1|Iu}f|{9MWKs!ZN6oW{t-Jjg9pRDP~huKWu9 i{Fx_s(E}KKQS0jVtS^*3{DE0M+l^l-H7>LbF#bO-yI(K> diff --git a/mes/qd/src/api/wms/basedata/master/classstandard.js b/mes/qd/src/api/wms/basedata/master/classstandard.js index a24583e9..0c216de3 100644 --- a/mes/qd/src/api/wms/basedata/master/classstandard.js +++ b/mes/qd/src/api/wms/basedata/master/classstandard.js @@ -72,4 +72,11 @@ export function getClassTable(params) { }) } -export default { add, edit, del, getClass, getClassSuperior, getClassType, getClassTable, getType, queryClassById } +export function getClassName() { + return request({ + url: 'api/Classstandard/getClassName', + method: 'get' + }) +} + +export default { add, edit, del, getClass, getClassSuperior, getClassType, getClassTable, getType, queryClassById, getClassName } diff --git a/mes/qd/src/components/Crud/crud.js b/mes/qd/src/components/Crud/crud.js index 9994fd2f..afb52210 100644 --- a/mes/qd/src/components/Crud/crud.js +++ b/mes/qd/src/components/Crud/crud.js @@ -1,5 +1,5 @@ -import {download, initData} from '@/api/data' -import {downloadFile, parseTime} from '@/utils/index' +import { download, initData } from '@/api/data' +import { downloadFile, parseTime } from '@/utils/index' import Vue from 'vue' /** @@ -70,6 +70,7 @@ function CRUD(options) { status: { add: CRUD.STATUS.NORMAL, edit: CRUD.STATUS.NORMAL, + view: CRUD.STATUS.NORMAL, // 添加或编辑状态 get cu() { if (this.add === CRUD.STATUS.NORMAL && this.edit === CRUD.STATUS.NORMAL) { @@ -83,7 +84,7 @@ function CRUD(options) { }, // 标题 get title() { - return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : crud.title + return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : this.view > CRUD.STATUS.NORMAL ? `${crud.title}详情` : crud.title } }, msg: { @@ -163,14 +164,40 @@ function CRUD(options) { * 格式化数据,保留0位小数 */ formatNum0(row, column) { + if (!row[column.property]) { + return 0 + } return parseFloat(row[column.property]).toFixed(0) }, /** * 格式化数据,保留2位小数 */ formatNum2(row, column) { + if (!row[column.property]) { + return 0 + } return parseFloat(row[column.property]).toFixed(2) }, + + /** + * 格式化数据,保留3位小数 + */ + formatNum3(row, column) { + if (!row[column.property]) { + return 0 + } + return parseFloat(row[column.property]).toFixed(3) + }, + + /** + * 质检格式化数据,保留4位小数 + */ + formatQlNum4(row, column) { + if (!row[column.property]) { + return '' + } + return parseFloat(row[column.property]).toFixed(4) + }, /** * 启动添加 */ @@ -184,11 +211,13 @@ function CRUD(options) { callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) }, /** - * 启动复制新增 - * @param {*} data 数据项 + * 启动添加 可携带参数 */ - toCopy(data) { + toAddAndData(data) { crud.resetForm(JSON.parse(JSON.stringify(data))) + if (!(callVmHook(crud, CRUD.HOOK.beforeToAdd, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) { + return + } crud.status.add = CRUD.STATUS.PREPARED callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form) callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) @@ -207,6 +236,17 @@ function CRUD(options) { callVmHook(crud, CRUD.HOOK.afterToEdit, crud.form) callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) }, + /** + * 查询详情 + * @param {*} data 数据项 + */ + toView(data) { + crud.params.optRow = data + crud.resetForm(JSON.parse(JSON.stringify(data))) + crud.status.view = CRUD.STATUS.PREPARED + crud.getDataStatus(crud.getDataId(data)).view = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterToView, crud.form) + }, /** * 启动删除 * @param {*} data 数据项 @@ -225,21 +265,14 @@ function CRUD(options) { crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.NORMAL callVmHook(crud, CRUD.HOOK.afterDeleteCancel, data) }, - /** - * 查询详情 - * @param {*} data 数据项 - */ - toView(data) { - crud.params.optRow = data - crud.resetForm(JSON.parse(JSON.stringify(data))) - crud.status.view = CRUD.STATUS.PREPARED - crud.getDataStatus(crud.getDataId(data)).view = CRUD.STATUS.PREPARED - callVmHook(crud, CRUD.HOOK.afterToView, crud.form) - }, /** * 取消新增/编辑 */ - cancelCU() { + cancelCU(formName) { + if (formName instanceof PointerEvent) { + formName = 'form' + } + const addStatus = crud.status.add const editStatus = crud.status.edit const viewStatus = crud.status.view @@ -267,18 +300,21 @@ function CRUD(options) { callVmHook(crud, CRUD.HOOK.afterEditCancel, crud.form) } // 清除表单验证 - if (crud.findVM('form').$refs['form']) { - crud.findVM('form').$refs['form'].clearValidate() + if (crud.findVM('form').$refs[formName]) { + crud.findVM('form').$refs[formName].clearValidate() } }, /** * 提交新增/编辑 */ - submitCU() { + submitCU(formName) { + if (formName instanceof PointerEvent) { + formName = 'form' + } if (!callVmHook(crud, CRUD.HOOK.beforeValidateCU)) { return } - crud.findVM('form').$refs['form'].validate(valid => { + crud.findVM('form').$refs[formName].validate(valid => { if (!valid) { return } @@ -319,7 +355,6 @@ function CRUD(options) { return } crud.status.edit = CRUD.STATUS.PROCESSING - debugger crud.crudMethod.edit(crud.form).then(() => { crud.status.edit = CRUD.STATUS.NORMAL crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL @@ -397,7 +432,7 @@ function CRUD(options) { /** * 获取查询参数 */ - getQueryParams: function () { + getQueryParams: function() { // 清除参数无值的情况 Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(item => { if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined @@ -465,8 +500,10 @@ function CRUD(options) { } } // add by ghl 2020-10-04 页面重复添加信息时,下拉框的校验会存在,需要找工取消 - if (crud.findVM('form').$refs['form']) { - crud.findVM('form').$refs['form'].clearValidate() + let form_ref = 'form' + if (crudFrom.form_ref) form_ref = crudFrom.form_ref + if (crud.findVM('form').$refs[form_ref]) { + crud.findVM('form').$refs[form_ref].clearValidate() } }, /** @@ -892,7 +929,8 @@ CRUD.HOOK = { /** 提交 - 之后 */ afterSubmit: 'afterCrudSubmitCU', afterAddError: 'afterCrudAddError', - afterEditError: 'afterCrudEditError' + afterEditError: 'afterCrudEditError', + afterToView: 'afterToView' } /** diff --git a/mes/qd/src/views/wms/basedata/master/class/index.vue b/mes/qd/src/views/wms/basedata/master/class/index.vue index 9ce43f96..c7e90509 100644 --- a/mes/qd/src/views/wms/basedata/master/class/index.vue +++ b/mes/qd/src/views/wms/basedata/master/class/index.vue @@ -2,33 +2,49 @@
- - - - - 基础分类: - - - - - - - - - - - - +
+ + + + + + + + + + +
- + + + 全部展开 + + - - - - - - @@ -105,17 +106,20 @@ @@ -135,7 +139,7 @@ import udOperation from '@crud/UD.operation' import rrOperation from '@crud/RR.operation' import pagination from '@crud/Pagination' -const defaultForm = { +let defaultForm = { class_id: null, base_data_type: null, path_code: null, @@ -180,14 +184,12 @@ export default { data() { return { classes: [], + classNames: [], permission: {}, rules: { class_id: [ { required: true, message: '不能为空', trigger: 'blur' } ], - base_data_type: [ - { required: true, message: '不能为空', trigger: 'blur' } - ], path_code: [ { required: true, message: '不能为空', trigger: 'blur' } ], @@ -218,7 +220,15 @@ export default { } } }, + created() { + this.getClassNames() // 获取分类 + }, methods: { + getClassNames() { + crudClassstandard.getClassName().then((res) => { // 获取分类名称,查询根据分类编码查找对应分支树 + this.classNames = res + }) + }, getClassDatas(tree, treeNode, resolve) { const params = { pid: tree.id } setTimeout(() => { @@ -318,6 +328,72 @@ export default { }, 100) }) } + }, + clearFrom() { + defaultForm = { + id: null, + class_id: null, + base_data_type: null, + path_code: null, + class_code: null, + long_class_code: null, + class_name: null, + class_desc: null, + parent_class_id: null, + is_leaf: null, + sub_count: null, + is_modify: null, + is_delete: null, + class_level: null, + ext_id: null, + ext_parent_id: null, + create_id: null, + create_name: null, + create_time: null, + update_optid: null, + update_optname: null, + update_time: null, + isTop: null + } + }, + addSibling(row) { + this.clearFrom() // 将默认的表单数据清除 + defaultForm.id = row.id // 获取分类树的id - 懒加载依赖此id,不可为空 + defaultForm.class_id = row.class_id + defaultForm.parent_class_id = row.parent_class_id // 同级为父类class_id + defaultForm.isTop = row.isTop + return defaultForm + }, + addChildren(row) { + this.clearFrom() + defaultForm.id = row.id // 获取分类树的id + defaultForm.class_id = row.parent_class_id + defaultForm.parent_class_id = row.id // 子级为本身的class_id + defaultForm.isTop = row.isTop + return defaultForm + }, + // 全部展开 参考:https://www.cnblogs.com/toughy/p/12667805.html + ToExpandall() { + const els = document.getElementsByClassName('el-table__expand-icon') + if (this.crud.data.length !== 0 && els.length !== 0) { + for (let j1 = 0; j1 < els.length; j1++) { + els[j1].classList.add('dafult') + } + if (this.$el.getElementsByClassName('el-table__expand-icon--expanded')) { + const open = this.$el.getElementsByClassName('el-table__expand-icon--expanded') + for (let j = 0; j < open.length; j++) { + open[j].classList.remove('dafult') + } + const dafult = this.$el.getElementsByClassName('dafult') + for (let a = 0; a < dafult.length; a++) { + debugger + dafult[a].click() + } + } + } + }, + hand(value) { + this.crud.toQuery() } } }