From 7ab756bea849ade81a053a080f257ea0c4e81294 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marcus=20Wikstr=C3=B6m?= Date: Tue, 9 Feb 2010 15:24:57 +0200 Subject: [PATCH] added a ton of comics --- build_setup.py | 6 +- debian/changelog | 6 +- debian/comic-widget/DEBIAN/control | 89 ++ debian/comic-widget/DEBIAN/md5sums | 16 + .../opt/comic-widget/images/down0-48x48.png | Bin 0 -> 363 bytes .../opt/comic-widget/images/down1-48x48.png | Bin 0 -> 2214 bytes .../opt/comic-widget/images/icon2-64x64.png | Bin 0 -> 7089 bytes .../opt/comic-widget/images/next0-48x48.png | Bin 0 -> 373 bytes .../opt/comic-widget/images/next1-48x48.png | Bin 0 -> 2261 bytes .../opt/comic-widget/images/prev0-48x48.png | Bin 0 -> 379 bytes .../opt/comic-widget/images/prev1-48x48.png | Bin 0 -> 2273 bytes .../opt/comic-widget/images/switch0-48x48.png | Bin 0 -> 490 bytes .../opt/comic-widget/images/switch1-48x48.png | Bin 0 -> 2377 bytes .../opt/comic-widget/images/up0-48x48.png | Bin 0 -> 356 bytes .../opt/comic-widget/images/up1-48x48.png | Bin 0 -> 2199 bytes .../usr/lib/hildon-desktop/comicwidget.py | 1546 ++++++++++++++++++++ .../applications/hildon-home/comicwidget.desktop | 7 + .../usr/share/doc/comic-widget/changelog.Debian.gz | Bin 0 -> 157 bytes .../usr/share/doc/comic-widget/changelog.gz | Bin 0 -> 150 bytes .../usr/share/doc/comic-widget/copyright | 35 + debian/copyright | 2 +- debian/dirs | 1 - debian/files | 1 + debian/rules | 12 - debs/comic-widget_0.4.2-1_all.deb | Bin 0 -> 41418 bytes extras-devel/comic-widget_0.4.2-1.changes | 17 + extras-devel/comic-widget_0.4.2-1.dsc | 10 + extras-devel/comic-widget_0.4.2-1.tar.gz | Bin 0 -> 41952 bytes src/opt/comic-widget/db/comicdb.cyanide.csv | 21 - src/opt/comic-widget/db/comicdb.dilbert.csv | 400 ----- src/opt/comic-widget/db/comicdb.phd.csv | 52 - src/opt/comic-widget/db/comicdb.sinfest.csv | 641 -------- src/opt/comic-widget/db/comicdb.wulff.csv | 12 - src/opt/comic-widget/db/comicdb.xkcd.csv | 35 - src/usr/lib/hildon-desktop/comicwidget.py | 128 +- 35 files changed, 1840 insertions(+), 1197 deletions(-) create mode 100644 build-stamp create mode 100644 configure-stamp create mode 100644 debian/comic-widget/DEBIAN/control create mode 100644 debian/comic-widget/DEBIAN/md5sums create mode 100644 debian/comic-widget/opt/comic-widget/images/down0-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/down1-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/icon2-64x64.png create mode 100644 debian/comic-widget/opt/comic-widget/images/next0-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/next1-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/prev0-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/prev1-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/switch0-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/switch1-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/up0-48x48.png create mode 100644 debian/comic-widget/opt/comic-widget/images/up1-48x48.png create mode 100644 debian/comic-widget/usr/lib/hildon-desktop/comicwidget.py create mode 100644 debian/comic-widget/usr/share/applications/hildon-home/comicwidget.desktop create mode 100644 debian/comic-widget/usr/share/doc/comic-widget/changelog.Debian.gz create mode 100644 debian/comic-widget/usr/share/doc/comic-widget/changelog.gz create mode 100644 debian/comic-widget/usr/share/doc/comic-widget/copyright create mode 100644 debian/files create mode 100644 debs/comic-widget_0.4.2-1_all.deb create mode 100644 extras-devel/comic-widget_0.4.2-1.changes create mode 100644 extras-devel/comic-widget_0.4.2-1.dsc create mode 100644 extras-devel/comic-widget_0.4.2-1.tar.gz delete mode 100644 src/opt/comic-widget/db/comicdb.cyanide.csv delete mode 100644 src/opt/comic-widget/db/comicdb.dilbert.csv delete mode 100644 src/opt/comic-widget/db/comicdb.phd.csv delete mode 100644 src/opt/comic-widget/db/comicdb.sinfest.csv delete mode 100644 src/opt/comic-widget/db/comicdb.wulff.csv delete mode 100644 src/opt/comic-widget/db/comicdb.xkcd.csv diff --git a/build-stamp b/build-stamp new file mode 100644 index 0000000..e69de29 diff --git a/build_setup.py b/build_setup.py index 08de0cb..54b22f0 100644 --- a/build_setup.py +++ b/build_setup.py @@ -36,10 +36,10 @@ if __name__ == "__main__": # chmod +x /usr/bin/mclock.py""" #Set here your pre install script # p.prer 1000 emove="""#!/bin/sh # chmod +x /usr/bin/mclock.py""" #Set here your pre remove script - version = "0.4.1" #Version of your software, e.g. "1.2.0" or "0.8.2" - build = "2" #Build number, e.g. "1" for the first build of this version of your software. Increment for later re-builds of the same version of your software. + version = "0.4.2" #Version of your software, e.g. "1.2.0" or "0.8.2" + build = "1" #Build number, e.g. "1" for the first build of this version of your software. Increment for later re-builds of the same version of your software. #Text with changelog information to be displayed in the package "Details" tab of the Maemo Application Manager - changeloginformation = "over 100 comics" + changeloginformation = "now over 150 comics" dir_name = "src" #Name of the subfolder containing your package source files (e.g. usr\share\icons\hicolor\scalable\myappicon.svg, usr\lib\myapp\somelib.py). We suggest to leave it named src in all projects and will refer to that in the wiki article on maemo.org #Thanks to DareTheHair from talk.maemo.org for this snippet that recursively builds the file list for root, dirs, files in os.walk(dir_name): diff --git a/configure-stamp b/configure-stamp new file mode 100644 index 0000000..e69de29 diff --git a/debian/changelog b/debian/changelog index 7b3a8f0..f5421c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,5 @@ -comic-widget (0.4.1-2) stable; urgency=low +comic-widget (0.4.2-1) stable; urgency=low - over 100 comics + now over 150 comics - -- Marcus Wikstrom Mon, 08 Feb 2010 12:54:33 +0000 + -- Marcus Wikstrom Tue, 09 Feb 2010 14:34:24 +0000 diff --git a/debian/comic-widget/DEBIAN/control b/debian/comic-widget/DEBIAN/control new file mode 100644 index 0000000..199e37e --- /dev/null +++ b/debian/comic-widget/DEBIAN/control @@ -0,0 +1,89 @@ +Package: comic-widget +Version: 0.4.2-1 +Section: user/desktop +Priority: extra +Architecture: all +Depends: python2.5, python-osso, python-gtk2, python-hildon, python-hildondesktop, python2.5-cairo, hildon-desktop-python-loader +Installed-Size: 188 +Maintainer: Marcus Wikstrom +Description: A widget that displays comics taken from the web. +Bugtracker: XSBC-Bugtracker: http://bugs.maemo.org +Maemo-Icon-26: + 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 + n/y/2/wfjUewq/FSuIsAAAAASUVORK5CYII= diff --git a/debian/comic-widget/DEBIAN/md5sums b/debian/comic-widget/DEBIAN/md5sums new file mode 100644 index 0000000..d0e47ab --- /dev/null +++ b/debian/comic-widget/DEBIAN/md5sums @@ -0,0 +1,16 @@ +c28d59639f88131ef87f127b9e2cfc6e opt/comic-widget/images/down0-48x48.png +e004317e4394f6f2d48b540d4f7e84fd opt/comic-widget/images/next0-48x48.png +0adaa4f81bc84b3c6900f127beb44230 opt/comic-widget/images/switch1-48x48.png +f6b005dadeccf8db681b2d03ca4d7b3a opt/comic-widget/images/switch0-48x48.png +8a54a3d037c715f5d54749878f31e078 opt/comic-widget/images/next1-48x48.png +6e48bf459aeaa31ff060ab123b00275f opt/comic-widget/images/icon2-64x64.png +633c091fd88a0bdcf3631922b8612e77 opt/comic-widget/images/prev0-48x48.png +fac68439af81c0bdbf0be4d191b87356 opt/comic-widget/images/prev1-48x48.png +e41c46ecd717669b42714da7f4302787 opt/comic-widget/images/up1-48x48.png +539495adcf9f6642984e58652f66f4d5 opt/comic-widget/images/down1-48x48.png +31d4efbb16e33e2f9a0c3d14618ea491 opt/comic-widget/images/up0-48x48.png +753fd2919b3f976a83848fe839b4f1eb usr/share/doc/comic-widget/copyright +3800c03fdc0bc323c60c15f91a4aefe5 usr/share/doc/comic-widget/changelog.gz +d9373f3997a760beebe30ba6580ce390 usr/share/doc/comic-widget/changelog.Debian.gz +ba851eb99ca1eac1245319e4393cde62 usr/share/applications/hildon-home/comicwidget.desktop +cff7c871cee332fcf03102ffd8f6c30c usr/lib/hildon-desktop/comicwidget.py diff --git a/debian/comic-widget/opt/comic-widget/images/down0-48x48.png b/debian/comic-widget/opt/comic-widget/images/down0-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..e9e4e2b6b195b985660a6564d88e505e64f6f6aa GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Y)RhkEMBZ?9Q%F*ypjUVN=Ca7ApDt?k%0nCc?>88J_;LNm8ixKIOp|*$)_lCl zC|Ah1?7-$PKPE8rTQD0x2ra6KXmFQl{3$M&_}H1*<`ILAS1&*RhYs5fI)?iuGW6eI rT)phL`MERK(zaccpWOihC)o4%SnHN;dRy56^bv!ntDnm{r-UW|zh8hA literal 0 HcmV?d00001 diff --git a/debian/comic-widget/opt/comic-widget/images/down1-48x48.png b/debian/comic-widget/opt/comic-widget/images/down1-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..c81bdf3fd8eecffc6a0a8bc598cba2f219762217 GIT binary patch literal 2214 zcmV;X2wC@uP)Px#24YJ`L;wH)aR9X!d;S{$000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igH0 z3m7xe{3W#j000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000O9NklL(2L_z|={0b3Q?gJ8uii+Yw z$V><(8zUi^7b2ONWGaiU>OR$9-$~SLyzsc+z4!aNtE;O{ojU!9@BiBIfBZU`v0pg= z%6q;X0M{?_MZkS?|9VY096bEsaV6vU9QrtB+$X=E%xpg80F79;gvIPMLoJ;Ks-Z3h zkTI^uh+z;Na88SIS$(WJ`k3Dx&OXbj839;XZhFPTa+c-fuqIPsS&UA&i>gNa=c5q;G-S+g2GVbEB;)m`)QJ2z38cW_1+<9?54V*}jl(p|=zF32TWohAb3 z)EJ|&&*qG61wh97-G`Sfw!}wR_%JMD5boa7rav&kJHyDvy^>;1^>NHLqrgfS#d4WB zFkBE9q{Lo)rY3I8Lx9fl7-I3@oEW=z-Q#8VkG3rHmXHKa%}hS~2$%lZy7%>2CqOSr zSbjqHxS{Xn_(CqbgL*P%C}4)Q0EJ|oJ7DolL7^5S2wY~|s;4q!umIxz#Us*H4A*Eh`P3tL3>yz*{QEF~BS}e(5-y<20?&{PIovnUFd@{J z5K`~JW}=BlT|C)0!_M3jp7OqQ(-;@1PN>vmsOe&BlAy%g+<{m*u}Ksk=s}+z7y+N# z>^{Md-D5CG9xB4bVrLbb3GAct#h4~LBj}MK)XXCEV!O?V6=s2X8w)x?G8yw53ht51OL;*;ABEG3^0=162|FR zAAD$#xf#YpWuJ4y1@p6_hS%mgxq(uJO|jD^zp;Wql_Va=VkvYz2L^unfq3l@-Lo*c z5I$Q8vzMYI6j9)`&QchsjBu!w^2^DLa9E&+4d_e8H+iC@h~$FFm1A-sH4@CkV}Vev z&`l{=s8N6dveTlInUx}gQvNy7VcTM1NGE)+TGP*_C;9OrCk zD2bTKI=yExZ|6#noDwi7USTAdz`g{GgP_oa5^iDK2OqL}JDL69gx?fAaDT{Qd2=kOCHzKJX(DX3bz`utqc^%nYsNyP+BT=SGp!x8Fbg9MjdMY!gBW2n zT;Dt4hcDg4hY$WY(WWC?INgT9xjNaA97q>tEq92x zbN>QA`pski^&)=uyPLT6?xi>=Yzc!K=jU{w8CRR)fh9~@@dzc%=8l*d-nn~$r(gaO zKKc(A@$4VIh}(BAW&CRF3}H2vW1-`|T&>aO0BsInl<;9L%F3i~-@U+(UwIr4KBYwV z+#esq?K_tv=G$Vp$!=8V)x}0c^sq3Kn9ukRgZ1GS`7st4&;09y3q14tPhQ0HfBG_R zUtfv0bN4fO^Scb!ur0&8H31re-}%LB2j!>W=adaPtT_hfFZxbY=dV3_A5VSzt*!Ad z{P}UbdVN{h&EW1rE?9*zYNJkRd>r7DzkGdZVN^kzgL4$BstWnq{y6aU&)>rjzEv0T z^S^urx2~^d(R5+fYTu!EE*xe`Ir;T>fAx>ae~>tWNzo#;3_08*)WT&0^#CuyM=#Uh1w~0`bq$O5Dm)h&IAq*uMG_Ljmx0ou5v4!R)m0Z+OkN6TnICgiI37Gt+}_@Onz@GcFJ0RlS?uGHgkSFN)jlfL3eEs@e5Q?1GzHCc1J( z7Ww=5j2Ggkr@*>gmILzDJV{m8QyCWL)|2`|oO~nH?qJgnd$)(!bHDS<`5Hb!Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igJx z7A_k$aS;Fj000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000{dNklBQ< z#!c4hI8W>9-S=L-d(YnIzxV#{;lb;8jE|2qK0eOBrpMQR@%q*)ul3=d|JDEE&;Iyx zt%?`~wgYQ`;Ef`zF^2v7_v^uha;bOcrIWw2d((mRv#(Qe} zF~*>(;+(@;`-V7Fm0GRF)btEwI||wl7j~iaOIU(($&>Pp->>7&%a^dzh}=L zdi(n58Qh3fs8!1VqRxSWs#_Zv^P?~R;JJ_e(T6X&;|q7~;qy0K-j0BwO#$D2>Ue%+ zliY1%wp2=}jS(9|ad15#OiWC$X3ZM%`8=xnhEc%S*k1BILloBx)7{(0nt@?DItqw@ zss&V>jX~YlzwrI1-}3nzF6X~}>%pc1ZvEvr*PlO1v73)!`L~r4XpGpprMqv4;hmRL z?Cxdn-n}d?F8c5xZwxnPCCH%RBYom47i_KuCAs{f)0Nbem* z5qtOSA$HKS@gi_BSO+*n9f1*g`UlAb22eqq3Y_L9UZrM<+ONu`+z|y9qJ{#`f;z$dMz6$iJ8pQuICWzys`mX&=Lv{2Rms;GEwa zr>M7m!XTilcK}oorxFB)z?eV&lP`b28^C<;ON0bBaBtnUpF?*YkX zGZczl$pt`!LcUOZA1Rx=^V#tWG9iB;5#f#=l}p!mvVNe*+D@e_Z&HXvH_Gg$~iLj~+bY{@n3eGvA*cux}hadXkcODdg2M>&YsOq?LLzZk$ z=;-S1p|7tGRS;2T%8&~n6A0>JqH3A3u`wQbyyO*h{(*$9L(W`DC+cUywpW)5x^JGK8DT$BrCQy$Zwb;>_HJm(o zlEsw@dyX&h%B$129os+l$q-;$2ZL!uuvY2m=}8vg(}jToi84HO$Y;8^=9+7mnwsYD z;ls?%%`r1G!_gy0c<{jo>FDU7zrUYcE=QqIptrZTP1rCDS+iyh#ux?%2N@a~Is+*p z!k#^QIC0_xv$L~IPEH~s7-PtGbg}7*kB}|)VI<~);UZzs6h6hes*(wW&={<>1VKP9 zgbM~k#!qTbzR(?}L?~E&^VRTeU7v^$h9U3#z>S0lr&*agL1kfz+VUJWs$!!WQ!}&J zsE&U|J8Z$>Fq#ihA-ZtYO#MT+nU%Bs^DE_$zH!m4Up{kF8f;wAE3{mh>{%>MoR8wzN>@7Aqbm@ma_eDiw|6A)zc zg!xWXy-6q#2so#xG!d3w#|z(7YD%4*a}0Hb8KV5R3^> z5f3NLlF4;~C?JR!6!mu!SbM=0pwKM3`DVO6TE$`UO_1etW7p3`P}?EF}M|CMg&PsMEn8-LBzi&seaXy6Tu>C z(YS`jb^1qlQ5@L7FaGI~HixLHTzKIwYAXw%4uc|zqq<-?$HnXOSXH9fow2smX{Ni~ zD)4GE`;`jNbG&Nh0A6^9pope|DcD@>=sRGj1Dg4h`5GgyqFzX$a6lTgXmB?XI z;Y=!^qDDOXk`@;uE#5{GTM!}4W*NNT?c8(EJ=}QXjT8z6thE#h1-5Kh%fj?4^sL>A z(-^J$Yz{6FT8Wfx%Z-Ry+ROXh@*(g;tX>WFH>2bW9jq+Hm;-U z$aVJ6w|*;q>vz!EGe{=i(b#RAOKqZo2ER*!7{k*){u*&*g%5rB!(4RHMFc^>*w|k7 z9-e0OlDDHSMiq)#Lu6eOq1rT46=CY|b4(uC%i2q><&~G7;=HRr#N^Qfy!`l&*>=Ts zEH5qI`|8Az>%-MCPyk~9n`~SVBC1rE=Q(}kc_#KfMi6FkHl|*yA|}9yfDwX>r^9i* z%G8k;ICbzDf=rgqzG3>-ZKZ2qJ-s8N-YKOf0Ew>0dTC;trym%=n_m2P_L}8Jo_rACXTYSw8;EJcOWL<$m91g zJ$Zs+-=L@OfkA@6ui)ng#&2;g2pC?s8J8ISU1*ia7Y#51F4lMmFC;KA)#lDiP)i zT=v1=L!E8&OjiXu!Vk7PUUtwh!%AVp&ux{MLZ z^E15g;2l(!=0J=WC>2Hwp;+Ftb%6~%HC|cD^7wc+v*ircSTG`}f)OR3an!BBI)ggP z^syJ|>KkV5_Dh=dQnV$)C}AdG_xo<<(3AHuJ$`_4xq>=Jt+dFC58lb{_x(0;R0kCl zN3FcV{>ScNdG-`Rka>;l)UPY9mWY>TC{?PSv;2q8{o!Q-*IBCuHMm-deGlG2wX}qY zcRdczwVlG+VvTI5EY|}@duw!MV=fvlv97C5A!C`ZWT;zVU00p=@0eq_tIk{{q!I-n zN>nW~y!~Q-Z4pf3C7b_1ZOobt+ZfoigRcIyWIH;saYU`O#L(soFhPg_Gbi@*!b5kH zbBhcXm2zyja>F8lQRXTk)(M%wqo5d+=?Eh>^iwV>OSgw4bkd3s3r>{h?!O%y z)iEaUL;|5V7txWiyt0_(edo;)0C&DPz)D>xW+8Hhp<@8r#=Y z80w6;Yu_N%*sw4)PHlOf&YporD3g@wH3F7`b95An_~C zYv9IFaAGu(L{z8NiC}b@c4VT$JT_BKFhzYsSal@`@idjoFHh|ERi@9m{X)YKl zQOJc%zWfY9Cd3%U^BYBsU__IHR5U&uEAizK% zLR_!#%8{43a?=Xgz%^t4(daB)QL{<`8ppUeYUj#E+16J{e6(`mV3};_5-teu zJ8wSG^qC&_Y>N^RtP|FC*O+~E0+VP+M7$X!h-e@HNzl>EF)B-Q*y<8vlSLjK@8I zu_fb5s8+oK#DGz6Yo-MTsxa6Y;Z)9%9w*R6d38C<*kqA`Ld;t?EH^n0P>KxSdwz(k zM;EzjSE>DE4mBSkYn>5%vZx^ zdYnA+q2uGbPxF>_E7-(gt<*!x3)85JTf!ZPkt7^~1d=#FZx$v|cs5Y3+d0d7x6M(F zy$Ul%dGp8$R)vvby>TDGhgA_}_i%}PsKn0up+-Hx0FGwCVYRbtBdW?-LJn+SQ=uzo zSzD~1fs()|!^Nm=HA`YQ|-BNoeNDTt&n$mOyWie1!KnxQau4c~OGG7+jm7$_UM zYf0fmR_Re_QfA;)pZf32=gQcOC-XBbf?mvc;) zGHgBn5^%ObdyOb!w5_0Ol6rw80aQ@3xen&yE=2T<9smu-0#*g<&h%qvD8M8N2j8{X ze8HQr2_bU8OH+k5O}EzFTeIX})gx8)q4kO5dA9DljE>G?BOOjN;s)VqVRwdRx^94h zp<#~Kw%n7Z5zn)HvczSH6R;o_=53Q`kS<$<#{Ldv|T`9J$2q(%oLY z^Xcm}!oN7x!7J5%F1q|3I2*U@yr;T8JxeAe zkR~oh85~*1rEh;PaovZisx{oXZ;%(KJ3MJ=YeBWJhDLR#c{mmBKfH$hr*mxDx`Xp} zUD~!IqN(!Jbk&=LNo=3A`Qo?M@3?bZeC2z{zWG0K*UOvPd$N<*HaWvb6Lp3wP`IqeG{M}bjuT`3%PH2X~l<&9J3RRos_O!J|^R*a*F#%6J z@-rrnA7Vp(icMY1^cJ8qYZJfYdxR6yHIB>(&z{Uvtw;Cb-1Q9wXrh3qZdt!!GqIIM z6S7{bG4<*R4()q}6Ne8F#WrDh35<*((ty}C9gcIBp1wiWZQ04j&D-c*Ge9<<$640` zM_E-w)n=$|X`X0W`c+*O%6v@_JcVCgT3~5$p5?_wj=%62QE94;W1OC^vbbDj!)Ws9+l*8Mb1D&v(sZK7P}}Gi|D$I zoWE-~%Zu~O&rPu~J53x%^e!*6W?+OMn_+fln)&&Kb|Tao5q$g0d7E;chPp%<>qob? zH6yp2cOfFCfoWCsvjK6vkwrF><}~%yX1d$Lvs;a!?Yr$n1X}|TAuxUc#||Il)WmUSr%w^peG-((Wa#T3qO;h|;K+K`uHQr$gx(L(4&9~=wGpLwV4>D4cm14wS|gGQdYCh^4J4E;l#1Sh{+HXH{oK3vk^|5t;MP# zKt-7bT$=B#EHBa3-Gg&BsmViSrOd$>pJVKok02(4WO~s|Z)?zRkQUUT(E{c25}K1v6m*~9olHFYGbFR;R*e?jle*Aq-o;XgJ zE8=o%aZ3x0RzJvMty+#lfP!$SqQo|qjNrug-L&EKYLzMv{N!#Mm9cXR{HQ9FU zw;&M#!afMP$mZ%CKQ=*m2H8vtFwB_pP(OpC~!Vt>yGgiCe$=KUhin4(c4D7O{RuUGl8X zp~*SP;opxvt+u{)Ahe{&;%A5qil}3Gagjs&U+}2PtwS-?YSjd&G0thEYM%ixk3Bt} z^6_ukBxIn<^5O!jjz=H5k7F>kRc703+&N*qVjs+A-vC^m}A z)l%ta0H(h`DSg?@pW7&Qs1wvut5vxF-g`Ls;&TL^F~XMegoZ$k zb4BvQOiWBNbNW;=)t&6HHg~(R&zX`<~s4$re$Q$JvO| z%93XV)@dBaL~-q}?!NtNO91Bl(NUf|aFk1StgA(F{ZnxqAqtZd<2>SQo%2A#pFYiZ_`Jo2v6Gf=A&1ah&uH{ghgujHX zrRVAh0>d+V9`|Ssia6(3T3qzAf!3;ZvBXjR(D(lSfBxl{{^8MPJz)3wTY2)?m#9^$ zw>umEG`11X?0G_+iz!vAlxhJ{z1FO*knXaN+YRB9!6?@d#EU0ZqMC)hCq3V4HEr^i>jpIj;u&^-Ca#^WX%U*bO z#MWvYMbvAR-~WeO|7P!Rec}(e>$bmb|JBw_cZ$Dcw(D!_T4`OIg27{%r~lg)vP zR8>Vpu+@l4rQ{cqQebs$HN&%&Af!QcJXhGW=VeCLZ=$o<*;XY_Zm(maW6%wrEfsB??4T9YfsarEs9;=lpSj`Y-{W7?<2P@7 bee3;VvC00000NkvXXu0mjf7aRcz literal 0 HcmV?d00001 diff --git a/debian/comic-widget/opt/comic-widget/images/next0-48x48.png b/debian/comic-widget/opt/comic-widget/images/next0-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..d24913a85916915a0595479b5c6ec102ba2a8519 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Y)RhkE-u zu(-RI4jpq!QsfAeJK%IgU+$pVZu!LL43o_{HH8#f1e`b&Sr}Gq?aNvl{d|_|gFBYW zT_>`;HJrAqF6#LEsUyiEHPglLu4!b8wu9J1o(V2Hm}j~32wpHrTEW2ZBHCkDW83`+ zcm8J|nDu1g)H9MF7&j<1#g#UMQCdrcwOK`rxZ7~LK@OrC!FY&_6!44$rjF6*2U Fng9iKf1dyV literal 0 HcmV?d00001 diff --git a/debian/comic-widget/opt/comic-widget/images/next1-48x48.png b/debian/comic-widget/opt/comic-widget/images/next1-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..792bd5df042cd370b3aeda9053a3ddc9fe45f7da GIT binary patch literal 2261 zcmV;`2rBo9P)Px#24YJ`L;wH)aR9X!d;S{$000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igH0 z2@4@WF2Ml+000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000OuNkl~LWlvoizj5jJMdZ(?@ z(xien;!R0X2~9(6l5@^@v9q%?^X~5?xBlR8&hOoQcW39%GtbN(;y3RozQ>0`;{crdPY-V2#RP<^7B(3ec5l~ftwE1e!rfgfI0AjD$ zz}ylbIadS190}sZ_c*^Yo}kR}*O`u3XZpSzCmQSbgKg5JYe5B|_C>-wV<>4{?K`^^ zT_dJXRt>0aY}Rx|D3kT*WK3@3rTODd=W6>~d#w-1{WvRFBJ1F(rm(b(8Pr>UdsNKln+HW#OV=dg^- z@fcfCC@P@B8Aox3hA4^F((c7ulfA>vki;%F7EFYMh7x@)&(RKUeeF7#FIBauUJaVo3`; zLi4%|+SeI>x}uWp(CcpiA5;>fBF+bOIyd4mu^#_UEth#6s# z*@Pn&Qe1Nxgp7yMXc>0#X3QUe)*7gRT10P9bjku^YmH&rJYhEW3}6YfSTuLx=oCMF zLUHYe?5Kza@)0=`LO`Ox^@Qmh7=10BCqSO7e9)6`n5$|a(dYc>wTJlK`{!`|mK0fR zTOAglLwL`)I?3a(fX-O6mZv{Ng??e|Q1c|I-S%ul>rS z&>%e|C6BX_0Ebh|M79%hztIFKsb~%b(PUrTU4HdjT>0n%{&i~$>puq7P&zB^!pg){ zBY%WOE~E!|2_tqCBE}F~y0gIeTzchO{Ndvt;EQjL4zeIE^;wn4nP`DuX^m(i_S4Y6 z_a8QajIl;g8blf>M3V+K_HhzI0i_+(>+fH_hZmkc@%2O)egv)cXMIf2gpejKn^1gg z{tzNGftx^D7et2O?1GCgz<$878Rw?WHa+We@uj^nInv(8i&XpkfCi zHaqy%#|0cOn82=~@plv3uxq=KZYgQB0~1Xi-9`BAi+Ay}r%zm97uMIA))1Cw9EzTY z?=ZSxmMC@VGNDC>6&{R%`g#55|Hai$euyt`pUXIr7%9tGDe!H;sRRb&OYM|Zky2Cp zeEPTt=sB%xwl-`MZz59uVdZKWg=($E)I3>7(iZ96TDDk)LG6~yI|(%AN+h5zf5`17r)fq+4lV!fH=sJ|Ix*nx&@F zj)RWw8b|xAGlMfMaH_!7zdeJ0-#hBUvsY_k#Zl@$)W%w=6DFgLMZFB}FfG84eKiKS zl|G8h5)Y+;Qw84m>_@oq|04(kQ6zTdY&wOrhSIhPuWYSJs4++JjHDT$2ROrNyyfFf zJz`~m69xYA`Lnon{|Jr4m@=&yn_yL8GON8&#>Oh7H?~;%p2Ys|13V>FDFU>XUpPJm z-u(NI@y&yy9v_LzoxzJjXi?eAjZkYx*|yf&uFmX5Gz+}dhC%Kt1K9${r@)*4cn-H8 zZWgdipo`L=iS0%$EfO;C7B$fenuE=z+)?l(>fQF)8L)zYPlN!ut zb*$q!OD)PZ99OFlj|k*BK5JrVA!}OtXGl$~bOn^I`i2w4Mwz4#ROCxVB!cK^YI#FY z`+Ac~STk34O{UVWjK1rCpJ9dAC*J|Y>NapiEx4o^von|EvGX(Z={X@Ha`lkZ6EcjZ z7tKvna@KbHG2b1;EbG)JTmkoMC*}n}+{Z5%B_B5o%EVjC(=DovrD|0JUwO@GM00000NkvXXu0mjfq$fGX literal 0 HcmV?d00001 diff --git a/debian/comic-widget/opt/comic-widget/images/prev0-48x48.png b/debian/comic-widget/opt/comic-widget/images/prev0-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..7d349a736e71e8f57086e75f0d2fd166aba4b565 GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Y)RhkEj#);q}3i4dTQQ~erh>u!FSz)^*fTMDcCb@ zU&Wh#@RRj}sGak41M2u=R-L}s^o0MwPS@S;a~<53otStI7clkxuVFgt)RNaNrg-Rj zY-z`o+E_`YwFRr3mYAivc6>Q?o-goI+DV?kZ!fYU%bY;&dgNZo%yP%Pc9+7NeLx>F Nc)I$ztaD0e0stWqhpGSo literal 0 HcmV?d00001 diff --git a/debian/comic-widget/opt/comic-widget/images/prev1-48x48.png b/debian/comic-widget/opt/comic-widget/images/prev1-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1b355e45c2b1eb601db8c40eb6addcc5d601c0 GIT binary patch literal 2273 zcmV<72p;!|P)Px#24YJ`L;wH)aR9X!d;S{$000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igH0 z3mFcOk67gZ000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000O)Nklap_87PP#g8m3W5mAJUoH!9jA{YpUAc{Z1 zS^h;JpeTwMjSmd!B>CuWLqC>-+O=!%I(55y>V@um?!D*KV?Wkjd(}t0_?qy4{5qMj zUkL!y`*;Ze*DuD4fV8=Py(R>KhacouX&lX=k7N3M>GzYF&8Gy=h}9)5%O1 z3sqVG>Ep^r^aW9XI9D{b)yJx%$NUn+KFg^Y0a)4Yu!?-;EZZ5wTAB*WX7co_8CYgw zJk!4!MgW**u(U3Zh`wu_tXT~oUr_Acs@GJ0=O!x09h?zHzhC~WJ3y*iR~m1cU~I|i zG#)soMjwrRHqqS*fb{)KVI^~yD8fRqFpoh<>S@y-i0~d^WN~jwF)`cNXPZ%AC5(K# z961ms@C!1FoJKQQ87u>eMrk~vDafG!I>BW1|pzCgnP zp;|&HTL(51Em>5_lHD10<{r0{`qnMSc!KHyl{pz|y4ac|C^0uZ;5#QaiK0LcYFZ!y zez;kh;Kyz;SV|sdgz?SJDmD{XQTcpKOP)#SF+!-BdFZ*jOtIJwsS1SYA>-arDn|EW<1-+*+i2$8sJ_xHcasY-y^kF@T1+ppIwx19m0c8&?;o!| zCfvG1ymy<`;=@zfV}=bW+QDdZ%gp?X@+~1HrQ9lRMaTbPVQ?~`83u?X|G>pPy!zEU z_}Z@?!R==5p-dw-j8ZCLJPfPgLqXt zXDN&`M!>OBre98GgkX*y7SJ~s-{grYMN%$Ux)LS_5{PS0+`~&>`Y%q2hnX3A-f;;Y zgE18>)F?m!*}0;VnUx}gQvNy7A@Cjbb1r+SYJK?0yZG@JZ=tOu(hRMQU0MlLWiI47 zDP&kh1sriUG)##&l65vg=Aa>`BrMY=W(NVd{^VW!=nFSt8vtpIX!pElh;`5z=VI-_ z^n+xj!pX>iLHZY1OkBRk&&n_}OEWz8)Ls1W^EbAO??ZS9O=h>oVhV8xWWG%A(5=K(a` z?-UmRK6>>wzW>7I162ew!pvr~<1nhiS($)UiD#koY>5jo&?)k2FHaoWdja^^)jRm! zXWxA&8Kij#?Yic}971BdITmIZ1quZvUltdf3Y^%#Y^}A2*Ky1YCRWCwwUOC`&Y?0n zn{CGKR$7NRBU`9HT_|D6#Ie|qOp{N(kgAI<}fXl*__$0wSZ*NOgl)C@E0 zxf63T?z7ha>kErP{n{6tA8t+sVuNE7?>>r`-gxjPhM~e(KE5?yu zY)~ypv}2e|4aZS$dh_xEul(j&eEU=XI_7{GOm+r;6v`fU5-V63aus(E^h`MN)BA}% zshNlHm&*&h`rB*x)+gUS)&X&&yK>P$&-4h(cazK|MPu-jQ0O+Dkkb=&c)%E&EzN#C=SmZ&aG;LoZbziA z;xFSYaDvUrtj*Dwk5d+yJg1yvqtJ!cs*+18bs|ZYP(ko{I#QKFi9PufcM1;#FUjJR z`SDSPIGmCEP344#N?Ee#w!lUNTinc~Lc}R1aoAKj;0QQ%<(L7Xc><+oI~{(&g18Q` zc4?ZsrR})r3LMAy)l%W3zS6nS;aqoz!RslpW?UA-hJLzO%djOSS`@c!tC?!cs@e5Q ztc07}cCK>8%0_q3s1Uz=3XH<^xg2We<)u_rK9ylHZat|l#7TP^eSkJQ_-+re=YHpz z^EEs`q1({hF(u>QOVjks%~RV-mhLQ1DUdl{2to{@d&90i z)qh+ZI`_z&;wcX9H`Sd&^Bcq;{Mpa_L(wTz{D9PsF58P1iLO&uMKPFeVA2cnG4jjl z7P_%~PWqICw>`~Y>KNpzv7fPEjqBf2$6fP_5%qrntOzt5{=P)>`)`{tNr~r%n61(B#10 zxhZjsf@1&A^6fD8f2z5#qx*PJ&eBz%=fr-JoZ*_6l3T|APx#24YJ`L;wH)aR9X!d;S{$000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igH0 z2@)<#k#&dw000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000Q2NklKy<`{F1G3UF_G4-Yeo3+-v-gkbCk7qpd8Jl?M zDaHTsYY}1nqyQM+{iOgnUho$I)s_3l&xAt3=?Aq>VI1v4&tuws;rB&E`cn!}h|wiX z%l2i&mG%Y3g=$y;Y2&JmXbYkO%Dy7sRvjyk-sV?@vd*#;Apl9+b*reYoM}5gtc0mB zY$i@Wnt^F1wrA=UHv+&ggM@WiMAThlks>*KY(Z`JlD($scdkUG-@zVXwENYbH3z8X zt!o&so4~guc^V6xrO-xWolR+O1wh*VRhyN>T%s*3v@OhH5UN_!rasWZ+rvoOy&=Vv z(Z)7gj{-?yWZR|ZKr?}TAVcigcgDoEc?eM19)oQj>=R?{J^Fa?{=Al9-V~C+QbfXc zZQ)YCOSOJ{RtZp35~iO}EiS0uY!|}EYM`2o9t!AT9e^Taohl&qOhTbzBLukgxQ&+b zkih_m>n{!o&k4&^35wEyF}Y! zE2L^em>M$X9Sy~ZfU5Lrk2)Ugd5>Myp^{KqD6);u2Eo-vJ?Fgos`hf%xe&v<@4(Qa zdy&~Wu_^&Ly(sRuqxEN_|7?jH8)l2Ur=rIME2L-!3MqvU5l9gfsee+4 zQVN6u5!!D=vCmRi?~{66$oBcs`;YP2kHW6mvqfE2>$|9p+>G{3{zg{D*x!f2DrEd`9t`2R7I*Xp=)a zzmbGMnIz6$U@CMq2O56rM7-7zUA-`AAbg@|;RxU-Up~V3|G1BT9ts}++70ZLdfmOa zHcMih4XH3!%J9n~LMX)0LmKos}}B7;=^+0milJM#BX_DYeJ6VpHvjHE!-$c3yXDk7{R1CFvE zXgv05w89|^29a<`Q{eRCfWcrD;?&-)Pp4-OfU-e8pV{Kx-7;I-nSLW#p>VS0fRp|K z76X^h@dKPW*x{G=y^T}L|9*yj;;YwJumAMV=kUUtWgrENC_VEd5F!o6*deO;yTM(d zL0kR%_om>xPoKxp@rQFT|Jh&8;ib3s3_2ageg5!Q97+wsDUf3LT_`QV9O`^S5(klr z&2Jwq_}M>l~{@ z&Lz!QExbz!KtqTVvl1RCjfA0F#*l#`xbxx>9{SwBJ`@DnE5HxGcm)>@cGbgVBbGIB zdrs77KwC!<0q^_WE5i{cDrjiskX9NM#6dY;QS5+IWrs(;@WxFS{DWsdhNI(NcYH2Y z;7Daqr4U4hnv6}#Ne3E@1XPD4nwj8Mmv-PtG(m3-M_XO6aSAag8im@FJ*-Krf%I__ zcPDzLnEC0=#GaarX|cOCE<}iOMR(<(fdVJ1&iz^^b3xH?e$o`Wm6MQ;=UXtb(d`cS z)n7k}3;SDq>oYy9iU>;8_pusaKMg-Yjk2Xs%gd+iw(2c z5sy9hDO}s^;o4>&PrmSReDl+Ps~#}8MiaHd+`6u{rfh5LscT%4+cnD?5VNmFp|*>i zIuJl1apRcy_4Bvm`gTFpjfqze&*HZ)egfaP>-7qWYH=RiOERf~G_BOHGYL%6!~{P0 z`@fqWwWf+`J_YHJ)I&(_$qonH;rj8?1+^x`61Sgy2X7o6;N9I4NTp_3az$DkouDqB zDZ-hUp(l{eo};GIp>NE$V_k5lfQUx970SxvUpqVp1yBkyU*`$U6b%QPsP$^6*-Jd1 zPFkEDni%>fGnfrMA&q*Ee^fiRh7(pebhPjxnwZ(7c^4B}$hu}%->pOQUS3>*v2`I} ze#zWh!%E*xyDGjSC9F$}#SYkBLi~8gn<8;8ZaN(HbDt|r9KwM*_uXcs&*CpzFR+8n zB2xNjjO~;GCQnk%F)MUkYt@uX9VY@{7&V}d^*|@3P?c3EW(Sn!fyPT>OI56W6d?{L zNdBU!!&B!NdSatKgO#q2CvH$7S{IX;HkBG24NeWJsI+j56KFVWhvo-NBxVj=3(zwvn*PUP#bC+0qTu$UQTGy>5SS2MoC~j*F+SvCPHM?4gHQ?sz zaZXdBH;Zz*I&^?@D(a9xObzmJc_CFbc4e51n>+Q1IO$5yYYjGK^4&Vbp7c9U=&#`x zA}>0O>QH4XoK{3)V5TD%@0Mp~A6VD+b0KppbNCN|*tsA0n^BTTQ5KQhLhf}=K~t_% z_%i;3M`U!~eu_P@fu09G6&rt~cG=MCiHuxcdo79CzqnGI(8*i-{?8veFlh$Pq$f0| vbuAKY9&cxHNaC3Mac;kb<|jMRk-&cepBUs(s~Fz-00000NkvXXu0mjfh-PKA literal 0 HcmV?d00001 diff --git a/debian/comic-widget/opt/comic-widget/images/up0-48x48.png b/debian/comic-widget/opt/comic-widget/images/up0-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..39932d66872b80ca3b5881769dcf0aaabd230ac3 GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC#^NA%Cx&(BWL^R}Y)RhkE+`s;HQTJ`ocliW9iuTA>=qR~+#yl(x$lzsmdKI;Vst08fU0y8r+H literal 0 HcmV?d00001 diff --git a/debian/comic-widget/opt/comic-widget/images/up1-48x48.png b/debian/comic-widget/opt/comic-widget/images/up1-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..d3536ca4302ae2dac384693549050cb33a75d728 GIT binary patch literal 2199 zcmV;I2x#|-P)Px#24YJ`L;wH)aR9X!d;S{$000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igH0 z3mGTUJ-~?o000?uMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HM@dakSAh-}000N_NklaObUJI0TV7iR8rpXcf7?)o@Yb^0aV`n~Xf{JEI1UkL!ycYFkZ z>y7vjkPh#!*MuN&dmz6`ax_KnGX1^u{9P zL;>PlQEaQrs?x{&62v~sr5OQO*=}e>zH*lBgjh>cVcATcepLg@OdMnSolpY6G=rse zxkvO}<6_OK`}l&!?yXu)>T9$c>O9Gc>mVRrvOaE+JVhLOBz+u zWH*LgdB-)SzIDq!o}fCQG6zEq7h8h_#pk94eCNa=P&Ckkni?1mA7+*&__1pYmV$>F zVSKYQi_HMm$b2r-l4TNlgbOt@cRe?kX)Lxwss_SzmvQSTB_jfo&1{b@4?aG8S6VU& zZMY(bd=3ciI+`&T*;ktBZq`Cf-?0Nni)lqxR}4+_KDN#G#^;iW`SwHR_>J%uP2YYV|n{ zo-jW$s%vfTlLsixu$k6rv%ax{K($ERWw9i>9s>hEwH00`L{}sxrGn4af>|Xgr4lj0 zX`Q81oJqo#DbtgS86lXXhYje9if`75DMV5%Sh^Bs4I~h+eB&`B;e(Hx2ObNAa)oZD zgoWw_C?GpmbTPA%WKhySCprv#NBy1CUdmc8-@U=RZ~g-S@b>+$;?ED-tYAZnvf`-9 zwUEc8kYN=Sa76Iizj}YX7J)b_i_rvmkbAAfW!gNW0K9zX2Jign^J4vb_n*UupSD>U zV5!@*XKN%toG4gpA%5rA?`z5TwOc%g#^JkPyma>l_uhDT1ipLspT}Q5YdM(GO1A24 zl+!%5tKn#`{^n0*@4bFG^-3op8G3;iZ$HA%Uw?SD#Csy(?LT}Ce|^{{s&RH^N-95j zeV$(q<<`v5jA%5N8O#VXLnG1r+RV_#Kf>tOB&_x4uiSn7)WyT|)Gy!s4BvWQK9-;n z%?$LpTbpzCXYe)kcdhm7X4c2Q_S+9MVm_B9XL@33?_Kk^9^q%Nefp)TkjGDecm8-A zfBU>`?dYl5*?nO~p;>6P&E1V14vn~0THLqs{nDMAe{1mo&{ zv^h^+SAQq05QAw`K$`-FyO_C~#dG4t+mGf|uC6{G!>8`xG z*?zzO=ezR<;s3tiJUD#+h1-wtlka}=U$SbzFMjY5Zaw>?uc38|caP}n3S~9=b!)EN z*oeDDO9MhcYe=T*nx`3Fxb+3zdiBBogc|%x1K$1qNBH_PPr8L27{Y})tP$XWv5sa2 z{`hwvE-g%E&@j>=N1`I0X^#(#T}j}nuJQak*bB{aCKav{@P%w)rI1L5o|p!eQyLoO zLQ)Iz;E(>Dqo4}TH*W)*=(4Q3A~iZvB|+{oRnJQMaL{M1xjE6>STZF0}N zD;Ey*N{_JIo5fsWG!X5Z_H3{<@A>zTaUiJj7MGr9?u3VIPV zu9HSrHZ50+R9#T{y~sAyxpn4ROSCa{YAm!0QZ4SUTV&`=)K0QfTKZzmo;vphTu9y# z&neJ<({AoRbFjkm}X;d7O z=L*Am&rao@nCVPl8@x6!I0Z-Iij?VAh*pSza@w*`g*;Tg*}K9cVk+lG&unHiO-$z| zJD4qJLdtwkT*}*4ECpG@_M{LC(-~^nos?-V!%t|w%!daUyVmUh$J2n$@nGhnjar!h{F}i-&9U`s1zj&Zwnkqu*J+w zEW|j)B(_bJ1C9Zw&Kz?_~Q>Pl{8b$q$`KhI(eec6USLxf;b0%o;zM)G)p$b Z{S(=Q98Rw|0%`yN002ovPDHLkV1in+ACLe5 literal 0 HcmV?d00001 diff --git a/debian/comic-widget/usr/lib/hildon-desktop/comicwidget.py b/debian/comic-widget/usr/lib/hildon-desktop/comicwidget.py new file mode 100644 index 0000000..3d3f6af --- /dev/null +++ b/debian/comic-widget/usr/lib/hildon-desktop/comicwidget.py @@ -0,0 +1,1546 @@ +import gobject +import hildon +import hildondesktop +import gtk +import csv +import urllib2 +import string +import os +import osso +import cairo +import datetime +import shutil +import sys +import socket + +socket.setdefaulttimeout(30) + +supports_alpha = False + +# LOGGING! +# sys.stdout = open('/home/user/.comic-widget/output_log.txt', 'a') +# sys.stderr = open('/home/user/.comic-widget/error_log.txt', 'a') +# print "Start logging!" + +# constants. dbfile is the location of the csv +# comiccache is the location of the images +APP_VERSION = "0.4.2" + +basedbdir = "/opt/comic-widget/db/" +imagedir = "/opt/comic-widget/images/" +dbdir = "/home/user/.comic-widget/" +activecomics = dbdir + "activecomics.cfg" +comiccache = "/home/user/MyDocs/.comics/" +defaultcomics = ['xkcd','wulff','sinfest'] +comics = { + "9_chickweed_lanecomicscom":{"name":"9 Chickweed Lane","link":"http://comics.com/9_chickweed_lane/","start":"2010-02-01","dbfile":dbdir + "comicdb.9chickweedlane.csv"}, + "agnescomicscom":{"name":"Agnes","link":"http://comics.com/agnes/","start":"2010-02-01","dbfile":dbdir + "comicdb.agnes.csv"}, + "andy_cappcomicscom":{"name":"Andy Capp","link":"http://comics.com/andy_capp/","start":"2010-02-01","dbfile":dbdir + "comicdb.andycapp.csv"}, + "alley_oopcomicscom":{"name":"Alley Oop","link":"http://comics.com/alley_oop/","start":"2010-02-01","dbfile":dbdir + "comicdb.alleyoop.csv"}, + "arlonjaniscomicscom":{"name":"Arlo and Janis","link":'http://comics.com/arlo&janis/',"start":"2010-02-01","dbfile":dbdir + "comicdb.arlonjanis.csv"}, + "bccomicscom":{"name":"B.C.","link":"http://comics.com/bc/","start":"2010-02-01","dbfile":dbdir + "comicdb.bc.csv"}, + "ballard_streetcomicscom":{"name":"Ballard Street","link":"http://comics.com/ballard_street/","start":"2010-02-01","dbfile":dbdir + "comicdb.ballardstreet.csv"}, + "babyblues":{"name":"Baby Blues","link":"http://www.babyblues.com/","start":"01/19/2010","dbfile":dbdir + "comicdb.babyblues.csv"}, + "bencomicscom":{"name":"Ben","link":'http://comics.com/ben/',"start":"2010-02-01","dbfile":dbdir + "comicdb.ben.csv"}, + "bettycomicscom":{"name":"Betty","link":"http://comics.com/betty/","start":"2010-02-01","dbfile":dbdir + "comicdb.betty.csv"}, + "big_natecomicscom":{"name":"Big Nate","link":"http://comics.com/big_nate/","start":"2010-02-01","dbfile":dbdir + "comicdb.bignate.csv"}, + "brevitycomicscom":{"name":"Brevity","link":"http://comics.com/brevity/","start":"2010-02-01","dbfile":dbdir + "comicdb.brevity.csv"}, + "candorvillecomicscom":{"name":"Candorville","link":"http://comics.com/candorville/","start":"2010-02-01","dbfile":dbdir + "comicdb.candorville.csv"}, + "cheap_thrillscomicscom":{"name":"Cheap Thrills","link":"http://comics.com/cheap_thrills/","start":"2010-02-01","dbfile":dbdir + "comicdb.cheapthrills.csv"}, + "committedcomicscom":{"name":"Committed","link":"http://comics.com/committed/","start":"2010-02-01","dbfile":dbdir + "comicdb.committed.csv"}, + "cownboycomicscom":{"name":"Cow and Boy","link":'http://comics.com/cow&boy/',"start":"2010-02-01","dbfile":dbdir + "comicdb.cownboy.csv"}, + "cyanide":{"name":"Cyanide and Happiness","link":"http://explosm.com/","start":"1920","dbfile":dbdir + "comicdb.cyanide.csv"}, + "daddyshomecomicscom":{"name":"Daddy's Home","link":"http://comics.com/daddys_home/","start":"2010-02-01","dbfile":dbdir + "comicdb.daddyshome.csv"}, + "dilbert":{"name":"Dilbert","link":"http://dilbert.com/","start":"2010-01-01","dbfile":dbdir + "comicdb.dilbert.csv"}, + "dog_eat_dougcomicscom":{"name":"Dog eat Doug","link":"http://comics.com/dog_eat_doug/","start":"2010-02-01","dbfile":dbdir + "comicdb.dogeatdoug.csv"}, + "drabblecomicscom":{"name":"Drabble","link":"http://comics.com/drabble/","start":"2010-02-01","dbfile":dbdir + "comicdb.drabble.csv"}, + "f_minuscomicscom":{"name":"F Minus","link":"http://comics.com/f_minus/","start":"2010-02-01","dbfile":dbdir + "comicdb.f_minus.csv"}, + "family_treecomicscom":{"name":"Family Tree","link":"http://comics.com/family_tree/","start":"2010-02-01","dbfile":dbdir + "comicdb.familytree.csv"}, + "farcuscomicscom":{"name":"Farcus","link":'http://comics.com/farcus/',"start":"2010-02-01","dbfile":dbdir + "comicdb.farcus.csv"}, + "fat_catscomicscom":{"name":"Fat Cats","link":'http://comics.com/fat_cats_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.fatcats.csv"}, + "ferdnandcomicscom":{"name":"Ferd'nand","link":'http://comics.com/ferdnand/',"start":"2010-02-01","dbfile":dbdir + "comicdb.ferdnand.csv"}, + "flight_deckcomicscom":{"name":"Flight Deck","link":'http://comics.com/flight_deck/',"start":"2010-02-01","dbfile":dbdir + "comicdb.flightdeck.csv"}, + "flonfriendscomicscom":{"name":"Flo and Friends","link":'http://comics.com/flo&friends/',"start":"2010-02-01","dbfile":dbdir + "comicdb.flonfriends.csv"}, + "fort_knoxcomicscom":{"name":"Fort Knox","link":'http://comics.com/fort_knox/',"start":"2010-02-01","dbfile":dbdir + "comicdb.fortknox.csv"}, + "franknernestcomicscom":{"name":"Frank and Ernest","link":'http://comics.com/frank&ernest/',"start":"2010-02-01","dbfile":dbdir + "comicdb.franknernest.csv"}, + "frazzcomicscom":{"name":"Frazz","link":"http://comics.com/frazz/","start":"2010-02-01","dbfile":dbdir + "comicdb.frazz.csv"}, + "free_rangecomicscom":{"name":"Free Range","link":'http://comics.com/free_range/',"start":"2010-02-01","dbfile":dbdir + "comicdb.freerange.csv"}, + "geechcomicscom":{"name":"Geech","link":'http://comics.com/geech_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.geech.csv"}, + "getfuzzycomicscom":{"name":"Get Fuzzy","link":"http://comics.com/get_fuzzy/","start":"2010-02-01","dbfile":dbdir + "comicdb.getfuzzy.csv"}, + "girlsnsportscomicscom":{"name":"Girls and Sports","link":'http://comics.com/girls&sports/',"start":"2010-02-01","dbfile":dbdir + "comicdb.gitlsnsports.csv"}, + "graffiticomicscom":{"name":"Graffiti","link":'http://comics.com/graffiti/',"start":"2010-02-01","dbfile":dbdir + "comicdb.graffiti.csv"}, + "grand_avenuecomicscom":{"name":"Grand Avenue","link":'http://comics.com/grand_avenue/',"start":"2010-02-01","dbfile":dbdir + "comicdb.grandavenue.csv"}, + "heathcliffcomicscom":{"name":"Heathcliff","link":'http://comics.com/heathcliff/',"start":"2010-02-01","dbfile":dbdir + "comicdb.heathcliff.csv"}, + "herb_and_jamaalcomicscom":{"name":"Herb and Jamaal","link":'http://comics.com/herb_and_jamaal/',"start":"2010-02-01","dbfile":dbdir + "comicdb.herbandjamaal.csv"}, + "hermancomicscom":{"name":"Herman","link":'http://comics.com/herman/',"start":"2010-02-01","dbfile":dbdir + "comicdb.herman.csv"}, + "home_and_awaycomicscom":{"name":"Home and Away","link":'http://comics.com/home_and_away/',"start":"2010-02-01","dbfile":dbdir + "comicdb.homeandaway.csv"}, + "its_all_about_youcomicscom":{"name":"It's All About You","link":'http://comics.com/its_all_about_you/',"start":"2010-02-01","dbfile":dbdir + "comicdb.itsallaboutyou.csv"}, + "janes_worldcomicscom":{"name":"Jane's World","link":'http://comics.com/janes_world/',"start":"2010-02-01","dbfile":dbdir + "comicdb.janesworld.csv"}, + "jump_startcomicscom":{"name":"Jump Start","link":'http://comics.com/jump_start/',"start":"2010-02-01","dbfile":dbdir + "comicdb.jumpstart.csv"}, + "kit_n_carlylecomicscom":{"name":"Kit 'n' Carlyle","link":'http://comics.com/kit_n_carlyle/',"start":"2010-02-01","dbfile":dbdir + "comicdb.kitncarlyle.csv"}, + "lil_abnercomicscom":{"name":"Li'l Abner","link":'http://comics.com/lil_abner_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.lilabner.csv"}, + "liberty_meadowscomicscom":{"name":"Liberty Meadows","link":'http://comics.com/liberty_meadows/',"start":"2010-02-01","dbfile":dbdir + "comicdb.libertymeadows.csv"}, + "little_dog_lostcomicscom":{"name":"Little Dog Lost","link":'http://comics.com/little_dog_lost/',"start":"2010-02-01","dbfile":dbdir + "comicdb.littledoglost.csv"}, + "lolacomicscom":{"name":"Lola","link":'http://comics.com/lola/',"start":"2010-02-01","dbfile":dbdir + "comicdb.lola.csv"}, + "luanncomicscom":{"name":"Luann","link":'http://comics.com/luann/',"start":"2010-02-01","dbfile":dbdir + "comicdb.luann.csv"}, + "marmadukecomicscom":{"name":"Marmaduke","link":'http://comics.com/marmaduke/',"start":"2010-02-01","dbfile":dbdir + "comicdb.marmaduke.csv"}, + "megcomicscom":{"name":"Meg","link":'http://comics.com/meg_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.meg.csv"}, + "minimum_securitycomicscom":{"name":"Minimum Security","link":'http://comics.com/minimum_security/',"start":"2010-02-01","dbfile":dbdir + "comicdb.minimumsecurity.csv"}, + "moderately_confusedcomicscom":{"name":"Moderately Confused","link":'http://comics.com/moderately_confused/',"start":"2010-02-01","dbfile":dbdir + "comicdb.moderatelyconfused.csv"}, + "mommacomicscom":{"name":"Momma","link":'http://comics.com/momma/',"start":"2010-02-01","dbfile":dbdir + "comicdb.momma.csv"}, + "motleycomicscom":{"name":"Motley","link":'http://comics.com/motley_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.motley.csv"}, + "nancycomicscom":{"name":"Nancy","link":'http://comics.com/nancy/',"start":"2010-02-01","dbfile":dbdir + "comicdb.nancy.csv"}, + "natural_selectioncomicscom":{"name":"Natural Selection","link":'http://comics.com/natural_selection/',"start":"2010-02-01","dbfile":dbdir + "comicdb.naturalselection.csv"}, + "nest_headscomicscom":{"name":"Nest Heads","link":'http://comics.com/nest_heads/',"start":"2010-02-01","dbfile":dbdir + "comicdb.nestheads.csv"}, + "off_the_markcomicscom":{"name":"Off the mark","link":"http://comics.com/off_the_mark/","start":"2010-02-01","dbfile":dbdir + "comicdb.offthemark.csv"}, + "on_a_claire_daycomicscom":{"name":"On A Claire Day","link":'http://comics.com/on_a_claire_day/',"start":"2010-02-01","dbfile":dbdir + "comicdb.onaclaireday.csv"}, + "one_big_happycomicscom":{"name":"One Big Happy","link":'http://comics.com/one_big_happy_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.onebighappy.csv"}, + "over_the_hedgecomicscom":{"name":"Over the Hedge","link":'http://comics.com/over_the_hedge/',"start":"2010-02-01","dbfile":dbdir + "comicdb.overthehedge.csv"}, + "pc_and_pixelcomicscom":{"name":"PC and Pixel","link":'http://comics.com/pc_and_pixel/',"start":"2010-02-01","dbfile":dbdir + "comicdb.pcandpixel.csv"}, + "peanutscomicscom":{"name":"Peanuts","link":"http://comics.com/peanuts/","start":"2010-02-01","dbfile":dbdir + "comicdb.peanuts.csv"}, + "pearls_before_swinecomicscom":{"name":"Pearls Before Swine","link":'http://comics.com/pearls_before_swine/',"start":"2010-02-01","dbfile":dbdir + "comicdb.pearlsbeforeswine.csv"}, + "phd":{"name":"PHD Comics","link":"http://www.phdcomics.com/","start":1240,"dbfile":dbdir + "comicdb.phd.csv"}, + "picklescomicscom":{"name":"Pickles","link":'http://comics.com/pickles/',"start":"2010-02-01","dbfile":dbdir + "comicdb.pickles.csv"}, + "prickly_citycomicscom":{"name":"Prickly City","link":'http://comics.com/prickly_city/',"start":"2010-02-01","dbfile":dbdir + "comicdb.pricklycity.csv"}, + "raising_duncancomicscom":{"name":"Raising Duncan","link":'http://comics.com/raising_duncan_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.raisingduncan.csv"}, + "reality_checkcomicscom":{"name":"Reality Check","link":'http://comics.com/reality_check/',"start":"2010-02-01","dbfile":dbdir + "comicdb.realitycheck.csv"}, + "rednrovercomicscom":{"name":"Red and Rover","link":'http://comics.com/red&rover/',"start":"2010-02-01","dbfile":dbdir + "comicdb.rednrover.csv"}, + "rip_haywirecomicscom":{"name":"Rip Haywire","link":'http://comics.com/rip_haywire/',"start":"2010-02-01","dbfile":dbdir + "comicdb.riphaywire.csv"}, + "ripleys_believe_it_or_notcomicscom":{"name":"Ripley's Believe it or not","link":'http://comics.com/ripleys_believe_it_or_not/',"start":"2010-02-01","dbfile":dbdir + "comicdb.ripleysbelieveitornot.csv"}, + "rose_is_rosecomicscom":{"name":"Rose Is Rose","link":'http://comics.com/rose_is_rose/',"start":"2010-02-01","dbfile":dbdir + "comicdb.roseisrose.csv"}, + "rubescomicscom":{"name":"Rubes","link":'http://comics.com/rubes/',"start":"2010-02-01","dbfile":dbdir + "comicdb.rubes.csv"}, + "rudy_parkcomicscom":{"name":"Rudy Park","link":'http://comics.com/rudy_park/',"start":"2010-02-01","dbfile":dbdir + "comicdb.rudypark.csv"}, + "scary_garycomicscom":{"name":"Scary Gary","link":'http://comics.com/scary_gary/',"start":"2010-02-01","dbfile":dbdir + "comicdb.scarygary.csv"}, + "shirley_and_soncomicscom":{"name":"Shirley and Son","link":'http://comics.com/shirley_and_son_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.shirleyandson.csv"}, + "sinfest":{"name":"Sinfest","link":"http://sinfest.com/","start":3400,"dbfile":dbdir + "comicdb.sinfest.csv"}, + "soup_to_nutzcomicscom":{"name":"Soup to Nutz","link":'http://comics.com/soup_to_nutz/',"start":"2010-02-01","dbfile":dbdir + "comicdb.souptonutz.csv"}, + "speed_bumpcomicscom":{"name":"Speed Bump","link":'http://comics.com/speed_bump/',"start":"2010-02-01","dbfile":dbdir + "comicdb.speedbump.csv"}, + "spot_the_frogcomicscom":{"name":"Spot the Frog","link":'http://comics.com/spot_the_frog/',"start":"2010-02-01","dbfile":dbdir + "comicdb.spotthefrog.csv"}, + "state_of_the_unioncomicscom":{"name":"State of the Union","link":'http://comics.com/state_of_the_union/',"start":"2010-02-01","dbfile":dbdir + "comicdb.stateoftheunion.csv"}, + "strange_brewcomicscom":{"name":"Strange Brew","link":'http://comics.com/strange_brew/',"start":"2010-02-01","dbfile":dbdir + "comicdb.strangebrew.csv"}, + "tarzancomicscom":{"name":"Tarzan","link":'http://comics.com/tarzan_classics/',"start":"2010-02-01","dbfile":dbdir + "comicdb.tarzan.csv"}, + "thats_lifecomicscom":{"name":"That's Life","link":'http://comics.com/thats_life/',"start":"2010-02-01","dbfile":dbdir + "comicdb.thatslife.csv"}, + "barncomicscom":{"name":"The Barn","link":'http://comics.com/the_barn/',"start":"2010-02-01","dbfile":dbdir + "comicdb.the_barn.csv"}, + "born_losercomicscom":{"name":"The Born Loser","link":'http://comics.com/the_born_loser/',"start":"2010-02-01","dbfile":dbdir + "comicdb.thebornloser.csv"}, + "bucketscomicscom":{"name":"The Buckets","link":'http://comics.com/the_buckets/',"start":"2010-02-01","dbfile":dbdir + "comicdb.thebuckets.csv"}, + "dinette_setcomicscom":{"name":"The Dinette Set","link":'http://comics.com/the_dinette_set/',"start":"2010-02-01","dbfile":dbdir + "comicdb.thedinetteset.csv"}, + "grizzwellscomicscom":{"name":"The Grizzwells","link":'http://comics.com/the_grizzwells/',"start":"2010-02-01","dbfile":dbdir + "comicdb.thegrizzwells.csv"}, + "humble_stumblecomicscom":{"name":"The Humble Stumble","link":'http://comics.com/the_humble_stumble/',"start":"2010-02-01","dbfile":dbdir + "comicdb.thehumblestumble.csv"}, + "knight_lifecomicscom":{"name":"The Knight Life","link":'http://comics.com/the_knight_life/',"start":"2010-02-01","dbfile":dbdir + "comicdb.theknightlife.csv"}, + "meaning_of_lilacomicscom":{"name":"The Meaning of Lila","link":'http://comics.com/the_meaning_of_lila/',"start":"2010-02-01","dbfile":dbdir + "comicdb.themeaningoflila.csv"}, + "other_coastcomicscom":{"name":"The Other Coast","link":'http://comics.com/the_other_coast/',"start":"2010-02-01","dbfile":dbdir + "comicdb.theothercoast.csv"}, + "sunshine_clubcomicscom":{"name":"The Sunshine Club","link":'http://comics.com/the_sunshine_club/',"start":"2010-02-01","dbfile":dbdir + "comicdb.thesunshineclub.csv"}, + "unstrange_phenomenacomicscom":{"name":"Unstrange Phenomena","link":'http://comics.com/unstrange_phenomena/',"start":"2010-02-01","dbfile":dbdir + "comicdb.unstrangephenomena.csv"}, + "watch_your_headcomicscom":{"name":"Watch Your Head","link":'http://comics.com/watch_your_head/',"start":"2010-02-01","dbfile":dbdir + "comicdb.watchyourhead.csv"}, + "wizard_of_idcomicscom":{"name":"Wizard of Id","link":'http://comics.com/wizard_of_id/',"start":"2010-02-01","dbfile":dbdir + "comicdb.wizardofid.csv"}, + "working_dazecomicscom":{"name":"Working Daze","link":'http://comics.com/working_daze/',"start":"2010-02-01","dbfile":dbdir + "comicdb.workingdaze.csv"}, + "working_it_outcomicscom":{"name":"Working It Out","link":'http://comics.com/working_it_out/',"start":"2010-02-01","dbfile":dbdir + "comicdb.workingitout.csv"}, + "wulff":{"name":"Wulffmorgenthaler","link":"http://wulffmorgenthaler.com/","start":"edd3411b-96ca-4d93-bd5f-0cf1deb67c8a","dbfile":dbdir + "comicdb.wulff.csv"}, + "xkcd":{"name":"xkcd","link":"http://xkcd.org/","start":666,"dbfile":dbdir + "comicdb.xkcd.csv"}, + "zack_hillcomicscom":{"name":"Zack Hill","link":'http://comics.com/zack_hill/',"start":"2010-02-01","dbfile":dbdir + "comicdb.zackhill.csv"}, + + "amazing_spidermanckdm":{"name":"The Amazing Spider-Man","link":'http://content.comicskingdom.net/Spiderman/',"start":"20100209","dbfile":dbdir + "comicdb.spiderman.csv"}, + "apartment_3-gckdm":{"name":"Apartment 3-G","link":'http://content.comicskingdom.net/Apartment_3-G/',"start":"20100209","dbfile":dbdir + "comicdb.partment3g.csv"}, + "arcticckdm":{"name":"Arctic Circle","link":'http://content.comicskingdom.net/Arctic/',"start":"20100209","dbfile":dbdir + "comicdb.arctic.csv"}, + "barney_googleckdm":{"name":"Barney Google and Snuffy Smith","link":'http://content.comicskingdom.net/Barney_Google/',"start":"20100209","dbfile":dbdir + "comicdb.barneygoogle.csv"}, + "beetle_baileyckdm":{"name":"Beetle Bailey","link":'http://content.comicskingdom.net/Beetle_Bailey/',"start":"20100209","dbfile":dbdir + "comicdb.beetlebailey.csv"}, + "better_halfckdm":{"name":"Better Half","link":'http://content.comicskingdom.net/Better_Half/',"start":"20100209","dbfile":dbdir + "comicdb.betterhalf.csv"}, + "between_friendsckdm":{"name":"Between Friends","link":'http://content.comicskingdom.net/Between_Friends/',"start":"20100209","dbfile":dbdir + "comicdb.betweenfriends.csv"}, + "bizarrockdm":{"name":"Bizarro","link":'http://content.comicskingdom.net/Bizarro/',"start":"20100209","dbfile":dbdir + "comicdb.bizarro.csv"}, + "blondieckdm":{"name":"Blondie","link":'http://content.comicskingdom.net/Blondie/',"start":"20100209","dbfile":dbdir + "comicdb.blondie.csv"}, + "edisonckdm":{"name":"Edison Lee","link":'http://content.comicskingdom.net/Edison/',"start":"20100209","dbfile":dbdir + "comicdb.edison.csv"}, + "bucklesckdm":{"name":"Buckles","link":'http://content.comicskingdom.net/Buckles/',"start":"20100209","dbfile":dbdir + "comicdb.buckles.csv"}, + "crankshaftckdm":{"name":"Crankshaft","link":'http://content.comicskingdom.net/Crankshaft/',"start":"20100209","dbfile":dbdir + "comicdb.crankshaft.csv"}, + "crockckdm":{"name":"Crock","link":'http://content.comicskingdom.net/Crock/',"start":"20100209","dbfile":dbdir + "comicdb.crock.csv"}, + "curtisckdm":{"name":"Curtis","link":'http://content.comicskingdom.net/Curtis/',"start":"20100209","dbfile":dbdir + "comicdb.curtis.csv"}, + "deflockedckdm":{"name":"DeFlocked","link":'http://content.comicskingdom.net/Deflocked/',"start":"20100209","dbfile":dbdir + "comicdb.deflocked.csv"}, + "dennis_the_menaceckdm":{"name":"Dennis The Menace","link":'http://content.comicskingdom.net/Dennis_The_Menace/',"start":"20100209","dbfile":dbdir + "comicdb.dennisthemenace.csv"}, + "dustinckdm":{"name":"Dustin","link":'http://content.comicskingdom.net/Dustin/',"start":"20100209","dbfile":dbdir + "comicdb.dustin.csv"}, + "edge_cityckdm":{"name":"Edge City","link":'http://content.comicskingdom.net/Edge_City/',"start":"20100209","dbfile":dbdir + "comicdb.edgecity.csv"}, + "family_circusckdm":{"name":"Family Circus","link":'http://content.comicskingdom.net/Family_Circus/',"start":"20100209","dbfile":dbdir + "comicdb.familycircus.csv"}, + "flashckdm":{"name":"Flash Gordon","link":'http://content.comicskingdom.net/Flash/',"start":"20100209","dbfile":dbdir + "comicdb.flash.csv"}, + "funky_winkerbeanckdm":{"name":"Funky Winkerbean","link":'http://content.comicskingdom.net/Funky_Winkerbean/',"start":"20100209","dbfile":dbdir + "comicdb.funkywinkerbean.csv"}, + "grin_and_bear_itckdm":{"name":"Grin and Bear It","link":'http://content.comicskingdom.net/Grin_and_Bear_It/',"start":"20100209","dbfile":dbdir + "comicdb.frinandbearit.csv"}, + "hagar_the_horribleckdm":{"name":"Hagar The Horrible","link":'http://content.comicskingdom.net/Hagar_The_Horrible/',"start":"20100209","dbfile":dbdir + "comicdb.hagarthehorrible.csv"}, + "hazelckdm":{"name":"Hazel","link":'http://content.comicskingdom.net/Hazel/',"start":"20100209","dbfile":dbdir + "comicdb.hazel.csv"}, + "heavensckdm":{"name":"Heaven's Love Thrift Shop","link":'http://content.comicskingdom.net/Heavens/',"start":"20100209","dbfile":dbdir + "comicdb.heavens.csv"}, + "henryckdm":{"name":"Henry","link":'http://content.comicskingdom.net/Henry/',"start":"20100209","dbfile":dbdir + "comicdb.henry.csv"}, + "hi_and_loisckdm":{"name":"Hi and Lois","link":'http://content.comicskingdom.net/Hi_and_Lois/',"start":"20100209","dbfile":dbdir + "comicdb.hiandlois.csv"}, + "judge_parkerckdm":{"name":"Judge Parker","link":'http://content.comicskingdom.net/Judge_Parker/',"start":"20100209","dbfile":dbdir + "comicdb.judgeparker.csv"}, + "katzenjammer_kidsckdm":{"name":"Katzenjammer Kids","link":'http://content.comicskingdom.net/Katzenjammer_Kids/',"start":"20100209","dbfile":dbdir + "comicdb.katzenjammerkids.csv"}, + "lockhornsckdm":{"name":"Lockhorns","link":'http://content.comicskingdom.net/Lockhorns/',"start":"20100209","dbfile":dbdir + "comicdb.lockhorns.csv"}, + "mallard_fillmoreckdm":{"name":"Mallard Fillmore","link":'http://content.comicskingdom.net/Mallard_Fillmore/',"start":"20100209","dbfile":dbdir + "comicdb.mallardfillmore.csv"}, + "mandrakeckdm":{"name":"Mandrake","link":'http://content.comicskingdom.net/Mandrake/',"start":"20100209","dbfile":dbdir + "comicdb.mandrake.csv"}, + "mark_trailckdm":{"name":"Mark Trail","link":'http://content.comicskingdom.net/Mark_Trail/',"start":"20100209","dbfile":dbdir + "comicdb.marktrail.csv"}, + "marvinckdm":{"name":"Marvin","link":'http://content.comicskingdom.net/Marvin/',"start":"20100209","dbfile":dbdir + "comicdb.marvin.csv"}, + "mary_worthckdm":{"name":"Mary Worth","link":'http://content.comicskingdom.net/Mary_Worth/',"start":"20100209","dbfile":dbdir + "comicdb.maryworth.csv"}, + "mooseckdm":{"name":"Moose and Molly","link":'http://content.comicskingdom.net/Moose/',"start":"20100209","dbfile":dbdir + "comicdb.moose.csv"}, + "mgooseckdm":{"name":"Mother Goose and Grimm","link":'http://content.comicskingdom.net/Mgoose/',"start":"20100209","dbfile":dbdir + "comicdb.mgoose.csv"}, + "muttsckdm":{"name":"Mutts","link":'http://content.comicskingdom.net/Mutts/',"start":"20100209","dbfile":dbdir + "comicdb.mutts.csv"}, + "my_cageckdm":{"name":"My Cage","link":'http://content.comicskingdom.net/My_Cage/',"start":"20100209","dbfile":dbdir + "comicdb.mycage.csv"}, + "ollieckdm":{"name":"Ollie and Quentin","link":'http://content.comicskingdom.net/Ollie/',"start":"20100209","dbfile":dbdir + "comicdb.ollie.csv"}, + "on_the_fast_trackckdm":{"name":"On The Fastrack","link":'http://content.comicskingdom.net/Fast_Track/',"start":"20100209","dbfile":dbdir + "comicdb.fastrack.csv"}, + "pajamackdm":{"name":"Pajama Diaries","link":'http://content.comicskingdom.net/Pajama/',"start":"20100209","dbfile":dbdir + "comicdb.pajama.csv"}, + "pardon_my_planetckdm":{"name":"Pardon My Planet","link":'http://content.comicskingdom.net/Pardon_My_Planet/',"start":"20100209","dbfile":dbdir + "comicdb.pardonmyplanet.csv"}, + "phantomckdm":{"name":"The Phantom","link":'http://content.comicskingdom.net/Phantom/',"start":"20100209","dbfile":dbdir + "comicdb.phantom.csv"}, + "piranhackdm":{"name":"the Piranha Club","link":'http://content.comicskingdom.net/Piranha/',"start":"20100209","dbfile":dbdir + "comicdb.piranha.csv"}, + "popeyeckdm":{"name":"Popeye","link":'http://content.comicskingdom.net/Popeye/',"start":"20100209","dbfile":dbdir + "comicdb.popeye.csv"}, + "prince_valiantckdm":{"name":"Prince Valiant","link":'http://content.comicskingdom.net/Prince_Valiant/',"start":"20100209","dbfile":dbdir + "comicdb.prince_valiant.csv"}, + "prosnconsckdm":{"name":"Pros and Cons","link":'http://content.comicskingdom.net/Lawyer/',"start":"20100209","dbfile":dbdir + "comicdb.prosncons.csv"}, + "retailckdm":{"name":"Retail","link":'http://content.comicskingdom.net/Retail/',"start":"20100209","dbfile":dbdir + "comicdb.retail.csv"}, + "rex_morganckdm":{"name":"Rex Morgan","link":'http://content.comicskingdom.net/Rex_Morgan/',"start":"20100209","dbfile":dbdir + "comicdb.rexmorgan.csv"}, + "rhymes_with_orangeckdm":{"name":"Rhymes with Orange","link":'http://content.comicskingdom.net/Rhymes_with_Orange/',"start":"20100209","dbfile":dbdir + "comicdb.rhymeswithorange.csv"}, + "safe_havensckdm":{"name":"Safe Havens","link":'http://content.comicskingdom.net/Safe_Havens/',"start":"20100209","dbfile":dbdir + "comicdb.safehavens.csv"}, + "sallyforthckdm":{"name":"Sally Forth","link":'http://content.comicskingdom.net/Sally_Forth/',"start":"20100209","dbfile":dbdir + "comicdb.sallyforth.csv"}, + "samckdm":{"name":"Sam and Silo","link":'http://content.comicskingdom.net/Sam/',"start":"20100209","dbfile":dbdir + "comicdb.sam.csv"}, + "shermans_lagoonckdm":{"name":"Sherman's Lagoon","link":'http://content.comicskingdom.net/Shermans_Lagoon/',"start":"20100209","dbfile":dbdir + "comicdb.shermanslagoon.csv"}, + "shoeckdm":{"name":"Shoe","link":'http://content.comicskingdom.net/Shoe/',"start":"20100209","dbfile":dbdir + "comicdb.shoe.csv"}, + "six_chixckdm":{"name":"Six Chix","link":'http://content.comicskingdom.net/6Chix/',"start":"20100209","dbfile":dbdir + "comicdb.6chix.csv"}, + "slylockckdm":{"name":"Slylock Fox","link":'http://content.comicskingdom.net/Slylock/',"start":"20100209","dbfile":dbdir + "comicdb.slylock.csv"}, + "tigerckdm":{"name":"Tiger","link":'http://content.comicskingdom.net/Tiger/',"start":"20100209","dbfile":dbdir + "comicdb.tiger.csv"}, + "tinas_grooveckdm":{"name":"Tina's Groove","link":'http://content.comicskingdom.net/Tinas_Groove/',"start":"20100209","dbfile":dbdir + "comicdb.tinasgroove.csv"}, + "toddckdm":{"name":"Todd the Dinosaur","link":'http://content.comicskingdom.net/Todd/',"start":"20100209","dbfile":dbdir + "comicdb.todd.csv"}, + "zippy_the_pinheadckdm":{"name":"Zippy the Pinhead","link":'http://content.comicskingdom.net/Zippy_the_Pinhead/',"start":"20100209","dbfile":dbdir + "comicdb.zippythepinhead.csv"}, + "zitsckdm":{"name":"Zits","link":'http://content.comicskingdom.net/Zits/',"start":"20100209","dbfile":dbdir + "comicdb.zits.csv"}, + + + + } +defaults = {'width':480,'height':230} +#defaults = {'width':480,'height':240} +sizefile = "/home/user/.comic-widget/size.cfg" +previous = False +next = False + + +# handling of the comics +class ComicDb(): + def __init__(self, comic): + self.comic = comic + self.start = comics[self.comic]["start"] + self.dbfile = comics[self.comic]["dbfile"] + + #if db file exist, read it + # if os.path.isfile(self.dbfile) == True: + # dbf = open(self.dbfile, 'r') + # if not, create it. + dbf = self.get_dbfile() + dbr = csv.DictReader(dbf) + self.db = [] + for row in dbr: + self.db.insert(0,row) + dbf.close() + if len(self.db) == 0: + self.refresh() + self.currentcomic = 0 + + + + def get_dbfile(self): + #if db file exist, read it + print "fetching " + self.dbfile + if os.path.isfile(self.dbfile) == True: + print "found " + self.dbfile + dbf = open(self.dbfile, 'r') + return dbf + # if not, copy it. + else: + print "file " + self.dbfile + " not found" + if not os.path.exists(dbdir): + print "path not found: " + dbdir + try: + os.makedirs(dbdir) + except: + print "comic db creation failed on mkdir" + exit() + try: + shutil.copyfile(basedbdir + "comicdb." + self.comic + ".csv", dbdir + "comicdb." + self.comic + ".csv") + except: + print "comic db creation failed on copy" + print "creating new..." + dbf = open(self.dbfile, 'w') + dbf.write('comic,id,link,url,filename,title\n') + dbf.close() + + if os.path.isfile(self.dbfile) == True: + dbf = open(self.dbfile, 'r') + return dbf + else: + print "comic db creation failed after copy" + + + def get_comic(self): + # print str(self.currentcomic) + if self.currentcomic < 0: + self.currentcomic = 0 + if len(self.db) > 0: + fetchid = self.db[self.currentcomic]['id'] + else: + fetchid = comics[self.comic]['start'] + self.fetch_newer(self.comic, fetchid) + self.refresh() + if len(self.db) < (self.currentcomic + 1): + self.currentcomic = len(self.db) - 1 + if len(self.db) > 0: + fetchid = self.db[self.currentcomic]['id'] + else: + print "Empty db" + fetchid = comics[self.comic]['start'] + self.fetch_earlier(self.comic, fetchid) + self.refresh() + self.currentcomic = len(self.db) - 1 + + dbrow = self.db[self.currentcomic] + filename = comiccache + self.comic + "/" + dbrow['filename'] + print filename + "\n" + + if os.path.isfile(filename): + print "found, returning " + filename + "\n" + return filename + else: + #fetch file + print filename + " not found\nretrieving " + dbrow['url'] + "\n" + if not os.path.exists(comiccache + self.comic + "/"): + print "create dir " + comiccache + self.comic + "/" + try: + os.makedirs(comiccache + self.comic + "/") + print "created dir" + except: + print "comic db creation failed on mkdir" + try: + f = open(filename, "wb") + print "writing to " + filename + req = urllib2.Request(dbrow['url']) + req.add_header('Referer', dbrow['link']) + tmpimg = urllib2.urlopen(req) + f.write(tmpimg.read()) + tmpimg = None + f.close() + +# urllib.urlretrieve(dbrow['url'], filename) + except: + if os.path.isfile(filename): + os.remove(filename) + print "success\n" + return filename + + def get_current_row(self): + return self.db[self.currentcomic] + + def get_link(self): + print str(self.currentcomic) + if self.currentcomic < 0: + self.refresh() + self.currentcomic = 0 + if len(self.db) < (self.currentcomic + 1): + self.currentcomic -= 1 + return self.db[self.currentcomic]['link'] + + + + def insert_row(self, irow): + dbf = open(self.dbfile, 'a') + dbw = csv.writer(dbf) + dbw.writerow(irow) + dbf.close() + + def insert_row_first(self, irow): + dbf = open(self.dbfile, 'w') + dbf.write('comic,id,link,url,filename,title\n') + dbw = csv.writer(dbf) + dbw.writerow(irow) + dbf.close() + dbf = open(self.dbfile, 'a') + dbw = csv.DictWriter(dbf, ['comic','id','link','url','filename','title']) + tmpdb = self.db + tmpdb.reverse() + for row in tmpdb: + dbw.writerow(row) + dbf.close() + + def refresh(self): + # if len(self.db) < 1: + # self.currentcomic = -1 + # self.fetch_latest_std(self.comic, self.start) + # elif self.currentcomic == 0 or self.currentcomic < 0: + # self.fetch_latest_std(self.comic, self.db[0]['id']) + # elif self.currentcomic == (len(self.db) - 1): + # self.fetch_earlier(self.comic, self.db[self.currentcomic]['id']) + dbf = open(self.dbfile, 'r') + dbr = csv.DictReader(dbf) + self.db = [] + for row in dbr: + self.db.insert(0,row) + dbf.close() + if len(self.db) == 0: + self.fetch_earlier(self.comic, self.start) + dbf = open(self.dbfile, 'r') + dbr = csv.DictReader(dbf) + self.db = [] + for row in dbr: + self.db.insert(0,row) + dbf.close() + + +# fetch earlier + def fetch_earlier(self, comic, earliest): + print "fetch before, " + comic + " earliest" + if comic == "cyanide" or comic == "wulff" or comic == "babyblues" or comic[-9:] == "comicscom": + print "getting get_prev_id..." + comicid = self.get_prev_id(comic,earliest) + if not comicid: + print "already at first comic" + return + print "got " + comicid + " as the one before current..." + elif len(str(earliest)) == 10: + # date id. + dt = string.split(earliest, "-") + d = datetime.date(int(dt[0]),int(dt[1]),int(dt[2])) + earlier = d - datetime.timedelta( 1 ) + comicid = earlier.isoformat() + elif comic[-4:] == 'ckdm': + # comics kingdom. Easiest...? + d = datetime.date(int(earliest[:4]),int(earliest[4:6]),int(earliest[6:8])) + earlier = d - datetime.timedelta( 1 ) + comicid = str(earlier.strftime("%Y%m%d")) + + + else: + comicid = int(earliest) - 1 + + irow = self.get_irow(comic, comicid) + if irow and irow[0] == "skip": + print "problem with this one, fetching " + str(irow[2]) + " instead." + irow = self.get_irow(comic, irow[2]) + + if irow and len(irow) > 3: + print "got irow: " + print irow + print "\ninserting...\n" + self.insert_row_first([irow[0],irow[1],irow[2],irow[3],irow[4],irow[5]]) + else: + print "No comic found at " + comicid + + + + + + def fetch_newer(self, comic, newest): + if comic == "cyanide" or comic == "wulff" or comic == "babyblues" or comic[-9:] == "comicscom": + comicid = self.get_next_id(comic,newest) + if not comicid: + print "already at last comic" + return + elif len(newest) == 10: + # date id. + dt = string.split(newest, "-") + d = datetime.date(int(dt[0]),int(dt[1]),int(dt[2])) + newest = d + datetime.timedelta( 1 ) + comicid = newest.isoformat() + elif comic[-4:] == 'ckdm': + # comics kingdom. Easiest...? + d = datetime.date(int(newest[:4]),int(newest[4:6]),int(newest[6:8])) + earlier = d + datetime.timedelta( 1 ) + comicid = str(earlier.strftime("%Y%m%d")) + else: + comicid = int(newest) + 1 + + irow = self.get_irow(comic, comicid) + if irow and irow[0] == "skip": + print "problem with this one, fetching " + str(irow[1]) + " instead." + irow = self.get_irow(comic, irow[1]) + + if irow and len(irow) > 3: + print "got irow: " + print irow + print "\ninserting...\n" + self.insert_row([irow[0],irow[1],irow[2],irow[3],irow[4],irow[5]]) + else: + print "No comic found at " + str(comicid) + + + + + def fetch_latest_std(self, comic, latest): + print "fetching new after " + str(comic) + " " + str(latest) + next = False + dateid = False + if comic == 'cyanide': + next = self.get_next_id(comic, latest) + if not next: + return + else: + comicid = next + else: + if len(str(latest)) == 10: + # date id. + dateid = True + dt = string.split(latest, "-") + d = datetime.date(int(dt[0]),int(dt[1]),int(dt[2])) + newer = d + datetime.timedelta( 1 ) + comicid = newer.isoformat() + else: + comicid = int(latest) + 1 + + if len(self.db) > 0: + lasturl = self.db[0]['url'] + else: + lasturl = "http" + while True: + irow = self.get_irow(comic, comicid) + if irow: + print "got irow: " + str(irow) + if str(irow[0]) == 'skip': + print "skipping this one..." + next = int(irow[1]) + else: + if irow[3] == lasturl: + print "Looping the same, break break break!" + break + lasturl = irow[3] + print "inserting..." + self.insert_row([irow[0],irow[1],irow[2],irow[3],irow[4],irow[5]]) + if len(irow) > 6: + next = irow[6] + if not next: + break + if dateid: + dt = string.split(comicid, "-") + d = datetime.date(int(dt[0]),int(dt[1]),int(dt[2])) + newer = d + datetime.timedelta( 1 ) + comicid = newer.isoformat() + elif next: + comicid = next + else: + comicid += 1 + else: + break + + + + + def get_next_id(self, comic, number): + if comic == 'babyblues': + link = "http://www.babyblues.com/archive/index.php?formname=getstrip&GoToDay=" + str(number) + print "link: " + link + try: + f = urllib2.urlopen(link) + hcode = f.code + except: + hcode = 404 + print "got hcode = " + str(hcode) + "\n" + if (hcode != 200): + return False + else: + print "checking next Babyblues date.." + s = f.read() + f.close() + # title: + splt = string.split(s, 'nextStripLink', 1) + if len(splt) < 2: + print "no 'prev' found" + return False + else: + next = splt[1][48:58] + print "got next: " + next + + return next + + if comic == 'cyanide': + link = "http://www.explosm.net/comics/" + str(number) + "/" + print "link: " + link + try: + f = urllib2.urlopen(link) + hcode = f.code + except: + hcode = 404 + print "got hcode = " + str(hcode) + "\n" + if (hcode != 200): + return False + else: + # print "Cyanide & Happiness is unreliable, so we need to track next and prev" + s = f.read() + f.close() + # title: + splt = string.split(s, 'Previous | Next >', 1) + if len(splt) < 2: + print "no 'next' found" + return False + else: + print "got next: " + splt[0] + return splt[0] + if comic == 'wulff': + link = "http://wulffmorgenthaler.com/default.aspx?id=" + number + print "link: " + link + try: + f = urllib2.urlopen(link) + hcode = f.code + except: + hcode = 404 + print "got hcode = " + str(hcode) + "\n" + if (hcode != 200): + return False + else: + s = f.read() + f.close() + # title: + splt = string.split(s, ' | < Previous', 1) + if len(splt) < 2 or len(splt[0]) > 5: + print "no 'next' found" + return False + else: + print "got previous: " + splt[0] + return splt[0] + elif comic == 'wulff': + link = "http://wulffmorgenthaler.com/default.aspx?id=" + number + print "link: " + link + try: + f = urllib2.urlopen(link) + hcode = f.code + except: + hcode = 404 + print "got hcode = " + str(hcode) + "\n" + if (hcode != 200): + return False + else: + s = f.read() + f.close() + # title: + splt = string.split(s, ' today: + print "Fetching the future! Break break break!" + return False + else: + return False + + print "link: " + link + try: + f = urllib2.urlopen(link) + hcode = f.code + except: + hcode = 404 + print "got hcode = " + str(hcode) + "\n" + if (hcode != 200): + return False + else: + # Build db entry. + # they look like: comic,id,link,url,filename,title + # We already have comic, number/id and link + + if comic == 'xkcd': + s = f.read() + f.close() + # This should be done with regex but... + splt = string.split(s, 'png" title="', 1) + splt = string.split(splt[1], '" alt="', 1) + title = splt[0] + splt = string.split(splt[1], "

