From 52b86ef5c24b3b5fb984ad9a40af46afc4d9ced7 Mon Sep 17 00:00:00 2001 From: Herwig Birke Date: Fri, 6 Nov 2020 08:30:44 +0100 Subject: [PATCH] initial commit --- multimedia.iml | 36 +++- .../application/serie/episodeData.java | 87 +++++++++ .../application/serie/seasonData.java | 116 +++++++++++ .../application/serie/serieData.java | 184 ++++++++++++++---- .../application/serie/serieDataSource.java | 6 + .../application/serie/serieData.class | Bin 0 -> 13545 bytes .../application/serie/serieDataSource.class | Bin 2437 -> 2551 bytes 7 files changed, 386 insertions(+), 43 deletions(-) create mode 100644 src/main/java/at/windesign/application/serie/episodeData.java create mode 100644 src/main/java/at/windesign/application/serie/seasonData.java create mode 100644 target/classes/at/windesign/application/serie/serieData.class diff --git a/multimedia.iml b/multimedia.iml index 74f3f13..4fc4bba 100644 --- a/multimedia.iml +++ b/multimedia.iml @@ -1,2 +1,36 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/at/windesign/application/serie/episodeData.java b/src/main/java/at/windesign/application/serie/episodeData.java new file mode 100644 index 0000000..02b7aed --- /dev/null +++ b/src/main/java/at/windesign/application/serie/episodeData.java @@ -0,0 +1,87 @@ +package at.windesign.application.serie; + +import java.sql.Date; + +public class episodeData +{ + private int m_episodeID; + private int m_episodeNumber; + private String m_episodeName; + private Date m_episodeAirDate; + private String m_episodeGuestStars; + private String m_episodeOverview; + private String m_episodeProductionCode; + private int m_seasonNumber; + private int m_seasonID; + private int m_seriesID; + private String m_episodeStillPath; + private double m_episodeVoteAverage; + private int m_episodeVoteCount; + private String m_episodeCrew; + private int m_episodeState; + private serieData m_serie; + private seasonData m_season; + + public int getEpisodeID() { return m_episodeID; } + public void setEpisodeID(int episodeID) { m_episodeID = episodeID; } + + public int getEpisodeNumber() { return m_episodeNumber; } + public void setEpisodeNumber(int episodeNumber) { m_episodeNumber = episodeNumber; } + + public String getEpisodeName() { return m_episodeName; } + public void setEpisodeName(String episodeName) { m_episodeName = episodeName; } + + public Date getEpisodeAirDate() { return m_episodeAirDate; } + public void setEpisodeAirDate(Date episodeAirDate) { m_episodeAirDate = episodeAirDate; } + + public String getEpisodeGuestStars() { return m_episodeGuestStars; } + public void setEpisodeGuestStars(String episodeGuestStars) { m_episodeGuestStars = episodeGuestStars; } + + public String getEpisodeOverview() { return m_episodeOverview; } + public void setEpisodeOverview(String episodeOverview) { m_episodeOverview = episodeOverview; } + + public String getEpisodeProductionCode() { return m_episodeProductionCode; } + public void setEpisodeProductionCode(String episodeProductionCode) { m_episodeProductionCode = episodeProductionCode; } + + public int getSeasonNumber() { return m_seasonNumber; } + public void setSeasonNumber(int seasonNumber) { m_seasonNumber = seasonNumber; } + + public int getSeasonID() { return m_seasonID; } + public void setSeasonID(int seasonID) { m_seasonID = seasonID; } + + public int getSeriesID() { return m_seriesID; } + public void setSeriesID(int seriesID) { m_seriesID = seriesID; } + + public String getEpisodeStillPath() { return m_episodeStillPath; } + public void setEpisodeStillPath(String episodeStillPath) { m_episodeStillPath = episodeStillPath; } + + public double getEpisodeVoteAverage() { return m_episodeVoteAverage; } + public void setEpisodeVoteAverage(double episodeVoteAverage) { m_episodeVoteAverage = episodeVoteAverage; } + + public int getEpisodeVoteCount() { return m_episodeVoteCount; } + public void setEpisodeVoteCount(int episodeVoteCount) { m_episodeVoteCount = episodeVoteCount; } + + public String getEpisodeCrew() { return m_episodeCrew; } + public void setEpisodeCrew(String episodeCrew) { m_episodeCrew = episodeCrew; } + + public int getEpisodeState() { return m_episodeState; } + public void setEpisodeState(int episodeState) { m_episodeState = episodeState; } + + public serieData getSerie() + { + return m_serie; + } + public void setSerie(serieData serie) + { + m_serie = serie; + } + + public seasonData getSeason() + { + return m_season; + } + public void setSeason(seasonData season) + { + m_season = season; + } +} diff --git a/src/main/java/at/windesign/application/serie/seasonData.java b/src/main/java/at/windesign/application/serie/seasonData.java new file mode 100644 index 0000000..af70d62 --- /dev/null +++ b/src/main/java/at/windesign/application/serie/seasonData.java @@ -0,0 +1,116 @@ +package at.windesign.application.serie; + +import java.sql.Date; +import java.util.SortedMap; + +public class seasonData +{ + private int m_seasonID; + private int m_season_ID; + private Date m_seasonAirDate; + private String m_seasonName; + private String m_seasonOverview; + private String m_seasonPosterPath; + private int m_seasonNumber; + private serieData m_serie; + private SortedMap m_episodes; + + public seasonData() + { + } + + public int getSeasonID() + { + return m_seasonID; + } + + public void setSeasonID(int seasonID) + { + m_seasonID = seasonID; + } + + public int getSeason_ID() + { + return m_season_ID; + } + + public void setSeason_ID(int season_ID) + { + m_season_ID = season_ID; + } + + public Date getSeasonAirDate() + { + return m_seasonAirDate; + } + + public void setSeasonAirDate(Date seasonAirDate) + { + m_seasonAirDate = seasonAirDate; + } + + public String getSeasonName() + { + return m_seasonName; + } + + public void setSeasonName(String seasonName) + { + m_seasonName = seasonName; + } + + public String getSeasonOverview() + { + return m_seasonOverview; + } + + public void setSeasonOverview(String seasonOverview) + { + m_seasonOverview = seasonOverview; + } + + public String getSeasonPosterPath() + { + return m_seasonPosterPath; + } + + public void setSeasonPosterPath(String seasonPosterPath) + { + m_seasonPosterPath = seasonPosterPath; + } + + public int getSeasonNumber() + { + return m_seasonNumber; + } + + public void setSeasonNumber(int seasonNumber) + { + m_seasonNumber = seasonNumber; + } + + public serieData getSerie() + { + return m_serie; + } + + public void setSerie(serieData serie) + { + m_serie = serie; + } + + public SortedMap getEpisodes() + { + return m_episodes; + } + + public void setEpisodes(SortedMap episodes) + { + m_episodes = episodes; + } + + public void setEpisode(int episode, episodeData data) + { + m_episodes.put(episode, data); + } +} diff --git a/src/main/java/at/windesign/application/serie/serieData.java b/src/main/java/at/windesign/application/serie/serieData.java index 3694362..7603816 100644 --- a/src/main/java/at/windesign/application/serie/serieData.java +++ b/src/main/java/at/windesign/application/serie/serieData.java @@ -1,52 +1,46 @@ package at.windesign.application.serie; -import java.awt.*; -import java.sql.Date; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.time.LocalDate; +import java.sql.*; import java.util.Objects; import java.util.SortedMap; -import static org.zkoss.zk.ui.util.Clients.alert; - class serieData { - private int m_seriesID; - private String m_seriesName; - private String m_seriesOriginalName; - private String m_seriesBackdrop; - private String m_seriesCreatedBy; - private String m_seriesHomepage; - private Date m_seriesLastAired; - private String m_seriesLanguages; - private String m_seriesNetworks; - private int m_seriesNrEpisodes; - private int m_seriesNrSeasons; - private String m_seriesOriginCountries; - private String m_seriesOriginalLanguage; - private int m_seriesPopularity; - private String m_seriesPoster; - private String m_seriesProductionCompanies; - private String m_seriesType; - private double m_seriesVoteAverage; - private int m_seriesVoteCount; - private String m_seriesOverview; - private Date m_seriesFirstAired; - private String m_seriesCast; - private String m_seriesCrew; - private String m_seriesGenre; - private String m_seriesIMDBID; - private String m_seriesFreebaseMID; - private String m_seriesFreebaseID; - private String m_seriesTVDBID; - private String m_seriesTVRageID; - private String m_seriesStatus; - private String m_seriesDownload; - private String m_seriesLocalPath; - private String m_seriesResolution; - private boolean m_seriesCliffhanger; + private int m_seriesID; + private String m_seriesName; + private String m_seriesOriginalName; + private String m_seriesBackdrop; + private String m_seriesCreatedBy; + private String m_seriesHomepage; + private Date m_seriesLastAired; + private String m_seriesLanguages; + private String m_seriesNetworks; + private int m_seriesNrEpisodes; + private int m_seriesNrSeasons; + private String m_seriesOriginCountries; + private String m_seriesOriginalLanguage; + private int m_seriesPopularity; + private String m_seriesPoster; + private String m_seriesProductionCompanies; + private String m_seriesType; + private double m_seriesVoteAverage; + private int m_seriesVoteCount; + private String m_seriesOverview; + private Date m_seriesFirstAired; + private String m_seriesCast; + private String m_seriesCrew; + private String m_seriesGenre; + private String m_seriesIMDBID; + private String m_seriesFreebaseMID; + private String m_seriesFreebaseID; + private String m_seriesTVDBID; + private String m_seriesTVRageID; + private String m_seriesStatus; + private String m_seriesDownload; + private String m_seriesLocalPath; + private String m_seriesResolution; + private boolean m_seriesCliffhanger; + private SortedMap m_seasons; private SortedMap m_episodeState; @@ -402,6 +396,21 @@ class serieData m_seriesCliffhanger = seriesCliffhanger; } + public SortedMap getSeasons() + { + return m_seasons; + } + + public void setSeasons(SortedMap seasons) + { + m_seasons = seasons; + } + + public void setSeason(int season, seasonData data) + { + m_seasons.put(season, data); + } + public SortedMap getEpisodeState() { return m_episodeState; @@ -496,6 +505,95 @@ class serieData try { Statement stmt = ds.getStatement(); + stmt.execute("DELETE FROM serie WHERE seriesID=" + m_seriesID + ";"); + } + catch(SQLException e) + { + e.printStackTrace(); + return false; + } + finally + { + ds.close(); + } + + try + { + Connection conn = ds.getConnection(); + PreparedStatement ps = conn.prepareStatement("INSERT INTO serie (" + + "seriesID, " + + "seriesName, " + + "originalName, " + + "backdropPath, " + + "createdBy, " + + "homepage, " + + "lastAired, " + + "languages, " + + "networks, " + + "nrEpisodes, " + + "nrSeasons, " + + "originCountries, " + + "originalLanguage, " + + "popularity, " + + "posterPath, " + + "productionCompanies, " + + "type, " + + "voteAverage, " + + "voteCount, " + + "overview, " + + "firstAired, " + + "cast, " + + "crew, " + + "genre, " + + "imdbid, " + + "freebasemid, " + + "freebaseid, " + + "tvdbid, " + + "tvrageid, " + + "status, " + + "download, " + + "localPath, " + + "resolution, " + + "cliffhanger" + + ") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?);" + ); + ps.setInt(1, m_seriesID); + ps.setString(2, m_seriesName); + ps.setString(3, m_seriesOriginalName); + ps.setString(4, m_seriesBackdrop); + ps.setString(5, m_seriesCreatedBy); + ps.setString(6, m_seriesHomepage); + ps.setDate(7, m_seriesLastAired); + ps.setString(8, m_seriesLanguages); + ps.setString(9, m_seriesNetworks); + ps.setInt(10, m_seriesNrEpisodes); + ps.setInt(11, m_seriesNrSeasons); + ps.setString(12, m_seriesOriginCountries); + ps.setString(13, m_seriesOriginalLanguage); + ps.setInt(14, m_seriesPopularity); + ps.setString(15, m_seriesPoster); + ps.setString(16, m_seriesProductionCompanies); + ps.setString(17, m_seriesType); + ps.setDouble(18, m_seriesVoteAverage); + ps.setInt(19, m_seriesVoteCount); + ps.setString(20, m_seriesOverview); + ps.setDate(21, m_seriesFirstAired); + ps.setString(22, m_seriesCast); + ps.setString(23, m_seriesCrew); + ps.setString(24, m_seriesGenre); + ps.setString(25, m_seriesIMDBID); + ps.setString(26, m_seriesFreebaseMID); + ps.setString(27, m_seriesFreebaseID); + ps.setString(28, m_seriesTVDBID); + ps.setString(29, m_seriesTVRageID); + ps.setString(30, m_seriesStatus); + ps.setString(31, m_seriesDownload); + ps.setString(32, m_seriesLocalPath); + ps.setString(33, m_seriesResolution); + ps.setBoolean(34, m_seriesCliffhanger); + + boolean ret = ps.execute(); +/* int cnt = stmt.executeUpdate( "UPDATE serie" + " SET seriesName='" + m_seriesName + "'," + @@ -532,10 +630,12 @@ class serieData " resolution='" + m_seriesResolution + "'," + " cliffhanger=" + m_seriesCliffhanger + " WHERE seriesID=" + m_seriesID + ";"); +*/ } catch(SQLException e) { e.printStackTrace(); + return false; } finally { diff --git a/src/main/java/at/windesign/application/serie/serieDataSource.java b/src/main/java/at/windesign/application/serie/serieDataSource.java index 53ee734..522a59a 100644 --- a/src/main/java/at/windesign/application/serie/serieDataSource.java +++ b/src/main/java/at/windesign/application/serie/serieDataSource.java @@ -55,6 +55,12 @@ public enum serieDataSource return stmt; } + public Connection getConnection() throws SQLException + { + conn = DriverManager.getConnection(url, user, pwd); + return conn; + } + public void close() { try diff --git a/target/classes/at/windesign/application/serie/serieData.class b/target/classes/at/windesign/application/serie/serieData.class new file mode 100644 index 0000000000000000000000000000000000000000..caf334cd723ff98fa4a7bbfd071bafb63778be55 GIT binary patch literal 13545 zcmbuG34Gkeb;sZQC2LpGTF1(VY|HlA# zU0F7Pgd>3@KmsH{fP|2%G=xG9+aS_FOWK5_N!pM$C!rw+G^7WRLK>hUzc(}gV`pdk zp`X|vzj^cibA10Z^Pl%-_Tz8;@zKYKXubGY4fTno)nb`ArJBwY%UP^ov64kAi&ZSz zSgd9dXR(IGS{Cgr*0DI1#c3=~XR)5e1{Pv zi9@yGut>8QXOUr%Wii3xvXIDyL|#zM`2Kt{mrCY)y9I%lBCer7F`g6@?K_k>l4wsS zGGpxngQ3k~u*OJVP!!Iyq8EWiwsb@rgu6Ht&t`;IRob+2j@;$`+EHN0K?&k-&s_)ci#9 z1>Sf!N*+lirvgknQaNw@yiU3>rh$3IOrXk4x6gBunH(6rH|X8fy`9&B2el)YOb#dV z$z5#q#@4m6(W^T+r0RN;GB~ss?^0A|ppYm`Vu-ym-Px&3I-3{`ylr20B$3{eC>#uQ zxHp;4rYCtI18iOC)PVyBF*iKs;v$KXRCCV#;Js$6RfLM^_JM2;OK?|W0&A&yAT^c& z3BUVhTbWIPh2NVgB+*5O#k2)&)sF8UPi54yQn|#@KrYWDy_pmy0VQQ_PcA#==en~Q zP&lI)m34iILiT7- zD!Z`Y`Rhq#lKqq8!^zxWVmJ*;RF3KpRxIbWv9fS5g>Kv4a<}}tW68pRw`ZVN>>9QC zpsljCmr=t0&N9=hqqd4!t*Ziq>1`}Cy=GLg*{!9exaAtvvM%JcUA!I5_8Kd;M^)uw zW24tdVDs`C@NIRfvTulb6$4uwy3j)uFxIQ80gK;hU@P>h`ZnFEZ}2+}Y?zJim=g2lWyb9XOkkh)nFB`69I!NdU6=X;um6%qSY_-pO6>ED)`C7{p3z+J*_>c|!3X}x z1U-*GGC`{znV_lO<8gfyMnEr8*Ah{EyV(}Mip`6)`1Ng%@sd0+*y>6hpuZg`59ojQ zDzCq9m6_#X6!}MNJn%iUJcy!)m95>psIlajq3DsnL;_CLUm^jcULpaDzpQ=d>o05H zrkAyE@Fy?mqW#GWTJ_`wP5yW(XYP-e%Iopc554iyuHG9Wm3IrvIH1le>;?i}X>GvP z&SR)^{xWg{1%Da27QKwztUrHl&>%wzf98tJddiAyfzi{!2!|Ab(F<7J(F>S-W;a0b znO%!!cC-FO`yq@!(Y{Sjv~TeH;sAsL9ltNvqWf~QeqVu5$eRVJAA_((mw&-DH>qUWYvgi?ynvT_ZR1mGqb)8vB zvo`UTskp1E*4|zjI92845k*i) zcP?l~UX4oxBely9HnEg~+3G+XDogr-s4VGctH*tvOUhwaK`NIFWUFP*`jJ~w1+ZR8 zl~pD6Be$dqZoQH!t4b=}-+=}S$2d^MtEzM)o6aJxp9z?e!wB2uNQVUC=*oQJ2ufDw z3**SmQb8hzGm?8enJFMn6}*fBkIwJwIXaS@;9we0D@U>!93}Mmfa`X_kd#L?Ja#7V z>9+W__vCO?#kth)AS5Och^jDrM~cDK2g7JFF?uoz@<0S!fHA8T)8aUmDJh{eU6eLIVHaP|_`_OrN@MS_MSG{O%?Ih*8G z4zM=H;vkC@i$g39vq-ZTXOUr%Wii3xG8Q??N2oxPA#pS!j)}`d;++w3g}5?8N4b+@ zEG}p9P8L^CzaYX;n->M!CsXOsWG*7!CEkrmI*`p2*2t;d7)uorIM;N+q**T}RB#?~s24&9{{8LP?ahKjdcCt?P)0_lWljTGHLq*E84?+p%}|u9$R%v3)yx z_Vy?p*Cw0!1+T+$>j;VKBjSDH{Som2x(Z864v1Wpfu$D_H_%lPaih3Nh-Z5H2YU7n z#(Mh)ck8xWmACEfj_VHij1!M#0~amv7{3wUukaB$9vgA5R^qXP`bH%lOS=~-tm?2l z9?R%U5@=q~%(}i3ar^OZLR>?_y8wyDCcJwO*7>?aVN8?;dhu8R8)Q6o#J|^28QB3E z*EbmP*a7e20`CKK`Bqc$*cjhV#AB)P(c#o6ifOMt9?Y;_IHC#^j_~CPTX@%+%*SJ+ z`g#H5;NB|4V>$0K0Uh~w2&-a4oqZSd48&Tu#{cZUtFRtE7!e;5H;2S65pk>da727W z+!hhHi#sCXqvFnpxJ%rP1w$_jYJIE6etazcceZ=@5H_qLlR8S{yYWj69?WH@)E&Uu zx7v-`)^LQ!3LWh1@9IG;?YF4!L*So|B+`?~-3J8C!I3|3R(EeqT##bNio1%5NpPPP zJl?C93Er`2OR!ySg0IBYNHT*9q8^r(RB(cMKuT|ng zG1>?tNQ@10E@ZX?~n1MnZl9F6uw-haOX0GN0%v_x=i8MWeV3WQ+Rio z!okZFK3=A9^D>2}mnodROyTck3YRZaczv0|@yisxU#4*X@aadSK810C=a)L1zf9r( zWr`3$ricQNMmfqsI*7Umeju+#ZVT!oM4(99!z9|iM9vAS_#*NST?1K16_A^#lFp`D z+DzASNmZWSL+?dS&~6{fI8{CXMKw|-jh%tYGrY?0qxb8|4C0_pRoj9S zROutsNb3%oLFdR8=BQG-1(c@`;PtrU8|X&eRuE*y7YvZ|tROeh2TMR!pP(5g$R2>4 zUk2num?s9g*$Pr+f?Qw)xy24rWrAD;kc-QJ+^Ru7Yy}CKAp5N#AF+dkOpsB4B+G!@ zra^AEf`m49H(-ko&9~+DvmpyW0x#m-Y>9rU`N{Kt5RpkZWsW+$QAuGs(_Nl2iL5>6DL>Z8W^wfO8 z3esSLOj|*|Xa{L9K^_Ch<7Gg;q(Q!Hotj2-YQAO#Ic}etMib;ofPAwI$O%0)C#@qA zHAmz-R*;A7BN8=1o&w1C%YZzhM`YRx(qw}C&4eZ>m$_x8m)#{_u|Ag`AJ`MO@L->^>2TytvPw1PZo zpPIP_h^V9)g54fbX{h*3JvHC5df#RPL{wWr{=x2jn@x~9fYg@(`L_1H-?5I!JQJkJ z3i4h1h|DuVngKGe49Gv~5&0)8$b1uIp%vtNc98id$WnkTD+BVB2Kl}fWPu5?(hBm= zc8~=oNE{$*%7FZf2Kj*%q{Rd|)e7=MJ4lNOat1)oECcc*4f10v$U+mO!wT{fJIF#4 zWE()#5v}yA`KbnZ+6uDB1nIGY{LBur$OJhTAnJ%#3i6Bw`By8*ViRPy73Al3ki{m* zAVAa+trX;04e|>sNX!Je&nD-H5%E65TPWW);coE>C|333o1 z>WEef^1KH5H!H|e6J*>9@*6wIQWGQx5OqW=1$jY({MHJx%mkUTg8aK3WSI$a1whmh ztrX-xG{}EiK~6D2uC{{wmmTC36XZI8s3Te_$cq}}C3@M5M>s4{7d6X`FaSS+__sX% zMa}Q%zjfuJi<;#o$jtyzN3>FqS8#vD9luJy$0ZKmJ_RpoR+uAln*~H&di@U?`2)SC z8`*%@y~`H)vD!yc?@#dQ-+jXbY3jFWH-g zfL1|5IM!fol{rhFu?&t774~3ll?nGb49fkog_1!*{3Nf_5JTDS_1a932dyAgc91p` z}N+$WvuN8Z=0wySHKGIr5Zpd30?bzL4d2(%i35`-KnF zy45G?)aYptC+T#4v?RLz5!zrpKSMu{uHA(q@q4H`dgiYCXg)HlIdc{=Gm%+y4^>6a z-W6y%u4}I5?L&R|8*y(<;s;bAend6m$FxZNl-k78v_(8ao#N-TQ#^~`#eYE;h+oph z;#V{*eoaa7JRKFkk?$K*Z=yfg3Yrp8xrKJp*`f)WBW9tmMw;;kEeeU*i{GGnB#~-- zy>r|>wgQ*fI1!Pv1k@ELX=C4N4IS+OF^rWbX;XBwqMxQM4((GVx86q!`!Hyo6`Qr8 z<$->!t$AE2+xu2WyQZldzm3EzVXB;_o(hWd`EtfI?SNVZwMwZWs3E0>p@x;(z$L1+ z&P8gb=^RvS;4-z^UJX5>^&03iRX+{2(Cf4wfnKl6@Dw#@y$*V#E>jOZs_hNXo3!2t zeU{dv&}UE6&Pp&eL7$`R&VoKymzfQ{S#!>TK2O`{LZ7d7-k=v~eIE1{t@B!1sPzTV z7iql(`eLmwgdWrSBIrxBz8Lyat;e7*(>hP?DOz6&efc!?VhpG0TtQoq$HZeg7n{?$ zk>`w`&8vJIKa_;9n%ZbRZIfv?ir4WUbbd!0#4A{_uTlqW+mUu7?ZdNv@g@zyWA1mB(;;UCO*$*-DyNlh za8}XnP8)s7SxpZ*aeCBQLtl5+(o;@5J>#sS7o1b+Rp&I}IH!v`XT6y3Y!EA)GsJ1m znPQ7`mN?frTMRiH#jw*MGR`J(xwBbZ=WG$TI$Om(&Ngws(zk zi07Og;$>$i-fs$C{3zaV!l`s}PT0xgU8kHzq)kX$@NBW8LV_*$(I-qx#az)0=e&XH z#XK<|+K~9PSRh)U?Z?me3&kRGoJ#L0K1KCK%ddA1RTVX^GH@B*v;mL2IF2ep-Iyzt)Paq>Z6rU}A9M z$l-YmCK@y`koW*P^97vh3&_l{Zy7i^Ywff4Ui+M^_r0gR2jBl4e*i zK1t>j8xFb6sdTYX*{@{wUhii9H?sDp zdl=cKV&6r^FF!MkkueN1WVlUMQ8nc3kH~=Y-2RTtn3~}(FBCh5mp11OchwCIUfH_$ z_o#It<~Zu;ZPzbn`5rDQ$znqO?Fc7E60t;gqUS5|FQ}2vsE?w$qy>FpxI;`<-;m0j zJ0!<}j!tJsRMebZ)A_zBlq4G`&n1a4$uxZwxkg}5^r$mo|L8Y^_r*CbN8wf#Nl%`* MC0CaROm=wc3}5g^zyJUM delta 350 zcmW-d%Ps?96o9{(j{ei>FOfD)ir7$z4PDU0B`#H}rRq}my44s}q$L^=8!Icze_`bT z*ofF!cmNBpVCfCmi5ZLYopW-|mzNZw@5WZq=KVv$0SC6+zpOj^CYe|N=X)nbix!G=YYyr8IIX7h!m z=WA0pHU(SiR?n(m{lT}*j(YSZdUqu~#3k)?NCp`alqACpXhe=m7p3_5*-5;xkej@; zozr@yR+a3jkTD}|$v%$YKvGr}Bj!JpR5((~_zpFeoqDQPtva@6Xv}u0`-Yf$YWULp zFL(Y=O?{Z@<`D#AG?662lzZ+3&7^4~qq+m#+K4I!uG&Z4pC#N7=(ZqgpwsWRx+^CC G^Y|a3=Rr^a