From f371241e0c9250b6f0a47a584002bd45eaf8a45e Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Sat, 8 Sep 2018 16:34:37 +0200 Subject: [PATCH] Version MFF. --- LICENSE.txt | 0 README.txt | 0 depends.txt | 0 init.lua | 125 ++++++++-------------------- models/soccer_ball.x | 0 textures/soccer_ball_black.png | Bin 180 -> 93 bytes textures/soccer_ball_black_inv.png | Bin 193 -> 162 bytes textures/soccer_ball_blue.png | Bin 148 -> 93 bytes textures/soccer_ball_blue_inv.png | Bin 266 -> 162 bytes textures/soccer_ball_green.png | Bin 145 -> 93 bytes textures/soccer_ball_green_inv.png | Bin 278 -> 178 bytes textures/soccer_ball_purple.png | Bin 149 -> 93 bytes textures/soccer_ball_purple_inv.png | Bin 266 -> 162 bytes textures/soccer_ball_red.png | Bin 145 -> 93 bytes textures/soccer_ball_red_inv.png | Bin 262 -> 162 bytes textures/soccer_ball_yellow.png | Bin 149 -> 93 bytes textures/soccer_ball_yellow_inv.png | Bin 264 -> 162 bytes textures/soccer_goal_mark.png | Bin 96 -> 0 bytes textures/soccer_line_corner.png | Bin 130 -> 0 bytes textures/soccer_line_d.png | Bin 118 -> 0 bytes textures/soccer_line_i.png | Bin 86 -> 0 bytes textures/soccer_line_l.png | Bin 101 -> 0 bytes textures/soccer_line_p.png | Bin 97 -> 0 bytes textures/soccer_line_point.png | Bin 105 -> 0 bytes textures/soccer_line_t.png | Bin 94 -> 0 bytes textures/soccer_white.png | Bin 86 -> 0 bytes 26 files changed, 35 insertions(+), 90 deletions(-) mode change 100644 => 100755 LICENSE.txt mode change 100644 => 100755 README.txt mode change 100644 => 100755 depends.txt mode change 100644 => 100755 init.lua mode change 100644 => 100755 models/soccer_ball.x mode change 100644 => 100755 textures/soccer_ball_black.png mode change 100644 => 100755 textures/soccer_ball_blue.png mode change 100644 => 100755 textures/soccer_ball_green.png mode change 100644 => 100755 textures/soccer_ball_purple.png mode change 100644 => 100755 textures/soccer_ball_red.png mode change 100644 => 100755 textures/soccer_ball_yellow.png delete mode 100644 textures/soccer_goal_mark.png delete mode 100644 textures/soccer_line_corner.png delete mode 100644 textures/soccer_line_d.png delete mode 100644 textures/soccer_line_i.png delete mode 100644 textures/soccer_line_l.png delete mode 100644 textures/soccer_line_p.png delete mode 100644 textures/soccer_line_point.png delete mode 100644 textures/soccer_line_t.png delete mode 100644 textures/soccer_white.png diff --git a/LICENSE.txt b/LICENSE.txt old mode 100644 new mode 100755 diff --git a/README.txt b/README.txt old mode 100644 new mode 100755 diff --git a/depends.txt b/depends.txt old mode 100644 new mode 100755 diff --git a/init.lua b/init.lua old mode 100644 new mode 100755 index 183eb73..14fed85 --- a/init.lua +++ b/init.lua @@ -1,37 +1,34 @@ -local BALL_PUSH_CHECK_INTERVAL = 0.1 - local function reg_ball(color) - - local ball_item_name = "soccer:ball_"..color.."_item" - local ball_ent_name = "soccer:ball_"..color.."_entity" + local ball_item_name = "soccer:ball_" .. color .. "_item" + local ball_ent_name = "soccer:ball_" .. color .. "_entity" minetest.register_entity(ball_ent_name, { physical = true, + hp_max = 32767, + collide_with_objects = false, visual = "mesh", + visual_size = {x = 1.125, y = 1.125, z = 1.125}, mesh = "soccer_ball.x", - hp_max = 1000, - groups = { immortal = true }, - textures = { "soccer_ball_"..color..".png" }, - collisionbox = { -0.2, -0.2, -0.2, 0.2, 0.2, 0.2 }, - + groups = {immortal = true}, + textures = {"soccer_ball_" .. color .. ".png"}, + collisionbox = { -0.25, -0.25, -0.25, 0.25, 0.25, 0.25}, timer = 0, on_step = function(self, dtime) self.timer = self.timer + dtime - if self.timer >= BALL_PUSH_CHECK_INTERVAL then - self.object:setacceleration({x=0, y=-10, z=0}) + if self.timer >= 0.2 then + self.object:setacceleration({x = 0, y = -14.5, z = 0}) self.timer = 0 local vel = self.object:getvelocity() local p = self.object:getpos(); p.y = p.y - 0.5 if minetest.registered_nodes[minetest.env:get_node(p).name].walkable then - vel.x = vel.x * 0.85 - if vel.y < 0 then vel.y = vel.y * -0.65 end - vel.z = vel.z * 0.90 + vel.x = vel.x * 0.9 + if vel.y < 0 then vel.y = vel.y * -0.6 end + vel.z = vel.z * 0.9 end - if (math.abs(vel.x) < 0.1) - and (math.abs(vel.z) < 0.1) then + if (math.abs(vel.x) <= 0.1) and (math.abs(vel.z) <= 0.1) then vel.x = 0 vel.z = 0 end @@ -39,14 +36,12 @@ local function reg_ball(color) local pos = self.object:getpos() local objs = minetest.env:get_objects_inside_radius(pos, 1) local player_count = 0 - local final_dir = { x=0, y=0, z=0 } + local final_dir = {x = 0, y = 0, z = 0} for _,obj in ipairs(objs) do if obj:is_player() then local objdir = obj:get_look_dir() local mul = 1 - if (obj:get_player_control().sneak) then - mul = 3 - end + if (obj:get_player_control().sneak) then mul = 2 end final_dir.x = final_dir.x + (objdir.x * mul) final_dir.y = final_dir.y + (objdir.y * mul) final_dir.z = final_dir.z + (objdir.z * mul) @@ -54,10 +49,11 @@ local function reg_ball(color) end end if final_dir.x ~= 0 or final_dir.y ~= 0 or final_dir.z ~= 0 then - final_dir.x = (final_dir.x * 5) / player_count - final_dir.y = (final_dir.y * 5) / player_count - final_dir.z = (final_dir.z * 5) / player_count + final_dir.x = (final_dir.x * 7.2) / player_count + final_dir.y = (final_dir.y * 9.6) / player_count + final_dir.z = (final_dir.z * 7.2) / player_count self.object:setvelocity(final_dir) + minetest.sound_play("default_dig_oddly_breakable_by_hand", {object = self.object, gain = 0.5}) end end end, @@ -72,8 +68,7 @@ local function reg_ball(color) is_moving = function(self) local v = self.object:getvelocity() - if (math.abs(v.x) <= 0.1) - and (math.abs(v.z) <= 0.1) then + if (math.abs(v.x) <= 0.1) and (math.abs(v.z) <= 0.1) then v.x = 0 v.z = 0 self.object:setvelocity(v) @@ -86,22 +81,28 @@ local function reg_ball(color) minetest.register_craftitem(ball_item_name, { description = "Soccer Ball ("..color..")", inventory_image = "soccer_ball_"..color.."_inv.png", - + wield_scale = {x = 0.75, y = 0.75, z = 4.5}, on_place = function(itemstack, placer, pointed_thing) local pos = pointed_thing.above - --pos = { x=pos.x+0.5, y=pos.y, z=pos.z+0.5 } + -- pos = { x =pos.x + 0.5, y = pos.y, z = pos.z + 0.5 } local ent = minetest.env:add_entity(pos, ball_ent_name) - ent:setvelocity({x=0, y=-15, z=0}) - itemstack:take_item() + minetest.log("action", placer:get_player_name() .. " placed a ball at " .. minetest.pos_to_string(pointed_thing.above) .. ".") + ent:setvelocity({x = 0, y = -14.5, z = 0}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end return itemstack end, }) + if color == "purple" then + color = "pink" + end minetest.register_craft({ output = ball_item_name, recipe = { { "", "wool:white", "" }, - { "wool:white", "wool:"..color, "wool:white" }, + { "wool:white", "wool:" .. color, "wool:white" }, { "", "wool:white", "" }, }, }) @@ -116,64 +117,8 @@ for _,color in ipairs(colors) do reg_ball(color) end -minetest.register_node("soccer:goal", { - description = "Soccer Goal", - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - tiles = { "soccer_white.png" }, - sunlight_propagates = true, - groups = { snappy=1, cracky=1, fleshy=1, oddly_breakable_by_hand=1 }, - node_box = { - type = "fixed", - fixed = { - { -2.5, -0.5, -0.1, -2.3, 1.5, 0.1 }, - { 2.3, -0.5, -0.1, 2.5, 1.5, 0.1 }, - { -2.5, 1.5, -0.1, 2.5, 1.7, 0.1 }, - }, - }, -}) +minetest.register_alias("ball", "soccer:ball_black_item") -- For quickly using the /give command. -local nb_decal = { - type = "fixed", - fixed = {{ -0.5, -0.5, -0.5, 0.5, -0.499, 0.5 }}, -}, - -minetest.register_node("soccer:goal_mark", { - description = "Soccer Goal Mark", - drawtype = "nodebox", - paramtype = "light", - node_box = nb_decal, - walkable = false, - inventory_image = "soccer_goal_mark.png", - tiles = { "soccer_goal_mark.png" }, - sunlight_propagates = true, - groups = { snappy=1, cracky=1, fleshy=1, oddly_breakable_by_hand=1 }, -}) - -local function reg_decal(name, desc) - texture = "soccer_"..name..".png" - minetest.register_node("soccer:"..name, { - description = desc, - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - node_box = nb_decal, - walkable = false, - inventory_image = texture, - wield_image = texture, - tiles = { texture }, - sunlight_propagates = true, - groups = { snappy=1, cracky=1, fleshy=1, oddly_breakable_by_hand=1 }, - }) +if minetest.setting_getbool("log_mods") then + minetest.log("action", "Carbone: [soccer] loaded.") end - -reg_decal("line_i", "Straight Line") -reg_decal("line_l", "L line") -reg_decal("line_t", "T Line") -reg_decal("line_p", "+ Line") -reg_decal("line_d", "Diagonal Line") -reg_decal("line_point", "Point") -reg_decal("line_corner", "Corner") - -minetest.register_alias("ball", "soccer:ball_item_black") diff --git a/models/soccer_ball.x b/models/soccer_ball.x old mode 100644 new mode 100755 diff --git a/textures/soccer_ball_black.png b/textures/soccer_ball_black.png old mode 100644 new mode 100755 index ca66fb95770633c32f0aa70dd31c9d261c8bb03d..d9baa4c48c4c72dbf7b1c2cb869d3a04fc10df97 GIT binary patch delta 75 zcmdnO7&}42m64f&fkD+aR|!b51^9%x0_p$%|1Z5c|1OXvjfnmbL3^O3bS>O>_%)r1c48n{Iv*t(u1=&kHeO=k_vPv_UicC#^ zQvwu{%?ybsan8@pP0a&w85o?4QWHy3QxwWGOEMJPJ$(aG^itV@;#!_Ajv*T7lT#d+ z{{R2qzFAUIa$}dV;RKG1^^FrH%9XqMW!>z1jvZd`ftkT1KtkMRof{X(JWp3Ymvv4F FO#n_^E)@U( diff --git a/textures/soccer_ball_black_inv.png b/textures/soccer_ball_black_inv.png index dd7c812e480a05abe386f9eff91e1f2be145afc3..3904937d659093c086a8c2db38abddc03b35c5ba 100644 GIT binary patch delta 145 zcmX@exQKCrWIZzj1A~Sxe=v~Z4DbnY1=2w9|NsByyXP+fS&St?e!&b5&u*jvIqse= zjv*C{splQJ7z}w1A2{{D{)-rE@U$Px7TP|sxbsq>d`U`Lfz%r=&kSQ(2}TwP#~_|7PvscPv`W=)-U-=v_cW|m-*Kb_6_}4oaAKa{Yi78VD(CmSm_&yvhlb=en eOp8&WrTzh;B2XI(Die$O)78&qol`;+07lLiLjV8( delta 130 zcma!@!Z<;qhJ%TLfnmbL3^O3bS>O>_%)r1c48n{Iv*t(u1=&kHeO=k_a)|RQEB%lE zzy}mE_H=O!(Kw$x<=u|M49xzgrasJ>d2V;a(U}q+EL*N0`0@XLebYNPG5MCd1jS=_ e7k_jp=4CjoAuX*C>bMrDox#)9&t;ucLK6U_mMe+? diff --git a/textures/soccer_ball_blue_inv.png b/textures/soccer_ball_blue_inv.png index 89e02131005bb9de868c0ad8229f583a2b3420a5..ade67cf3d9388d16ffb2fa77f1cc1b4d203d4d77 100644 GIT binary patch delta 145 zcmeBTTEsX(vYwfNfk8u;KNv`H2Ka=y0%_@vJOBUxXTNda2av;9666=m;PC858j$1e z>Eakt!I*m9k&D5Q=kS43|Lebqu?A23v23C36N@`970Q>Sq!mcL;quHdmX%;+k#PKR wUi{3r>AP7UhTLjO`|QX0R{fjRf954Uj3!NAd#5una4|4=y85}Sb4q9e06l{?V*mgE delta 249 zcmZ3)*u^wKvYw5BfkFQB|3o0gmgMd30;GZ9r}OT5AjMhW5n0T@z%2~Ij105pNB{-d zOFVsD+3#|Q^UJ6$cq69`6q@eo;uvCadTH=U!6OD7!t+WV{xP#vQ?;$O)78&qol`;+05*CS?f?J) delta 127 zcma!@$T&fwl7oqXfnmbL3^O3bS>O>_%)r1c48n{Iv*t(u1=&kHeO=k_a)|RQvqpuw zrUHcwJY5_^G|neK*?00R19SY9eFtvZY_HhRWo$TsBV&Ez$N&HTv)t{~v6J{~AjRK& ah@XLHqvY4CilzlXy$qhNelF{r5}E*}g(zhJ diff --git a/textures/soccer_ball_green_inv.png b/textures/soccer_ball_green_inv.png index f6068d83a9c0adbf5ce94f38d1eb959700ff12ac..d7486375f2eb1f9afbb8d4a3f25c67059b21aef2 100644 GIT binary patch delta 161 zcmbQnw25(oWIZzj1A~Sxe=v{|3h)VW1=2vkeUtnD|Njv3=94)fA(oOLzhDNYSFb`M z7kvTpy**tVLn;_k`yKfj40sN6S^WQRG@)eHvR`T1wp)0Xi7nvYGAXpPFys2+sf;HI zj=PF4VAr&eNpX}=w^#1)y7}(GHSxb*UQ#vUzbpQ;zP-S_P=4;6Ss;r%UHx3vIVCg! E0CizJ4FCWD delta 261 zcmdnQIE`t7WIY=L1B3kM|A|0~Ey>&61xN$IPv_nBK#H@#BeIx*fm;}a85w5HkpK#^ zmw5WRvft$p=a*MVw9;@uH z)%f;cvybj)e_Ai^7uPXLE%?8(xI)Di=w1d-S3j3^ HP6$O)78&qol`;+058`TuK)l5 delta 131 zcma!@$~ZxymV=3bfnmbL3^O3bS>O>_%)r1c48n{Iv*t(u1=&kHeO=k_a)|RQ$?wzY zjROjqc)B=-Xq->pb82fZBiojJRfld~-?2SeG(AZ{@IoB(Eakt!I*m9k&D5Q=kS43|Lebqu?A23v23C36N@`970Q>Sq!mcL;quHdmX%;+k#PKR wUi{3r>AP7UhTLjO`|QX0R{fjRf954Uj3!NAd#5una4|4=y85}Sb4q9e0322}5C8xG delta 249 zcmZ3)*u^wKvYw5BfkFQB|3o0gmgMd30;GZ9r}OT5AjMhW5n0T@z%2~Ij105pNB{-d zOFVsD+3#|Q^DBzaz7@6}C^X&E#WBR<^wQvyf=3KEgy-#<<7YNih1Gg$h4syvx#Gq% z1kY{!)#w-@!_+j(JNe(!8!XCKVxrD2tz1#$fB$ewTgL>o-|{X?rlo9hnSY;);m5h^ z^y(MZ3`=Ht?-rIg=@;%9zO5y8Z)ay_`Ua!jaxRX_`?p@cy}o=&-MwA>{oftFR_={s vdV6)nqWgZuB|g3YbR&bOtDnm{r-UW|F~eet diff --git a/textures/soccer_ball_red.png b/textures/soccer_ball_red.png old mode 100644 new mode 100755 index 30d4a5fac64d6bfd2f701510ff6623a5d095a022..81bf462ab5328d8cb4342b573eeea441fcf87966 GIT binary patch delta 75 zcmbQp7&}42m64f&fkD+aR|!b51^9%x{#IuD|NnnwTMa)@M99;{F@z&J`AK?0%VK^H cj&=)%SywnXLoUco1IjXZy85}Sb4q9e01M0&>i_@% delta 127 zcma!@$T&fwl7oqXfnmbL3^O3bS>O>_%)r1c48n{Iv*t(u1=&kHeO=k_a)|S*XsVyt z?+6q!@N{tu(Kw&{XYH9|49q&^b%$=&huqlMWo$TsBV&Ez$N&HTv)t{~v6J{~AjRK& ah@WADxK#WR6Qkomy$qhNelF{r5}E+J>L_IZ diff --git a/textures/soccer_ball_red_inv.png b/textures/soccer_ball_red_inv.png index 48aff7ab38983e9a6a8ceabd6390680a702f5347..f0fcdfb0c282316956b6aeb47f19b06bc6b35ddd 100644 GIT binary patch delta 145 zcmZo;TEsX(vYwfNfk8u;KNv`H2Ka=y0_oq%Z2$lNk8jcevKbglg8YIR9G=}s19IFw zT^vIy7*o$Xaxob496oUBfBhFR*5GMBmMye>VsYoCLiv)Ev;wI&T%H-mvJ#9e5{^I4 vi=X*6eK+gFkXub@pZz%Bs(-Wk&%C6E(WL2X?{o$RE(QiqS3j3^P6c@p delta 245 zcmZ3)*v2$LvYw5BfkFQB|3o0gmgMd30;GZ9r}OT5AjMhW5n0T@z%2~Ij105pNB{-d zOFVsD+3#|Q^UIoFcITe~6q@Ym;uvCadTFpH-w_3#Vu4gSr~m&KeN)s`z8Jj3r0B)7 zXtUXdBcMI)$+mGh)2rBA+v+wZG_1xxCd6R+R|IhMGwkCWG zE3aO9uj01pa_GgWx{2ZWO2%(ZE}pRYs^BH{bM4%?`n!{URlc^fxyO9<`PVAWE#ZsB q|CZf4$+_FEonzmS%q*o+6?YlvJ_b)$KbLh*2~7Yu#a{aW diff --git a/textures/soccer_ball_yellow.png b/textures/soccer_ball_yellow.png old mode 100644 new mode 100755 index 8f34080559de055b7cfaa4ec529d2e93f00a09d2..582c18301eec3e7b25d99bf5da109ffd5ad15f92 GIT binary patch delta 75 zcmbQr7&}42m64f&fkD+aR|!b51^9%x{(i*s|Ns9(ez8CS1|d%u#}JO_gTe~DWM4fFP;{c delta 131 zcma!@$~ZxymV=3bfnmbL3^O3bS>O>_%)r1c48n{Iv*t(u1=&kHeO=k_a)|S*2u(X4 zmI@Ry@pN$v(Kw&{=WjMpUXO@geCwxrzxEP diff --git a/textures/soccer_ball_yellow_inv.png b/textures/soccer_ball_yellow_inv.png index 6171164702bc50fd277e95fd35edf1dc5cdcc390..1589af0924e7921e467aaac18ac164762653c1db 100644 GIT binary patch delta 145 zcmeBRTEsX(vYwfNfk8u;KNv`H2Ka=y0_oq6c>e$Y|HO-zAIM=W3GxeOaCmkj4ajl# zba4!+U`##l$i-mDbNIli|Mg$QSc9kiShmpiiN&3l3gt^u(h8*BaCv4J%Ste^NI3pD wFMj6R^xdovLvA&tefHygtNzXEKl73vMw6zmz0(;OxEL5bUHx3vIVCg!0N{`{egFUf delta 247 zcmZ3)*ugYGvYw5BfkFQB|3o0gmgMd30;GZ9r}OT5AjMhW5n0T@z%2~Ij105pNB{-d zOFVsD+3#|Q^UKTlo}Cf}6q@Sk;uvCadTFpH-w_3#Vu8Je{u%%O>-}o^cFg08h-RZR2y{2v!28algpbpPd73i6($8#vFL;XwW0xjFp3 z%nn&wzgTxpd{YuylInfq>g*Ff*1jf2{{{HU{Un}>Hc!5A73e|+Pgg&ebxsLQ0Bpx$VgLXD diff --git a/textures/soccer_goal_mark.png b/textures/soccer_goal_mark.png deleted file mode 100644 index 5d0a19b5d9d24562c22ad261a4cb5c665f8ca6dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`>Ygr+Ar`%F`xJ#37&w}L{9nFt u*78CTDfU$iEB#men^JY5S#C|x3&wkO<(>RWB@=;K7(8A5T-G@yGywpRH61Mg diff --git a/textures/soccer_line_corner.png b/textures/soccer_line_corner.png deleted file mode 100644 index fc8fd655806ba987f7c2a44eb945c52881112954..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`o}Mm_Ar`&K2@bP0l+XkK;w&aX diff --git a/textures/soccer_line_d.png b/textures/soccer_line_d.png deleted file mode 100644 index 67cc7b86359165df3a22e77f504f5d7cc76e6c95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ww^AIAr`%F&shsG2neuTy!Tta z%7uyRx1iC_*HS;KYbT|cODqt1u|q^+!_1{j#(uUD4+|37og0PAnB~|qly)osEx)v5 Q3(z12Pgg&ebxsLQ09#Ha5C8xG diff --git a/textures/soccer_line_i.png b/textures/soccer_line_i.png deleted file mode 100644 index f0ea8655661a1a41bcf1da4127012cc28f86ff72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vYsxEAr`&K2@_^@m^N?$H65vE5n()&a~r6S!PC{xWt~$(69C)%8`l5; diff --git a/textures/soccer_line_p.png b/textures/soccer_line_p.png deleted file mode 100644 index aca65552aa81a0c11665ddfd2776988969ec75ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`8lEnWAr`&K2?v<}IWyXs`utGo uWL(S^aFD^x>7q-q_yg9(oS7>m7#J>9iE#9m+~5c5VeoYIb6Mw<&;$TB4;hyL diff --git a/textures/soccer_line_point.png b/textures/soccer_line_point.png deleted file mode 100644 index cf7d23c449c76ec94af43f7ad63918cdc756d2c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`2A(dCAr`&K2@gTe~DWM4f4;LAt diff --git a/textures/soccer_white.png b/textures/soccer_white.png deleted file mode 100644 index 5a983c96f09f50c5e90712693a5739e801b57cdc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vYsxEAr`&KfBygfU(d$HAgnse jomav%;Y!276b6RuQ!FyeAC?9K6*73b`njxgN@xNAR