Image URL (for hotlinking/embedding): ", 1) + splt = string.split(splt[1], "

", 1) + url = splt[0] + + + elif comic == 'sinfest': + s = f.read() + f.close() + splt = string.split(s, 'height="107"', 1) + splt = string.split(splt[1], '', 1)
+				url = splt[0]
+				if len(url) < 49:
+					print ', 1) + title = splt[0] + + elif comic == 'dilbert': + s = f.read() + f.close() + splt = string.split(s, 'input type="hidden" name="PrintPath" value="', 1) + splt = string.split(splt[1], '" />', 1) + url = "http://dilbert.com" + splt[0] + if len(url) < 50: + print "Fake 404! Break break break!" + return False + title = "" + + elif comic == 'phd': + s = f.read() + f.close() + # title: + splt = string.split(s, 'PHD Comics: ', 1) + splt = string.split(splt[1], '', 1) + title = splt[0]; + splt = string.split(splt[1], '', 1) + url = splt[0] + if len(url) < 49: + print "Fake 404! Break break break!" + return False + + elif comic == 'cyanide': + s = f.read() + f.close() + # title: + splt = string.split(s, ' First
| < ', 1) + prev = splt[0]; + print "got prev: " + prev + splt = string.split(s, 'Previous | Next >', 1) + if len(splt[0]) > 10: + next = False + else: + next = splt[0] + print "got next: " + next + + splt = string.split(s, '', 1) + if len(splt) < 2: + print "no comic?" + return False + splt = string.split(splt[1], ' by ', 1) + url = "http://www.explosm" + splt[0] + splt2 = string.rsplit(url, "/", 1) + filename = splt2[1] + irow = [comic,number,link,url,filename,title,next,prev] + return irow + + + elif comic == 'babyblues': + # babyblues is type .gif + s = f.read() + f.close() + splt = string.split(s, 'http://est.rbma.com/content/Baby_Blues?date=', 1) + flnm = splt[1][:8] + # check filename... + datesplt = string.split(number, "/") + flncheck = datesplt[2] + datesplt[0] + datesplt[1] + if not flnm == flncheck: + print "incorrect filename, end of line. Break break break!" + return False + url = 'http://est.rbma.com/content/Baby_Blues?date=' + flnm + title = number + " (2 weeks delay)" + filename = flnm + ".gif" + irow = [comic,number,link,url,filename,title] + return irow + + + elif comic == 'wulff': + # wulf is type .gif + s = f.read() + f.close() + splt = string.split(s, ' 22: + titl = titl[:19] + "..." + self.label.set_markup(self.get_markup()) + self.e_goweb.add(self.label) + self.e_goweb.show_all() + + elif func == 'prev': + self.db.currentcomic += 1 + self.imgvpos = 0 + self.e_open.remove(self.comic_image) + self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos) + self.e_open.add(self.comic_image) + self.e_open.show_all() + self.e_goweb.remove(self.label) + titl = str(self.db.db[self.db.currentcomic]['title']) + if len(titl) > 22: + titl = titl[:19] + "..." + self.label.set_markup(self.get_markup()) + self.e_goweb.add(self.label) + self.e_goweb.show_all() + + elif func == 'switch': + self.active_comics = self.get_active_comics() + print "closing log" + #sys.stdout.close() + #sys.stdout = sys.__stdout__ + #sys.stderr.close() + #sys.stderr = sys.__stderr__ + print "active comics: " + str(self.active_comics) + self.keypointer = (self.keypointer + 1) % len(self.active_comics) + self.imgvpos = 0 + self.db = [] + print "switching to " + self.active_comics[self.keypointer] + self.comicname = comics[self.active_comics[self.keypointer]]['name'] + self.db = ComicDb(self.active_comics[self.keypointer]) + self.e_open.remove(self.comic_image) + self.comic_image = self.get_resized_pixmap(self.db.get_comic(), self.imgvpos) + self.e_goweb.remove(self.label) + titl = str(self.db.db[self.db.currentcomic]['title']) + if len(titl) > 22: + titl = titl[:19] + "..." + self.label.set_markup(self.get_markup()) + self.e_goweb.add(self.label) + self.e_goweb.show_all() + self.e_open.add(self.comic_image) + self.e_open.show_all() + + else: + return False + self.draw(widget, "0") + + # this one only switches to pressed button image + def button_press(self, widget, event): + if not event.type == gtk.gdk.BUTTON_PRESS: + return False + self.draw(widget, "1") + + # this one cancels a button press when pointer is moved out from it after press. + def button_out(self, widget, event): + if not event.type == gtk.gdk.BUTTON_PRESS: + return False + self.draw(widget, "0") + + # no fancy cairo stuff here. simply launches url in browser. + def view_comic(self, widget, event): + if not event.type == gtk.gdk.BUTTON_RELEASE: + return False + link = self.db.get_link() + self.osso_rpc.rpc_run_with_defaults("osso_browser", "open_new_window", (link,)) + + + + # this function modifies the image to fit the widget and then returns it. + + def get_resized_pixmap(self, filename, vpos): + print "vpos: " + str(vpos) + + width = int(self.sizes['width']) + height = int(self.sizes['height']) + picwidth = width - 2 + maxheight = height - 48 + + pixbuf = gtk.gdk.pixbuf_new_from_file(filename) + parent_buf = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, pixbuf.get_has_alpha(), 8, width, maxheight) + parent_buf.fill(0xffffffff) + retimg = gtk.Image() + # get correct width/height + new_height = 1 + new_width = picwidth + new_height = int((float(picwidth) / pixbuf.get_width()) * pixbuf.get_height()) + scaled_buf = pixbuf.scale_simple(new_width,new_height,gtk.gdk.INTERP_BILINEAR) + print "scaled height: " + str(scaled_buf.get_height()) + if scaled_buf.get_height() > maxheight: + if scaled_buf.get_height() - (vpos + maxheight) < 0: + vpos = scaled_buf.get_height() - maxheight + scaled_buf.copy_area(0,vpos,picwidth,maxheight,parent_buf,1,0) + # parent_buf.composite(scaled_buf, 0, 0, 478, maxheight, 0, 0, 478, maxheight, gtk.gdk.INTERP_BILINEAR, 0) + self.imgvpos = vpos + else: + tmpy = maxheight - scaled_buf.get_height() + if tmpy > 0: + tmpy = tmpy / 2 + + scaled_buf.copy_area(0,0,picwidth,scaled_buf.get_height(),parent_buf,1,tmpy) + self.imgvpos = 0 +# test = parent_buf.render_pixmap_and_mask(0) +# parent_buf.add_alpha(True,chr(255),chr(255),chr(255)) + retimg.set_from_pixbuf(parent_buf) + print retimg.get_pixel_size() + print "vpos after fixing image: " + str(self.imgvpos) + return retimg + + def screen_changed(self, widget, old_screen=None): + global supports_alpha + + # To check if the display supports alpha channels, get the colormap + screen = self.get_screen() + colormap = screen.get_rgba_colormap() + if colormap == None: + print 'Your screen does not support alpha channels!' + colormap = screen.get_rgb_colormap() + supports_alpha = False + else: + # print 'Your screen supports alpha channels!' + supports_alpha = True + + # Now we have a colormap appropriate for the screen, use it + self.set_colormap(colormap) + + return False + + + def get_active_comics(self): + print "get list" + + if os.path.isfile(activecomics) == True: + print "found " + activecomics + dbf = open(activecomics, 'r') + dbr = csv.reader(dbf) + try: + active = dbr.next() + except: + active = [] + dbf.close() + return active + # if not, copy it. + else: + print "file " + activecomics + " not found" + if not os.path.exists(dbdir): + print "path not found: " + dbdir + try: + os.makedirs(dbdir) + except: + print "settings dir creation failed. Exiting." + exit() + try: +# dbf = file(activecomics, 'w') +# dbf.close() + dbf = open(activecomics, 'w') + except: + print "error storing settings" + exit() + dbw = csv.writer(dbf) + dbw.writerow(defaultcomics) + dbf.close() + ret = defaultcomics + return ret + + + def get_markup(self): + if len(self.comicname + " " + str(self.db.db[self.db.currentcomic]['id'])) < 20: + return ' ' + self.comicname + ' ' + str(self.db.db[self.db.currentcomic]['id']) + '\n ' + str(self.db.db[self.db.currentcomic]['title']) + '' + else: + return ' ' + self.comicname + '' + '\n ' + str(self.db.db[self.db.currentcomic]['title']) + '' + + + #check if settings file exists + + #if not, write defaults + +# ************************* OPTION DIALOGS ******************************** + + def show_options(self, widget): + print "loading options dialog" + dialog = gtk.Dialog("Comic Widget", None, gtk.DIALOG_DESTROY_WITH_PARENT) + + about_button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL) + about_button.set_text("About", "See Author, Copyright and License information") + about_button.set_alignment(0,0,0,0) + about_button.connect("clicked", self.show_about) + + comics_button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL) + comics_button.set_text("Comics", "Choose which comics to view") + comics_button.set_alignment(0,0,0,0) + comics_button.connect("clicked", self.show_comics) + + # size_button = hildon.Button(gtk.HILDON_SIZE_AUTO_WIDTH | gtk.HILDON_SIZE_FINGER_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL) + # size_button.set_text("Change size", "Change the size of the widget") + # size_button.set_alignment(0,0,0,0) + # size_button.connect("clicked", self.show_size) + + print "adding buttons to dialog, starting with comics" + dialog.vbox.pack_start(comics_button, True, True, 0) + print "adding about button" + dialog.vbox.pack_start(about_button, True, True, 0) + # dialog.vbox.pack_start(size_button, True, True, 0) + print "show!" + dialog.show_all() + dialog.run() + dialog.destroy() + + def show_about(self, widget): + print "in about dialog" + dialog = gtk.AboutDialog() + dialog.set_title("About") + dialog.set_name("Comic widget") + dialog.set_version(APP_VERSION) + dialog.set_copyright("Copyright 2010 Marcus Wikstrom") + dialog.set_authors(["Marcus Wikstrom \nLogo by Martin Wikstrom\n\nSpecial thanks to all the great python developers on t.m.o who share their code, and the helpful wizards on #maemo."]) + dialog.set_logo(gtk.gdk.pixbuf_new_from_file("/opt/comic-widget/images/icon2-64x64.png")) + dialog.set_comments("Silly rabbit, tricks are for kids.") + dialog.set_license("""This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License. .""") + dialog.set_wrap_license(True) + dialog.show_all() + dialog.run() + dialog.destroy() + + def show_comics(self, widget, data = None): + print "in comics dialog! yay!" + dialog = gtk.Dialog("Choose comics", None, gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_NO_SEPARATOR) + comiclist = comics.keys() + comiclist.sort() + buttonlist = {} + self.connlist = {} + self.liststore = gtk.ListStore(str,str,bool) + for comicid in comiclist: + active = False + for acomic in self.active_comics: + if acomic == comicid: + active = True + break + if active: + self.liststore.append(["* " + comics[comicid]['name'],comicid, active]) + else: + self.liststore.append([" " + comics[comicid]['name'],comicid, active]) + self.treeview = hildon.GtkTreeView(gtk.HILDON_UI_MODE_EDIT) + self.treeview.set_model(self.liststore) + self.treeview.set_reorderable(True) + tvcolumn = gtk.TreeViewColumn('Column 0') + self.treeview.append_column(tvcolumn) + cell = gtk.CellRendererText() + tvcolumn.pack_start(cell, True) + tvcolumn.add_attribute(cell, 'text', 0) + + ts = hildon.PannableArea() + + ts.set_size_request(-1, 280) + ts.add(self.treeview) + selection = self.treeview.get_selection() + + dialog.vbox.pack_start(ts,True,True,0) + dialog.show_all() + selection.connect("changed", self.pick_comic, comiclist) + dialog.run() + dialog.destroy() + + def pick_comic(self, widget, data): + selected = widget.get_selected() + if selected == None: + return False + + print selected[0].get_value(selected[1],0) + ", " + selected[0].get_value(selected[1],1) + ", " + str(selected[0].get_value(selected[1],2)) + if selected[0].get_value(selected[1],2): + self.remove_comic(selected[0].get_value(selected[1],1)) + splt = selected[0].get_value(selected[1],0)[1:] + selected[0].set_value(selected[1],0," " + splt) + selected[0].set_value(selected[1],2,False) + else: + self.add_comic(selected[0].get_value(selected[1],1)) + splt = selected[0].get_value(selected[1],0)[1:] + selected[0].set_value(selected[1],0,"*" + splt) + selected[0].set_value(selected[1],2,True) + + + def add_comic(self, comicid): + if os.path.isfile(activecomics) == True: + print "added " + comicid + " to " + str(self.active_comics) + try: + found = self.active_comics.index(comicid) + except: + self.active_comics.append(comicid) + dbf = open(activecomics, 'w') + dbw = csv.writer(dbf) + dbw.writerow(self.active_comics) + dbf.close() + + def remove_comic(self, comicid): + if os.path.isfile(activecomics) == True: + print "removing " + comicid + " from " + str(self.active_comics) + try: + del self.active_comics[self.active_comics.index(comicid)] + except: + pass + dbf = open(activecomics, 'w') + dbw = csv.writer(dbf) + dbw.writerow(self.active_comics) + dbf.close() + + + def get_size_settings(self): + # defaults = {'width':480,'height':230} + # options: w 798 700 600 500 480 400 + # options: h 420 360 310 270 240 200 + print "checking to see if config file is available" + if os.path.isfile(sizefile) == True: + print "found " + sizefile + dbf = open(sizefile, 'r') + dbr = csv.reader(dbf) + try: + cfg = dbr.next() + except: + dbf.close() + print "empty config file" + return defaults + dbf.close() + + sizes = {'width':int(cfg[0]),'height':int(cfg[1])} + if sizes['width'] > 798: + sizes['width'] = 798 + if sizes['width'] < 400: + sizes['width'] = 400 + if sizes['height'] > 420: + sizes['height'] = 420 + if sizes['height'] < 200: + sizes['height'] = 200 + + return sizes + + + # if not, copy it. + else: + print "no config file" + return defaults + +hd_plugin_type = ComicHomePlugin + + +if __name__ == "__main__": + import gobject + gobject.type_register(hd_plugin_type) + obj = gobject.new(hd_plugin_type, plugin_id="plugin_id") + obj.show_all() + gtk.main() diff --git a/debian/comic-widget/usr/share/applications/hildon-home/comicwidget.desktop b/debian/comic-widget/usr/share/applications/hildon-home/comicwidget.desktop new file mode 100644 index 0000000..24c77eb --- /dev/null +++ b/debian/comic-widget/usr/share/applications/hildon-home/comicwidget.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=Comic Widget + +Comment=Simple Comic widget +Type=python +X-Path=comicwidget.py + diff --git a/debian/comic-widget/usr/share/doc/comic-widget/changelog.Debian.gz b/debian/comic-widget/usr/share/doc/comic-widget/changelog.Debian.gz new file mode 100644 index 0000000000000000000000000000000000000000..be2bd44e1a313ad4ba212ecd865d7fa44ca96fee GIT binary patch literal 157 zcmV;O0Al|iiwFo%R&h%L17m1mZf9j|Z)YwOLc7Y@{$kbG1dv{V>xRC62V%?{yB9F<=Q5 zVWkLll(7FbHO)DmeY7Rv?WUAt@VI!gbPuZ&t-1lPLVL&)9yCBpC811rFr7Bo$p-rY Lv2);nhX4Qo5^6*6 literal 0 HcmV?d00001 diff --git a/debian/comic-widget/usr/share/doc/comic-widget/changelog.gz b/debian/comic-widget/usr/share/doc/comic-widget/changelog.gz new file mode 100644 index 0000000000000000000000000000000000000000..45003b74adacf014a87d4036ef058289d3062a55 GIT binary patch literal 150 zcmV;H0BQdpiwFo%R&h%L17m1mZf9j|Z)X4%i@OfOAQ(n>p5hxd3IW8ydWn;pn~8Ia ze;U$K5-ugay?Dlxb8PU=^6EY#Wo)D{LUXl6%Kb3Y86}Ri*za`?l`&um6=9_ab(FCG zH8ssSo_(|>;q9iBWAM0mvUCrt6Ro-duR?ps6CN}`OC_O9cQBnc*vSU_0kL!7fQJA8 E0HG~Ge*gdg literal 0 HcmV?d00001 diff --git a/debian/comic-widget/usr/share/doc/comic-widget/copyright b/debian/comic-widget/usr/share/doc/comic-widget/copyright new file mode 100644 index 0000000..f274add --- /dev/null +++ b/debian/comic-widget/usr/share/doc/comic-widget/copyright @@ -0,0 +1,35 @@ +This package was py2debianized(0.5.3) by Marcus Wikstrom on +Tue, 09 Feb 2010 14:34:24 +0000. + +It was downloaded from + +Upstream Author: Marcus Wikstrom + +Copyright: 2010 by Marcus Wikstrom + +License: + + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + + +The Debian packaging is (C) 2010, Marcus Wikstrom and +is licensed under the GPL, see above. + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. diff --git a/debian/copyright b/debian/copyright index 9b56c28..f274add 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1,5 +1,5 @@ This package was py2debianized(0.5.3) by Marcus Wikstrom on -Mon, 08 Feb 2010 12:54:33 +0000. +Tue, 09 Feb 2010 14:34:24 +0000. It was downloaded from diff --git a/debian/dirs b/debian/dirs index 3c241e3..7857d19 100644 --- a/debian/dirs +++ b/debian/dirs @@ -1,4 +1,3 @@ -opt/comic-widget/db/ opt/comic-widget/images/ usr/lib/hildon-desktop/ usr/share/applications/hildon-home/ \ No newline at end of file diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..ec9bdf4 --- /dev/null +++ b/debian/files @@ -0,0 +1 @@ +comic-widget_0.4.2-1_all.deb user/desktop extra diff --git a/debian/rules b/debian/rules index 56c0d2f..00acadc 100755 --- a/debian/rules +++ b/debian/rules @@ -70,18 +70,6 @@ install: build cp -a "src/opt/comic-widget/images/up0-48x48.png" "$(CURDIR)/debian/comic-widget/opt/comic-widget/images/up0-48x48.png" mkdir -p "$(CURDIR)/debian/comic-widget/opt/comic-widget/images/" cp -a "src/opt/comic-widget/images/up1-48x48.png" "$(CURDIR)/debian/comic-widget/opt/comic-widget/images/up1-48x48.png" - mkdir -p "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/" - cp -a "src/opt/comic-widget/db/comicdb.cyanide.csv" "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/comicdb.cyanide.csv" - mkdir -p "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/" - cp -a "src/opt/comic-widget/db/comicdb.dilbert.csv" "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/comicdb.dilbert.csv" - mkdir -p "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/" - cp -a "src/opt/comic-widget/db/comicdb.phd.csv" "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/comicdb.phd.csv" - mkdir -p "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/" - cp -a "src/opt/comic-widget/db/comicdb.sinfest.csv" "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/comicdb.sinfest.csv" - mkdir -p "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/" - cp -a "src/opt/comic-widget/db/comicdb.wulff.csv" "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/comicdb.wulff.csv" - mkdir -p "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/" - cp -a "src/opt/comic-widget/db/comicdb.xkcd.csv" "$(CURDIR)/debian/comic-widget/opt/comic-widget/db/comicdb.xkcd.csv" mkdir -p "$(CURDIR)/debian/comic-widget/usr/share/applications/hildon-home/" cp -a "src/usr/share/applications/hildon-home/comicwidget.desktop" "$(CURDIR)/debian/comic-widget/usr/share/applications/hildon-home/comicwidget.desktop" diff --git a/debs/comic-widget_0.4.2-1_all.deb b/debs/comic-widget_0.4.2-1_all.deb new file mode 100644 index 0000000000000000000000000000000000000000..bcf036ffc0ac9999aeec0293b591930b19c8b5e5 GIT binary patch literal 41418 zcmb5UQ>-vb6s37=+qP}nwr$(CZCn4bZQHhOqi;`7cjm1#D?2N-c2f0L_3-T?+_Bp@JQWMX4wXXN1IWFa76_%Hu&XJlYtWBIT5U;V!_fMTL! zfHJnXb8)h_p>r{GqBHmUzwc*dXJGnY2N*!%M?(PoKLWn-T5G(LNYmwiqJE$40KKCk z2?ZEL+{Nx401jaX0rcr{sMadpLSA6?%2bp%jN$;#Bxp$3I%XrEv+v*g9RkcFV7QLI ziuCvXF@_O@2pYr)>Yw+_ClL6ySHHIZgY=k_X3?$l&;IoLsJ{F0&i~Vo+6ySTORKd1 z4ZevlKId=X4=Dn9jsBVYIs*~=bp!2t{eurjBz09W>C;c{{g;HFPet2!a%j4w^RjcN ze$W2Q{toWa&}8y)H0nJ|Mlf^gbrBxTsQRNq`*pWwqg{3`BrmB+d#1j(G=af76FL)C zBYn14H`JTr3;q}OGqo4a|LJ-A=c+`*`dydYXtmh;#lFH|PKT z1I_>YtFk0+$)=09W4Tv0v54>HniCx)@mM6L+Lpt=@%*J4TXxK=|5KGWr#r9rC!I~Y z;eWSw*``eRccb%{BeQZ}e*OF+|Du!5q*ZIl3NPC{=Wk`#OQ)FYy7o;zp=7oukM`$g zxI0prUh?}<)^B#p@7JS9H+9bqFnnk9`!BY!_3vMPl(Xa6`Pk8RD!;+^+trDdXN;Y% zfF_04XNXxB=^5Ht#1CgFzdIKXy^KKJzxT0RfhO8}L3!q^{nI(@xk)hP+p}}0pO3H8 zOOf9XPAfjPJ)ARvgV_&XWlSwBEZW`>4>Z=8KPduFm-AdQ+HZMYy&ieYtL zIC3n^j@ia`*(iPZV@5n>Sna6pEGt)CnA2glU3`6KI>>2{8Pv>CJug$PtoLC%6SGN8 zXedoG-5aDZG8j3La1O}ZM`_WuNAx;J6WJ71_%AH=uH?ccr3&nTd0=!%&SB|?N6XpH z4gvT?{fSBz-2iHEIPq0b00s+7I`A0df_J#}i_Kod$=&EQXj5;A>0q)G2JWo=rUMa` zS30}S^y-s9ZQrma)>231ZB8**+4Ioy`os?+nAn}<3uk2zA67BTF4q)1r)1EDZ9__H zaj@un!#a<$Te5h3^lNmj1ENQjxPe3A{Y1k+{BEzdz{}W?zQwd*sk=;En0K|xZfF^; zMCjK8N012ft-uP?)I0_r!#Ask=~vaSBvaV7Vgk=+U9gFG`1r*jL`%F}d3WED4EZ9s z?KnGn0(^q8H2gl~*)vMYCBM6iS&@~(|B&KV^=jimlH11^R(AqHOASzNadinNpmG#E zzi^N0lUm=3k|5+;Vq-aP@dm7uCg;ds$?Z{(IOP9PIW?YnePY+o!{0%o#cyoF39`p9 zaAmz^0c$6N3?e(TxlU#cTz^5aVnR{a7A_N^;mhWd#)5 zCLdA|aii@&CtRl{f7G5GkPAwb5D>F6CPXN+#wLTcbXUg@Ao{!*r`iNnfO`X!REZgO zMRC@Pjpv<&yW?kRB+W4Q@~WR2PiKENRW|*G!?9IbR9QXO{!?+u&RL*SCp&k*VcCIt$c^Z z@D91<9E8zFL$((KKL?bMr4PaY2WvaMMoNg9#8XnG^-`-%O*+?~cWa9#{7UNWu5LF^ zsj|fep~J1FwN^FZg`h|@qTJ`OuUObJIz}!LVm5Rwj9WR95wE$9lYj5?1v=Hp7uXbo z99Tqi8r^KaNRde9;=m%zAZX3r5Akk~`Uz@Zqm~a=zj;=>+S>EGoNGFaJC5U0XJ&vC zy0K&dRC=Zn|*>cFOC#{7+{*&|1=bx0|Br^8m(NbfrSQx2C_oe#z)1S zH}yBu0Wqm&?=mK+=}v7FbU;`y@6fM>4L6BH)>mwDM9dT$TQcL@qSc%VnhPeLQSYT{ z9qsLbSy$fvJSP{?QGXIv%EAuKEWvUQP3-< zJOsb0;?;_6e093>N0(Kt?9Mu3OVZ-WoI4j^n>(Ngpe{X*JIu-E(f-gaj$GIq9z6!$ zRc})HA439GrXi@zDd$U&?yPg4_e0jacjKK8-)4VB3;XT`{4+ihoiL>tUE~b^+vi?w zOs|epHK9BDg~dPqm2`KW6jNvnON$w4Mj|WG?b>ZEXKvt|*veTW&9p0yjD6pCnwesh z@X^erLk6wkDJH#u4b&27(L~SLzu>bp?&?WzZi$E>w1XOznmUJoi-dWkMSLa@B`s>X z^~x#bV$`n8SsN_V)22 zLk-AgdQAI-a#lVQqh_?r5>Itd5gD&!-+^NFR6Rp%S;&@m$G-P-nam|SYZ*14RnQW6 z4-hYpl`!{)Sfr2iq!SvYpzLWM1I~MV&^t2 zFQJg>LjtaU+j-QUvAA$?4Qi_>bmU;U;7FqCa^5AwM%5|eMy)SO12(XZ@7!3|)aPON z5Hm!1r31co!gaZtR%T2tk^pRo<9v6r`nu0RGM_F>=8o#k#Jp~9Q^~)?Kc5!|I8fw1 z^#B8?5t;+ZlbDqPL-Y_MfhM~Y|EYOc`$mV$IxG`Xf9?UjriNXN5Cr9A;_FUO(~*{4QugQKMGC{)&H_m2G}`%DpjYyR4erBAFh3Fpu7?AC!c+xOfhTbS6A5>1VY z0bm_bYrz}v~)^7C%#f@F$Mep_Jq+6v1l-qaV3P9Gt6V(9B^*)I`zys)?Av58;X z>VfSd81{ym|L9)k06K9?{72T7+hB}R8 z_E>}7)ZBck!HL5gJX$W>DCeJE5Z`sdvD2hlJ5yA*H#qlVbQ&e=`N#U85&m8Kx%EC7 zdp*nUya8>%oYfEy55L7lntJbZThzpiO@XB+9P8(FG_yrn`cdI@ zRgWVqzEtyU?L0o}P&LE6#(l|4@;!4+SVzT@W~Z(agoRMg zRZN>j0doBIwG(~DT;Siz+_DwneJ5$QK?J8!zUrtpgiGOAq8=9fJgkyw62vmIc;{066DXNp_% z8B#qfp`tKoI?i4;SP>kAQbkYwCRQ63 z5$hC5(t2bZV7pHT_!>F1@wgWNb1@Fya^)vm$^3fydcQ=vkbKSJb(YYj$t5utkC=t{ z03z=Nb4nwT%iV|D4@vX+;J5kW>w=!Z+cD=T)hO;gc z(b*|y%^*8G5XT>{F*OHVJf%lG<9Ahq>q`eHBm%*r-ogewi1F>(X23Q+ZK~y7{*V@6*E3U#s>RHMuN2z;WZp2tpWs=_3!jeS&*@{*DJKKLYX{f?PmiI zo8tbp>;cHnLNc+&nmH!Q$IK(4mco%Ty#(249uFi@nJitus9My*Te|uT&e6MFbw1wV zX6wsF%o@Ryjskf`);V?XP%I0WTEyn?a8Z%pDXk>*jD!A`&XN|pT#{?RZx#pDode?SvvBA##%B` z7OH8W#MoKMTQVnWS);s9o!tltoLBK@v8Gf}8jM_K)a2ac!3qb)#LiOJT*xaEilZ1b z(8a~uX#^$QWa_`|da`O|M_9b2@vNUf`H5x8b&hk%AoXyM*F?~gZaQ_wWKIH&Muy@t z*Eh4lG}o4Y_34Xy4JuWML16qHWR!!$rk-~dgTT45pc>A33zdHA6dCd;Ywn`IH7Y+R zw`aw$uJ@Rl%i6+&m7xbIsazBw4Q+Wm(shmnd39e5RPvQru+8Ai!nGb=Ze(VmeD6J) zS$e(}<}jY&U+ z_n#U!G;Lo9)cab2>ZC@3nqnXHJ9(=nuCOV;6V0n z6}g@5#nMD=v?&*)U2c0t@{6q!q0~;Q8;d`V8UXW>^g*1(rgvYM!MwgnPMr<8Llq%= zpAPlrJbt^3w2T@Bdab^n0J88CN~AW9(QoFrc>819gkvsgmT7dTl5Y}p>Nb0&={J4Y zpa2wE)2q3)ogE<~%+V3A+~*KjU}jA7YUj6BdLvEGX>WEvS?BDSeB@LXd)hi{Dh#HSUU?6R6OaM(yyK~r(*D;lvLqr z#QY@Sfo)A+7;Gs}Ul?%>=^@7#H?g&0g*NesMkRp6vOvJB4clEY2Vg(7(3v^5Sc^~ z!BJSi`j0jrl*m9`Dy?9g2Qz#OxnC|4DS}=wNSoO$H|t6fHwnY6I=tG20gkNcd_PU1 z)-GC;2~E)pClf7L$sPxYl&nGCY-XAbU0dc;u~RK_Q1_{okNXp9??egk_QwKfQzwE5 za|}rE5Co4q{@A2}$TS6v3f#G^?p@OW^&yh>-f#CfDhy3ymF&hXTu|rSH^5gYhv@>$ zia#8I_zvg@?;dVQ8*N}LXuQvlZY<(zo>+DX767jPIO7eN0Q+Y2Rls^@dglSS0fF+r zPEB(V_pe`!e-G-8TQAQ|)!pIoWBxtg{EokCW$WK|XMe_L{sb^b^Za>#LI^O(dry6T zFeD6_Mks!(A0&{33TeqAa04PTrVdHu9&SCaLqOkN91tqDDkjVculaD_fl1g>zicie zq`-nGfe|pG6f9%T9HJ8#!UHHXkuf4q&-u)*8?E1yAYzs%g`AKhkddPjLCOU0V?~V^ zqJ|*fXEIOaT1iNsq10o>2*ZmMGf5=mOBno`2Ph&*5WLy0B%g2Xe!A$Gh87_?@W_yW zhMZ|e6oE=4f~Vz&0zu!_kp8-;dAXAliZM}*6hZ|&{Kifw!VFGyXk_)@`OK=4djtFq zE<+3anFu6+loaxkOh8906Nos06c}-mI6=%o?`JYYDgXMU(#0X=@x}}AW94Rv=-{Pi0YXM zhfqXDB;*jym4qcyrkRmAL#GRAdiD06K&DMuOwX{A{7qy&4fCstbm$-;gCISWa=qjb z-k%*9IB}zbh*%~cVZN-hm@cDgE~59Mj+|a4L6V43L`6XSHmReTL1Kt;hzCf7DenD~ zBWDh&F8z>35hHVh6jYD|HB$r_qH=$qot23tvkva-LKYZURFQsoaPkBD@(0s>vwuF) z`1K#R{=W4CN#-I$ND4@}WdZVKxg!J!a`NM{k061_{E^sIVZM(%fB6$&zfSD+eI7>8 z|Nq(_{V({rx`76O0sw%Cp^M@F!O#Dp<^LPOW@cq&`d<|L|4X2+yG>I_xZP-Vrl(bP zr{_ne|EFYh|EDki7h?Wf#pv%f{EYd%PPgTmU$bB3#XyKsrBX9Dx1fGWhzkls-@CJS z?u|}Pf2TjU{d_&spFKav#K^!*$HY9#^gU^6UR(g&X9E5Lo?f4q+y%tL?;BWOJ?p1_ zS?B-pTd_2^y2&;FdEc8G{KWF};xhAI<-h+O-Lp5hu(6l8v9dF<{&KT~{r$Z&FE%iJ zNB;dG{GP6UmW{?W|1tm9WBeY?zi{V%NB;ZM{EoHJwLP!MT;I-Ex45>E`J;a@H#GW` ze=s*Q`-c97>H9Cf2mjH~)I0;cyZ9gexwkQJVk&A-&{XV|*B=@QLHYN;jKKlEepNs{ zBRz5hx~L$a0#xJ;@_qb(O$#Wgoa^^~5v|`oaR)XdE4zaL1c?0_gM&!S4Zr6?-jdMK z!t{bg085DNLp_E4azigkYRpK^uWoLxk3tH}4`}R7tV8UrY)`=GtLSLSt-#;L3ke?z zeM^~Tqf6%~2z)~fHkq41Kv&QLtP1t__&~^+Lt zY4<*_%}vdv0x;4FKqeNZvR4PRzXpu(zP!yf05ID0$81f)t^3iRM|^q*_3Ly2 z?2#7jAJhqV`1_ULMFB@>0@hIAndN3_Fj;1eOhNn%iS^rZb5!bH(rpX>RggIvVisBf z^8Wpez1tgKpFYDM@@pUDfn-I^j_T|s1ONhtK-tCj1JK&hTXN_9A_@RelYk=m5d;B%073{@8aIoko+@_U zzjARazDJmXbO0)kNaso*u+BM2xtSGdn^&q=2#POF}ZtQX4WUra3Q_59hBqk=b?Va=_cRGW{cZuX6nXpjeN}&lixefsIK%y5f50og(|_wP z&(~HciM`C0?OpnKP4sO&K!+EBMo!KkB%fp80~XzEB{?^`2`$4vCP~2PNPa>TU4#(8 zko1`g3SNjL)FpG8xNExmFW*NLaSl7gl<`~Tm-$nG%~&SRv=fR*{HZF(Z1d8vjZLFbYtV)?V+ zNqB+aLNzJ?Gwe~vGX>9rV_gw#D-9GzZSbhTR%KTS69ORoo#-fPrCQETC}V1fnTt{l zW#5|1ZJKyRO+qaTqa&Qx&@~s>Vu+95T8`NNpzLY-9BR?3G_OQg@7=d%%)sb*X_!VT zCNC_>T*ratYO)X;Wsut10Z+EQR^}wK6r{@k^aOeh0u<^P_hy)v-KqDjYmpBa99|`{L*e71Kz4i&F;j023voeWg_#Z>{SE z%rk3oj9ZR7l8)aCBdqaOUQw|Glht2>3i$uvdeI=wK@Gp`i#gQJiCO7eJt)E;+4Q1} z+lYV_w`O(o3@C8`rBLlBGc@0w^gKjo!1->Ip{Qn2Vt5CfaHNF6e91XJA2xuk;PKKi zr4Ap^ymipc!}iwJpwg{{#bOK(-;4NCli^jEC#0&jRaZ*rj5GfPl@?l!S>6cs!Bjxe zf+#m&z&RR#3;Ryp(He0$%o(LZ}8n zfe7g|p;qOpDRfD_7xF&7Gku{sH(@QQ_h`}EygmMS`FD7pY$2rHZ*ngpc;SGrXMz*? z?~-Kp4eYixGy75&kE!D5bkbHiy-4N=55>Dz+3Va9>gn)_?(XCfv19JjP&b=F2I1^D z2KrbID|30J$W8BS?3N4RN<(bsx}3h}eVB10Y?*ZO_{!_kGV--6wCh{fpGoqwacOIi zz%m(5ovV!1jzNNsgPVag+-|(hwx2_fhzSrnhv-aq-TTN9_#J$M43LuAWUT;+0xpuP zV<*0WRz4xcLC})GD17SV&TJiY`zCp(L`Vzeoe`s?LEpvG9Bbo1R*{sF)R2J0)ebQq zd9m1^69<4rHz6x;_wK#itO)PuuGb{dGKRkWJ35=t+}YVSnEy^al`Y9LS9jmfzK4te z%VF{b&Y9?KOnzL(Eamt;!M$$LZm7|Ea^?4R*-1Byfya`Z^%V~hfZ%QxQuy88tE5BsX6ErmK9qQCsp4)?UjBv{3S>Th@%$G>3%DhYXnkKJE4LHvdr27qf``s$ z87=)Bo;oR&nJ=zKqz2S-)*$gXZ3h&c~O~I8jWz>hL$kfym zJ{^RaUq(T+zp@3U%1=aDnzr7!Q3E8k9p5@ZggzhjG z-Pvt8Z=aQC9nmFseVj1-Gt)Fyh^LWFeD`l8{ojx z?`pQ+mIjXf43IZc7XhUUClpwJ&$A~J*p>uWz-smZsBL6)XLnryiJD2#9bvV9cCvJ$ z>|9!UhB!KRl8z#8t|`}oZMl{D1s2s(6c>AI>Esv)JT=&8o;N5*BoK6t!ndA6Gxc~f zabbK|a?FF&R3`LqeCNmZ%5X?)6N*W1`tp>)%(=u3>q!BY)b)2vrr2(?j6vz}c z3ksMP{GP$>t;$$$O=oI)&?yZs$~Y=3JZ+kxSq>JfAIo)q=2bC^$e29MTuXMbrEOrKH9 zA@h)VKtiSm0PsX=}g6$wmC~4I4=xCGL1Ty-Sng&Pb1fwiOPzVm2o)l_1}0{fevNUhXA)ZMNVsiCB{T~msA;n zja78tuO95rOaTGR9`I_?9Pcz)eU3^U;D8TugxDaI;22eqMJdTLOQSn_$JOLJm(`Me zWSasmM%>-`ytn#7V!Rb>ORSH;%C-hxfl}8@9}|ly-qAp$W1&#v@_>kH0Y;y=lVJU7 z;1H<(#tE6~a}O0k3qLM2)uOLP&xQMm33yK#-ds&Fu7C&&{bUE)m_~3E&qBl@C^gX& z_sq?w`F+fcf_JMvfu1O** z0}JXY6k!wDlTwqu#U)p^bqe{fYMa}EN}3B)yN^<|ZGCx8?;c*Bs(l&-xmexY_wx;nny9IL zNKHY_jhrM`Y0gRc#QBNI?HE{2CMcc17({P^gC~a4PU*l|k-5IgjleCgp^PRsaPb;8 z|Qg!cBIr$~B6 zc<5Sa3*UHURO38OgvuMuVz&_FeA7(3+5-ey_5we{g3`j>GUQ4bR5eI`xeU2Z?ch>| ze~BtiT;m1w^SjUu;zm{Cw_!!uNksA0T`siUnxkZo1(e$V9Jt24m#U6;}ioziUqnGR(v_U60 z1skfvMyzKaJplythSsde1x8+TF-5@&$LV)f2emAPn1|%BXQHV~xRB8d9&jcbWNR4) z@_Rq~En+-&Ke(B^CB_ull|}}qQJ=Hz3^I1UE#>#UwyX`9n#xX}cabx!I1e>RUy|%R zW-UVI%|Q!5!D~-zHjP%G4@5btgCbi<%gzHo_lnkL=r3)F{;Ui(R`RhA1F63ct}nh-PBqoYy4YcDB9+m#t1Q z&X+flK4a3a7vX@fi0-WiASKEdK*$odW0NF8LmeOlnQ8mZHLb=2&%EXGcHcm3S+sNc zT!O!pEU+;1>poF14~~6g-jeg6^^I#Ga?%jeI2D30q=|cz0QM8*gf>y{)FM3F+{oY9obM!V+SObI+B%PJ95PUh zu29te^PUvwe zQ1R>uaA98;mWbZBNKQY@MO0=aTB_l!B&MW1_ErFgJ3LdvgAVGQMat8s-yv37R+E2} zZG~o?dHJL@kD)(F1f&q)-N6CAn&R2(atz8`+itL)kwJjWvG}gUFbuixZ#FjH+d${iiCQ3(YL( zP6PI&uLM{J1e^YB;?ps}dbCmSlQJ2bF$LR&P*^5r)GlP47b*vzL8F)6N4ATN(^_mk z+FpO}kbLfu!Pm&`1pGBS{IIPS4=l;?q6g{@L>c6Rrs>Mpl*cEDm#b@>fzbH{>G|}Y z(Bx~04}j>Jc4a^KA9jmU)cp*hTKYY1n za15B(ECf>O``?89&)6B-U9h7K9}>wbrs}_cEzT>6y5@YGpMumT+5y1jG;V{-w4oU< zF_d2|?lEuV*B~Kq@D0%8Fo`4Q$%|5O(scIE+8n@pb7&GR0Qrq4-QnuvpmiJ>i>NpZ zbEuI<$~0GChQ)%NDa|7iDbEQ;(z=6f=2VR+E>Z+;ckXP9aSj1k95nn;0n3Kcn z?_BWc0VkV5smZ80Y-pZnEU&OF09EPO9ml)1P=nRVJcfSLX1vxuY}ox`)*pDdQ#Ybi z++AVEydGD9;yj}Tc{pLWrQuq;d3u}y4YDnoRS%hYN?ZsgApVsEy8xvv{!g18Q5ltv zq|Mqn2H>v`FK6xA5ux^$=%L?S7t!FKyUS`W>l=4cClaO06<4hf^83+$caMKFu(q}s z6`C2_8X3Q}pZR&2p`pM0!+#7--<5xV;m`bg_+R?Z{v91Zr+=D%{yz_sH#Cy()Svhe z5V5D&(Y!?cdli3u1K)*zJF95S)5tBVx$!=`t9wEIJQ@@d%2MdDquO;v{|p>179h#i zWe7xmiOe2?iRsktRJbW|U^Af@nQD_fQHS>w!e5S%|GP-Xo3Ag%fYBGGmQ zc*Q9uX)QM%liU5-m(8T;_(^(PrpdhAJ06P{&l$Tsmwun!n-{#!(J_&R#|N30ba;BN z9iF;HRi5h;A6nm=xxYScHBe&!mO!n~J8?ucCGfu<-dtC(P880(R8r@)Zy9f0b#)&M z>%}j*sEy9_?GDx}NSZYNs@}U7W91P2 zEUkR_3-#hkE+~3cFM216!sn!fHW$Fin=HF3SYtEO5_ha@EG-4`2$S#6$LPj@j>P*< z9!TPvk!Wuds8%&MzYC|WrBYs4$vC!swV%;!L7#oX);NQ1cbr<_R*Y;@F^i{|+@385 zLjxONZ}%`yIBi!WyxFt~r1(>`d$Tv{9?+)CQc4tAn;qbdhZVmF%0gplw78!Uw5lFa znOP~WJd&E;nRov6?bvd~ejVMsU^w%tbf|dZ5cp5d_31oekLm*6oVi&~kJ&)jUg0%g zjm+X!ubMU6=dtXky;WwnDGqkF7$zr)SfU)V3wm?g`A||;=949Bw9)IF)D1lHQd4ua zZ3j_IF+5@Sg)RL&b8-|2`A!L@G8MnGr*+lwOSRhR_b%YLdgs2N0dM%=)YG2bOD&rX zpZBql6K0CmHlwy|h25HzQsn7l>D#*bl^1&UkkyACxN_$a3UKof)onxA1uMh>^iM4I z`iHEcH)a#jz@l5b<+y^P6k6&RZR#Q6`fbQl-G7gFO^Em~DgxO}hgxfgMRF78XPTmN zTTLkyvG~QrO;Z0&h9h(hB8okGaFIJ?R`wA#7pnuCBM&|Ze?LI+K>?ACp+ zeRYDrZ;#>B@t^!`0gStyqPa<0HmT$L*@aREAQ?d-NjS(;-I)XZlYeW&o4ev;crYhK z`F+wU>OVan%Wv6J5R!rnWUA@{SV-62qubiJY5jnK?DbGQVw+>*t&J&f>c};!fm-Kc z$h}Bs=^q4S)xV;yGeE2b5SPVJ9BdI6`~U*&Jmz_zVA{M>voFAe@VQ5HFLF#KN!PvV zb{1bXiK?(sZozpC9M63vywP4wfPpoIt(HI%Lkxmc`-ewO%onFOl-hd7nM4xg_va@g z*=pXcqAsuPEDpDm)@&ECBgmw{UA-jleX&0Q|5_%#q;gZAf5IR~#%!&ieEmVKu@@qI zujj7gsOU3rKjYEfSO?(ZD*0%z(OfVNPt{xT^c8+~hd2;ep@HyC=+UDM$@ip`0S|)D? z6Y^ClWMn&Oa%7*ScDjtw+^J&>o=nhFWN9}>b(;O?`_LChbbbj0o&o){(#gq*D6W+k z{}>!)wEu+1Xmiym!!9!`&(EW0iJy`6<11{9Uz+67Z3o)V$tP!PC%0IXIEy@eYkQlf zM+m%F&mM?71P}}^E;4ikP)2Y)edcDstPfgAU!R_oSXd&$kmK-B#Ty9^S^B3!-sike zxPm`;ka=AV4<3^vSaAbla84W<0+x(}#F}u6HCUNOr1sRc&BOLzF7jvBVco8G5zv72 z@)E~;?90%aU4!N%EL1%T=9RisaWPHz32d3zXKIpP!FG+DH@Uo7{pmYstG=tLMgzz^ z_>r){w&{+#eXN~0JNENHinzYlV*^8M=dAfglmZ1jn(Rce)**=MC4HUcj7A@#b7d8e zvSu~ehwJo+EU~(Mq<)WC$I8W){D){rE~PeQq6&3-SwX4vIHvbq(zcbq%&~*4k6*WM zFw<4HR@I_RDQ@#)_mhB#7(*wtPom-_3b}ZI0X3zmkjyG(*sfAz!uX_9h$GylzMlc* z&&NiO5@Oa=IN$>jx)x~!0wiTPgghH2|K+uO9DY>b<9<}h=|XfC_s|Zi^45fRy_u%5 zZHCmkI!&%1-H)$X8uJU!t?MYsy}NMnf+S)nV%2|??!IdApgf=|#f;Ej)Bmi%UXT?5 z5HTIi3moVG|D25aNl!-Lmb5v;781|N57jkwOz)!bhbPh)l9G1KX{)fIAZRuengE8{ zV#ydAkEcsnc~*a-%2tbk-fpj;yVbx)Iw;HWx}F1I-Vu5NmiD!rNT+KI+x7;|=N8-| zOUiB)&n@RP*U$fLTBEnKokGe~wkJPMi|>T_#kJSrVvvdoI7_?CBY#z(VE?*|dkB85 zj;}``a4q3Wi+@>|5wlnxYe9WIv1ob*{lF_)T$sFQ7e#PYgdl@q;Cj7R!#(Fz&wVRe zC=lqM&9|>bqZ0OAS9#}uFJJx`K@zld%`1sdnTbXt0);RYk46;{E5ao}l-i9cz3R*g zgyo4*Q}fyeDid^NdTkKY82AEtXv&K-Dw4lCTZ{fA|AG;_8vMWI%H9PL~W3P z;k;6f@}Puf@@4b|{>GBMUS}IZxZIf!tR;Oa&noFZ*NM(?rTDJo3WMaL2o!=EFhRTb zM@#3T^yx16a!+fhtkz<1Rn_V>j#B0bny*x*q7c`(2GIFhr$Q*-%5w}!D8bsYNAfjn zQ%Fk}UE!het^#Vli`Vg8WZbr{z5zA6iB$YPfBBhL#P@`MysRK$a?EB>qho%0kX>uc z6r?M;3dNudR_`)GG8UzNtV%r1YW;7c`$7A>9|Ho@>Z{T{O-0m*fBEE6)9{h`cr*t# zbJX{ioH|4_+TT2!q*5sn;R;&uJ=#H#b~P{H z4AE9DA*H_&B%H6%sy#S>I7e?S=j7#kGIV&POLwSP5})HQk}r9?HgM)hdFLHHzPMUH zoFdg&VnqAw;`I4^8rP})ii#rDT%Ua5^e;R3itold#k1&E6;;W?$};1rQ%zTU!e#t! zF@b3-)cqOSEQ8(q>>t?JK*G8m2W8kzpQ|uMHBx=_z|kHWT$tF41`Eq->f;C)Wh)q| zR+rY*X1uzkSgk5DmWe1tfrru*ip*|481EXyQa4E^J`bAmB}2c18kP_hzcws~#}zH; zRaO`ooFQdL@Sp}H-rZNoF0u|W0fN#_^;VAOw~>0bM;ERhiVnyxvq>@*zBg4dSlOV)XzgjadVkgR$5+%g{jyaw`t0wa#ame1=ctGhSf8>k8s{xQG) ztehTPCQZ}yGD9N%JC#3W!AN-|7F5!`WB4us#t3%b3n6|9K>~X1u|b9SAry@0kLaII zSLdzGVx$n^aVM7+V-#T|SoC6{HSvVw=ZHV|L3P)$>6pSi?{1UrmcN;7}ugMFKz0)lKn@|^JGT$#e87?6>v08ZvuhQSx` zF>?#bQ(AO9L789>#6Um0ycb1O3HuN2Ad&F(K_okLVlV^pyMu!`RVn52pdopy(#4!p z+dnkaqqKp<6ofTEKxW&4Ei6os`g9%1C6WnK=Wm&lePrPb614@=5?tC4HON(+ewahi z0CtKkB|lC^87Z%!5`R%E?_D`~*x8rN7oj2~R{LSA@F) z!ZM8yix~!7aAr~!A4$r>g_Q}ameKrcARt?>*Bui;B#D}_Ip~HfqveclUFERky5xHw zBRAlL7~<*!qI%{{IX0QNqYNu=A@N2krOFim?tN@c8!0e2aiPxOmQr?XH(?&UoxMJy z7IX9iLe8q$)7&^X9yDy_=@zCIS-A!bS%I7J3)X< zSD~MkgN0M8+$=yhhP`tjQ~8qhGjZBEy}40e*9iSYgPY+sg?w-e z7{PY2VqeonM1`-69?-O?I$g}9x>hs&5Pe5@hfmXDCffke%&}zHga+wMr6|V_P)dL0 zQ?^-WOkcvoUmIz^293x29tW51!&90Gxxznwpw49*WdJbyAq5&N6~bmGg{URL?xgUh zeL`PRcDB&bZ^x<1Oppd`kl=6KgtCXI#F@yhEOWpe?wMHxD5c=I=n|u(Wki(?Z6*R4 z#U`M?Uo_fPQKY|wQxY&@oCIyl>KJuZXP&OCy~?Ju8`hc36QeWpvq2G#1K}}hWc|*k zK~x8$;xJp;qmKs)D~-S(crCMowE@s0bwSCgt@GN$rfeHBaEly-Z@9J}1LD~$AE&WR zstbmw3Te6wnrUK&DO<_m#n?RC=u*^)j!N2W)fSjlyV=h#rO>nSj_qI7p^3T5zKAj= z35hx(kzZwn2}&8~rwsG4r>R5&@&Zgv9YIK?T+z!A@^$v3hq!heXML%o}pk!LHjX zDkhJKa4^nr8+4O#)diN_yz%~dav@I7o?La;Ms(4so!shBKuVUB%NvQZ**vgiu>^C%%RcyOO|1Go<+LyWBlcoUVX}NqhcdYF7{Aqjr^dN7 z&%a{7_TCiqk@VH-{~o^8ghlIhHUJ9IXKxtX7?$}j2&VHR$1o@-(SzqgDEBE_x_RMr zUkW3DH1Oc(?d`{Peh%}I=L;%DLkSB}#^&XKNE=`4D>mWL>GVZyOXC?yj?URx`gb&c zfM}NV)}|u88+QPoG)~Rh7SNq;(^^*K!?f*5E*dlNP>mCozH3HWoiIkzM&lQrI=K3eCaUg{-{00N_QoYjy!(%77hcaz}-}REZO^ZR+8~AJWuA`H?*CASR zg2$GfK@$&6D<&qW@!u@&Kc|HPba5;&#+2CXnDvZSkW9=kJ*8RrJ$987tCXcDlj$ID z0$y&-!?CT4DLMHh&%K&ijF zsCeSW>ft8s+X_$d3D(aWQlPbyqeUFIMP+tdvW`dGO-xJI(s4>-i{8`F)|==B;%Df) zn54hF1i26{U?FZ{j`%DZU45CTzOoDnNgXSx|+X>xKxqd_=7K?mE*Qqarnw7|jV&R^jcViIQD8`4l{n@6{}3uevDqqTKR& zvQ;W@0w1cd#<>Podv<)H$(CG08jSgEr%3ipvD!R_kGVNa@hvM#k_eHro?p@+`(qS$ z??7$;gjA;lie^5!1&WXmh&*^aF>k&%qKq~$rVIg{H{dWF-u}XXy-A5I;-VK);;7N_ z8D4(<%H;OQkEQA@A&kIH_!+p3V%TO<__gy4LTTP@jjk0Hzegg^OuuNf<~@UKuTy!r z3!m(lRrN}vQ71S=)pDh=J6Mnb`mlOoyCs(PRY*wtau5-<%$&V0JkJ=3)jx-mf+}|KIfZY9qY;g17)7wZoZcFP!X*?` z>Zfj3fO&U*UsdQR0t)MnK}bEKOlH+!IRT$=8kko4Rn>Re*~N_jN0zctLF1x{Ui2Kp z^OP8T(g33$vr@K}Gq$m43wg6Z2e(MPU$fd)yq>-lTMys%Z(kk}N~xpiAK-Q;WmIcZ zNcVBp%&IL6ONw?NKU$(2qrtu3y=1c4WKyYi9W3o7p`%oIM+~Yoq6K~Z?Mm|pSdt^R z2c9+>cJ3{bDB<7tZDgcn5CU<`Y#^9dT`rpO5dr&nAlgO_PqBGf_}vd=J~u?YGw>l4 zOB*4UkE2-nwokc45olW)ZqJt>3P#gEDonHAK}$$=2`119I0NhH?XipQ0-z#!-|Kzu zAI_x<3f>HdJ@G%64jjVRs)@?kEZz5ycz5nA$msde94zILSxA4rqlnb&ls`XJ)pzBP zvyW6A+)IUNcE9qfiNC^~V&|jPdW&k`R!-%OvXAa;#c)?Ob-Ca-6prkghQfrG8oJxZ z3BKuGmyT5l(l1ynf|SxvnHO5*0Mf;9b7$Y)*sc;A<&NF%0+mOL;a^-t zf^0WbJ)EcMzBw|WFG|HSe5l=?d%fqpzXQURgb$MRHo5x(JF~sp1;e*j_e#EhX!kE^ z&S&AntUR6LjuoMfzye8Ni!PKW5mS=0gpV&OoR|U>ck@zstxn|pB6lf8UQnn|Zu#2u zV0+$m1WEgz{tYnUfr6oeY_O5OFZnhwm@mpv__kk4N{YepRf%CS>-;B+YkTcp7?Of9 zlNIZtnFfR9N`vaq*c{SZ_C~}gnta0WYUtcpyea6CIrgxS{YA}X*N3Gfz~TF>d^V?D zqNGb@g|PjHqCGYNR08rISN)Or=>r71O95$wBah_#kXqZ_J*&IRD4R5t`SR;I_LRn$ zd^Qp7m1x3C9@sguaB2OdX$E%nfm}vlcVJb~(J2H_KcffklNoF{+mV`v)_uL-Qn_>O zfc(eI)90tp=RwNn&a4Ty-qVYw`|WB(k>gT1Ib$b(OAq7XYWjuOIxxT zCP>1}Lov9333(dm$th^|EFxKhZECwe8c>F3r2*i-j@vIB{YfF*j+9fBYg+Di&vI7Z z_G?EIYMw=;X9SgM>g(!8`p%h(l1O&jVvuMy2$Y#ncU5sE_8quhM}UnO^r3;ims*Po zotcj2oqB;&hsJ?K?TNJ*3@nN zwYYMCezm_doFgDa+2fw`GGXeCF?h(4FzFYeq%17-b1_t+XdgXZLC@KmxxYRMzmVUV zOLe9G$XH~__IHQ1s=|Q0&rIr?(daL-kxN3v<#3E}Ab~ph;1{)6CShf0g`HKtT;9BX zb3yy@d?@>YZu54CKFve%<3ic?AX(D}@Mi?$uuuJE9qaPh;!TSRI=ZHnRqaxl^!X|k z!4QilzePbs494>7nmR-~`|}($+tJV3uf~uF>ZPGi9{bnzAGmu45%u&-uXhVy1NH;& z>rAzW3u~!AP{gZL@>Hrk8&%4*?1!7X@AopipWxNCGQGUIaXuGJzo@p}$9%xIU3orU zV$$i}p$+}z5rI;a1U_JP$_aBjHfJsKYUK8Cu6|6jlg&?il_kR|%yETTPZ+}UmO4h% zY9vq%+uvVEl--x`zJ9Wzdtczm`n=EQ9C2glHN{VYCc&js{_!RIC0i!5ywC0W;k7qB zkN2`d{l0gh`*!ppchb!BlGD0#xV5J{zsG9p>2>zeE&PN#d=7|U_;;M!{?F%s?Hr6< z{z2=%SsDLh{3qR?^S}Qj&wpUTn#FtnTi1Ut{cHSpGCdR!Ka4P*dK@S%K7_yCjzMiy zP*9L+bKOrw{(LvgZ}56?Mkt@0e2*VEq&|EQ1c3+wp|*BUt?koGBy|Ryd`|v%j!tJ72e4<1GKrsDwK+#{GK$8N2HW6q9eaqU;p^0AFn1oe! zfjW7BZ*wMnn*0Y}&sbq5AnXZ32sKkxcq7p3xF^Zy?d|IPFt z<3CvcjQ{xOi2sJhgo}+)JNR4Uzq$S`{#$a~SQJ&;aye==MMmnIftfV~VJMQk9VsSx zD8BzE1V5sDU}Pp6q9`E-L@<6hZ?F2NFn%t1I7Spa%qj89v5g>aa===nyT@tJ zrN?FG(SjlGl8(osXvcHh+hcazN$I)WL}Kn ztJld>LfT{r$V})W$@g*G@e!&l=m}_L4SDi9WjzD@1%`lklVk2GiwkClk5h@p!ZQ zv8R#jE-407Vv@{5)mP-xWb^S}2_Z)UIWBvQ#_D7{gnm-@t(0sJ0(9c13}0NG4A4Xl z1^I$!AV><4O?{Ebh#ug;M}%bGov$$xzoPWDekQQzxZuQck2DT`Dq42I>|6#@yJdWUq4`;h5)%HI14hhy3%O;2Bym)Zgb-667{f~|0!S+ zJEle3N;)w)JuCM%CmBmvJ|Db=20oB?i+cL@unoPM1g=To&Eym%3$mL0i>H)iw)io< zKxvx$acjF&?Fw8ORNx80-ljaI2ncb;BCZ$L^Bs{(QBnL1AqwUmBYw*-v%~e$uDS27 z3DESNF*s}*QnYm(WU56;+9urJ^t{IEF{feuG!LSr-y=IQ%6YmkX)C43& z>y$Ra!(aOPb_{u#V4=icJ%ijGuZx_|Yc;sN7bcf^Qba6~3Y7X>FcsT^{D&qO$Vpx@ zA!HMHsEbuBPouDjK+{|_9k)rp+;o8_V4^^*Zog4MD2eaRLVpjcKH}Rhfg7+4ImQYS z54&EKNPR<|)8VvH)|D{{)QiSNn_Er~Ed;gfxq;2P(_k;bFU z!s~go{rLvnHm{0!4yGzfTLV(bm}Z}y!bnXR6x*JKNh*vj-kF8}Fqfc&`1?Gm2{>TO z=f3v)F*K|GHvsb}v!@QzQ0E!UBZG_H`v9Y&zR?js{#SH0DXp%d=`lJ+Nk*=x1?~6i zJJzO%D?v91X_Mw511Nj6M4oFRyVzDtp{(xnA4NDzrpF{ax1XHPy+<@xl6RGe(wU`0 zt7)JhzpTQS&~RQb>Fo(>nJAOmj{uoAu29eccz!&vbba+504swq_Dz`7@6na_si*lW zhneQxTZKW>&rsZ2(8^-3c>q4I{6=Tfbjynzv(O#lqV2FBTfm^59nAy-6bh6?7Y#iV zDs!dVs;V($*?t0sRAnfyF>W<*DvyCZ!+PjaMI(fbNaOCzgbpkHg|}JfD+>|M=f{!! z`~E`--V|_@nKcjRFj;!qa@eQ)0u19>E3zZQW&P6E8FU2y#~OMjo{bEsL4YCh6;F7| zrrR}Xa9*DpPZzW9erm;oa}+z)M_XeliOIkyR&$sJ`^CWI6k)@4Q8a{)_Yn|n_YF+f zTiVw;deC=g=Y;kWwx;iqu*$^Btg_bg0*B$a$PFqo->FmeRD$YwgaB-Hc!G02Ujv?} zO1`|%f@BQ*`!zgF(39VYMHu2$)Z!Cbt>mc18w^vWV29;xf85;y)x007d%h`taUA+$ zO1Xgfpp4AK zkXV@0J37Ros6}U{t`{!K%m)ocAXLNL=Av;)VLg?D8BHBDEaL5g zh0>`QQ}KMkZ$`Q=<;}l)v%_EaeTSp#^Tx+X%!wv(V?56YUp!e5QT-&!n90%6=Q$gWWEAhe^qi7z+u!EBjv@6rc>Ark6!$4xyVAe!qFg#rT< zr1mRH?As7*&IhT0dG0_(CY(6lJ^n3lwJzrA?L`+Y$57bA&x;B>1zmHkGdo(YA-!i5 zwI*6<{lVUCYU4jiNHkEItt-+j#>-b9Bq{?lez{aT433GoPM0EddqPF_-M3;}932!X zDf1-h)7x;D(GG}vV0rnna6a3>*B*HvrQI=e@$C-=%2O*h^_zZzMMLITlc6zc2W>8OGB{WkNQcOY1kkAe=oC-&M1wP@khY9I~2B8lXaY#*41O z4@h8X)&DaV{J%l}JKO#DsQil5D4CUh& z<#Yd{`iuTh{WfO8T@J|?fohV9`m0je-pat^QrL#CS#m%f$+V)=4Rqs#hKOx z4D~MqVi)?0;V~|8Y>f6cPz(%~YNuH`d&0lHxM0%LDQ%-0-Ex0TVz=Jjj%)?PmtEdYB^jd)PRmgIM zr3nCc^q@iMl45q4-WklOGy$Lp(|9z1)3D>j{>50^d6}?X2Q-J4+XV0kQqa?zW+$po z+XPGCfnS#2eTl?I&q=iSQb4og2#q{!bM^U3(a^`%{3iJ%v6SbGScA3Qhnb7IoX2^x zb2)Muzy)E^H3L8fkBUJ(j|K?jm}Uafu`uB9Op-~TYb{}t{X;PIJ?j}GCIOa4JZa|R zjgfu?LNhbEaa?a ze#XNBGbLf#03aGU*lYJ*ubVI)$jeU*{}y7ve3~aeAxR$sL7Z{kg5mkpwNR^nh$bWjtU!8=a2#LPeJgZ14Q@k&kVm=`P zlOVMq1ok*0+;%C9LP+8JZ!vEION>zCxkpdD6A+UDjtd>=5M)yv7<39sj?by;L|-3o zBsa%P#sT9g`jIuSGp0ei)!Ex_`w0wi{rFL{I}N{9sV5jww_7^a7&}}TtB;CmCv^R* z`-e{lnjafw#4Lz=tVh*=@fueFK!@iM*wy>-oxz94Q%-+KPLn#OUfHh(Q%hpLOma0# z0`H^cE6dTRMoq4ep`CW!4yPxur%g9Ekgngwhjn=@*;D5vnog|~=eZgycFbx%4`q$7 zI=$H+B*+LbfB2!>^7c*Z`nWX?co1%1@Or}fc&(6@+q;-ZQ1ZHaW$VHnEKSTrnlYtf zPCzgU63xD^P0S4O_8l)1S3Vrotb4sL4EEnG&~ClMZ2i#TNzO%_gt>3k%y4`(y=H!J zt$H{!SsLzs`~}Zsz>`91`oqBdO8c%EcgM8G>$RvXc39Te_0#Q}&s&G}#c|o{s+Yb< zp1N7%kWrQ8w|5jk}~{1G}t_st;KuLV&p< zUj|TcdunUOpyTe~ubAuktB(&};zHl2&1VePY-No^k`!b6lj@GPRqyVvqxL)Sov*HK zE;i4vpx=cPuDow`>nwU`y{{2%xZetE@|+`FV~)?DjG14ZEvwg8LfeHUfd%+1#fneU zOE7g>9zZvLJoJ7AV!cZMZ+?7=KEE=`wgur}^aZh3B5wQDMw@_rKD*-4P)nK2(9IEu z<`ZU{$G}Hwi*J`z-@J3KKuQsJ4|;_p~Kxv#Qa>(7}PRg zLb%9ywED?>_3{*Jk6(I=mXd9H85m+E=iy%(ESQ(Fgj66z4eMf4ogkvhLaiF1q%HT- zIl{8g>U^jn*+B1X@x1{`f%>vW)96@gL8eYoWP%z zx8LfW4ODbDJn=*&R3+5cVXaOsh)bz!wY`tXfbvLW+RB7UTIz_DGnLv@V9ZliYwVZG zcTn}d$3g_?c}$DdtVDB~ep$1wi4bs%_N5De;rY;l@8?QyV6C!wXm4Oc_Wtw1%g`r^ z4)b&8%Z}Ad_6{NcUwdByA4yUD&!NHw1Oye(MT!Z#Gl9uua_p7e1hPqXH;_$2l3iGL zW79L!Gt;D}d+6>-G7BppBDV*Ezz^kC_rt4`r*-m zsVhG`ZzpZ1xvRc+>mB{^TNdBC|BqImv;F6{z2dI9#=)^4KiP50eYZcgr0L9AI^Go<-jHPE&uaRo|$vveIu#WH#~USecyiQw_kbmh_mzJg9AJK zV9Afa{nfF%Z#m@Ja%#I@|NHX8)X8)Ac;sWJtv_{amtWoY#Mg(wXFm*l_LIK6OV87D z78b5~Xz$c_J2s#5!h$z;I&058R!n|>O~)~Zyl`aK{YO3b|H^;-`{Q-pV|%R2pZ^E06Emcuw2MotGbY@;&Y4OYh#}m+LlsX7LWkUAXj9 zV%wn$Z~6Bg4}5m+z;_pKchs!c{+{yx;r#b^CjQ^jwy-k(zhKt?|IhIM_iFv!8}oiR z)A;|kmjB=NE$aVw{^j(&_qpt_&+PQ?Igj16FWUC4&p&m*DW@O5SI_e8e(^@#hYo*c z``u4H?X<_1|Ehn-`5&*}@BBR@=bxWB0FMDW{~$cvcdzoZXRm$u=P$qh({Fw2TLWKf z|Mw~Xdh1Wm(cu4*ZGL^s^>eqmuj%>T8#ftmZCt&0?y@%?IeOmXugraIarVLJ4Hw;^ zbUv}onMeHiv$y`Ut-JASANb}ai4T0S`Kn)@BJQ?Nao}`)-KKB1zjofk``kr?|LfF^ zx8AIO<%z$3Z~ln5?u>yOetLp5|MR)m7X9sg$G4n#>ez=qwCN9v*Io0mPVu)#{QM7N zFFe0=(P8IL7FX=`_@}>+OK<<+KYl-U+XabV&0F`i`P*&2cdyH?zWd2D3hzJow$~my z`P}%AZdrN6E6I3jw`cxx&o>TA-n8`QU)}cevr+>u9(~8c%WgbmuUqx=mn1jrw&&%y zeCpV5%vbN|KK`!f_DVg62LjhkKJ>Ws@)v#-f8i@%eBZ#G{hhDxcO11o%U{0sl7Bt<%JRf@CvI%X#*X~l54Slf^R=Z%KG)xM$w%vV+>m|nn^&}CzPHU| zZ{9lZ(ejNglb?BV!7uJvvcoGc?RfR~PPm}`;Gv!G%eTFHZ~fHHAKx|e#_P%B>-+l7 z+&yveZ??Ppi#soQaM5p*``vr)Zo~h&F?;E$E60{Su;}Ky9^B)?=dU;K*=x@$2d=y~ zbLHPs<7Zub%YzS|aKw_U`#!wyQ(YH*Vy|s4`tv_KfANKf(#gJ09B|VusoX~{nDfue zp1<|H`Ah4c`qF;)-VyoV)OB~9eDyxVn^6C*=ik52xv8ETAIko4<-WT-z&Q0^xeY&hll3lH4!2j^Y)tDi3UjKK%5NKR79uee=xcpWdbKkX^s~**&*^>zPH^2XdYcBoVeNVRkgqR$qP3{2TC4;GF$G@yk?$ z*|Eb1KKq&^5`Q?AEz{&Nb&=y8nj{d*laq4excu8O1Ble*QPNpHV#GVmuT$ z^tMIiOD{j=ub;X7oV1P>?0&~B=@W*o`t9n5Bd$E``0c)bj}yxmA6feMT;nmH{NW$Z zzASnF|6aO&&gkKZ4=?%K5QOkIEBV-|=iT1^^IWsG`H(Msb@ycKQ{w*T-FW@`&N%Vn z-+p#?ReW%VeZRkP>G^M>b;FC7=&0|l?M}bxiSakKx#+rMkI!B7v)lggw`=}UIPUr9 zKlsMKpZ?Jow01w)#7E{>~HEU9$JrY+N z{O0)&|K-MS{cD4{bgv)%;H$!$|8vRJ!UZpm|Kp(VAD7&z{)1;4UEeryFR^XI!%H7M zx#^)>PTuv+MUNl%+OPL4{^OxTlTQw8K7a3gPwURV{M|R|*DrqPbHDgW`vYH^yK2vD z6fm%;My0T`TF9RGUvpPZ{BQPy!YW3Ja)po{!c!)80n^Kl$g>wYRIIoBwd@ik|=dUh>Q5 z-Tlh0C%*XTM_+CJ=w5ff@sAUCTK2;0gP*$Ph2vgpQ3c`D9~&>XmS4DT=lj0bc=L4& zw*A;=9)9)K@g1JH;*rf~f3W@AOFpo<>9v8;&EM_VxbNVm*T3_f=bGMl_2{2%+_dh2 zJ0E#wdE$tZnvc3{Kt6WvBVWGZ*iEuH+I7K+#)rT8&AM0r^ycDcU%dO_n|Hl_&7RM_ zaKo|h|M6Ad&Hm05|9I5HmrN$+W)E5N>Wh=dz4(ROpIG>vhaNchzL$=CTDjrq#}n7T zeCKi7ZS$!&{&Dzoe>&#eT|ctDx%S~z+i(8seGmM0?o;PK{;R=#=f5;1UZ`Dv+(~=B z_0s#!`22kj-*D4ce|h&)S8ZtfZEMF(&p))kacO@4gZ8d_=o@=H|HB(jYU@4v-?!bc z@3wRE-?(S@@w;0Ozv;3+{_ua_H}{So-CaIv^@r!Z_WL8pjWg$6eRTh_bDP(G_uGH} z^KL)PsGA>nRKo`hj0v`&k$UtU77KE-O}~ zFMI5Bga5P7pPu^Eop*fWR9zjuXUdrW*KfZ3*RQYq^8x#OrEQ=3V;5g=&wh7aab9xy z!Ufm8`H5)TMNi)P!84vd>G;Qgvv8hfJoDtpM;=}^=NS3wrX#=dMde?w4DEka%gId; z!awWOd2_QjtRFn-o2P&Cm8CZxT=z7D@UQ%3!%qDdj@)(iVNZSTkAI(c?$7R>^QHKs z@BhW-zpYwR_fY+-CoMg5pYu+;XzISlURkx@F1h`WdqKacTYhlU?+PcJx#N$N*4~r$ zy5hWB#KWFAK7FGc`{mr-zPZP>ZGYBZIbpX`m)!cNOAk5bv*+w{=2bTyeTE<$@Wz!5 zJ15M=_dO&&yYY~JwkCG{>zbcm@Rt^)@6@K#{`}1GYsX0p|DT_^VEz1`>b)O*_4QZI z*z>U~uDJ218@{sr^M6>@x8}Z)y+6A7k6(Um`B#svzxSCV@7d*;AD?``al;FDy!x@u zuD{;;+237u|KESU@uzp6`2O!6RXSnlgyHzJ*Iseg0dMH9?s~!+{qW8u(o1tUXV!k< zi@C2E$+Q2l`}Ox8_w3M$bALIwasH2fYdku#@!6HHo&CYfF1-KOPi*?*?svYK&mZx- zhA+JI!bJz|()j)2{DX|ePhYp{uTLGl!=a6HPn-AjZ4Z`rdg0<*ZY%D){dZoQGyi~V zu6+OOaNymJ|0my>_h9+h*7Q{D-Xni+y0tg~Qj(bp78A*8NWh?bLPH+}oaO z+FM!Mbo}#|XPRSAeCOjIJmdra-uaM*e|0VY=oLLTy}0>PFCP1&rC+`4<@2A}wv~LY z`^blGK4q_CU-2W;fLz5!@UT(=qDOptIjZ!9-Oe{#WHlS1)trqok$v}t8+0$d{oNXwERD+kt~m69syqJoA>DMd~r1_FU*;fayQZ=IrofMo@s7-1;T3JpsZO<7Zy zA_#&bm=7lI2Ym zAY-LqZN$18NL!3gXDV=us>Ae5aE5D4IEy$ku-e3wHX-56>d}xQiO_r$Lqk|C6_&%UScxZ}{;qYvF~ zd%Li=`N-+l?Q#>^YsKV+k9~YW-L|*-oQT)=SFe$>qimdw>1!_>*UY z^6$O&PYr&JW?vq~3VYTJ{I|7#v4}nPG;vUktr-XmAOCM_ zZJv$)zq{q1mz4~5|MOa5izf!c#eZ8N{Qzm>JXSX#7Nm}DC~rJ|hXRLK8=1227=eh6glHnI4RxdC zqSR3=n|V#GJECz&H1i#NWhs{H{yT=z|Hs?EBB$QQH2~rJ|7Q3zYyaQT@@EF0+4pzP z|62h5UrS5#Z27;d#Oud-hRu%@v;Zi=dDBv2*=Qywtg0`nz`M!j`w zrUwcF$Z=+AnAfOAM_2gPbqx&(YkP-B`UVFu>PRxtmT18lrbI)^q%tzRN~Cgma3<9h zsUs4qlCTxTkvd0AHDyHV#Iz|-NaUe`Nh!;LD8fHaq_eq59rt2xk*mu+TH0WeNxrl$ z*h1Gwr^eHnXgoSuQnFe6*O1k$WSG&hI-BO0x;b+qON4Y@PLEGYQbtfjm1U3rkF*~X zQL%3vX^$*H-4+e%$25_6M3L2ToRT-qVtZ4Qg;^^!dF3@>VlX%+riRI~#$-!lvKc?5 z1siF%U!Mrcq!LSP0l=TYMI6}_2dH9Bl?*?8U62q2ig1QULfCi!YNjlt@u1Nc1WrWV zI57~2C7}i|m=!pAJc=Tf1x@qE1Bqx*3&vwfr~wbKVon~9u4w8}qAL5B5>6%4j)wq+ zjVkJc3RBJ}a+;!{Vc8fsV5zhppyi3~M38b)>F`=frTJ{Jjzm2pz)}y%^o2kv&A(p%>BQyf!B~5@Q7>Uj9ppaBw z^+;+^J;7YzD+p$CWo(*d|EzIBV1WQZ4dnoAJODW-sMrVa#USU<08R^p!T4)HBIkgS z$D&IUaus#Zq(CH;qy`|Akpq&(WJ4q zr~wS)2Y5`BpLPK}IS13_65YJh}Ufs@Art9MmN#~r2bh=#20CHm?mG=a!~ zc0QF=12_(e8{o!`Rgi7m7-*S*paz=+Y%TzjBx!WoBxdRh z3DQY*9w9V=ssh^iR8|d&l1&>44^S7gS=p3*!LhVJP>iMqK#bE3M$HJ~grt_FDuA%2 zx=8voplmrc0aG)SnZt$$L}os%$l0tPvQ>6!5H3eXcvKFr3zVJ`;9ZXr3!c)CE+q3nvI?g~;$&u?Pt4fdI_U z!97aE{h~0b>58xScL+|#P!EUnAc&lp@ZbnD;pKsq3Ppj)@x_Hx5t$JRL}kmU0TkvX z92}-`*%Vale(Orvf5dmFY@(cZpfkrZhzJ)l7}A#o++;G^q~VW`kf7C+Bp9SiS}h2P0LJgaX_|^8K%hX;{9V_6 zLV_UX(60r1t{!Q%-~<7fAJ}=Anj-pQ!_NZ&;q)3%U@kuMlBoLj0{xH>m^~2GkUy|- z016`R6EdZ7-!{0~N(=&GO9&6fX5|4%zG11=QZ5jLl-q(vhPinJvMLu!1;LQgCA~^; zel?{*Ba9{xn@3&^_^1R+0FPD6;E{(ZDPQs0OG4vmUkL0>QfkPw80aE3=f*jxb2 zk}fK^j^f@JmT~xlAw;;+GooN%9*MPpBqD4HJYLB#1?>O($BzbZDq01pfe39GH9*6> zgq6djWwQc)C}6AR8*LlR(v>lg9yHwM<%Az`V{X`AjCpxzsvtsrm37>M`n&prD(XVr zgaq{jJNq7K;kBo!B4y9G{C!Q81ejdSi^XCUj1qzwT9`MQ1|cVD3mPhxgT)XjJkAO1 z(m@I3rHp^bX>fw=HeUr4fk<7lYCwqjF+1VrAQsbPG**T|Jkl%qhkk}=Qc&Yy+~L~=V{`-26+=i#Sq)cYV^a2CiZw*Y&~ieCMu03( zW0g{CP#h6LWe^cO?0kktx2lKkmhfLVf{8h7j?$W2+LA%}=lRaMD5u92|8-zPG$~La zl%xhFP(~hz4v%nyuHuyq(R9>3jYr1IsR0+|PP;uZU6c)3%?X(j9!&anpTm>_^$?06 zd~R7=V856kDu)LviFi1K6_BqoGc-&IPs?wCk&ASg#l4Y1@Q<8|Z0-XxeDMV2NcK{f?V z7gWuxf)W!)!JZLnID|*j;b@s@K>KG=(<^`|CP_9m9gE@LMl-N{Lx8`&FMyw;J_Etu zK**e&8c<>`*?|9fXr+|D6&!|yKrld10}5bs0mzhvViost7$>43-naAx!X(rJCQ~lD z-AW@Z>SZB^|MLSh0;y;v{x1lTBO^Q{!V9cCro61f=nUKz!+#tzLP_WxQ}8IpBW(*z zF_VM^8Lp8GTP4oJV^6&OIivLS<#%&+K%9KIA3Z2rw6Kr zlT(8_Ft@1zFAuER&!cm-x z`|*C990|uy1a4Yq*P_CHy~VTQ%ncYkyR5uhn=4?FBMV>erJ>Xt%h+GNkt=+YC4>5 znKfahBA5hznpGuB_o~|v2^~sEW?)AofsrM0<|S1tNUCogSYwf)A&V>svX9j8plu z1LWk?fR1o$S=j|m)5l4eOWf#doernzs0XJ9LgVDr0F813vkx|ibd<~>bbTfoESWRG zM`hKFP&P3)4-xhm^MK%YLDO@RiXAtF^Lp%vu$RKSsYJ?TTHBhNQ;ka&rp3m#%#zl| zRAxc8F`3RbXQb4^Md`(2AX3PHg9tmKIfUe=7Zf~9U`!m2g$ox3WI`C6JT{8yaUm}& zzVjTP#EEDXP7Ep^TSEAv0aoC&@Q^*Z1#u%3w^5Wcbd}$D#%p@JC=D7RG>xl$hZd@d z%ZY6`CskA{B(TfWG-3(%;!U?NVKG3P9k#+4xec5yOS zh6QQyw&q;>oYSV9_QE3%QMat8eVweT@CaX6Toi(5BqWuEoTlZlC+LQ@oTQI^ANvdG&WU0UisR5f<0&o(!EByDh z%m6E}S8i-cK_{$hUYzu47<`l?G%m`<15z|KBUiK?`ZNq6$`Kk6W#a(By$qVyUiXrR zs9y>Li86&nMDzDV5n$@oqoGo@S=Xu>D)~;rPOG7kcM3KQTY!wbm^D3^y6uDzupFka z$Q&FlaJX_;;L?0&Fsnn-Dkn0hN29ssFViL6l)a_aO&*4ULKs40AzXaaN6IR2f>FkU zr$<^rpND|dW627O$_C*ArmC_**E+$dPpSY2>4=X0Aw3jOA{+Axls7zJ5I~{;z|O-i z8K&$t5;z86!{rc| zS6Y&RRp<-dOJE-ec0>a%neQm_Voqes?lfJOQx*REDj*=1XB8s|ftoNA(_=A*#ZB-* zSeNm;pl_6v3bY%2m+@5xxUq6M-}IO^O70zOup!XfwpWp-FfXM|NaR$OtcgbQS}_bf zDmgSj%I1Qo>g5W6s$LESM%ByVp{TA!33-{+VnwTP3RcOaY4mHMJcCtK9&m+*CSy(j z;@ThvmLC>(NV*5#A&^9tmH5u0RRc)a1j-f`AwfgI@G}{rxlvM&5(@=9gd3MDhFgbn z>F7{7)PRfU6@WJ^WF8z~b8Rn5kK<-s(NOxW=OJ*~JYn(KAY40t=<#NlMS<(gJor|# zbJA9@Vx^BmVWceKu~9zv7OHW<)J0jTfTfS4QAh{{ z3`-+S;i2i{1cn>iM1`-qnmi1LX(GI@O7nJuDZ|EAGhYd)3>#xZMaF-$)YJ!77bD<0Z9$1LE@QNuz?)>DiqEtk*2H_bgt;0$<_fTz* z@P?1*Y%=GMX8`zF&lM5f z5mi$w_{=*E(UdSCDMx5*l+Cq^L>JY(w{&4a;t)-#whW;vGRhVj8D-;q< zVHh}sAv7Ao<=*3>rX^uQRIsC7QQ1f$T1ykdfTL0wV`z{rOfImRp~BJO6*x6|gip5? z&cPKY%i#wMHVW4c60_1F8zv7!;Gqm*@zA_oV5S6^cCQHM3`<9!AJ<`mBfR3m1DH3V&$X{`kt;eEoLHt-2Ci4V#^S-l92a{ zLX6-Pw2GvJnO6sSt7?ip0F=Bp`~c^~l(Rnm?g%8H6(Jp7!X>Pz#p895xZo8ka24oW zwXA5NfEB_6D!BG+kW~qWporMd^frURqFD%e^Kg{1QaSxLLZ9Nw9tIHO3auc@#xJ3l za}^=2QFs;t451GTg=FjkqKbx)(=}~Es=%X)xN@%~X`yg|NXix-9_FQJc#vAgJ4rZ- zACX-nJ+i79Vkwm3FmGsJn1^57CBp`O7`qf@l`OM#!}}zpBkDww^bqhqY0GB3VX+c$ zn4dv&!LAq_e^L%LHU{$Wc$|@O9V|uLWL;81?jDIw${8~sZEstgj7RelEX9ttx3nfV z)zwc=)`rOpd80(Gh6%cC1&HWXDn&SCUMm^)l{l(2Wjgoc)YYRrgreD^ZgRH_Q9~Ws zLPK}8_oQMC?R9f7J|qaTDw~23GbAM&r?ikZ2YyowSUCA>JtWGr9vbT%!m;&Cv11k~ zyY$ANmT7zpbXqTGQ6_~5wKOFgW*q6b@R4jnBEqSffk$SzrIPRiWno2L2H|go zam*T_J9T2oJtHY@jXf;ABg*W~6L}ke8 zR4Oq!27H5x<>)eYm{?BirLcL4j&Zs9_YZ*@a`zj|l>mba*#vS1bS1$#y1NyUV+PqB zNbP-(jm0*Mw&_KY$rQ_&i3D>E+B7v+(J{+;G?u_Fl1vOsN0%hSjPW|REbP$V4og`{m-J}dDj(O&|c9Db9DHF%f@G*x26R_9Sy z55K8Y5X!2G{;aoUX=`qSd7W9t_4@LYO9vQaUXeMwJTBbs)423mBBsjWF`+ zjU6{iM+E58;oag6Xj&7M+#1%sv4hyQY2VbUF18a)U2R)maRIgXT10PoGpM+snt#*%K^M_Hp37`3hOwn#~#KJ{h$HhI58$#v4KtFy=YjmL5mzDY$4H zI?6azeVnwFxYJj}qXZ^x!nh5R5faPCdV*`wgrqY#+`x$>w$tGP_Zn5TZdFFBde>Jt z0LxG_dG1?P8=IXZ+Dj|gt{SFbm>E|`?F@YzfJ0Jz+X)QZ;N+)jEokOh;kuq=?#MJ5 z#=IUuLq$e@p2u`fP+&FDqwkHO@iebzmDlucf6%LV-^K4`s=kf8%GT9Wj}I}(v<_Fk z1&hSQ8J%HrmYa^&5k1E+?l>I8_p#_BRCRVGvG0t7+UY!{yItMSoSQW5=j$7nw2x6S z&UR3)FT#T?xehVT6moKS` z*hrWV+orWQ2$RKD=K%%vlyvQQeB0XYsriu5jv~%ec)-zYP^p!Inwv;450qqI;lr$F zZyzUro7vwM_P3S&ZDW5IjEyz;gy{w}W?pD$P;|A;x;oo)^M(;@D+rI64SWZTnvcnX zAiHC-7@V0KEJdthuWXycM20Xnlw*rc4HZM$!(1@vJn+hbQe-nMOA=<^B(i$$|pT-PO>s@i(Q z`0Jo8aZ_=)QsV?tTdW7X?TRwnMH>j?tYUAFlZ9n)fS}#u`#2#>zOhc3mi7=I9(928 zM#p1yoL7JVI(<@Mh^QFH5Y=jlh$)&u)Ag7lugl}B2FQxNuH9a%#EHRH8rRAjtiY4q?6F2kWdiFFbqD|8QIUk| znCYRZNbq4heJI)Hj1LsQw#TrUB0s-$VKw8~b&N|l_%k8(73Momi@Y|xcH%99$M3Jn9#E#gvDactu zqK@tHgw!Of8EGm}%oh)W*MeA62hJPxUYx&D8`XNma);GmSl(Qh0ol+71>Y({-`)T- z5K*<|(^>}ROdzhpbyc09jGOlY~W40-EH_xLc+=J zw1dJ`ce$l2QaP+L>oEe+{oGN6^Ku5Z%deD4w^NXxXhJkQTQBrkmCd3p(#|#ZkN?5s4 z1}1#S#u8fPz)^%U-g;GSh^=c{)+BbKW6?4Z<#j3B5wS`pOzi`R)6_m+7_|OjFinxp z0eH>Mt(+@Y=Y11E}`RIJPO0=O`A$GDX_JO0x}+4d7Ys3x6$ha@mtC3bXHYP*Bj$En$`ogtTZi7_~nvJ9?UwSA!^in%LQElGag&R z|D3_-XIlSr8L~X$>N&$yhV_7if;!QHt>~A!tNS#*snZY6dZ+(M-lCc~5!1r}#yODetMmi11vj@VXk#E5ZgaJyl$v)HcE2lJZ-v8Esx89xQ# zopP{W0ID=0w^t)pysT9LDH-lbR6c~xl`Ykw%VNO+=)MNaIZC}s9r2hxb~#wp9^bk= z40?R#VhTk#?gTtcBBrm$CyMFGB_k_1!9N$4M$e(28R%j@Qx&lLx>MF4GUN_uX0!uA zZ$)S5ZRl?Tp}(^sYahcGwGCgieNK(mEO?gQ-QVckJcd_%9OT7O3!O@5I|`WX<|Y|Q z3TfNq7s=o0<1a`x+Af_h>!&8HrX!gQ{Y*Gl;9QxeL+ zdPcHDM3-{X6iSs~QBCmpTFphMpV<*{JjUP=Nd&*Q$&(X)tJSk%L7<4pvV3c2UjcV? zXw7gxioqh&3Fm;oJHJHiZZwJ{;$0cZ*)eT74QE3FFG(98f9g$=N zHFZ|63qG26xhu75URH}G6Pe{AuDE$QlabU2B0VZO!pR&G&3pt+h`0|9qi6n2xD_34 zKgv4-cI$pYa?5pZDKQf9)1U31ZJiM$q3Lw4xo<}^uE|Z5w`%Dxorw?=+pb(%Q#8G! zeg*m9>MrNhjx@IBlHO^zmzlz1?50-ieCL{sPdT|f+^tepXsd*!xFz!kMO-n@8fJe; zc*@Dy6+N{ofH#ojiJ89L)4pD z-BO3DZMn(B?S=fy;5Sx`qNsMXgqgW^sVQWifR?2?Q)Q=|rZEc)3rTY+jG>`Sle)&Q z{|X67#Ev)IgfJ=5I~pUj~or9R%Ypt_R5~YJr>NX=gJ$ z^@vPt*?Vs-_ZhhT05Ekqd$O@yDuE99i2Rl@wpNdo8vm<#j1SRLR2|5Y((YLfnbve& zN;_NJ<9NVBZkEL5B_%>Q7_@SQ(;aN_#`s(fnnl-O33RLlw=!wmKp9C9%MB54r6cbK zBY10^9;)WetiExPA6%61YpYc=$7?S_-$M$psepBrZ>kz;Z*Fg)aq0wH&F?mZQ14pC zy#0^u`z7s$4us8Pp@tS5$c$L71tR@>Ago#Caa0HFFl;U4Wl7YVs`MftxoynGM+fVi zBSi+ofumnL@2Ybk7!&yxLFB-!j)*~j5uD^ZIbTcC6QYryI*2@R&AhPY(NQ@+;<4_& zamngAxM#%pR^~Lwt<}!vOdEmZ{p+9^1FO|xmBSMH2ISNH+=ivjn|o!Tl4Weo#CQa_ z>IfID^FCY1I)It=rB%98dlm@ebx7QM2b?ohJbnd>B+>ImLW~t%r#0b9T31Vfd+aJq zE?n9z!eXY5W%^eJ1mw$<8#w!jz84F{I)2^|ZGpm$WTj7^h=P_>I4hVuRcs z?WTtZpdQ@T33Yqaz7lpJe!gb7Um!GiK$??v#h7mtHQj_ca99i?4B1oC(I!5<$(FL9 z$)X(~PINW8MNQF7EEZ|K46%t=TM?gVII|z@^`q9C+RZ-L+BmAP8QjJooorpaq#6`tf5#y|^*uU#l!LghE zT_e0QBQtv6$PDO`V~z*qalc!qo5`&6&KS3lm{a8&lJy~e8`ar%MEr*voZ9t#W-8(8 z;ya)g``m*7z3>ClmND19F0Z=$r{67^Y?)nMJ!<4WYx?T=QzTbu1!+hrOafFJ6S5%oEbl314@*$Fo}rp_r^N>q?hDw6gt zhzjma?UO5U-7shkFk&#hY#&r1rcIcJWz~Y)wB<^0PGE%dI9+t`z>#g!snVoCPX4rL z3FCTp8t52LM#IV;I(Aa%m~$Yfs^Y;w49-fPY_#%=SjS!9hk{mwB@c!TK{E_ZfTK>} zOQIXRohdAUKVB5`N0N!wL=t}?Rlv=x7j5?8B0bBFNww+5rE*b|A#~>)|6}j2bLr4J zkEM#@*VB2DF}kzgIe5c5x3rRJy$8TpgX{EC{x2`Blpa;Zb{kjWceBrN*L5!FWVi1M3bwSu zemz^D^`(JN6^lioC}QoviafjB)Z?U55fP=SxXFpwV{tV!Xc0O)1k9)I$9*fhoiX;q zCyE+WiR4o2*+fd4!Vhxhcw+5xZOUn8c_(3&D?t%clEPB@;kze^z8{2+;d1oY6!{8y z#!=b+o><_+RKlJT+znMKx-E%A!BXw2!G1S1kYOx&ED1SnQc5v^y%QLN3qDJ?t6(fj zen))?rc*d-L@f*Oi?uDL=io{LO!bn%a$Z6bWDaVCc{z9>!&F@Y^=J|-qcLGxIu5go zNH(L;bE=p@hFk1Sjn0MABU2w5bzT2_$EWyBV-S0)E% z!s6@IGJ#|+6ShFBGC4StQZXQlQjyD`RE$<81q;t;lR+g4$y^5TGwPQdlnF7-0;#pU zLDnT;$_Pby3JjceOp|joYXdVx%;5ORBONQjOU|l>mAQ%rM<_$00VYtx6+9!8#fG9@ zCaacBa6%^~T<=vRlB52hsuxg-o~#aUYFI~fTa8aL+UpzxNQA@L;iY0S+D_U}f=r-~ zl=LjQJ((N=DP(o6AQaVHjIgj%e=$#E+v2IV#R-`1Z-`Sr4~uH9K~%G!C@7WixCmD@ zam_V}^F;?uD?B>FRZU!TP2zmfL7NPZj&M~I*Ibi0Uv$*^g~!MEs*7x{QKTQrO?4Ih zD4Z%9b9!OlUXnC5BLlDvz>0-`W%=F{GWOxwA)219%0|VRlm==^+}({$NPqkHNB%D`G~7EfLf{`8@M?A%ezdk% z7#JMwTd}S(8}AF_ieeb<*QF@}Nts@Nuf~`NmKGpHfh&j`u@53=%fTXCN+q4Ety1{q z*Ym!e>Li)eu1sI{aH@2R2%$*g-#hMutw#9e=Ucp;Y9yJ|u0~(>aB6gms7a03O|q3( zDpvYWZ>Iur7PYI-hdG?`cmXq49rLw#575>h{PJ@T-%cHpOlsGnFMBvWxuokAh#LHS|mOT{3al0coPaM1|6ZbLfRU4uKa13VwpO~%j}U7WP{HW^+j`&?vE z!2=&Qg+oJDB%bOYAtfE>sK%B;$aGkek&U7vmTg)@<3}*CS0%+D(?INsAsRM%yF+3$ ziXUC4m2@TmWmtT|0_nlHUv#U6((36dY#$s|bVT#_55N(51KK2v5=kgTblzGl7Ih70 z1BbC$5gD3O9F+`--rf@&zY7eUXEcGYAq{mEOB>qOhwV(Ox)=`lK%864^z?iw8&76#Y$4pT+u;I0K4?tm_ZJ`i9T zkErGpDMs{{fQTs*ODSUX4?IidXrXpkGRQB1%+SW7^-1!HTIcnb*tinK5k zOD2-|mAU^GxKFqAvUoTe*ipNfE-Nbv>Ea}Pf|jwT^3w zij*NIzFWaYgA1V~SOtV)qb3Y@52Wtl>S$)=DOURgvI>PHRjq$O<<*9tGGKFsE~*Ar zGAJ6(4J0+iEOLjKv{doveW2 z?m`d=ydk!>#M5oi{$@26NZYo7>534A#f8Nj2@=%mLvWu(1{*nr#jXl8{AHa1NZGAi zSSh+a5?7bR+Y(%pX~Q6kw>q5m<965RrX^gx9LwXVrj9>96}w;(yTuFW*_AonQ;AVM6sCPj0R3?8G^RNzn|LLsc}k2ch058wtbAXeHCVyU2MC zqVW$wpg#q{MIhCG^8zBKe7cYSl$b*{=cu$ZmG$eQ|Dfh#}A9kB66M`Ve8X_ct&NYdW`t8H_0o?2boEFtI zereYL&oJmR536lsQaW}3djxZRuuy~^u1~1lV+Bm~j=hehe^o-7@&pP-ji z0Zs-Gtc%EF5t7bO!>T{1z5-pO2xDjbh#dV8Z?Hm;q=>CpBQC& zgxtvVdyFmvgCeu`m=Uo}R3y32f?Jl_%pO?Evh?Pq16{|miYA&div-4O+{=(>*i@qf zT(3w3fCa}2o@1m%1y>TPFGfY438X1XF&j$U$vtjqvTtCtcX&ux-q+tZ(Az} zgZNr)Po^x7m&k@yRC zl9^!>uo=W&i7_6dL1vB)?!Kjs8Kwc^>AW6mS+Jm?@{7}MiO)k9$WWW%h;u48BPHkJ z%2Sd;mdnK&+_sc;xmkG%++t$GJ+3?F39{~o3T8H(&O!)ub!W!Y(`ibE&G&S`q|NMv z(|^x|Q^h2J)8)HIv!08HVNVWHWVo`@_a1S|Y;7Ls=x{FB;qMeDRhTFBT>8l;`Q7@d zyKnroxAn0xZUDlUSyN$A+qeSN8=6G}waM-v|qw$)*aMHfwbFSmjhuXrQ( z-R1!omuFHLS$AJh4#^I0JG%@WlLg#HPQ_HcT-@4xLT)|xTri$My;J0#@I=Kq%p@;z z^)@Y?iZW&wB3mS`$VBx5rFSU1cScg2lCHyryru?Qt&qKCrp^tk+Fi=-TZow>&BY@s zOB?D6PsUXO{HKmMuU5n0MzPlLz>a-5(FgvrvFV4}!b!*^}>LSbq7@YpuwThzQF<1)7RBMxN@XAp?kdt zzxS(h(T8;^jwZqpYlzX|rYo{ABK^jO2R-CREJ8w7=x}R~*Z{eIkPr}TLQn6==oV*%mE3EAu9_{Py>TmF5PkJl5w4Ds*-#y*3LgDdH>9*)jxPWs?1=bF@KuhREKoa^ zd8LbaVavz6rXE-Ryn5)~CP<_@qFbHv^pUl#gKZS_7v!rYH(8*TfUto(-%})~C$jh% zDI(gY;XG`S+^9#7iKNjKvzk{iMwU}pKPeek5pxrYk*L`ZTQHnM^*SZbySA} z`q+=l+!fGe&-9YY|IFago353~JdJHW3COC(Q&!o_RHw`4^>oR=Hhdi3x8M~m5;JJT z)<-;qXjwr@O9yKcGIXMy8`OR+r@`K()ub-jbQ{zS>PS&aW0A1ZM;#|M50-~O1IU3} zh>B&L2_85}6B3**t3%8fnTbL|!&XJZs>fqlAO}BE%iywQ5k!=ilw!7|V6|)%^$cOF zFNjh>OGL&zFM|JSvA}3tqzU(WP5id!Cc3_+NyhE0rEy`~)WSBp!=ysHg#uYv92t=n zrHphjm6CC%ZtA#I8nE$|jF`sdjFIpvSfM>iEE0*3gIn<+E2oPEh=ynJ;0hU9)||u= z+EH06k-cI%_P*g<09@%M5+YYKO;|b!y~20_l_1JMw@pfV!QMl*a$pTwDXEf`7fL+SslAty|c-xZ$4@Fvy4|3{UM~fz#Gl zS3@Q4hst7kzv_+(?W59Gr!^B#g>?~(U|>)f>BR}KILq#?U{q?){lNsC5p$&_3_Qjr zkEn%W^v7)Cx9e9tgah7rVj#38nao%TTx zKrYht1hVQg)oC9RA=;;Bx$Z4@MB2CgI#-?&Hb~~CukANUki}vdY(@@nPSRjUddnGm zMl^0;ib_R|dG712CKQDhN+g-Mfq|Ri_zf$~@lpJ6Eq=&54{Q2_)q_2~LT^vsXazT& zZp3y;iMjFlQ|b~qBiFT6-keBlN~vHi3AG?}lZUY={fm;(N{Lhj0%ea`a!4hV6l-I9 zH~uugXTN&K%AIAT-vq zna(AV1HRqmP+1Ih`HWB`yTb&!D#?4q8*W@OoX%#Q-`0U5f>01Ky#NR7$ptbMn$uE8 z;Xb8q4*NouI0>+;$$*CK&IFe?rUD<95##Z?ha`^J4>}U2f` +Format: 1.7 +Source: comic-widget +Version: 0.4.2-1 +Architecture: all +Date: Tue, 09 Feb 2010 12:34:31 +0000 +Distribution: fremantle +Urgency: low +Description: + A widget that displays comics taken from the web. +Changes: + now over 150 comics +Changed-By: Marcus Wikstrom +Files: + fbd22244089c6fa3c7a1f699194f75ab 41952 user/desktop extras-devel comic-widget_0.4.2-1.tar.gz + f6fe3c8cf6edbc5438c36d411226ca33 349 user/desktop extras-devel comic-widget_0.4.2-1.dsc + diff --git a/extras-devel/comic-widget_0.4.2-1.dsc b/extras-devel/comic-widget_0.4.2-1.dsc new file mode 100644 index 0000000..c9a339b --- /dev/null +++ b/extras-devel/comic-widget_0.4.2-1.dsc @@ -0,0 +1,10 @@ +Source: comic-widget +Version: 0.4.2-1 +Maintainer: Marcus Wikstrom +Architecture: all +Format: 1.0 +Build-Depends: python2.5, python-osso, python-gtk2, python-hildon, python-hildondesktop, python2.5-cairo, hildon-desktop-python-loader +Standards-Version: 0.4.2-1 +Files: + fbd22244089c6fa3c7a1f699194f75ab 41952 comic-widget_0.4.2-1.tar.gz + diff --git a/extras-devel/comic-widget_0.4.2-1.tar.gz b/extras-devel/comic-widget_0.4.2-1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..37f968f56aff348310a614da8c1f971e33b89281 GIT binary patch literal 41952 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%0AkpJgE*S!hdW_g+Qg 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 0: @@ -216,11 +280,11 @@ class ComicDb(): self.fetch_newer(self.comic, fetchid) self.refresh() if len(self.db) < (self.currentcomic + 1): - print "Empty db" self.currentcomic = len(self.db) - 1 if len(self.db) > 0: fetchid = self.db[self.currentcomic]['id'] else: + print "Empty db" fetchid = comics[self.comic]['start'] self.fetch_earlier(self.comic, fetchid) self.refresh() @@ -321,7 +385,6 @@ class ComicDb(): # fetch earlier def fetch_earlier(self, comic, earliest): print "fetch before, " + comic + " earliest" - print comic[-9:] if comic == "cyanide" or comic == "wulff" or comic == "babyblues" or comic[-9:] == "comicscom": print "getting get_prev_id..." comicid = self.get_prev_id(comic,earliest) @@ -335,6 +398,13 @@ class ComicDb(): d = datetime.date(int(dt[0]),int(dt[1]),int(dt[2])) earlier = d - datetime.timedelta( 1 ) comicid = earlier.isoformat() + elif comic[-4:] == 'ckdm': + # comics kingdom. Easiest...? + d = datetime.date(int(earliest[:4]),int(earliest[4:6]),int(earliest[6:8])) + earlier = d - datetime.timedelta( 1 ) + comicid = str(earlier.strftime("%Y%m%d")) + + else: comicid = int(earliest) - 1 @@ -367,6 +437,11 @@ class ComicDb(): d = datetime.date(int(dt[0]),int(dt[1]),int(dt[2])) newest = d + datetime.timedelta( 1 ) comicid = newest.isoformat() + elif comic[-4:] == 'ckdm': + # comics kingdom. Easiest...? + d = datetime.date(int(newest[:4]),int(newest[4:6]),int(newest[6:8])) + earlier = d + datetime.timedelta( 1 ) + comicid = str(earlier.strftime("%Y%m%d")) else: comicid = int(newest) + 1 @@ -671,6 +746,19 @@ class ComicDb(): link = "http://www.babyblues.com/archive/index.php?formname=getstrip&GoToDay=" + str(number) elif comic[-9:] == 'comicscom': link = comics[comic]['link'] + str(number) + "/" + elif comic[-4:] == 'ckdm': + splt = string.rsplit(comics[comic]['link'], "/", 2) + cname = splt[1] + if len(cname) == len(comic[:-4]): + link = comics[comic]['link'] + cname + "." + str(number) + "_small.gif" + else: + print "Weird link. Break break break!" + return False + d = datetime.date(int(number[:4]),int(number[4:6]),int(number[6:8])) + today = datetime.date.today() + if d > today: + print "Fetching the future! Break break break!" + return False else: return False @@ -831,6 +919,9 @@ class ComicDb(): f.close() title = number + elif comic[-4:] == 'ckdm': + url = link + title = number[:4] + "-" + number[4:6] + "-" + number[6:8] splt2 = string.rsplit(url, "/", 1) filename = splt2[1] try: @@ -875,6 +966,11 @@ class ComicDb(): + + + + + # ------------UI class ComicHomePlugin(hildondesktop.HomePluginItem): @@ -1029,7 +1125,7 @@ class ComicHomePlugin(hildondesktop.HomePluginItem): # Now we have a colormap appropriate for the screen, use it self.set_colormap(colormap) - + hildondesktop.HomePluginItem.do_realize(self) return False def do_expose_event(widget, event): -- 1.7.9.5