From aae0a49da0539c6892b0245eac3d8e6977baf969 Mon Sep 17 00:00:00 2001 From: Niko Jochim Date: Sat, 2 May 2020 01:22:53 +0200 Subject: [PATCH] add fire to homebase --- GoldWars/GoldWars.xcodeproj/project.pbxproj | 16 +++++++++++ .../spark.imageset/Contents.json | 21 ++++++++++++++ .../Assets.xcassets/spark.imageset/spark.png | Bin 0 -> 5191 bytes .../Components/DefaultBaseComponent.swift | 3 +- .../GoldWars/Components/TeamComponent.swift | 16 ++++++++++- GoldWars/GoldWars/Entities/Base.swift | 7 +++-- .../GoldWars/Entities/EntityManager.swift | 3 ++ GoldWars/GoldWars/Partikels/Fire.sks | Bin 0 -> 7801 bytes GoldWars/GoldWars/Scenes/GameScene.swift | 26 ++++++++++++------ GoldWars/GoldWars/Scenes/MenuScene.sks | Bin 8154 -> 8166 bytes 10 files changed, 78 insertions(+), 14 deletions(-) create mode 100644 GoldWars/GoldWars/Assets.xcassets/spark.imageset/Contents.json create mode 100644 GoldWars/GoldWars/Assets.xcassets/spark.imageset/spark.png create mode 100644 GoldWars/GoldWars/Partikels/Fire.sks diff --git a/GoldWars/GoldWars.xcodeproj/project.pbxproj b/GoldWars/GoldWars.xcodeproj/project.pbxproj index 41c82b9..adf2cf1 100644 --- a/GoldWars/GoldWars.xcodeproj/project.pbxproj +++ b/GoldWars/GoldWars.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ 11036113244B3E30008610AF /* MenuScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11036112244B3E30008610AF /* MenuScene.swift */; }; 116060F7245C57D2004E5A36 /* EntityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116060F6245C57D2004E5A36 /* EntityManager.swift */; }; 11738A3B24508F68004426F1 /* Unit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11738A3A24508F68004426F1 /* Unit.swift */; }; + 9E11FF79245CD81100EED3BE /* Fire.sks in Resources */ = {isa = PBXBuildFile; fileRef = 9E11FF77245CD81100EED3BE /* Fire.sks */; }; 9E78ACB6245C9A5300526FF7 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9E78ACB5245C9A5300526FF7 /* GameKit.framework */; }; 9E78ACB8245CB75B00526FF7 /* TeamComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */; }; 9E78ACBA245CBDAF00526FF7 /* HUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E78ACB9245CBDAF00526FF7 /* HUD.swift */; }; @@ -72,6 +73,7 @@ 11036112244B3E30008610AF /* MenuScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuScene.swift; sourceTree = ""; }; 116060F6245C57D2004E5A36 /* EntityManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EntityManager.swift; sourceTree = ""; }; 11738A3A24508F68004426F1 /* Unit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Unit.swift; sourceTree = ""; }; + 9E11FF77245CD81100EED3BE /* Fire.sks */ = {isa = PBXFileReference; lastKnownFileType = file.sks; path = Fire.sks; sourceTree = ""; }; 9E78ACB5245C9A5300526FF7 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; }; 9E78ACB7245CB75B00526FF7 /* TeamComponent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TeamComponent.swift; sourceTree = ""; }; 9E78ACB9245CBDAF00526FF7 /* HUD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUD.swift; sourceTree = ""; }; @@ -139,6 +141,7 @@ isa = PBXGroup; children = ( 9ECD3699245C91F7008DEEBD /* GoldWars.entitlements */, + 9E11FF74245CD79100EED3BE /* Partikels */, 116060F5245C5709004E5A36 /* Entities */, 116060F4245C56EA004E5A36 /* Components */, 9EC86BA2245C89B200796EF3 /* Enums */, @@ -196,6 +199,14 @@ path = Entities; sourceTree = ""; }; + 9E11FF74245CD79100EED3BE /* Partikels */ = { + isa = PBXGroup; + children = ( + 9E11FF77245CD81100EED3BE /* Fire.sks */, + ); + path = Partikels; + sourceTree = ""; + }; 9E78ACB4245C9A5300526FF7 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -340,6 +351,7 @@ 110360DE244B101A008610AF /* Main.storyboard in Resources */, 11036111244B3D6A008610AF /* MenuScene.sks in Resources */, 110360D5244B101A008610AF /* GameScene.sks in Resources */, + 9E11FF79245CD81100EED3BE /* Fire.sks in Resources */, 110360E0244B101B008610AF /* Assets.xcassets in Resources */, 110360E3244B101B008610AF /* LaunchScreen.storyboard in Resources */, ); @@ -599,7 +611,9 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = DDKFQG46BQ; INFOPLIST_FILE = GoldWarsTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.2; LD_RUNPATH_SEARCH_PATHS = ( @@ -620,7 +634,9 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; + "CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development"; CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = DDKFQG46BQ; INFOPLIST_FILE = GoldWarsTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.2; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/GoldWars/GoldWars/Assets.xcassets/spark.imageset/Contents.json b/GoldWars/GoldWars/Assets.xcassets/spark.imageset/Contents.json new file mode 100644 index 0000000..5fdc9ea --- /dev/null +++ b/GoldWars/GoldWars/Assets.xcassets/spark.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "spark.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GoldWars/GoldWars/Assets.xcassets/spark.imageset/spark.png b/GoldWars/GoldWars/Assets.xcassets/spark.imageset/spark.png new file mode 100644 index 0000000000000000000000000000000000000000..3383a218caa6310f93bf704104a41f01aaa95691 GIT binary patch literal 5191 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 B@g@KO literal 0 HcmV?d00001 diff --git a/GoldWars/GoldWars/Components/DefaultBaseComponent.swift b/GoldWars/GoldWars/Components/DefaultBaseComponent.swift index fe5645d..f668990 100644 --- a/GoldWars/GoldWars/Components/DefaultBaseComponent.swift +++ b/GoldWars/GoldWars/Components/DefaultBaseComponent.swift @@ -13,8 +13,9 @@ import SpriteKit class DefaultBaseComponent: GKComponent { var spriteNode: BaseNode - init(texture: SKTexture) { + init(texture: SKTexture,position: CGPoint) { spriteNode = BaseNode(texture: texture, size: CGSize(width: 80, height: 80)) + spriteNode.position = position super.init() } diff --git a/GoldWars/GoldWars/Components/TeamComponent.swift b/GoldWars/GoldWars/Components/TeamComponent.swift index 4413436..0509a36 100644 --- a/GoldWars/GoldWars/Components/TeamComponent.swift +++ b/GoldWars/GoldWars/Components/TeamComponent.swift @@ -21,8 +21,22 @@ enum Team: Int { class TeamComponent: GKComponent { let team: Team + let fire:SKEmitterNode + + init(team: Team, position: CGPoint) { + fire = SKEmitterNode(fileNamed: "Fire")! + fire.zPosition = -1 + fire.position = position + fire.name = "fire" + fire.particleColorSequence = nil + fire.particleColorBlendFactor = 1.0 + switch team { + case .team1: fire.particleColor = SKColor.red + case .team2: fire.particleColor = SKColor.purple + case .team3: fire.particleColor = SKColor.green + case .team4: fire.particleColor = SKColor.gray + } - init(team: Team) { self.team = team super.init() } diff --git a/GoldWars/GoldWars/Entities/Base.swift b/GoldWars/GoldWars/Entities/Base.swift index 85aafb2..1358b97 100644 --- a/GoldWars/GoldWars/Entities/Base.swift +++ b/GoldWars/GoldWars/Entities/Base.swift @@ -12,12 +12,13 @@ import GameplayKit class Base : GKEntity{ var unitCount:Int - init(textureName:String, team: Team? ) { + init(textureName:String, team: Team?,position: CGPoint ) { self.unitCount = 0 super.init() - addComponent(DefaultBaseComponent(texture: SKTexture(imageNamed: textureName))) + addComponent(DefaultBaseComponent(texture: SKTexture(imageNamed: textureName), position: position)) if(team != nil){ - addComponent(TeamComponent(team: team!)) + addComponent(TeamComponent(team: team!, position: position)) + } } diff --git a/GoldWars/GoldWars/Entities/EntityManager.swift b/GoldWars/GoldWars/Entities/EntityManager.swift index 0ef959e..8f94ce6 100644 --- a/GoldWars/GoldWars/Entities/EntityManager.swift +++ b/GoldWars/GoldWars/Entities/EntityManager.swift @@ -26,6 +26,9 @@ class EntityManager { if let spriteNode = entity.component(ofType: DefaultBaseComponent.self)?.spriteNode { scene.addChild(spriteNode) } + if let fire = entity.component(ofType: TeamComponent.self)?.fire{ + scene.addChild(fire) + } if let spriteNode = entity.component(ofType: ModalBackgroundComponent.self)?.spriteNode { scene.addChild(spriteNode) isModal = true diff --git a/GoldWars/GoldWars/Partikels/Fire.sks b/GoldWars/GoldWars/Partikels/Fire.sks new file mode 100644 index 0000000000000000000000000000000000000000..839f2cae8f73829f35c01d7837f32551fe61ec66 GIT binary patch literal 7801 zcmbU`30PCt(sQ%jEFfVKlK>I~#RV`4WWkM96j4BSP>CT45D7_40*biYT5DVN)z*Dq zP;srcwXSX5t+iUMYi(;=tk1f(rFE@Z{pa2or0?&0|Np(4FZa$pXU@!=nK|do%&l-( zEiSi0aUKX@0UJ2L1s;&#Qxa8gcDgKfTWOTRX{@&3TS1iD?kI_}SBxcK~$)>*edM>PP^Sr#ZkmIu?~Ep11yFmunJZ~6;!}_*bLj? zJ=hMr;UoAMzJ<$h1%8BU@DtpIJMb&~4tL=JJOmp&B7oo%{zNB2LWC0GL=+KC#1KkC zLku92h%_RTC?txAVxoj7CCZ2qL^+`^jIz~Ptv`r!zz@XW4*?JeLC_I`p%X|z3Ni?R zPzZz05Ds#PfG!XTQP35-K{RxS9?%ndK@7w~9P|bSC_x4BkN|4XfEIL+2z{V0^n?B| z0FodXQXm!5ARPum1`LA1kO@N|3x>il$c7xqh2f9~`A`6bPz1$L0;Ny}BVZ(qf^yKq zXfU8cj9|jM87fgd)d*Rb_i}`+P>V{iBV>ZHcz5Ez{Kb0()MKj&8W?OEngo+!3Sv|- zR4d>WgiP=%w$S5g9wvAl|8K$!#HfdVz*|V`ZKh`q%!PS~F(2Q`!BnQ7kY{%r+~^5< zaiHGiHaOk+4zt-*WN=yxHltZD4%VA%EiT$uQfyULv$vx}Z+94s7I%YQ9ON07X1Cg% z-tN?wMsZ*+i@MF z7mM{qnt!U*Y%?)47~$z>V0sn~oSMaGHRsdvm6hCNnBk(oRgK+dDD6SlTwu z%h4-VsUFv))#RiJ{GE35ypyBnLTl4&qI6vDwAsq^?hCJX71#&XTF_oEg-NkGstsOYilU6PTaWUtYDS)7{dh(@FXZyd+FpaW&c%9z z+wHVe)VXmnqn%yFXg}KBO7t%dnPR=G+F&v}%k|C|n+-#L6grC0Y&GNBX7(R(o81e{ z+bJ7bEBOwI)6 zicGp#SveX(iWli=0fP~4#XAEW*c94A1IeZIJB?0} zRENl9j^|Yjln|Tvkx4C{2JEF9IQR!j#N3hGqx**_?59E^_qX5^FN%jlf$HqRpu+GO z8@d1T$&&||PKpzmv~bt(WctMiDYCFXl=7q4kxA#KUK>p}(}F+%F`56_IarEE)iOK^ zR=~;;+4*q}J1*3EgS8A{m&0td7_1bB;);o)Mn#NVG3hKc!5UZ#>&iTCLAzdw2SoE` z=QDP0LWJg$?ED-iVmJ#MkjF;YMALi`M699&9!gu_-SX`GVRddph1HzmbQ&7gz!umF z%}9%R<$H#|51VkzIrxwvwgYy;F2smK*LJO1MfrM&?SZ``v-8s}%^*9 zqW#-#c4p)D`-4~vpTIuY4+r2N9D>6r+7UPkpTaTt435L+Z~{YM4Ln1yJ@L(<~Puv#1rv#C(;!riY-Z*LxSjS4Q)J1pbP)_i0@Zw;=xiWkd( z?i{5zSzL_v=v7;)cjF4l!$7S>Z>g=K5%_${pOWBR#-}==?E@*`QynRBp$iYbnse|S z;{o5J2edF&M=t09Q~+9?Rnn+Qh>>d&CVA1W(r8o=#ckJfogr`odv4JLoXDIe5R3%a zxCu0RJSRrpsEm;-Cn2eJK1Vy3x1p7GLP|<;i#(Vfquzu2rTJMeCfo$~pt-D3t&Y>E zW8~^d#Wd|$#iR@H2MX~Rp1@Q16Q03J{5>zy(_sYecL5lZqS_sHE3==_x*vgulf!Iq zd+dPX;_gKCq++OW#@`46HmxIA1e@RxT!Kf*sjgHs)t%}=2`&%KSw=rjo` zwN@in#3|y{8nsTBsL`tNO{s{FPtYipYL#5c;Hu))3awhF)hKCPrAD0)uh#0~nUOk$ zQmayGG^%)@BB-cyL;w+p5(W_+iQt0l{LFNeDl;ujOj2E_$Q*y4!2mvkhgxiQmKdPc z=60gU@{-arIe7{b0s$riN&th=FP=u$~Tg>ASK96vewXW8J@FRqSYRv{00LO=JcbkpX z2rCfwaTesIA>0pu?^D$du4o6->ke@t&F*Nxc(B?n?{4fNS0*OvsF3R)+iG-npjmFs=w{}kDYB;{~4fd>%q7?oUs`ZeDY=6 z%ds!p>`ef=`>30@U$#{&2H5o)faIH(ZBeTL{H6iyJl$?S!L+|ryWNgHy?c)vH!jX% zHpbBkZM*(Ygf`57547VKNAqjbojl!KX{fWh<+M`i@W0L}$L-E&mdF096aUu(+lkdq zj+i`ir5VF>WL1P-hFd+F+h$@i2)V`f?=1XZ4r?a^4SM_!3CJ~mSd7zjmfMN#=%5POsB(4Og!gfRbVAX z3mfss{{VJjE#M#?#V6oPxPVoG7OV)|hE}WuJRt~z#O*eakYWv>E76Nk5jv~@3?zmU zd6@Z+CaMS5NE|255ML8lh?~Uk#A6nl<--bMg|WJ^ zdb4z_6jm0ifHjI$#Tv_+z?#N-i?xW=#M;8z$vVh7!Mea|VcllkX9HWr4rWKNW7#@( z8aszw#;#;L*^}8b*bCTA?5*s*>|^Y6>=yPN_8%M`Cy*oO#B%y_26GBIM$TByWX>$k z63zzBPR+#TGb+zZ@m+y^`!FPIn2 z)A9!MN_k^=jl5aB<-BdY1H3c5tGxRpNlM9HWPdV;G>~p`I=PtKLhdKelGn&bd=WpK zui|I$%lJ0_RQ>|~CjLJDS^jnY6Mmg#N;4VSizP zaE$O3;UeKy;Zfmb;a!nP)J2pi8ZNSkDA6L(d!o-oS44mK1o-syN%I-$Q|I%R&w8H& zK41IX_4W1b=9}zW=Ii!-%Xg#iVc+k4A9V=q5Z58IgQ>%m4of@i>~OZjFMa~Qu6`+g z<$e?V7Wi%VJMDKzED(1Sr-=>X$>OErJ>sv#_x%I?mHs*Ywf?jGH~Am;zY#zNbPE_5 zU<#NPuqNPez|}x@U}RugpfT{(z_o!#1Fr?~f}(>mgT@5S40<={R8VWjfQ|_ri#m?) zxU}OZ9b1Cg!QFy0gRQ}{gFgtq82q?XSf`Xu=1y;R+S=)Cr-zadNwUN&nIYLGxgdEg zl}iUoYozZ;cS*mKab!JZ!)4=SD`ZDycS3?f`i2-oW`ukY@=Yi!v}b5uXk+M_(37F} z!#alz3Uh=l4m%unr*m-ULM#6=S3chY>f(!8WuG%YID>#T?JirU8}n; z?0T&0!*0>tio3nuZCAG&(UR!Q=n2uAqc3;&?Vi+qZ1<+_=X>ya=z7%jSl;8yo~)kg zp4B~<_B`E-)l1XM(rbCIGcnwl#28ylQ_NSfKCvmW^|6~{ufzq%4UL-`w=3?K-ch~F zdcV{ASnp>FwZf`ctN2zKpd6x{s@$vmUDZ=%R4rAVkN1twh@TR_JN~zXUJ2%e6$zKr zf$CxE*VTvAe`>TEr)I0>rZ!4DTDwg9l`cq^tDB|!ERma-nm8r#KwXv7;D&&VRMIF&hDCR z%ifg(Ihi?gbH2-s&K;Zk(Qw}I+~G@y|CFc9o0xYjKQLdPzbXGgL2AM5f^Q4E7uFRX zD)K8DS+ud}VR3r#oZ^;}-X)VtPL#?@Ev385$g-lc=Cb=E29B6N;@U{{$mt_5j*1>N ze$?@DS-G|R6TP3_px-{4JGyxErqNFgIff>~{ff+rWfiT)G~+_!ZBw#op6RB!zj==N zdS(C0Ih8l6`d7`Zx>=o6y`cJzCC#$L^4plfV^)rNSd&w;zUH~L*t)HjUpu;Xk1fDf zV>@E+Y#(nw?r0g?XYBm3tyWY1Fi-TaADoTmPJDs?Oq(U`0d3{msBsgurzh)wq>Eq-dy%@ zxoP>?70D~Mt_)i_bLHbzmQ|Nl4_dvmsaw;6HM}+TYkpc=wD#CK-MWp2Zn zJ~*^pw|(n}T|Zp5BXGxzoy5+Dovpj7ceU&;-F;@ykUfX?_T9VVqqvXOe;o1g(oZ^m zGJBtJ-?V+t_fOb=|A6Dbor6^euO8AL`u1?i;qym^A31e2>*!~nW_)`1Sjw^epY{Lj z7K0Tj# z{=|js3ui7CUcB_x$gf&1nJ(S<+WPfx-_(Ee(X~FgI>l<&VZhU+*W$W0@*d0aQ0C>MRj}Sxi?VSj?g#+oxXLi5{NRD@Pp8q(fS5 zqAFgi(6mn>J>^&;&Py5d zGmPIgngoqjOEb~xFa^`;bO}0|gi4tZpQuw|@<#LMPUFTaw3vcn1L7vAwDF0FN;QLv z>=IQvE%yE|ekvl~%a4{bUaeB95>?0!iD)$Oi3*)ksbW$DE#|HmZ!tfjAJ%$2zh0CeGUP;yqC8b(RsX5|tWLaD_tgq9j3#WJ(emimMmL zG{$1K9@FZo2;j7K8C09>;dd73{Fk#2KFoLW$fMTL+r2F*DxsMaQrx-95pAKQ_3-L z>M$f-#97Drkn<_$0_PXbV{Q;Pg4=_e$}PoUw4OVSyPUg?yN`Q&a8{ zl6Zr7MLZ*~o;R8II&U^_1#b&)Kkqp2B8H?t^B$3*WM?v(RFEpNFPTneU~pQ3;prIC zMb?qy$OdvMISoVAH^>>}Tyj3S5QEmG=@)G$Cc^QM->*P)HHu*F8EBPCFmwZY-;{%_?C;35qIlmV_mfxGNn; z{Gt3p{wRJ0zlQJTPvKJ-2G8U#;jiXz#9(+k|3m&x{$c(J{z?89{L}nP{A>JM{6~Vm zf(*fML9w7hP%EetOcTr!EE2pc*e&>6a7pl^;I`n7;Ag?Fg5Lzc3+@W;3mym_2_6fc z3Z4m`3ke}xC=dnCNA)FzcC0s0ADqJpH zD|}bDOZc(ynDDglpTgTB5c!CLM8P77NG6ID#fcOml_)`^5$QyIL^-07q6(2+Gz~-W z%cAc^Eux=Azl$D;9*dreo=JvC@+G4&jCD#HC9g`}kSvz0maLUDOEyT}mu#2pkbEw= zBNa(~rGC;VX|A+UI!QW3I#0S?dRBT~dQtj=^p^CF^cQKX^mpk!=>zF=8DADA>mt+2 zl4aSlVwqWHm5rCZCVNZvwrq}Uo@{|^rEIlqjclE4y=3@%B~tPxlDLUPWHNUX zK|Dg7Dbf^q2tyI1@qWLGjK?HFsG$wjmKpk~<}>(wbCQht#yQ{GYwvaTI_tOoXP+DI z-+O=M4t_q(rG9h)U0g|46dtG<*9$`76Bq~MAsi;bWQc@ZSOAM*87zll_zKp+dMJf5 zsPGGgO;8EDVK3~1LvR#Mz)AQPF2H4|himWyG{POY3qQiWs;hqIAT)zIXb`ngjxv;5 z#?aZc4V`6qr)6)^nbsI&?cuEGJj)z3-HOb$)fX><BE%b}6ddXFTGklmg zaca_-@l|KgcTNrv69U-mpahwxq<(C)RVT)LE)|+pNH&+r=^gqonM{av54G$hGZF?e zc`fS@CbK1XNOP`lBr~UF-%ut7##m3rGMO!1ccO9D8=Kh~+S%%DhQ-{xW@vMzBrD#m zN*BvF?`Z8f!J0MqI-MrgF*BH+OcI1K$xI53r)(6_vIq9-)2sbkZwL1d4i4@&VBp&W z2lX`%E4uh8Q&B<#>zKJrHq#R(LWFrw=`2oxDEJ(v!Ze767>H$hnn9j6T_K&h4;heY zVL$L|2U*Na$hIOme(jihyJ;?MX;SM^0m&Zn2ItcjtQk+>vRT2 zWLtv25!`!FPA%hQ(qKOvnDRdn!c)9SF=cSjEZ4g`m%*_L>xVgR*69O%r{HvJ|8;N{ z&RGcOp$7gI5oI09#Pr12wD72S@6^FTVB-{|>dx5=%j)weA(T8vaqM zlx1**$#^An1KeaDmBV$o0pHPlx`Zw*hkpRN1-I!kx||l6tBl<62ESX7538+TcpL1o zP-@{e{L9AJ6k8ixPg{T6JGSArF}BIJRNF#Zp{>Za%~oYQZ@Xgq#nxo^vm?7`53skl z_qPwThuS0TG4`2uYA>*_HIoA-`0P!rjdimDY#X*M+n(*l_F>;;L)g*mAKA~?Xf}z> zV&}2T*dn%=UB_-=E`DThBIef!q*o8kfb*=W@9`u7F$3 z6>}xrR<4rU$6e&EaE;spu8DifJ>y<*FCB~n9Qz%|9i1*aZaN-19nOxhtK&O*%61_NJKL7APpHP5Cx%jr~~SRx}a{TKN^4r zp)eGQ;!r$FL|!xxEk^lh30i~Jq9Rm`Hli)48XZPwPz|a_-=km9@92fU)4$69gny0y zHUB&QPq7_qxCb7DL-1%k0Z+r3I16Xv9PIPqc{ms6;YBzfFU8C83S5Xy`~_Zvi*PYs zhd1C-T#hU7X1oP|jkn`UybD+1YP=Wk#|QCYd=wwYC-G_gEw0B`aRYvgpYwKJR@$nbp-?b|O+uAWE$kIe31@_}!X=?WXcT@Do(N6CQ@71c+&;;zxVyRg zxCgsGbdPhtBn$y!CmeASf5H=i5F!zUs6;0Lqz!3H+LMl?GwDjYlOCiO=}r2OexyGc zKn9U_$a`c68A^te5b_}zK|UtoB!WyLnIxC2Bt@i{Y$O$AGx>&8lRab~IZbLwy^mZK z8SxKdi1>l{kvLNPSR5se5yy&Q;wR#Gae^2wMu?Nd1aZ2UBxZ=YVxG82EELy^C1ROa zEuIihiD$$*@rrm&yer-le-?j}7zrf1q)8X0%TldWFI|-yq#M#r>6Y}p)F|DR?nysO z_oaVI52atF$I|;xq$cU9^h~zNtn84HjAfVXmPJ{XJ+dYna-iH@?jiS*N64Sa(Q=F& zC#T8j@@zR%&Xrfo8_lq`gMDk1BBfYar)*HRDLa&%%6a9w(x}`~epDVSzbQ|YCJ%Us zXNG64hkD9AJ3WUy7d?%h7b;d2wT;?M4OR!MVd@k$R-L8#)P-t+x<)Nhzf{ZBZR&Ql zQr)E?S^(!`&|d!u5)?^eSkhf57Q^=pX<}~7(Gr;&}ZphJzdYy z=j#jfh5BNBm0qlG)hqQQdX0WTzoa+lcl2Kk-Y|>+BhUykdKmqUi1&;k#!zFpG0GTi zj5Q`1lZ{9t%1AI$joHS0Bi~qREH_pdtBtkBm&RAddSkb7*7(7=Z#-gJE`a~~pIZH^ H(RlhFweYFd delta 2287 zcmaJ?dw5M(7C(30d(OQl``mN)dEE0zgea{RDG?2s8P6IWB_b~39U%`9l1NA*5qA?J z2%^U;k*4V-p7mDLXhIopqN2njMLTo|Lyeg+tZ)>%$N}ObI1Z%{kDFVN5SE#ZEFz&n(jpZ2BghWRV=xV<$jT$#mn1t=bhwEix?^ z5r}AN$*7{|x#gH4ePfb6NjdS6=}GY^Gh$~XrKT7?nYP9(roa-n$Nni8`I5BvbM}S< zs53^X=%HJic_$f9#TCYCX-4Z#R2J3Ge0rO5j2Zx8)Pg3vpXonC^@AQpxfs~(PgHhO zTyH8422oiML1i`Vunmbfvo+$RNLzCsQ%rn~Hbok%BpY7Y?Vo6_8uyVzCf8EQR0nD* zL{ceKDoHSQ$RWZos|p!Zb*MR7ivAkPaEt1DFY!CddX$E6Ap%L5}H}ZD~bKGo^vb1}~7kiS7`KI?W-y z`en4~b-JXaf}$vvq!>GuaCtr~7&m0#kjb+$k|t&JO^uu7g977)q9qij~bF<8sZ4es1AD7bT8$DrJh(6F$MK_Q*Hbj{2A3O1S)ZGz3P#mu)A zw!tT`-3Ze<44Ol7$!wB$sfpd4OaydX!6daaxH7#wdVrWQ`ZDHFnJI0I)##h9&_G$ScK zBRVEAJvMD}2ANM5kb>sI=YMnH7vW24u}Q7mT=z1375!c_$3D1BW&YY1SK$WrcsP z-L1W?1FfU2Dc1Sc<<>RUt=8SvQ`TDRch+atS2nxNWz%deZCz}=Y!S9-+eBNkZH}$T zw%S&1WcrWr(iYlDYqUSzf^JE_PQOiu(|zgp=}3Ac9ZOH4vuH29m|jDd(Cg?A>5u4- z>Gkw3dJnyi-cKK-57CF|D*6)rjM14tFdin0A>}Sp~wajhi zKJ$$E7xSF?fqB8av{Uv2_Gg2&;MZ|G{1)zjgK;MufCKL;$!X{yhuuZ5E&I;#+8sVn!wQyT_Bs>l!Bz!q_%HJAyTOHjua(LlBP=2q*Q6Plqb!Rh*Tt%%2BdM9xg}Aql}>~ zdw6~F26>}=M6QwRs#p|1MN|Tn zPD-fKUm2#1Q4*Dz%4}u6vQ$~F6e}f)Pg$>2Dw~vD%5G(^@~N_4sa8%YrG%<9#t=>7u8E@gZfD~1{dSqX{pB|+T)jj%feY~EaC+pd|SD&lr>kITE jeVJaYf1t0_H|tgURsFVp*Zgal1K<~ZuUY>(>wo_liYTjD