From 887094a4b1be4da446bd02298a16107696b0bbf6 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Fri, 20 Oct 2023 11:38:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7luban-next?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 升级luban-next --- Configs/Defines/Actor.xml | 36 - Configs/Defines/BuffConfig.xml | 68 - Configs/Defines/SkillConfig.xml | 25 - Configs/Defines/__root__.xml | 23 - Configs/Excels/Buff配置表.xlsx | Bin 16210 -> 0 bytes Configs/Excels/__beans__.xlsx | Bin 9870 -> 0 bytes Configs/Excels/__enums__.xlsx | Bin 10645 -> 0 bytes Configs/Excels/__tables__.xlsx | Bin 9947 -> 0 bytes Configs/Excels/怪物模型配置表.xlsx | Bin 17707 -> 0 bytes Configs/Excels/怪物配置表.xlsx | Bin 15730 -> 0 bytes Configs/Excels/技能配置表.xlsx | Bin 13152 -> 0 bytes Configs/Excels/文本配置表_客户端.xlsx | Bin 17209 -> 0 bytes Configs/Excels/模型配置表.xlsx | Bin 23263 -> 0 bytes Configs/Excels/道具配置表.xlsx | Bin 12919 -> 0 bytes Configs/GameConfig/Datas/__beans__.xlsx | Bin 0 -> 9708 bytes Configs/GameConfig/Datas/__enums__.xlsx | Bin 0 -> 9606 bytes Configs/GameConfig/Datas/__tables__.xlsx | Bin 0 -> 9248 bytes Configs/GameConfig/Datas/item.xlsx | Bin 0 -> 11214 bytes Configs/GameConfig/Defines/builtin.xml | 17 + .../GameConfig/gen_code_bin_to_project.bat | 14 + Configs/GameConfig/gen_code_bin_to_server.bat | 15 + Configs/GameConfig/luban.conf | 22 + Configs/gen_code_bin_to_project.bat | 21 - Configs/gen_code_bin_to_project_lazyload.bat | 40 - Configs/gen_code_bin_to_project_unitask.bat | 21 - Configs/gen_code_bin_to_server.bat | 18 - Tools/Luban.ClientServer/about.txt | 1 - Tools/Luban/about.txt | 1 + .../HotFix/GameProto/LubanLib.meta | 8 + .../HotFix/GameProto/LubanLib/BeanBase.cs | 8 + .../GameProto/LubanLib/BeanBase.cs.meta | 11 + .../HotFix/GameProto/LubanLib/ByteBuf.cs | 1568 +++++++++++++++++ .../HotFix/GameProto/LubanLib/ByteBuf.cs.meta | 11 + .../HotFix/GameProto/LubanLib/ITypeId.cs | 7 + .../HotFix/GameProto/LubanLib/ITypeId.cs.meta | 11 + .../HotFix/GameProto/LubanLib/StringUtil.cs | 52 + .../GameProto/LubanLib/StringUtil.cs.meta | 11 + .../TEngine/Runtime/Libraries/LubanLib.dll | Bin 62464 -> 0 bytes .../Runtime/Libraries/LubanLib.dll.meta | 33 - 39 files changed, 1756 insertions(+), 286 deletions(-) delete mode 100644 Configs/Defines/Actor.xml delete mode 100644 Configs/Defines/BuffConfig.xml delete mode 100644 Configs/Defines/SkillConfig.xml delete mode 100644 Configs/Defines/__root__.xml delete mode 100644 Configs/Excels/Buff配置表.xlsx delete mode 100644 Configs/Excels/__beans__.xlsx delete mode 100644 Configs/Excels/__enums__.xlsx delete mode 100644 Configs/Excels/__tables__.xlsx delete mode 100644 Configs/Excels/怪物模型配置表.xlsx delete mode 100644 Configs/Excels/怪物配置表.xlsx delete mode 100644 Configs/Excels/技能配置表.xlsx delete mode 100644 Configs/Excels/文本配置表_客户端.xlsx delete mode 100644 Configs/Excels/模型配置表.xlsx delete mode 100644 Configs/Excels/道具配置表.xlsx create mode 100644 Configs/GameConfig/Datas/__beans__.xlsx create mode 100644 Configs/GameConfig/Datas/__enums__.xlsx create mode 100644 Configs/GameConfig/Datas/__tables__.xlsx create mode 100644 Configs/GameConfig/Datas/item.xlsx create mode 100644 Configs/GameConfig/Defines/builtin.xml create mode 100644 Configs/GameConfig/gen_code_bin_to_project.bat create mode 100644 Configs/GameConfig/gen_code_bin_to_server.bat create mode 100644 Configs/GameConfig/luban.conf delete mode 100644 Configs/gen_code_bin_to_project.bat delete mode 100644 Configs/gen_code_bin_to_project_lazyload.bat delete mode 100644 Configs/gen_code_bin_to_project_unitask.bat delete mode 100644 Configs/gen_code_bin_to_server.bat delete mode 100644 Tools/Luban.ClientServer/about.txt create mode 100644 Tools/Luban/about.txt create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib.meta create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs.meta create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs.meta create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs.meta create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs create mode 100644 UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs.meta delete mode 100644 UnityProject/Assets/TEngine/Runtime/Libraries/LubanLib.dll delete mode 100644 UnityProject/Assets/TEngine/Runtime/Libraries/LubanLib.dll.meta diff --git a/Configs/Defines/Actor.xml b/Configs/Defines/Actor.xml deleted file mode 100644 index a3096203..00000000 --- a/Configs/Defines/Actor.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Configs/Defines/BuffConfig.xml b/Configs/Defines/BuffConfig.xml deleted file mode 100644 index e7f4a904..00000000 --- a/Configs/Defines/BuffConfig.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Configs/Defines/SkillConfig.xml b/Configs/Defines/SkillConfig.xml deleted file mode 100644 index 4c32766b..00000000 --- a/Configs/Defines/SkillConfig.xml +++ /dev/null @@ -1,25 +0,0 @@ - - 技能元素类型 - - - - - - 伤害类型 - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Configs/Defines/__root__.xml b/Configs/Defines/__root__.xml deleted file mode 100644 index efa41cc3..00000000 --- a/Configs/Defines/__root__.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - client - server - editor - - - - 相对data目录 - 相对data目录 - 相对data目录 - - - - - \ No newline at end of file diff --git a/Configs/Excels/Buff配置表.xlsx b/Configs/Excels/Buff配置表.xlsx deleted file mode 100644 index c49937532a1356da41b6129be91e27ac24dc0705..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16210 zcma)jbzGfG?lF zAOJut5C8zeU&(Z=tf-yL&C+7%#JhRl^*VN*B3M|`)Dy_Xpa}K~ewSGtALcpcvq3+3 zf-RFr7hYWfIlyBTW#RkYP^Hx2p8#U=3AFQgwXJ{qXT-%)H<1JVgb?XLY+1ATyC`-4 zkJoNCb6my8Nd0)R_@VJ28DU?e94ebO?Q6yOasaj$pp4z7geBDCu+{?olA7!C>kPdAn5%nzfePqE-nn6b>wAjv1PEGM#w?Gb8&6dU$Wff;0Q(YoN}DCQVX!ddl`|EAnBd^y%Zfh2t9cX~X52}%bjPWL z1NFWD%%0ZM!zpFeT>^*8bYSu_G^f*%$q*MiV7nC@VNeQwANRPHaHqiJ1v{4n5 z8bfRa>9Z$-;KhAHul|FxeOn?|StoVX#mfD$9k<6L$7c>SmTCH*dd@$-ICNt%Jw8cx zqW@hFi=o3@;xBqodC>#nU-h78X=CuJ2=^F1scu>X!Ji^4_~+bJY2=Eg#6_8f6y%Bo z5Itkn1?B=<0`>UE>C09uV_vbf_^3fUH_y%&pT9X-lR}@quN|a_$HPMS=8Y6TGE2=D zxj2-8Kdw?vL_-b=$?n4!dU;2V#)KRn5MFLF!3@657DF#F1G%K8#t;_1z&|Lt@op%1 zSuA0tS?<(ow3lKX5DqeF3yCse#byQQ(FHFXSuO-nwc{WgSj0Qa3n`8%5e((oiE4l9 zVR3?t@N?3#-mwFF@B5m({oYP@+FNb2WD+A14VZ+Ct-Y&9{)Xa=l4~U(87%QmKQIf5 zG>b2EIPu2^P!`{pG@Mg>Te;^hj~K7P3N7c;&CPTUKNcGP3t=+l*wQrVcqH< z#**eR23nKXqRa*&tYcQ82xsNTi-$6AUUALlv}Vx-0y4)`Yz|f? z04LSuqiF3K%Z0@Swe6w<94W&L4!+k%?DqxN&&=$b-cGC(_9ClRGS`g8ylp3AMy?DT zlHYEW^qetfgchsSCROA~#emX9P1>rtbk00gwe$_ye(uroyH>hS3_^&ogY0GeVOFU5 z*3A&IJ_to3ZKA_h91wlB41nGyxmu4;2c3G$!7V0-fes(SgmG7GFtkb;K>6bQFod51 z5J^IvQ#(&-eU$?}mwJ>_T3mkWapq&IE3s0MiGQ9ABcUU#afznIN>EhK?^yhLQA8a{ z$qn!d>_4ACz%Rf$nY}rC4y+s@y9M*0PIjJ{K! zb$o%d-6?Z&_T>|1R8FS}c!Xs$s@emQt;FGX!lRQLUYaE0`7r7|egd8`DPoI)|ONkwGPBxoM9lcWIxvD_Cbq&h;~ zOun$>Mnwf@d+{TShHxRN^_3a^@IjI*GrBDxMv;k?E38kh=lo120RyP<5D7_tdul{f z`MLbW*9b6{ER@nM+30<3tDTNjp?n>kK2ejs(30rDtw(}(c~L=nWWg-slMH%7J7UfL zfN$iBR$W*ihr{B|2I7Dec&*&78JsuUN~}&$Ejg+`>8N*drmVj6WPE_FV(Y*VTML&{ z;GsQ!5SDP9u3XK?`O$CwytAc83uocdX+U!gjigH8J7_eQM6%INN9DnEdAd_x$pG`I zq9bY)Hv3z=Za-!t%m#c34tovOvK|#pRSR1BK1761Cr&GxY5D>*ZWJ~n^0Xpl-Ai7^03k(#0L_4GNQoUvZdR$6cfw`>#PPF-=}e! zzH}7bOcGyalrOB<&88H_noVO%ppqOIgMoR8z?{8&g%YWgodn+^!Se9Y{`V*$QMhV{jiAk0Qc0 z?FLyy>~}=&58a1dNNH46o?-v@Lk#Bk8KrNd<7jO0`K>4Q5Q|vd{jxuPf&&0xzoB$6 zHxu~HMMwSee5@#Gxx|amMtH@el2QVgf*^smEIa!}O|3|BR+U|$&jhWvV9FZ=yXZWHN3P8D7MlHiB>up#>T(_^4_5XhbHN>Y@)gmExnGg z@uJ3^AqvMk_plv2r1}cj2334%R+QPK*CMTX$or@&Z{D`vd*M(w5YM=91t|?l2P5ZS5e(xDWXq@N3;gfqF)CTt_f1!yHyAmCiN7&IR0-cuDMo0s$m+IlQv2?qg?HH} z8S)ojCCl;EH*n4O!@y7x9?x?k4r={~w(XTXCB70-s;Ha63iWv{Ok^*cU-HHlJ>ZYHD zeV!;k-|4uu`FqNaH4v>m+dKvCyt`$YPfJaB3ZK3-Fo~d+yNG+LoyPs|y9Dm{+IO_H zF|{=^FtB^OPnvNCFa|+hZX7R01mizwf3f_s{_!emj@j%e9z3RL&tJFPc_*r<#M77r zWm{aT4o95x5#kl`QV~pDJsuZDy%N7(P6eJf-CnN^wkNUP{YcL1gC;QWxu`l&;hN@k z_S+^}j~vxn-dN5vj$<6zrtM|JO0g_t^ptpdGPUda*2IY?09zTApm)J*yt(Lr`CbO? z3mUZyoTWpeKE8jXzGVU^pUy~p^^AjSTUMICs09=>&TSZM>oPH7^45N0Rw@)BNFKib zRYG7csi|qjkAm;LM4X+PM^~v-*5qr9*QtD_?y5+L>Ra#Y2vQeyjgK`n7nO&&YYGht z2~|`@(j$9WXw|>&rpGX5S-Q1c`5?qQNEO7|lZ#Odl_;iy4m4FFUPTi3E;8n3v0?sz zDGlPn?1dDF&RfGXVqx}VUz@wN=z^BIP0N&b4uJh~@gXc@G1P#Q*>wa%OtvT6((lZP zk6UcIs;SYZ`ZfU@6awtHZ;P$G47^oLsV8WXnlpc<|A0qS0$vaKyFxV+H1f5n4y@eCDuqEJtRR+8O<3)cIFDeupD47Jp2$_L8izCyi# zogk&xjZN5a%h+Vz3jzSnn4o(? z1XB5oUkpK+(i7b1^G@?oYQOW+Lqv>L!>9hpO!jWvARd|ST)H#hIcgp$mnL>?z{8s$ zn7q$EWwQ{bW7JBquXc35Buq7hP6m@N<%fpB$Z}ZLkV-8kI=LPhhD^95C$(aqp#riaXJ4`ub5o;u5QiH%40xXT=x{ETC6YE{J`p6SdKhKWw{c)-HxNtlOXz zSh|Gd&L1%qJ9f%~{_+u^sgR6?YVbJI+4;j}n;$$1aQetU4iG#ZbTO_K|QCBDf!r#Ze!cG~@yL9(7^?jO(cO)i)CW;-f_3zjUZSr>2f zD|Wd;;u5Kg-jHs7>I(N$gNx7YRxL&8N1SgdmL{C%_W-hX;i8)1o=B?r9E?r?E&i@_@+iH^IZYg6qv!}}%a+OS-LQXIXmJ&*!;vVU| zy$82m)VI?V{>5m{5Hv*Os%Musu)u^f)zu`}P)ZzylwcOQqz_J7F*^PA8!J&=!fi?y zZvv$Bo;2aqa0Y?v2MYx(MDAS~arYoSLe!rXdE1=_aE95`r>-M2p}dyyO|QGA|P&1HnWzTN~bB zJ~d|?87~TBee^B+1|qA&V~nZfN#)3J$a)jeG)Xoh@zagHxnH4 z09)xid9*rFp^0~#|5fEVhyo;sYJ4UXXJ#_8Otok(H^2r6uktpa>@%e7UUDz=1_^TB zj4r&Ioe4E|SfT`KJ$L+WHfJ?^5${r-SNK-%KEykkLu#}W@qAaf&NX^AJ57m+cm>=U3x`zVZz(#pu?UPLk)mF}j^1)9Qg zr1RySWbtP0HF@iRlD-7@qz*m(2c%C5-grRiQg{fn{xZg!ra}5t$?dPd0B39MOr*B$VjH~Jy1$_6N zl&l(49vD+Q+jV>$xnRfAs}q)|*xq}01r0`?E-{(Hm;K~VfPddiyyP{IJ1@S(Oo0FBlj66du1o?J! zHshG_Tzs3h0CcrVNkm>ef3Ea=t+`@0DF9YD*)Wgq$${MixL=s`gh@*GnruiB5>e@n zEn~dwqRPmBkvLS$_q(^?!i@rLvJ?)#*FP<^7*7G zgBhxcPKmrNxoY|e{TTrp&gMn*5Zu=pr#ATA((}YymYcD?oJpGg2rimYc!9clq5>$CA_D|=pn2&QLg>Lr(9-sPg#nJlNE8Pc(`uq} zyplu58gfrNpUGtv86U@jn%a`%=li5?Oezv;3JYrdL-6IlOC}Vel<)u_h3Z+Ep_4g% zAdbvf$UrXS-4%ORvza<@SWtWO(yYvKNk)`!21_r3z-vhI0`1Ngau-M^)aA6rv_em^ zve9Gc5uW>d3uTxOYdQ7$kQkH_tCYgT)Z><*>whpY7uI2$)hIGYnMwjzjh*y!)T0WOb!U=k1hT2)_A$#{ z`v%BmcyE*B_}20m%efdaN;07^CL3ZwVM#_}LB))y%WbsfbL#IHAw7GbV?mh=%g0U$ z3-Xwf?laObq1c@%VL`Efe!;;0=L-g_S4=1~tCF!>nI{%Zan&tMqFr$6M2khOc-)u0 z;#sQ}Ihx@m9CKvuA@5VvOAm)q#Zc_+sAX%_ps5Z`A1!K0)!*M9nI+YiDyzeCvZ>&2!bDsAXUH?|mLM?GYa^k3g zF(K)8(nwp9e6wV&^O4DV-C73*&_V;+>u8s5AyzT!bi0%msgbGsxUtt#w5hdn2)t1? z)c8^iQ+>Yo9DpYY0i(&><9JziXa*Q0YJC(0A`)^Dd~{jTi#yH<5+qzX(+Fd?q;*o@AMb%Iy0DTPZ3uun&@H8K5 z7mpSJ&v_3<`VE`Nx#i)`U{Yr#56lY$`6IbL|I8X`{18~H6lOg_qrA>#GHZC9m^p}f zfcRR`1!sqx<}#jem*fKsaLLe@%08P@{0WHQ4aTacnFVIaTICC}^x$T_ir93*;G-(r zjZtc;OJ_A92^CqTY~`F<`2<_0=Z)!v51G#}!$*zF4WD5w7FXuj#VvhTMG+==q~`5a z=krTpJQd%;8ab4CDcuX~&nMTaQwN|sg_$(bekoYsX$z7;J@1#Wu{L_Hn#jvhxjbzX zT)7H&l^z8b-_MX6}QA@L1;(c_r$wiQ>nfR3LEe)3ta7!@(~e@Cae=brr)AQ zCo&Lj&~zn}!J~2^n^1!n^aeOCN_a{EF~1{Z|5mP)E6@vn6NOeqqj|#89m&vbIdIi> zPa_{N7917#c{S6c01Yq3pEFx^1vWh*Fk=-qN`W<$b{q2m44T0A9z4Ut2L80fFBiny zo#dxAi%8tiPe%uRh;Eg&O}4>})woa;3MZ5wQbcEbtFmPYSz+rG0h_84DdPG`CBK$jrYMO-x{J+zAkI@~0(MtEw^nJ^NLg<$347HG9 z;OQLeY$Dlna!cL?DpYY+ zF*R3j+-DQDvb-BmbbbIMyzUS~5h@${UVH^>cm{Svl(Z>USr@EU>B_5i45*#HsC2|Z znF)1!Um6>jd)=L@+jsA6<0mGrk5p1ODC?=#9v_Z*cs%@{o{kF~E7~bYH2TG{pReaD z)}Mat-LG^re?oM*csy$8==JZ`s}t)riS+Y@}m;`Bk^*Vf=3q_?0S+cXWea12z1o6cky{h zMj*H8(kW8!)FZ5izI$cp#@~oUpb^ws0~g^<)9Ji}B_PNf-;MUV`XuTJaJVUbkExbR zEl0|Jam(48x;((0afOt+%l$pbFgW~CeJoRe&SfMX-lK2zeRc*uJnM4u$>%uMgLZX@ zbRVmwI3>{R^%4IM3H^Q?R~(-z$w-6@c<0|YNf|p7IiNGFg$d|)~ zI$WjsV0zaI`x94ThdcdqB&3<&X!)gV98ZYNSqJ)#x$Et9o>N{s-pJj9a%$CRFvqIP zM!H;|kV)r25#whINUjf9U77U^36gReU(Z3FW;ifOtgNcO_JKi`x95^$60-(gxNuEK z>8dtI5Dzu^xn^Tt-_1EOOOHD#tS}teyBARQ@axuLRWOxUHxd>Ct(sJvNX5H$Gc!A` z5CfXKzDJtVrw-o-UyfJBCVf5K-CLjiHUE zr#Pl2yCyZ%X!++h9*!N{Z#qn}dRYEjmVj%Gt>h=P5$ zD8&0pp&S#)#6Q=}FII&`g`-f4rL0+~Q^$0^ZACnBRf zxo=cT!wCE>wH$8vt4A@*swS&TY*~j$2xsIT>E*8e0ot-^lDjg~VJrqJrVea}*AY8F zG+7SuBsxVNrUwpG7K)K)QsBNUhY#8fnsu~{8tD|0xuZOk-=E3O2B8rmx!u~*7>J?0 zX)}F2-&~M5c6-j7UyR480sz2Ez~R+e*xEUp8Q8v>{#kYN$YmAOr-&ZUO7%|g9>$2{ z)<%w`sll+kc(hu%P(P5uA)>LcJR%&Vf@IZNxh%B+4F#eZ|1J~aFB#K?p1Ia9xle5Bugj>bW7|!Pl<1#-W+C>5^+N+h|uhJt`0kzPKMrvY+>( zDWq^boz5>o+f6DM(gE%uvJ7%;FOO604n{6Ku$*V_e6k=+QMJSi!-}W+gt;Su=!L?oe?|*4KZ;Uufw%zT#yCFPl?DP` z#8M{Fr#Oy3D^qPCQ5V)8Ct*s!pG$5tmVXNwkt<`|xF0*1QlY0wWqCpLS$BTtKteQ` z7C`26wvX=4-iV<0NnM{(#D)Td-DJmw-*61QQmQ>DJf~EP<}i&}#Jlvx9~GM1EsZYE$)4QC4!oaW3eQv(UQ!&eCsRI+ z;0RPiPKY-HiPhft8HLtjzEU!&U_Rfldd(cu!tZ$|%ys(JcegF#z9uBoN@)j4zsaH{ zx`h&Iv$@=#yP1ZLn&n-;vC`3~;dE6QIdd_B+A>_9bVN0pd6{=v#H`&RNursy6AJk{ z(2wv>WvV6Y`5L3k9w9mkAvb=Q%1V)NVErO!4+* z0o-iE+1B=rTA^jiF!P|WfXgXTd__>x+Oox^J$cTNjG?GHf`;@g75bNmU3N(GvI+(8+yB=0gh;U^Q{U(b8GS;MEPaNg&^q zj7lk8cWDJrLlb>aGR6qA@ADC~s$fOFqL*D8RgMOfiI7UZg1E1AOyD7lX#w1sQvEvF%mKq3 z-l$0-Z-SC=#5EC%u4g}5diVXShXaHVnxfe6ngEMwH4w};%SO7R77Ie%Ufc7uE2bc3e|4;GVDLr0|RpJL#HTcYr!pj^}6oN z+2+Y05*ZOLS6dmqZpDSye_W0PD1-(LNc@7J5W|`6`y}e!m`>;AWfeg9!9z1Iv z_6IcqaNMatLguJo*1BK|M>FqcG!-WJV`8z7yU_=jI(QON!TX^6^%OYA)~e8-sMcvA zvxvv}S?pa@9P@}uP?gU!?7JH**r!KL2>2xT4b*ojVk_=SW|{4i6In&iERwdtl1#|&pDshUf>Q~B;H73%>Zd^`}{C^7-xPXPhM zTEBzU9*iL%hQDQlk@5-nCe53@G3g8?$Z{!Y);mFHF@8}3s%AvFqErjN zI`A*w6bEq1iJ=~mq<2$^voDD1pgN{OSOm({75BMiaiGV104hdQKML|~e)~ifxnYq zlC(wTQeE4i>k~u5T9K+Kr%+uR9$u(#Y#J5CN^ z5vGtc(#=@B>4|&Rk_Kt|7bKkZa znN=`7&INdP&?tV}{(TY=KrSLOJ>>9<`R0OPsO?1`46{l1dh^)!>m}CX4SxrrSmQGLQzQa4`Osr$L z0zXScrm(Q~nfByL=DJ;k562Z|)DGnJ#XSm|PV8f;Wir2>ou2MkPkKHvy1waL+{;M! zxXJ6Af=(r(tr}Ry&eo7sn4RAH`PmUyNLTj#Mse4Bg70o2!^F)(D1|zEC^yE%texN2 z(h|l`Mm=srYoxi+B>XNBNPhs+TZ?hb3e4=-{6O>2#TzrY&e#@Fo3T6}mdw)nBzR|!_Ki`n<*9`-+d{tGNPp;u#|Vab?_~eQNB^n! z_!bv;?BvnG;pf;xO$A0-7>od$2O|a-9kh8_(j1IT+#OMJ8`gjDfOG>}E zdQKb3>i8Jcbc35f7W&{Ux_En9S@e|YZ&HHY~rBi+`eoLS>8<{%vH8A$emThgM%kE(fCohKmpO57YH{3D>TLP9Kpd`v9 zz>Ovn;dw(^dwZXn&-@D`zp4Y)4L&af4f(Yd*=;}nJ=BHS4jm5s66Ugl004N+Y<_ie zjdW}b^yTerUK4d*ecd*tNhxGL6nB;%xXG(5IcCsclV%A3lE_GOAjRCw-44xZl^klH z4YAK48HGUV5_u7bL6Cf~s6G<)$Pn;!pLA)lwk(4rEuQa-$ELfUthkPIH575PZZ9N( z5ur4(R(x}*76a3rF2gh1iSN(bN&_V3$NY+_-GZ?juPPGHx4jFSCii8tDRDO*OYaIi zS!fi?4&d1O2;o9xmKaX^fuf4>(+30vBiN6-3!f~Rmn+x+bcpquaSWXeHriu;(7Nn) zMuY5k6kxCm28_Wdnge8;j!e`+hWl=9;kn5z79v8n;J5rY~;i4bZ-NE)*?$Vh2D3s?jw4y*E03%}lrZodP(?=cWF zTOUXE?GO~7o_q0`kO7^JJp}~vLo1-V!;oyWjq9lgSpkojY32E2VQ7PKea{1Qo!%jA z1omxQ8n#Av$6DGG*kJd9bE z1@GTp&!0WEmr72UrDvRknmu1+Xdl%Dfm!Z#J5X>M-KU7_j#ygUhN>M@S^XeQOi3{P z(75h~SSt434}0C`O0i0;vK_s&R*;j8z1jNcx2Y4-0gJ$)shXQj)$I0L!rgWlPjiE~0QH z%P|3fdd%OGQibZ%AePO^COPJ*`-I|FPg?sm5Zjm!XS@f|sVZ21c%JET^bQZMf|v@U zn+9fYrJjtZfs{aZ?h4&qfs|b@{&29W-8g+0wAlJw6Z_utRC&?!ik|bkjb}pXB~-$X zZ)n8O!61W@1bp;!#GBuLZuQ>T4B_ou(6o450MGAlO^bcvyt$dyT7&JNxrILVqo_ur z>cK?`e>SCk0{Z)=DX(-wb$E#no4%y1!T(9a(Y3TR{S_9L>yYl^#aNYmz@=^w&w7AB zf`XJK4AtRHjl8C4vuZOvfeXP7&9NBk8y%#@ezZk+qC(l?dMdX^g#?%+4kU8TCu?==hb)Jp3%inum<%sgq|h7* zRX?2v2pt1)yjM?x%t4~+yQ?0$U@){qh_8KJ*26mi$PCoRSrb#wlQKF3?yT}plwiit zh_F7YwUz|w7)!>1>R$^*1XNf_H2xxXV8zxFE#Ro2Vf5ns{>0ovw>Q~CLm~pWlT7;MM=~IN=c1cH6#6>$Ag71?0 z?p}!!&l4obF{;PyZG5tnGtJQx>u&lj*sFM&bomjjKK8Ocyp{tF?XqWXPAaQD zBBgD!z|IO*T_7!o=eqZPzPp@pOVmWs8g6nE^nn~?vBr}J3NpMI987`*Y&?2|zRYbF zG8RMULVX!HGLoFVYve($EnwEH{;ju`mc>V78(c{_{NoH1-xQ+L?9HN3!+hOx7CI2F z1i`@A#%=7mhff{F0!zybsbB@w{S)OwR(8}otSOWF)unJlh%-lTd8eoMx;mpL)oO=D z*!_sJkDiI>`+L59apq>y60td_Dsg;W?*EMC|Ao!}2~ND56U_S;7-wG03D(Q!iz)d{ z_L|Q2uf6dL-L}|alV9~1{!hM%?o`Xh{E*Q#Wd3H$m%x5p9tdjm$p_t@>z$#E0UH() z%sxqcKhq}#@4Kbvi)mnHoIc|P>&oogXfc-4pIN)OJAnzBY3Qh(PJHzO3H<(K@f=WQ z&?I0#9gBo23}&+HQNXmr(G+e zzJKGP_*Xo{6K9j4q{*;Uj=)d^6CO~&flmt>W}!*TnO!&vM8L{>Dv#1L>V=cdBy%i3^z$)tX*$Wi0Bw6J@r3ei$p9TQ1cuv#qn$Ogqqi!c3#W*WNMfba75F z(9V;OPec7~Y_r^?k13=RKQZ>PbI!|*k&_EkVh)Ek$0QV#Lhn*JHHWejVk8Y*oI)Nw zEXWSia0QwTonhnA;-`=JXTpVr;5smDxIS7`==U`#sH^{jfwf#nrMmAY|{`LPAZ; zKAn22vu6-ufrTK)PUC{uJIL zjRunCa`GDcOc{5N%5vlbF6SdhV1UeQQ%+JNk_h^IzHi!@|Cm^R`^UO9iy-ueyan`78UBvq+jNFMJwE@H?N4&U+abTb?)(veNBgVazb?Q3HR#v!hTrW~ z`{pl;;bqW&abNxy@2h+CyS?%nGrr~hm$UTuxxaOnUM2iqK`H-5!W-x5Ef#P6jXwfQ znErW4zXbmAKHds^Thj4IVA6l!^Ji>trMyk%{3B)O1-QSX{AWOKrM%61`XlAlq5lUd Zzp|iY#6f=<8SIzRt&W!`ch*>1>q#n7K`y!t6N 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 e)N=lp?%%~3a#D~#7c0thg%k9%oGr8XVDSch( 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 mR$3pJ;$A`yvmcwy2YWO=t*5{a*k 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 E1H9~9VE_OC diff --git a/Configs/Excels/怪物模型配置表.xlsx b/Configs/Excels/怪物模型配置表.xlsx deleted file mode 100644 index 735a206f81070b7af7b98e1d8fd397048c3b9b4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17707 zcmeHv1z6PG)-MtwNQ(lJk|Hfg!-!H+5>nC)(%lR_bO_R=64KoaBO%=>-JL@>chL8J z&G+2%J@-84e)rt(|2#T8|Fza$Yyb9IYp>a}_m&n%KtzSRdO%XMkFP%ed{AJ2=$h+D zTbWx}GfBhPaA7ZQd|~T)qI!+x8XO!KJRBU>_iS1g7K{$2CW+y7VhAi)zFVGKSXTK) zfqs!D0V%UW^h)67brZtRl27ziUnYMFM6To5o*%n^gs;z$q5_>arM~P2Og*1>=^x1P z@f)i4e2&qS;K5p3VkW;Gzi_-9!%Dd!rsj-{GzGs?IXV>)xQrlJ ar{l1@+W+6AjUUKFiooavKA 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 b8qS}l?g93ZOiy<+J+u1< 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 H%=do)sw7)a diff --git a/Configs/Excels/模型配置表.xlsx b/Configs/Excels/模型配置表.xlsx deleted file mode 100644 index e7535906a777c43a555e0ee42c077e8665531aee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23263 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 P((uw)0u9j96x96({Lwwq diff --git a/Configs/Excels/道具配置表.xlsx b/Configs/Excels/道具配置表.xlsx deleted file mode 100644 index d04c11b4dcecd4b65785874ecae943fcd0120e0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12919 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 frcFRzGKX zKYrT*mv;FxPdBv{Ke6(*ub}QqcHLkt2j>R&0sgz(35&GEvD%&r6O6%J6!GSh`$}^B zSzIiDA`U)7B7fF48#$YybCLcmTsdj(zE#Q)j}{1f_Q2L#TiepZv2~u5JfU$Ws%@p% z3}>sDw-NrHdGj4eR{#hIj&TQP-r-YMiQw`I6B>AcR^Ug)u;m@C4twg9FIqBqVID-PxgKFH_x^<8ED=gNQhJY%W6+JbpY`hi1lo>Nh=6XeyVl#F zFETogg&!{~ZbnnTQ*(85c*VWv4A+F~ONA@?7&U``K4MQ1YbD8vj?s2wzw_&8|DWj( z|0`0%X8eEym7~j)hCtClHS+EU z2esS2)}x=*DBfquu->IrQb%~lS5!W=n6GcHt+4$)UAB5dMEN{pas1pMdEpgm3fbB? zJ+s?%mE7%&9kpLlW<|oVP4^3Blk`)45(9E2p|(=g>m>)hArZPKhE)uHl6rmpoo3&?5SY6Jvs7tiD#v ztsU4>Y`F9}7U3LJhL?2ddDLA{Bk7QmWPz|E!tddkP6E@zG0(o}oQ6u863u_?*YJmj zG$ij8{IYE=oz*ClB=Tw7`Cd12DCJB?RY90>C|LzZKtUBX5o~9>JH|=mY71Wl_4y#g z7YM5b*#()g)JjWF-Q6=g{R!zH{)y=5fVbpFjzWx-a0p(voSX~+X_xypDhF59)GAc5 zM=5_nCNV)T%p-S}u_Ssnm*-kub2F3uhsl(ak-WiSkzK(XjcLZz_lDIzESO$EIn`hx zBBmZIKZDW_ST|}=foD|V>Pp=VVIdc-c{fFRM&X%rX|~0ZAk;gPw2o|4jOC%JOUV*Ie5_>W|OK_>cO3 zn79AS=@(Y%@A2ZaGT6U3rZ4XPb4dP<(g68iQvd40j0Ut75#i^P1%P z$BxVI>-`($^?!N$!omDKUc7z#e0x3Dt-mlb{~qPnoXi)^-`CIgO7j&%^R)x7H%osE zof7`Kg#X$)y|(bWJMhN>|1($aW%Ko)UcvwJ|L?&=LHVWn@22$Moqyey{xc)TU)BCJ zsb636>y_>w17xJX=KX8j|JOyo5C?ycUqO5J;o0B6RK@?L`%-oP=%P}-*8O)4{=4t5 xtMH43-+>qTe=NMJ$*-|^&29W+P~gAZ`D02>68u*JL<2$t(tIv}5Hv4({|ABqDKh{7 diff --git a/Configs/GameConfig/Datas/__beans__.xlsx b/Configs/GameConfig/Datas/__beans__.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0af4c6ac0e4cf473fee82e19c8a5e7d5c9dad387 GIT binary patch literal 9708 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 r!GESBycqe5goJ18?^(HH6R@8>7?yZ8C` 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 literal 0 HcmV?d00001 diff --git a/Configs/GameConfig/Datas/item.xlsx b/Configs/GameConfig/Datas/item.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c463653eb18cdc5fedf3715349e3f27a9dd094d8 GIT binary patch literal 11214 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 literal 0 HcmV?d00001 diff --git a/Configs/GameConfig/Defines/builtin.xml b/Configs/GameConfig/Defines/builtin.xml new file mode 100644 index 00000000..e535ff48 --- /dev/null +++ b/Configs/GameConfig/Defines/builtin.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Configs/GameConfig/gen_code_bin_to_project.bat b/Configs/GameConfig/gen_code_bin_to_project.bat new file mode 100644 index 00000000..9d97b29e --- /dev/null +++ b/Configs/GameConfig/gen_code_bin_to_project.bat @@ -0,0 +1,14 @@ +set WORKSPACE=../.. +set LUBAN_DLL=%WORKSPACE%\Tools\Luban\Luban.dll +set CONF_ROOT=. +set DATA_OUTPATH=%WORKSPACE%/UnityProject/Assets/AssetRaw/Configs/bytes/ +set CODE_OUTPATH=%WORKSPACE%/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig/ +dotnet %LUBAN_DLL% ^ + -t client ^ + -c cs-bin ^ + -d bin^ + --conf %CONF_ROOT%\luban.conf ^ + -x outputCodeDir=%CODE_OUTPATH% ^ + -x outputDataDir=%DATA_OUTPATH% +pause + diff --git a/Configs/GameConfig/gen_code_bin_to_server.bat b/Configs/GameConfig/gen_code_bin_to_server.bat new file mode 100644 index 00000000..86ac4cab --- /dev/null +++ b/Configs/GameConfig/gen_code_bin_to_server.bat @@ -0,0 +1,15 @@ +set WORKSPACE=../../ +set LUBAN_DLL=%WORKSPACE%/Tools/Luban/Luban.dll +set CONF_ROOT=. +set DATA_OUTPATH=%WORKSPACE%/Server/GameConfig +set CODE_OUTPATH=%WORKSPACE%/Server/Hotfix/Config/GameConfig + +dotnet %LUBAN_DLL% ^ + -t server^ + -c cs-bin ^ + -d bin^ + --conf %CONF_ROOT%\luban.conf ^ + -x outputCodeDir=%CODE_OUTPATH% ^ + -x outputDataDir=%DATA_OUTPATH% +pause + diff --git a/Configs/GameConfig/luban.conf b/Configs/GameConfig/luban.conf new file mode 100644 index 00000000..9bbac950 --- /dev/null +++ b/Configs/GameConfig/luban.conf @@ -0,0 +1,22 @@ +{ + "groups": + [ + {"names":["c"], "default":true}, + {"names":["s"], "default":true}, + {"names":["e"], "default":true} + ], + "schemaFiles": + [ + {"fileName":"Defines", "type":""}, + {"fileName":"Datas/__tables__.xlsx", "type":"table"}, + {"fileName":"Datas/__beans__.xlsx", "type":"bean"}, + {"fileName":"Datas/__enums__.xlsx", "type":"enum"} + ], + "dataDir": "Datas", + "targets": + [ + {"name":"server", "manager":"Tables", "groups":["s"], "topModule":"cfg"}, + {"name":"client", "manager":"Tables", "groups":["c"], "topModule":"cfg"}, + {"name":"all", "manager":"Tables", "groups":["c,s,e"], "topModule":"cfg"} + ] +} \ No newline at end of file diff --git a/Configs/gen_code_bin_to_project.bat b/Configs/gen_code_bin_to_project.bat deleted file mode 100644 index 43d5b643..00000000 --- a/Configs/gen_code_bin_to_project.bat +++ /dev/null @@ -1,21 +0,0 @@ -cd /d %~dp0 -set WORKSPACE=.. - -set GEN_CLIENT=%WORKSPACE%\Tools\Luban.ClientServer\Luban.ClientServer.exe -set CONF_ROOT=%WORKSPACE%\Configs -set DATA_OUTPUT=%ROOT_PATH%..\GenerateDatas -set CUSTOM_TEMP=%WORKSPACE%\Configs\CustomTemplate\CustomTemplate_Client - -xcopy %CUSTOM_TEMP%\ConfigSystem.cs %WORKSPACE%\UnityProject\Assets\GameScripts\HotFix\GameProto\ConfigSystem.cs /s /e /i /y - -%GEN_CLIENT% -j cfg --^ - -d %CONF_ROOT%\Defines\__root__.xml ^ - --input_data_dir %CONF_ROOT%\Excels^ - --output_code_dir %WORKSPACE%/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig ^ - --output_data_dir %WORKSPACE%/UnityProject/Assets/AssetRaw/Configs/bytes/ ^ - --gen_types code_cs_unity_bin,data_bin ^ - -s client - -echo ======== 生成配置文件结束 ======== - -pause \ No newline at end of file diff --git a/Configs/gen_code_bin_to_project_lazyload.bat b/Configs/gen_code_bin_to_project_lazyload.bat deleted file mode 100644 index fb2cceba..00000000 --- a/Configs/gen_code_bin_to_project_lazyload.bat +++ /dev/null @@ -1,40 +0,0 @@ -cd /d %~dp0 -set WORKSPACE=.. - -set GEN_CLIENT=%WORKSPACE%\Tools\Luban.ClientServer\Luban.ClientServer.exe -set CONF_ROOT=%WORKSPACE%\Configs -set DATA_OUTPUT=%ROOT_PATH%..\GenerateDatas -set CUSTOM_TEMP=%WORKSPACE%\Configs\CustomTemplate\CustomTemplate_Client_LazyLoad - -xcopy %CUSTOM_TEMP%\ConfigSystem.cs %WORKSPACE%\UnityProject\Assets\GameScripts\HotFix\GameProto\ConfigSystem.cs /s /e /i /y - -%GEN_CLIENT% --template_search_path %CONF_ROOT%\CustomTemplate\CustomTemplate_Client_LazyLoad -j cfg --^ - -d %CONF_ROOT%\Defines\__root__.xml ^ - --input_data_dir %CONF_ROOT%\Excels^ - --output_code_dir %WORKSPACE%/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig ^ - --output_data_dir %WORKSPACE%/UnityProject/Assets/AssetRaw/Configs/bytes/ ^ - --gen_types data_bin ^ - -s client - -%GEN_CLIENT% --template_search_path %CONF_ROOT%\CustomTemplate\CustomTemplate_Client_LazyLoad -j cfg --^ - -d %CONF_ROOT%\Defines\__root__.xml ^ - --input_data_dir %CONF_ROOT%\Excels^ - --output_code_dir %WORKSPACE%/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig ^ - --output_data_dir ..\GenerateDatas\bidx ^ - --gen_types code_cs_unity_bin,data_bidx ^ - -s client - -echo ======== 生成配置文件结束 ======== -set WORKSPACE=.. - -set "prefix=Idx_" - -for %%a in (%DATA_OUTPUT%\bidx\*) do ( - ren "%%a" "Idx_%%~nxa" -) - -echo ======== 所有文件已添加前缀 ======== - -xcopy %DATA_OUTPUT%\bidx\ %WORKSPACE%\UnityProject\Assets\AssetRaw\Configs\bidx\ /s /e /i /y - -pause \ No newline at end of file diff --git a/Configs/gen_code_bin_to_project_unitask.bat b/Configs/gen_code_bin_to_project_unitask.bat deleted file mode 100644 index 4c03d61c..00000000 --- a/Configs/gen_code_bin_to_project_unitask.bat +++ /dev/null @@ -1,21 +0,0 @@ -cd /d %~dp0 -set WORKSPACE=.. - -set GEN_CLIENT=%WORKSPACE%\Tools\Luban.ClientServer\Luban.ClientServer.exe -set CONF_ROOT=%WORKSPACE%\Configs -set DATA_OUTPUT=%ROOT_PATH%..\GenerateDatas -set CUSTOM_TEMP=%WORKSPACE%\Configs\CustomTemplate\CustomTemplate_Client_UniTask - -xcopy %CUSTOM_TEMP%\ConfigSystem.cs %WORKSPACE%\UnityProject\Assets\GameScripts\HotFix\GameProto\ConfigSystem.cs /s /e /i /y - -%GEN_CLIENT% --template_search_path %CONF_ROOT%\CustomTemplate\CustomTemplate_Client_UniTask -j cfg --^ - -d %CONF_ROOT%\Defines\__root__.xml ^ - --input_data_dir %CONF_ROOT%\Excels^ - --output_code_dir %WORKSPACE%/UnityProject/Assets/GameScripts/HotFix/GameProto/GameConfig ^ - --output_data_dir %WORKSPACE%/UnityProject/Assets/AssetRaw/Configs/bytes/ ^ - --gen_types code_cs_unity_bin,data_bin ^ - -s client - -echo ======== 生成配置文件结束 ======== - -pause \ No newline at end of file diff --git a/Configs/gen_code_bin_to_server.bat b/Configs/gen_code_bin_to_server.bat deleted file mode 100644 index 5d01d66b..00000000 --- a/Configs/gen_code_bin_to_server.bat +++ /dev/null @@ -1,18 +0,0 @@ -cd /d %~dp0 -set WORKSPACE=.. - -set GEN_CLIENT=%WORKSPACE%\Tools\Luban.ClientServer\Luban.ClientServer.exe -set CONF_ROOT=%WORKSPACE%\Configs -set DATA_OUTPUT=%ROOT_PATH%..\GenerateDatas - -%GEN_CLIENT% --template_search_path %CONF_ROOT%\CustomTemplate\CustomTemplate_Server_Task -j cfg --^ - -d %CONF_ROOT%\Defines\__root__.xml ^ - --input_data_dir %CONF_ROOT%\Excels^ - --output_code_dir %WORKSPACE%/DotNet/Logic/src/Config/GameConfig ^ - --output_data_dir ..\DotNet\Config\GameConfig ^ - --gen_types code_cs_bin,data_bin ^ - -s server - -echo ======== 生成配置文件结束 ======== - -pause \ No newline at end of file diff --git a/Tools/Luban.ClientServer/about.txt b/Tools/Luban.ClientServer/about.txt deleted file mode 100644 index 564be2ec..00000000 --- a/Tools/Luban.ClientServer/about.txt +++ /dev/null @@ -1 +0,0 @@ -目前使用luban-classic,请自行导入 \ No newline at end of file diff --git a/Tools/Luban/about.txt b/Tools/Luban/about.txt new file mode 100644 index 00000000..73d5ea80 --- /dev/null +++ b/Tools/Luban/about.txt @@ -0,0 +1 @@ +使用luban-next, 请前往Tools/build-luban编译或者自行导入 \ No newline at end of file diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib.meta b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib.meta new file mode 100644 index 00000000..f552196a --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 49afb8bbdbfbf014baadbaed2e2bebee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs new file mode 100644 index 00000000..39fc0ec6 --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs @@ -0,0 +1,8 @@ + +namespace Luban +{ + public abstract class BeanBase + { + public abstract int GetTypeId(); + } +} diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs.meta b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs.meta new file mode 100644 index 00000000..7e53a804 --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/BeanBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 893ae545d065e534bbb7ec9df68e48fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs new file mode 100644 index 00000000..54b56b13 --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs @@ -0,0 +1,1568 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.Numerics; +using System.Runtime.CompilerServices; +using System.Text; + +namespace Luban +{ + + public enum EDeserializeError + { + OK, + NOT_ENOUGH, + EXCEED_SIZE, + // UNMARSHAL_ERR, + } + + public class SerializationException : Exception + { + public SerializationException() { } + public SerializationException(string msg) : base(msg) { } + + public SerializationException(string message, Exception innerException) : base(message, innerException) + { + } + } + + public readonly struct SegmentSaveState + { + public SegmentSaveState(int readerIndex, int writerIndex) + { + ReaderIndex = readerIndex; + WriterIndex = writerIndex; + } + + public int ReaderIndex { get; } + + public int WriterIndex { get; } + } + + public sealed class ByteBuf : ICloneable, IEquatable + { + public ByteBuf() + { + Bytes = Array.Empty(); + ReaderIndex = WriterIndex = 0; + } + + public ByteBuf(int capacity) + { + Bytes = capacity > 0 ? new byte[capacity] : Array.Empty(); + ReaderIndex = 0; + WriterIndex = 0; + } + + public ByteBuf(byte[] bytes) + { + Bytes = bytes; + ReaderIndex = 0; + WriterIndex = Capacity; + } + + public ByteBuf(byte[] bytes, int readIndex, int writeIndex) + { + Bytes = bytes; + ReaderIndex = readIndex; + WriterIndex = writeIndex; + } + + public ByteBuf(int capacity, Action releaser) : this(capacity) + { + _releaser = releaser; + } + + public static ByteBuf Wrap(byte[] bytes) + { + return new ByteBuf(bytes, 0, bytes.Length); + } + + public void Replace(byte[] bytes) + { + Bytes = bytes; + ReaderIndex = 0; + WriterIndex = Capacity; + } + + public void Replace(byte[] bytes, int beginPos, int endPos) + { + Bytes = bytes; + ReaderIndex = beginPos; + WriterIndex = endPos; + } + + public int ReaderIndex { get; set; } + + public int WriterIndex { get; set; } + + private readonly Action _releaser; + + public int Capacity => Bytes.Length; + + public int Size { get { return WriterIndex - ReaderIndex; } } + + public bool Empty => WriterIndex <= ReaderIndex; + + public bool NotEmpty => WriterIndex > ReaderIndex; + + + public void AddWriteIndex(int add) + { + WriterIndex += add; + } + + public void AddReadIndex(int add) + { + ReaderIndex += add; + } + +#pragma warning disable CA1819 // 属性不应返回数组 + public byte[] Bytes { get; private set; } +#pragma warning restore CA1819 // 属性不应返回数组 + + public byte[] CopyData() + { + var n = Remaining; + if (n > 0) + { + var arr = new byte[n]; + Buffer.BlockCopy(Bytes, ReaderIndex, arr, 0, n); + return arr; + } + else + { + return Array.Empty(); + } + } + + public int Remaining { get { return WriterIndex - ReaderIndex; } } + + public void DiscardReadBytes() + { + WriterIndex -= ReaderIndex; + Array.Copy(Bytes, ReaderIndex, Bytes, 0, WriterIndex); + ReaderIndex = 0; + } + + public int NotCompactWritable { get { return Capacity - WriterIndex; } } + + public void WriteBytesWithoutSize(byte[] bs) + { + WriteBytesWithoutSize(bs, 0, bs.Length); + } + + public void WriteBytesWithoutSize(byte[] bs, int offset, int len) + { + EnsureWrite(len); + Buffer.BlockCopy(bs, offset, Bytes, WriterIndex, len); + WriterIndex += len; + } + + public void Clear() + { + ReaderIndex = WriterIndex = 0; + } + + private const int MIN_CAPACITY = 16; + + private static int PropSize(int initSize, int needSize) + { + for (int i = Math.Max(initSize, MIN_CAPACITY); ; i <<= 1) + { + if (i >= needSize) + { + return i; + } + } + } + + private void EnsureWrite0(int size) + { + var needSize = WriterIndex + size - ReaderIndex; + if (needSize < Capacity) + { + WriterIndex -= ReaderIndex; + Array.Copy(Bytes, ReaderIndex, Bytes, 0, WriterIndex); + ReaderIndex = 0; + } + else + { + int newCapacity = PropSize(Capacity, needSize); + var newBytes = new byte[newCapacity]; + WriterIndex -= ReaderIndex; + Buffer.BlockCopy(Bytes, ReaderIndex, newBytes, 0, WriterIndex); + ReaderIndex = 0; + Bytes = newBytes; + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void EnsureWrite(int size) + { + if (WriterIndex + size > Capacity) + { + EnsureWrite0(size); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private void EnsureRead(int size) + { + if (ReaderIndex + size > WriterIndex) + { + throw new SerializationException(); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private bool CanRead(int size) + { + return (ReaderIndex + size <= WriterIndex); + } + + public void Append(byte x) + { + EnsureWrite(1); + Bytes[WriterIndex++] = x; + } + + public void WriteBool(bool b) + { + EnsureWrite(1); + Bytes[WriterIndex++] = (byte)(b ? 1 : 0); + } + + public bool ReadBool() + { + EnsureRead(1); + return Bytes[ReaderIndex++] != 0; + } + + public void WriteByte(byte x) + { + EnsureWrite(1); + Bytes[WriterIndex++] = x; + } + + public byte ReadByte() + { + EnsureRead(1); + return Bytes[ReaderIndex++]; + } + + + public void WriteShort(short x) + { + if (x >= 0) + { + if (x < 0x80) + { + EnsureWrite(1); + Bytes[WriterIndex++] = (byte)x; + return; + } + else if (x < 0x4000) + { + EnsureWrite(2); + Bytes[WriterIndex + 1] = (byte)x; + Bytes[WriterIndex] = (byte)((x >> 8) | 0x80); + WriterIndex += 2; + return; + } + } + EnsureWrite(3); + Bytes[WriterIndex] = 0xff; + Bytes[WriterIndex + 2] = (byte)x; + Bytes[WriterIndex + 1] = (byte)(x >> 8); + WriterIndex += 3; + } + + public short ReadShort() + { + EnsureRead(1); + int h = Bytes[ReaderIndex]; + if (h < 0x80) + { + ReaderIndex++; + return (short)h; + } + else if (h < 0xc0) + { + EnsureRead(2); + int x = ((h & 0x3f) << 8) | Bytes[ReaderIndex + 1]; + ReaderIndex += 2; + return (short)x; + } + else if ((h == 0xff)) + { + EnsureRead(3); + int x = (Bytes[ReaderIndex + 1] << 8) | Bytes[ReaderIndex + 2]; + ReaderIndex += 3; + return (short)x; + } + else + { + throw new SerializationException(); + } + } + + public short ReadFshort() + { + EnsureRead(2); + short x; +#if CPU_SUPPORT_MEMORY_NOT_ALIGN + unsafe + { + fixed (byte* b = &Bytes[ReaderIndex]) + { + x = *(short*)b; + } + } +#else + x = (short)((Bytes[ReaderIndex + 1] << 8) | Bytes[ReaderIndex]); + +#endif + ReaderIndex += 2; + return x; + } + + public void WriteFshort(short x) + { + EnsureWrite(2); +#if CPU_SUPPORT_MEMORY_NOT_ALIGN + unsafe + { + fixed (byte* b = &Bytes[WriterIndex]) + { + *(short*)b = x; + } + } +#else + Bytes[WriterIndex] = (byte)x; + Bytes[WriterIndex + 1] = (byte)(x >> 8); +#endif + WriterIndex += 2; + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public void WriteInt(int x) + { + WriteUint((uint)x); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public int ReadInt() + { + return (int)ReadUint(); + } + + + public void WriteUint(uint x) + { + // 如果有修改,记得也把 EndWriteSegment改了 + // 0 111 1111 + if (x < 0x80) + { + EnsureWrite(1); + Bytes[WriterIndex++] = (byte)x; + } + else if (x < 0x4000) // 10 11 1111, - + { + EnsureWrite(2); + Bytes[WriterIndex + 1] = (byte)x; + Bytes[WriterIndex] = (byte)((x >> 8) | 0x80); + WriterIndex += 2; + } + else if (x < 0x200000) // 110 1 1111, -,- + { + EnsureWrite(3); + Bytes[WriterIndex + 2] = (byte)x; + Bytes[WriterIndex + 1] = (byte)(x >> 8); + Bytes[WriterIndex] = (byte)((x >> 16) | 0xc0); + WriterIndex += 3; + } + else if (x < 0x10000000) // 1110 1111,-,-,- + { + EnsureWrite(4); + Bytes[WriterIndex + 3] = (byte)x; + Bytes[WriterIndex + 2] = (byte)(x >> 8); + Bytes[WriterIndex + 1] = (byte)(x >> 16); + Bytes[WriterIndex] = (byte)((x >> 24) | 0xe0); + WriterIndex += 4; + } + else + { + EnsureWrite(5); + Bytes[WriterIndex] = 0xf0; + Bytes[WriterIndex + 4] = (byte)x; + Bytes[WriterIndex + 3] = (byte)(x >> 8); + Bytes[WriterIndex + 2] = (byte)(x >> 16); + Bytes[WriterIndex + 1] = (byte)(x >> 24); + WriterIndex += 5; + } + } + + public uint ReadUint() + { + /// + /// 警告! 如有修改,记得调整 TryDeserializeInplaceOctets + EnsureRead(1); + uint h = Bytes[ReaderIndex]; + if (h < 0x80) + { + ReaderIndex++; + return h; + } + else if (h < 0xc0) + { + EnsureRead(2); + uint x = ((h & 0x3f) << 8) | Bytes[ReaderIndex + 1]; + ReaderIndex += 2; + return x; + } + else if (h < 0xe0) + { + EnsureRead(3); + uint x = ((h & 0x1f) << 16) | ((uint)Bytes[ReaderIndex + 1] << 8) | Bytes[ReaderIndex + 2]; + ReaderIndex += 3; + return x; + } + else if (h < 0xf0) + { + + EnsureRead(4); + uint x = ((h & 0x0f) << 24) | ((uint)Bytes[ReaderIndex + 1] << 16) | ((uint)Bytes[ReaderIndex + 2] << 8) | Bytes[ReaderIndex + 3]; + ReaderIndex += 4; + return x; + } + else + { + EnsureRead(5); + uint x = ((uint)Bytes[ReaderIndex + 1] << 24) | ((uint)(Bytes[ReaderIndex + 2] << 16)) | ((uint)Bytes[ReaderIndex + 3] << 8) | Bytes[ReaderIndex + 4]; + ReaderIndex += 5; + return x; + } + } + + public unsafe void WriteUint_Unsafe(uint x) + { + // 0 111 1111 + if (x < 0x80) + { + EnsureWrite(1); + Bytes[WriterIndex++] = (byte)(x << 1); + } + else if (x < 0x4000)// 10 11 1111, - + { + EnsureWrite(2); + + fixed (byte* wb = &Bytes[WriterIndex]) + { + *(uint*)(wb) = (x << 2 | 0b01); + } + + WriterIndex += 2; + } + else if (x < 0x200000) // 110 1 1111, -,- + { + EnsureWrite(3); + + fixed (byte* wb = &Bytes[WriterIndex]) + { + *(uint*)(wb) = (x << 3 | 0b011); + } + WriterIndex += 3; + } + else if (x < 0x10000000) // 1110 1111,-,-,- + { + EnsureWrite(4); + fixed (byte* wb = &Bytes[WriterIndex]) + { + *(uint*)(wb) = (x << 4 | 0b0111); + } + WriterIndex += 4; + } + else + { + EnsureWrite(5); + fixed (byte* wb = &Bytes[WriterIndex]) + { + *(uint*)(wb) = (x << 5 | 0b01111); + } + WriterIndex += 5; + } + } + + public unsafe uint ReadUint_Unsafe() + { + /// + /// 警告! 如有修改,记得调整 TryDeserializeInplaceOctets + EnsureRead(1); + uint h = Bytes[ReaderIndex]; + if ((h & 0b1) == 0b0) + { + ReaderIndex++; + return (h >> 1); + } + else if ((h & 0b11) == 0b01) + { + EnsureRead(2); + fixed (byte* rb = &Bytes[ReaderIndex]) + { + ReaderIndex += 2; + return (*(uint*)rb) >> 2; + } + } + else if ((h & 0b111) == 0b011) + { + EnsureRead(3); + fixed (byte* rb = &Bytes[ReaderIndex]) + { + ReaderIndex += 3; + return (*(uint*)rb) >> 3; + } + } + else if ((h & 0b1111) == 0b0111) + { + EnsureRead(4); + fixed (byte* rb = &Bytes[ReaderIndex]) + { + ReaderIndex += 4; + return (*(uint*)rb) >> 4; + } + } + else + { + EnsureRead(5); + fixed (byte* rb = &Bytes[ReaderIndex]) + { + ReaderIndex += 5; + return (*(uint*)rb) >> 5; + } + } + } + + public int ReadFint() + { + EnsureRead(4); + int x; +#if CPU_SUPPORT_MEMORY_NOT_ALIGN + unsafe + { + fixed (byte* b = &Bytes[ReaderIndex]) + { + x = *(int*)b; + } + } +#else + x = (Bytes[ReaderIndex + 3] << 24) | (Bytes[ReaderIndex + 2] << 16) | (Bytes[ReaderIndex + 1] << 8) | (Bytes[ReaderIndex]); + +#endif + ReaderIndex += 4; + return x; + } + + + public void WriteFint(int x) + { + EnsureWrite(4); +#if CPU_SUPPORT_MEMORY_NOT_ALIGN + unsafe + { + fixed (byte* b = &Bytes[WriterIndex]) + { + *(int*)b = x; + } + } +#else + Bytes[WriterIndex] = (byte)x; + Bytes[WriterIndex + 1] = (byte)(x >> 8); + Bytes[WriterIndex + 2] = (byte)(x >> 16); + Bytes[WriterIndex + 3] = (byte)(x >> 24); +#endif + WriterIndex += 4; + } + + public int ReadFint_Safe() + { + EnsureRead(4); + int x; + + x = (Bytes[ReaderIndex + 3] << 24) | (Bytes[ReaderIndex + 2] << 16) | (Bytes[ReaderIndex + 1] << 8) | (Bytes[ReaderIndex]); + + ReaderIndex += 4; + return x; + } + + + public void WriteFint_Safe(int x) + { + EnsureWrite(4); + Bytes[WriterIndex] = (byte)x; + Bytes[WriterIndex + 1] = (byte)(x >> 8); + Bytes[WriterIndex + 2] = (byte)(x >> 16); + Bytes[WriterIndex + 3] = (byte)(x >> 24); + WriterIndex += 4; + } + + public void WriteLong(long x) + { + WriteUlong((ulong)x); + } + + public long ReadLong() + { + return (long)ReadUlong(); + } + + public void WriteNumberAsLong(double x) + { + WriteLong((long)x); + } + + public double ReadLongAsNumber() + { + return ReadLong(); + } + + private void WriteUlong(ulong x) + { + // 0 111 1111 + if (x < 0x80) + { + EnsureWrite(1); + Bytes[WriterIndex++] = (byte)x; + } + else if (x < 0x4000) // 10 11 1111, - + { + EnsureWrite(2); + Bytes[WriterIndex + 1] = (byte)x; + Bytes[WriterIndex] = (byte)((x >> 8) | 0x80); + WriterIndex += 2; + } + else if (x < 0x200000) // 110 1 1111, -,- + { + EnsureWrite(3); + Bytes[WriterIndex + 2] = (byte)x; + Bytes[WriterIndex + 1] = (byte)(x >> 8); + Bytes[WriterIndex] = (byte)((x >> 16) | 0xc0); + WriterIndex += 3; + } + else if (x < 0x10000000) // 1110 1111,-,-,- + { + EnsureWrite(4); + Bytes[WriterIndex + 3] = (byte)x; + Bytes[WriterIndex + 2] = (byte)(x >> 8); + Bytes[WriterIndex + 1] = (byte)(x >> 16); + Bytes[WriterIndex] = (byte)((x >> 24) | 0xe0); + WriterIndex += 4; + } + else if (x < 0x800000000L) // 1111 0xxx,-,-,-,- + { + EnsureWrite(5); + Bytes[WriterIndex + 4] = (byte)x; + Bytes[WriterIndex + 3] = (byte)(x >> 8); + Bytes[WriterIndex + 2] = (byte)(x >> 16); + Bytes[WriterIndex + 1] = (byte)(x >> 24); + Bytes[WriterIndex] = (byte)((x >> 32) | 0xf0); + WriterIndex += 5; + } + else if (x < 0x40000000000L) // 1111 10xx, + { + EnsureWrite(6); + Bytes[WriterIndex + 5] = (byte)x; + Bytes[WriterIndex + 4] = (byte)(x >> 8); + Bytes[WriterIndex + 3] = (byte)(x >> 16); + Bytes[WriterIndex + 2] = (byte)(x >> 24); + Bytes[WriterIndex + 1] = (byte)(x >> 32); + Bytes[WriterIndex] = (byte)((x >> 40) | 0xf8); + WriterIndex += 6; + } + else if (x < 0x200000000000L) // 1111 110x, + { + EnsureWrite(7); + Bytes[WriterIndex + 6] = (byte)x; + Bytes[WriterIndex + 5] = (byte)(x >> 8); + Bytes[WriterIndex + 4] = (byte)(x >> 16); + Bytes[WriterIndex + 3] = (byte)(x >> 24); + Bytes[WriterIndex + 2] = (byte)(x >> 32); + Bytes[WriterIndex + 1] = (byte)(x >> 40); + Bytes[WriterIndex] = (byte)((x >> 48) | 0xfc); + WriterIndex += 7; + } + else if (x < 0x100000000000000L) // 1111 1110 + { + EnsureWrite(8); + Bytes[WriterIndex + 7] = (byte)x; + Bytes[WriterIndex + 6] = (byte)(x >> 8); + Bytes[WriterIndex + 5] = (byte)(x >> 16); + Bytes[WriterIndex + 4] = (byte)(x >> 24); + Bytes[WriterIndex + 3] = (byte)(x >> 32); + Bytes[WriterIndex + 2] = (byte)(x >> 40); + Bytes[WriterIndex + 1] = (byte)(x >> 48); + Bytes[WriterIndex] = 0xfe; + WriterIndex += 8; + } + else // 1111 1111 + { + EnsureWrite(9); + Bytes[WriterIndex] = 0xff; + Bytes[WriterIndex + 8] = (byte)x; + Bytes[WriterIndex + 7] = (byte)(x >> 8); + Bytes[WriterIndex + 6] = (byte)(x >> 16); + Bytes[WriterIndex + 5] = (byte)(x >> 24); + Bytes[WriterIndex + 4] = (byte)(x >> 32); + Bytes[WriterIndex + 3] = (byte)(x >> 40); + Bytes[WriterIndex + 2] = (byte)(x >> 48); + Bytes[WriterIndex + 1] = (byte)(x >> 56); + WriterIndex += 9; + } + } + + public ulong ReadUlong() + { + EnsureRead(1); + uint h = Bytes[ReaderIndex]; + if (h < 0x80) + { + ReaderIndex++; + return h; + } + else if (h < 0xc0) + { + EnsureRead(2); + uint x = ((h & 0x3f) << 8) | Bytes[ReaderIndex + 1]; + ReaderIndex += 2; + return x; + } + else if (h < 0xe0) + { + EnsureRead(3); + uint x = ((h & 0x1f) << 16) | ((uint)Bytes[ReaderIndex + 1] << 8) | Bytes[ReaderIndex + 2]; + ReaderIndex += 3; + return x; + } + else if (h < 0xf0) + { + EnsureRead(4); + uint x = ((h & 0x0f) << 24) | ((uint)Bytes[ReaderIndex + 1] << 16) | ((uint)Bytes[ReaderIndex + 2] << 8) | Bytes[ReaderIndex + 3]; + ReaderIndex += 4; + return x; + } + else if (h < 0xf8) + { + EnsureRead(5); + uint xl = ((uint)Bytes[ReaderIndex + 1] << 24) | ((uint)(Bytes[ReaderIndex + 2] << 16)) | ((uint)Bytes[ReaderIndex + 3] << 8) | (Bytes[ReaderIndex + 4]); + uint xh = h & 0x07; + ReaderIndex += 5; + return ((ulong)xh << 32) | xl; + } + else if (h < 0xfc) + { + EnsureRead(6); + uint xl = ((uint)Bytes[ReaderIndex + 2] << 24) | ((uint)(Bytes[ReaderIndex + 3] << 16)) | ((uint)Bytes[ReaderIndex + 4] << 8) | (Bytes[ReaderIndex + 5]); + uint xh = ((h & 0x03) << 8) | Bytes[ReaderIndex + 1]; + ReaderIndex += 6; + return ((ulong)xh << 32) | xl; + } + else if (h < 0xfe) + { + EnsureRead(7); + uint xl = ((uint)Bytes[ReaderIndex + 3] << 24) | ((uint)(Bytes[ReaderIndex + 4] << 16)) | ((uint)Bytes[ReaderIndex + 5] << 8) | (Bytes[ReaderIndex + 6]); + uint xh = ((h & 0x01) << 16) | ((uint)Bytes[ReaderIndex + 1] << 8) | Bytes[ReaderIndex + 2]; + ReaderIndex += 7; + return ((ulong)xh << 32) | xl; + } + else if (h < 0xff) + { + EnsureRead(8); + uint xl = ((uint)Bytes[ReaderIndex + 4] << 24) | ((uint)(Bytes[ReaderIndex + 5] << 16)) | ((uint)Bytes[ReaderIndex + 6] << 8) | (Bytes[ReaderIndex + 7]); + uint xh = /*((h & 0x01) << 24) |*/ ((uint)Bytes[ReaderIndex + 1] << 16) | ((uint)Bytes[ReaderIndex + 2] << 8) | Bytes[ReaderIndex + 3]; + ReaderIndex += 8; + return ((ulong)xh << 32) | xl; + } + else + { + EnsureRead(9); + uint xl = ((uint)Bytes[ReaderIndex + 5] << 24) | ((uint)(Bytes[ReaderIndex + 6] << 16)) | ((uint)Bytes[ReaderIndex + 7] << 8) | (Bytes[ReaderIndex + 8]); + uint xh = ((uint)Bytes[ReaderIndex + 1] << 24) | ((uint)Bytes[ReaderIndex + 2] << 16) | ((uint)Bytes[ReaderIndex + 3] << 8) | Bytes[ReaderIndex + 4]; + ReaderIndex += 9; + return ((ulong)xh << 32) | xl; + } + } + + + public void WriteFlong(long x) + { + EnsureWrite(8); +#if CPU_SUPPORT_MEMORY_NOT_ALIGN + unsafe + { + fixed (byte* b = &Bytes[WriterIndex]) + { + *(long*)b = x; + } + } +#else + + Bytes[WriterIndex] = (byte)x; + Bytes[WriterIndex + 1] = (byte)(x >> 8); + Bytes[WriterIndex + 2] = (byte)(x >> 16); + Bytes[WriterIndex + 3] = (byte)(x >> 24); + Bytes[WriterIndex + 4] = (byte)(x >> 32); + Bytes[WriterIndex + 5] = (byte)(x >> 40); + Bytes[WriterIndex + 6] = (byte)(x >> 48); + Bytes[WriterIndex + 7] = (byte)(x >> 56); +#endif + WriterIndex += 8; + } + + public long ReadFlong() + { + EnsureRead(8); + long x; +#if CPU_SUPPORT_MEMORY_NOT_ALIGN + unsafe + { + fixed (byte* b = &Bytes[ReaderIndex]) + { + x = *(long*)b; + } + } +#else + int xl = (Bytes[ReaderIndex + 3] << 24) | ((Bytes[ReaderIndex + 2] << 16)) | (Bytes[ReaderIndex + 1] << 8) | (Bytes[ReaderIndex]); + int xh = (Bytes[ReaderIndex + 7] << 24) | (Bytes[ReaderIndex + 6] << 16) | (Bytes[ReaderIndex + 5] << 8) | Bytes[ReaderIndex + 4]; + x = ((long)xh << 32) | (long)xl; +#endif + ReaderIndex += 8; + return x; + } + + private static unsafe void Copy8(byte* dst, byte* src) + { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = src[3]; + dst[4] = src[4]; + dst[5] = src[5]; + dst[6] = src[6]; + dst[7] = src[7]; + } + + private static unsafe void Copy4(byte* dst, byte* src) + { + dst[0] = src[0]; + dst[1] = src[1]; + dst[2] = src[2]; + dst[3] = src[3]; + } + + + //const bool isLittleEndian = true; + public void WriteFloat(float x) + { + EnsureWrite(4); + unsafe + { + fixed (byte* b = &Bytes[WriterIndex]) + { +#if !CPU_SUPPORT_MEMORY_NOT_ALIGN + if ((long)b % 4 == 0) + { + *(float*)b = x; + } + else + { + Copy4(b, (byte*)&x); + } +#else + *(float*)b = x; +#endif + } + } + + //if (!BitConverter.IsLittleEndian) + //{ + // Array.Reverse(data, endPos, 4); + //} + WriterIndex += 4; + } + + public float ReadFloat() + { + EnsureRead(4); + //if (!BitConverter.IsLittleEndian) + //{ + // Array.Reverse(data, beginPos, 4); + //} + float x; + unsafe + { + fixed (byte* b = &Bytes[ReaderIndex]) + { +#if !CPU_SUPPORT_MEMORY_NOT_ALIGN + if ((long)b % 4 == 0) + { + x = *(float*)b; + } + else + { + *((int*)&x) = (b[0]) | (b[1] << 8) | (b[2] << 16) | (b[3] << 24); + } +#else + x = *(float*)b; +#endif + } + } + + ReaderIndex += 4; + return x; + } + + public void WriteDouble(double x) + { + EnsureWrite(8); + unsafe + { + fixed (byte* b = &Bytes[WriterIndex]) + { +#if !CPU_SUPPORT_MEMORY_NOT_ALIGN + if ((long)b % 8 == 0) + { + *(double*)b = x; + } + else + { + Copy8(b, (byte*)&x); + } +#else + *(double*)b = x; +#endif + } + //if (!BitConverter.IsLittleEndian) + //{ + // Array.Reverse(data, endPos, 8); + //} + } + + WriterIndex += 8; + } + + public double ReadDouble() + { + EnsureRead(8); + //if (!BitConverter.IsLittleEndian) + //{ + // Array.Reverse(data, beginPos, 8); + //} + double x; + unsafe + { + fixed (byte* b = &Bytes[ReaderIndex]) + { +#if !CPU_SUPPORT_MEMORY_NOT_ALIGN + if ((long)b % 8 == 0) + { + x = *(double*)b; + } + else + { + int low = (b[0]) | (b[1] << 8) | (b[2] << 16) | (b[3] << 24); + int high = (b[4]) | (b[5] << 8) | (b[6] << 16) | (b[7] << 24); + *((long*)&x) = ((long)high << 32) | (uint)low; + } +#else + x = *(double*)b; +#endif + } + } + + ReaderIndex += 8; + return x; + } + + public void WriteSize(int n) + { + WriteUint((uint)n); + } + + public int ReadSize() + { + return (int)ReadUint(); + } + + // marshal int + // n -> (n << 1) ^ (n >> 31) + // Read + // (x >>> 1) ^ ((x << 31) >> 31) + // (x >>> 1) ^ -(n&1) + public void WriteSint(int x) + { + WriteUint(((uint)x << 1) ^ ((uint)x >> 31)); + } + + public int ReadSint() + { + uint x = ReadUint(); + return (int)((x >> 1) ^ ((x & 1) << 31)); + } + + + // marshal long + // n -> (n << 1) ^ (n >> 63) + // Read + // (x >>> 1) ^((x << 63) >> 63) + // (x >>> 1) ^ -(n&1L) + public void WriteSlong(long x) + { + WriteUlong(((ulong)x << 1) ^ ((ulong)x >> 63)); + } + + public long ReadSlong() + { + long x = ReadLong(); + return ((long)((ulong)x >> 1) ^ ((x & 1) << 63)); + } + + public void WriteString(string x) + { + var n = x != null ? Encoding.UTF8.GetByteCount(x) : 0; + WriteSize(n); + if (n > 0) + { + EnsureWrite(n); + Encoding.UTF8.GetBytes(x, 0, x.Length, Bytes, WriterIndex); + WriterIndex += n; + } + } + + // byte[], [start, end) + public static Func StringCacheFinder { get; set; } + + public string ReadString() + { + var n = ReadSize(); + if (n > 0) + { + EnsureRead(n); + string s; + + if (StringCacheFinder == null) + { + s = Encoding.UTF8.GetString(Bytes, ReaderIndex, n); + } + else + { + // 只缓存比较小的字符串 + s = StringCacheFinder(Bytes, ReaderIndex, n); + } + ReaderIndex += n; + return s; + } + else + { + return string.Empty; + } + } + + public void WriteBytes(byte[] x) + { + var n = x != null ? x.Length : 0; + WriteSize(n); + if (n > 0) + { + EnsureWrite(n); + x.CopyTo(Bytes, WriterIndex); + WriterIndex += n; + } + } + + public byte[] ReadBytes() + { + var n = ReadSize(); + if (n > 0) + { + EnsureRead(n); + var x = new byte[n]; + Buffer.BlockCopy(Bytes, ReaderIndex, x, 0, n); + ReaderIndex += n; + return x; + } + else + { + return Array.Empty(); + } + } + + // 以下是一些特殊类型 + + public void WriteComplex(Complex x) + { + WriteDouble(x.Real); + WriteDouble(x.Imaginary); + } + + public Complex ReadComplex() + { + var x = ReadDouble(); + var y = ReadDouble(); + return new Complex(x, y); + } + + public void WriteVector2(Vector2 x) + { + WriteFloat(x.X); + WriteFloat(x.Y); + } + + public Vector2 ReadVector2() + { + float x = ReadFloat(); + float y = ReadFloat(); + return new Vector2(x, y); + } + + public void WriteVector3(Vector3 x) + { + WriteFloat(x.X); + WriteFloat(x.Y); + WriteFloat(x.Z); + } + + public Vector3 ReadVector3() + { + float x = ReadFloat(); + float y = ReadFloat(); + float z = ReadFloat(); + return new Vector3(x, y, z); + } + + public void WriteVector4(Vector4 x) + { + WriteFloat(x.X); + WriteFloat(x.Y); + WriteFloat(x.Z); + WriteFloat(x.W); + } + + public Vector4 ReadVector4() + { + float x = ReadFloat(); + float y = ReadFloat(); + float z = ReadFloat(); + float w = ReadFloat(); + return new Vector4(x, y, z, w); + } + + + public void WriteQuaternion(Quaternion x) + { + WriteFloat(x.X); + WriteFloat(x.Y); + WriteFloat(x.Z); + WriteFloat(x.W); + } + + public Quaternion ReadQuaternion() + { + float x = ReadFloat(); + float y = ReadFloat(); + float z = ReadFloat(); + float w = ReadFloat(); + return new Quaternion(x, y, z, w); + } + + + public void WriteMatrix4x4(Matrix4x4 x) + { + WriteFloat(x.M11); + WriteFloat(x.M12); + WriteFloat(x.M13); + WriteFloat(x.M14); + WriteFloat(x.M21); + WriteFloat(x.M22); + WriteFloat(x.M23); + WriteFloat(x.M24); + WriteFloat(x.M31); + WriteFloat(x.M32); + WriteFloat(x.M33); + WriteFloat(x.M34); + WriteFloat(x.M41); + WriteFloat(x.M42); + WriteFloat(x.M43); + WriteFloat(x.M44); + } + + public Matrix4x4 ReadMatrix4x4() + { + float m11 = ReadFloat(); + float m12 = ReadFloat(); + float m13 = ReadFloat(); + float m14 = ReadFloat(); + float m21 = ReadFloat(); + float m22 = ReadFloat(); + float m23 = ReadFloat(); + float m24 = ReadFloat(); + float m31 = ReadFloat(); + float m32 = ReadFloat(); + float m33 = ReadFloat(); + float m34 = ReadFloat(); + float m41 = ReadFloat(); + float m42 = ReadFloat(); + float m43 = ReadFloat(); + float m44 = ReadFloat(); + return new Matrix4x4(m11, m12, m13, m14, + m21, m22, m23, m24, + m31, m32, m33, m34, + m41, m42, m43, m44); + } + + internal void SkipBytes() + { + int n = ReadSize(); + EnsureRead(n); + ReaderIndex += n; + } + + + public void WriteByteBufWithSize(ByteBuf o) + { + int n = o.Size; + if (n > 0) + { + WriteSize(n); + WriteBytesWithoutSize(o.Bytes, o.ReaderIndex, n); + } + else + { + WriteByte(0); + } + } + + public void WriteByteBufWithoutSize(ByteBuf o) + { + int n = o.Size; + if (n > 0) + { + WriteBytesWithoutSize(o.Bytes, o.ReaderIndex, n); + } + } + + public bool TryReadByte(out byte x) + { + if (CanRead(1)) + { + x = Bytes[ReaderIndex++]; + return true; + } + else + { + x = 0; + return false; + } + } + + public EDeserializeError TryDeserializeInplaceByteBuf(int maxSize, ByteBuf inplaceTempBody) + { + //if (!CanRead(1)) { return EDeserializeError.NOT_ENOUGH; } + int oldReadIndex = ReaderIndex; + bool commit = false; + try + { + int n; + int h = Bytes[ReaderIndex]; + if (h < 0x80) + { + ReaderIndex++; + n = h; + } + else if (h < 0xc0) + { + if (!CanRead(2)) { return EDeserializeError.NOT_ENOUGH; } + n = ((h & 0x3f) << 8) | Bytes[ReaderIndex + 1]; + ReaderIndex += 2; + } + else if (h < 0xe0) + { + if (!CanRead(3)) { return EDeserializeError.NOT_ENOUGH; } + n = ((h & 0x1f) << 16) | (Bytes[ReaderIndex + 1] << 8) | Bytes[ReaderIndex + 2]; + ReaderIndex += 3; + } + else if (h < 0xf0) + { + if (!CanRead(4)) { return EDeserializeError.NOT_ENOUGH; } + n = ((h & 0x0f) << 24) | (Bytes[ReaderIndex + 1] << 16) | (Bytes[ReaderIndex + 2] << 8) | Bytes[ReaderIndex + 3]; + ReaderIndex += 4; + } + else + { + return EDeserializeError.EXCEED_SIZE; + } + + if (n > maxSize) + { + return EDeserializeError.EXCEED_SIZE; + } + if (Remaining < n) + { + return EDeserializeError.NOT_ENOUGH; + } + + int inplaceReadIndex = ReaderIndex; + ReaderIndex += n; + + inplaceTempBody.Replace(Bytes, inplaceReadIndex, ReaderIndex); + commit = true; + } + finally + { + if (!commit) + { + ReaderIndex = oldReadIndex; + } + } + + return EDeserializeError.OK; + } + + public void WriteRawTag(byte b1) + { + EnsureWrite(1); + Bytes[WriterIndex++] = b1; + } + + public void WriteRawTag(byte b1, byte b2) + { + EnsureWrite(2); + Bytes[WriterIndex] = b1; + Bytes[WriterIndex + 1] = b2; + WriterIndex += 2; + } + + public void WriteRawTag(byte b1, byte b2, byte b3) + { + EnsureWrite(3); + Bytes[WriterIndex] = b1; + Bytes[WriterIndex + 1] = b2; + Bytes[WriterIndex + 2] = b3; + WriterIndex += 3; + } + + #region segment + + + public void BeginWriteSegment(out int oldSize) + { + oldSize = Size; + EnsureWrite(1); + WriterIndex += 1; + } + + public void EndWriteSegment(int oldSize) + { + int startPos = ReaderIndex + oldSize; + int segmentSize = WriterIndex - startPos - 1; + + // 0 111 1111 + if (segmentSize < 0x80) + { + Bytes[startPos] = (byte)segmentSize; + } + else if (segmentSize < 0x4000) // 10 11 1111, - + { + EnsureWrite(1); + Bytes[WriterIndex] = Bytes[startPos + 1]; + Bytes[startPos + 1] = (byte)segmentSize; + + Bytes[startPos] = (byte)((segmentSize >> 8) | 0x80); + WriterIndex += 1; + } + else if (segmentSize < 0x200000) // 110 1 1111, -,- + { + EnsureWrite(2); + Bytes[WriterIndex + 1] = Bytes[startPos + 2]; + Bytes[startPos + 2] = (byte)segmentSize; + + Bytes[WriterIndex] = Bytes[startPos + 1]; + Bytes[startPos + 1] = (byte)(segmentSize >> 8); + + Bytes[startPos] = (byte)((segmentSize >> 16) | 0xc0); + WriterIndex += 2; + } + else if (segmentSize < 0x10000000) // 1110 1111,-,-,- + { + EnsureWrite(3); + Bytes[WriterIndex + 2] = Bytes[startPos + 3]; + Bytes[startPos + 3] = (byte)segmentSize; + + Bytes[WriterIndex + 1] = Bytes[startPos + 2]; + Bytes[startPos + 2] = (byte)(segmentSize >> 8); + + Bytes[WriterIndex] = Bytes[startPos + 1]; + Bytes[startPos + 1] = (byte)(segmentSize >> 16); + + Bytes[startPos] = (byte)((segmentSize >> 24) | 0xe0); + WriterIndex += 3; + } + else + { + throw new SerializationException("exceed max segment size"); + } + } + + public void ReadSegment(out int startIndex, out int segmentSize) + { + EnsureRead(1); + int h = Bytes[ReaderIndex++]; + + startIndex = ReaderIndex; + + if (h < 0x80) + { + segmentSize = h; + ReaderIndex += segmentSize; + } + else if (h < 0xc0) + { + EnsureRead(1); + segmentSize = ((h & 0x3f) << 8) | Bytes[ReaderIndex]; + int endPos = ReaderIndex + segmentSize; + Bytes[ReaderIndex] = Bytes[endPos]; + ReaderIndex += segmentSize + 1; + } + else if (h < 0xe0) + { + EnsureRead(2); + segmentSize = ((h & 0x1f) << 16) | ((int)Bytes[ReaderIndex] << 8) | Bytes[ReaderIndex + 1]; + int endPos = ReaderIndex + segmentSize; + Bytes[ReaderIndex] = Bytes[endPos]; + Bytes[ReaderIndex + 1] = Bytes[endPos + 1]; + ReaderIndex += segmentSize + 2; + } + else if (h < 0xf0) + { + EnsureRead(3); + segmentSize = ((h & 0x0f) << 24) | ((int)Bytes[ReaderIndex] << 16) | ((int)Bytes[ReaderIndex + 1] << 8) | Bytes[ReaderIndex + 2]; + int endPos = ReaderIndex + segmentSize; + Bytes[ReaderIndex] = Bytes[endPos]; + Bytes[ReaderIndex + 1] = Bytes[endPos + 1]; + Bytes[ReaderIndex + 2] = Bytes[endPos + 2]; + ReaderIndex += segmentSize + 3; + } + else + { + throw new SerializationException("exceed max size"); + } + if (ReaderIndex > WriterIndex) + { + throw new SerializationException("segment data not enough"); + } + } + + public void ReadSegment(ByteBuf buf) + { + ReadSegment(out int startPos, out var size); + buf.Bytes = Bytes; + buf.ReaderIndex = startPos; + buf.WriterIndex = startPos + size; + } + + public void EnterSegment(out SegmentSaveState saveState) + { + ReadSegment(out int startPos, out int size); + + saveState = new SegmentSaveState(ReaderIndex, WriterIndex); + ReaderIndex = startPos; + WriterIndex = startPos + size; + } + + public void LeaveSegment(SegmentSaveState saveState) + { + ReaderIndex = saveState.ReaderIndex; + WriterIndex = saveState.WriterIndex; + } + + #endregion + + public override string ToString() + { + string[] datas = new string[WriterIndex - ReaderIndex]; + for (var i = ReaderIndex; i < WriterIndex; i++) + { + datas[i - ReaderIndex] = Bytes[i].ToString("X2"); + } + return string.Join(".", datas); + } + + public override bool Equals(object obj) + { + return (obj is ByteBuf other) && Equals(other); + } + + public bool Equals(ByteBuf other) + { + if (other == null) + { + return false; + } + if (Size != other.Size) + { + return false; + } + for (int i = 0, n = Size; i < n; i++) + { + if (Bytes[ReaderIndex + i] != other.Bytes[other.ReaderIndex + i]) + { + return false; + } + } + return true; + } + + public object Clone() + { + return new ByteBuf(CopyData()); + } + + + public static ByteBuf FromString(string value) + { + var ss = value.Split(','); + byte[] data = new byte[ss.Length]; + for (int i = 0; i < data.Length; i++) + { + data[i] = byte.Parse(ss[i]); + } + return new ByteBuf(data); + } + + public override int GetHashCode() + { + int hash = 17; + for (int i = ReaderIndex; i < WriterIndex; i++) + { + hash = hash * 23 + Bytes[i]; + } + return hash; + } + + public void Release() + { + _releaser?.Invoke(this); + } + +#if SUPPORT_PUERTS_ARRAYBUF + // -- add for puerts + public Puerts.ArrayBuffer ReadArrayBuffer() + { + return new Puerts.ArrayBuffer(ReadBytes()); + } + + public void WriteArrayBuffer(Puerts.ArrayBuffer bytes) + { + WriteBytes(bytes.Bytes); + } +#endif + } +} diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs.meta b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs.meta new file mode 100644 index 00000000..6dc268c7 --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ByteBuf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4e75cc385e3ba2a4a928b3beb7f69b13 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs new file mode 100644 index 00000000..3ea44b39 --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs @@ -0,0 +1,7 @@ +namespace Luban +{ + public interface ITypeId + { + int GetTypeId(); + } +} diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs.meta b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs.meta new file mode 100644 index 00000000..3a62aa1d --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/ITypeId.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09af473d0f77f7f43ba793fc8c3996a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs new file mode 100644 index 00000000..0648ffcc --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs @@ -0,0 +1,52 @@ +using System.Collections.Generic; +using System.Text; + +namespace Luban +{ + public static class StringUtil + { + public static string ToStr(object o) + { + return ToStr(o, new StringBuilder()); + } + + public static string ToStr(object o, StringBuilder sb) + { + foreach (var p in o.GetType().GetFields()) + { + + sb.Append($"{p.Name} = {p.GetValue(o)},"); + } + + foreach (var p in o.GetType().GetProperties()) + { + sb.Append($"{p.Name} = {p.GetValue(o)},"); + } + return sb.ToString(); + } + + public static string ArrayToString(T[] arr) + { + return "[" + string.Join(",", arr) + "]"; + } + + + public static string CollectionToString(IEnumerable arr) + { + return "[" + string.Join(",", arr) + "]"; + } + + + public static string CollectionToString(IDictionary dic) + { + var sb = new StringBuilder('{'); + foreach (var e in dic) + { + sb.Append(e.Key).Append(':'); + sb.Append(e.Value).Append(','); + } + sb.Append('}'); + return sb.ToString(); + } + } +} diff --git a/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs.meta b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs.meta new file mode 100644 index 00000000..ab6f41a5 --- /dev/null +++ b/UnityProject/Assets/GameScripts/HotFix/GameProto/LubanLib/StringUtil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 353da197a63f6004ba2cbd8751e717bf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/TEngine/Runtime/Libraries/LubanLib.dll b/UnityProject/Assets/TEngine/Runtime/Libraries/LubanLib.dll deleted file mode 100644 index b8cddc1bfdbfdf6638b656a2371400a2eb3a959b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62464 zcmdqK37C|{@jqVuzBBLKyE8k>>@L?Xf;ch@0-`R6$}K1$awsUeEbI!4%MR@9st71V zyb?7K4IaV7GistH#v^Lf;1Q3+JDO-Diiuy3Z;YDD#AxvMsp@{;d3Sd4h~MY=KhJ+* zYPzbstE;Q3tGnN~-*;vmw}osX3gGkUr$l$-oBt*V{A{oh*=4o&meC!Nrv}}vW?;-qKHZ0p=xjNy6Zp1JDj^n4&@@%p0|wOeT}B zKA^;MgciAsM}7G(cFPY? z1IodNQZyI|`HNb4H00FX04$q<$Q6{WV#!1G0Vke|dj;b;3J*Jmta2sAvehV*hb&@9 zmMsAe;(u0tZ;)F>=n-VuZTX?5nAn!fVLYO5Qtss5%UP5|Ih1AJ)iOe|nxbSWP0aQM zDYILNcuUdR@K6V&Se*-Yl;g`t$TqJ7zcS&svdFMskzp{iQkYDVKKA!_Pke^!gC*qg z)rSMPs_I^UU`c&#Q-oafy9+L3c{b(P1iLaFmMGF;3>_P+`mj~_2rA44vxAEUj<9SI$C!OID%jS?2h29f6iXi4#vP{r&+TvpvY{sS*W;C}CkiiJ& z`kc0B7I8|8&AfmRq6=(@kr1dv9j87jv2!C6gj%#;fKG$cK~E{lPJ?EmP9_hZiXyne zMKOqnc(68l{KDM&zM2e<^lnSOpsZiQUIRh6>bs$_5 zKJ)MygU<$hFz3@$d~%d>YWEt^PretAuyQ9m9dLlvd3b4bXv0k?;&i}5F5xmEpkQ{qZ1RKt-9g#NaI2iViOW#-Ug+7CM*; z)>rz8SyBlv|K(QXiIh7tiI$>M=pF;p!t!_5i6HF>>)F1<6?M`{A^h956T6 zLyTx;EE5+`OUNQ59mu4EnY5EhhZ>GVNwUJ)DI%!|tF?B&0~P|-9WVkgvS?}$MXp1r z-Hy+0xHf+{4K<^^?{qE`Oh;4E`bvtJPH0Ov zv?I?c{0$&K94eqtWp*-fEA~;H6BuJ+_d5ojz&`5r? z6tGgxl5{eatk0l>5m|+$oa}VwfZ4f`Vsu*_o`bO_F1Jfo-r-KLeUNLAE_ zw6D3S!(UGYFg&g;)=h^cRHh>tOnyVa5RFCCG0h_#PeoF(RNTbMR20k*b5mh(L#P}6 zEM|>RZlS3qt483{fy2mASu+D~06v*U@UU{>D37H^7|Q5_g@@AR^|lON@9sKz zor%D$_a#^#bCxK+WF3k&*q;`Hzqf9MaD*|+bojSZpVZqX8Mhf(UGe@x6EhM$V!3K7 z4;{fH>#_30vd?)gmJ4L`YL)wr>5}&-E>AE>@@5%>$w-{5&>XmLSZ8B-=Ix#R{oo3{ z^#e;*=DirzOh5FV8=^2BO*^Y30|C@NrMT&4J(an7a`!PMIx;+#l=6m*%$s}ryi^$m z-bQlf%OPJ$nbLis-glb%&82*?5_S15|8Mx3`YTHLB22k_SNu18P5rh~zPTdb=l&bM zrvB<8-+)~Is@HtOpvzU23`W3A*k6x;NCmDnWM=`_L%?_SWwz&4vPZ+7${PpR6GpR~ z?{gw|Pc~e)*IAUqCg_rVm-Xh!0Wq)=? z*~oMZ5odVJ%3~4X$h2R@d+N$WZmgA$avkSF#4d#eaUfTPrKN>kBto^5XXoDTZmAs1 z2bg4rzZx?8XPYpQ5!N!?2J^0WZ0vh^Pwv!PxvZ7129Xd)(v}_CnmvhG%7hiFS{Mu2 z7q#-XcK9Fpx+UgE@DlyXJh!)%-^7*0Bjq{Dm*&qIc{dvv?{iteh&hY4fPeci9v*DCZiKOfwB^fwPBW9fu0^O~dAKA+vQ z&sflKpEno#tZj=m&KI=p^j>Yt1LB(hBimjfJLfN9+w*(&vqAUgykbAKZLxy;%zhSa zdrU93 z3u3t>sPOn`w@Y^LC5wHN4ix?|`^>B<=sNH=q*87FxxiUTL6)@dKi|ZA*q`ppw z7Eb8VZVJ>BK|Q%!!*09dKfB$S*DeCGQ)ukgF2`uMze{?w%l&NvwOg}Zf3X0E{`S~k zgbdSPUO^O=c5655Yj;_XcKHGRz zvRiwDcvIjpw*tkqsUFU*k_L%yhO+PQ^$e|Z$;sa0b_jIN-+=F#-P*vWrb=I@GyLs! z?cm85oE@@)(xkmE?~y1sPWKMGt&zpLx|`kV>fUy%Yw3v3vIOW%$TF*&EDfKhUrUcI zPbG!b(tRTl^j*IveOuK&-RoLK-3R3Q$Lwyh)bC04Mkiu_(|$O+rf3Gw4%){hD|=gs z9j@zPhiOG!YCGHOIy|L&b|@4{Wp1%fk4CspC2L{WW^$3AYa1Uw*ET+WT0! zj(OjKyhnA@&-5>AE30ER$Hk)Uxt%_+v`sAktNJ?ckFd*ePpkf_PWzOGUb+dmcee*9dWK@e66{b z@wMby#@CA0Lbn!tV=G7qd^D$NutZKduBnk@5cM;PB8H6_^roNvlI> zMH{X|4`aDwJR45`LN=6rU(HCvHQvppnq#R=b^On+M|0V`zm!eAPTT7c{M@)!?7O}0 z3?JE3fxQml$t&&k+FrNOBY%!feXY4R^|j>M)Ypn@Q(p_+Z2A~%dUQ9NF7ew`t|j@6 zY6xDJ^wlO~LSt6U7bRwuS_N!>Vb|k4yUuj&s+sBz8HOgZ>KxCs!r3#epR3=tSZNS; z#hAnSqU2!g6`kzQU|&5e>N)GP$E?r3Ut`l?WsP~uZ{M?gWKS9Py3Iba&%S4SuaH#eL2R?>t^4t9%IizZ(_Nx5@R(7zs+D-I$Y$;o(uNb2foyJ z^*W=tjj#yU5IVJeFO7JVX;f1Z}R4g|`A4CIFtVq38jWF~DPIpBr zbSy@3qnAL7#q}Mq+e~FLm_0i6M+eh}gYUj6k z+{?^Qx^S5NioWB(_=KL-A>=q!bsR9`+RAz@dpLfOl? z*AlKsE+I2VzMP5^P<*5dCy=k;=7#OgY)oKU&1}R~kwDc(NEoR56zy!}DRD1+AGVQK zQ<;rvft3O=NI}T}%6Zf{%A*_b&vn&E$=-P=c7q!jgA9DVKZG)ixJ*^?IyKXzo{t8m zbe!f@h1@*mnP}k|_r#p`uY*tq;@}>3W^~%N)=9zbD7ZVIuh~O05vwo;wPLw)op0x_ zM1kV|6?-{-pDv)UiJ?kJZo?+6J#mHQ46{J~yR1B19+bB2K>mA-qpQ+a)`yZlhz#ah zf~f9P44)HNhw_WLeYv(3b)qKx>1 z!~@1m8804GYmatggw*Rj9>C;*{LN^&@ND;ZP>()JJh0Yr89RRq3SmHFv}zm%geyfY zoSTuDfGbdZPiYeBVTF;x8B{ri^X-xATa zj!Po&Z7AT2OM%K*uF7!BB1q)o6_y<8HJb>Q3+o>~g6hcy0ZL+156+mot=wQg-$aF- zy&Y|1{Bmi>hz|8jjPk`6k6AIc*wl`4OMNoCBqbEP>PlajymTgMDzVf||j*U|Ae3>EcwumH+n5`vh5IGPlyFc> zm*8O$%MAhlds$cBIBvvjdRtw^;@8b#C{mh(N&AAKM0U&`Ib6;%z`QXl)fcJBW}YF<UeY$<`81D?uMj;|d$C>og=3D6?XIToXA1VdSU>Cy zkN!DQF~Z&V9Y~lmAsJ7$iTx<_Ao7Mk4{>pd1IsekOI%ro)96Mm3nqkzP<8{ijR}Db zvf`c>!D!+&Wl6=ze4SiFYi>R5Eaz!3=hI55Z}TZUKJ>+pSIo4#relyq9mGL#HOw>Is3T|F6S;c3 zD+1wT?m=rg>8^`}q@XDm&`($Nh{w!}AMDa=y#vkja=Kq9l3nB3S_+Bzaw0!{=FD*n+9yM_OHQX*GPZ)dkm3!w(Bz`5O=BV47EOAwG5B#!-vs6>1aR;(QR#QCLwf zu(bbSO&O?)=cd_RQ5XsSrw{V;x-zBJ>xh#1Ik-V~wj666dCVeZXCH<;=^~uTOflcE zUW@AhZSO~1zr!t_!H`A%v>D)geLde}<>h~Y!kCx3`CfnB8J8B|zWCO2pEbr=7UO%E zP6F9SU0Fcqc?0&>>optE3EJk_g}sdnYkPHDdoo#sk+r83@;iwTdOC@;rS)R`gbT`9 zU14?#ub`P!@`xeN67U+9a};>MUok%PvrT+HbT7LLlL^}!Q3Tdv4)*m-f|`p~7X3Y2aH0I;C}eB_+t4a*{|t;&enu{Q#y}+aFu@Ra{X5hh9Z;NW zD~Zwl{(Jky(5~1|9^er^W^LT#Sz3?Ibwtm;hZ+5NPdhE0>cZ)8POZDhTa`0apVzxUvy+pNkBb*P9hL}z!3 z<0;2S9rih;0#cXTw)wg=ud_L(F+=SvmDW0DXJ3E`u%FrCR%@CrW^!aPXC(6JgX69C z+v2r{xi|p+d(2;148~kQ^VH+T@}1q)n z&$p(njvr%jDT|kEh&zz$(|f;G8nucJMu3mRUiUfKK70%vn$ZV>4X3gmO5m}_GOYeT zkYT@GWxxpRCPO*T;eIuU{8$f|c{d}mHybY6PV~kPPiUg(jpq(*TQHW2uC7P4_C?Oe zhx7l&LxDY8@=GFy8$*lZD2w^rJrAVs+3Pt<9wW@ogBZnjf^-SmStCtZ`6tlR{4W8b zm;ka)=!!U^(;YBoIR7h9@r2Nm_{u)T#r6RhsxQ?#7qyOl9_NIl`qQBEGpo4~cwqGk zJgllY;5klakqTP*XYlRk;T}|tfX%OL*Sau-$vQG0L-motm%?fNl00<1jl}|?bTX6QB0KqmAPs}xQva;Zr%dUp$$+9wg zN3$z9>10phuVIgRuEJiiOUg-9eDa->Dt#(L& zpr=KW1Z)?i@o2YG`kuwZkhofdYqM~rL8K4z<4I4z<@i)#M33}k2U2tf7}WYDmC zanLP$Iwx(cLA3O&(x8^zC@SbGO85tOe`WOF(_y*&p~&wNJ=G?&SS%n4WT0HRatVC} z`O1F?SA>^Fb8qv*)vVi}pw1~;w=96Y(6uVW=T7YA>otdc741-NK1Lh!a&6{w;k?@Zby94*_v^e)>4nxGG9hMj+3W;p?2K$dw~9cI;U|R zJ0rdpb;h0z5-u%l1QZY27q{7a>L<>R^y;A&wx8eLuw5$A1g?aQGD3TG&q`GbQPl0d z`0T)C($Er+wMDB9)7)&bYI<^zo1@)WRG0EZBLkOt{A!8=k!^vQhv!PHLwd2r)~HkL zc3+r@4Wv7&4YVTBa0M7RbvpoYGl;kTxIk2`&Fa)1);Msf+dZyZwQ%c_bPzpb1U(Zj zso;u4?ifdUf{U4a5p*K=wTEk%Tk$Gg5ZU}E_BAe(hgfOcWSv`&0bYd?rF zjmo_^UChGGbnSE@2tf@uqN-gdUKhm19`n=}^Sb6ecpWtyqd8)swmS$vKCV|U?A7O* zOI*7)*(`oi^ljG{so?|o59G$0d3R8}=w!0`_Vo6eQr||y154V0_R&&l+ttl=yTHEK zc3-16%AHD9zn)Fiu}IwpR^QUbAx&xHkf%rEEKoHIqz80Aw_%B)H$%PaKX?2EF>&FZ zXpixiXlO@$GyJsT@HF?A9e#-hzT4!8f}nmLfJb@*(5bC$tW7TMFd7f<{Rz5Vo`x z@GNPiFSp{x0GLd-5;g0u0AUTl&jau^=Z(@kjM4hfAEQ-Ed6e#l%Dz$B``qwNz8=eC zVON48cJD;+Ry*H@?XIz}}=+@s%>#(M`GyJl&P=Ewn* z=bqwd{HEb3qmiwKc-+fq)Ex1`fnDhcr6P9Ur2{la)*EvyjyV7Bok2g()kF04<+XDd z&Do5`{(ss(SyxmM0f)I3X9};@C??uKqojP5nw2Nf5Mjk;DVFbcMzPS{6w@xp?7J*JCA@ZLa$l zTKCD?-(68P;GrC&LpTe|is^3b4@K4iJ!S1*Dl3F9l@;RmkW~UriCipysjMu2wxpb0 zJF>a%lkV~l@Z{fy*-85VN+`&W$=AFBYhX|L2b9W>4wcG}F7=R~`&6oH?o+A!+^16c zxlbcY`c$_Y(z;=Hpw}5(FNW{dMtTa~bJIGov@7UaX;;v@9$n$?m3D=@SK1ZsUTIgj zd!=3B?lo}t^c+$faeJfpkpVgvV_?%~tUu~DqSL#1z24h?xjoS^9SpiH*fDp1*#$e; zC}Fcp8j}_KOm7A9RaWfad;`XNw}YJ9G{)l@ z&dy7qQ+i#=a4X%n3SWE?AHy;&&Fe{C#d*u0czbQ#(p0Q{NuuE{1Pw>VBxJyAv&NnW zamec5b1%V-b{B(JMkPBI>>NtE-;ehaWmt7~zsP`2ElHOf!4Sjr7NcAQD`UY1h+sUp zAQ)aAIQBat*npmb^<1Dqic-NKMu}kkS%Q>P^#wP06-HLXD=lk<$eLnV*C2A4OE|$a zUP3tb29b4OPgz;A?n;DUrLsb@5?KeZtd;J1&sdl~vr zafunWF2OtUiZ+0qKHr!<2MAvUh=*4qRD@P~n;F-Q9I?Q^v9LaTu7!!CY9YQcsZ{ef zCY&1nhSK`-Hx$*6zoDG|{0)T+!1u7zKeIaPN1wmOLJ;eDvkAw-zIdNSc6qVTE<6m; z-go5*nU(V1W!xLFkHKkfa>~`N?B%@f$BUVF#oW6e?z+>R*Ye2TY}$~a;I+X+P1=Zu zQ9b0gfpvI@LbGxBycQdYU7^EqCGv0>A%yPpC<&qaP&u~qXg2O{KfR5h|2ZOD=pfxc z8pr{!OPnb}k(V z!MY(>mU|AvO3z_f?s+;0y`+NdJ*hzZ67S1VF_LeT4zxDPx9mZ2O_VSXbN|05vg!MzSc^D1RA;XT8Ap_0r~V`@x-GFm zo&4))Do(k+Bn7+Y{Xz0fXoVaSS;KJ2D4p>~y&$<^}Ds}f;!w4rhR`Wk-I=dZ02==Cj$+aGR zmhF74+bdBhYGwHgZ(T3Eg`#p4vjeWS?rpAkg|M;Lz2hNr|FIwX@O91OJDLZ7F^~Us zd3>LF{K=~ZnXexoN(E6c3oPAFV>4|OE!{*HOS?{NTvYs^Jq|Kdmf z>LJqq0O244zps^j%P+fWM}H;IT!fG2xXvIg{@r7R7XRT#KJ+91^bonm&+T3Kh1$bH z*liDW_&zVruIN8B_>spJ$iMx_$9@F6%c3U!<43TREarUbM{q{3n4|oNg!wKr-{oxUR3ODK!49Ruc&BcZ->RERq{>p|g$P7WCvjjY>H29MWHzx`#;+Ta zN`|J`{$P~V@gt9yUVG;~>Nsdf^u(KTcrLf|61Mc23LFLF0~s4Z$L)TJhx_!-Cxda& zOMR{rly@TSFS@PDu9wE^>u_4ww=B~44<-DCw$8;_?lA6q&()`~ar6mm%RggXkJ|w} zR#-rs97C$OuG*T2)NO=l`UR7S#JX78!3)oEXHqyv;?#iW+$d7FLzm>|1TiU9i%|Uh z3g2Rg;KksP-=E3ldcAGz?%>?J#`?ZTq;8ky$$Q6Rcni!OWuE*xdCfB?Jip*wEVmi= zGCk!sMD+cu0N%D7uW#i=nA--wPF}b17^H}Nh262+th+v3T=v-bUABJV-C0zgvoa zZ!bhJ;c4AjRJAA;GCt2o=gn|%LVRQIdejQl(F7h4SeVS~^@gAxKYSL#XaGsnHsnx` z6Ckc=)G$r6r#knn#kyWKi`UGH8gRnGYofZ?gziYMQph#Q8%Z|MY={;PPHw|GQ=XSBCRF*vmT$JWBM246}-QoU^1cai@uH|{F(D54_DJ?97 z6;Fq61*riJzSYFXbv!n-sCu+?3yo2D4G*FD?s*tkzAv7znr}v2;0QD1sNqrA$UP4O z7g*>WtO@iy4zqR1e9ag2d3GztRh>=+pfk5b)k3e0rP9VOsNAR@I~%CqTt-AgJ%U~7 z_L#3d`P#-z+M{j9wU-vawGqd4pH$UFsh)%k=E5OfVvh^&KN6|TK^{oedYOMbO6Vz;7yXMF(+z+($LJ;a{+5nm9J+LW7F~!fjY2fzree9F(Tcj49}pF)g4ZVU$g zct|8cV~#Fl1KiOnU?8TI-p-yH5&b z^jv81d(#NlPcYR9U!0wQd8=iotc%MVF$(1nDVEz;7pj)4P-VJFc@{dBE0Zdfrl4yJ ziw*(*L@9q%Wl7`(8nIk$Z(M(du6xg_9g1gHo`Dgw{Of{PH8cLK4< zsgmDpgBihNJyShdZkPVKdeS~?WRY^c$r91BpnL9b_UY&UxL)zN{sx4ffVGaHerOX0 zO<9_dAA~Tz;UF!Z$Om8GcUZD~OxE)GbdW*59!tgi3t$8D=$^;J$SyoQ+2PogS{$jY zAGGHEi|+4sX;&mI{^%syX*2^5X#h(rn}jQG7{@B$ALHY; z`l2mf?^^4)1k`2a@GmpW>LXPs!_R1pJRV1lXBKR6oS}DS5d#wI?Zk1 zDgb>?`oeACRwp=yszwBIpJ1ZsTDAX? z{03a};UY}qA3TU|n1~cp_&eXvt29X}eIk`|2O*ycy2fPAvexm}285FUA|A_D6@B%1 zt5(;5n@K5M3-Km8{65`%_CVoXDJ>gGxWu>?ydc5KvSPRpOPGniibco=OxX$N;CEBN z2kE1a^iK$Pm`-aZ_+>iXErba~=~LV;YtcDZx}bC6F)X^zfdtk5$NqDbr*rK;Z1$r6 zaDOr8;Xm&~IDSzM>wE(PhyCZDp!)r13YXWOJ`G9ZKZDSY_8-oN|NN)KUp@gF_zQ}g z=bQRqdMWzG4?+K)$jSA6z7fbpatq-Y7oY%i#JOVi!;#Rh^g)P;ZouM19E0=O#_O3N z^UH=AoMo-!uMJZ2%{!>g~>He6}s zGgW-=ZQ?=BP5W#lXwgPjdwth7V$~LHBr=MP%!{4YargDxo!CYgYEJQ8XtS}Zt3@9y zc`=K;63B1BBT>~Da2CrX&hEv2AvEzB_Pf)wAJ;Fj-wCiE7Da47&K3L3Mxyx6 zmkmb&WovMLZX)c*1eyOg%;79+J%35JHq2x~l@x^$C%Dygk==cG1~K)2#+Lkvm1W^! zN#?1SG1`(rCbK2APeL&I;SY-d5zeTYinDwmW#F&u3}5` z(wKFu3jO97wq=ZMNt5OsF-hU-D*wgtIc3an@v=ND*j>zrSQ&wPC1DAWmJf21*2$?xM}*hsl+@C}wC7sfIF?wLGm#5^Dd zuXXr0tmT_&IQYXyYVqe#Jo4L=LlXpchVR7>Py7>02ZxrH-CW_&%VCDcg}2l=bXb^6 z&X255ICOo2;XlG_${czi&FQKz!#>H0RSvBTar#;*KaZB%4t*%FUEsRpA1sGXNH82C z@K}M*lr!c0IM=<*VfaUBW#0g&FO<5|X?-F}`>30pD6JQ`pT+6#B^f?M42PF7{8pM_ zpGt;Dpo~NR7M_k;Zr?y>qmQQwbm+0<^I6b_K;Soq< zkd!xo^E1L>a0RD#mUG?vL=T%|oQ?>$u)q$1FG?#Pm9h4+qQf$QGirq5FkGDBx|a*L zO5ywiv15DigmQ=87Y@G^_#0`xAe>K?G6ST)Kd)vEMfc(`Sk3%OuuId7)zGVg)x;RWJrrkb096WhlVAgBFxpPiPm`Qi zN2Apy$oYGV+uMtdRxDW{#Io!~b0u$U{C8!eu&$abdDkarmF)}cSmAj`*{rgc@#`4J zstCBe5}H+ZHL&AQGD&wtXQ5t>PEc1vBM;iM;76nASBm@h&Cm%zQ#R_&f~=$P^O$c5hW9)J8&B^Gc7fzg zp^pRug1jTJI^%k4rR0$aue>H)iPhr1*exb3#|hXkM~~U~^Xi>|52P7xjxpR(&hVEJ zhW8~HzUVMK3u(93Dd}CH+)=qJnxP%m8-UAW3=`=$qA7Z}{4J#8c2gijb#@SNV(3qx zWCSh{I08`7i<$QUpLX5={6+eoUV5~BEAB&$wiT{mjJBEQ{eeI%Lr({|WH=ZG{l)5A z!>&9(ul^I{c_95KPr_eW@z^mN?-Y0w;2>HNcsV+V&IVMHR+1h>t;r;~9UZ8N9lh}% z*2`#XL|_0Y`Ov z;xbK&)A+T~J(Qmf`b6T^-$HqZ%BAnUah@wBS=zVgn3$`X7oB~fho4t7d?3AVY)&2A zgU+emf(WE&Q8$cph#pPsh&F;tbDdz3=0r2FQw_E%u@ckfdM|HHEI{A%@=lH6eFg^m zQ3MyJ=!XWoCz1j7V}nh|Oi^Ka#9;T9Pr*{)C4+Uw7<<=XcO@93L4?0YBR`2VR%x(% zsu{}~?CvyU<6X>Q>?ngh>|E)DX|Bf9`}V1^2rcliGh#7XVX*&1*2Lnp-ou(>3EJXe zn`32kt-(4FOUvm-gZ<9=My#Cf(^%xg#1>#X1v@8fmofH<)vit#}I93z}!-zTjTi3{($hMvq3G2wvt?(MW@RuX2j2rWppisgi$}Z=u0XOrI5~ zp*03unSMT2LmLhDDy-6%erm9H;#WF-=~;vAi2XL!k3KQjuVNpnev}-dTmN?Kl~{io zZ?LOluK}B5uv@C%hz+0>2K!<99bg*;+ZLW$`5v(AJnZkWf%LeC{X14myF85Ibrj#5 z+v9ppd=OcRg%ad>^VC>b5X4o~7v? zc3^y8TH;~jN%?~KDB7$s+T|PvEW9ss*-AgFY>bbl9fED62SV?~a2ZYh9t{R-PKqBu7mQ%^ z9Ga4NUL8m`87u+pAiB$7e-CCb>pX0*C)71GmYy|OevTz2`t0~5dc?ynh)<@SrsR3$7sFpi;!-M)fQ!p7 z1=c1Qd&u_qRJy>!u8B{h>rBbhDsPM*PWKz^tje2#J?WLaEk2#z_OPGEv0BH)QEuV# z$Uy4|sxjDgk^0~fG(<3N@Ba9aG{M6jj?bipresUxiTEs9W3V-mr-1PVSMABq$7j=J z9`;iFDEhG}c}?ck_#Aq|V7F%e0PF>?re@b9^p^#VsCtq4E8N20qkb4WIAyyJ?mk86AS5WQ}XG=pu{2? zfa|2JrQaup0vjV3w^yGyjuv{@{)yvhwJDhlj7u!0tp@8CI1Jd0UdgG66X;0~o0&L~ z-Y_NSSAVP;Y5IY>z2@o}RwG>^7`Hbsv4rmMu;UU<^rR{IW~M2zl*aJo9mx5QOe?VS z1mk)giDh)7hpkUE(+*Q|Q}sEC78-(!hT><{-vG8+Fs`>XaT0Cuu*(w5=|)pBS@pfd z3QEfE^U=tlsvCec3&!<+oM@%Z9(HeHC2jYxM-nH~3m*1#qKztX0aN?SONmu9)5HFd zXr~K2?A=739`Udb6RRnJ3!Azgm93!$4~v#{&}kl4SyrGQd)UCTPWr&ZvSnSA9q)1( zU3Lns5Ns*;@LShs`ZJo$7FnP0Mmz**co;VN1)_(`pY} zS+;>L^RSMxGiZm0onCe(z3pLNE89qfeZ1y*e%U6f_OPvGU!##8c6r%ZG~L6lF565? zJnW{jv*|PsyRGaTxkjLQ-cxoi-6(nIP)0pib{b&y;7W>N#_l;BITFT zdV>wK%7Hac)_Gf!Rppn_$SE#XSAIFoG1wK!p}-oZ>b%=%MEMnjP>8>C=r%g2{5v$# zVE5A@z^V_|c{OEI%eT`G51U=efQ`phA zId(Jk$JI2*N&ks#j@?4z4aV!wTWO}jc>Q@Ry`ix%uRm|4z#Ojku*ECKTWN=2j}p)Q zKcT9lIZy8cZl^JVX-(WtGY!U?xSbXnj5TowwYep++P;G}YD_e72VH0KxVLxEPJ?l8 z@1**<+}@*M*3wU@(_pNnyXhr^u_o@Ne`!oKaW8ewlX~d;n%I4Gw}&;y?x)K6Zr%ph#Y=d#%pQeiq#!^2`H)~Afe1>)yjQ3p6&Cbe_R@t^Yh- zZ7^QzKTo#^#(lrc`87S@VHtXXp4BCZHSr?-Sum}M7fD`ejuq|+_V)6ZY4veh6Relt z(Jq6rUS6U97>xDu3Y8zPOR`>Gk)Qfyk7WDpr13g0%=^uqG{=-=z3ikmlgE15Nf#K5 z^|F(GY%tyf{hl5-81I38PtOa+{kzh6mHy~q8SMT4rAtcxc2S?jESc`#E*c}4UirU4 zod)9`{SR$5829LZ=sO1E9{ms9A=oy0GJSRVo3vA~O%nOuq_=fR>Ft~JiNSb3{U#+( z(0bwCzDe~O3v+MZq{#;3-o8oG4aU8Fi;g!K_x3GXqA}^w+jN@2*eY++RR-feyhFDO zrhEGiJ!JB@4}Yeo1k(}vJ=&%7MC$kG@1`Wn`5u*@$WpU*&j5CShkd{NeOfHoCVDA- zOZi{u$AanD^H+M@U>tk?M!UScHL-utM_%5ku@9-dQS0S>`;6GXXo!cM8vBUG3$`tM zO3j_+AJYhA{Q@fT3zn+Si8hI#x2)M*A|YX;S224iam z)r|(@eYm3@HyH239rZtgY5O_q?>bNBm8klcV0yn9Q^}>=-Zr{Abzga0jr6bw%M0QZ-YG~SfH6(&^)WuK^~^4O0{~}469mg@v!&HYt&CX?4RZR)gyv!qnYJ) za-iC!^XSgN469c0k1n7EVDFdLseT$0Sq7`Y2K#=MqQR=(U@X}XHO64iBX5X0#9;Gk zrl`Hubb|$=j4e0VEj3eUZ*{uCej(V`HAWl2WpB0JU?%|^s%|wUM^=2S_EC2UwkbTW zVurPk+F?o_W`C@*DtwakA^az_msR^{jHck;Nmi{ed1nVX?_86&K03q7s%;+je)+!Y zaf5Nps#k9dww0zuzZ0rg{g-nKn{ZlL(FnDZF@;qguKw<)!YdftM8C$R>yc`V!Ctka z$x&)CW6Rj;MZf+CkFc_cHUzYj)zOVbFeEvKrJ!YrPw7O zpysU9c^6^_eV}SMS!4GKc9y|@fszNRpECwIw_)5Kq@Fa`MHtf!>J3x!z|76@2KDSJ z&1HDz#`suuUS4C9f;R)>*S>NeMh9<=wj=L)3VK{U&yqbBLO5u$#*FvJO?vf^DMy@z-L9s*P(k zmx}l+vBOm585;X5cpj!+FxcDRIYE8n!4mMg!xcYx%32x>O&qQ&4b~T0 znywBqSSbD>u$cz?59FMoRvT4#CyeBh~7& zbbAXh9*$Ix80<)lm6>YrW}O$T9-W-2rWov_sSTlMr49pjp20F|T5`7fk-<(? zGlA_i*vV>M@+cKMTk{-dEdn;hU<0is$vJ9+!Lns10lULsHD#-kN2?DEHq|Nsd-fd7 zA0}s0*d7PU34PEk$%Bzzns1*i#0i)wYHSwV*L z)nBl4!n^G$sCSUYFdsdhT(0JO*sqf-RHrHVUZ2;Jt?C7hQA5=fypL?a#mtlEoX3$j z+{1pIT&WK6uy>LttLYjGzt`s*u{O0@W5T6PZ82D9>M7*i=+%2X*{1IHuwN%vsmDF+ zon*UuL1W-~4dvA*8WWy*)&CNa4EvSGV|g`3u(M=kl~rk5w#_e^e>n`Pzn{XzW^By$Veu}Zz1bba%=}>QJOtCB->OGUkvUI3_ znLL)ILmhk>^VEIsP?H7IeeY09OdiWpP*)j@Whtl?mltIzsIvsqtryfcG$ySV)VE9? zw_Z@&O&+&iP_G$`HBnG+38q&;1@(boXW{O9I8{)AE4V!^S*NNKOlzr2Eio8N)}_XL zrzlyMI!Z7tS(iFiV5&QZn zQPG&6GDG~tPubanb7zk-0nw+f^{`LcuabUCs~R3FvYjDbq@kAKi$m?n zQ_vQEztOaqOjNhWPWDJ^5u++Ip1lL155<+aQ@ZKM@j`_o!}T}I3APgjVZwdZ`1 z5zS-P9mW2UyQdMVyndSC5@NmDHovFQ=B)4>gC+=A+B+iQ5<9 zu&273z9;#$pG4OZ1~`9g&YEh>O+(>J_ai&jd!Etb*c z!2z{wdPVB`d+|4ES3^y|L8M}6QJu^|f0ZbQmz#i+0aSFw9^ig5zVsZS(_bAvhlpg+ zg(9av?dPm#IzL6Hb&q<|_e61Rgp-1#%X~|E{R`>WC0JT0`Hd9(;(^RlOwnnZR^X(Z zqFT{RZIsjRRawZzQ(8#hCzN+XoYqi#*D+!*E$8<{&)*j4Pw$d4Jt=w=d?-BqaItvN zhoMSbm94~)-VDz1_Qk5PFYcH1rTg)T;&UfXFIM2g-(~pRhR^*t!&rgOo%odDa~nSQ z<0NARK6m0%hR<#I+>c+;tH9?@e9G{-4WIidLcD5D0XjG*xg{0F*}pBRB+g|pWum}E zfEj9)^d`W5ICb_OR$#5F6Kk!tir4E+vWD+Z@Aa93G_TT!U^lRsHYw)wAmB+fLpZDv z*d+V18te4XBQ(hRS?HI5C&qqDW08KFCR#tOd7ow={ck`%)pRt{A$7E*$Iy==qg9if zY-y66*%~?mXO!0vU*(!;9TuOW*3gm~oP4wXRB-~**94ZTMX0+%(yLJByyP{=J*DPM zHD2TykH?4aL3$BRJB%m3lXM$o&LDks`5bU&o)azH3sOzi1EF82t5NHD)oO`mtOII( zuhv>^&NZ~jnq2cob-tAd|F617INwBD%RWTL{@l}Hd ziLYZkNI$^cgNfF`>7ht7|MRUk?f*rskD`+;<~GB6f_@e{7LavvxoG1#P`+tBhg`m2 z!a95zlpk0x3*~jBAGD?*t!N7FiQS{7P;=sAP`HmXg+5d0Glf1===14?$P{?sk0Nsb zx1{b-i-odSD2s*CER<%UGz+CoC~ZP%6H2F0I)&0Hl=VVcFO>B{`3UgO_D3|i{3F2q zs)K=#=-HYeu3*Ct0VkIa1Z28Wn*Ka;Bgm}>oLoKzkaHuF8&NuUUR5xVk}@fETKOcT zuTL>$-#Ej$I8~Zb(*SEwW)9%>sV2aE;|%BGZX9Y$f_nQJ88m0EZ6~0mGV1WzDIsNs-6g3w7uMLb< zs}eT>HYa`>Xo5~~3KS#gslaBj$Y!z5X0g;}T9x=M=vf4`&A7AqCenOubhG$BP8q=S zFOZRVf$Y!M(A7@AAdiB&;MIgTaR}tP+{z_rWnAzQdcXS3z$Iv98q%v0vzTHtl(Arq zN-qtLp;xNs(Caiba1rR-?sjmvFL;~P8F~nCbk*-bXGyL@>p|x_Y5fvXHmhc;N zeDK=vMAW)9{Eqc@*=^x>)UxROf59PkhT`)=!E-{Oe55Ra z;`0`l#MA_e!ZB=ye-VoKyyQkC7ca?2ZbWh;h(+~*6wao@x2@|19-=tCS>ORexk=ze zp`0ghtWa(dI8`WD2|Pq7uLztWlCR#^V=0SNNbV}r1=;0nU z2HKt#jM!W4CnG7FwHn61k0W7zJ|-H*+4LY_B_6a6B}U&UD8(xxBKwBNnx6q;L0&D;1 zJ~(UtabyI3wCgvi5%?vf*8uy`?$l%)y8AdX8FTH&k!6xzCh3RiVER?X9|hWq)7J`A z)?_YeRRB(~kEBq=62LJP%WURzmcVNTJ}mH$0tW>-cTn(RdZ=Qeq$f(cNzzS{-X!Tw zl73Lq4@z1&Tvs_1> zHU1l*&>;*b2wWm?qrj^K?hv?3ARWpjHwwH;;0}Si1kz!gTPJXWz^erA5V%VqO^`AI zHwwH;AWamyzzG7E2;3+zjP=lg(Jnfj&cH?eb8rt~JAEG!eyx_yy-js0W$r}lmJL-ynL)AkGY@9bUn zoA%%A-F7%o6&Mm27nmMc7-$Z31Wpf}8@M#^qriQE2LrDL-VFqU$>2W01;Mq!bAlHK zuL`~ytZ{}ohd2f2bZ4`3zH^OpqqD>LrSpPQ8#+C7X6W0Yt3x-1ZVlZT+7bFi=&8^v zp?`+@g!_hvh9`!nhmQ^~4!4He!{>$X2|pHoCj3(P58-#inMf`&CNeQHCvr?=Nu)Wl zF7oxrw#YS+TOvP=JQ{g6@?zw7k=G(`MELA}2v2hG2#e4`@bPgN3llItr{GDN=@=37 zFg_RHN?s#IXcJb3OR@S~hB4BDvAP_q$yTf$`9{^V(KL1)rzWZe4g~y5WC-BVnJnM~ z<#>G#ofczwZ-U`nafbI-GrTX&@G(4?P82H}2^bQ%s(dWcgVTotZm5_E_*C#{z*{Pr zXM1`9;Gc!h>#;>hUmrUG@V4qEz#pYg0;J^0fak_n172F*#p%kmfHy`q0Cq(-0sbU& zHsFTL`GDJ;3jtqGd<(EPa4F!5>g|9ZWv&LiwE8B%y{m2o)Y9r+>t6W#u6wQf;xDOt zdTN68qs#kCYHnIfT6>zJwWlds1OEQ%GFq#;jMj;!Yd!a*`=#~kvnPMe&9BuTRI&bl zBha62u3`GOqYR&{VQW4ia8(8C@O`15ALQIal6L`G`1NR_zxH`p;8OzGXEbF=pXZV8 z--qd6G>yp+|11jN$wh?^e$xZ7A|zfOLOKjDSNKGbj>6L|eDH%A@b_}S1i$zId!jU8 zIezn*pPs4$#Lvg0Rs|rx9RR;Kg3kcJz2N)&Zh}F8L-5T{((|)wLjf)PcH=%sX8|pY zFn(%n7@&n2Cx>)BpoRAn4o7+fphf%PAMQ^B@_QUc0gk5q0jJRcfD17?@th5yg*SDM zMfwClih2OlHf%HZ?66sBV7S@TgkUksG!W%n}Li&6_3v0}yk-iWRS3VFi z6g>%O(Nl;V7S53!3-~N#SJ>$+Li%|+9_e2LS~#I~0^siuUo6D#CeU94v}hNijDyC0<2PJgI*1YWuQ72>Arxl zxH=zjsQLzAR$U1CzJL}DQ{O~72M9Z=t$+uqi$Q4s#P8gyZzDYp(4vXzQluvVS~OW* zj`S2ji>9jYAUzGx!u{$ik)94{;U4t&kUjzs*J!amR#@#^jr1&aE#Pc*J>c=`2EfJY zCcqZ;LzFoQ(84{(TaaD>Xkpj>BfypFHo%kB?SO6SPQbkSDaxz{v~bVq9>7lZGr;TB z{h)sz5H?jm2Ye2@R*Qb49tPa0egU{kJqGx?dIIo&)vo~G#Ti3bM?C|``%;Vkqkawe zsd^DGZ2cB6ialyyddThr_@s?DP|&k>4dC;3Kfo940f4`;YXM(EnSS&;dl2AGl+bG$e{ud?t)4M2%s}LyJpFTjz0rYp296%qUia;%3WuOmW1|@5$8YOdhqGdXKd=;$y6ZH>knB8E{ zw3pbO_IdVp`_aIE0;7Vr20sZda8^3EI^*ze;RT`Q&}HGTMFJZ!H+B1)j%#G_R`2hf z$W6E#QTjI=SK9fW61EB^>#vc2;JP5cu@A2e#HR)yzFyQ1pZ@p^K=d1kxL1o$9ZK=v zD(hWo>L&C3L-TzLRy?>gMz>h+SuH9b%;U2LpEm0@r_H(xpP%9L3w)k&u2$*Lo$8bj zKih@B@rN#JY@E_sSl!mNc5+)&p)h(>BOW%I+p;QuO3R^38-Yx1FLZUZ9NW>_*)o!5 zjT%L>M&q+TK6ox?{Go-$#!)o8tF5hRX0?Y^>|`3_(+TMM1|TFP8kH8xIbZEtF8TZ?u^jYgaJ>_3|3wlpuQ^G(guI`XR~=U1)nXekt0noY*M zrc+wx=X;Rd@{^#;j#{6SiQ)eHw;PB~mQodtZ%fxw;XUw3Zj^w8TnvR%v)NGp9x@vV>i%zaBbhfM- zG2mnTNM@nv@={JWgnGQ@ea0wYo(oCN?)y6FzIY@|`Ws(%6gwh5`;eHXYst$R?Or zkYu5loZWJ&kjCq`UQBLUwxR{2v$>_?(32Y*Ct*EmeV>tWHwV*HOg0$K$aEV>uj9YbW)3U{36Pk3pjH@ zd%?^06INkZ!frI9{gnL4_?q07Z*SoM=#PvXa|)~T1);OjXXiV4@HQ>$WMv4MTbh#Z z;+mo$lb)Y932iHbXlof{9?XGS?%*#*g=wuImxc-Z0hQdkIPE!lZnpQ(L9vfnMHn1Qv0eIxe`S#8xaO)7t(U`JYI@&Q# zyVE5?bSLQ`-kmlVW4t@%a6LMylf^i8MN5b7He95sqqV8Mb20)B=2)84($vmD8ZO?} z!rvxv_`GF=cAOTP-?4U1QwPdSX<6E}e0fX9q>lWl;!r#)P_swk8z3)c8Y3 zH8x_*pp3})(S)g3Ix!2O2WBefx}Bfi3d!1w^m#4Ix-gK|&S~jb z)mkXPl*K#~&u6uuKOIG~?hLw|N3d*bI!#iAV*ZQ*kI19i+twCobGzC*;lwg@J6o5w zwxP*lE+#HSL*wB(t=;?owRb)-ZXeejAO85~_ak@t^OCaaZMv%vfs3e!vXNaofm|zr z{w8uIYpq?mF}jA#-Q}(rFPAHlYyEN5at}hPgMjLwLk>Q)Km!d9K~bQG8byEx zg%2(o1Ua@q4o1;K3b?52e!g$!M^b;B^b(+lP@0+d-n@A;^JeDF`^|5b^l;O18Ar)A z*t9=U#z0?WM74=)v))5ZpU4CAkQNk1&m%}@@&(S!@9|q6lT1#YHE*fS?Qu23fbCYx z1Klm3TDvT3)WYMt8^6;YTsGojue)P_b|(Y+Ve(1rgGIW#o@YewOHfAbG_QFHDoX25 zw))H?wx}Ceb+h}@1hum!UUVDnf%WU0+(GK9ei zLt~JArtSrXeoRM;-9Aok zciZ6?EFc8q$T{4u$`&GtP;M^>QIL6RKx<*qXy_00B$pe^hPK-hXm zMBg(*{RUy+$#&142d^6@d)Mj>JR)V@X!W}2sJY`7yE~@Q0clVY&dU{}8E}Fz>lwOc zQ1is)fFJ7{=ts>!86m%nZ9LAJ6$u2JReHc+k-Mg52dSTg0XcKJ+v_w3H1>_QGCP;N zH*|cLCsc4rxSwJxCo@`;Y|Lbg=7isGOw zvfMq}y-FE1-MlP6<2-n3Vh=dg>vem!=+8E9TtCrk$u$^x)`ICKOUL^Rt~mkQCOCm> zI400ATI0DmdPZBAIMR52{Ajsg!-H${MIPpCy@pC3A!$Ow1I$eSiAF5w(7`RNS<>wF z*p|?;TkU6)i2>JR;|M?5ZfnDcmObC^L8`Y=z!UW97WjUTgJ(%gB)GDaZsJeFzbJi!}a<63&Xz2k{A&I7BKAwf1E zeV%KdxpZl8x!rf?+H1XTzq_H$8;_CWpX+_dr#M2|8g(i&C<|lPZj?7Mc#fw=42fH9 z@w_5HHELCjm@`!_cptv+IBn`)Wmd?Ylk4ouFhG6grCg(q0kM%w5m$iq@U0fSz*%C`}23SdhG_%gHeoeWZO9Al0CXh4z5sNkqXN#eA z9%p=j^G|sA&>@?KOtOUwI9B7z&u?r99W^1~T~AisTdj?ODe-bk{*{5|X}Rvsr8Atj zwAb2HN=nCqi>)bXqkO)XQJOjcvckAE0=;4klqN*7R*c!kT!O-ZiL-~FFdU}C@W6w| zw{8M5{J3VoeU!5;Jqmdj6?Psl#>gA(UUyqV{3!i}Lz|I7K#z|$2;m6lQ8FgS;AgP? zpR3Z?{0uph)lITK|HY>-UE&!@Cry6#wlmG^u)}L~MB+rjlXTMI$HyR(*ySNeBdzs) z!jR^Lt}PHA0U5B1OPATgvoZHb7{eWKy_kRPpyQj>+o%%}UtV%z~G!b-&Iy9&ogkcU_mF)KYw#kcNZA1EL3g{Cp9_~;ot@*|_3N|=n{A_@w5f>aVI{#IF_>@UU3*=AA;vO1V0!n7-Ld}w zMO`}6X<|n>MK{SKhcKAkF)rQ{O-}MS3b4@_Asj_{DhAW`G;zpyZnw0<2@5tm+vBV% zoHq^`$du$$ogEvj7kMAW9bu$O{&QflT=PMtEt=8qO7bWZJ1<9QrE|F)yW<3E*z?* zZEfG8M5e;r`BT)3+f8U#tJKdPoSFn}u3Kfpkd;u+F4BhA30*9flq{8R+Hku3HU4hl zI)TZQze-?|rZasH=Iav#Alio9l%4*k!pefZKsIl*ZtFBVpfPd10 ziyNV~!_Mu0lM56#X~j{(o9-##L)7)V1f_iM$LCsHby!2X9|cXdYw)V4n-dzo=39c(+TQ;9-mlJ7sW1gV_B1?E#P>=^e3MkfOYA6xQsEbb zj8Xxail#g=rH0KZYEZID{gJh^0yY(go~wtsI4&YIicnNEM++0*vr(eKt{f?$xTz6CdP>toEQ>v1)Yo zxnhILlGsIwx~`VLq>TDSfv;%X_KtAfjyNrnyh7ij`m1V9u0luVi%`?~;uCRN;|Jht zGf90ep^l{9NEqaZo)rmbm{z9zl2g4&14v$hC(h3o>#x!hmzyuzY?&{{alY1yYAsrX zx@#?(QEO=g@=*b8Mkq2*C=-f=0-;2RRjwV?+EooA16SL7X{Odz>9(>uQLV!_Zd=w& zts{DeX4J0Ku7sMdh<2qCmy-EnG+#_2Rhm#KZJU9*zrLF*Mi!H2DT>-?8|v#rKHo!*7;oXYFRhY{^ZtAR-X%dDL!- zuBlj>M#~YxqEaId3qOVn53*qz?)ki1QQRmfZ`!E0JoPqH7@pf6yJI{>J_(~Uyu<&f zq)7pC*K^+W*uBU&?$w6(m|#{t?X=hom{GLC zn%HGc$l%n5-)2}#;@;<|i{9B{iT1gfxLBVv2B{D-OB(L_tZdF8Ge1c}4f+&VJx374 zlBFt5CRR<6nKb+pvw&9F+sNIQ!`$qn)|gs_PSfG~Y_J#8Gr8yhhVWF58!_cdW;Cbc z0xLT3s9PxfiU#Ehr2`oujDG!EK*6wXuV#g8IOk@cK)#or#jqT3(bP)opBxyv_)V`c_@^zK2&(6l&^v`&+rb$EmkQn6eOK3V}#{L~I1RcFI z*3tI^F|cakuGCh_aVf1oDKRLw8iCdi3X_el&Pmr*MJ!~d=wZcl>HxnvA`?y2P;^jM zr6TA_K~sVb?Th32`tSz{f%IL{cd>Y`ezb(egNWFXL&%+L-q;_&|B`!{TXqwep^ zQRsgZ1f`WmeqUb8Y9HG;43Q~{rCqJohCh{Ez`n-$>FL_=1N4c3strFZ(+oj-xe-*{ zAJ;^i{M7c!`x-N5)h5Z0^E1s-z7$Y98I+K)jhI5FV|uJ{&_BjUdq#=}k*4#uzb-PF znT!aq4Q~#W%&SvTeGx+em}iO?*-i_pK~B;8Oob_oMz*+YVVR$0#wn1~GMkTgzfx^O zV{go?{CByXhlX?YE!3=;k*n`08YudD@{e!s`{)Os{qal5cfNG#_iOJ}o-5?ILRW|s z>0Vy}9wY8>5e?GAd)twW7Pu939Ycm!V7OQ54`YhPG> z>Nhtw*4Ce1UtfRrsr|X-XhvtXNaCG6=bDJiMWrNPs?87{k4jO#gcUE;-#aL@Vuikkr9{dcp`lzGKFm&S zMpj@pu`S8ABCMqltR^{RF)3_M$3)F0GNUrOtPiaQwgC7*(xlAxTR)N{wZ|oOrRq5+ zDq0u)HF$H=?5P#Pln^3^$s}qN@d0P$394?vcy_sJfZ5k`(*ef#Oew_$BbG!g8Bwu@x#40FV-dZ-mT|>rD5+gxIMsmpA_@NSEDws_>!d~l_*($-0 zfMXtwskD-L1}T(IlTbPxl@_GZFnJo@VIrE+3EFg^F|s4RYM?RlBU%(_jMs=(2{cB3 zL@NavinONIp7+VkSPhrA=+j#vy&cj!A-x;YdzQ*KMQb;|T{ zu*kUr>&w>CVVMioQG8e~otzVv*)wG2Qv8@GovR;-@%B>`l?P-H^WLyMca4L#uw#4bvgPKz24_$;pm0|cjUNlr!T7H zE8^f-VKkM9Q`HQ3n3fSTI!{WI$&KGIA-*|xA zzbkwM`xkI|tON9+%wO5q-4u05pMQJduitmMbBhu1^MnS!1k`w6IsT)9d~FebE9Kk@ zc`Fln;*iTT`MI!ka_PTnfBg5IFMa;pA9kLI{%QDotCI2M=T zWpo8-XMNQzedXBG&wk#8;@{4StBLP@>!08G^Phb3NB?>E(Duq*dVdnBgcC9~h|8{VI-8Rahp!ac*$=LUzL`aEgw>oU1I%I=dtKASfN_npF@QDu%c>0N_A zY<^hM9~jSJ`tAQc!|^ye;GkFE+mi90r1m}sy^^zoJpT?r^)v{FS(Ibmm*Lf0h%wJ$ z4(-Rmalnk_wcZSjm)lab|3zXQ!aEM>cWH(C<&WzZIM%jz9pve!J{bl0Hm%eN^s&R+ zjfsP8YtwP7<9wj2_o^f7kFcL#*E80yMPzho!7lwDFe3N&Zrm^R(eXD-(#0|QucPb^ k{n)a1FF&swMSuDEg=rvXzajcBzx4~N;Fp5`A8X)$0Vza04FCWD diff --git a/UnityProject/Assets/TEngine/Runtime/Libraries/LubanLib.dll.meta b/UnityProject/Assets/TEngine/Runtime/Libraries/LubanLib.dll.meta deleted file mode 100644 index 30684824..00000000 --- a/UnityProject/Assets/TEngine/Runtime/Libraries/LubanLib.dll.meta +++ /dev/null @@ -1,33 +0,0 @@ -fileFormatVersion: 2 -guid: 03804aac55906c846a647bfd1e0b7eca -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 1 - platformData: - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 0 - settings: - DefaultValueInitialized: true - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: