From 6c6c5b62d60d568ff7c71c5f3e43f12372b8a4ab Mon Sep 17 00:00:00 2001 From: JailGamer Date: Sun, 15 Mar 2026 18:19:20 +0100 Subject: [PATCH] Primera escena ajustada i Abad en 'HD' --- data/arcade_config.lua | 7 +++ data/intro.lua | 25 ++++++--- data/mapa.lua | 10 +++- data/scenes.lua | 113 +++++++++++++++++++++++------------------ data/tiles.gif | Bin 4874 -> 10709 bytes 5 files changed, 98 insertions(+), 57 deletions(-) diff --git a/data/arcade_config.lua b/data/arcade_config.lua index 52713c6..7802278 100644 --- a/data/arcade_config.lua +++ b/data/arcade_config.lua @@ -5,6 +5,13 @@ local arcade_config = { sprite_size = { w = 32, h = 32 }, escala = 1.0, org2arc_escala = 2.0, + tiles_offset = 128, + tiles_per_row = 16, + tiles_per_row_base2 = 4, + tiles_width = 16, + tiles_height = 16, + character_width = 32, + character_height = 32, fullscreen = false } diff --git a/data/intro.lua b/data/intro.lua index ef704d1..590cf5d 100644 --- a/data/intro.lua +++ b/data/intro.lua @@ -8,10 +8,13 @@ local arcade_config = require("arcade_config") intro_wait=40 intro_step=0 +o2aX = arcade_config.org2arc_escala + function intro_init() game_update = intro_intro intro_wait=400 surf.cls(16) + surf.target(logo) surf.cls(16) draw.text("JAILGAMES",0,0,15) @@ -24,7 +27,7 @@ function intro_init() text("presenta",0,0,14) surf.target(0) surf.source(logo) - draw.surf(0,0,36,5,96,100,36*arcade_config.org2arc_escala, 5*arcade_config.org2arc_escala) + draw.surf(0,0,36,5,96,100,36*o2aX, 5*o2aX) -- draw.surf(0,0,36,5,28,35,72,10) -- draw.surf(0,0,36,5,56,70,arcade_config.logo_sf.width,arcade_config.logo_sf.height) @@ -51,22 +54,32 @@ function intro_update() elseif key.press(key.SPACE) then intro_wait=1 end - + intro_wait=intro_wait-1 if intro_wait==0 then if intro_step==0 then + print("STEP 0") surf.cls(16) - draw.rect(15,3,99,51,2) - view.origin(16,4) + draw.rect(15*o2aX,3*o2aX,99*o2aX,51*o2aX,2) + view.origin(16*o2aX,4*o2aX) mapa_draw(10) - draw.rectf(73,24,7,16,16) - draw.surf(0,0,16,16,44,24,16,16,true) + + -- To do: revisar açò que no se que fa + draw.rectf(73*o2aX,24*o2aX,7*o2aX,16*o2aX,16) + + -- Abad + -- draw.surf(0,0,16,16,44,24,16,16,true) + local cw = arcade_config.character_width + local ch = arcade_config.character_height + draw.surf(0,0,cw,ch,44*o2aX,24*o2aX,cw,ch,true) view.origin(0,0) intro_step=intro_step+1 elseif intro_step==1 then + print("STEP 1") start_scene(scenes.intro_01,58) intro_step=intro_step+1 elseif intro_step==2 then + print("STEP 2") surf.cls(16) draw.rect(15,3,99,51,2) view.origin(16,4) diff --git a/data/mapa.lua b/data/mapa.lua index 26ea24a..110c149 100644 --- a/data/mapa.lua +++ b/data/mapa.lua @@ -1,5 +1,7 @@ require "map" +local arcade_config = require("arcade_config") + tiletype={void=0,nonpc=1,stair=2,switch=3,half=4,block=5} mapa.wait=0 mapa.step=0 @@ -93,7 +95,13 @@ function mapa_draw(hab) for tx=0,11 do local tile=mapa[1+hab][1+tx+ty*12] if tile~=256 and (tile<126 or mapa.step>4) then - draw.surf((tile&15)*8,64+(tile>>4)*8,8,8,tx*8,ty*8) + -- draw.surf((tile&15)*8,64+(tile>>4)*8,8,8,tx*8,ty*8) + local txr = arcade_config.tiles_per_row-1 + local txr2 = arcade_config.tiles_per_row_base2 + local toff= arcade_config.tiles_offset + local tw = arcade_config.tiles_width + local th = arcade_config.tiles_height + draw.surf((tile&txr)*tw,toff+(tile>>txr2)*th,tw,th,tx*tw,ty*th) end end end diff --git a/data/scenes.lua b/data/scenes.lua index 9a5bfdd..ae876c7 100644 --- a/data/scenes.lua +++ b/data/scenes.lua @@ -1,23 +1,35 @@ require "final" require "audio" +local arcade_config = require("arcade_config") + +o2aX = arcade_config.org2arc_escala + +avatar_abad_x = 3*o2aX +avatar_abad_y = 0 +avatar_batman_x = 4*o2aX +avatar_batman_y = 48*o2aX +avatar_w = 10*o2aX +avatar_h = 10*o2aX + + scenes={ intro_01= { - {x=3,y=0,flip=false,audio="abad",text={"Ah!, què bo!","Nit de Netflix amb","un bon bol de cacaus!"},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Ah!, què bo!","Nit de Netflix amb","un bon bol de cacaus!"},die=20}, }, intro_02= { - {x=3,y=0,flip=false,audio="abad",text={"Eh! On està el","bol de cacaus???",""},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Eh! On està el","bol de cacaus???",""},die=20}, }, intro_03= { - {x=4,y=48,flip=true,audio="batman",musica=audio_song_batman,text={"ME L'HE ENDUT JO!!!", "S'HAN ACABAT ELS","CACAUS PA TU!"},die=20}, - {x=3,y=0,flip=false,audio="abad",text={"Què??","Però perquè???",""},die=20}, - {x=4,y=48,flip=true,audio="batman",text={"Estàs com una vaca!","Has de deixar de menjar", "eixes gorrinades"},die=20}, - {x=4,y=48,flip=true,audio="batman",text={"Mira'm a mi. Estic","tot buenorro i faig", "esport"},die=20}, - {x=3,y=0,flip=false,audio="abad",text={"Esport?????","I una merda!!","He de cuidar la panxa!"},die=20}, - {x=4,y=48,flip=true,audio="batman",text={"Pos t'aguantes.","Ja pots despedir-te", "dels cacaus..."},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",musica=audio_song_batman,text={"ME L'HE ENDUT JO!!!", "S'HAN ACABAT ELS","CACAUS PA TU!"},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Què??","Però perquè???",""},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Estàs com una vaca!","Has de deixar de menjar", "eixes gorrinades"},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Mira'm a mi. Estic","tot buenorro i faig", "esport"},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Esport?????","I una merda!!","He de cuidar la panxa!"},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Pos t'aguantes.","Ja pots despedir-te", "dels cacaus..."},die=20}, }, intro_04= { - {x=3,y=0,flip=false,audio="abad",text={"Serà mamó...","",""},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Serà mamó...","",""},die=20}, }, abad_inici={ {x=4,y=0,flip=false,audio="abad",text={"Se va a enterar eixe","imbècil de Batman","quan el pille..."}}, @@ -115,16 +127,16 @@ scenes={ {x=4,y=0,flip=false,audio="abad",text={"Ara si que li puc","pegar una bona","cacauà..."}} }, final= { - {x=4,y=48,flip=true,audio="batman",musica=audio_song_batman,text={"AI!", "M'has fet mal!!!",""},die=20}, - {x=3,y=0,flip=false,audio="abad",text={"Aixó per furtar-me","el bol de cacaus,","imbèsil"},die=20}, - {x=4,y=48,flip=true,audio="batman",text={"Cert, esta me la","mereixia... però", "mira que be estàs!"},die=20}, - {x=4,y=48,flip=true,audio="batman",text={"Amb el que t'ha","costat pillar-me", "t'has ficat en forma"},die=20}, - {x=3,y=0,flip=false,audio="abad",text={"No me vingues en","tonteries,","mamarratxo."},die=20}, - {x=3,y=0,flip=false,audio="abad",text={"Creus que no he","notat que falta mig","bol de cacaus?"},die=20}, - {x=4,y=48,flip=true,audio="batman",text={"Jejejeje, es que","estàn molt bons!", ""},die=20}, - {x=4,y=48,flip=true,audio="batman",text={"Però si vols te","done del meu bol", "de tramussos."},die=20}, - {x=3,y=0,flip=false,audio="abad",text={"TRAMUSSOS...","",""},die=10}, - {x=3,y=0,flip=false,audio="abad",text={"M'atreviré a","passar l'última","frontera...?"},die=40}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",musica=audio_song_batman,text={"AI!", "M'has fet mal!!!",""},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Aixó per furtar-me","el bol de cacaus,","imbèsil"},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Cert, esta me la","mereixia... però", "mira que be estàs!"},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Amb el que t'ha","costat pillar-me", "t'has ficat en forma"},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"No me vingues en","tonteries,","mamarratxo."},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"Creus que no he","notat que falta mig","bol de cacaus?"},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Jejejeje, es que","estàn molt bons!", ""},die=20}, + {x=avatar_batman_x,y=avatar_batman_y,flip=true,audio="batman",text={"Però si vols te","done del meu bol", "de tramussos."},die=20}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"TRAMUSSOS...","",""},die=10}, + {x=avatar_abad_x,y=avatar_abad_y,flip=false,audio="abad",text={"M'atreviré a","passar l'última","frontera...?"},die=40}, }, } @@ -165,37 +177,38 @@ end function draw_scene() local txt_x = not scenes.current_scene[scenes.dnum].flip and 38 or 8 - view.origin(0,scenes.offset) + + view.origin(0,scenes.offset*o2aX) if scenes.step==0 then - draw.rectf(0,16,129,2,12) - draw.line(0,15,128,15,16) - draw.line(0,18,128,18,16) + draw.rectf(0,16*o2aX,129*o2aX,2*o2aX,12) + draw.line(0,15*o2aX,128*o2aX,15*o2aX,16) + draw.line(0,18*o2aX,128*o2aX,18*o2aX,16) elseif scenes.step==1 then - draw.rectf(0,8,129,19,12) - draw.line(0,7,128,7,16) - draw.line(0,27,128,27,16) + draw.rectf(0,8*o2aX,129*o2aX,19*o2aX,12) + draw.line(0,7*o2aX,128*o2aX,7*o2aX,16) + draw.line(0,27*o2aX,128*o2aX,27*o2aX,16) elseif scenes.step==2 then - draw.rectf(0,0,129,35,12) - draw.line(0,0,128,0,16) - draw.line(0,34,128,34,16) + draw.rectf(0,0,129*o2aX,35*o2aX,12) + draw.line(0,0,128*o2aX,0,16) + draw.line(0,34*o2aX+1,128*o2aX,34*o2aX+1,16) elseif scenes.step==3 then if not scenes.current_scene[scenes.dnum].flip then - draw.rectf(8,12,24,12,16) - draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,13,20,10) + draw.rectf(8*o2aX,12*o2aX,24*o2aX,12*o2aX,16) + draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,13*o2aX,20*o2aX,10*o2aX) else - draw.rectf(97,12,24,12,16) - draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,13,20,10,true) + draw.rectf(97*o2aX,12*o2aX,24*o2aX,12*o2aX,16) + draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,13*o2aX,20*o2aX,10*o2aX,true) end elseif scenes.step==4 then if not scenes.current_scene[scenes.dnum].flip then - draw.rectf(8,7,24,22,16) - draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,8,20,20) + draw.rectf(8*o2aX,7*o2aX,24*o2aX,22*o2aX,16) + draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,20*o2aX,20*o2aX) else - draw.rectf(97,7,24,22,16) - draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,8,20,20,true) + draw.rectf(97*o2aX,7*o2aX,24*o2aX,22*o2aX,16) + draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,20*o2aX,20*o2aX,true) end elseif scenes.step==5 then - text(string.sub(scenes.current_scene[scenes.dnum].text[1],1,scenes.char),txt_x,7,2) + text(string.sub(scenes.current_scene[scenes.dnum].text[1],1,scenes.char),txt_x*o2aX,7*o2aX,2) if scenes.char<#scenes.current_scene[scenes.dnum].text[1] then scenes.step=scenes.step-1 scenes.char=scenes.char+1 @@ -204,7 +217,7 @@ function draw_scene() scenes.char=1 end elseif scenes.step==6 then - text(string.sub(scenes.current_scene[scenes.dnum].text[2],1,scenes.char),txt_x,15,2) + text(string.sub(scenes.current_scene[scenes.dnum].text[2],1,scenes.char),txt_x*o2aX,15*o2aX,2) if scenes.char<#scenes.current_scene[scenes.dnum].text[2] then scenes.step=scenes.step-1 scenes.char=scenes.char+1 @@ -213,7 +226,7 @@ function draw_scene() scenes.char=1 end elseif scenes.step==7 then - text(string.sub(scenes.current_scene[scenes.dnum].text[3],1,scenes.char),txt_x,23,2) + text(string.sub(scenes.current_scene[scenes.dnum].text[3],1,scenes.char),txt_x*o2aX,23*o2aX,2) if scenes.char<#scenes.current_scene[scenes.dnum].text[3] then scenes.step=scenes.step-1 scenes.char=scenes.char+1 @@ -222,19 +235,19 @@ function draw_scene() scenes.char=1 end elseif scenes.step==8 then - draw.rectf(0,0,129,35,12) - draw.line(0,0,128,0,16) - draw.line(0,34,128,34,16) + draw.rectf(0,0,129*o2aX,35*o2aX,12) + draw.line(0,0,128*o2aX,0,16) + draw.line(0,34*o2aX+1,128*o2aX,34*o2aX+1,16) if not scenes.current_scene[scenes.dnum].flip then - draw.rectf(8,7,24,22,16) - draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,8,20,20) + draw.rectf(8*o2aX,7*o2aX,24*o2aX,22*o2aX,16) + draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,9*o2aX,8*o2aX,20*o2aX,20*o2aX) else - draw.rectf(97,7,24,22,16) - draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,8,20,20,true) + draw.rectf(97*o2aX,7*o2aX,24*o2aX,22*o2aX,16) + draw.surf(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,avatar_w,avatar_h,98*o2aX,8*o2aX,20*o2aX,20*o2aX,true) end - text(scenes.current_scene[scenes.dnum].text[1],txt_x,7,2) - text(scenes.current_scene[scenes.dnum].text[2],txt_x,15,2) - text(scenes.current_scene[scenes.dnum].text[3],txt_x,23,2) + text(scenes.current_scene[scenes.dnum].text[1],txt_x*o2aX,7*o2aX,2) + text(scenes.current_scene[scenes.dnum].text[2],txt_x*o2aX,15*o2aX,2) + text(scenes.current_scene[scenes.dnum].text[3],txt_x*o2aX,23*o2aX,2) end if scenes.step<=8 then scenes.step=scenes.step+1 end view.origin(0,0) diff --git a/data/tiles.gif b/data/tiles.gif index 1a2178379472cedbd1e4abdf06daa0ecbb3fd892..9a95615a4b51d652b27946290b2362ee98a27230 100644 GIT binary patch delta 10001 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 delta 4121 zcmV+!5a#dIQ;H@GM@dFFIbnbRfB@$Pu?!mne}Djh000R7009Ub2*H3sgAfKPBnY8l z!i5VRHiQ^aB1M4`9bVkHvEV@i4;6;wC=w(D1Sm&F{0OomOO+)*!URz8WXhH#bJnzp zKqZ6)GcVReNwg=$okW8oO)1o5Qiwx~*38KxgICt_SccjV8kF~jy8OAz7Lu0H+74Gg#8*S97;;yn5ivCYQ>1=JNOnQ&sj zj#Ki*c<}LNnw>SL?aQ)rQ^TJXOFT>vugIA@5l+p!S}y6!tZ&x_TY7QHvZ+nV_Dz#& z-<=wv3KtHx;qc~MXXlkUnzP}-WG@Fbe@+uZ0q<;;{v)^jTRY?NN?$@|D0)4^@81zt zBww|Fef#v^gO{%re)!i8#g|w_-$`_zPu~57nMn9$Bv)D65!9e}-yH=Wg%uu!-+@OV zu;GTIHFV#I_*Hb^a}2^~Urz-X_1KFJhD70v84^fifl&E3;#MB22w#Xjl31gJfB2b~ zB8Duwm=f-2?zokg|2a8fMqEAwSX?3Em(q~zb=lQ? zTIMGriS!w$B?CSQi6enR+Le-fU8R{3n;7AVAp{A)W+;A%LbWKPTg3;GSD; zwz^WgowVCxnc&N`uuaM5zh-W(Y=`_a=aDUe6!O8C-kkv5(8}})m0NMalc2K`O&BhG!_xm+1|=6 zP{<~G*VXyDY_+^?yRCKGe~5O?nE_zu9X9@P3h#_u7VkHrca#?9<5! ze6BLXqLc19UHqnq`ly6b-ul6_=bG%_b2Vi9!mbV=z4W)wJ3aIXe@sukU3zjjcJi1X zyRAdd&xiA*yctk{_5*NVqyYoKZ<%-6=cy-bXglw1vI;2bJW&19N{nW8n=uK`IZD$F zh6vRiFLgu#5F}tkMn$;*o~j`h>{;--1DlVOC`S$Ak7H)k7II+(f+$Rz+06GVtr*9I zuPI>*b%MegDy4=Qe}oDSRVa~l39yI$w#tYPp(21HhU{4m!C?*wqQoVhP>Bd?Nc{pp zMHx9{id6&_7Kccg08p!lGZYF0A<(}R3J{8C+@VOS#lGnc5dv&%;{e_m$2M}Yi(kBB zv}{O5IgPQ5W7J_8$rwn2P%!{im`E8NvXMvmVjjaNe?~M$gpd8(3MR?Z5JpNb zlhk8~C);SnQL+y5 zYT0F`akQyS=Sb6;))S0wi3my|N+!f4@HH!~lVXfCf6(?->#07u9#rp0+3h(?6X zP`4T!u_?!^09q+j*vHYWkTs!A-6&dVf>l*QWvg%vj6{fot72XXfqk@4{k*l;oAp&I zZB=Wu>MOTX9foLWxL6b`;si z0*I24f6c6FHG7oHuC}tSRsJn(GjdrC(P^~a6AEcpiIL16K(#4_%4%iX+Tqq#xW>KI z`f|&s-Gb1$(86p3e*0V4_!hXTZ+%L!&j6U4qVaxkmC}7Jcd2{ahyYi+ z+3l`vpE1V``hWpSG~xUZ-4;|e?qs;m%K!x?`Quh68@qzyC?N6g!>y@ z_a-;IYfX`XZM)%n9rD9^qzQi;QsD+qcc>G7Fn3?u-Xke%efrfaM;Xx4`foilH3*5T0q${CHl)#eQYd&nG`S{&IEyB}tjo5dX_w^-(Xvgzn|qvI;^v4(;eFDO zM0BVw^ZAf8#&nQl`(scW`N1ugGM1xgf85J{3Dvsw5tIM~rk=st(p0r>s@afmJ!7ee?7p5 zX&L|kWV4qZm#4t~wMUWq8Qjk|PB=*5I#jyKP$ChJxQ!|9uoMFF!5Pa~yH zK3`|Z2@a8;x6k0ERxQ#SzSNI2JX$fzYM8+|bBEmavWva&y*xY0 zZLIQqv)u1gar;05FZh9jz3l(KeBldDuU=4>FWbwAA`Rq}C#a|u;idS!D6M^4HKsM3gy0?1Ol}~f!+uH%je{cTGKd$-L z4DyfIzdkHs{%P^zdmo3`@y$m@rRFf?HgYKP><30 ztFHd_TfO|uw|>2sca!BH*Y`*8mwnN+LkEaj6K8(=2Yu?7em0hR3Sn{bhjj@^NU#KT z2Y7q}_<#F1fe|Qv7B~>~e-}*~Xn)&>e{IKt_t!roD1o_$dlPqpCj@`or%d!`MlT41 z+;?z7D1FjNsx)PRonU|HvcP55|3RckrNatZMO4$uGqfQ4GfgR7SBQaVQ;5ih^Y)06 z_=rvTgg7^eSGb2>c!_=(BU80=pcsmqD2SrSDx+957`Jt(xQIFDc*Ej_uecYO*Z>cJCi@;coI5&*0xQBg+j9k}^p!kh}2uINZjidN!r>KfkD1|77 zje6LQdH9WKXjAd%iO9!>ZHR>UXj&IRjM>Z36Q008ze5SrMLh3Hz!29hEfk|c>je-4?DHFT0F$$gqgk%6TU z>a+ea1)wqNgAr2&0JCUS5-Bwz2>>FgSs*!RG+}cLSd@gMj8r6eQ^!yRF_SVmlQ{8I zI4KacxRVlzlMmrqJ}D4D$&)p^SzxJ!e>_%shjfBh1yqk_VB!c7aOp#E*<%!8mte`2C)k%oSP^X{bqaBq7eSc| zp_m(inW^WPj|rK9g<72{cu5(WzM_v7h*cbM5UFVpZzm7};F=1dT0SY8&hnbAd7GhW znGk`R0|7Pw05+WgQ^I)=uUVY1$(6%3o0{n=0FXGxe`%byIV{mBc)Z!0qw<@h(i!{y zB%F%Tn#CENv>BV3r4Y`^oURF-6k!0Qxe(Ra7Vi0W(P^9E$pGSsnF(+a_c?i{m!9hh zm+g6-zDb{pQ51avpWZ2-m`R_pNuKwaI-jzi-w6@wxt^v+c>(~S016rcfffRR6Sirb zjG38=fBB%P)13PGp%Mx$(o9&66 z3R)0+n3g>u00>}_32}P*xs?i`paW5(0+FM7v!l3apfLHP6cKpN*%Fr+qeQ9@s5zd# zDWtPG5G1Oj`5B~Hs-WpKe;A{zjAl zes-T;iWW&4rcL^qQu>>hiK9Zw00}TE`FWc?>Z6RQm*IJu=UJSFI;R>c8he4KBKoA4 z$)J-8DppDo6S}G6shOzvou?-N&N&fw3Z@bAs8EWWXetm6da0{9p`044MTnZ2IuP19 zf1C*Ps=Sq^RVu6(p`O%=oW=@(5(s>8HIGZ0sq@mI&#|2?g`XyRpXPe0Rtl|oW1^{P zk?v}(dIF$vBvl=c261ugEG^_5 z7Fik*8?paNvAm_4{t6lpB>)@Cu?G+~f7?NDxSFK8a;Ea?04E8qIl&SZoBlNE*{=)X zXBXzd$!s+tBNg?qy*XF3s`^$-q|vhTXGtMm~UfwJ;Ctf5y?tXUJOlbsH?<^77sx5MT1dAm%eHpQ5q%4`3kj1e z$8tNXoxRbWrTLGhDX7!B5PGYr&ib`Ti-NyVL=ICr+L$(5bl=~)%R};vAok;y$tDUkKZbH(YtwL zS9sJrcGb7N9#?eEi@4C+oN}6Sp_+2q+q`85bncsZ;TykgJH6410Lwda(mTHW#=ri% zzKjRJ57WN%8+P!Eztf8n%d5aem!u1UzzHnB@Y}s$r@!6XoQEpF6hpv-f7fsF)Nc^{ zZ}_{wA-tdL*`t9fJtLe*;5%|ahrRg1!9q87AFPoZsSx+E5IKCpdCJ2ZicllB!UM3v zZu)fr2TwShkvgozNj#a8DVI+?l^huW3ar3Gtio+1#8g|bt(v{4M{+F;5jWh#OS}*t X_Qaz}m5!;XY&^t@I;h4G0}uc^5T(ON