pax_global_header00006660000000000000000000000064134353222170014514gustar00rootroot0000000000000052 comment=02fedc436de14f69d684960162ac2a66efec6a2d lybniz-3.0.4/000077500000000000000000000000001343532221700130275ustar00rootroot00000000000000lybniz-3.0.4/Archive/000077500000000000000000000000001343532221700144105ustar00rootroot00000000000000lybniz-3.0.4/Archive/Lybniz Qt Cpp.zip000066400000000000000000001033751343532221700174640ustar00rootroot00000000000000PK@Lybniz/PK@mLw Lybniz/Example.lybej lS/m Y jw6dzoGvuxAo÷)'#\ 'N2H'2ҡ"n"Ft2T{R*VG~`T r@4E +##Z("$;yWY*s#WQ!hѕ jP}Q]IyVta$/IZcdj<G2YaP,PKS@>5 (Lybniz/Graph.cppZo8^Wc~dxiؤy[-6襨:6ߐ,.E3? IA'7Mz~N6KLOwت0w .mxPkϟϣa|ΜZbXhW?3_^z*:E6I&Nkp<ԧ^XG^nNCA1}z}?!.?sY@RBND.sbSRI3Թ dnޥ+&BwLG s)"lG6܎,=3>XuϿqR9t5]NҒFnh"~51x:OB[;-g^cq57˩'ذmԃOA%r/9'a%;KczQ@S?AO'򨏊0xbP9 E?lXt]/A˺u u kup'^uj}i.|y(L.EhئLmU**^-XI ;XaVL Uܲ /4נl^,XAKKV&Is$=^ ;<.X$ʨK`W2HwY 14O>x;cA v fkmFG`LY4ʴ)jBs@GħT븹z(Ê%3vٜBGxKl9S}d 25*7a7o̻Uav(Ulp{֜c{=]&]^y WyD`Ǵc gnifuKrіL?t4W Y2+K? z?<Sxf4ks ק-`Udf\`so)*K䯳fxcA$s`W!RR0U%EGEIXUcDH8 ɤ%|.)fK4hNd )H\6vr̹0,LTr+2Le,S)֪8feEeG\=[h6^hdߨd)0Ai=wYf桠G;4џ6Wߖv,RL)6wgomoվTlXiܣ$6ל;uinu'uho oX+UܱRv{+]i-k_b͊+s[pVI7vG0+rػ_m];ҩ }a;;ZAn^\̉]zPKj?Lybniz/Images/PKھ^?Vڎ>BLybniz/Images/App.ico{PSWo D @@UQQ"WrãE$-BѪڝ]PkڵEHJβ٭δkpUYpcqfgtFQ{cy•|eHrs޿߁aDOFafe1aY?15d1eCUUqTlT,ˎ;~;]/ / ]]8q%%`Yo\ӧOe'gΜk2"T=BiQ`fѾ/3۷`8iAHy7[je'}_VQhvgXPs'OOu.Y{.ڪd/vRjj[7;MR)PXbFl :3e=0B?Q`OȘ:647 ~|Z'#`gvƀ… 0 1U7Wŋ!#ϓKA~K~lީDeU%/N:}~n7o ~wn_w_Ƌ?zH^ xݓ.^v1Kp,Ξ=ˋE ?ќ/yÇ*su#/>N<Եiè|:.5ڳ K ~&OݧvnEm% y0qkk.cͲM gi/]d']|&FcǎO{>{XWR?~"Moo"~iR(E={,/dO՗p;!i=hjFퟵCn%Jr3/MmMǺ3oS<]ױƖFLqg' yE v/_nOG[} TšvٳIF-ԭTTWWj׮]XZṣs?]9E)Xn;ھ};iTĢ$[:E'Nȧ*&&\cd}2"""VBCC!KIEHlφQva8c $WTTncqo M830VH$&8-OPOS>3~T$C5~s7ǶL&J3fJY\}dɹ"ID3?b1\.GtL4tz+p>J%BBB ɨH#$)sxt&9so_9Btt4V~0e ~ 9y-^bG>/'}S~ː5GJ-Ddƺz|wr3yH"v뫐ESȾrM/kK]Jy|,[U:(ygOA=7zv:mCvk+}>?tuu!yy_wшϖN4ګ5;#n޼3?6aAKE1)iD{dPŭs>Kπ)Mbi?<=۹aK .Ckk+HСCʝ3cרolxRKKqyfB,w}Ck_F^b?r,d6G?r r@+?&Fp'[`z$ݼ;?)n'~cnfF 5񤕥|Co_/oy;w|9R~,~3^ۚSQOaFQk֯Aoo3ɝ?~p}ȽQ6nO@Rי-lŰr |?6| uM~$#/ / / ?~gL}}=k|aM<>fVۧYpɮp Q[kz>Aj # `"b$5"ǠFgq"WT?aQhY>HCjhR#j\u)ckYӭqPK4kM Lybniz/Images/App.png 2PNG  IHDR@@iqsBIT|dtEXtSoftwarewww.inkscape.org< _IDATx[{P\νw_d!&!dBLDvyTm:6fdlkFmqњT[GN:4ZCcK$% Bo]q޻`X:#̝R 9@98RkYx( ǔR"F@)ύȂU& 7VX@nrcU ȍU& 7VS4Q2ߑR lVg(//,?S=JٯN?Q^ҫR[[;DW PUU^rJTndfOy,'+ٙ;?S(//׳,*Bn,֜!Rxge]zCǧeA3^![Ȣ xRz0ZtPB#1PbȳVA =xC"+~sõp C@ݦA`d'@C{"6㧲8***E4@(g*|MT%"AOukz5,IŲjӹȶ@lw`ݨAc_#nII@Tlnhh\.,TA٫B҈vPRoc2XVVVI?jMo<\ =طoS6 1$|۵;KɧkyꌶgוqE#i/YTرcGg.^^{0rR+) tnb9o浞:~js̎GjoI۩\(VsSPPBs+:*?T*`*ox Eez㯏M5.0]YYhƓHII1S=Uյo_Lq0xjn\<ϿRuZ7t$/ ؖIq9ދm< @WqY҄&koJ>l8vKӡV?^җP[=}S RnydrWB(pwN 殺5F ᛆّC*O)#0XI"1vBg\bƖd2yNJF5e e Sڡ<(&$:FA)֙ȵ]7_ByA\u.HFghԩjťۉooNoeS]Ɖ4s `~?{U (GTQ+oCA vY M>bR J)FGG>nSP|$-#:' `CCHm2Ea0crI@oG/F?]H3E͟tJy SCz [ ٌzx48ki&0TNt#x-*o }4a#lk۶mOr yNO3 CX{47A˘9DI'ӏJ4Lةڨӗ }&I>]Vbh4tٜ¼H`U)M%xy!y|\iL3glXngey65lgԹr8Ɵqvn B+=ޢ j̵RrKJQaCgSߟ)w8HVq @) {IKpD+wu+6^|ٿH-ZQpО;kjjpܹ 2enL6I 욞wTXPM9mrG,:~fbkjH $@t8]jlltJ^>1b7:Z<5iq `0N$\*X<`wl/w~2^Na$_JLOtצ10Ahj-@uu5Ol' vr~<2CA S`-bg^4v|)6hkn^;a444"u4{P-Bߗ$Qznťo)E@ #IgҼ>NT[KRJ OȘ8&#v~7F?0d,n0j$JWl>s&WƄ?mx{b()8y䧬ޝz/l2HYi^ՀpӉ{\I,&V]R d1A C63/vx%b)+++bYE:lslls+e{9HjU ȍU& 7VX@nrCNw\$dRzRyGƿmIENDB`PK4 <3Lybniz/Images/App.svgWYoF~ϯ/ *->TA @XPZbCIE}g)^:8ۢlqڙoX޾{f賫ȗ$@.$>M&ʓ(+r "xw\Ըf~?qT:iE{vD\T-A~mzˠ/wU%q2uyS0Q|Vru8JV( y+D!a!csׇy}3Q2BHQeR,o =9&ۇ9'8i˓]OΣ(vu[}4eDЮ7.]o !ML6a1E;S?QV'Ej8[6RŶ5 C)0;Bdz bE{\'CYT>QEe~CRYrywM}85(lC@s'8.h"+eps~:ƪW,~NXxV>ί7QR;g>v%Usv D.'X^wU=Ϣx ՛b<.Msp;tl?ͻXR2(./O@ٱA)Ys4w|ɓ)"zjkBbcΘƔQ*9z$fs3Ʌfax}6z0 @ )|5VY:ŏ5󘵋,iI=ѧlFOGk%rDNgG8B^k`FSiw\1߷ Pa cO' :zc]a.$FW1헯 '{O0釅R! VR]dR yCD|O)4tD!3 "'"kRsJ31 @3U g ΀r433F.AA$(S! f+f\c D aj$Gb%f$2 (WQ9X B$rfD #aʊ0̥)IB9½  M9`4jX|WBAj- v8ܱ "fpE 9 2[*cgr0͍poB-&* Difޠ=D *qrh3aQqEaOǺ;bfA1źeO_ArD@pjQᔉ HT8_|r 1mc_7L}&gl/U@W.q w3uɮ@{+՘3Ρݐo0(4G?A\={µTBp`swoPKbJ3'fGBLybniz/Images/Apply.pngBPNG  IHDR szz IDATXŗhUeǿ{{ټ2mNt *YiRd0  QH@!sHj? Sʒ5knwwwsyߧ?զ}<3c$MH\~FKL""wʈd -Wyoް}6\C}F0=׬ ɘh>v +9][xTe犄5 C|񉂐 +]0dE8fqFfpH |qyj>qI9+`b7%헇q&vʉל(C@x SʛUu.v2k8C P h湾0gSӄ/o]__1{L"پdzy! BdbB7@Oyan_ܒYLǔǥ =.Vdhm+ZyYo Vx_zZ:$ zS.$@h[QӢ*klH/Pp;&ÍsT{Ib#7Ͽ`1?ˍNeo ^230L*vV'~z3qp운ݙg'^7\V@XL 0B} A6n ^ā ._'diE2{GZ! :;a_-80U,yapN$U D\X2q;O )4e赻+rrrxJ4T33]IDATXõKWsgz c bDxl" E #D$,Y A"UKfb-[_qO׽â{z-#ꎦjwlmm~DGEdÇsⲅљO _cfv8 ;==b]*AA-zȃ)x=EsfYU}n?ι]l=s PU pǏn?V7KKE'Pw6F!"v2Ap pb D@JH)!"#0  fc P!L)" Ν;ܸq^<I s`T Yuj"`xjk׮qMDEZm@V$&V;VcZP!7r8dMdL؄)m]= hR"YBL,1cVwFf 4QRc"3VUĹ1+TKbF$ FVCTM 2&('ϋ=j"FMXT$>|x{O5A`E sՈ1&1Ʊ)9Iu1F:uhbYj.1i/D,6a Q! -DM ")c>F1//7Pay1a9, ?-NAJe7 )ĺ ? 0ۂTOT_"":?ZnKiollYΫpdQG s]MPqDU4(vt:N^zun[o(ZSp*4rT1Yŗ.]*Ν;> 4(ӯ/Ĩj+4%bTN"efDꁝdU8q"sў. ~E^Kw0BfޮǪ[ZZ.\^~,C5pO~)&,%BD( ~@%{*J*`ee̙ǥ:)fF˱%! DceAq׀lD> k"-KXa=!RRBxyy0|z@ 0V dsssG[(+#F%ʿ*$e K- [7煌X]]ŋ_Wa)KOT W(QH5^?@Dkv^xpuu/kkkZ__- l+ . . Eވo+qOgн~Π},k`1ȱ;o>0/;WVV֞OջzYY*. ӭfhf{SSw.WҗIU?^G{:t˧N׾F:4??lF#;-ҷt{XHןnzG_~G]oӓZ"zTXtSoftwarex+//.NN,H/J6XS\IENDB`PKbJ3/Lybniz/Images/FileSave.png1PNG  IHDR szzbKGD pHYsHHFk>@IDATX͗kG?3?$Ke`bGB F[νr!O)+>ǘ;VV"{ggwxՏru<79UR.pppY@y;i˛7oO:qƊz.0D|rgR)YE>\\Ύz C)U8eȹ u]>eqi3FOAѣGE$I~ʭs](oj@ᖗIӴZw3Aj~A4Zsnsk>q֚4MɲliJ!ȲoNE;)%fs ̥8眵$IZ#9W,:+IZ. Zrŀׯ.rn9s.3S_Ā1,ZSV3^ZG `|: >|$ 1ei$ qcw $PDJI^/Ƙ/KA$$IBZ X^",R߯%'SQNW3 իWT ^J@ 9 ܪʶs2(_bZ4plΤ*>&">Zkj;vww *gϞ}ck8|?FHwA).͟<}Ihْc)D=sgΜ>yb>F" l6[$IE6WUUj/_~0$h%=Hk'A?ٻ|‡_ X,EL=/F]],iK&|>=/jn޺:SGͱZ2-Z) (QQyΝCV=Lہ;bA]gݎ5/M`~TT5k<EQ066z477ctth~⨄a+\rG/P?l޼٠( zp{x<4 n}6E@i~]jWnؘ7^*:@y //q\`UHHlBN'ۑJ)( NsX-QqeDɍhNB~\R480E!b1u: Yq(J)4M{JؔчUiǛ$JnkBHuC%χ{@32/^x`')[q w|!C@]q1 4/ ,_9۷oժ*Bֶ?5@NNN(M!9x%b%#p 2HNN "22Ͱ^,gδqEEE݉g%x2+!wXWpx<`@ll܊ iiiXclooQ'^RJeaO#9è{ =}fbΒMEWW$IB\\f3>j5yЄ̜˨÷sVjZcpԊB3Xr EQfx#,TDFFbhh1.Q3ZL~2gN!e~A ((tِe `0@$(SN^vZvIФ0.;vo- K'})QɓlÆ O>9vnn.o۟L0Au9?򌌰Ɔچ_ݐj OIIEDDPYfFabK.*B渥 Had v=ڰ>TvrBS%A4cω>ۛE4 :3BCk NgggcL7Q8pPo][^v♀"+2X-VP,Xj![tp?RZZ( 8j-@<5~4b{'k>=8*OF|\T:o7M|}+ [pF)rlS*p7|}.)6$YYMkb<.3=Qh#446i}ݖxQ8ZYt:l gBfeפ,6Edǎ(]^"hm${ rWOe$X-O))o("~u&bjzg8N9%*ji{npx ݽdLuUy&z9-b#@<'Rm`w`$2UC8ȺMRRs!zEWt3"k޾~7EoLriXy4$fkg5HxD^A@;Ug^/S~UZڅ# G O $oXÔ.|G N{0 :1BkIn fV.ǻ9$\4R}vHӄ‡b(#01G[W]WXŬzeIOnKg;C*#:_c"J]e 0s >=ܐ96hGKI?zXWAS9Ӭf}3#wG`jZ@U_"][X|t'7ίHL'Di]B1{0ą%v POTTQL~T .m-IȐ h~D>8}~NK(*|96/rnZkkEa0ˡIENDB`PKbJ3W|vwfَݔʏI>73K2~ @8@ X H inY.7袞wW|={(֭˱4K;w.iǶm۾rn̛@J9{zz\gϞ}mǎ? iJ0R N2L5=/?~l}ݴ?svBh3RkWvmouuҮ @477oimmɯ*ʤR J)P8OmyQQ|0}XYܹs>#H)!BHQ1E,ى7zl'OdJV.MH !2ABBLd@,Y*(-+߽{wӼz{@aaQ9aBs.&,UмM9GZ7119B";X$6eS<BPaICU d-[9D(*]==c>@tIh4 ÄirpsB#k7M ); MK#ԐLHhOAt ցh4Ҿ __oi[ ݄nua|"%H$W*͹o/q<7{e $3R\ !FOnoj}^ 6 aFqޝhCåXm^Y0x<+%%>_THd%b"2G"hvjɒ%?^|yfLZ]]9qD)a8rrªSdzԯXBu8}qF`BEEp8nݺVߜ&IbBiʮҖCk-x<7nܨ8іO455]V;Iͬ.iMRWvz^-D~~~ŋzTcc㾫Wa)f o=]L^T"ƚ"gSBg 022R r OӶ;wtĒ:"q[ 0/D"`555?ۻwчhVV8ED ad57o0\;[D" t针Ft=xmmm3)0U[* ǁv'sh4z.77Wihhs bee{DW8-[J'J vKߞ+UN+#GЖLTAoĢ]#@:8ԃ |7 RI B!DB$T2Ƥb.DggDScա!պןKݑh xlR Po _4LLIńsRLJI1)&cTU6.]jڵ3ժbح׵WAKDFY=[./|5@Y.H)6NJI2H)IfG0qnHYUUE-; i Ji1r!`BI)A)1( Zn -V\)v-^ʁI;v~:bbbq)jժeTM*$*IENDB`PKbJ3޴toLybniz/Images/ZoomIn.pngoPNG  IHDR szz6IDATXŗmlS{q8CyK2X yBdC& ԩ(cBڋ&DaI0ihti] 9!)q8{9gdв) {uus}sވO)scrDPk]]]_ L&ӉUV TUUn`iȓ (￷ec.l`p0OK6mn\01﷟={ݭ[BMaH]7Rth2L<>|O~gXhk_-~̙̈́G?RfwGvܹ&>޾hj:e!P-RPJ00@0mxqa Νޗٛ/%$!RBH)b:#1L*@`ڳ畆n\~=9\z#7 %*" 3 " %`QA]dIi {LiC !ؿf9/~&v`Q,#дix8q!gyn|||۬fGOJJJVB_/]4l6yj:u9rrU2UUo_tivr\e˖Vu+p(..>_[[XևnjGG?)*2XPԻsp:;].׹+6mvmNG;4H7.UiUjDp뮷 p8-Z;ۭZ[[w_z8~=n_]|i֔1 Sp˾EMfIIɻ۶mcʕ+{=;O?PZ'g<0FN-Y7_5`llȷ=H$v:Dg)%v~I F UWWǏ?./^(ƍ70Us_7{hD.bT\30h4p޽Ν;zg}']'˿ |.'K9 yn:v{011qPlo Ӂ8@^EX[vQg %ݾ8KP{g^B)!" !R*cRUUa2bEEEÝH$3<<m[SS>|P 5kNRs|"F% {NHa0]"krRjB J3TUŋ۷o礢466f4!**\_VTTX9fzK%$2!dRJs>|&0! Y= +bv]7[lt:]9J)M$c,I)B J)'"HJ J)g EQxnnX,t˗vl СCڵk,Q$űc+Rs?qmŊʒIENDB`PKbJ3tkpZULybniz/Images/ZoomOut.pngUPNG  IHDR szzIDATXŗml3g̋]A RЀTz-,)RZT@(R_T!M~ @!8- zFϼ8v۝vwM>W}f> #"?M`@L\ ^{*ڵkv0$qC,`MMͳ7wڥgO&+[lyv_7=.۾}PeɸeYdIaR*eP"1Y~xڞmgz([?wVxɃn Q~~۷{WCcc榦@gJ3p9& cʶͯi?l8D 4+;w:^ܷo1))(EPj*#Bl:`۷ʶ6\~y?}||h͚R J Aa@[.K;::6o/[|RR4-( T JN3{+ee_D"_7@oo\8,)!D0aS* LI(EXli B4 iI$, ]נksxd `ygs5T;c@2i`|_kk\PT K]. 566uP+VȰ`<vvرe^Hʊ~/W^N[rJttvv~ڵkZnneeew֭o6557UaRk4':\l!<n{aƍ 744\&=W7v;5$1CIp|l!rss-Z;ϧLﭫN^k].'k\CT:TW.:=翷c'kkkwӉfj`ڎ9®^*FGGfu z߬_*d@IENDB`PKǮ@!Lybniz/Lybniz.proOn0#X%`@bIե<)#үݠ*ڡ}{wA׉PݡlA/nga n,K4Kl4H/G ǹ{ dȼg_~V^=_IvPK̝@aYLILybniz/Lybniz.pro.user\[O8~_iCO6$VP/n/I~)3]EBINs|n>vsٶ$a礡JCMLOfOǿ?k?Ϥ! k6=AAG9Zr[VZj*Hp>8jR)-M A`lٳkaO fpŗ-Jl“rX ~g䒇ݙ uW dhwsx':l܆O>1VCzFagO|1|P =?sLF`L h`5lB--&YPg+j`g)lt5]㞁OdEJ&p.w uovJQs)eh[ocqŬVmh܊7ao)!`h42hv ~Eq:$f:']xTQxfh_9~򐮁)U I7G0Enzx"&#s8'84T:ź0r"ݲIW7s ~D, 'L֞1VI49 džg98փbz)POKRzY.1uڇYk$!}bM ls'k/ 7Yu$MsM y2׸g J}+ IL |X MZa@{u@#//G`KȂTz9ax~x¤;D=`I:L%U;a=1`GGyKh)֔t/e) $>m%|z:T \%\I=)02OOJñ7bzyTZ=pHL_Ui5hla*u1M̍B|~ kv"sjضc L15ۆFc>$bA*G-dgusbO5؝A -B;;"ĉA%!D'8Ȁ.N63C;1%b#ԉexK!YagҠ%{2-wdU`"-RSwZKQ'~9Av$zWc̈%G3ZEť'bTCvl SVpn#0WYT3UZTJR[*uKn-RTSTJR[*ߡr:宛*)Mnmd=pҵ@&闭:J/ WOg L8FL_0ev*o. {e1%=r ͣz1VsI+EI.r^5lʧ Ms])~oyf/8eq@=[Ô݈kYQl` Q?P٨f84ENͅ^DžΞ1KH=B0oeX 6QOJNxJqJqJI JMתV5]j;r'Lƪ\-snhh%eCr!&=,3}L8-.o)-7\˛LFgυa2s*'lm|rC`˳M:$3H1MQc\78-Ib2 a)XᭈDjm2US󀝏rn]N̯W L⻴?Spø>M`vvjB(b)]-/:[}{PK\@|Lybniz/main.cppPMk0^K-#B`vX_-DGqt#5-$wFfJII;ӁoRfR;/I7-PA,~n78%=+TUқ;豷x /D[-?хF'y8CT:u)rQ;ft^56Ѡ|/PK@ +Lybniz/MainWindow.cppZ[o~ ʱd;}l puQ&@s]e+ ܕkɹ7MUJ}|O%lҹ4B4;nuWRR 2%&|O"/NF_h:# 00hИwR<L'{Oͳ,/'rKqeSi]tZLH.M{Cd9 z/6tIT\hF.S̑ K`#a~IdīE΄?p9M+4[L²-y7Y8E W%reRJn`] "_> L~|.Y*iIgpx')Ws:b~ސ'U#] G@NЌϟuilRd@V| >)<,XAg3}$$]HȎYwChj|.#,LD QG6÷|~ Ӏ=tFVk$qxas42iaJ4b]XBYq:˹;N[kr^,|LCބ⁍r gc*M Qu*-n[xx;A'`-ϗ7fNܣu/!ƃ7BvUF0|4c9  <. !8nҶ9{;v}~b ؁xEϨm1x^^%) 5c1 n(y OD; (\ |'Dj:D M! 1*('D1-+h \Gn `%ck*~B!IWC)"E bN&n,`x6l {e;za;~_oCU<cD6y{Ӝ,V=`F|n܁:B#C<(ׅ<)0-Q 8!$7; ƅVyo8⛃`˻êĵlbG'XX4{E q 58OXUPE9g9w͏) UJin R5z$׭L,w $7ĩ,M.qFd3mT6JUns\9JfQkbբ&2]9J8Yݾ7JhND̋瓅]`py, 1IC^̲DM'ф+Yxk5o@`Me2? bP%+@YKT刈 6.~?mLWojL2TutJG {U˱($xɜ.R&{uƗ{Nz8Ibq1 'sBUo ͕ 3_bx|QX.&sΪ"$g\P 5^T<@0KFpxf=8aC(K>fT'4jN:΂$kX8'ڦotFs0zCm?L bkKGaQ`G^% ctHPU:ee|;loJ3INTߺ2msM캿UַI"յM"ic351ĝt8,݉YǞ|0JIUeuR!7 B!לىNjx2!+VUFPK@KhOLybniz/MainWindow.h}Uێ0}G,!UlTi mReSV$CdvjcBcO<3'HaGV9^>߯/!&"D‹<쳇İ}T=fN&OyzQ"}(\Q&b&Ry"3[]xD_^R6+v,$͐OͼTmj,N#50rr~O)!(&wιUBTPJilGRp48wScG?Q,³ˠ*%% L[hf;хIpr6&oҔqp&db7׹ua@{-i/ s V^?L n"aj LU0,hjV2)f=gj>k=JW7ɗGO:*XIl7΃ix^(Xg<n1C4nN)mYs'/2t)箏A7g>l}Qojvu64hUИ}uXfDܼ:%+̓*˶6+:2|ZPKΙ@[ Lybniz/PreferencesDialog.cppT]k0}?T걽!I! e^CXdIm}%g~1>#_q54R3 r9-dP+'uqG,^E\UV'ܶR%j8Uq=C 6bQ <1}+Sֺ¾H)`QXwg%PÕO9]7Nıo[#Z2X>nzgXкz:e<ԙm+e\zE1zwjxfgK `&gvGѥM(][g0%kvXކ@o^oԇTߋ7K! W>-?V9^ !7ȸ]GVq%|Ӂ~ )-X_0uEK6ʣ ڿsx-C:Z[JN U1Dc_ӱ Ʉ+~b$nɩwNYK%"%)L۱C먖,X"wY}m1hb?#LX- `Nf`E3#_dVD|~s1wHPod%ql(YP.hXrV?!TbloۯG$([(_O/Ϡx B&*Zb"4#9˲*?(;#)R w[ oJ/m)}ߺe IE ȌvrrKƂq۝xp&$C)GEN#7ފܵE ipjBW%G>s?;;|cy:9ѕv`TeB|a;|hꇰ7|PKj?͟DŽLybniz/Resources.qrc rvR¢ҢTԴ [%}%X:-3'371=X߱@/39F,SMN^A^:^Un@AjQ RVXLPipFjj AUQND)#J)a{A\\FIv\6PK@Lybniz/PK@mLw  %Lybniz/Example.lybPKS@>5 ( OLybniz/Graph.cppPK? Lybniz/Graph.hPKj? Lybniz/Images/PKھ^?Vڎ>B Lybniz/Images/App.icoPK4kM  Lybniz/Images/App.pngPK4 <3 Lybniz/Images/App.svgPKbJ3'fGB b&Lybniz/Images/Apply.pngPKbJ34 +Lybniz/Images/FileOpen.pngPKbJ3/ 3Lybniz/Images/FileSave.pngPKbJ3)0+ 8Lybniz/Images/FileSaveAs.pngPKj?kf {@Lybniz/Images/Sheet.pngPKbJ3W Sam Tygier lybniz-3.0.4/Archive/Version 1/COPYING000066400000000000000000000027461343532221700172220ustar00rootroot00000000000000Copyright (c) 2005-2015, Thomas Führinger, Sam Tygier All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Lybniz dev team nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. lybniz-3.0.4/Archive/Version 1/ChangeLog000066400000000000000000000023471343532221700177360ustar00rootroot00000000000000Current Version 1.3.3 Changes since 1.3.2 * Apply some patches Changes since 1.3.1 * Version number needs to be a string if it has multiple decimal places - thanks Sebastian Pająk Changes since 1.3 * [ 1807003 ] Error when saving * [ 1726426 ] "evaluate" doenst recognise "^" power sign * [ 1829857 ] Two start entries for lybniz - thanks Mario Bonino Changes since 1.2 * Translatable * fac(), and sinc() functions added. ^ can be used for powers. * Improve documentation * Bug fixes Changes since 1.1 * Coloured plotting * Auto Scaling * Scale labelling * Fix rounding error bugs in drawing code Changes since 1.0 * Moved to sourceforge * Optimise drawing code (typically ~50% reduction in drawing time) This was by compiling the function outside of the drawing loop There are additional savings when only plotting 1 or 2 functions * Safer evaluation of expressions The eval statement now runs with a restricted namespace. This prevents a user being able to call other functions within the program. * Using "math." before a function name (eg math.sin(x)) is optional * Preserve center when zooming * Setup.py install script * Pressing enter in input boxes refreshes plot * Make division always use floats (unless you use the // operator) lybniz-3.0.4/Archive/Version 1/PKG-INFO000066400000000000000000000004171343532221700172550ustar00rootroot00000000000000Metadata-Version: 1.0 Name: lybniz Version: 1.3.3 Summary: Graph Plotter Home-page: github.com/thomasfuhringer/lybniz Author: Thomas Führinger, Sam Tygier Author-email: ThomasFuhringer@Yahoo.com, samtygier@yahoo.co.uk License: BSD Description: UNKNOWN Platform: UNKNOWN lybniz-3.0.4/Archive/Version 1/README000066400000000000000000000005061343532221700170370ustar00rootroot00000000000000Lybniz Lybniz is an easy to use mathematical function graph plotter using pyGTK. The main place to get information about Lybniz is https://github.com/thomasfuhringer/lybniz Requirements Python >= 2.4 PyGTK >= 2.6 Running Lybniz Lybniz can be started with the command ./lybniz.py in the directory you downloaded it to. lybniz-3.0.4/Archive/Version 1/doc/000077500000000000000000000000001343532221700167235ustar00rootroot00000000000000lybniz-3.0.4/Archive/Version 1/doc/figures/000077500000000000000000000000001343532221700203675ustar00rootroot00000000000000lybniz-3.0.4/Archive/Version 1/doc/figures/lybniz_colour_graph_small.png000066400000000000000000001205171343532221700263460ustar00rootroot00000000000000PNG  IHDR PE pHYsftIME $9%n IDATxwXTG{SPQhlk1͘Ĵ/c4I1ƊQQA^ؾ~, "F=<CmHwf+d۟] jQ)PshLO E$I4c2"J|9){XgI@ IRE3Y7C,Z/h ]-8yE<+7P 0qIP KQ$N&$ łqCK EAEi;C~C WNqC44aߞhafhENbT#[(h"N; .J4IQM;eks'J]МHME4ARz}TBMekTR^̜ۋ{4ZGQ4I(0,$MT‚P C[((DRs(KaX*6ԥ=EI/dYvѣ=%-g SWXp(NǹmXgR_tOR IдD<@$!R4MR4MӦIKHzd;oXLM$ES4M@[/[%^1Fy:]KI+j4EY5x C"MNfYh ]͌uR#ȺX<եdDx?_O\֊}1qw2"( Kq]C3>vD{l-CcAhQ4}*kq.߼q E'%0d"I@Ӳ*qǰNBlbiGqb9b{2xL|"/Y6 YP!| jh~0 ?~1VIx1dӛG"T=ڞh4%7_w6ZnpV?l\njN @= 8E$Q&O's8i͡Qk*+0 Fn1h(iص+1'k=_h[3 C/V*#KH/ʬ:i7C10,<6XQi^-ss8^AH$ M2$a0G(@)ޞ-.,(PAoۉ@dV]%nCjeo@nl]@G")_$pdVg[[9$'\5^oiK"I'34vn~(Zڹ ;{^l8'
#Ӯ" Q(q.f@ =ˠIVWVf`رkϷ_}Kcԥ_rt\~I@\I4-0 re|z#Z9 Hmo}聡-,,T*U; m;uxyy;p(]9׎0"evey@ :0[W]x}ieZu䑸>v*=z9~6Ox,z ok t>}-AWmrӎǜ+i 9nX?v]TBN=g^?{ q2֢#㱧 j=Fd-j^e@ 'nxCոyI7<=ܛU|y3ġ-'{]6J `\˲NM;g; B_T?3=|!W}͟ G c|j7ޘ;T!I<#}?3EHšr/ºB.v\4+\fs9-@s`^gtq̬VR.ެ (? 0~-<hIxOusWe)쾛 FEسXGknԙ-6 ~ivk>Pm>}ϩX JU+[f7X!{ b*a3aY6rHsjf9,˖鲢bLfoT-Z%-X uI>cDz~B|Gȸ I[yrϥ.^mq/^%'m9pȜ&4̒0եpwCv, X֊ 3nΌiRNSR5'g q5E:E6+`d&Μ#>6h\rJc4TUIN"6er+E_Yj+h:~슺ڊ?V=htE诃\AU%%tFSMEk*J[o[$ <[ttyeCڸꫢ׬ :ӛFPޠ^7Dwd  XEߒ?7]蜏QuחaD{Q.e֔mEei+!9=^3+SFIzSse]Dyy51oJ&u}Xzq?+ό|$%ͻpqO;si3ݵF;qTsfMle@ n#( P~x;Mm:<ޝ.z<,¿Av ө<*1k<\]]\]]tU #Zɒ<2@ Hqqv2@ H><@ZGaT׫^ DaEQnNY9AA S sI`. Ũ2 ݾ`Zm:@ @ I@ : <:pGA555.^h4V|>AΥkqZܹZK _==~Vzj9::D9::jO~vZ all}y<ޓԛye/3t eQA maOUZB<+a܀Q\.>kƔg'`i'+">>>>vN!#+wC}nxTڻ$bYf?UzwOa*cݥovg4INĜ*++JJKkkX-((HOM$t=IԨMsT9 *d\Ju{ۋ]m2FӾ 'zsʟlI=՚̘D"0챵=pe슒7m~#eĉ"EQn߾zsK{K{i:z  \8˲&)b'O'""ǰ^{ޚ)//ieQFjZѨrrru:dA$K,$84C dEHRF.ӕ{KeYg/oʊ2'Gb.V $Ft DKW/XG*b0r\&mܸqǮ¢=#"$X,$T*J% fkkK|1[31O9[U]򠕕5/q !@nқ 5t⭲+9/eTb(iʗ R[B_G{gW |_ԛ~,2 >)[VUWo۱sڴi~~~֖:~ VVV3f̈=u&?w L/ĉ%Ç+ kkk\.8ϗdSN%NxZHQTZZZ+{GTz}CBAD" 03=KNIU3˴Y)Uj>G:(9WSO'y*<j~QR/2!ӏr{iIK78X"Š FSVV(++}6a\.wܸq{DFJA( ˲ PeoocԽhUUUM6DzkbbbL&So 0c4 / 2q3w[(ssq"(@a|ǝI,f'}.I.u8KQ뤔E\E2˲h/q\[;U+W:|D(a!}(:mʄ9iogP(zi0֨RòݻO eX|@ xךe\xq||[,4Ct>f0Ytme'S\~`úsӧ8sp( N5q8wŵdWA 00lr^sBD| )(R^EEQr%Cnia!;ft~~L&:$`42 u2|_VH>|ouuG/ B" 0,k4)R(oVs$A4MA444޻RFah(*::eiӦ1 0LocZ"3XY W/4^Rܜeeen8qy pܚr2LRBaWay8mO7_` &%2$YqD" Ԭ޽12viE^cA&MKO`O4 L&(++OIKfp|nUI{opDEIA}mNP'pKIfT"35sU'ȭ =Xfok! 3ft W$0 ]YYnuz'(T)S\T9h`\&C&j' ..΄ɴ+::##A^{=wMt…bo/Do"ñ޽ :骪m۶.xqO9egkp*@]gT`ߛ`M& Lz!7/70B'V$nrpjܕ-O(a(L&qN; ,˒4S]. vY?*go3ڦ0?9%}r,Q<ȲlTTԥK s:^"vv|_VUlݾNG!666cll|}&$={>%+*gEK~wՊ ]7i3XYZ.?pzAjkUݺ]͗r%rO98 $R_[E5haĻ`<ļzfC*88FѬD4 bf5MIrz*_{^ XȪB̸!}ꚺz/Vv IDAT8x֌8bT>bG`a]4-;$ ΞEĵ$WWםѻwip3":`hk+W\ܷO/]4 ipGJN;uڅ2 n.і>'v] ~r6?uE3IQP.q\.1 EǏo>G66JL*5;/1ofi>m*6oy7BP /$8",ke] /tz!("h;Ҥ}@^^`kZuˣeE ݻ9'd2MBMl|_(RTyJUGQ@ KƞSo!O>+,I<.A0  "jNJ Jxo #ݣ#l :;TWptzM]{ \'8w;~0gBDL-y/Ipiʾ旟:޼GP7ȼy7?3.5h^ܔV)C/?RiTU1v^NRM<߹U1k֮9MScǎ[k֮0 yvϞ14؛pn\J˲lUQn `{;YݫsxҷtNKۯ44;9y)..~t0!-֎]˾jC+XSps R;.heUhzTgkyX,HWXv}me~+8o>{W%_[毤f?GDJР7gY3(vɟm~5f{/`U2N!~XcӚ_ k@|~7ڟ$k)qB"YOxM>`6`ߺqv~wva>^ݦ-0O8?",Lqۄpě+>^v'Dʘw+jj_7 𑣙YfI8`P%^O.jZl{q?&KurrV.>C*HFAYX 4$eL+QfMN*+.{kyN˹=d#뫓畩D ې~\m}lndh:4<,Y1ށ.Xu^|yFLWB=13+;"<̜23+\0nR[yt>nI7,WdfekKca Bܥ@f=p 'yS8O>6:m@IhRndVev؈uWj عt &3׎:{0FN/D~~41{4sɤA=t/)jw2TXV\2!VW'arT.vwЇh 34>D>-kIiێ^2.9xPJ9v6?8z<8u랳*X,qfI$zI<.u&IJ7f@~fwcZ@R}p'sfyX\M̋+UFV߰f/_s%m]+5+GPwn\~EvҖm{rU{ɵM7Yϻv/Vo;o`0pxsyxƌY4iUzUmYyőcǛS&%HJ!t_hcBy _W˚-ZG;v\4_e mE5~bKY!*2~p%)W# ]{O^ePnmA] _O JWs%vX{_Ȫs1]ec&\&zWF4ȲU5߻dzR$wnch F^]}r&Cφ$[1Y[yވ˧L- j9W]QVZf'uaYİIc(akoK۹X^zJLjЁ,]ͲvUU1Yk):3l$ 7xܣ˷ ћ 4U%k_x~?gyZ{x쪹S.`zuߞqJh,xg{ڟ\?k)Chٶ(Fxгa|렅FxٛiMiՍU^}/Peۮ Yڕ 0|qJj>'>XFt‰飖5N#?P;X71bTRw2VSFr[L{_5l0x ^vB b89{4^ q %Cjh.صeߴ#?Ye (g%Bjl ^E|tXFZ]ҝ;8*x0X*RvQ;m]_Ҏ({gƪp| Whi|Xݹٳf4'+WiLFy儂+?a?~,3t`Ǝ)o1dR)_8fCK t('>rKʶrqg5A.6 -% Κ!,y~ݯl8r\-,Hm.m4ʭ8o2qyа}ZCeUm@Hy/ZS8|ϼ!MS|Qc Y ,K0 VY:- /α`տ5AF ,$fnmNiD'p"ZYp~vv~As?$ \ϾڷA{ |cLҷ.`bdYXZVg'D72ݧkʼOpaɕvE0v͟2sKCd\eY8tJ3GNTn^]{vrð$|p7<LTE}+*p9)11*ЁCK64_pؼgOw-uW3/^ha;hX@h[ />Fv'a/=vͫk4FV2e=} +7tʼZ?=n@ 'plצ+/N½Ǽw @60lLԾb$ [:O p_`$@ $ @@ 52P)ƹvI #yjQ(m9-Z}p6pM@sN@ I@ : @'@ $ 3A2 m4T5@z/"T$aX,$=*0\jm_VutSF 7ahZ*+<|"I7 U5e%=*eYVippr Dͯ~ u^Koφ04קR0eLppv$B'Dip@z/ qlTX*힌%R =4OnI hPX VFS^^A45fWT]$%ڻ9Ky*0 ?@D>4h4vvvm2PuեezqpssqBDt>{nkʋ+:#;x8*v;jᅤ:t~NF#mVi?++?\nݽ\꽝D+n.@KB/M /:cޝ%0MT~*ա{o4{挠uv{\z###_:[~__ap1dSfOo֤S=\kmPkt4@88qQs z}`'CMnG۬:%-Z* 9oˣ^WMb  ]HSɷFm\8Y4T̜coVZA|wd }zX{u;ldw%wg_.~E=t^!Qݘ!џ_LeRvdbc"m#$V#D3UTˏ96mڡuN?:"b茗ˬ7h\7;@,L?34w8Nvp4d. $;07N3,8W\J/Ȕ}<=ӮI@]-;>œsUUY9_Ι={7퍭3w_'>DVju,x+NǤD-`g!pX8Fz>|Z-_o&{}+D=\9Xrq+8{zn)cmRsH:Vѩyym;VZ<{?Chn/_}&ȫů5gylvdzp(ڹzoP 4Yh ]=t=u~MI&cC(2"DSXSX X:Ukc׭d2LɥOڿ6ʤg]眻tM꺺!NP4N|+ІtR(R_JX(M\X=}(ܹGoƐg_lat{& v^HG1;xQJ3%P=hjYL*juWQ39hQٝSF'. YK~)6[y6˖4RЊAIlGmrTs1uWKCznP<3IYJZT?Z)jN.QChiy;:aryؖ"^w,AZ_t^d¸^ϩk/&=mD=0h[#4U:u; sFI‚L,h\Bع߅7$m_W iN9PU-iw9!Ac\24`&Nj=6~VN[CCN R[v@KU0fO_+U1mGgb }ģՋVT9V\ĵe<=Z{]m{oIl>TPەG6|Lנ3Ǹ89`@uNϽa2Ϗj_{k Ο#cu(:S%_,|kRJ^߿m{͹-WvG{jAIm s3/MHNNn^_0Sɏ?s`/2y샧z`BED]J=[|A}mB]]EamcHXਨ(0ݫOdCq7ܢ?[l5'#?zIEB+ʊerR Rե9^sfN_ _=cG ;u@ϊo9{:)}Ί Ed޼2y+^gao-Ɛmӛ& \'lmjJ py=D'bD7nfJ0a5@n*OOY/rޜ)VMIPk?N(4!yyS7o$%e YL4Eo[py FU{y] 'Ev= Ó.9zz۱ ^N W3?/CO'!]GFDw5vlXd4+A\=:vzU꯿~6P[u]'pӑNM;aN{mDA>UҵuG{sU09vÖQ/F+nn;rZPi^a@ ]HmUH"n'akbIƎ7v #m*aݽӓݸ R]^ҧ80ښh~Y*KCf2ey uۃ^:GTAC EnIit'@"A"{@mzE*mtkܚD"mݓaaQOxO+ IDAT. #eyu9J@'@ a  ;HBhy@z/vV á* I{ uS:KΖBhh 77uE%EZ:RF ʑީ)m9E_yBn5 R$T RUQ*{BI6ݢ=aAyrDw^I\^COn8@oa@$$z?"ՃJ}G}]#ׯ=z]{3 X|͌|~ӧO7]lYƜruEީb0pg:]osRwD[NNO!㏛=W^i OSZo;Y:I8w[u{32eԴF`m0}`'!Z +SXJD 1x茸;kJ̉<'yKOa>b/;"}/zF`{n>bXdlgںgK=BIuhi9rQ`)4'#>Zez9 hx>Ң]jWVC"˥o:qtkWxĩyp`@ϗLo>]ȏ}\}Ĉѳ7~5D q6Gh=eqZ?9ZI~>FQ]N[]_y;f0oG9%CY't b T]BS ]_SQP\N<{GG;+ ( @ť2'Kc#hOJ-[P[.nXҟǺ\.ze噷h'oGaiʫ4%<ݮ릏޴uatzs3~ku6ϭXqm yY©UռִxS3eY-\f@[7˓r+s2ka!uZj}6y[7QcF"5Iy7<*-QwboU+\񟸤l#AkS!;fpuvF^neS=x@~eĩ7%K'/:eC 2q34Kjr-kWdn}"'˾3N4uHAŌ]9{CYeZ@ճw.3۲hUvoǟV9pBy];o3;3/95P_o۵p"Ų]Ϟ[4T_=n;$XMKDhKLݝ>=UHN{\M|dy|̹|B_!.7gz?7.s:w)c(oȻͪwC_A|V{pNsYY[-X8H?+5mذ!C 5J|/Y N{a.W Ϭ<3%ܽO:sb(S6Vy1|7^bTzJ: b wAM̅+y5yHBBL!ںQ\X_Q\U P*S"a ;$B#?ps=>}w.sfWmUt-Q2e#S3˛Tad+Hu_{S Ȍ;pżmtZ-NK?5~ h}D! 8NP2 WM9ciGܿw% e{/L(:v; $"HFdYP/X2 (P'@s_f?vÓ\_߫~2 K+zD5@iii5%7řk.˦F}Yt:현:A(4Vt4X_n.Rn74(˩}ka(nY14u)j>Kҵ517teFf}=i/ǡ%׮^1@"Wԉ$̬"P]ܗ8PF 7 >ARkf\L5@T)"5I`A~av%N`s2ק; "H$ D ԡmtZ,'TX}X1@>[S.71V˿q$$aN^3N[Lyq C`ͻws"1[v.N1tz͇W6;wn~,цY$K*u4JYq/5L rvr5^ (nfQ7o^Q }_EuLuaⰰ0iqn;#?)_0ּ)M΋V3 ݨO흰7E,X,b%"4ݶw$ho`gkvPI,E-pt9l5XNTf-Zwӱ[#|ڙێ=o?Oũ~toh}d煬gݹ|Y@a-k].>~sOk7(x /-mصVh3< W#d둮c &MV  5%Ĩ 72cw-[}H4;+SFN]U^t3yܯț]j~w="''%]'EMNTs%mIRa*xU4,ߕQj6N,AcTH ,ԋ.Oa>?)1ozq5ͭK0*duF \ntWaUrb O"uZFjPPod*o:@+}ǵwC ɟ&k}~~OU,vND)5H.bm$EEȨtOzÁ K S U5(:t;~'ңXMmNU+ujn(h O,ĩiJߢi]EfD𹓢-5M%IPoއ0g WB8z{T xILT쐱L AwSuBPmMi]-u#,=07޵徹PZEſױ=i=~ƕb[Mu,# }G((9X}Vq\A|ƟnIu=zeJTW'û Dqhr'aim>R4;F!0Prt2  9$’rs372Qø>zNȗVnkhڊS#^7xC]P({Y׫ PFF:~XhF(ϼHrR?!9G(w0 Itb1 DqIx@'!SQ/La|(O~,H$98UH*ť;6!I%īP 1X*Ņj`" % }ه˭!FonN;lHК!}O7g>z6]hN= )^ռ_:ugge(0մ# ӣDfbH󗹍|$޻&;n-"NDxqV^npOm{:~M«!3 +tL=lt0ӑD`z Wt2 C7$E ƭf2L&>eg=N4[q۳W>$zpi{mfDpd_)^qQ(Wr6{5bIe}|3saIl?[iٯF}3"AUD }[]]꜊$V+݆W",˨Gbg 0Dp*yQOM"ɤceүJjdMv/|[kֹ1݇b!hjjjׯ^HU))3rRRUpxS+g 5  s2|wN]z=~󕕔8E,] Y*C1#1VaIF1o&87lF3o anjzDGḀv=^i -9aF,Kgw+ 1Q*fOhi3 ҫٶ6Lq(:~g/:}wUOP[8?iRwC@X#z-ew[M_r> 5OK璱(Pʘ];<==g0{ἅhVI"bs. f1$g?0OfmcX-#@!v D&$aSsQ Gx0cMc} 7t×6nc@`3wy]:$iBÒc˲0i1\_ǎzdN j8HXSU]^9-UJC@ _uD@ h5GΜ9yyx26 k"H?Jc6SOJHܳN9n֙ n 1b󯕥x*Iˆz[۔6c DOFi' ۍĽ*j3ْV|='<e<2~Fj sA*(-g&yr>g7v~I(tJHvB#b}  &={hFiZ @h&XIOHqyĆ}"~ pSm<4Yc$$e*B( @R~VWw}-@G%%y'N#_y8ICp]FH= -\mmyrN^Qn)Y܍dȷÇ]b4lҏ{ۓf\#" +&X;Ƥ$ADw1'.y<}5)k?Cc雃6;JDMkku a34iC(0Hq@`=rdJIo\ 0(֐2{r$1z_/7`ePƩŪ&-^ޞ m^=Jz4`$伒›Ǖ':yRi'9NmTf-Z--]0pTU^{AlYm[84hoy ₏J=OrA % IH$b5PEדNIY`ï֋eD@ceի$}D:; P2G1&57>|x޽ C{HؠJ `a#i)*Cgkg^>ux^K P{,PQpr<.5lL^imr0 |)Zd|0MĢլ[!Z~ x b$ѓH$3a /U$*}B oB)bNo0.'#lbaESW1N# QQhB$ ItDI D~@@@ : t/H**E!ۼyҡCP;;sYVu!p1uQ8jk֝BYV{1AE5*P1L/X4c,-[,XJB(;#oZXB(:M$ :}e\TJ)[/$+;Ů(@ͦYd2p9P(]g"^II4*<@'ܼsӧ@*r[fևj@ \+0#V={!r1ꆊQW鷝;̑#瓕5k֬͛7o޼Rll['@ Iwt|66T3Z[:XeJYjl.,l5cFqƍ7vQ*kĢηΧg`B8ݤ`H$ 'ɓTmp8o޼W?{iٱVӠhiLBt]Qe0 *$ iƣG\'Nz;x͛o3B}V***.\p… vbʉu:q!#4tД)!p$T*uuާeۏ2WLLLLLLzQڏ==aAHU-XPRo5v-=4jP$H 4&SSS Ǐ?~xy_4TI@z4/ Ba~jiNKvg/ik u8)ԗ+1DBf~;ngl!4itY%$'/wsCd|04&'ۘ.TMMɦCUtiLT1 : x#2϶bRVۭ>s6: H0l~Ӌ <ۺڊ ?2<qp??1CVU8p]Srssׯ_'v1O’HXR'πXuuh8t aSѧگ펜MMM]]];&s0%Mg: H/1x@=@ $ u|p-0aôuGҘ릘`ᰅ%%ɭ7pPh$ Ȣ+&kH<77w/_ܽ{r*ZN\W'kv@@'tݔw$L5 [85D+t-O{Z): HK}PAUt4:å8[6L{ذWXo Yfv_Acyُ|64N<ݷBc<6(: Ha:i+3 U@4Gm@>pL&N~[ɘᾍ_^NBӅ@'! +IN3))R"z,&PêƯu<RY _&QSRtt:xh9 Q?{v_O ~NNNNKKSEGʼD*J%P4* /: H+:^>sLg___www+wmk 9u:dB(8MM^yj.n疧}L/o2|f H$DjPIR^ݽx%$q]2-16-CiN;=Pypg3FPm@ :5=Xdef2]M]I"OwmySO^Vfi?~/KO,v[ctih8[t wwWD9|1P3J&g{qACﴚlΝqwwz">> g*xtwH!I@zIUg%eϟT_罘Tj5*N2dȐ!CzL6$ I@zV8]>^$EB/+֭_a>qHS3f̘1=S+]@+@'5\U8y8.ذ^O>|KD"'u䕗$" #bFxy)N3=ų?@ѱ3bΉdI$SnnjSY!I@ڊt9`Y״bŊ$SUU:tСC{1A'CtS?B"5šޯ%$`ѣG6ot@Z'A+@'5(2q-Zkl6/^xE(r1D"`ᰅ%%J!I@ rJmmmbbbEE`0P!t )4Cwoد̵پ}+ K[DuSѧBXH23B<˙Aɠo7'/K"5namUR]RZS paIJJIJ< eϗf߿ߓ1fzN "&''WTTdddddd@@ IG콽O[~Rίjkk|˗wkYLVfk󸋷J!I@z mKҚR9~;|+9>C2hwԶL-IV NқxNǹU4&[1 VM ΁V NiΙ3VVҘꁘOw $<3: Ho"瑉^'cAnnP$ r ֶȏHI(ú~Xi 555%%%%%%%pbE: Hmeme|T[WPVF(֭{C:[b( I@ b2t+ݻ...>|p{UH0}@@'M&O̬̔aluq.Ж-k# F4Qtބ@ 99 ̦M']1ލIH _rZ)ׁ'kMz]*AC]7mڔd2i4Z78%&X[3Y̪eAƜ]e虘7<< I@z)'N[׻2\xwa2͛fДPF(: Hob0jTǏ^`ղ*dyPEZZN "H4F'1F#jh$ }[V["s'z5kV``````w|tJ{[i[Yi[]OM[K%P*TE!]AUNkhie}t7Sg>I?WTBCMVvB,Vӎlf/lhfcIt=f2II"Q=`36Ϙt?ޟ1xFϔU՛OWR{'3:Sv8i#6B AJ!&&$$5R WWQZt3y\LP"߿/RSK<%=W,cc&Bhi7nDDdmp0##uNBf\9bN%¹ݳn-^ڽ-W ۼs޽BFa2<9 `ޗw;"w$(֭c̱;G^ ̀cM &e2|x+֋uSW N.ou722zƍeUT4 EEUpBxtVFhIIrG#h4jh(N?xp:DC!45qvMܵk?뙚g[(YQBƪ>f泋mtlPJSS;b[:dOfggW>z8xeXJ*0VD#E- b&N4VSNl$=HH(ڶ-r￷8;sk&XYY,>=\3gh5kt.M7^.AjꭲrJ?}9mZ."i_Pk#tcdɓ2SRJ\]<V,Gcǎ;@$Hhkkkk+ӶݱȑD"N>vRFF W+9L2$dƤI.Ybo37e#WNsf[TUTY[9d@/I&'MPPȑ#e`DL TU%_#޵#GxWSǣ#GН}:&&F1 na!bzSH u|}Gw"O].Q70Niks JSS.l%E ff\H%%%>oll<\f};͔[p( PTYcFp8)qqH$6IȒ\vrd0/]J(,V4vvYdfe؜E 0 '<X3Yݹ#=Fxmq<<88=&yS%-cεڲ%b`ҝCںK[{?+PlbmmtҥKv11iwo2ں[vB=5}lOoNtvI$d̐!Z'O[oS@ MQ\}aC/wx~ʧOǑ8t+Aa 7ywp9sn}TYU%S1VbQzzDZf[14G%Bs+g5 yIc1_;v쭑1ͧMVqbq D][5i4oxa!zȐ{v"&gg۷*+#Mv!\U11]w)J5Aff&p}c ۷zy^^-:;7QQWWQWn 5qQ:DGG?~L_YY{LO.dDBzhU7v<$ Uvcdzwv}?psXjj޼dm'rƠAlYϹ=Q]]}Μ9>|[NȲݺulOϟ89)=:F%Pŝf>Ɉ7n<~aa!mO_ښ2oĉk߀Ҿ5[?r}Vűco԰Ӧ\%uKeafaI/[f;q_2AXXhI>"<=麺D ) ĂX0H.Q'K|)Sx5.'\iγ  )n+ή͛g 6x8M͞!z{}8.ٕ'*Ս]].^oΜwpH찷׫;9xz_3XY[0=dʽ%(iJ.܇+ Ǘh7Ku\{[mdz0;'Ъmt7ّ-yqe+d$D"f~?pI[uK>sW Q ii3g"BnRbrOYlPquܼB1h'hblgbb ̶mc;f=C42g) J PL+;-T DQ(ǙMgt*vXTVVl۾$xMddVbbqHͭ' a{{4ygTkeƅwgocoIC I ^7V6 J5V AvZ~WWSuulFFűcoׯ lg%ښʲʲW"ׯ_/K&LГ۟hg 82,% Ҷ?X<ϑm-hhҜ?N;K}svc]ɶ8%%ۛH$"9_>!!AlÇ4MSS]"̞}s޼[55vfrF&.]tҥذݚW)MGj,ۧkQǫvw>\S7.OGjzOښn<,,l<,o ZKypAw,b,BBBnnW^}ϫvz *S<4tً7 6JӧVf02BBBzHW\UR0@zQ(x (-Ϗή| IDATCc*4"sZ빶-:lZVaaaݲZ1ΥI߁I,J<sLPfD;3Le;,,Bhb-֘-m-7 ;l={>8DZ6kĒ.|MĤ;\8Prf7,,,Y\---L5VCdGFݴ:lˊ4Wt:ZVl(>>~Z㕺k uu--UD'1h+:lѻ:lwS[# movW}# wfZ>t+"AS|ȶ+w ō N?|_.:rD%'|2U.]jxOkXė}b'䍦qyVY&[O*bmMNtCWiiia0=N ?ѸV,puW'b깠 @AN)v 0iiit:=((ãCE<ѭ o+(}Nw[:? N {׀rt-["lltt:j ;20>驢.,끱s?5ٶh]d>vh(#:jɩ2; 5uv')+D99;&$-[PtVbc >@m4: 3z2۷;9]/oy+@]}U^h5g4o`899ZjժUаY{{Tt NBwxμ9s.+o{]X:cLXw.3G613?!`oXP&m!Jھ$;'d ѭ&~DXظ,/2<<}3Wb}\V]?hd )r&)yL|2Ukҡs+W߿/}#pccc Hr%}=epR-eϳW%r"ۼߗ[Gژk>kl4HcРΜSeTBI,xIK[o׾;w/2m"ufGjժ%kUƌ&껯1zجbt9!,{X(c$EqGoI8e4vx*{L6~  _a}At]ş^abj!X,׉I%Ǒ{FfdTȃl ŢWOY ZU"U|A݊+deoyy찰~{f׊Dv /%Kjq썠NT___'_[/JHxjH FgjawYQBQ}}pךw ?S'FG3edTu}>yl@S s#*%s'bƟĊ54C pX%& 䤊~uq1]~_ְ(PB+J8ُ hM~t4ɞ큀W()f,.?ߑ*{vg$I"hݗ%_E2|ʤ`y:66H4'Q@()ɕO<&UKꕔP9lvrG3#Fr/r#/}>ցjԽ,z]za˰PUe%ɡZ(VqH̅{Cw|E7sÁȜbEb``?U+(8E w'NfT Kʸ!ڿ[?~\{Q-;Qt?N[@q``O? cW/_]7o\v,'/b)OTMebii:fpmEIq1v/l1 /W;F H l;ͪUw*<-[F먇H$WWW}}}4Biϧ"K$"Z5YnĚ93cGxxXT::^Z y7&!l6ͮj>'dGi2|ԡCh4&F>aUU]xzz_,v@Iɕɓ{qX786CJI^"쏝F o1%%՝DcIht9h Pw@=*M]o93|q_Ԇ!|sz6[9DEUV uSTTPl9|8ӓN&tlM_HK}GvMAv.^]7;γr( Ν|m4m &ȃ3X4IDꏝ&=ɬڽԩ6RX]`VὌX,=f( H}7f͚r@Vp8~{?E2~ji{ĸs;oB.W FI|q|)`q{B Ao_""**I΍kku0`jx^ݻi7n`PH,WX?y򤾾5=߱uuuG iNL,w"Q}mHWiv|) 6gSIIu``҇e}l~sŽqIb=Ngrj VÆQCκV'\ii˗~QqV?}z$mmMI7'NMy.NNN?zحikkoڴ)##ã+WN &6}dV B'<4588?vDA>Pdt={2L'u`IK+c޻@UD^?lA~JR vvii徾˖ HXraLBNi߼xPX+i4~E"be^TZZ{#B CX{`ee/xC4I?xSYɯ55%˹b!fr볙L6p:N{Dn֎zˉL&wǎ {8xuuuL&鿲?//iiiO?-J t3~~]/y$ ee4VIx]dd+LM-%(+Dm+⤤?޿xx# ڃK~~ⲳLtO̰0ԡx;gsAQOOzRRC15TNH5I LIIիmm#E;wOR\ɰa#[aefV>ڻ4[q mm48d0*&L 0gۏTȩSo[-v0dEDM#3Lflݴirt}jm#"Q>qes^vl>_ Ϟb5QQ|K|~nn.UYOsX!wAQy?V~  %Svr&4&0 FI G-عs"7״n]b̑f[NwyڹqC_OяϚub˖(^<~u֝[V}[Y$퓗psZajja=<59z󙙽h9z}֭|x{,ZGXw˻{wњ5}233LO?WIO{j0?Fnj;@K}}~fO>]t:L7vza!QQ7l^a95,: I;)9'8pz=rRKM#'TWWwC^?z޼ᱱ\׉x/8e˰iӰ_*xK?l_nh|?  z\9R[d߾r~OR!tO;vfxdܸٳg :@@6n9۷W>MrrѣƏ8qk!` ڄ+O*ڽ[ӿa)^_\\,Xrs=y~;hP3z$??_e65wԩ'L2!fļwppOشinBxxqwKJ];ʕ҈#뤤xNhPxxٱ`JXoh:.TUw gʄNrKTj4oh@:tᆱ>sf_r"bO.G22:sܖ Zm h蓆BݻvGYRnKFs{+<5!|||\P"$tt5qĠH $wt"e :nI.R&1sL2 &E$""""""(@feeP&s86l6f 2 @2`W_}`ܹd# M)Φ Mh'ebP@I2 Эh4F 0l޼… )))I.۶mKLLL7NL7z8p8lmVwHZIX-W.R"] GPt$drƋےݎ$r۲mfhfkFcǝg7L.w8D[ih!W(kʭVN|. }{jux+}rBY|ࡣ*fsm$! $M9s__RZGJK|UjI{i!R(Ue&6 ǯniIvB׿ڡC$gu :J&nʙC9s+*B nu&nG)IDAT&+Tjg-¡ jnmOw5mK@PHkKsʁ!C:&}_mv[60H|!8<ݮT*Ja9;sڬγL$FtK)7@b5 !dӣ4Qkժ:D`7IENDB`lybniz-3.0.4/Archive/Version 1/doc/lybniz.xml000066400000000000000000000203411343532221700207540ustar00rootroot00000000000000 Lybniz"> ]>
&app; User Manual Thomas Führinger Sam Tygier 2005 Thomas Führinger Sam Tygier 2006-09-12 Sam Tygier 2005-10-11 Thomas Führinger Lybniz &app; is a simple mathematical function graph plotter. Using &app; Enter functions in Python syntax with x as the dependent variable. Press the Plot button to see the graph.
&app; Window Shows &app; main window displaying 3 graphs.
Constants and functions of the math module are available. Examples: x**3 - 2 * x 2 * cos(x) e ** (x / -5) * sin(x) xMin, xMax, yMin, yMax define the boundaries of the range on the abszissa and ordinate to be displayed. To zoom in, activate the Zoom In tool button. It divides the range boundaries by half. Zoom out does the opposite. To closer inspect a specific section, drag the mouse cursor over an area. After release of the button the area thus marked will be displayed. The scale automatically adjusts as you zoom in and out. To switch between decimal and radian styles, use GraphScale StyleDecimal or GraphScale StyleRadians. If you wish to use a custom scale select GraphScale StyleCustom. You can then use the xScale, yScale entries to input the intervals at which marks are displayed on the respective axis. They can also be stated as expressions. Examples: xMin = pi * -2 xMax = pi * 2 xScale = pi / 2 To save the graph in PNG format choose FileSave. Using GraphEvaluate you get a dialog box that allows input of an x value and calculates y values.
Accelerator Keys Accelerator Function CtrlL Plot graph Ctrl+ Zoom in Ctrl- Zoom out CtrlR Reset zoom CtrlS Save graph CtrlE Evaluate functions CtrlQ Quit &app;
Operators and Functions Expressions are entered in python syntax. The following operators can be used. Note: multiplication is not implied (use "2*x" not "2x") Operator Description +,-,*,/ Plus, minus, multiply, divide // Integer divide. (eg 3/2 = 1) **, ^ Raise to the power of % Remainder
Lybniz has all the math functions of the python standard library available. acos() asin() atan() atan2() ceil() cos() cosh() degrees() exp() fabs() floor() fmod() frexp() hypot() ldexp() log() log10() modf() pow() radians() sin() sinh() sqrt() tan() tanh()
These are documented at Python Library Reference - Math. There are also a few extra functions that may be useful. Function Description fac(x) Factorial of x (or x!). Note: only works with positive integers. sinc(x) sin(x)/x.
The constants pi and e can be used.
About &app; &app; was originally written by Thomas Führinger (ThomasFuhringer@Yahoo.com). It is now maintained by Sam Tygier (samtygier@yahoo.co.uk). To find more information about &app;, please visit the &app; Web page. This program is distributed under the revised BSD license.
lybniz-3.0.4/Archive/Version 1/images/000077500000000000000000000000001343532221700174235ustar00rootroot00000000000000lybniz-3.0.4/Archive/Version 1/images/lybniz.png000066400000000000000000000053151343532221700214440ustar00rootroot00000000000000PNG  IHDR@@iqsBIT|dtEXtSoftwarewww.inkscape.org< _IDATx[{P\νw_d!&!dBLDvyTm:6fdlkFmqњT[GN:4ZCcK$% Bo]q޻`X:#̝R 9@98RkYx( ǔR"F@)ύȂU& 7VX@nrcU ȍU& 7VS4Q2ߑR lVg(//,?S=JٯN?Q^ҫR[[;DW PUU^rJTndfOy,'+ٙ;?S(//׳,*Bn,֜!Rxge]zCǧeA3^![Ȣ xRz0ZtPB#1PbȳVA =xC"+~sõp C@ݦA`d'@C{"6㧲8***E4@(g*|MT%"AOukz5,IŲjӹȶ@lw`ݨAc_#nII@Tlnhh\.,TA٫B҈vPRoc2XVVVI?jMo<\ =طoS6 1$|۵;KɧkyꌶgוqE#i/YTرcGg.^^{0rR+) tnb9o浞:~js̎GjoI۩\(VsSPPBs+:*?T*`*ox Eez㯏M5.0]YYhƓHII1S=Uյo_Lq0xjn\<ϿRuZ7t$/ ؖIq9ދm< @WqY҄&koJ>l8vKӡV?^җP[=}S RnydrWB(pwN 殺5F ᛆّC*O)#0XI"1vBg\bƖd2yNJF5e e Sڡ<(&$:FA)֙ȵ]7_ByA\u.HFghԩjťۉooNoeS]Ɖ4s `~?{U (GTQ+oCA vY M>bR J)FGG>nSP|$-#:' `CCHm2Ea0crI@oG/F?]H3E͟tJy SCz [ ٌzx48ki&0TNt#x-*o }4a#lk۶mOr yNO3 CX{47A˘9DI'ӏJ4Lةڨӗ }&I>]Vbh4tٜ¼H`U)M%xy!y|\iL3glXngey65lgԹr8Ɵqvn B+=ޢ j̵RrKJQaCgSߟ)w8HVq @) {IKpD+wu+6^|ٿH-ZQpО;kjjpܹ 2enL6I 욞wTXPM9mrG,:~fbkjH $@t8]jlltJ^>1b7:Z<5iq `0N$\*X<`wl/w~2^Na$_JLOtצ10Ahj-@uu5Ol' vr~<2CA S`-bg^4v|)6hkn^;a444"u4{P-Bߗ$Qznťo)E@ #IgҼ>NT[KRJ OȘ8&#v~7F?0d,n0j$JWl>s&WƄ?mx{b()8y䧬ޝz/l2HYi^ՀpӉ{\I,&V]R d1A C63/vx%b)+++bYE:lslls+e{9HjU ȍU& 7VX@nrCNw\$dRzRyGƿmIENDB`lybniz-3.0.4/Archive/Version 1/images/lybniz.svg000066400000000000000000000116701343532221700214600ustar00rootroot00000000000000 image/svg+xml lybniz-3.0.4/Archive/Version 1/lybniz-i18n.sh000066400000000000000000000020141343532221700205730ustar00rootroot00000000000000#!/bin/bash # Script lybniz-i18n was written by Alexey Loginov for lybniz internationalisation # License: GPLv3+ # https://www.transifex.com/Magic/lybniz/ echo "Starting script lybniz-i18n.sh" A=`which xgettext` if [ "$A" = "" ] then echo "Error: missing xgettext" exit 1 fi echo "Creating POT file" xgettext --language=Python --keyword=_ --keyword=N_ --output=lybniz.pot ../lybniz.py xgettext --language=Desktop --output=lybniz.pot ../lybniz.desktop --from-code=utf-8 -j echo "Done for creating POT file." echo "Merge translations" for a in *.po; do msgmerge -U $a lybniz.pot done rm -f *.po~ echo "Done for merge translations." echo "Compiling translations" rm -rf ../locale for lang in `ls|grep -v \.pot|grep -v lybniz-i18n|cut -d "." --fields=1` do echo " Compiling $lang" mkdir -p ../locale/$lang/LC_MESSAGES msgfmt $lang.po -o $lang.mo mv -f $lang.mo ../locale/$lang/LC_MESSAGES/lybniz.mo echo " Done for $lang" done echo "Done for compiling translations." echo "Script lybniz-i18n.sh was finished." lybniz-3.0.4/Archive/Version 1/lybniz.desktop000066400000000000000000000071671343532221700210730ustar00rootroot00000000000000[Desktop Entry] Name=Lybniz GenericName=Lybniz Graph Plotter GenericName[ru]=Lybniz графопостроитель GenericName[af]=Lybniz grafiekstipper GenericName[ast]=Dibuxu de gráficos Lybniz GenericName[bn]=Lybniz গ্রাফ প্লটার GenericName[bs]=Lybniz crtač grafova GenericName[pt_BR]=Plotador de Gráficos de Lybniz GenericName[bg]=Lybniz плотер на графика GenericName[ca]=Plòter de gràfics Lybniz GenericName[ca@valencia]=Plòter de gràfics Lybniz GenericName[zh_HK]=Lybniz 製圖器 GenericName[zh_CN]=Lybniz 绘图机 GenericName[crh]=Lybniz Grafik Çizici GenericName[cs]=Tvůrce grafů Lybniz GenericName[da]=Lybniz - graftegner GenericName[fi]=Lybniz-graafipiirtäjä GenericName[fr]=Traceur de graphes Lybniz GenericName[gl]=Ferramenta de trazado de gráficos Lybniz GenericName[de]=Lybniz – Funktionsgraphzeichner GenericName[el]=Σχεδιαστής γραφημάτων Lybniz GenericName[hu]=Lybniz grafikonrajzoló GenericName[it]=Plotter per grafici Lybniz GenericName[ja]=Lybniz グラフプロッター GenericName[ky]=Lybniz граф түзүүчү GenericName[ms]=Pemplot graf Lybniz GenericName[nb]=Lybniz grafplotter GenericName[oc]=Traçador de grafes Lybniz GenericName[pl]=Ploter wykresów Lybniz GenericName[pt]=Lybniz, Plotador de Gráficos GenericName[ro]=Trasor de grafice Lybniz GenericName[sl]=Lybniz, izrisovalnik grafov GenericName[es]=Dibujo de gráficos Lybniz GenericName[sv]=Lybniz grafritare GenericName[tr]=Lybniz Grafik Çizici GenericName[uk]=Lybniz Графобудівник GenericName[vi]=Trình vẽ đồ thị Lybniz Comment=Plot graphs and functions Comment[ru]=Построение графиков математических функций Comment[af]=Stip grafieke en funksies Comment[sq]=Rregullo grafikët dhe funksionet Comment[ast]=Dibuxa gráfiques y funciones Comment[be]=Маляваць графікі й функцыі Comment[bn]=গ্রাফ এবং ফাংশন অঙ্কিত করুন Comment[bs]=Crtajte grafove i funkcije Comment[pt_BR]=Plote gráficos e funções Comment[bg]=Чертане на графики и функции Comment[ca]=Dibuixeu gràfics i funcions Comment[ca@valencia]=Dibuixeu gràfics i funcions Comment[zh_HK]=繪製圖表及函式 Comment[zh_CN]=绘制图表和函数 Comment[zh_TW]=繪製圖表及函式 Comment[crh]=Grafikler ve fonksiyonlar çizdir Comment[cs]=Vykreslování grafů a funkcí Comment[da]=Tegn grafer Comment[nl]=Grafiek- en functieplotter Comment[fi]=Piirrä graafeja ja funktioita Comment[fr]=Tracer des courbes de fonctions et des graphes Comment[gl]=Trace gráficos e funcións Comment[de]=Darstellen von Graphen und Funktionen Comment[el]=Σχεδιάστε γραφήματα και συναρτήσεις Comment[hu]=Grafikonok és függvények rajzolása Comment[it]=Disegna grafici e funzioni Comment[ja]=グラフと関数をプロットします Comment[ky]=Графтарды жана функцияларды түзүү Comment[ms]=Plot graf dan fungsi Comment[nb]=Plott grafer og funksjoner Comment[oc]=Traçar de corbas de foncions e de grafes Comment[pl]=Kreśli wykresy funkcji Comment[pt]=Plotar gráficos e funções Comment[ro]=Trasați curbe de funcții și grafice Comment[sl]=Izrisujte grafe in funkcije Comment[es]=Dibuja gráficas y funciones Comment[sv]=Rita grafer och funktioner Comment[tg]=Функсияҳо ва диаграммаҳои Plot Comment[tr]=Grafikler ve fonksiyonlar çizdir Comment[uk]=Побудова графіків та функції Comment[vi]=Vẽ đồ thị và hàm số Exec=lybniz Terminal=false StartupNotify=true Type=Application Categories=Education; Icon=lybniz lybniz-3.0.4/Archive/Version 1/lybniz.py000066400000000000000000000772201343532221700200470ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- """ Simple Function graph Plotter © Thomas Führinger, Sam Tygier 2005-2015 http://github.com/thomasfuhringer/lybniz Version 1.3.3 Requires PyGtk 2.6 Released under the terms of the revised BSD license Modified: 2015-12-21 """ from __future__ import division import sys, os, gtk, pango, ConfigParser #import math from math import * app_version = "1.3.3" try: import gnome props = {gnome.PARAM_APP_DATADIR : '/usr/share'} prog = gnome.program_init("lybniz", str(app_version), properties=props) except: print "Gnome not found" import gettext gettext.install('lybniz') # profiling enable_profiling = False if enable_profiling: from time import time app_win = None actions = gtk.ActionGroup("General") graph = None connect_points = True configFile = os.path.expanduser('~/.lybniz.cfg') config = ConfigParser.ConfigParser() x_res = 1 x_max = "5.0" x_min = "-5.0" x_scale = "1.0" y_max = "3.0" y_min = "-3.0" y_scale = "1.0" y1 = "sin(x)" y2 = "" y3 = "" icon_file = "/usr/share/pixmaps/lybniz.png" # some extra maths functions def fac(x): if type(x) != int or x < 0: raise ValueError if x==0: return 1 for n in range(2,x): x = x*n return x def sinc(x): if x == 0: return 1 return sin(x)/x # create a safe namespace for the eval()s in the graph drawing code def sub_dict(somedict, somekeys, default=None): return dict([ (k, somedict.get(k, default)) for k in somekeys ]) # a list of the functions from math that we want. safe_list = ['math','acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh','fac','sinc'] safe_dict = sub_dict(locals(), safe_list) #add any needed builtins back in. safe_dict['abs'] = abs safe_dict['min'] = min safe_dict['max'] = max def marks(min_val,max_val,minor=1): "yield positions of scale marks between min and max. For making minor marks, set minor to the number of minors you want between majors" try: min_val = float(min_val) max_val = float(max_val) except: print "needs 2 numbers" raise ValueError if(min_val >= max_val): print "min bigger or equal to max" raise ValueError a = 0.2 # tweakable control for when to switch scales # big a value results in more marks a = a + log10(minor) width = max_val - min_val log10_range = log10(width) interval = 10 ** int(floor(log10_range - a)) lower_mark = min_val - fmod(min_val,interval) if lower_mark < min_val: lower_mark += interval a_mark = lower_mark while a_mark <= max_val: if abs(a_mark) < interval / 2: a_mark = 0 yield a_mark a_mark += interval class GraphClass: def __init__(self): # Create backing pixmap of the appropriate size def configure_event(widget, event): x, y, w, h = widget.get_allocation() self.pix_map = gtk.gdk.Pixmap(widget.window, w, h) # make colors self.gc = dict() for name, color in (('black',(0,0,0)),('red',(32000,0,0)),('blue',(0,0,32000)),('green',(0,32000,0))): self.gc[name] =self.pix_map.new_gc() self.gc[name].set_rgb_fg_color(gtk.gdk.Color(red=color[0],green=color[1],blue=color[2])) self.layout = pango.Layout(widget.create_pango_context()) self.canvas_width = w self.canvas_height = h self.x_max = eval(x_max,{"__builtins__":{}},safe_dict) self.x_min = eval(x_min,{"__builtins__":{}},safe_dict) self.x_scale = eval(x_scale,{"__builtins__":{}},safe_dict) self.y_max = eval(y_max,{"__builtins__":{}},safe_dict) self.y_min = eval(y_min,{"__builtins__":{}},safe_dict) self.y_scale = eval(y_scale,{"__builtins__":{}},safe_dict) self.previousMouseX = 0 self.previousMouseY = 0 self.plot() return True # Redraw the screen from the backing pixmap def expose_event(widget, event): x, y, w, h = event.area widget.window.draw_drawable(widget.get_style().fg_gc[gtk.STATE_NORMAL], self.pix_map, x, y, x, y, w, h) return False # Start marking selection def button_press_event(widget, event): global x_sel, y_sel if event.button == 1: self.selection[0][0], self.selection[0][1] = int(event.x), int(event.y) self.selection[1][0], self.selection[1][1] = None, None # End of selection def button_release_event(widget, event): if event.button == 1 and event.x != self.selection[0][0] and event.y != self.selection[0][1]: xmi, ymi = min(self.graph_x(self.selection[0][0]), self.graph_x(event.x)), min(self.graph_y(self.selection[0][1]), self.graph_y(event.y)) xma, yma = max(self.graph_x(self.selection[0][0]), self.graph_x(event.x)), max(self.graph_y(self.selection[0][1]), self.graph_y(event.y)) self.x_min, self.y_min, self.x_max, self.y_max = xmi, ymi, xma, yma parameter_entries_repopulate() graph.plot() self.selection[1][0] = None self.selection[0][0] = None # Draw rectangle during mouse movement def motion_notify_event(widget, event): if event.is_hint: x, y, state = event.window.get_pointer() else: x = event.x y = event.y state = event.state if state & gtk.gdk.BUTTON1_MASK and self.selection[0][0] is not None: gc = self.drawing_area.get_style().black_gc gc.set_function(gtk.gdk.INVERT) if self.selection[1][0] is not None: x0 = min(self.selection[1][0], self.selection[0][0]) y0 = min(self.selection[1][1], self.selection[0][1]) w = abs(self.selection[1][0] - self.selection[0][0]) h = abs(self.selection[1][1] - self.selection[0][1]) self.pix_map.draw_rectangle(gc, False, x0, y0, w, h) x0 = min(self.selection[0][0], int(x)) y0 = min(self.selection[0][1], int(y)) w = abs(int(x) - self.selection[0][0]) h = abs(int(y) - self.selection[0][1]) self.pix_map.draw_rectangle(gc, False, x0, y0, w, h) self.selection[1][0], self.selection[1][1] = int(x), int(y) self.draw_drawable() elif state & gtk.gdk.BUTTON2_MASK: dx = event.x - self.previousMouseX dy = event.y - self.previousMouseY dx = dx / self.canvas_width * (self.x_max - self.x_min) dy = dy / self.canvas_height * (self.y_max - self.y_min) self.x_min -= dx; self.x_max -= dx self.y_min += dy; self.y_max += dy parameter_entries_repopulate() graph.plot() self.previousMouseX = event.x self.previousMouseY = event.y def scroll_event(widget, event): if event.direction == gtk.gdk.SCROLL_UP: zoom_in(None) elif event.direction == gtk.gdk.SCROLL_DOWN: zoom_out(None) self.prev_y = [None, None, None] # Marked area point[0, 1][x, y] self.selection = [[None, None], [None, None]] self.drawing_area = gtk.DrawingArea() self.drawing_area.connect("expose_event", expose_event) self.drawing_area.connect("configure_event", configure_event) self.drawing_area.connect("button_press_event", button_press_event) self.drawing_area.connect("button_release_event", button_release_event) self.drawing_area.connect("motion_notify_event", motion_notify_event) self.drawing_area.connect("scroll_event", scroll_event) self.drawing_area.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK |gtk.gdk.POINTER_MOTION_HINT_MASK) self.scale_style = "dec" def draw_drawable(self): x, y, w, h = self.drawing_area.get_allocation() self.drawing_area.window.draw_drawable(self.drawing_area.get_style().fg_gc[gtk.STATE_NORMAL], self.pix_map, 0, 0, 0, 0, w, h) def plot(self): self.pix_map.draw_rectangle(self.drawing_area.get_style().white_gc, True, 0, 0, self.canvas_width, self.canvas_height) if (self.scale_style == "cust"): #draw cross self.pix_map.draw_lines(self.gc['black'], [(int(round(self.canvas_x(0))),0),(int(round(self.canvas_x(0))),self.canvas_height)]) self.pix_map.draw_lines(self.gc['black'], [(0,int(round(self.canvas_y(0)))),(self.canvas_width,int(round(self.canvas_y(0))))]) # old style axis marks iv = self.x_scale * self.canvas_width / (self.x_max - self.x_min) # pixel interval between marks os = self.canvas_x(0) % iv # pixel offset of first mark # loop over each mark. for i in xrange(int(self.canvas_width / iv + 1)): #multiples of iv, cause adding of any error in iv, so keep iv as float # use round(), to get to closest pixel, int() to prevent warning self.pix_map.draw_lines(self.gc['black'], [(int(round(os + i * iv)), int(round(self.canvas_y(0) - 5))), (int(round(os + i * iv)), int(round(self.canvas_y(0) + 5)))]) # and the y-axis iv = self.y_scale * self.canvas_height / (self.y_max - self.y_min) os = self.canvas_y(0) % iv for i in xrange(int(self.canvas_height / iv + 1)): self.pix_map.draw_lines(self.gc['black'], [(int(round(self.canvas_x(0) - 5)), int(round(i * iv + os))), (int(round(self.canvas_x(0) + 5)), int(round(i * iv + os)))]) else: #new style factor = 1 if (self.scale_style == "rad"): factor = pi # where to put the numbers numbers_x_pos = -10 numbers_y_pos = 10 # where to center the axis center_x_pix = int(round(self.canvas_x(0))) center_y_pix = int(round(self.canvas_y(0))) if (center_x_pix < 5): center_x_pix = 5 if (center_x_pix < 20):numbers_x_pos = 10 if (center_y_pix < 5): center_y_pix = 5 if (center_x_pix > self.canvas_width - 5): center_x_pix = self.canvas_width - 5 if (center_y_pix > self.canvas_height -5): center_y_pix = self.canvas_height - 5; if (center_y_pix > self.canvas_height -20): numbers_y_pos = - 10 # draw cross self.pix_map.draw_lines(self.gc['black'], [(center_x_pix,0),(center_x_pix,self.canvas_height)]) self.pix_map.draw_lines(self.gc['black'], [(0,center_y_pix),(self.canvas_width,center_y_pix)]) for i in marks(self.x_min / factor, self.x_max / factor): label = '%g' % i if (self.scale_style == "rad"): label += '\xCF\x80' i = i * factor self.pix_map.draw_lines(self.gc['black'], [(int(round(self.canvas_x(i))), center_y_pix - 5), (int(round(self.canvas_x(i))), center_y_pix + 5)]) self.layout.set_text(label) extents = self.layout.get_pixel_extents()[1] if (numbers_y_pos < 0): adjust = extents[3] else: adjust = 0 self.pix_map.draw_layout(self.gc['black'],int(round(self.canvas_x(i))), center_y_pix + numbers_y_pos - adjust,self.layout) for i in marks(self.y_min,self.y_max): label = '%g' % i self.pix_map.draw_lines(self.gc['black'], [(center_x_pix - 5, int(round(self.canvas_y(i)))), (center_x_pix + 5, int(round(self.canvas_y(i))))]) self.layout.set_text(label) extents = self.layout.get_pixel_extents()[1] if (numbers_x_pos < 0): adjust = extents[2] else: adjust = 0 self.pix_map.draw_layout(self.gc['black'],center_x_pix +numbers_x_pos - adjust,int(round(self.canvas_y(i))),self.layout) # minor marks for i in marks(self.x_min / factor, self.x_max / factor, minor=10): i = i * factor self.pix_map.draw_lines(self.gc['black'], [(int(round(self.canvas_x(i))), center_y_pix - 2), (int(round(self.canvas_x(i))), center_y_pix +2)]) for i in marks(self.y_min, self.y_max, minor=10): label = '%g' % i self.pix_map.draw_lines(self.gc['black'], [(center_x_pix - 2, int(round(self.canvas_y(i)))), (center_x_pix +2, int(round(self.canvas_y(i))))]) plots = [] # precompile the functions invalid_input = False if y1: try: compiled_y1 = compile(y1.replace("^","**"),"",'eval') plots.append((compiled_y1,0,self.gc['blue'])) except: set_statusbar("Invalid function") invalid_input = True compiled_y1 = None else: compiled_y1 = None if y2: try: compiled_y2 = compile(y2.replace("^","**"),"",'eval') plots.append((compiled_y2,1,self.gc['red'])) except: set_statusbar("Invalid function") invalid_input = True compiled_y2 = None else: compiled_y2 = None if y3: try: compiled_y3 = compile(y3.replace("^","**"),"",'eval') plots.append((compiled_y3,2,self.gc['green'])) except: set_statusbar("Invalid function") invalid_input = True compiled_y3 = None else: compiled_y3 = None self.prev_y = [None, None, None] if enable_profiling: start_graph = time() if len(plots) != 0: for i in xrange(0,self.canvas_width,x_res): x = self.graph_x(i + 1) for e in plots: safe_dict['x']=x try: y = eval(e[0],{"__builtins__":{}},safe_dict) y_c = int(round(self.canvas_y(y))) if y_c < 0 or y_c > self.canvas_height: break if connect_points and self.prev_y[e[1]] is not None: self.pix_map.draw_lines(e[2], [(i, self.prev_y[e[1]]), (i + x_res, y_c)]) else: self.pix_map.draw_points(e[2], [(i + x_res, y_c)]) self.prev_y[e[1]] = y_c except: #print "Error at %d: %s" % (x, sys.exc_value) set_statusbar("Invalid function") invalid_input = True self.prev_y[e[1]] = None if enable_profiling: print "Time to draw graph:", (time() - start_graph) * 1000, "ms" if not invalid_input: set_statusbar("") self.draw_drawable() def canvas_x(self, x): "Calculate position on canvas to point on graph" return (x - self.x_min) * self.canvas_width / (self.x_max - self.x_min) def canvas_y(self, y): return (self.y_max - y) * self.canvas_height / (self.y_max - self.y_min) def canvas_point(self, x, y): return (self.canvas_x(x), self.canvas_y(y)) def graph_x(self, x): "Calculate position on graph from point on canvas" return x * (self.x_max - self.x_min) / self.canvas_width + self.x_min def graph_y(self, y): return self.y_max - (y * (self.y_max - self.y_min) / self.canvas_height) def menu_toolbar_create(): app_win.menu_main = gtk.MenuBar() menu_file = gtk.Menu() menu_item_file = gtk.MenuItem(_("_File")) menu_item_file.set_submenu(menu_file) actions.save = gtk.Action("Save", _("_Save"), _("Save graph as bitmap"), gtk.STOCK_SAVE) actions.save.connect ("activate", save) actions.add_action(actions.save) menu_item_save = actions.save.create_menu_item() menu_item_save.add_accelerator("activate", app_win.accel_group, ord("S"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu_file.append(menu_item_save) actions.quit = gtk.Action("Quit", _("_Quit"), _("Quit Application"), gtk.STOCK_QUIT) actions.quit.connect ("activate", quit_dlg) actions.add_action(actions.quit) menuItem_quit = actions.quit.create_menu_item() menuItem_quit.add_accelerator("activate", app_win.accel_group, ord("Q"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu_file.append(menuItem_quit) menu_graph = gtk.Menu() menu_item_graph = gtk.MenuItem(_("_Graph")) menu_item_graph.set_submenu(menu_graph) actions.plot = gtk.Action("Plot", _("P_lot"), _("Plot Functions"), gtk.STOCK_REFRESH) actions.plot.connect ("activate", plot) actions.add_action(actions.plot) menu_item_plot = actions.plot.create_menu_item() menu_item_plot.add_accelerator("activate", app_win.accel_group, ord("l"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu_graph.append(menu_item_plot) actions.evaluate = gtk.Action("Evaluate", _("_Evaluate"), _("Evaluate Functions"), gtk.STOCK_EXECUTE) actions.evaluate.connect ("activate", evaluate) actions.add_action(actions.evaluate) menu_item_evaluate = actions.evaluate.create_menu_item() menu_item_evaluate.add_accelerator("activate", app_win.accel_group, ord("e"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu_graph.append(menu_item_evaluate) actions.zoom_in = gtk.Action("zoom_in", _("Zoom _In"), _("Zoom In"), gtk.STOCK_ZOOM_IN) actions.zoom_in.connect ("activate", zoom_in) actions.add_action(actions.zoom_in) menu_item_zoomin = actions.zoom_in.create_menu_item() menu_item_zoomin.add_accelerator("activate", app_win.accel_group, ord("+"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu_graph.append(menu_item_zoomin) actions.zoom_out = gtk.Action("zoom_out", _("Zoom _Out"), _("Zoom Out"), gtk.STOCK_ZOOM_OUT) actions.zoom_out.connect ("activate", zoom_out) actions.add_action(actions.zoom_out) menu_item_zoomout = actions.zoom_out.create_menu_item() menu_item_zoomout.add_accelerator("activate", app_win.accel_group, ord("-"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu_graph.append(menu_item_zoomout) actions.zoom_reset = gtk.Action("zoom_reset", _("Zoom _Reset"), _("Zoom Reset"), gtk.STOCK_ZOOM_100) actions.zoom_reset.connect ("activate", zoom_reset) actions.add_action(actions.zoom_reset) menu_item_zoomreset = actions.zoom_reset.create_menu_item() menu_item_zoomreset.add_accelerator("activate", app_win.accel_group, ord("r"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) menu_graph.append(menu_item_zoomreset) menu_item_toggle_connect = gtk.CheckMenuItem(_("_Connect Points")) menu_item_toggle_connect.set_active(True) menu_item_toggle_connect.connect ("toggled", toggle_connect) menu_graph.append(menu_item_toggle_connect) menu_scale_style = gtk.Menu() menu_item_scale_style = gtk.MenuItem(_("Scale Style")) menu_item_scale_style.set_submenu(menu_scale_style) menu_graph.append(menu_item_scale_style) actions.dec = gtk.Action("Dec", _("Decimal"), _("Set style to decimal"),None) actions.dec.connect ("activate", scale_dec) actions.add_action(actions.dec) menu_item_dec = actions.dec.create_menu_item() menu_scale_style.append(menu_item_dec) actions.rad = gtk.Action("Rad", _("Radians"), _("Set style to radians"),None) actions.rad.connect ("activate", scale_rad) actions.add_action(actions.rad) menu_item_rad = actions.rad.create_menu_item() menu_scale_style.append(menu_item_rad) actions.cust = gtk.Action("Cust", _("Custom"), _("Set style to custom"),None) actions.cust.connect ("activate", scale_cust) actions.add_action(actions.cust) menu_item_cust = actions.cust.create_menu_item() menu_scale_style.append(menu_item_cust) menu_help = gtk.Menu() menu_item_help = gtk.MenuItem(_("_Help")) menu_item_help.set_submenu(menu_help) actions.Help = gtk.Action("Help", _("_Contents"), _("Help Contents"), gtk.STOCK_HELP) actions.Help.connect ("activate", show_yelp) actions.add_action(actions.Help) menu_item_contents = actions.Help.create_menu_item() menu_item_contents.add_accelerator("activate", app_win.accel_group, gtk.gdk.keyval_from_name("F1"), 0, gtk.ACCEL_VISIBLE) menu_help.append(menu_item_contents) actions.about = gtk.Action("About", _("_About"), _("About Box"), gtk.STOCK_ABOUT) actions.about.connect ("activate", show_about_dialog) actions.add_action(actions.about) menu_item_about = actions.about.create_menu_item() menu_help.append(menu_item_about) app_win.menu_main.append(menu_item_file) app_win.menu_main.append(menu_item_graph) app_win.menu_main.append(menu_item_help) app_win.tool_bar = gtk.Toolbar() app_win.tool_bar.insert(actions.plot.create_tool_item(), -1) app_win.tool_bar.insert(actions.evaluate.create_tool_item(), -1) app_win.tool_bar.insert(gtk.SeparatorToolItem(), -1) app_win.tool_bar.insert(actions.zoom_in.create_tool_item(), -1) app_win.tool_bar.insert(actions.zoom_out.create_tool_item(), -1) app_win.tool_bar.insert(actions.zoom_reset.create_tool_item(), -1) app_win.tool_bar.insert(gtk.SeparatorToolItem(), -1) app_win.tool_bar.insert(actions.quit.create_tool_item(), -1) def plot(widget, event=None): global x_max, x_min, x_scale, y_max, y_min, y_scale, y1, y2, y3 x_max = app_win.x_max_entry.get_text() x_min = app_win.x_min_entry.get_text() x_scale = app_win.x_scale_entry.get_text() y_max = app_win.y_max_entry.get_text() y_min = app_win.y_min_entry.get_text() y_scale = app_win.y_scale_entry.get_text() graph.x_max = eval(x_max,{"__builtins__":{}},safe_dict) graph.x_min = eval(x_min,{"__builtins__":{}},safe_dict) graph.x_scale = eval(x_scale,{"__builtins__":{}},safe_dict) graph.y_max = eval(y_max,{"__builtins__":{}},safe_dict) graph.y_min = eval(y_min,{"__builtins__":{}},safe_dict) graph.y_scale = eval(y_scale,{"__builtins__":{}},safe_dict) y1 = app_win.y1_entry.get_text() y2 = app_win.y2_entry.get_text() y3 = app_win.y3_entry.get_text() graph.plot() def evaluate(widget, event=None): "Evaluate a given x for the three functions" def entry_changed(self): for e in ((y1, dlg_win.y1_entry), (y2, dlg_win.y2_entry), (y3, dlg_win.y3_entry)): try: x = float(dlg_win.x_entry.get_text()) safe_dict['x']=x e[1].set_text(str(eval(e[0].replace("^","**"),{"__builtins__":{}},safe_dict))) except: if len(e[0]) > 0: e[1].set_text("Error: %s" % sys.exc_value) else: e[1].set_text("") def close(self): dlg_win.destroy() dlg_win = gtk.Window(gtk.WINDOW_TOPLEVEL) dlg_win.set_title(_("Evaluate")) dlg_win.connect("destroy", close) dlg_win.x_entry = gtk.Entry() dlg_win.x_entry.set_size_request(200, 24) dlg_win.x_entry.connect("changed", entry_changed) dlg_win.y1_entry = gtk.Entry() dlg_win.y1_entry.set_size_request(200, 24) dlg_win.y1_entry.set_sensitive(False) dlg_win.y2_entry = gtk.Entry() dlg_win.y2_entry.set_size_request(200, 24) dlg_win.y2_entry.set_sensitive(False) dlg_win.y3_entry = gtk.Entry() dlg_win.y3_entry.set_size_request(200, 24) dlg_win.y3_entry.set_sensitive(False) table = gtk.Table(2, 5) label = gtk.Label("x = ") label.set_alignment(0, .5) table.attach(label, 0, 1, 0, 1, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(dlg_win.x_entry, 1, 2, 0, 1) label = gtk.Label("y1 = ") label.set_alignment(0, .5) label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("blue")) table.attach(label, 0, 1, 1, 2, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(dlg_win.y1_entry, 1, 2, 1, 2) label = gtk.Label("y2 = ") label.set_alignment(0, .5) label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("red")) table.attach(label, 0, 1, 2, 3, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(dlg_win.y2_entry, 1, 2, 2, 3) label = gtk.Label("y3 = ") label.set_alignment(0, .5) label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("DarkGreen")) table.attach(label, 0, 1, 3, 4, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(dlg_win.y3_entry, 1, 2, 3, 4) table.set_border_width(24) dlg_win.add(table) dlg_win.show_all() def zoom_in(widget, event=None): "Narrow the plotted section by half" center_x = (graph.x_min + graph.x_max) / 2 center_y = (graph.y_min + graph.y_max) / 2 range_x = (graph.x_max - graph.x_min) range_y = (graph.y_max - graph.y_min) graph.x_min = center_x - (range_x / 4) graph.x_max = center_x + (range_x / 4) graph.y_min = center_y - (range_y / 4) graph.y_max = center_y +(range_y / 4) parameter_entries_repopulate() graph.plot() def zoom_out(widget, event=None): "Double the plotted section" center_x = (graph.x_min + graph.x_max) / 2 center_y = (graph.y_min + graph.y_max) / 2 range_x = (graph.x_max - graph.x_min) range_y = (graph.y_max - graph.y_min) graph.x_min = center_x - (range_x) graph.x_max = center_x + (range_x) graph.y_min = center_y - (range_y) graph.y_max = center_y +(range_y) parameter_entries_repopulate() graph.plot() def zoom_reset(widget, event=None): "Set the range back to the user's input" graph.x_min = eval(x_min,{"__builtins__":{}},safe_dict) graph.y_min = eval(y_min,{"__builtins__":{}},safe_dict) graph.x_max = eval(x_max,{"__builtins__":{}},safe_dict) graph.y_max = eval(y_max,{"__builtins__":{}},safe_dict) parameter_entries_populate() graph.plot() def scale_dec(widget, event=None): graph.scale_style = "dec" app_win.scale_box.hide() plot(None) def scale_rad(widget, event=None): graph.scale_style = "rad" app_win.scale_box.hide() plot(None) def scale_cust(widget, event=None): graph.scale_style = "cust" app_win.scale_box.show() plot(None) def toggle_connect(widget, event=None): "Toggle between a graph that connects points with lines and one that does not" global connect_points connect_points = not connect_points graph.plot() def save(widget, event=None): "Save graph as .png" file_dialog = gtk.FileChooserDialog(_("Save as..."), app_win, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) file_dialog.set_default_response(gtk.RESPONSE_OK) filter = gtk.FileFilter() filter.add_mime_type("image/png") filter.add_pattern("*.png") file_dialog.add_filter(filter) file_dialog.set_filename("FunctionGraph.png") response = file_dialog.run() if response == gtk.RESPONSE_OK: x, y, w, h = graph.drawing_area.get_allocation() pix_buffer = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, w, h) pix_buffer.get_from_drawable(graph.pix_map, graph.pix_map.get_colormap(), 0, 0, 0, 0, w, h) pix_buffer.save(file_dialog.get_filename(), "png") file_dialog.destroy() def quit_dlg(widget, event=None): width, height = app_win.get_size() config.set("MainWindow", "width", width) config.set("MainWindow", "height", height) x, y = app_win.get_position() config.set("MainWindow", "x", x) config.set("MainWindow", "y", y) with open(configFile, "wb") as file: config.write(file) gtk.main_quit() def show_yelp(widget): #import os #os.system("yelp /usr/share/gnome/help/lybniz/C/lybniz-manual.xml") try: gnome.help_display("lybniz") except: print _("Can't Show help") def show_about_dialog(widget): about_dialog = gtk.AboutDialog() about_dialog.set_name("Lybniz") about_dialog.set_version(str(app_version)) about_dialog.set_authors([u"Thomas Führinger","Sam Tygier"]) about_dialog.set_comments(_("Function Graph Plotter")) about_dialog.set_license("Revised BSD") about_dialog.set_website("github.com/thomasfuhringer/lybniz") try: lybniz_icon = gtk.gdk.pixbuf_new_from_file(icon_file) about_dialog.set_logo(lybniz_icon) except: print "icon not found at", icon_file about_dialog.connect ("response", lambda d, r: d.destroy()) about_dialog.run() def parameter_entries_create(): # create text entries for parameters table = gtk.Table(6, 3) app_win.y1_entry = gtk.Entry() app_win.y1_entry.set_size_request(300, 24) app_win.y2_entry = gtk.Entry() app_win.y3_entry = gtk.Entry() app_win.x_min_entry = gtk.Entry() app_win.x_min_entry.set_size_request(90, 24) app_win.x_min_entry.set_alignment(1) app_win.x_max_entry = gtk.Entry() app_win.x_max_entry.set_size_request(90, 24) app_win.x_max_entry.set_alignment(1) app_win.x_scale_entry = gtk.Entry() app_win.x_scale_entry.set_size_request(90, 24) app_win.x_scale_entry.set_alignment(1) app_win.y_min_entry = gtk.Entry() app_win.y_min_entry.set_size_request(90, 24) app_win.y_min_entry.set_alignment(1) app_win.y_max_entry = gtk.Entry() app_win.y_max_entry.set_size_request(90, 24) app_win.y_max_entry.set_alignment(1) app_win.y_scale_entry = gtk.Entry() app_win.y_scale_entry.set_size_request(90, 24) app_win.y_scale_entry.set_alignment(1) parameter_entries_populate() app_win.y1_entry.connect("key-press-event", key_press_plot) app_win.y2_entry.connect("key-press-event", key_press_plot) app_win.y3_entry.connect("key-press-event", key_press_plot) app_win.x_min_entry.connect("key-press-event", key_press_plot) app_win.y_min_entry.connect("key-press-event", key_press_plot) app_win.x_max_entry.connect("key-press-event", key_press_plot) app_win.y_max_entry.connect("key-press-event", key_press_plot) app_win.x_scale_entry.connect("key-press-event", key_press_plot) app_win.y_scale_entry.connect("key-press-event", key_press_plot) app_win.scale_box = gtk.HBox() label = gtk.Label("y1 = ") label.set_alignment(0, .5) label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("blue")) table.attach(label, 0, 1, 0, 1, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(app_win.y1_entry, 1, 2, 0, 1) label = gtk.Label(_("X min")) label.set_alignment(1, .5) table.attach(label, 2, 3, 0, 1, xpadding=5, ypadding=7, xoptions=gtk.FILL) table.attach(app_win.x_min_entry, 3, 4, 0, 1, xoptions=gtk.FILL) label = gtk.Label(_("Y min")) label.set_alignment(1, .5) table.attach(label, 4, 5, 0, 1, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(app_win.y_min_entry, 5, 6, 0, 1, xpadding=5, xoptions=gtk.FILL) label = gtk.Label("y2 = ") label.set_alignment(0, .5) label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("red")) table.attach(label, 0, 1, 1, 2, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(app_win.y2_entry, 1, 2, 1, 2) label = gtk.Label(_("X max")) label.set_alignment(1, .5) table.attach(label, 2, 3, 1, 2, xpadding=5, ypadding=7, xoptions=gtk.FILL) table.attach(app_win.x_max_entry, 3, 4, 1, 2, xoptions=gtk.FILL) label = gtk.Label(_("Y max")) label.set_alignment(1, .5) table.attach(label, 4, 5, 1, 2, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(app_win.y_max_entry, 5, 6, 1, 2, xpadding=5, xoptions=gtk.FILL) label = gtk.Label("y3 = ") label.set_alignment(0, .5) label.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("DarkGreen")) table.attach(label, 0, 1, 2, 3, xpadding=5, ypadding=5, xoptions=gtk.FILL) table.attach(app_win.y3_entry, 1, 2, 2, 3) label = gtk.Label(_("X scale")) label.set_alignment(0, .5) app_win.scale_box.add(label) #table.attach(label, 2, 3, 2, 3, xpadding=5, ypadding=7, xoptions=gtk.FILL) #table.attach(app_win.x_scale_entry, 3, 4, 2, 3, xoptions=gtk.FILL) app_win.scale_box.add(app_win.x_scale_entry) label = gtk.Label(_("Y scale")) label.set_alignment(0, .5) app_win.scale_box.add(label) #table.attach(label, 4, 5, 2, 3, xpadding=5, ypadding=5, xoptions=gtk.FILL) #table.attach(app_win.y_scale_entry, 5, 6, 2, 3, xpadding=5, xoptions=gtk.FILL) app_win.scale_box.add(app_win.y_scale_entry) table.attach(app_win.scale_box, 2, 6, 2, 3, xpadding=5, xoptions=gtk.FILL) return table def parameter_entries_populate(): # set text in entries for parameters with user's input app_win.y1_entry.set_text(y1) app_win.y2_entry.set_text(y2) app_win.y3_entry.set_text(y3) app_win.x_min_entry.set_text(x_min) app_win.x_max_entry.set_text(x_max) app_win.x_scale_entry.set_text(x_scale) app_win.y_min_entry.set_text(y_min) app_win.y_max_entry.set_text(y_max) app_win.y_scale_entry.set_text(y_scale) def parameter_entries_repopulate(): # set text in entries for parameters app_win.y1_entry.set_text(y1) app_win.y2_entry.set_text(y2) app_win.y3_entry.set_text(y3) app_win.x_min_entry.set_text(str(graph.x_min)) app_win.x_max_entry.set_text(str(graph.x_max)) app_win.x_scale_entry.set_text(str(graph.x_scale)) app_win.y_min_entry.set_text(str(graph.y_min)) app_win.y_max_entry.set_text(str(graph.y_max)) app_win.y_scale_entry.set_text(str(graph.y_scale)) def key_press_plot(widget, event): if event.keyval == 65293: plot(None) return True else: return False def set_statusbar(text): app_win.status_bar.remove_all(0) app_win.status_bar.push(0, text) def main(): global app_win, graph, configFile, config app_win = gtk.Window(gtk.WINDOW_TOPLEVEL) app_win.set_title("Lybniz") app_win.connect("delete-event", quit_dlg) try: app_win.set_icon_from_file(icon_file) except: print "Icon not found at", icon_file #configFile = os.path.expanduser('~/.lybniz.cfg') #config = ConfigParser.ConfigParser() if config.read([configFile, ]) == []: config.add_section("MainWindow") app_win.set_default_size(800, 600) if config.has_option("MainWindow", "width"): app_win.resize(config.getint("MainWindow", "width"), config.getint("MainWindow", "height")) if config.has_option("MainWindow", "x"): app_win.move(config.getint("MainWindow", "x"), config.getint("MainWindow", "y")) else: app_win.set_position(gtk.WIN_POS_CENTER) app_win.accel_group = gtk.AccelGroup() app_win.add_accel_group(app_win.accel_group) app_win.v_box = gtk.VBox(False, 1) app_win.v_box.set_border_width(1) app_win.add(app_win.v_box) app_win.status_bar = gtk.Statusbar() menu_toolbar_create() app_win.v_box.pack_start(app_win.menu_main, False, True, 0) handle_box = gtk.HandleBox() handle_box.add(app_win.tool_bar) app_win.v_box.pack_start(handle_box, False, True, 0) app_win.v_box.pack_start(parameter_entries_create(), False, True, 4) graph = GraphClass() app_win.v_box.pack_start(graph.drawing_area, True, True, 0) app_win.v_box.pack_start(app_win.status_bar, False, True, 0) app_win.show_all() app_win.scale_box.hide() gtk.main() # Start it all if __name__ == '__main__': main() lybniz-3.0.4/Archive/Version 1/po/000077500000000000000000000000001343532221700165745ustar00rootroot00000000000000lybniz-3.0.4/Archive/Version 1/po/lybniz.pot000066400000000000000000000047461343532221700206420ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-12-17 20:35+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../lybniz.py:389 msgid "_File" msgstr "" #: ../lybniz.py:392 msgid "_Save" msgstr "" #: ../lybniz.py:392 msgid "Save graph as bitmap" msgstr "" #: ../lybniz.py:399 msgid "_Quit" msgstr "" #: ../lybniz.py:399 msgid "Quit Application" msgstr "" #: ../lybniz.py:407 msgid "_Graph" msgstr "" #: ../lybniz.py:410 msgid "P_lot" msgstr "" #: ../lybniz.py:410 msgid "Plot Functions" msgstr "" #: ../lybniz.py:417 msgid "_Evaluate" msgstr "" #: ../lybniz.py:417 msgid "Evaluate Functions" msgstr "" #: ../lybniz.py:424 msgid "Zoom _In" msgstr "" #: ../lybniz.py:424 msgid "Zoom In" msgstr "" #: ../lybniz.py:431 msgid "Zoom _Out" msgstr "" #: ../lybniz.py:431 msgid "Zoom Out" msgstr "" #: ../lybniz.py:438 msgid "Zoom _Reset" msgstr "" #: ../lybniz.py:438 msgid "Zoom Reset" msgstr "" #: ../lybniz.py:445 msgid "_Connect Points" msgstr "" #: ../lybniz.py:451 msgid "Scale Style" msgstr "" #: ../lybniz.py:455 msgid "Decimal" msgstr "" #: ../lybniz.py:455 msgid "Set style to decimal" msgstr "" #: ../lybniz.py:461 msgid "Radians" msgstr "" #: ../lybniz.py:461 msgid "Set style to radians" msgstr "" #: ../lybniz.py:467 msgid "Custom" msgstr "" #: ../lybniz.py:467 msgid "Set style to custom" msgstr "" #: ../lybniz.py:474 msgid "_Help" msgstr "" #: ../lybniz.py:477 msgid "_Contents" msgstr "" #: ../lybniz.py:477 msgid "Help Contents" msgstr "" #: ../lybniz.py:484 msgid "_About" msgstr "" #: ../lybniz.py:484 msgid "About Box" msgstr "" #: ../lybniz.py:550 msgid "Evaluate" msgstr "" #: ../lybniz.py:664 msgid "Save as..." msgstr "" #: ../lybniz.py:691 msgid "Can't Show help" msgstr "" #: ../lybniz.py:700 msgid "Function graph Plotter" msgstr "" #: ../lybniz.py:758 msgid "X min" msgstr "" #: ../lybniz.py:762 msgid "Y min" msgstr "" #: ../lybniz.py:771 msgid "X max" msgstr "" #: ../lybniz.py:775 msgid "Y max" msgstr "" #: ../lybniz.py:786 msgid "X scale" msgstr "" #: ../lybniz.py:792 msgid "Y scale" msgstr "" lybniz-3.0.4/Archive/Version 1/setup.py000066400000000000000000000012551343532221700176730ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- from distutils.core import setup data_files = [('share/applications',['lybniz.desktop']),('share/pixmaps',['images/lybniz.png']),('share/gnome/help/lybniz/C',['doc/lybniz.xml']),('share/gnome/help/lybniz/C/figures',['doc/figures/lybniz_colour_graph_small.png'])] setup( name = 'lybniz', version = '1.3.3', description = 'Graph Plotter', author = 'Thomas Führinger, Sam Tygier', author_email = 'ThomasFuhringer@Yahoo.com, samtygier@yahoo.co.uk', contact = 'Sam Tygier', contact_email = 'samtygier@yahoo.co.uk', url = 'github.com/thomasfuhringer/lybniz', scripts = ['lybniz.py'], data_files = data_files, license = 'BSD', ) lybniz-3.0.4/Archive/lybniz orig-single-file.py000066400000000000000000000472761343532221700214260ustar00rootroot00000000000000#!/usr/bin/env python # -*- coding: UTF-8 -*- """ Simple Function Graph Plotter © Thomas Führinger, 2005-02-12 www.fuhringer.com/thomas Code contributions by Sam Tygier - thanks! Version 1.0 Requires PyGtk 2.6 Released under the terms of the revised BSD license Modified: 2005-10-30 """ import gtk, math, sys AppWin = None Actions = gtk.ActionGroup("General") Graph = None ConnectPoints = True xMax = "5.0" xMin = "-5.0" xScale = "1.0" yMax = "3.0" yMin = "-3.0" yScale = "1.0" y1 = "" y2 = "" y3 = "" class GraphClass: def __init__(self): # Create backing pixmap of the appropriate size def ConfigureEvent(Widget, Event): x, y, w, h = Widget.get_allocation() self.PixMap = gtk.gdk.Pixmap(Widget.window, w, h) self.CanvasWidth = w self.CanvasHeight = h self.xMax = eval(xMax) self.xMin = eval(xMin) self.xScale = eval(xScale) self.yMax = eval(yMax) self.yMin = eval(yMin) self.yScale = eval(yScale) self.Plot() return True # Redraw the screen from the backing pixmap def ExposeEvent(Widget, Event): x, y, w, h = Event.area Widget.window.draw_drawable(Widget.get_style().fg_gc[gtk.STATE_NORMAL], self.PixMap, x, y, x, y, w, h) return False # Start marking selection def ButtonPressEvent(Widget, Event): global xSel, ySel if Event.button == 1: self.Selection[0][0], self.Selection[0][1] = int(Event.x), int(Event.y) self.Selection[1][0], self.Selection[1][1] = None, None # End of selection def ButtonReleaseEvent(Widget, Event): if Event.button == 1 and Event.x != self.Selection[0][0] and Event.y != self.Selection[0][1]: xmi, ymi = min(self.GraphX(self.Selection[0][0]), self.GraphX(Event.x)), min(self.GraphY(self.Selection[0][1]), self.GraphY(Event.y)) xma, yma = max(self.GraphX(self.Selection[0][0]), self.GraphX(Event.x)), max(self.GraphY(self.Selection[0][1]), self.GraphY(Event.y)) self.xMin, self.yMin, self.xMax, self.yMax = xmi, ymi, xma, yma ParameterEntriesRepopulate() Graph.Plot() self.Selection[1][0] = None self.Selection[0][0] = None # Draw rectangle during mouse movement def MotionNotifyEvent(Widget, Event): if Event.is_hint: x, y, State = Event.window.get_pointer() else: x = Event.x y = Event.y State = Event.state if State & gtk.gdk.BUTTON1_MASK and self.Selection[0][0] is not None: gc = self.DrawingArea.get_style().black_gc gc.set_function(gtk.gdk.INVERT) if self.Selection[1][0] is not None: x0 = min(self.Selection[1][0], self.Selection[0][0]) y0 = min(self.Selection[1][1], self.Selection[0][1]) w = abs(self.Selection[1][0] - self.Selection[0][0]) h = abs(self.Selection[1][1] - self.Selection[0][1]) self.PixMap.draw_rectangle(gc, False, x0, y0, w, h) x0 = min(self.Selection[0][0], int(x)) y0 = min(self.Selection[0][1], int(y)) w = abs(int(x) - self.Selection[0][0]) h = abs(int(y) - self.Selection[0][1]) self.PixMap.draw_rectangle(gc, False, x0, y0, w, h) self.Selection[1][0], self.Selection[1][1] = int(x), int(y) self.DrawDrawable() self.PrevY = [None, None, None] # Marked area point[0, 1][x, y] self.Selection = [[None, None], [None, None]] self.DrawingArea = gtk.DrawingArea() self.DrawingArea.connect("expose_event", ExposeEvent) self.DrawingArea.connect("configure_event", ConfigureEvent) self.DrawingArea.connect("button_press_event", ButtonPressEvent) self.DrawingArea.connect("button_release_event", ButtonReleaseEvent) self.DrawingArea.connect("motion_notify_event", MotionNotifyEvent) self.DrawingArea.set_events(gtk.gdk.EXPOSURE_MASK | gtk.gdk.LEAVE_NOTIFY_MASK | gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK |gtk.gdk.POINTER_MOTION_HINT_MASK) def DrawDrawable(self): x, y, w, h = self.DrawingArea.get_allocation() self.DrawingArea.window.draw_drawable(self.DrawingArea.get_style().fg_gc[gtk.STATE_NORMAL], self.PixMap, 0, 0, 0, 0, w, h) def Plot(self): self.PixMap.draw_rectangle(self.DrawingArea.get_style().white_gc, True, 0, 0, self.CanvasWidth, self.CanvasHeight) # draw cross self.PixMap.draw_lines(self.DrawingArea.get_style().black_gc, [self.CanvasPoint(0, self.yMin), self.CanvasPoint(0, self.yMax)]) self.PixMap.draw_lines(self.DrawingArea.get_style().black_gc, [self.CanvasPoint(self.xMin, 0), self.CanvasPoint(self.xMax, 0)]) # draw scaling x iv = int(self.xScale * self.CanvasWidth/(self.xMax - self.xMin)) os = self.CanvasX(0) % iv for i in xrange(self.CanvasWidth / iv + 1): self.PixMap.draw_lines(self.DrawingArea.get_style().black_gc, [(os + i * iv, self.CanvasY(0) - 5), (os + i * iv, self.CanvasY(0) + 5)]) # draw scaling y iv = int(self.yScale * self.CanvasHeight/(self.yMax - self.yMin)) os = self.CanvasY(0) % iv for i in xrange(self.CanvasHeight / iv + 1): self.PixMap.draw_lines(self.DrawingArea.get_style().black_gc, [(self.CanvasX(0) - 5, i * iv + os), (self.CanvasX(0) + 5, i * iv + os)]) # plot # (coloring of lines does not work yet) GC1 = self.DrawingArea.get_style().fg_gc[gtk.STATE_NORMAL] GC1.foreground = gtk.gdk.color_parse("blue") GC2 = self.DrawingArea.get_style().fg_gc[gtk.STATE_NORMAL] GC2.foreground = gtk.gdk.color_parse("red") GC3 = self.DrawingArea.get_style().fg_gc[gtk.STATE_NORMAL] GC3.foreground = gtk.gdk.color_parse("DarkGreen") self.PrevY = [None, None, None] for i in xrange(self.CanvasWidth): x = self.GraphX(i + 1) for e in ((y1, 0, GC1), (y2, 1, GC2), (y3, 2, GC3)): try: y = eval(e[0]) yC = self.CanvasY(y) if yC < 0 or yC > self.CanvasHeight: raise ValueError if ConnectPoints and self.PrevY[e[1]] is not None: self.PixMap.draw_lines(e[2], [(i, self.PrevY[e[1]]), (i + 1, yC)]) else: self.PixMap.draw_points(e[2], [(i + 1, yC)]) self.PrevY[e[1]] = yC except: #print "Error at %d: %s" % (x, sys.exc_value) self.PrevY[e[1]] = None self.DrawDrawable() def CanvasX(self, x): "Calculate position on canvas to point on graph" return int((x - self.xMin) * self.CanvasWidth/(self.xMax - self.xMin)) def CanvasY(self, y): return int((self.yMax - y) * self.CanvasHeight/(self.yMax - self.yMin)) def CanvasPoint(self, x, y): return (self.CanvasX(x), self.CanvasY(y)) def GraphX(self, x): "Calculate position on graph from point on canvas" return x * (self.xMax - self.xMin) / self.CanvasWidth + self.xMin def GraphY(self, y): return self.yMax - (y * (self.yMax - self.yMin) / self.CanvasHeight) def MenuToolbarCreate(): AppWin.MenuMain = gtk.MenuBar() MenuFile = gtk.Menu() MenuItemFile = gtk.MenuItem("_File") MenuItemFile.set_submenu(MenuFile) Actions.Save = gtk.Action("Save", "_Save", "Save graph as bitmap", gtk.STOCK_SAVE) Actions.Save.connect ("activate", Save) Actions.add_action(Actions.Save) MenuItemSave = Actions.Save.create_menu_item() MenuItemSave.add_accelerator("activate", AppWin.AccelGroup, ord("S"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) MenuFile.append(MenuItemSave) Actions.Quit = gtk.Action("Quit", "_Quit", "Quit Application", gtk.STOCK_QUIT) Actions.Quit.connect ("activate", QuitDlg) Actions.add_action(Actions.Quit) MenuItemQuit = Actions.Quit.create_menu_item() MenuItemQuit.add_accelerator("activate", AppWin.AccelGroup, ord("Q"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) MenuFile.append(MenuItemQuit) MenuGraph = gtk.Menu() MenuItemGraph = gtk.MenuItem("_Graph") MenuItemGraph.set_submenu(MenuGraph) Actions.Plot = gtk.Action("Plot", "P_lot", "Plot Functions", gtk.STOCK_REFRESH) Actions.Plot.connect ("activate", Plot) Actions.add_action(Actions.Plot) MenuItemPlot = Actions.Plot.create_menu_item() MenuItemPlot.add_accelerator("activate", AppWin.AccelGroup, ord("l"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) MenuGraph.append(MenuItemPlot) Actions.Evaluate = gtk.Action("Evaluate", "_Evaluate", "Evaluate Functions", gtk.STOCK_EXECUTE) Actions.Evaluate.connect ("activate", Evaluate) Actions.add_action(Actions.Evaluate) MenuItemEvaluate = Actions.Evaluate.create_menu_item() MenuItemEvaluate.add_accelerator("activate", AppWin.AccelGroup, ord("e"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) MenuGraph.append(MenuItemEvaluate) Actions.ZoomIn = gtk.Action("ZoomIn", "Zoom _In", "Zoom In", gtk.STOCK_ZOOM_IN) Actions.ZoomIn.connect ("activate", ZoomIn) Actions.add_action(Actions.ZoomIn) MenuItemZoomIn = Actions.ZoomIn.create_menu_item() MenuItemZoomIn.add_accelerator("activate", AppWin.AccelGroup, ord("+"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) MenuGraph.append(MenuItemZoomIn) Actions.ZoomOut = gtk.Action("ZoomOut", "Zoom _Out", "Zoom Out", gtk.STOCK_ZOOM_OUT) Actions.ZoomOut.connect ("activate", ZoomOut) Actions.add_action(Actions.ZoomOut) MenuItemZoomOut = Actions.ZoomOut.create_menu_item() MenuItemZoomOut.add_accelerator("activate", AppWin.AccelGroup, ord("-"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) MenuGraph.append(MenuItemZoomOut) Actions.ZoomReset = gtk.Action("ZoomReset", "Zoom _Reset", "Zoom Reset", gtk.STOCK_ZOOM_100) Actions.ZoomReset.connect ("activate", ZoomReset) Actions.add_action(Actions.ZoomReset) MenuItemZoomReset = Actions.ZoomReset.create_menu_item() MenuItemZoomReset.add_accelerator("activate", AppWin.AccelGroup, ord("r"), gtk.gdk.CONTROL_MASK, gtk.ACCEL_VISIBLE) MenuGraph.append(MenuItemZoomReset) MenuItemToggleConnect = gtk.CheckMenuItem("_Connect Points") MenuItemToggleConnect.set_active(True) MenuItemToggleConnect.connect ("toggled", ToggleConnect) MenuGraph.append(MenuItemToggleConnect) MenuHelp = gtk.Menu() MenuItemHelp = gtk.MenuItem("_Help") MenuItemHelp.set_submenu(MenuHelp) Actions.Help = gtk.Action("Help", "_Contents", "Help Contents", gtk.STOCK_HELP) Actions.Help.connect ("activate", ShowYelp) Actions.add_action(Actions.Help) MenuItemContents = Actions.Help.create_menu_item() MenuItemContents.add_accelerator("activate", AppWin.AccelGroup, gtk.gdk.keyval_from_name("F1"), 0, gtk.ACCEL_VISIBLE) MenuHelp.append(MenuItemContents) Actions.About = gtk.Action("About", "_About", "About Box", gtk.STOCK_ABOUT) Actions.About.connect ("activate", ShowAboutDialog) Actions.add_action(Actions.About) MenuItemAbout = Actions.About.create_menu_item() MenuHelp.append(MenuItemAbout) AppWin.MenuMain.append(MenuItemFile) AppWin.MenuMain.append(MenuItemGraph) AppWin.MenuMain.append(MenuItemHelp) AppWin.ToolBar = gtk.Toolbar() AppWin.ToolBar.insert(Actions.Plot.create_tool_item(), -1) AppWin.ToolBar.insert(Actions.Evaluate.create_tool_item(), -1) AppWin.ToolBar.insert(gtk.SeparatorToolItem(), -1) AppWin.ToolBar.insert(Actions.ZoomIn.create_tool_item(), -1) AppWin.ToolBar.insert(Actions.ZoomOut.create_tool_item(), -1) AppWin.ToolBar.insert(Actions.ZoomReset.create_tool_item(), -1) AppWin.ToolBar.insert(gtk.SeparatorToolItem(), -1) AppWin.ToolBar.insert(Actions.Quit.create_tool_item(), -1) def Plot(Widget, Event=None): global xMax, xMin, xScale, yMax, yMin, yScale, y1, y2, y3 xMax = AppWin.xMaxEntry.get_text() xMin = AppWin.xMinEntry.get_text() xScale = AppWin.xScaleEntry.get_text() yMax = AppWin.yMaxEntry.get_text() yMin = AppWin.yMinEntry.get_text() yScale = AppWin.yScaleEntry.get_text() Graph.xMax = eval(xMax) Graph.xMin = eval(xMin) Graph.xScale = eval(xScale) Graph.yMax = eval(yMax) Graph.yMin = eval(yMin) Graph.yScale = eval(yScale) y1 = AppWin.Y1Entry.get_text() y2 = AppWin.Y2Entry.get_text() y3 = AppWin.Y3Entry.get_text() Graph.Plot() def Evaluate(Widget, Event=None): "Evaluate a given x for the three functions" def EntryChanged(self): for e in ((y1, DlgWin.Y1Entry), (y2, DlgWin.Y2Entry), (y3, DlgWin.Y3Entry)): try: x = float(DlgWin.XEntry.get_text()) e[1].set_text(str(eval(e[0]))) except: if len(e[0]) > 0: e[1].set_text("Error: %s" % sys.exc_value) else: e[1].set_text("") def Close(self): DlgWin.destroy() DlgWin = gtk.Window(gtk.WINDOW_TOPLEVEL) DlgWin.set_title("Evaluate") DlgWin.connect("destroy", Close) DlgWin.XEntry = gtk.Entry() DlgWin.XEntry.set_size_request(200, 24) DlgWin.XEntry.connect("changed", EntryChanged) DlgWin.Y1Entry = gtk.Entry() DlgWin.Y1Entry.set_size_request(200, 24) DlgWin.Y1Entry.set_sensitive(False) DlgWin.Y2Entry = gtk.Entry() DlgWin.Y2Entry.set_size_request(200, 24) DlgWin.Y2Entry.set_sensitive(False) DlgWin.Y3Entry = gtk.Entry() DlgWin.Y3Entry.set_size_request(200, 24) DlgWin.Y3Entry.set_sensitive(False) Table = gtk.Table(2, 5) l = gtk.Label("x = ") l.set_alignment(0, .5) Table.attach(l, 0, 1, 0, 1, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(DlgWin.XEntry, 1, 2, 0, 1) l = gtk.Label("y1 = ") l.set_alignment(0, .5) l.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("blue")) Table.attach(l, 0, 1, 1, 2, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(DlgWin.Y1Entry, 1, 2, 1, 2) l = gtk.Label("y2 = ") l.set_alignment(0, .5) l.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("red")) Table.attach(l, 0, 1, 2, 3, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(DlgWin.Y2Entry, 1, 2, 2, 3) l = gtk.Label("y3 = ") l.set_alignment(0, .5) l.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("DarkGreen")) Table.attach(l, 0, 1, 3, 4, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(DlgWin.Y3Entry, 1, 2, 3, 4) Table.set_border_width(24) DlgWin.add(Table) DlgWin.show_all() def ZoomIn(Widget, Event=None): "Narrow the plotted section by half" Graph.xMin /= 2 Graph.yMin /= 2 Graph.xMax /= 2 Graph.yMax /= 2 ParameterEntriesRepopulate() Graph.Plot() def ZoomOut(Widget, Event=None): "Double the plotted section" Graph.xMin *= 2 Graph.yMin *= 2 Graph.xMax *= 2 Graph.yMax *= 2 ParameterEntriesRepopulate() Graph.Plot() def ZoomReset(Widget, Event=None): "Set the range back to the user's input" Graph.xMin = eval(xMin) Graph.yMin = eval(yMin) Graph.xMax = eval(xMax) Graph.yMax = eval(yMax) ParameterEntriesPopulate() Graph.Plot() def ToggleConnect(Widget, Event=None): "Toggle between a graph that connects points with lines and one that does not" global ConnectPoints ConnectPoints = not ConnectPoints Graph.Plot() def Save(Widget, Event=None): "Save graph as .png" FileDialog = gtk.FileChooserDialog("Save as..", AppWin, gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, gtk.STOCK_SAVE, gtk.RESPONSE_OK)) FileDialog.set_default_response(gtk.RESPONSE_OK) Filter = gtk.FileFilter() Filter.add_mime_type("image/png") Filter.add_pattern("*.png") FileDialog.add_filter(Filter) FileDialog.set_filename("FunctionGraph.png") Response = FileDialog.run() FileDialog.destroy() if Response == gtk.RESPONSE_OK: x, y, w, h = Graph.DrawingArea.get_allocation() PixBuffer = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, w, h) PixBuffer.get_from_drawable(Graph.PixMap, Graph.PixMap.get_colormap(), 0, 0, 0, 0, w, h) PixBuffer.save(FileDialog.get_filename(), "png") def QuitDlg(Widget, Event=None): gtk.main_quit() def ShowYelp(Widget): import os os.system("yelp lybniz-manual.xml") def ShowAboutDialog(Widget): AboutDialog = gtk.AboutDialog() AboutDialog.set_name("Lybniz") AboutDialog.set_version("1.0") #AboutDialog.set_copyright(u"© 2005 by Thomas Führinger") AboutDialog.set_authors([u"Thomas Führinger"]) AboutDialog.set_comments("Function Graph Plotter") AboutDialog.set_license("Revised BSD") #AboutDialog.set_website("http://www.fuhringer.com/thomas/lybniz") AboutDialog.show() def ParameterEntriesCreate(): # create text entries for parameters Table = gtk.Table(6, 3) AppWin.Y1Entry = gtk.Entry() AppWin.Y1Entry.set_size_request(300, 24) AppWin.Y2Entry = gtk.Entry() AppWin.Y3Entry = gtk.Entry() AppWin.xMinEntry = gtk.Entry() AppWin.xMinEntry.set_size_request(90, 24) AppWin.xMinEntry.set_alignment(1) AppWin.xMaxEntry = gtk.Entry() AppWin.xMaxEntry.set_size_request(90, 24) AppWin.xMaxEntry.set_alignment(1) AppWin.xScaleEntry = gtk.Entry() AppWin.xScaleEntry.set_size_request(90, 24) AppWin.xScaleEntry.set_alignment(1) AppWin.yMinEntry = gtk.Entry() AppWin.yMinEntry.set_size_request(90, 24) AppWin.yMinEntry.set_alignment(1) AppWin.yMaxEntry = gtk.Entry() AppWin.yMaxEntry.set_size_request(90, 24) AppWin.yMaxEntry.set_alignment(1) AppWin.yScaleEntry = gtk.Entry() AppWin.yScaleEntry.set_size_request(90, 24) AppWin.yScaleEntry.set_alignment(1) ParameterEntriesPopulate() l = gtk.Label("y1 = ") l.set_alignment(0, .5) l.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("blue")) Table.attach(l, 0, 1, 0, 1, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(AppWin.Y1Entry, 1, 2, 0, 1) l = gtk.Label("xMin") l.set_alignment(1, .5) Table.attach(l, 2, 3, 0, 1, xpadding=5, ypadding=7, xoptions=gtk.FILL) Table.attach(AppWin.xMinEntry, 3, 4, 0, 1, xoptions=gtk.FILL) l = gtk.Label("yMin") l.set_alignment(1, .5) Table.attach(l, 4, 5, 0, 1, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(AppWin.yMinEntry, 5, 6, 0, 1, xpadding=5, xoptions=gtk.FILL) l = gtk.Label("y2 = ") l.set_alignment(0, .5) l.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("red")) Table.attach(l, 0, 1, 1, 2, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(AppWin.Y2Entry, 1, 2, 1, 2) l = gtk.Label("xMax") l.set_alignment(1, .5) Table.attach(l, 2, 3, 1, 2, xpadding=5, ypadding=7, xoptions=gtk.FILL) Table.attach(AppWin.xMaxEntry, 3, 4, 1, 2, xoptions=gtk.FILL) l = gtk.Label("yMax") l.set_alignment(1, .5) Table.attach(l, 4, 5, 1, 2, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(AppWin.yMaxEntry, 5, 6, 1, 2, xpadding=5, xoptions=gtk.FILL) l = gtk.Label("y3 = ") l.set_alignment(0, .5) l.modify_fg(gtk.STATE_NORMAL, gtk.gdk.color_parse("DarkGreen")) Table.attach(l, 0, 1, 2, 3, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(AppWin.Y3Entry, 1, 2, 2, 3) l = gtk.Label("xScale") l.set_alignment(0, .5) Table.attach(l, 2, 3, 2, 3, xpadding=5, ypadding=7, xoptions=gtk.FILL) Table.attach(AppWin.xScaleEntry, 3, 4, 2, 3, xoptions=gtk.FILL) l = gtk.Label("yScale") l.set_alignment(0, .5) Table.attach(l, 4, 5, 2, 3, xpadding=5, ypadding=5, xoptions=gtk.FILL) Table.attach(AppWin.yScaleEntry, 5, 6, 2, 3, xpadding=5, xoptions=gtk.FILL) return Table def ParameterEntriesPopulate(): # set text in entries for parameters with user's input AppWin.Y1Entry.set_text(y1) AppWin.Y2Entry.set_text(y2) AppWin.Y3Entry.set_text(y3) AppWin.xMinEntry.set_text(xMin) AppWin.xMaxEntry.set_text(xMax) AppWin.xScaleEntry.set_text(xScale) AppWin.yMinEntry.set_text(yMin) AppWin.yMaxEntry.set_text(yMax) AppWin.yScaleEntry.set_text(yScale) def ParameterEntriesRepopulate(): # set text in entries for parameters AppWin.Y1Entry.set_text(y1) AppWin.Y2Entry.set_text(y2) AppWin.Y3Entry.set_text(y3) AppWin.xMinEntry.set_text(str(Graph.xMin)) AppWin.xMaxEntry.set_text(str(Graph.xMax)) AppWin.xScaleEntry.set_text(str(Graph.xScale)) AppWin.yMinEntry.set_text(str(Graph.yMin)) AppWin.yMaxEntry.set_text(str(Graph.yMax)) AppWin.yScaleEntry.set_text(str(Graph.yScale)) def Main(): global AppWin, Graph AppWin = gtk.Window(gtk.WINDOW_TOPLEVEL) AppWin.set_title("Lybniz") AppWin.set_default_size(800, 600) AppWin.connect("delete-event", QuitDlg) AppWin.AccelGroup = gtk.AccelGroup() AppWin.add_accel_group(AppWin.AccelGroup) AppWin.VBox = gtk.VBox(False, 1) AppWin.VBox.set_border_width(1) AppWin.add(AppWin.VBox) AppWin.StatusBar = gtk.Statusbar() AppWin.StatusBar.ContextId = AppWin.StatusBar.get_context_id("Dummy") MenuToolbarCreate() AppWin.VBox.pack_start(AppWin.MenuMain, False, True, 0) HandleBox = gtk.HandleBox() HandleBox.add(AppWin.ToolBar) AppWin.VBox.pack_start(HandleBox, False, True, 0) AppWin.VBox.pack_start(ParameterEntriesCreate(), False, True, 4) Graph = GraphClass() AppWin.VBox.pack_start(Graph.DrawingArea, True, True, 0) AppWin.VBox.pack_start(AppWin.StatusBar, False, True, 0) AppWin.show_all() gtk.main() # Start it all if __name__ == '__main__': Main() lybniz-3.0.4/Archive/lybniz-1.3.2.tar.gz000066400000000000000000002112701343532221700175100ustar00rootroot00000000000000kbGlybniz-1.3.2.tarf;q0KqH6X -zA#o؜<] M8YygB, Boݣc }@N6ZU  C2=Mdx6 ϣ]8e'`ǽSv> N:{'!zgƯ1.F`3&tZ+ pЦ ݍ ؅1kMxg::lO{~gFpb0iowzƩÈxg lr ^ 1xsW$͉% A#;\tԴOHTҽ2ary2SOIc5&aᄄu91*0´C 4G2 x|92 /sw4Et| ʩc6\t:^x{xk_Sr"p mZ URPw5X=xTjnR=8i aӨpAUR}0AsL?L>ﳉ4q| $X1ISx9ThPdzڕm]fY@c1f9= KIMf2N%0`wA}X[~L+PSwAi85-<LV낻9s3*s4'ӱ$ PR`rf6,Ὀ mB,q+$1 _SV:UZbd:G>d_ sϭB\"U X[Ke%bT@ zn_/H5xnG<={1 ICf(FxDq߫X|sg:3“ &TfFVO & YAɭP}bDP%A9F jn9˩eAx\`:]L)?Ӎp{62({d2'¤e4M{xdR7sn%~:9$Av!폆^s9^tX$E#Ψ EH}Wa1q5߯2sŸAHta/ٜx4ǥާv4 h`Wig~gHFz 6  Q!Nabx^L ~jtjA9GF"`ӈ\8qNwFYF6xSeH#`v>I(SPˎ!)"w_e'n,r/,q񙎔%^kNcfb}j"{%x4Z~+|ȚsD u~]DI!^2ۣUZK@,<&ffĄ[>Y|8YG֔T6*&alLFxڞPi3y? 0QsDV>Kăt@KۨZ+ C EZ@M4To;EB;epQo,fzkW+ M>~EhdZup=1B:^D7# LLKK֒![<1+JIi~tOT f@s[] DY/oq 0g.K&V8f=nGμ$?)I7)2}TI#nĄ1&N6Oq(yɑ>K^tK\`leAfP"3%[! 9f'w S ɃٌgoPl˗?M~o+*^`ϱ՟ԿYj!6V?(OYHZՆIoRNO٩8[E{7j@ʑ(jx'3C;be{usTk[,L|l+x&u*sLwմv^ JaaaiDRIM m z.vF%JBF-Ҫ0WK b4!ɇ$Ծjx=VMooH.] cTHO_Z5za,(ZG\Z1H*WwqXzmK$5E;c7fcEB^+[h;9"+[ƚ,W&a !+Dzxli& ]+:F%=μ˸7; Md涋>WH޲C17pK1Uld`FCOLolHa5ފacqK{P}CVk+d) Ӆ,$Bxm53,I Z6y2(7kܭt)[1I;"ܪst֋@* _`Fs\1Pnly^hG<-}a -w]xl_۸_JSG mܚOҪeHxT^m5!&̡aM3Ƀ>z}>WkyrK+3kZm/qNOfr#2„>{BN3W:HSdD^h;wl߭BPM HE}oCg/txpό;/C89!TLʃ=_Q`睊2]ׅ9 #1` pWȢ # ;OfX16m1m$W@ٳ2\w@o`Ǒ'NGgۇ{w\J6 J,HR'PHЧB+da::xD&*J4`IB T TDD znZEm-.pU{Կ{WEmhZ$߿{w}w]^lё%ahihUGkHKC$Yp`yv>MyJTu.!N98ks)0vF6`[0*aP.ـvgdpd3ݘ^!Ԧr<3:bMYCYMRLtC42CITkN n!AXB0ECU'ە8վim!D3JӨxYi-LiDfqd~ (, o#1] ؎e,od89(>gg!1V/9lvXV=|sJ2yظY8rP㑌LBQ2t eS„ٳsf"El*Uxepp+eV`.q59kŰ!+ː&k_J6HCkU2(S"D0vitbܷgx(09abpM5P%5 1}5J!ńFH,{@%L ,7` M*䠴Ґ&(m]o |RYo8SD_F2Rgz4Ѯ_I f PK &S 4Z9pmB&#GFj ˁ=CCH%Ƃ2CS, \bѦ_:6$4<د{ U*Fѥ2"ޝa8 <2[y">/B3%d.,$(q@Q!Gъ fV 7pCI\OE @HROF O ߹$HF ;ꅯ̄b $A9=gvzlSfE4'@ F;d 81\ ٫QR"Y^(#j5Hש ++))- "4ӣFX |EdCyE'Q\'aB6'p|g~lLBuC16?Fx`H:.Qy1DDP'ԜֹgddhlcW;&cHR<9]^ ".-$‹0'dA!ᑨHOn˙-S04k.('f>O8#odd992S).)MLxR0W!f80y)fTI_4ݢ RLfQWR.2).CSp%R{I ܞzG_AL3b<1fF%#E1@a`XFPwaJW 4H1RRY:xOHİx(dBx,5Гa Z }1L 4m.^V6%R\ :=n{@*W\eVUfʠ2B1qb+$F8qr: \(n77,?xPop FQ0,1& 1"hڈAs0aԄh7 7D㥥܈p K1œw*+{Ao97ca|?ŀ "RÄ԰& zhR\L E 93\L]w4|MCV],LZga5,ޛ AhQ@ R̆0?\-d${5%S>q} ^cBûaрN$䢄Kpgrδx("淨,ʛɱ"Znjޠ,{nUg-Fi (Z;Rc!)n)T"cՈKx,4m/m2z5OhҝM֢t9 ˴8[;,H"T!r;^yD2t`S;5)ūJ Tt9,]E*p Zi@YUƣ6} a a[TFlYqו+$(KӊKC찁~믴73$r\ Z}O`R Lp+^>FEw( g;1%7IAk}i<|Qc'Q{ph/H}n B.Q{WnHfjtFՙLe ص5.16} _^PA[Ao<*$3]3_5|͋צ;g (,}jN(?-)x(IgDoJu=KC| hJC$NBAh=id30 0 )ke5P>0mC#ձ];S[;m{t$t9.  ҥ2rLgBâOگK͕a[Tq_<$-L_% #W "SP:p(Q$J#[ʼn!*0'IT0y!^ns$ii7hTxy*^J=G鞪sHTlc{NUrO9A"(F vh ÐH _"X,60P)U"9iz7$h!z vqnS#$n PT}c@ *VۂSpmF7anUro!x G74!MqਧWxŽAI+#'u "tr]J\:QBHjL x{KBK 8'@FD9ѩ#18b,#>wاԒKk]Jm^do̜Zc"vJ ^a/iKq׫?F5ڜmg;d/+~<y|wRxHt/`ХNڊ1td6|^,U&EyNQ( nt%Eb.J= hT)P B:O_ niV[V2uTō+iU1˫-QLMrԴKfܖx8d*TYϤ7Jyzz UK60Hf^RxeEԍ͙'DN.b LA_xuH̴~"a۴J(pd sT^@XoVBؠ! PeP4drKSv=Cx$Ң3o=#e&\͋'Z1+jjRJ%Uk.3|OH>qtT(dq;8QYgCI:62  =SV$9}ȨVy4L&k5# #\ {p8C ӜN ҁ͞BL6d:HDǸpSmݠڂ!F|5y~AOpA(KψD>][F1B< d@/ & D.!J#LT$z'O=Q!?H3=4r`%9J2.K X2X'[ʜMljynľDkdkȁ8CrW'KS曒7yKl%Qsz4rʳPT9b]MWK;fCy]ሮG#.Jz`© k b c> 0?,(P!3A *=fPHx .OM!|VAΉl#8LIM0[ovc(ԞEA(Ų&w1d*V%-UnUֹJGh5<`|x_:xVmDƞYsnfY@"֜Hbs7+Y%&f#58Y :4 %`ou68Ye\3d,C'̗J8$ֿ4[c1tec@l)} OxC֒GB8+[W\mnDh疅!֗^IVEpNf2%hK;\2<(ۈ&a6ZZL4--h6=)tbI_޵Vz[ cIl iQ%aTfEi%aTfEieaVfQi1Wl'wj٬ dJ3dY] ֎FI;ɓ2(gYgJ}IUE+ߗ,Ԯ}UȾDH_\Q_z *dʳ"Vv+( \WmT3 p'W\+,6Wo@ڨgrD ̤gIhhKhe,~C-_K7IbJHQFFӈF}ESLsLc4w;iFut5 6酷̼<%m3Hf+&ccǨhczm' 5Qa8sWX$ִ#8x4qqb, 2Ɖ~Sr `&If*]ز-bl7^%@b:aG f>-Hj%T1EԎ܂z!ǛQ/Q}D@~#D#_ ږ~&-+:$+bj[׆nUZAZ󼒶[!mcE\v7w%m!+%P2G9IPୄCebL(+B>``<@:  ̓@E-TTAJHFE%XdNKh1|.CFWg*%FHs։Ӯd5[|Ӏ[)X@Z"g+dDסB}+e9u/,i znh`ֳ[{3-0PAkPaZȬa!ka_Ƅ?c"1Alb61 B/l Bw@p"Wb6 1 Cu049fMPɪ<]$efA܆$PNQ.vFЂXux?tdzIK(\fu9DEW,|V77 ́9CBJ%m4]>QIҺI5 Q/ӉdeA"bO[Duڌ`x]Y3R63 t._L[MBM[dz:g'&RJ#Nl0?ulxΔzMbcg,W 'W$x*(7PMSxv \=ܸolE2Pr|7U1ISiٚTy^Z*r 6@g2E{L%|?6E|7SR,9Ɨ*[gJ_E:v̔U\u}bVU\u}bVUF6H@? YkY; ȳςd@p9*3%) ؎_¶LHrLM+=A3_b r^PA34fʹ /4Rf0aDɭ-M[B4r 6`} 01nd6mOQҎIaSNI0$3XA? ]A\l#n7 (.(>~$%SbvZyQg@r8q0POHz_)6}b\T EE3+hYT#DW}qpiYYt!A]_H`& A W*[T ?41mkQ<Ό'4|XVooOOW^lWZ_Ɵa!]53A]ZA57afA1V)N򽬠`{? ks~ @ u+8OdS o}S ۗ;69uU8u8's4f׏Wl74?o|8-JKAnC]6 ~:qRWˢ:;k/t  <' >5ި5שqo [[|`hL1牍O}_6唎[QpÑGbL\kZMytԩo"`};AѪd6_VͥYcFKyI×xK{Tk{v>I ̽jSO8;.fqрl 싉u?|sj9WM:p%Otp[AGKԩVPbׯj7.+rTSizVX-QƌAapqdpwg?vUvc{1vFuG_;(qM{d4/{]sqVK[WNV4W-aӂ9ҲdɃ!OK=z87۾)F͊9Z=pcGu_!W";khB;zq=Ͼ. v4BdeWsWչ#(y҂Y6w w4]ZcA7Mu-_z~8'D?}lH%-.q6/gkE.rhiH  _%+4|_ :trp`ot * >v"O$ZtĨcw%o9g;4=h@DNibǫnq*b~o]u h>ꁞ{>Vv^:- !,]{dA/HyDǁ=nڳki=[,7qB.H?Vx AҷCҸ^zTMeWhh7PQ /9:E8\O5~v_L?gx&m:&aAu'S5$Auv}Kͨ 8 .X2rp/~e-x ';Nv=Q+XYkdUiOnyG<~FFz_\;6+O\ñifu{Ijս|PUR2@wHɳvO515[y\]5B\C0k<Ǔ_܆TMiQ&g˗tZZ)|4_Pg{{,?)Gs_ |bvB~?-.5\Gk7km=GbFnFC`X:}?:<_15o/fw{9=sg6֋I+i|UX]`?ٙ ?.jUc7oϑu~,)eBӲvGٟ?a]Gu =uߺ (3rUiAn2b]9cr&t6{Yݓƥ}|#{?=ë ߳Z.Mɐ_Bu#|P 9ieJW_y/-3oݻrzHw5;Ё'꺾ܕu\۸A?}ݱ|+/ 6G-XxawsFa˿zt>cZ/C :U>yj<;ҙ]_T)LQC p<˲YmyEX˫:W_^P%}sG޳[O_> oN} m߫{,d~若\̡V]d໯OmtIQ76yoox"3޽WN_wɬnw|7~FYVnT3e=t?w3fk~; n8bjE׺҂f\IV,U&|V/=%XP?c65GGv$,r?D]y[~b5̡7Tt4j,ys\O[;QnOxo`(90f%6?yXh0\QU X:;\wh71#׮Psxx_ՎsSh!uks>]x˟+^Wo|gk:k:^!DIW S9FW hw*_YRh7|p{k|pS߶uwc N4޶yf.jQh-g^NpA-nOtl9;xrÃ/a= ̣xn?}xeŗ1nV[)% Y\(dv4h_sՎγb#_q0w/k'n=eH⮿~~f3V4d G~/g{ cskԁ;f_wljyRyi<[hl{֭*#B杗Jg?߯GK_^懵K K3dELʮӞ=2{QrHuAޓ;=oz_Ey 8v'qPǯWE`wnzvuҨ?o e Oxz̡_U.Gg;C}re&'7۰օC6=ك߶͜ P^SܧkΝOػ{/?z[Rt;'C^xo1l55zڰF[ӧ:tMw}d=Fi31He|[׃ nw<{aadۂ'ޭw}@]֑M;]=]gtݷ0SX%EgTtCZŚ[[|5ewZ>xɒt _,g׮5T0V3BF, rِ 52N*wzeӗk]Nٍ#=?׳EK"՗JY腆{y {4LheOtӬbk^տiن_kdlW:3 œo7z}^N2askn,;~TU%17=ɩO5K=^]|^vz{tՆCXv g_zk0~A0>]P.uv9JËO~=dYGoٱG?0ع7oZ>ĵ7y:$ǀ%3<{Ř<, /^saNԼP{<Р`Ͻxj~sj.h[ŋNpO~11gߊ;>;Tzjo9<uLC%S5QhM&Ķ&mۜض3Ķm۶m۶߽O='uԩ{!$ _$r#033 z$\?*eUMOuñCKsUb/98Yg0Az@>@ݸ6viK;Go7@&Jd5{ʏ(}hx,jLtߐMPA|v8@Ql} "fzY(qW /G1:eQлQ`l4,.ӟ~~7EAIYVV&!!iQjHMN.&%K+>_,aָZU?Ϣ|CXwѬ̴gl >ɟBt5 ܩpIFɕ硱XVDF!1P}[888'kf7W>a["jI~_oǑv6_obUz4Gl-2 2Z)Y0oШ)w3!-{xۓ=#Fec<58ShKXl 2RGC3 e$=է .S)E qlZTEUHЇ u-8f ]`:%"%F Q:{A!.QH OZ188X\Od)bT֞NH`΢KLJ:&{M+Ad[QL>DkTpOo|4ixv :`}Pa]S@WͤLSivvw>ӻPMKsPEYfa{qq111#i{lx&PEEx/)oW lFmN_0%2E 6\T҈b JIM Vƨ%ޞG[xRb0VW0dBvOO `$eZđOG~(?,󄢉r<*ʒAPqţ{+v2pYN`|"yu5!?\)L,:iɹ Y(/{P)v:URWe7==G&s V"%}h/.o-Me2Q>G\^x&RRPm2i0C'"no?54]4x΅5g5dq}]Idҥ1V3&,+p6" Il(L;ڮɉ521rD2Y} l"W<>s}{sQ_g{f ]ljH QTQSRy566jѸ=lpwɣSA1Q0ja䐍llrn 01;L+ *gffYbj,HmjNO~`Ѝ!0hbf^|]F4Cr2zC@:3&Yu@ZcoI>ˏ g5Cn\SLT]" ;""mI nfcR&GnFWXW{~&ejtkk-ϻsH)}}!).,,^ v(Mӳ%""?#(FZv+_TcL8HHsU7:)k2M2|(]^ZEڹa%8[ RhU Mgzwznl>sVWwͿe}'%`%VOkξ"~://J4Lc,9Z=>9ɩo,YX`'!q<_sKёFܜp4H|lw4p'B`/@#x 8|tǎZBz6FLy3õHb胦Lm~ ٜc;ih;L>C;;\}PcUhiS\ITK?{{\~"-Y+qmәUG;}ߣ"Ȱ:8"#wR n.ظ9ɱQXAڌD(,묊**]^[Tg=[6UC ؠz bW~5X9C ؎b#2H\ZW.tT6όƘ6##De13Y5ZC< lz/Dg?@Axiiz@&;WQ%R=O'O(kC ?E:8Ћ#j^z2GcO}qfp4oDtBoJgVARS|'g7 JscFUMPܧM(#&̰0.]1߿±=l)(`nӈBN+0}]f-8c?DDѡ6/_75BV.y)Ri:lKjbXQ:Xl 6m&hœ3"  PZ  ʫ>at[%+Kuu}OdI&UA 2$$/.F`ow,.BN#cGή=A@1C|L܉bFjttw//ZrH>zdՒZ5in{L%Fs'f= YJ0N!F~1iIY=[LЀ|)R$&+.i CmV@n=<yJ(̑#Km,O^_lG::1yA*ik.;wzZb  Jb:X jĦZO9o䑑*Eg/KRR:=8`7]E*F|aN-ɀzJ""0~46HȧL\}<>ྚ͎'Vk I 4v@1$g{{F&kgEmȡ|_ݾvzm2T{n+ [_ʽ#''(G Ɨl;Mmqxs=Bv\4CtNj,IQhyJb}$k & qtuk} aŰ|<6p|dR0,.o2m6\K JŸoo/{΍@[PQ^̫yX!b`i^EJyKmK[ C}~{H39{(,z T,QM]ms{?By `5E;y"ɞlw;0Cj 3_oG(n.w7h,BIؤD ac):aѨo,},7z`^Kp ӕ ;\z(p3\CvGӴ*5[ ~2 uf ld֦nЩCmJr"UG թ6/Qe=/Qغ88սU Y>p-## ЪC"᚟O9D꓃"4vTY JŴ>2 I  Tْ˫C%* lH@Lswv`r n??<_3<222$Z1:z.RO k3h2SXUu)cmŬk`$;cn1ww$"7j>e3LmNLjm*Lt"6 dL"OEHtp?|ID^'|F 'D=; ={@G)e)^`(+H(`ɢAA?46+I汢Icq;`{Z{U-1!UQN6t{;)lWiN+{ <#m!dw3@  }"]zycKP]J(tHf*|~RPMsA㧃E$A0ߓiݓ(FȩvݵY'hC"Z|N˛N%[>2mR Oƶ PT*.*ӵA(haRGf+p[O0UƲ26Ѵ.1e=]學?VX0SRtבQ+NjWϨX cXVj6J$}t}nΕSSLiwwM=!Zc1m{XS<873]g>Nfdr%K_/ת@NSn/P9oكWx'5:eP,Fjόu~ֶ R):<|W̢05RN1uW2pRK YCQSs.- _C2j^>Le˳8zBYpXhě+*$1?jxH;jY} lA X1P8$D\pg:‡7jEٯZ;8a΀3X~o=8{  wЎSPvQmO5MN{*?Aixz6&n)D3aN)c .*++*e)Pnk(AhN=+-dfgZ geqqG %B0k`ZVOg z[Zr0qSudĪgNnQqJЉtko)S.Hg$Og`D'$,hduX)h9NL w$}5!ZONRYI>@ X/_O3's{ScEGYe9*7=U6DV6r h] pBYQE5DŽd)f /@@;HګI zq"ϫ19X]tYBFuhb,/$v_;otzL{ }?`jX2o6vY~0k |4|3l?捁R% }t<$ibHYDer6KɁ jG-notyrzO0*8d-U$n5$EJ#tRHQ6f*UE"vְ|k& Ә2 }s]q LOcޠEtH; :>45N6GIeSØ^tϩ>j˫h9驟W]YTEKKL C=Q张 {qħ0[@at^kj0 u}ĤDr1 fk ѩz^-Q<ģwYew)dIjQUTssޫkKsLuLo,;Ju%Ll!bMyONjv}W.h2 Zwo5;s̓ yzx7E{CNיexQw@9}Z?XSp] ^Cͅ0^M\ >]-BΊ ހVA'e:lySq0mWCث!**/ZqrՃB8֊%nȐ>^Z(6:<`jjk麏PI:Ȝh&"͜^|ٮU!ȩx'*R8G0ЗkEGAKޟ]U„I7pp_7!> {&C?S:X Y)/^N>>Znr<b˔SJ,t"eJh8\4)2VrwьX6Y<EZ1C1;7h_ta (kJ7xF0[o!@|\|~, mg{b _̼cҁˎƐf,7Umշ_g’dǑ.[w{9?tKf#Nw.Rb0懪5(ƍ:ct&IJU3)0݃.LJR^@w^'w Ublؠ},ͤa('l ~벅TV~ J/ v Bx"Z>+&$GjL2ژ}NiXM0 wP IVgG6j 7u$ ߾M &S}^wb{ClTZ>uhQcPĬhF+Bl;ܦc.5&ƆW0#h[40Z[.<+ )B!{'SI sP_N֠l.^[bD==,"^D21+}Y%Z$ ӸUvvp%F]u0ՙڴv>s@*k& JP=:7yɯt!VܪǍ"v$HV8lH*3n9DdVz,[Tp{ r{^uID=WM 9lsY p!H) qJ))* c+JmZ+ k%%ާ3{ Υ1XO:yH*iXiT:agel^_Rko'|6*(M,]l+$YG#yR)fB6kͰ[۔& x\$dG\Z;+tTӓ1= BФQs<θMZcS#?YF&;ϵʙe5>ܗB:Ҁ׏#,z&F,qʜX2*Nwt)D\Pv[5l:S˹Gp^TtOں0 ,V sǣl2kؐI:-UC)KLZ1PI:PR$Y1̍:>#qx{ISes?U2*k Q>f;|)oOY`Ϧ#eP CW)6?4!!{~o-Pv nW_IZot:4Ib`-T5v%^}cx.>Oؽ.k@_u5p`YȬ7jTM:䌑׬dž<:^&ςp7 V'7\֛Gz_lW;Ӻ\MvX 0O(9hجϓiCݴwd*>?`3=$Ұ`2Tlc0+t$KSv0)uIX¢HGGt;M?0vѾ5gq>L5O~Ў܉|n:#uNbs;?_LY`10]憀qa)?XOOzG5G.ky=A:okT1@I+Ӕq:/.Rj~Qx.(_ڎ&l%샭ob`7|cf+&Ɏ~1_Ong[KKa}ɭة75mYl?߳&*>l'm VLXJו|!J1zjOTP=K tZ9۷V*N@ 7-Qg sAA9H( {lDgĕ$˫mkWn)(t]|%!BO-<~L LUVk crN /ߌl~M l 9fx4[[R.ppPD;?v-]q_ur8Nxˈ,YRRM~i5Yotl5<\k}vd}TP־^XIBTI|0} ZVx^XXXYg8 }sruh"""[9۶0\ގQ4E﵉-XX̏RjXpdcc wH}lrhMփT#(}i}_P.VqIBQ_zۇFvf,O'RUK_M! ^qeT|EM} \ 0g`s~ UXI |/Hu1\ rT_s\7wA+(H's1Yѥhv!HN Dӕ2Rp6?~L2@^ <"$Vz~Y#  Gg܉SRZ:f$X8mr'mW]6Ơ@~h}vrR|sx}>jAt6S[&hėtOIS2TF+U- ZHp|\e8cI:7>AYyA}Ew2яu"qEK(&_l "oʕRf(_: mZ@]ۓ'FәMICG)%FKп]{c_U fpO9ŭUc`0 5p,̔<<Ws{`jIE zrm 0cZ^^@FEA"}.`6Yqt6sN%_mqi_ë{x6Sxn:ͽ-};$Bjs)~0 )*P؛UHʊ0Xh4dH*)(_bz]Ϳ3\?F>Jos|h A*zZ9mm K ZfwT oXW*Е(PMCmYm񝼢}Nfl0D2m[cj4|6YoLL9֏UQ>O4\]$˼I-I1T~%#<ѧ_ 2EKzaɈh:{l;ks{`KgA{Vo]WztwR=DtZi`W#tǫ|C> O~{ c_uiֱqSvw4cvHܣI5ƯqqLrQgʂib۪?5-JF2Qp:S2ǟ8'"M8ߐjzR^L[ YLjtU};bPdp唩\ j~jM2 3N' cXR ):+oPt>{OHBNTFƠ3~]}T~:+2 -]daccٽc nEЗhhDז7E'% "=td 4&$: ́G MVjԀש0xmY1nimy}q~VeeYu-(윩xĎQ}gukTbL;l\(9viTXb8Y ' ĉV$4S:d/OdP%UX:ꄓ٤:%vѭ_4n; =]{6r1E9WPi*xП:*c.y7ok}3K׺{[O)^,ڣ;/>|2т+mo+RWt6t䑧, ̫q?j!,mVE)Y%L[C7㺳C2GiInki-xL3Gj)q-}7Iwz SQy(uI ɬgzJ'$rPsEݿ#TU :[]Vw-wݪMI/U>Voib22:7W=t+#Q7h? _~z>l>Aһ*7k6d Xsy5-w3ȈxӯNďwrp(GC IU:U32W{gAC{/oogՇ?t/й EWf$¦r:E#vקBm=8yM  n_L1ฅ#O콵Q:9&z6H۝VsiQH;;0-ZIEE/d@87Ǟxk-D[(0km/wIW >ޣmLT^L"}QXW( y#gq:˛"4KtvA4pjCLRdT {^%}$l__уAN*&7d§)`m[ܰ}qH4-_k5:uWI2[Tcyi_'ezqf zpDDb\P|pWg-s^ (/ 39;ܕ{Nn2.Y4/Ȳ|Vflb޳ e186ZeApAgZD+=+O"c9%~ӊ|̱9rÁ-L\YOqκhI?2r5ٟgЊ֝Xpi@}!H Vg %tf?uf|6VSM՛b($fK@.`u8Ut^)_<(Z8:=7;F uL "+ ]GH%[z+w?AF p-Sg60Rpcd\e)1;P2U=c:oK'J ?:@v1(zТiyuQ/(已CZ%{@O:lM1 K~pL&R嗍(ح#&UEM-Ay`߫hWۛ4.=}Z,5B( 7pj 4:4C2s2Q +i\DXg*D2bOcFc.7K~[Ea @u!@}($'=_()bF=3Y6rK@ׅ\t>ĵt[cdNg~?WJ\4N K?9%u?#=FtT^RV}7j"suHGRau0x IxiH1/1IxSlN9Gߤv;C~"UͪLl8e=EuEr&%$ɞ/#)j؜rqAk#J[D~[>&?>)$> Wn\Û*19-$C:.%dkFnn:y.b?iDZng9PiD~s5 }WP^nk^&ԙ@'wq#^n6S?` Sy|f|89(uvKɒ+?GFmjE=Q\N6IW4f-#O5fg\S E6V&V0v%9DvRWc!Vk,4i%]kW34.[mi]0,-&~dj~;i/DPCģac2Ǔ6 =o~^zGqЧuiα1eB$} SIR6<ھ]Qݽ^8Z^$Mԝ| 2S|>oY2`o аXpDA{Mg5^yvϮ5o4vP`kWhjAqt-"aوIkÂP0 Skaudr6띰3Q::o,X*K^[ѮоXv`Eeӌc/tc-°#:r:0`wkco7!d~qq)号]m#)}n--N6nO9mEtNGƹ]6KXH$h9V v)L=_ͩ[Wa X'[HeLO @x\;u㱠op.P[Vg hRbpaLe̯a_9 dC:{/е\k%ΙʬҬd:QjE[yη<#VÂ\@2EJJ}k ȸV(ׂ۟ۓl6J-b!ɭsգ 陜~|z!9Lɺs{m$хf|=n6@8CT@TEޟ! /'^O¹ez=7?Cal"xp^5)K8UJݿ[VďS3~x_9#9~;YΰT M#FdFbz>'j1^cLI +E YDSJ_y2XdILW3|%(Yy7&f}:,8f!>J[38s JV y; Db֛jl '|K67,L:%1d(SͨzɌ-.TnƏ{5c/a6:#?Pt'BRBåtfvpQED{C>t#~> )UaQ,xQ*LUFUBB>B 6]_li,'YL%U@Mrdݲd;R{y9U2xq$<]MY䆴(qdۘޯmzmz&Ab-Adl+kAulłu_p74-SJƣ<.ם_XHe dmcyFv_4!B~ `](Êu6C9GR_x :nޫ 7<\0ѪD{Pg1A~~ҩꌚ ,?J/ Iõ2LMRkz2=\rQ}CGi9Tў@St9a,r[XZNê6vK&${ k$&Ԯ" z2rN=!)PPq s1Ul8jRڭ8GaTߨM"R oW$Đ#f:TOTTg"lZ2<yƄeєAI"^PqҋKj(n\07₶YJe a ZP BCAa4z<׿ی,,uc.D(=5t#@5kY9gN)C-|9iɕRTpQz 5Tz ޗmjPNrNȖ U,rNsj3"e!l_/ܯ|WLSf&pl&͛V™Qt5ǰCk]6'>jL"VٻpBq껱`)xjk ^*vZqUSY9mMNFJd }mBv?WeYe%"~]d+0r.ϊD"=}5;2lCl°C MKtddeϨk[piN/Uy>8 1 Z mQ$g[:.*G~>T/ה!)'ӻsM4!PoA,Q џ]*DžZA6FȮI51įԗ@^bdD*^!>xޓN4# /)lb)؜,$er?u4ADѲ?VKMzG&wN q:+Nu=%N;rT6{WB:GtdMϟ?*#}:օ"ع@)c}xK|6DRsΣ;kB!׿ v*:փU3Vcgg 'GҽeC;S)*|zF6-@v/kRLFpd?d >N;=(4fH"812Ybk֯5žvK~|kuo}#x<]fOVBs>ضsto#GUY<ˌ<vsRvv0ī,y433_VND?[j#7Q AҀ_ѐ {MCJ8J5V,o#Nh֗ /+Ax1c`4[%bn(L`زge_nGtcba!/U鈁+uXk_z)RPol)~*|c?fPN/2Ϣ81xuyz>osKHg^Y҆Q'OU)G!e`ɊDLjcճ6wOi-Gw0cO;i4ɮ Mnq99~~DA_*OqxSf,oj}lt%qZ %,j.?'˗b΄c(ieatvLY 9uxk"7@ޘ_zEey'{{k߻<9IvC(/7 6i4V'whaI 4睧m0N2h<R&A;"%P rm[ہYx }lt}3tLyAc>W9 ߧ%ű\lZf̼Zqq< t50=3 ,w0^?4gSSTaOV F{uBZp" ߎ,$' ;8tM *ѡȦ#M8֐ ܷa&l[>^595G*ɳ"Fs3#ŀ +zm41 2K@܌q3ƚ&GkW7$v|[Y/`H@l2/m`Y&SDV^E'&y[#!Ht; ~+\ݯ~czy(p(?8f/,Y,Tn69~`AL{~4mQ뺥$.c玲;t̉0HO`D;Xc;QrhJhй@ 7e^_/:r66~<cA{${'gҖ(+!v^'yn:U*0 zC!>>{s?YRl *+ތ _N1яhθ;y =x]I7ltµ:#dڼ8-=OmLᆓ`ͳm+N⸷(!tޚ E.rwxv}\i3% V+LHLJLsk"􆃙|JSD+Oĵb)mώW5(>!&6*mX#+PHFQQlw9C޻>`vcEtkqFѲr֩H. )O~^8ohn N?:eXH2""?v|? %[ă&jU Б,F[d'sХe6^,(%̄Jlsg~8%oMJ8*.ɚ!e ? {m7mw#j}x@_:%DD[~Ғ :֯MlZ,i[Bt\Zԏ]! 1"Y{bP8lD^q1b}x98^qM}U?b@ R#!ф88a2D#AsKIc#Vh<eא͎{Q>b>i*>~RA;&P%\PϘSѢkHAZQ0\܆#<$vѲ .\jO55q ٞ$,|:x\ӯwT-ϤA:TܐrM $[ =8&;o]QѢQ&̊K}af`Ҡ d0U L>1_K3wh+>őzL}ܙBar@H_Ox8{02y-T]RA#CxDzDMeҺۘc~94SݏR.[FE`z;{B4L_(/#-lom݄_}MĔi|c=A# )QEr1&1U:L\|d 'oOsEؾ|y m+QV`(T*B=PO F?NBT?O28}6z7nc*-˯'Xm6[*0kN--4@޻8W!".{M(1kj@pz%M1%sJggHf`<Ydd1}bİ!#Sd'Og#qJc VE;l&vyԨeϘI 8jWCmw`Rsߠ<-x<wNצÉ%\d- ׏-$DDf۝!N9gvDL{ lAr thh-2q!"44LJ?s_z+UVUav^ο`Z7ϔ#N 2!ܵT***}]c( 5oӖ[n8;$.-*̀WY)$VՆsm YEzVʆ"f)ґu[[GG?= S $Cjμ֫yne#!.W# ::(Yξ퓹Uf7Ъ5q#R\ xEAahI8iLXXPpT.>F,1C\o-sy*&%#"J5{mOSD5DP^ݝn냅QY Jh@ pX&/(]I(X*) Kh1'  Vh[(3L?}0ROQjrS(ns9Rb72Jy#IIW|6"7roN~&GSMHF[5|(gIDD=C oU),ĈTv4ʭW:/-?\"bj|GTPYAr`7+:˝^ڨt=ءrěUeg˛C/ټz嫢|V?l hT{{2G|Lr(+K6{Vd:CHqhq"2]ZZ_[[; C$ix&?͓> +禷<[m_V.ꃝDg wGHFv9jZδߑùՔq P1b\./8ݰ? hR%p.(( W\Zܸ2D/Ŝ oؘϗ ( Sd=?4~UdQ׳z& \d6Wڊ7 .ru~ZGM`au .D[[J' .&[.o,X 1.!Z' Dxl_"H!eo5ÎGA:w:#t*udA}JqKƅ_eN ݩA.WZr>XąQR{oպu'I%o gP7㮦쐗κEYp߿yMRRJ8/O4*55u]^ ŏFf2 Cq7zPDWWŅ,Ū"{Q5.[}a?d΀?B&-֒k>@c}:tX%E[ kym $!BrpE%% mm:}$Ig v p]p} ǎk )ܸ\Vq鸛y\D[k\23ڟ1C#ZmiXqB%Ƌ.6e`zz9\`6zr4:t73-@..B/pSr&v_,>rd͍Kь;a&,7~it-fgd`\[[1+*3!hiR[[DSRˆiK?gR¬)g@/ZZWyD$[AC_,>+*+7Յ`p8OzN|non;* !DbMܬ*!!F}< ?},6> 2%粑_4О,N-Yz![ZZhu]ovɷ<:-oVVV{~ӡ {mɯy&K8媑౅NPUc >Ij :U|3vሩ"VP8 57ɶa$$d+RVVP_Eo~vٴe34f\wյGb Z*¨ER22U%%/?)zё'y סP9Yina D$ q)氦YVc oOW< .5R*0<!3rʭ@$ӤbH(K_gPɔdƲ ' IڼuA ^!bmbBtr  a=bczp?}}jfE?a_^^I!ۨ}falQQE_%Mղp9D  y /&/_XZX`(Kv\\߿h ϳ _U1:{H<<2^(=N*[9<^><Z lNvS7h4ӉDD^_Ňd8@yzz!.}iMW9]wX ~cmۻ;VaC3& 6S5MF R#~pptmҥ~V0ĈqtϡiO/2Jͥ6-W eԉ4x9}:sr nr20080`aA 3DJ4kLMxrIxI^]]7,,B(ၨin- '5%IJ)§qA )f)F\wd$("C"~ॠL>[5X~_S%P2y)_2)5y B+QPRJR!7:jB#X$Ry;`ĻECMm8?~7KDG(0Y;;)5+U\R* u9CXmn?> 0*̚\nOit}ޅaceAt*vo_.P̤O=!qg/u9=XI}PC,Wqѧ.UvdGWUZ@CouwWYజJe.Ҹpg;Ҵ,cJ9_160!X on>?2x7]ESoeT+s/@tZD / h'E,>uќE+/< Ov ./~4ƿčuvҚtp2R[}l &=}R;8rO\\oKٕv/8=4#s!aq8:cPmeb ! Sڌ.sϧ.N$0>v)fpxx42Jg߳(V뺷R 7t8*Wb->Չertuy)j@.0 7n",meYXv{%"%o+Oyc?r7 |a!SMI20xzF'`jZC с:w WF\]`ǃ fIo$F5juj菵͎ͧe = n.:hͤvH8g19bx 6"Bh[ ߋydu露F\,ꛧ11;VUgd0ǂͨbWl9˻s\MPuLF(" fBi .O rIӱ*'u7r1 I*bl, +C`nܶ6* 0} +xY' x7*"{{ŭU9EsD S&sSr'^WؐܨK @A&f6g]xupYJj&fe[P"y|Ph`qa]XYT b>bfۄl*{<uz?(H yQbNOQjjpX9u Ԩ>L2L*}2ёĸܣbb䫍,r{cAZ^N5íUh2?80cZlH#KJ'54־_׋ݪeWcǟ@h[(eLXkpkX77ˠ ]u5B)utwPc0É #F\KN6e\#FNFMgbChBBc\p̫aźLk= ωBDР8 1٥Rᎉ  1h.pjmXbTd>N^V55 hQCHȤ䦇cQ>LR^JG zژ秚Gy(/tthh0+s\!ފ,7ܜmEd2zsg5$_\ǹ%+52M" U`{HwƣƍȎ n!!QFĤzy@jV-$AJ*DmGT=8>ޜ(]Q%B([I#ZH7(t5~uuĆ JFEkkk'~u(``8߾_K/|Rr*/-Ro{xw#//ȧ}{y3SՄDDG_CQ߾_Z]Όr d`av 7 8%SJE#y`x7\xqӳl'<)m/bCjbtYi/ξ%TOOH|@n_R\foծ%: zM qHўr5YoL8~-4R$̙ux$ϊw`x=Xt O~I44i,K.0-mN/·Éxͦ]Qxq9(%"_sv~ZO2 p,!(9~SCa褱Qr0>:,\p\?#BQcD?;Th!Njqqouwwiw4MZ8|YHHmp4ٰZK{y6CphYR(oBrEʪd@2əiohfaqUYa~ukmNɦH&80ǣ 4d[[4mVoN 7嵢ph]]g/*FdbFb!!;.)"D޻%t9Ox=gwzURW&ũ:VQїww ?*m6\ơz'J.бp|UKYgQ\Q^ v/^dxI5|^ses~HL%eN.zEH J3'ތ ΐ3&&qkMGDyWű2} }O6/ oƤ}#S#%x(豎u]M ט[" @|GMŚC0|qLFhW$}I":aޮ%=F$#\<ƯHY(PQp$DPTf3Yj8giQYi |s~&IPC@PxSDC뉢;<&tm5Y7Թcu듹R ҸC5qQvN7H{LSvOuw)1㝥qo.NFQ=Lד=ljن*/*Z5>i] 5l(́,$*ޖǡTxamhΫ(h@ri 3MK21L ~E*:nfPUru3áyf{ "nɾ!hEYNiI]`6reÇzT Scd:/4+_wnnɲ[zoTV/n4c.?[Yr&. dtVSl2h-NfM\M^{-” R'xIB=B=^AZMcNܚ,]R~55S,wB.V!X_M0~Ojtb4MdY ;\oWhȴ&R&#@|^VZ |ZiM:1Y>>;?fMz"3)/ǕW /MJBEBD[?ԱLzr e+p^ݴTVɞ>{;Bǝ{i8;ڑHB^Va;/ђDXn,Dח 3x{bDHqJ iy2lf<ܝMIvyv 8]jȚАCӕjhDxbxNW+Dheqz"Sp 㐪: /? 9x0mfvhxO#`3r<5n󛬺S}z{-CzH Y~eh0ŝB7ZpeOq 2c3ԙ -/.Ey>y]F]*(1F>7W!}d2N VQ\D$Ns64T׷ꛨ QfTlc43U`N%G+s2"$5$l5AG^ZDdbLbQ۫ue.Ĥn&J\L0(|a{tXT"XZ[%_U~;kx*:9YRe,jhm.N.UHJ%O ܼ^eM|ac(/ K TQ039Ȼ2[ƅ<cEmg:Ļ")lp=FB6#Fw䝰\H0L|cC0&>aaQF-Wڭ9HU-]pu!j'ZQzɆAR" ִh2(Y}ϟ)  QcbNYoa1bT7vs/Z kW*$gZ@. s& ͣ.JoSSB\'x>` ѓwG+ +;GExVVcq&0E:aLvvvs++ G[W77\yȎ=^}gB7TY#ҋ*- L}qKOOvJ6Wpnu&25Q\ULN71x咋8 Py^ȁ.h)Zdyxd`v|3 W~Y707k:< d0m-"PԠUYiky-,Y/F"Y~yux芈OT-|*#x^X= ڣr.][*fEU煇 _%G/#^VCjQY5xHby[=%fAxGfiY--ڟ3,09L\ vmZZKCՁypqTK};eg+Ogg'&fp쿼E  ,7Tjkk:;wddvwr lP? wcc>9I ȧ.Od>7eZjJ=b!D'`"Pz``!ǵT֠~\a[QbH\xpgVLl;YO0SWs,j&gŲ?O~}Xu8&6kz!F&Fx<"%%wcQQIU `˼bro֪3NN(!Bd1Ǧ{3m.D-~V6ΑeH@HU? {nsHISт9H3NY&i e(n^ޓA9G|UbE?Kl{?M xO[RMY}+FfAU333=:*^hޙ ,*[7U2ӖlX?HSTȯGg>vw&'gy\I#>3 !6]k^}2.#2GKk Ԛ# > t<'%4ECT_\7m).Ydh>ZsE+si$N#_ݶxqNԴ92g4bCbknc;qfw/0pe| avr"wN9&~I:JZ3;XQ<8[໿7h=F-Nv,L1ZVx>m#2J7f!@?l oXak>J'!=ž0dO]2]&ہfa ˵KwohȵyÓ& ř=%Rrrz+MIYS#B& >݋Ƭz['| {9X0,=8SA:}+P"nu>矝|[*# 500X'iT |gIq|BSeg#QT=ZYVjOޢE:td:]bJ¶x v屫Rg mÀ%aӘ1bLų(1:6v;H,k1 HO۪ gGp vO<@+j pDmF}_ *])=FYg}m8jp\Ծ9y;7'R,9X @' Yx16T\*A{vv6*[YՆX[<SGجɿBihdv^]1j* MXrN"imw-K{r󄅧YH+!l <"R^phq`1碞#M@˫#6p)o7|]1LD9Pgq eoO& ٺ`VSlR]h-3 3"ϲBҗ Y޵Nv+޺`r1l+QcL## F2A.~1݊xrN7!F'6H"m΋=Gv~gݿp1aɣ$Vp*K&ˍ.╱X:GlE{fD[>h{h~?!hPME/{Tz cry? 0HFr4u|Lb)p<x၁/y*Qur8Q_X=8ޯ;eJLpήnF&72X{-ޗh3AjfawĩOy꣓ NL`yLJ:^ȼ<߿sd;:6yaOj >_=ihu8P>$fϾ lyBK/Uؐ673;91GT;Wt=ce=: mBjZS&HQL,%DrY7.נTjM` ZXUUˋIxP0{~}(7엌5sj188tw5`ڢXI -Y&*KKy gD/*Ny}ڦlm}#}6ZZQQ0cDy3ŋ{#oa˨4SKOSl,]_[_ Y^6j{fzz:,`xxk` R%.jXHCS0iS9(e>rB]thf8 _(ť )ŕtdQH7B?AFCJbVz1yW(sHX~jSkt_9^ŅP_78 7XuU2)jVvwͧh+^0os3~ (\ǣQEN<ƉG~Y]u4x6KWe@S|,^~8q}gaԆIjJgu͌z|X>EZm~gg3VMLO'''pf2RTgU.^VbIQ̜=TWD);= oecw4)ޯ ,cbkJ_|dkk_jj2Bb0f64#owr:u8&އz/?b%i_>yvXZLj#ۃN务/3 _DDtI!$Sp iאJAQkq"$ a*1a2ml: #9q{0J9O 3lkSFzzmӑ>x"T匿HUq133X>4AY]FK -J+ǣbd204H]"=].EZWXXXtfqɳ2(2@GF 40p4akVqNҺhZT=曉<k˗{"M͊+AHt낍7{l]\l0Qc)8~syQV{v=k f#G'9 x9qlAEM0UY`Ԥ^ 8 (eT$s}jKKշpM{!8~anH)ΞH-q[9H mdϤs"zmhD)%M@RZLN)eEYgljY!;o94NͺyeIn: 2(gzsL߰WFzA;VX9-[r 15EzIݳR}Trc5_>%G~(tYٟM(YqHųn\Z'wy^5"f:sCXt#ҥ"d ý S&o5{{ ɓ/>3A_?uf]QR0^ŬV0tcŎa6|xp;6֝}t#hx)ʸQFϣ=*tM$v&{DɯVq9r?"lL4o1% zSBUXANN@-NL_˽y;:_)Ʈ&iCC8 /$mI!,)sȑ@h\Sr)I-s/ۦyvAs;d |qXgi07 1N}91'_ c[^~~>:kɳ!DiY}9+#[*O0 "G&oOWf'cUU`ZFubeBN;o^bB¨# MLGȨemׯָN?s k֬٨H M'l=7]e‡߾^@ vrrh~2Gۯ.>ijCK.t{ݙU9*7 Ոw d^}|׫<,uի}C2ۮ^î9&Tt~ð&W_﹝vmmmA]NjF_ߴ+Cso*Gl!/&.',XODz U'=p)0>{O{{!|kﻵ.lR a㥉k'N{5xz_͜悜}m54Ԧ}sYVo[Ui;&\koR 4o5:0!ۣlt3mIs˯s?fuԬ׿q0S^v*$,+C.UgqjMm_Hؤ1}fl{Fg9LA^ة 2õ&sX: *@߸r/];{Ǣ?U %O:tfK |LfȐ!f8 `vJ}/%$R*QYA RT}]ns鄔}9/1oYCtXu cp7^?&oՑ/n za8.^%%O>p%j sI}+ .fkb{m4p<wRلP㍄;Ene:/{mqRU{QY9/;1q V\0tm~@{ 2`HgP> AiZ)^{e],;hٗARx/tq;kr& wܿUp<ӗ~r4{*;o߷M ^A]?/Q,29IOGBgrI~)(ikCݵ-)J3\m= *Ϥ`m-D&]==3A!/C=md;sP2Qm st^ `Hu|: !Q\<=!:C$}]]#m=]m==EN* (_FeZ8jN!l#Z)+aIL !uw39&3,B`Ea4PY(I $"Y:r&sl“("@<>(6Ywp{PٿF) drE >NT& ` ,:̓ I C҄= x! &Gx"|(xdbkcmiz2}4Kop<*CX9IZL-; 0BtÇB<&՟@n<RLH!# 846bLN(( Z$w~eR`a2~w#hft&zaIh%; ```NSJ?B>k!bu Nb#tP~*;5dե}R1 AͺŴXP 09\BaiC$$bTMN! HM!m#u kv.s:L0B8uX %(509bcG:0)Y<\a3@GØ(J@v`Lpaz=60p- $N`L ,@|0A8T_1"@\eX09((Aʣy@| Rh fPu ̧` 4.+|\x0 PX8f҃@rbQ:, @iY8 8Z(%@4=]}cg;Cw|5C<=&wǗnt1gg(e`j1 D b4["hD->yhT\88 '37 Zzbs2@0Eq٥^ j!YB&p?' ]p|0 ,,b:P<+pg9e舘O_#x3&jRCz}(tUɪX OY*X 3cʂx+5WU z#c=@7??SL1zF!zvK} #DL#tQSP;hr-l<%%-Єbe5}%`8kHWNaZΕ+v"2ľ3B芅x| $Jܞ1H@ @0' =cAxA | b X|f׊<V3j5,o kIx3I_HRN<q xF"K 'f39MGZ{$ 1*H 2Y$.z}D-Q(^ai   ?#z;wUtK<d7]Ix h((`7?*wP!ӟGz?(*nm` IeJVC`3 (@G )H@F}Jҩ}T$DWN I`m o}|>|z'y'F2@kMe  pu|gώCW|~xHOG܍Q-y"Pȡ 6SQ;?`o)c/[t#vD_E< & u80r\j . pC@ƘEN P -63@F9(&ѐD¿ן8E)#_?Fx2?+7'mG{׿A>kg=\a>;%>e]@euأ( CAKM|b8aژ7 H-f?VQN^¬k$:Ã+=R33h<bew_r|ٿ? u M!6dKvҾ7p[~8B4sqEDOiPDg fȜDO,YNBTP bs;@8  Q ⿞> ⚢Dj(ʃ{VFW]\?7y;g.2fq%d[l_ac}h>v8}D|jD94XdAZD9Az*!];NJOb]uiQ'FOT=rIG7_?H0HqmP WzJ }ðuyJ O\\aung.yn2,ׁ||$ *Ҩ\{2@ a_o w[X:틡~oV8CWRy2|yFȓmf g'/ogDobkq`նHB +#ldr߶%$XqwfS<$4wȉt'Nf`oaڥwxJB};B;Us@&^?ʊ#ͣ%dFx<#9sm.W[;kCy`52VryYUrӋ'n-pq\5 RpV?qīˠe'a!Tj^Lnk!*#~L`=uKU'Lw[b`Me;Fxxs0? {ORsXtcEϟ'j4˞9~RAG9OC^Ǚ-Bon>p|[dc}eUj^$6۶C^O\aYSb d!+ ԖF: 1ޱzk斦7#~N';\d]àt¤ʝy 7f_+5qњ%gl=;Ga5m;y^#D Ff[TLW5LTy 'Ř}{]\tnGEK/lMsD\^<)&Ԥ\ yz~)h}k*5jf_wX}n$ʆo62w6_P~4N_t}j`eRC6ռѺ2>pOE٬a Q{-P{/*&yQf+G f tL8k戱G>d,Ij=E`'T4-X/MH0DSأWYn4e9xьFm["B-k݉FTZp<:2>&[:a)qċSn]J{cFW=8$ַyUwhq̫ViU%Ke54HuxBY}|Y"a;.mָm|v:[ְ'nȯHih\”nT9411.[H?*C+9m\ \6"ɐ:\v8)r9zQ`q&E{8@pTP\\evCYBrrsyreRn[?2;O}͟a_~b R3+O8{}åe"DKG~e9F.Jx1k>m QtFU R邃KLJprcBl&k7Po`?meyڄ GdS-Uҳ7y.e3]y1%{> *vIP÷-YOn*9 ox#wTG̒amsyzE/*|kȶLGt3Ν4kjb́wϥz<:tFp\hu{R+Yʺi3w Ƌ.{af3s2'܍[7aaӃn6VgCϏɹvY:8qpqB=w0{P4^lyy_6=|!hftu٠eFMA,_a֢,MP0zdb1. K5毸J]4k, rj/r*'ĕ͚z옞 II7VΖ, [ii)%r=]8I6Q?rl"Y!KՍ09' N544Oqa0m6+Oy[9"IҜ/ ^Jm^qZx>Kuh=MU ə<ͤ޲v_yd)"vٯ)ϚZkA@TI]_ǒ- W{NYw9qVDqήIF'Eȥ.ze\]~cev'h뱁RY6iZFl:x.[>q϶omҮfpETDў"g=2MU~ V:>:uwKJJN9Us,3]6Y|i X5:v •nEu| y2 _[MEMO^zxCJrK溈{&0˛N,*-^,iZu_2x ]zM.WmoRw IoА36޿?q;$IidiA Ė_Ï9JJ@Hy /)@s?`ZjFu) x,~0 5d==2  {ܶgWA`XRl9$m "A EpR"}s~uAhUlGݓ|‘ h|\,rR"{0ZΡt!EzZV -zqUǥ:As_&ӥ/^]|T`,Xƹ| pjϛ:F_W4OߒR/,uxRǛg̎Z(>ƹwBpΗ8; lE~,]NdL)גxK]6\P`5 (|~AxY2JQ'XӏJQɨ4R(dQ+`Kzjo(C kxX훮o=\gZ s6#kF2ˠbwp/C[$ʯIrrsw9KPR`UjvLM8v|K Ymݒ0[[@/uVl4AK0PGgߔN(ãKʅ&-johxķ~C9Z0!/FbܲY`emΣmtθ A`"פ@CJcF2{6"Ama%x, ++b4lһFÛuߊ2i#O"\͢Ӵ[c>zn`z ?sp O+ko@=qSfXd,G^ؾfuuMj(SC.f .R|Zq &j*WIdϵw]&LPL (z~]$zx8yBYplYMؕ"].F6ՃKՆ38`{PX\slp l Lƻm8Cfx1g:}7p 70߁W=0U  ?lg=ٮZv`e0e\oCVerzp ڥzչo yA@ڡ 2<'H9oY]D{჎#}׃庐Y `pz3`ﻖ*dFz!9M98黠.*ʠׇvZrm{='dZ~*ʆۚcx?ʶζ69`KJtT4x2-f r;0Žha]!h`~ +a2 `s{V`<2Cϻ;UB]h50+ĸƗ8{mW]:y98NPya␏8pMы0@[yQ&-o`@>Q.\3F k&,dAN8_t 8$* ~*%cM Z~bv гKvei/]>8=A /A*za t2C%OZ' }0?)Nsg[Kqu}%)6%tZO=' :(AQh4Bo:?O?Z27!yU1儍UoRa#h2#\N'K(*tc?C;a!oi ,ǘ$}QC t϶Byf!|MiX 7[_A)p duCGUpB7Ru rɨt)LtKQA\輔m`ܩkYEcP\/H8(Ēr&NGk &D=[sY#!rb)0VePQF}>T۠1nЯ+f D)q~[s!n nH~p6X(8%LH-2<_2~RT E䨈J4MișM2z^(aJcG3g'ߟ>;Vomױ\GEC?3Gy!}>[;#l^|w񽩠OV{B7R %10\ÆιPQ.+pD1=Alt([jB3Fa`G]dF -=hJ>G~UX?SU)s~Û5;߻3J!_tT V󚺯r18FI<:Btm9p\@': GWQdqc9S|EBBQ< \dőґ8qз}xc3vcxz1 YЄ/QV#''xPJL3~ɓG@o)x,(i^&D @S]gح z'@@ ߹ ],V")>"1O;\tp-9l6=Ɍ'^teft[roη](LgQm|oFv˟ L]<s,G U- ]Fqb[cr_-tV% w6)GB?*yhF#hA;L)W 8rHs7X Ҷ2QQW5VB40/ 4$'nur8FU@nxZ4A[q%8vC_}Tg s!e`GG\DIO=kS8ט@ߗDזr虉G_M$-|A'7LJÈRHϿfO./PAʰ9Ge)MS!9NA#v4Մ>Ӗ9Xf>2{ 0ɕР&1OLfivlcEOGSpk*@kq+EooT6x]b `R0bWp!\U:w%:Fq( QO9?߬X%x0Kp50U2Ag48m;g/~c_tCx`4VJZBhG%"O>CZpo !M}ai5}` xw%a %& +LF7G"C66<Nn[͕y j2Dwh(!5x<jBپYe"j.n.î@E"@43 u3,Bt`Ao> 9Ḯ&X0\ 4)WS' Ӿ4@\8QCc޻5ѧ%oC ~CCe]>ޯGs]aaFizNjɜ9eL.OS\88 p%6U0GXɇ'vY,xso iZ;oiz%>|H{CbV]VK|P.P;0p8+U_ne X5$pw.6._N3.)ؗ\Z${V֎6Ⱥ`_Ӎֆ(ŭ j"&]FM3PS=sJ `P,xB9$Z~mee6Z5Oi'{VR%-n;y"pF -P]1 q9B\e}wYl/E|狋?pxĵ)(#Nu?(ӆt_(RHO9,?xzv .ֲ@YYJss[lym(k֜v{goEPdhFZdڔ&JTb{R[$Zgu-i|RiTm;P$QY|bT5PBp^_IYRe$Nח:  J ^0zG5]!}wε1jȿ?h+8 hPڬgf4NO~ľ7l|K)8߀.NR-/JQB}onqvU2l_v6Lq\<mIS١.@.yĵ1flbi>)6WU`F4,s]rtĀYVXi8PѺ;A SIv63`Lר5 Ih˪pOjSHs&02s:4* PI^.~rbM9=̊/H(,̖3-{rs"&w`#wDBmLw"nxrPMKZAa!.|&5<.v{( [ZǨ'Hɝ.v Qme>̗i3@E5j*PѪ@bGjPQ *RHyLQ8eχ5g_ Y&v0Z-9Ј]Jui83+)iPk:#K5%C͌F?/i\d+Xkņzj8ӕmħ誆o< t{3輍j8x0Vܫ]\Q㢆t4.7@)F`JJwimhHrlVzKbND/]xڅ Hݳ~v{n;?n -ŪUE;vJBjʝVP.I;XJˬΪ -В2y~1&Zeb b)exJaYԼ^T-e;SZ?OgσғV0p\X@I B%P*xx* :BPtYU0X-ԟ/Zj@[T儨QbquA\yQu`W+JLyiŰ7PskQϳ0Cc{nw!v y_Wb%YQbļZshDDz[.D&cf Ɇ#0^#ٯ@*}LLH -9!)|^ۿiX=m vn%w ^6(P͊.~J2RMߍ+÷v ,=0X&Õ+XS@`K/YV#e;.# yc`nPc#g3{ ^D=Fn<^8V>;7yLs꒓Pd`@kv"+NC*AMpʥ7NdGxEr!9E\!ӮMZqۋc{w{hu*h6"bjsv !:zhY±q-AR71UhjN0FrM~A ԷY}+TqAM .u( >DFƛ (V).W嶇Z*ܱq2?׳KVZ#H:gJ~3sz18>-J&8a6XjsGႋH@ ](=fO%7_Vr EsL|.za7o.ܢ }`-P7C)AeLH7a蕗%$4QXЇIY&L'wp;7- E@w}Ow)޼f{Mfo߻~˛68XFSKɴJȥ[&/׉ʞJ0F*w@ru6! N>DރT;˲]IZ1m°9v~;v2V´c0qaD~_ΞaΝ)?qyL(eoh*A{)7 pI)o5B4VXX Qoް4;"a5PH4P= wO4y`OJ,8[=?l'PluO=?)nm EѪcv~G1S Go>yYi±-q \@"{Edx9y6 \㩀۠;1<؏qSyLaJuP #g1VApn@,7n|YV!Hw!+wU9q* X3U P{3':.[W vKǃyov?ɓ5 wO==y@a+ ϑ{'~W,-S"1Mh`܎SLڤϾ\\ 3%?FC @pBP?4uL{R T 8峾3k O!&FY¾\}bD:o tI|Mt`GA0jD ΟJ6؊Q`油rX-j,lyTT/UYgr m,0]c6[e-Xֆ? 4&t$e)ƹ$q7N40yv@Z-'0M޾$P9?G fbɪcZsEϣf6_$X5ϛ6]zN&b3MOe?OC=J߯D%)ڙ ?=XⲂװ9#4Ñ7=^[x 8-%O}hG˲?o ʙ9/UG,fws#Z ۋIxbb7]Ƙem1 V;9%{>m.#bj܎mmsȉkw@@ٺ(EDy(E P8JaP檈6Tqbvl*WA+ә!|D1M§I$ MdnrOa{BekH/~5YZ &&i9d"Ҹ5j'n)6؍{e䣒10jq֘hIaYCd$KDXo ΊC7A".wlZ`s-~s2bA<NFrC`߉&9`>$X`\4*Q4qݍS5VmuĠCՋۮQ8/lԃ$~TP(Kg+UW%56(߯m]Khԙ,'|3EK“iLӧs`{]Rԥ.uK]Rԥ.uK]Rԥ.uK]Rԥ.uˣYlybniz-3.0.4/Archive/lybniz-ip.py000066400000000000000000000450511343532221700167040ustar00rootroot00000000000000# -*- coding: UTF-8 -*- # Lybniz on IronPython, Thomas Führinger, 2006-10-29 # released under the terms of the revised BSD license # To run, type: # "C:\Program Files\IronPython\ipy.exe" lybniz.py import math import clr clr.AddReferenceByPartialName("System.Windows.Forms") clr.AddReferenceByPartialName("System.Drawing") import System.Windows.Forms import System.Drawing import System.IO #import System.Resources #import System.Reflection import System.Drawing.Image import Microsoft.Win32 Icon = System.Drawing.Icon("Resources/Lybniz.ico") class MainForm(System.Windows.Forms.Form): def __init__(self): self.Text = "Lybniz" self.Name = "mainForm" self.Icon = Icon self.IsMdiContainer = True self.FormClosing += self.SaveSize self.Load += self.SetSize #resources = System.Resources.ResourceManager("Lybniz", System.Reflection.Assembly.GetExecutingAssembly()) #print resources.GetObject("executeToolStripButton.Image") self.childWindows = 0 self.menuStrip = System.Windows.Forms.MenuStrip() self.fileToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.graphToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.windowToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.helpToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.newToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.closeToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.exitToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.plotToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.aboutToolStripMenuItem = System.Windows.Forms.ToolStripMenuItem() self.toolStrip = System.Windows.Forms.ToolStrip() self.executeToolStripButton = System.Windows.Forms.ToolStripButton() self.statusStrip = System.Windows.Forms.StatusStrip() self.toolStripStatusLabel = System.Windows.Forms.ToolStripStatusLabel() self.menuStrip.SuspendLayout() self.toolStrip.SuspendLayout() self.SuspendLayout() # mainMenu self.menuStrip.Name = "menuStrip" self.menuStrip.Items.AddRange(( self.fileToolStripMenuItem, self.graphToolStripMenuItem, self.windowToolStripMenuItem, self.helpToolStripMenuItem)) # fileToolStripMenuItem self.fileToolStripMenuItem.Text = "&File" self.fileToolStripMenuItem.DropDownItems.AddRange(( self.newToolStripMenuItem, self.closeToolStripMenuItem, System.Windows.Forms.ToolStripSeparator(), self.exitToolStripMenuItem)) # newToolStripMenuItem self.newToolStripMenuItem.Text = "&New" self.newToolStripMenuItem.Click += self.DocNew self.newToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.N # closeToolStripMenuItem self.closeToolStripMenuItem.Text = "&Close" self.closeToolStripMenuItem.Click += self.DocClose # exitToolStripMenuItem self.exitToolStripMenuItem.Text = "E&xit" self.exitToolStripMenuItem.Click += self.AppExit # graphToolStripMenuItem self.graphToolStripMenuItem.Text = "&Graph" self.graphToolStripMenuItem.DropDownItems.Add(self.plotToolStripMenuItem) # plotToolStripMenuItem self.plotToolStripMenuItem.Text = "P&lot" self.plotToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.G self.plotToolStripMenuItem.Click += self.Plot # windowToolStripMenuItem self.windowToolStripMenuItem.Text = "&Window" self.menuStrip.MdiWindowListItem = self.windowToolStripMenuItem #self.graphToolStripMenuItem.DropDownItems.AddRange((self.closeMenuItem, self.exitMenuItem)) # closeToolStripMenuItem self.closeToolStripMenuItem.Text = "&Close" self.closeToolStripMenuItem.Click += self.DocClose # helpToolStripMenuItem self.helpToolStripMenuItem.Name = "helpMenuItem" self.helpToolStripMenuItem.Text = "&Help" self.helpToolStripMenuItem.DropDownItems.Add(self.aboutToolStripMenuItem) # aboutToolStripMenuItem self.aboutToolStripMenuItem.Text = "&About" self.aboutToolStripMenuItem.Click += self.About # toolStrip self.toolStrip.Items.Add(self.executeToolStripButton) # statusStrip self.statusStrip.Items.Add(self.toolStripStatusLabel) #self.toolStripStatusLabel.Text = "Status" # executeToolStripButton self.executeToolStripButton.Name = "executeToolStripButtonName" self.executeToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image #self.executeToolStripButton.Image = resources.GetObject("executeToolStripButton.Image") self.executeToolStripButton.Image = System.Drawing.Image.FromFile("Resources/Run.ico") self.executeToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta self.executeToolStripButton.Click += self.Plot self.Controls.Add(self.statusStrip) self.Controls.Add(self.toolStrip) self.Controls.Add(self.menuStrip) #self.MainMenuStrip = self.menuStrip self.menuStrip.ResumeLayout(False) self.menuStrip.PerformLayout() self.toolStrip.ResumeLayout(False) self.toolStrip.PerformLayout() self.ResumeLayout(False) self.PerformLayout() self.DocNew(None, None) def SaveSize(self, f, a): key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey("Software\Lybniz\Main") key.SetValue("Height", self.Height) key.SetValue("Width", self.Width) key.SetValue("Left", self.Left) key.SetValue("Top", self.Top) def SetSize(self, f, a): key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Lybniz\Main") if key is not None: self.Height = key.GetValue("Height") self.Width = key.GetValue("Width") self.Left = key.GetValue("Left") self.Top = key.GetValue("Top") def Plot(self, f, a): if self.ActiveMdiChild is not None: self.ActiveMdiChild.Plot() def DocNew(self, source, a): self.childWindows += 1 childForm = GraphForm(self, self.childWindows) childForm.Show() def DocClose(self, source, a): if self.ActiveMdiChild is not None: self.ActiveMdiChild.Close() def AppExit(self, source, a): self.Close() def About(self, source, a): #MessageBox("Lybniz by Thomas Führinger") System.Windows.Forms.MessageBox.Show(u"Lybniz on IronPython\nVersion 0.9\n2006 by Thomas Führinger", "About Lybniz", System.Windows.Forms.MessageBoxButtons.OK) class GraphData(object): def __init__(self): self.ConnectPoints = True self.xMinText = "-5.0" self.xMaxText = "5.0" self.xScaleText = "1.0" self.yMinText = "-5.0" self.yMaxText = "5.0" self.yScaleText = "1.0" self.xMin = -5.0 self.xMax = 5.0 self.xScale = 1.0 self.yMin = -5.0 self.yMax = 5.0 self.yScale = 1.0 self.y1 = "" self.y2 = "" self.y3 = "" class GraphForm(System.Windows.Forms.Form): def __init__(self, Parent, childWindows): self.MdiParent = Parent self.Text = "Graph" + str(childWindows) self.Icon = Icon self.Size = System.Drawing.Size(520, 400) self.g = GraphData() self.SuspendLayout(); self.y1Label = System.Windows.Forms.Label() self.y1Label.ForeColor = System.Drawing.Color.Blue self.y1Label.Location = System.Drawing.Point(6, 11) self.y1Label.Text = "y1 =" self.y1Label.AutoSize = True self.y1TextBox = System.Windows.Forms.TextBox() self.y1TextBox.Location = System.Drawing.Point(36, 8) self.y1TextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right self.y1TextBox.Width = 200 self.y1TextBox.DataBindings.Add("Text", self.g, "y1") self.y2Label = System.Windows.Forms.Label() self.y2Label.ForeColor = System.Drawing.Color.Red self.y2Label.Location = System.Drawing.Point(6, 37) self.y2Label.Text = "y2 =" self.y2Label.AutoSize = True self.y2TextBox = System.Windows.Forms.TextBox() self.y2TextBox.Location = System.Drawing.Point(36, 34) self.y2TextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right self.y2TextBox.Width = 200 self.y2TextBox.DataBindings.Add("Text", self.g, "y2") self.y3Label = System.Windows.Forms.Label() self.y3Label.ForeColor = System.Drawing.Color.Green self.y3Label.Location = System.Drawing.Point(6, 63) self.y3Label.Text = "y3 =" self.y3Label.AutoSize = True self.y3TextBox = System.Windows.Forms.TextBox() self.y3TextBox.Location = System.Drawing.Point(36, 60) self.y3TextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right self.y3TextBox.Width = 200 self.y3TextBox.DataBindings.Add("Text", self.g, "y3") self.xMinLabel = System.Windows.Forms.Label() self.xMinLabel.Location = System.Drawing.Point(266, 11) self.xMinLabel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.xMinLabel.Text = "xMin" self.xMinLabel.AutoSize = True self.xMinTextBox = System.Windows.Forms.TextBox() self.xMinTextBox.Location = System.Drawing.Point(306, 8) self.xMinTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.xMinTextBox.Width = 72 self.xMinTextBox.DataBindings.Add("Text", self.g, "xMinText") self.xMaxLabel = System.Windows.Forms.Label() self.xMaxLabel.Location = System.Drawing.Point(266, 37) self.xMaxLabel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.xMaxLabel.Text = "xMax" self.xMaxLabel.AutoSize = True self.xMaxTextBox = System.Windows.Forms.TextBox() self.xMaxTextBox.Location = System.Drawing.Point(306, 34) self.xMaxTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.xMaxTextBox.Width = 72 self.xMaxTextBox.DataBindings.Add("Text", self.g, "xMaxText") self.xScaleLabel = System.Windows.Forms.Label() self.xScaleLabel.Location = System.Drawing.Point(266, 63) self.xScaleLabel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.xScaleLabel.Text = "xScale" self.xScaleLabel.AutoSize = True self.xScaleTextBox = System.Windows.Forms.TextBox() self.xScaleTextBox.Location = System.Drawing.Point(306, 60) self.xScaleTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.xScaleTextBox.Width = 72 self.xScaleTextBox.DataBindings.Add("Text", self.g, "xScaleText") self.yMinLabel = System.Windows.Forms.Label() self.yMinLabel.Location = System.Drawing.Point(394, 11) self.yMinLabel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.yMinLabel.Text = "yMin" self.yMinLabel.AutoSize = True self.yMinTextBox = System.Windows.Forms.TextBox() self.yMinTextBox.Location = System.Drawing.Point(434, 8) self.yMinTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.yMinTextBox.Width = 72 self.yMinTextBox.DataBindings.Add("Text", self.g, "yMinText") self.yMaxLabel = System.Windows.Forms.Label() self.yMaxLabel.Location = System.Drawing.Point(394, 37) self.yMaxLabel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.yMaxLabel.Text = "yMax" self.yMaxLabel.AutoSize = True self.yMaxTextBox = System.Windows.Forms.TextBox() self.yMaxTextBox.Location = System.Drawing.Point(434, 34) self.yMaxTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.yMaxTextBox.Width = 72 self.yMaxTextBox.DataBindings.Add("Text", self.g, "yMaxText") self.yScaleLabel = System.Windows.Forms.Label() self.yScaleLabel.Location = System.Drawing.Point(394, 63) self.yScaleLabel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.yScaleLabel.Text = "yScale" self.yScaleLabel.AutoSize = True self.yScaleTextBox = System.Windows.Forms.TextBox() self.yScaleTextBox.Location = System.Drawing.Point(434, 60) self.yScaleTextBox.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right self.yScaleTextBox.Width = 72 self.yScaleTextBox.DataBindings.Add("Text", self.g, "yScaleText") self.Controls.Add(self.y1Label) self.Controls.Add(self.y1TextBox) self.Controls.Add(self.y2Label) self.Controls.Add(self.y2TextBox) self.Controls.Add(self.y3Label) self.Controls.Add(self.y3TextBox) self.Controls.Add(self.xMinLabel) self.Controls.Add(self.xMinTextBox) self.Controls.Add(self.xMaxLabel) self.Controls.Add(self.xMaxTextBox) self.Controls.Add(self.xScaleLabel) self.Controls.Add(self.xScaleTextBox) self.Controls.Add(self.yMinLabel) self.Controls.Add(self.yMinTextBox) self.Controls.Add(self.yMaxLabel) self.Controls.Add(self.yMaxTextBox) self.Controls.Add(self.yScaleLabel) self.Controls.Add(self.yScaleTextBox) self.graphLabel = System.Windows.Forms.Label() self.graphLabel.SetBounds(6, 90, 498, 268) self.graphLabel.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right self.graphLabel.BackColor = System.Drawing.SystemColors.Window self.graphLabel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D self.graphLabel.Paint += self.GraphLabel_Paint self.Controls.Add(self.graphLabel) if self.Text == "Graph1": self.g.y1 = "x**3 - 2 * x" #self.xMinTextBox.Text = "-2 * math.pi" #self.xMaxTextBox.Text = "2 * math.pi" #self.xScaleTextBox.Text = "math.pi/2" #self.yMinTextBox.Text = "-3.0" #self.yMaxTextBox.Text = "3.0" #self.yScaleTextBox.Text = "1" self.ResumeLayout(False) self.PerformLayout() def GraphLabel_Paint(self, source, a): # this code needs to be rewritten using matrix transformation xFactor = self.graphLabel.ClientSize.Width / (self.g.xMax - self.g.xMin) yFactor = self.graphLabel.ClientSize.Height / (self.g.yMax - self.g.yMin) * -1 gx = a.Graphics gx.TranslateTransform(self.g.xMin * xFactor * -1, self.g.yMax * yFactor * -1) pen = System.Drawing.Pen(System.Drawing.Color.Black, 1) # draw cross gx.DrawLine(pen, System.Drawing.Point(self.g.xMin * xFactor, 0), System.Drawing.Point(self.g.xMax * xFactor, 0)) gx.DrawLine(pen, System.Drawing.Point(0, self.g.yMin * yFactor), System.Drawing.Point(0, self.g.yMax * yFactor)) # draw scaling x os = -1 * self.g.xMin % self.g.xScale for i in xrange((self.g.xMax - self.g.xMin) / self.g.xScale + 1): gx.DrawLine(pen, System.Drawing.Point((os + i * self.g.xScale + self.g.xMin) * xFactor, -5), System.Drawing.Point((os + i * self.g.xScale + self.g.xMin) * xFactor, +5)) # draw scaling y os = -1 * self.g.yMin % self.g.yScale for i in xrange((self.g.yMax - self.g.yMin) / self.g.yScale + 1): gx.DrawLine(pen, System.Drawing.Point(-5, (os + i * self.g.yScale + self.g.yMin) * yFactor), System.Drawing.Point(+5, (os + i * self.g.yScale + self.g.yMin) * yFactor)) # plot self.PrevY = [None, None, None] for i in xrange(self.graphLabel.ClientSize.Width): xC = self.g.xMin * xFactor + i x = xC / xFactor for e in ((self.g.y1, 0, System.Drawing.Color.Blue), (self.g.y2, 1, System.Drawing.Color.Red), (self.g.y3, 2, System.Drawing.Color.Green)): try: y = eval(e[0]) yC = y * yFactor if y < self.g.yMin or y > self.g.yMax: raise ValueError pen = System.Drawing.Pen(e[2], 1) if self.g.ConnectPoints and self.PrevY[e[1]] is not None: gx.DrawLine(pen, System.Drawing.Point(xC, self.PrevY[e[1]]), System.Drawing.Point(xC + 1, yC)) else: gx.DrawLine(pen, System.Drawing.Point(xC + 1, yC), System.Drawing.Point(xC+1, yC+1)) self.PrevY[e[1]] = yC except: #import sys #print "Error at %f: %s" % (x, sys.exc_value) self.PrevY[e[1]] = None def Plot(self): self.g.xMin = eval(self.g.xMinText) self.g.xMax = eval(self.g.xMaxText) self.g.xScale = eval(self.g.xScaleText) self.g.yMin = eval(self.g.yMinText) self.g.yMax = eval(self.g.yMaxText) self.g.yScale = eval(self.g.yScaleText) self.graphLabel.Refresh() System.Windows.Forms.Application.EnableVisualStyles() System.Windows.Forms.Application.Run(MainForm())lybniz-3.0.4/Archive/lybniz-qt.zip000066400000000000000000002221301343532221700170650ustar00rootroot00000000000000PK b8 lybniz-qt/UT x,H',HUxPK̲8lybniz-qt/Lybniz.lnkUT Hi#HUxTMHa~蠵*A[DB$7HU݁օu)D=uiK ;Gl %LC|;[t޿}6b,dglKjFEZpx(dtY 8[nZm4*.X}L5N47jy:\G NAF1>͏z"WwE~AmN4n1ͥ+KĂ~ZI he6qޑN"ȸPhaё8=t A")/L g* EÁbͪY/U̠@+Yۡhf_IC#e rj%%z/9 %s㺬޿lZͷ/;{jƴTBQj憴73p?MdƣE;rD91n^#Qhن(Ǩ59l\˔?ފ}ي1 ꄹBpo2rJFqF'yԼIaW3JڝaSpiNJLh*}XO~u\wPK888mX;lybniz-qt/lybniz.qrcUT v +9][xTe犄5 C|񉂐 +]0dE8fqFfpH |qyj>qI9+`b7%헇q&vʉל(C@x SʛUu.v2k8C P h湾0gSӄ/o]__1{L"پdzy! BdbB7@Oyan_ܒYLǔǥ =.Vdhm+ZyYo Vx_zZ:$ zS.$@h[QӢ*klH/Pp;&ÍsT{Ib#7Ͽ`1?ˍNeo ^230L*vV'~z3qp운ݙg'^7\V@XL 0B} A6n ^ā ._'diE2{GZ! :;a_-80U,yapN$U D\X2q;O )4e赻+rrrxJ4T33|O~gXhk_-~̙̈́G?RfwGvܹ&>޾hj:e!P-RPJ00@0mxqa Νޗٛ/%$!RBH)b:#1L*@`ڳ畆n\~=9\z#7 %*" 3 " %`QA]dIi {LiC !ؿf9/~&v`Q,#дix8q!gyn|||۬fGOJJJVB_/]4l6yj:u9rrU2UUo_tivr\e˖Vu+p(..>_[[XևnjGG?)*2XPԻsp:;].׹+6mvmNG;4H7.UiUjDp뮷 p8-Z;ۭZ[[w_z8~=n_]|i֔1 Sp˾EMfIIɻ۶mcʕ+{=;O?PZ'g<0FN-Y7_5`llȷ=H$v:Dg)%v~I F UWWǏ?./^(ƍ70Us_7{hD.bT\30h4p޽Ν;zg}']'˿ |.'K9 yn:v{011qPlo Ӂ8@^EX[vQg %ݾ8KP{g^B)!" !R*cRUUa2bEEEÝH$3<<m[SS>|P 5kNRs|"F% {NHa0]"krRjB J3TUŋ۷o礢466f4!**\_VTTX9fzK%$2!dRJs>|&0! Y= +bv]7[lt:]9J)M$c,I)B J)'"HJ J)g EQxnnX,t˗vl СCڵk,Q$űc+Rs?qmŊʒIENDB`PK bJ3tkpUUlybniz-qt/images/viewmag-.pngUT جJCϸ$HUxPNG  IHDR szzIDATXŗml3g̋]A RЀTz-,)RZT@(R_T!M~ @!8- zFϼ8v۝vwM>W}f> #"?M`@L\ ^{*ڵkv0$qC,`MMͳ7wڥgO&+[lyv_7=.۾}PeɸeYdIaR*eP"1Y~xڞmgz([?wVxɃn Q~~۷{WCcc榦@gJ3p9& cʶͯi?l8D 4+;w:^ܷo1))(EPj*#Bl:`۷ʶ6\~y?}||h͚R J Aa@[.K;::6o/[|RR4-( T JN3{+ee_D"_7@oo\8,)!D0aS* LI(EXli B4 iI$, ]נksxd `ygs5T;c@2i`|_kk\PT K]. 566uP+VȰ`<vvرe^Hʊ~/W^N[rJttvv~ڵkZnneeew֭o6557UaRk4':\l!<n{aƍ 744\&=W7v;5$1CIp|l!rss-Z;ϧLﭫN^k].'k\CT:TW.:=翷c'kkkwӉfj`ڎ9®^*FGGfu z߬_*d@IENDB`PK bJ3W|vwfَݔʏI>73K2~ @8@ X H inY.7袞wW|={(֭˱4K;w.iǶm۾rn̛@J9{zz\gϞ}mǎ? iJ0R N2L5=/?~l}ݴ?svBh3RkWvmouuҮ @477oimmɯ*ʤR J)P8OmyQQ|0}XYܹs>#H)!BHQ1E,ى7zl'OdJV.MH !2ABBLd@,Y*(-+߽{wӼz{@aaQ9aBs.&,UмM9GZ7119B";X$6eS<BPaICU d-[9D(*]==c>@tIh4 ÄirpsB#k7M ); MK#ԐLHhOAt ցh4Ҿ __oi[ ݄nua|"%H$W*͹o/q<7{e $3R\ !FOnoj}^ 6 aFqޝhCåXm^Y0x<+%%>_THd%b"2G"hvjɒ%?^|yfLZ]]9qD)a8rrªSdzԯXBu8}qF`BEEp8nݺVߜ&IbBiʮҖCk-x<7nܨ8іO455]V;Iͬ.iMRWvz^-D~~~ŋzTcc㾫Wa)f o=]L^T"ƚ"gSBg 022R r OӶ;wtĒ:"q[ 0/D"`555?ۻwчhVV8ED ad57o0\;[D" t针Ft=xmmm3)0U[* ǁv'sh4z.77Wihhs bee{DW8-[J'J vKߞ+UN+#GЖLTAoĢ]#@:8ԃ |7 RI B!DB$T2Ƥb.DggDScա!պןKݑh xlR Po _4LLIńsRLJI1)&cTU6.]jڵ3ժbح׵WAKDFY=[./|5@Y.H)6NJI2H)IfG0qnHYUUE-; i Ji1r!`BI)A)1( Zn -V\)v-^ʁI;v~:bbbq)jժeTM*$*IENDB`PK bJ39lybniz-qt/images/run.pngUT جJCϸ$HUxPNG  IHDR szzzIDATXVyTe}W6AQ\^+J.,JcizJ\ƭf430s `NXi{.,:rY+~ǙN9ys~ z[`,#bLΜ Ԭ(S⦬9+j;naѼY1EzX4/MPKB{U!uz82gӁБ!Aܻ;UF{y@RT®(pI JHRt"a(9}#/5̭=_#1%3jdw͍a/=6ݭxzz`Z|ԏ%uvI8Rr N|YZ9r=y1{J̝5zIV0*p(M;]r&iq摣v7N86ǫ/SOUxyxN=5pTzfw\EVC cLAYcJ̟ЉqrN ɘʰ(EG 1tV_z(C@ s6mzqDZ6sIx{½puI4SUhimS|U^/ɊŔ1'M56jn}`rM8VzLFnykdlP <9\I 8}9f,, OM9Bd( &wCtx0o|ㅫ 7j b.$xt(O~sٙ oikw&n_~|NfS36?!/;WEG`v'*k.x9L55x|c/k= 6cr\eCyGL8oޯtUa}< {g-[b;ЉF `3ضk>mowKt2=y͡#Ps(rSc#Y1~eSstTȻR} U#Ĕ( IQϠ"hg-~=Hx?\~vl@ln~wcz(]+ W5^TF/ Ji3wsW'r,3q|xhLpZb#O&{yh#ⷿVwO AV^ٲp7 `N_]tzr,HrdŘc^-}[U%O,?_{8N SjM}\"g2Pᔉ-{bvOrIVrjjm.ّsk}x)Nwlb5si3G4EE܂G,{.~S!(npL' <:o unkm@[nD~7(翽⤔t#'{C)|f\.*O !I }lybniz-qt/images/Lybniz.icoUT UHϸ$HUxXYTSG@B !!vH,d!jEEqimqRZimVĵjmSqmUD[۷>sN=G8s @=x/7ߝ9sOEP2L/^*%r ?U@ 3 (6=,3`-.D=!bN)9!qH, Krav Bde4A(BVYIX$e{4ဪM T+RҐ1#!; >-̳-Wб=$h5p;7 t326dQyw @q:TbO`/ZfE.Xiʄ-x ⎫<^-\V$7B{$eYKsGS>#R)r9hNPCzA| mHhIDb9'|ZbDޒ@|UJؓJ8 a:ԉV v˝U`u`q!oHٚB#+ ^m@=G8x#Fsh44nfF#cCtM IZH/!;@;Kc*8Kpx8:hi|vmIeu0Χ9_`D\oʀ5c}&Y7Q!ްؘ7!Gj޵hkL9?q?agFgUd{fo{X,.Ih${QU݁eWVC/A{ɛ sٻj;zkQ{rf}(<|qAfF\٬mZI~q3 z3#N P_E~2̿U:vyY}+2 ~̿dU@VYݴ4 Ϭ랍TG~b>W.kg%KK=xzty#q?dncd0=R.b"\L#C@qhw=o+cfPK bJ3lybniz-qt/images/filenew.pngUT جJCϸ$HUxPNG  IHDR szzqIDATXWOh\E}۷٤!f4m4*MiB)詁ҀMCM (!k(z:݁<ٝ '_8U\D"S1{"B^9tXʜG_4yԷ~v99^ AN>ٻv1oek?:\ iI<#U!~E8i_Ʃ LW@Zp8 E9FߎZ " '':.5yAoWBX[u[#MxoKk_,;dr_o;se뮜KRAps3?VZ6lަD@IDATX͗kG?3?$Ke`bGB F[νr!O)+>ǘ;VV"{ggwxՏru<79UR.pppY@y;i˛7oO:qƊz.0D|rgR)YE>\\Ύz C)U8eȹ u]>eqi3FOAѣGE$I~ʭs](oj@ᖗIӴZw3Aj~A4Zsnsk>q֚4MɲliJ!ȲoNE;)%fs ̥8眵$IZ#9W,:+IZ. Zrŀׯ.rn9s.3S_Ā1,ZSV3^ZG `|: >|$ 1ei$ qcw $PDJI^/Ƙ/KA$$IBZ X^",R߯%'SQNW3 իWT ^J@ 9 ܪʶs2(_bZ4plΤ*>&">Zkj;vww *gϞ}ck8|?FHwA)l8vKӡV?^җP[=}S RnydrWB(pwN 殺5F ᛆّC*O)#0XI"1vBg\bƖd2yNJF5e e Sڡ<(&$:FA)֙ȵ]7_ByA\u.HFghԩjťۉooNoeS]Ɖ4s `~?{U (GTQ+oCA vY M>bR J)FGG>nSP|$-#:' `CCHm2Ea0crI@oG/F?]H3E͟tJy SCz [ ٌzx48ki&0TNt#x-*o }4a#lk۶mOr yNO3 CX{47A˘9DI'ӏJ4Lةڨӗ }&I>]Vbh4tٜ¼H`U)M%xy!y|\iL3glXngey65lgԹr8Ɵqvn B+=ޢ j̵RrKJQaCgSߟ)w8HVq @) {IKpD+wu+6^|ٿH-ZQpО;kjjpܹ 2enL6I 욞wTXPM9mrG,:~fbkjH $@t8]jlltJ^>1b7:Z<5iq `0N$\*X<`wl/w~2^Na$_JLOtצ10Ahj-@uu5Ol' vr~<2CA S`-bg^4v|)6hkn^;a444"u4{P-Bߗ$Qznťo)E@ #IgҼ>NT[KRJ OȘ8&#v~7F?0d,n0j$JWl>s&WƄ?mx{b()8y䧬ޝz/l2HYi^ՀpӉ{\I,&V]R d1A C63/vx%b)+++bYE:lslls+e{9HjU ȍU& 7VX@nrCNw\$dRzRyGƿmIENDB`PK bJ3A"lybniz-qt/images/fileclose.pngUT جJCϸ$HUxPNG  IHDR szzIDATXOn@03 /?#pn i*lrx`K<ݔ&rDQ+4}?xO!5K}`@uF)^4M?4M뺾",{!x}BUy:}XDQt/e}ULydc4M/ȏ^D?u_A #:<x<8u1[eĉwcw8  YY99ZZZڈj BHCC644t벼Y m6BbΞ;i0[B)8稭}Y<333(e0!*a\x~NhDס?G٤-3 1mm&/ׇdgg̬樨/VJ)B}R7!ݼy *aJnȸ8PM=rd 1('Om Ƹ}v6 x!dRR⤔EI!k;et,0MH7ؾ};-x(SU,jBs!Bp%RExg͚_|~znc@|`tܙ>zW;5 z08Wsg}ZX7)^C @ꂖ0909sƘlEM38\pxP#IOt*"?ltg?:0A[[]X !1ah]3c&cs9pstlCMJJj#vX!֯ߝa>X !;#ǎF"R*R!$dL#X8D4}4F'4)--5'##B\Pwݶ;ptJi"4 0Mfrƅ.c\rӣrgj8񸔭۷oz5k֌2B>>I9v WrWQY^Jr5tt44}hٶw11Xٜh_9hvPtiݻ¾v]o˖-{Y9)slV -ϟ>55LggJŋ$axxbM>|#H)ڢG:v[+YSSӦ%;==ef>hnnn'Nplذu…H~yZ|EU\N׺dd(4hv.ٳϠdf8PJ-N( û*CPVN/Ouuؽ{7x EEOߞ{Ã5?tٳOB@)!EEv)#XUU'ԨDQkX:u XpW:tWE#.WQ&v=R "_hn+/%'G%^l 4H)~l VY L RBLM:MNZZ'{͛'󉉉m6t: m/o)WW)ΡtuU|[o!%%彽?Sc֭[ÿR؞[;;3g 7{}@0ڛ<#ȕ+WJ]ןH){(ϘVVVFjjjh0$̝ψJ/[/^ Bt\.dff;vLc=)))ORJw9sW W._D"+c* !,,RJ . !b`;l6{G[tg1#@]]}}}60s&J)+NTAR*0RQUu } ڵTWW[2>>rU!:S~r !Rj*EEEsKKK7.;w`pp! DEXd\z XDaIENDB`PK bJ3)++lybniz-qt/images/filesaveas.pngUT جJCϸ$HUxPNG  IHDR szzIDATXmPTwaE,TP^ ıZ 2_ۑNKfqdTM񥦎& ED|!Ily ,{=mɇ=w<9y79oT /,8R߿:=>.͟<}Ihْc)D=sgΜ>yb>F" l6[$IE6WUUj/_~0$h%=Hk'A?ٻ|‡_ X,EL=/F]],iK&|>=/jn޺:SGͱZ2-Z) (QQyΝCV=Lہ;bA]gݎ5/M`~TT5k<EQ066z477ctth~⨄a+\rG/P?l޼٠( zp{x<4 n}6E@i~]jWnؘ7^*:@y //q\`UHHlBN'ۑJ)( NsX-QqeDɍhNB~\R480E!b1u: Yq(J)4M{JؔчUiǛ$JnkBHuC%χ{@32/^x`')[q w|!C@]q1 4/ ,_9۷oժ*Bֶ?5@NNN(M!9x%b%#p 2HNN "22Ͱ^,gδqEEE݉g%x2+!wXWpx<`@ll܊ iiiXclooQ'^RJeaO#9è{ =}fbΒMEWW$IB\\f3>j5yЄ̜˨÷sVjZcpԊB3Xr EQfx#,TDFFbhh1.Q3ZL~2gN!e~A ((tِe `0@$(SN^vZvIФ0.;vo- K'})QɓlÆ O>9vnn.o۟L0Au9?򌌰Ɔچ_ݐj OIIEDDPYfFabK.*B渥 Had v=ڰ>TvrBS%A4cω>ۛE4 :3BCk NgggcL7Q8pP(|Ug?4GT(8P/Iɩ64}.H1 ĻgSsrAHz.й1o3:`VO/}ϯYzM!`hh:=:kZ#y=cx4P]{"g LH 5 GB*Hi =?zp>(Yf5Q6[Oj߲m}#w_gL (=Xjiht3wz9 ;ppx1J1@@)4yN+k4 i:Һpz "%ׂ͚*\f5\ւH3"\KAa_&:;P/6 2chp~g- kV'aY?ȁZ5Y pR;R@~`FO~-)Ld[xX)JҵwR| "}=gH` 85P856U.wS}XMjT e2MVjn`@}x&hB>,lx`3@tL态S( 2 -X'62FǓ19R} )<[wn\5Ui_yG2|xK78×&B *l >8|Ӊ'h||eY2 Η 4<(@[XC6 Byc4Ӑ"A~!^)h&eKKH$r׮]޽{ѣG)n8w]WBp)%Rr\JH)9&C@\R\Ƙ !""rE9玦iNWWs1<]IDATXõKWsgz c bDxl" E #D$,Y A"UKfb-[_qO׽â{z-#ꎦjwlmm~DGEdÇsⲅљO _cfv8 ;==b]*AA-zȃ)x=EsfYU}n?ι]l=s PU pǏn?V7KKE'Pw6F!"v2Ap pb D@JH)!"#0  fc P!L)" Ν;ܸq^<I s`T Yuj"`xjk׮qMDEZm@V$&V;VcZP!7r8dMdL؄)m]= hR"YBL,1cVwFf 4QRc"3VUĹ1+TKbF$ FVCTM 2&('ϋ=j"FMXT$>|x{O5A`E sՈ1&1Ʊ)9Iu1F:uhbYj.1i/D,6a Q! -DM ")c>F1//7Pay1a9, ?-NAJe7 )ĺ ? 0ۂTOT_"":?ZnKiollYΫpdQG s]MPqDU4(vt:N^zun[o(ZSp*4rT1Yŗ.]*Ν;> 4(ӯ/Ĩj+4%bTN"efDꁝdU8q"sў. ~E^Kw0BfޮǪ[ZZ.\^~,C5pO~)&,%BD( ~@%{*J*`ee̙ǥ:)fF˱%! DceAq׀lD> k"-KXa=!RRBxyy0|z@ 0V dsssG[(+#F%ʿ*$e K- [7煌X]]ŋ_Wa)KOT W(QH5^?@Dkv^xpuu/kkkZ__- l+ . . Eވo+qOgн~Π},k`1ȱ;o>0/;WVV֞OջzYY*. ӭfhf{SSw.WҗIU?^G{:t˧N׾F:4??lF#;-ҷt{XHןnzG_~G]oӓZ"zTXtSoftwarex+//.NN,H/J6XS\IENDB`PK bJ3lybniz-qt/images/stop.pngUT جJCϸ$HUxPNG  IHDR szzbKGD pHYs  tIME *=rIDATX{T?;.‚h[بM1e@$cm1FCĦR5*`ϤQ(ZbTykwewٙ;w{Ǭ 'w~r~߬_P0;%M lH@]$R+lcZ>ߵw\_}3LʄR_<18ػk[~ݼ9‘#_@7s wmsD j.B+k.#Ž/n޼~;_|~u?r;)dծ=o"B uM#aɏ[?|nM\}ށ/ TZyu+~M% B)%$@,jF' Uܷom=vKWv;  ; 8I"It+ǫ?YvXu3O{ٔ?:wIDJ0E8QDE$qLII1IPKEOPP+[0xr|N;7Kw #n ՈÐ(\9{70Q!2 ) \Ce^djxc'9oU ' o\y M>T=8â5k %K8{7I?aP6`-qA =VcC4u_t\-mǻ{E䧯}ɉYïnëV*ŋ|Zخzw7ՙ3ѕ"'k)OLgeh=UO;=hk&yK] $_O#☠TV.OΛqt5=sVPi+WjA0i^R곝I$(TN7b #$:Z><$Z[OU4NK_'8I#I8l[czY!+rT+#胃$!EDQN}$3 h8fIE'*YYV2aʛ6;F$qLEIfMTH< $RQX@J꾏y\l]RA.IK9S}d#LͶleųzu?VLM.O?N#=9U>-B4:qK e5Ͷ12(NN>+@m?U F}t.G$a(qL膁A[oE S)49Iٱ@\}wq2jMMðm:.LK $hBD;֮eǚ5׀0 $NYR,F*9b QPJeP#gs1mq8e ^ !dRinaaſnŚ ܌͒ikL{'>}m5}03 Ӳp`u^owMfINycF /`kiNqY]x] 7t 5GޤmF'BuƥdN8EI‘!y,i"OkwhSYf9٫ohvOt[%ض8XiY膁iy`*e8&R,N륣4z943[vO[.g[e5eeBB4eQ:|4 _g5d0MVͩԜfaea6e5 Jc}ڝ'5xf/1/&z}~]}m\{EӛgsX[3QK|P{ 3Cꭕk_Ǥ+(ڦaG!iJ9UtXc>͟f@q*9IENDB`PK 3/nlybniz-qt/images/sheet.pngUT ,Bϸ$HUxPNG  IHDR szzIDATX1@q"8aDCA(h) ?izg%R@⡰]_R\Dgw۷o *vyNѓgWU5%]|||<~ޭ_^p+ ,P(&{[+]._~{A tpe F2L0/ NJe_'T0EQ6sEݣCijIis}0L U*-e)^'NFIB3/)` *,6jDޙ.3/v @DPy~9I@Y@d#aU*vv[z`1le7Q?CA Y֦`|1Xu8Ҝ*>ȋ0QWA;/x~&䙚81k %wLc9kcFHBʭfT *>T܌s=D+"C77TM>S9l4 >et~_vc`ldN݊#cV̂={T+@Qh4~ǔ4lyW?\#l׍%LƟnXv /f-IENDB`PKb8VqEBlybniz-qt/lybniz.pyUT x,Hz,HUxْɑ%A! ("/-ܛ"$dy"d"Ja~gaf>`~i\9jw@D,ɇ2{}EMQ5__}>\ͫ˷?tYcvO<}7?\_y:o˫ݫח77jz~u<:\=ѿˋpϒlfW77~1̗W_ow*\pxWCWa͵q//:󻥓E~ho>[Znz7_]ٿo^?+{wW_y}WW;/n \?}sW??/o/~>nywy}a\2и?Cxkw=WW_1kÍĘ}fXjy&^ݿY'h-z^<ӯ+_Ç1s-rp6z9zweܿ~~yuuym=;| pֵ"*K}t8y_Q/\]/ҷ2 s_qqvyWE߿/yga}Ui|}1-{lW\_Vr {~اѾxgKkS~~s9O~i6?Vuߴ^NXZ(v^O\O共3]_b;F^)?eY r}˗O]QoM$ew"r?!}zt_zyrы?޼o/&6,~:*L{ /9嗣kZ{$~{v4X/on_y2rƛ.^/°j/MmoOxc>ŕ/Ϟbۋy_,Ϟyԋk_4+{gǂ͈J]=8W<.zP8wMuٞk `#Zb4]b_^}6EL2}n$f0Xwo6v}&'s^̍Nb}4'_|C=\[:o>MmU{=r~zg?<~}yYp<r{ۏ'[!|sy?LK.^v{0 6khǛK[@*E_ӓeh-.6Y^N\7]˗Fi؟ Z=ޗO_v}OoŶGtw{ײXpTM؞ߩ\Vڟ hٟ~ nPcnb`/6̋#{E-uspf3z?8g,7~5ݚ}L!잩=.ɣ4Rl;>i[O#A9Jɣ4DH =VҽSG~g\G)~wrkH]>M_ɓɡ|/w ><&zm4`?9|ihv ]nIo3{D;vorKЧ|XKsoorzykrc?>߯F,l_~|Bir:=;UmkFu`G Nsv6Oÿ%~xqb=+?؝e1z\A[Į}؂ Á]V(6ٿ-s:*\_Z/0*Bjj@OmoGŗ/悎zu]~ yW?ǶvyssOPߍ rx8x_O/ ,}Dfɱ3}Zo\gI~EMGy P}x(ocks}xdʙGO?< -sH֙'\;i} -[=ðCy`axӿ ]]E ]{xEi>yz 1_;@{ yJ-X0:O q:D7Vݴ_ϖ _ 9}rK~p8ENX4CaǡO~t`sq+{z{fH)ɝ~mX曆/rvZo}ގ/Ɔ |o컢}dž7߄M_~ҿ /O _qz'?p'/e "I~x+c#=ל7WO`.x};FOs'O`M^\sӿp'GOo\ v O>+_$ONo?ۙnm{]GK^ӓNۧOᄄp>qCe }?CrQ7!3㵬Urf0҇q wDM_? S?7}6a?_]^.o.!㸒8/o^W7?uzƜ'g>Qea=@*{mmGz1'mWG_i}m}LnhӃey/OdeOԆrx]>0KC7'޻Έ]>3qύQ?#wx{o{=o|s1 liah֫Wgv~>|+\~RK:K}b_^_sqpxs82"~nuhny {z#LV87h?޼~_\GL]/eބ8mI ;kU B@{~yfqß{gS8E'L8|7jq [8-3Z,U}@6 }-~i]=)Cr(O4_Kf!N"NfmOVn:O3iޟşP{vkM[rm{'蛶}T6cSݜ0f00 G߯?8O |~o᫋1 þm $;R/'1rֿ/nlXb0N|38ܳxKzGg}%_mqѿŗ>5Dw_'Փ~X~ymOQb!^pr!r;.>GDOrpf"?g#h]ό2zwMnu߸uÚq0K|ճWscc~~ryn;`d$)bS_vq眉w{O>;[ws,`}}dG@Ŀ|w!?./ps {3wx gs/1Lމ 'ohWW_c+ X'pտ!:IDl-{,|?h ֑/yd>JR?zU%~\G sg=7,tu7xGCʁng3 1`IgRޱ8Vzip>ǼɽvfŐ33`KFh3 !{A jG~Ż׷p}'?õ)i=쪍k?O102vHgM8}/?C~޿ C{noo=+mɮG>CpE/ߏiu$L~0yL\8^uO>3]x麻yG$]' ׾/ &jYӃ \`5˾ŋyN;<˷#urȃ_/c޶]?5t*94]f2ś8>?73׿[zӎEL˞%Nbˡ]K:nGuSYd^]?MV|r/>S4c[ < {zv{][Y>HmƬ=z% mR1& _l2Z؞xlr.. 6gS^?/֟6 W}>G>ϓ7?U)7y嫏}5tou 5vyGJ>yvu9oK7;O~ﰊ;h7߇gg_`zWW7&~ba@&jߛn]~rMN&W O&tiw3RtӃN^ 2__ܼ:Ty4~1%![N;q~q׃N0)8.>?f`듁CG{|{*sA[4!{]?;|nF;/>;.n,A~8lQ>vC1@{Win;cX밑{>,V#sIw䞡Iwn:_.?GtHs2PG2!<;?,oOF_rLj ߞt4ԃXfO#Fp]y=cS:钵Gmpb辺_/og73z?8}_\L_W7<{Hngq?1}=CxXh?Eis懏63Ec17}Ώ᭧#w3{C!^o~G4>ᣊ[NAP /A9% #yjToYq OAcry4.S!z}1G|t]on{Pu Oۏx<uAןFkǘm76]9nލן}.%{hGZ9-_QWݥ7gwuV7`ھ'Q /.^{KSÇS ߖN5w 1\ÎX~DK/Ηm}`7пR]~_*$ `{D嵟=bLanfMꜿpaľ>rgzlѷD&wEǺ~,lCgou7lݻߴdwnp&}; O;/p<ܮtfk{̼sxr(A42k#Otԟ/@4h6Mq9kV΍ۛgwFiOΪ z^pzJc9~88#S;q>d^\ߝ= ףYЍ!KެS:'KoJd~{{2Xnk͂?L_N؟XmTM9'M8=a }v3W-FY20>@Mw>ܶU'JwY-ʲC8gثX7=G:=/ڨOOpO(ĮrAP!7l\V?#l`9rC<¼Uc·wn|G'U=YNp;՜n׾֚xJ+,+I|qJs?p;.ǥqq}{ox²='- ̒[E%<v]z<~K*,|ӨzS^>ywi{_-jgV2T yǏ/y> T=_U瓉Ov3oʷw̪:n(1Sρk2;9 ;ƖQ|LF3νa|m:7 tqIh>ȷFk_4]E0?0Ɣ?br{I"co}f8R}tsR?Tg <1,zUR0y[s\W Qw! 5ܷQcϋmuGU=o;~ҙ-z/9|ݻ?8yl:{kg"x4[rX'߸9d?asm~tsh7֭ɁivXyepwM5lX'؎<w'?~~>~dNIA~7yt@vsW@sJ粆|AucO98A'}=F|qNw8.Í͕Mfm3{o.&/<ûc?,>rٞE/>ښ0Zq 4o]'3ʫrWz~*w>-TS>>wn0)˽!8ネ=PϾ!wg_o baEDn}H}C^7Mk_.aoi{V˧Y>r_7OΒ;o~_˧g.V.gyG.w-OiߦS.,C5.J{BN媺ysi}xG=~'%Rb=pbo+{ w˯nwm[uQY`{' GkZLS{8&2҆|S0wlO+zoo? ېfwf`r0ŀ'$T >ɬ7fx gx8$_wfsk1>zh.NroCn`m3qB+Ld&g1Sm.VW {`JjU3iy”r|m!a/Rb>S^l~gK[=5y[~idtO9bOQ4zuQL\&Y&Q6&VUエms\YI8G{Ulchٻ~漕=a.1uoǡ.[>MFL7˵uƧ7uv[>hM鶚&Y&FtlZ l0-[}Ȉ=aVoQOԦ彭Ɍ,Mgc֣h@[]m3kVG>} J6OI6h+l\Y+A}OZl'CLmV]Yin2ͽ9eti=LRo1wM(#Ňڻeizf '|d`/˱lek&dN/AsP7]e#o+82+boWj'luApY"ofMMk5mkZz`+eJv@_)*>n*Pbu͹ɥQW͸]:Vٴ2in6[4I?:3afceo0d Į5;"&L6.&/%!>pLR`Z\˭7<.9 קkօa[C36Di~h`#NbG66lD#0$h7 -XK;=(G%XU9u}nDrd2aW(1{J ۨ"I75 0sM+o-y7=emocu~c[lˬ!n{z0uXؿ-l|r_6&2ôJ1pL?3瘴%дs&̪N`+JyV>YyFmHs(ڜC65L.lT͎^h‰rY /fBXWEk6X5I*n&I2zSZ{3m[@?Oc~̒CǏ6jy+2Z4RU콆޴yav]'lٕnuR߷jOh$m%ڴW\UIh_0GnSY 0dެil֥Y |U%ȝ&8C&HOˉ;>~04ZIX+qz!+o+5.`yzɽ,{WҞb{e+vۺ4M6S+P4I$`ZdFV8jʹHކc`f[aLb(kMf&fLgy&[ k Z.$h6nvVr>O= %\=`(VI4جukEՔV%|@]FM36fw_ܱa m?)5@K[RS4}ؚ AUK5bhMLO2ޘLlϭ FR&mafVs2Q?v\#Һ#?f'mU`Zkt?g-Leq\H&Yo\݅$F'X eZyJ֓!PcڅOtWO46T\OӏX,&zdI4-gЮ00MCA[F#+ms Ё}-i X+U]@k#mEO?g+}n+ۼ$QX.e rQ8F1]m49n1Πu<@j[ \<*DJ?bXLVu5Gzޥe QnGe,8'B' ŭEGjZ̷s!d~U[U&n-Zq.ԋf־k힙y2"#ŃY;y+֟DcMIp]&cB:GXFe!$1sp\e .BBxI^ZU>S\yq)Zpй_fUf$ex2s\tDqY5fFFb#7qY6yf qLhfYgfx]ECоj3a m]76%%{{YVq_w‘WJ_5;nc88r溕``q^H!5dTw2f-{5!c{y![$JOʩ_68L%؉bZb\:"89ZJՃ3?}c+kj)VѴiYC9r|Ķk / 븦ZVKF'"}6ì՘hv[>NDLC& >4-Y#=֝e8wPǎzLObXQ}I1[mk(6`&Kfj\>ͬaF.\Ԋ$Mbk DVYc%f!7l6-f=eF8S6#ÁX7Ik%< yҋZݕuL6/splɠqh񤸕ͨP`KvaG{[@&f阥WU6Gh`U BcJѾYRi f `m Ny77v:qωOM{Gi5lwiLDq['BgyK3ߖh~P*U2|m?!NPz+ReB\e/CT4iZW e2J" ϹrFrqԶqeLט k*GW׼T=}w[/l%^,3e_[Jc wG=22a1[m^䤂 E $nN3z&4(F ^E+qtG9QfCM}6KEq-ٌB|a 5fӵgv])UX=r0Mjb׎iB {c2MTlojͲ!2"}>Tbœ)l*kR=*%SMfos1uk9ʱ<8Hؖ!X^!:\R }Tz"&/Fe *ذ=>5?r+N.#ΏqeYˡن.F~r+O4^Xz/ VO5˖ šQ:kQdcV4|@ώ||"nD9 |Ð0H}8 +ϴZxjVYX9 hr6ƏWW0LY+IbJ&e6fY䙙 "M{F]K 3V1Y^R̳LZnf<^iy'x*Y 4; j,C_N |1_)B᛺t hpgi9lCI1ήaFE}MXNҾ&2O!B}^R:Y2p58eq?gɨX.RгZqRE+8kK^CDnk,>h?3DgPĘ$#/Q^52aқ?H^ srfy1qo r d52)1RFȸze5Kʤ{1O?=(E]y {7i vFYn@ ^稹@El30; =*P!?'/2K߯ !QYy:G }%bbrM^aĺ51J"YVח6ALA+-5]v$o5U~H*YW>u=%moo1jȍ6T{rg'uZd>m6 C.ϰ&5&#́(׏Nhq>,~>3]`hZlYO5iO,z5zg-.=8谪SV!TLfn_+m[Io-5f[2cc=DfSVAӚ׏*轗brۦ3iXnq@?Ԏ̧q':Ewanh'4blI9W~K&cѱi\PѮ=Ə'1kIT$zi$C SYηib=lAU!OQ 3 FlEdVU3_٪QVG a*VX#C~*6/&;^7x6z\:l8F@ij*Yi0K9xr{3z @YAvxGz3nBnl62IO'vF ٚes!IBݘkWH^>8߂ 8 Kp$XvX"Qsuˮ"2RlhLǖ'_ˆZ=_;2h_$(بIAqPFbND:mj1WܖBo8*DrJ,fRlgKlW9۫'ɿ]CN"<4uzeB֤~\!hqw6v}PźHP>J54ݷ4 ~VOϜOJ?f4J)XQYXߴ-)}I} gprA>HXp@hȖV+[iv! 84X+FC_8jϫٲTo}r)Qgz~ | 蕔zdJgU!:YΔU/>)]\#X:K!*?n" 5jGEOP騜Y^=, ;p{}㜀4ԓ,/)Θr"Jq=՛vyi5/~ӪGT(+4 28UL'|O/Xm"sE,R$2) $U 3p/bg[Ih'+LFY|R7J˵UEZ1}3( /9&&I !㙙6Pw\E Pu-*Dғ2nbȑCL˄Fݙ;1cW٪ 7h""oy66 =a5g=Yh\x%u~)R"^9FS0tV$h%|V0[)y oܙ@pM9!26&3;' \ ́2o2nb 㝍vLk6S`$Ҹȩ#Z7dsH#Zr3aD.XG(J,s_jsI~a 0<?蠸@eSP>7pJc{´k%u1UJyL 1 *ifS1Q,׏QV|]]׸}fbIgi*wǹI :ʴj!e6y3=dZDiY09 }#T1؊ilbܣ΄Zb֗LVLl eԛ-UzPH;6icV˥}FDw۱[Y >FwЯeR3ELF]@T$A;ѯѤWƫ]?n)7 Z-`٬/|5<ݰ`e+%ӎ[w!?ฌ:Ȫn]بV]Sjut@٩nSRArqjYۦ ޭ K1xJ֝e˸ZŁK"s)UDH,H\OpK'9gjEE dY 1w BrXtq͉Gʬ `r蠏y@nfj߈QC!8.uS:jjd#nҨZbjFlv.\Zʴ%Y[k rf=bېY";2وHB8{t,sg3V)s[Yѭ$(;Ǖ5㮍V f~JQ4u5GOI,k! 5RbvA+0}&gy(RbXOX{%mU i=c+ ^RV8>g *%')?: 5 K< 9a}Zs^J"Z.MVDxg5Dg/'.Z"2))\xC] $hu$ۍY,b %p`+UWb'w- Id'GiFyxdnseffle*mYkyN%䕕i iʵbij̲vE]'!PM"p5Qz#G\!fV$srimyF)N좟8g*՝P'*Ign۝^j)Kb!o,WG6ԫ7zlU`mXal " ŸFdt>HNt*V""@#S츢V#]>WSW`rj&SB&c3岟0u15=dȬ0պonQoc[Boi>o8OI-gPT};|c2˫hv ,$Odݩz+_)3xKJj4s̺X в}3BcǃwB euר_w3'{L56z]dnNժ!0U+1 ,PSZUUJiVpKI5p> d(6bɠ;IZ(2g'}(X#~K0 -} dV$zC=hᓫ}!M;ߠDH&H:^(! Tf`NuRZyAH̞=h# \?6y*&}|L_u#b9 `ل$?%A^{Y_ګ>OTwba1BJw]<뤒uLM5'C*jpkOKkI=}!˧ʄ彚܀B.X tVġSd{iFϽ!E.=pdO-oWW^I{YLLgU49{uuDşZjGVvŚΩXͦ9?$)F=hu:= $7aD# 匒mǦ^{ F-s7ƮGv;<Ш s2(??';U-ĺ\v{ZCf|si.b숔{~1n֯آWjR̍6,\&DrV3culaZkj %hg5w͆=ɚ}G[]zbkmVV{PjVrLVGr+wYxM * d/=M>MQ4b& rBG(`8#<xG. êQb}Z3%yLF\M]/%kbZI ~۠BT@jtMⳉ',bkimC>geBB`1+Ba/!o+4G|?Sc何]<kЏʽX0]Ž kzq&ۍ<^ ͤ>%5ət{)nksěX#d'#";^B0/Bs/Z"r=ksvO2IŒ[ʎڧX4glh;֊\8%5o|CSs:I+[g^#+ 5r{nӼrCLbP͢{a̷TV2I*|N=9arsXm&*weln<X}o*zkLXG^)](n+\BȘWĬ!Qi=f9^%ifYYZ ˔T/+'`0*=!9\ [}৐ê+͊"C?^ޙ$ `|Q2ql<3*"SU4sPiR6Ɲg#Z9-(˂ؖ<ޣڕ"TJ^!> DF>ˈδbHb(!=5NEoљ@eN[iq pbMZV7 t0lNFFERSA=mFnd3\[?Յno+bo1#?Y([r_5AqY: xB+ xe? ̚,\HWXoqtw gl|ŀy ϲ`QjʳVvNnAݩf7Nnc'<":MQtrܴm0:>oL Y8yQW[eg9"~bL*FNP٭WZZ{aqNTu- eT|R*:Q/r8zPggQ=D(QbDS#z2}  ғ0l5rkJtwAQ!8 ~xIӵ8:p8@MS(g;,K9'/>&2}fshc,Nsq3;:*{I yGtG&sLȁb7 yJUVļW $,.wdfO%$ֆP[~p/+. ,#d_ĬL 1~E1D3J q vz^Cm1 J]QKùCݚ8QwWqhiҞ+zx<VF̒W͇<]HIVNb" /ǵ9+V6 WDۇȱx*[#`WFjzc58r ap"nk% FڪRhڥCj[ݨ:K?M|"x6iڭC9ޅ819\g^Rw-*Ҫ;*.yQ#zfMO/4i_V)cd\يab6M7lh5#O8ǮUT)đfe$UYȪ  kP廊(&RDvJ3+pUr-ъ9uke+~72:juenh9G6zVqO[sd >ѳJ6ؐى ;iRob 4|'Nΐeũ_#BeJ6rdTbLZc`wre]<- H@ K͒Ad#WXjl >TʩFa[eb/;i3syMVw `YVWM@ a&E= ~mm=e\M(98)-Ằ~8ƒ(tf")&- 3;E80stwXQ6UU ν{:)W>*'TDqY-A}G$~ᝨgSZem8knB<N3Oq3wI.{@ n~bftU:MW dXJC xXAAmznyٔ4V}#jZԆ;*)Pdq"8A6zȺ #v'U]3sd8ԎN '1I_p_[˚%X4%-M&NJ)u 'hI{Y+z&N%/10ea`G&sYUiaZߤ9pzo@iuRbĴݩ4bsGEe'˵2W@6PO>pҺԴ@dbm.b# SVq^ĕh+9H@VT.)‰|LhV JSfrlc+& g@kM)EYs̅eԊP5+vLy92qY:3Q*UFM/CIj1!ZN_ iF[|wEJqnS4z>Rt&;$%VHss*V_rJn͍JvZ=THXW9B3xle2dy Y%uXbՍqש }~r ♊`'n̞mٮm$嶞5Q$ɖߍ˭*<uOvŝ8HsIG+6<3,啝g7&qxf]  h'i䧕Ĩn+;k~cc"z]D1q2&)ű/rm4~]* 3|$Q%CrUPVd 탐u 1|e/ bX?طw~ƁGƩĶV]j_x?NȨ8B=_.ߒ"?Ŭ qq2ϤHדF>V?{ac;Ļ^~x(2[Lb7iO%,VHR$шҔlw/c FqX#2JשtIhtZ~yI £8w?[bVxjsi H3Z4wq/wF@2[DQTy+E/VVq `7.ycPp"enAD= bj ucI'#_-$>ROGTR1<# mG Cl-}(;I⵷!ECVsmEaY07)½>i+dgm!:\"Cu$}"Ym뭅qϿhtO ĺ'I'Ε<=y$AdY~kt6oP_"_SޠRd*l:[0*6fs)J|H)15wʴ./?kЖ0}#W?3hp Mf׊Ka ̊df];;WKiVӥUX7jK7kl Դop%UL';ϘveiJ1tw-}PX=Ma*hf%tl³6%@%A1UEqJ +nQC}ebyQ? Uc@6vE+'3"@0:W,T/cok3z%bsOrѯ 5c*VHхJ6.̫)\ȗ-dik1iǵ`i-DᩬuUd|V0~0tu* oWfK ƃywhcN\U/vpC*^C#vr+|}=978ϖ@2Y (ˁ5\r1evI2oOE硡p + yplFz!cJlŎVŞSȩcOMI:1icJve\9Xs$q>aW_0+6a780a;On"7+!yצbQr\[Ot~W~9kl,ݔ)BhXy$ѮT6rnNq6(̍U>]Hw8A"}j)1p1Fc:/׍}Vg=mAL%bfkMq:UߚAOk y(rgmI9[]df5Ֆ&\^h^aXdKHGnB ;y܍V${@!0Ezϣ"fZi$`1ɱDcn+0-fއpm,CZGrv 6>qyҗS+eѣzhVԊ KW^ m#T(`ŹidxVJ3n>GlD<?ȬlċBPh|9lYgqdϻb6mB=iRg2n|$"n#fn4:kb0 " tTK '*"l]LfZڻfO)7imQAʽ},`3]9Ob((gDb`|XdvXъFgѯpnnGZtS1XӖ҄6$6 ^IQ8bIrs^}Jz ދl\>ԞxG@ PmOJW[9#/S̶ B=jKA÷Z>!RT(XGOEi/۪J>qE>(2lh/r31jsOkM4D~VBۍbSp(tq.Uq >OBt*Zm.g?M8 K!A*!}mh (9qLQ^{8P"40-5P}#Rp #1(!49Yܞ~tMCEȊ^Msn 2ܧ}//,$}D*(gbV=<hsa} fQ@vay !a I5Y)B@FLw1{Ҽo1pŕ;I>tΤ'=wd3X1YPj̝e5 m!8ZxZJ`ԕh2[0V{詡L#1v2 ?Xݞ[\칐˲Vk߳ݰ6saMݣ2a(?&(:ZGzlj<:5@E|3u1RqDGc#ۅbQ=Q<$*C?_Y<|82k0>A>Q[3IE =<ŮJ∨9|XyՊ6cx9#M쑽&p 3鹙f?xh5~b׮XrP(+nG竑I;'Ex1@+KO 3F3dZuAF3^/k `82U21%FUT ʃ8%;Mor -S{# ;J~zqUQc.4ѵ\3jZx~"*˟g)@\;27w$Q=F9beϊ "_^<+cfisxƵxe9'jf:ɖ1mQ9FhDhZ_H)iKC\ UfbnCċG@gg'Ҡ C*+*(6fs;bӠAqF 4&{M*!lhY/sobZ^ L1eGN#_15<(n$ @a\QQXs5a7*s枻+ԑQOo_yE8wZ BKpkx.8Z1` RR|&,('*_{, Bh&mǣתی-TMhj Pnr znk֠;/5Vu僃7̝4 Yk.J(i<׽H[ Q'^\Ɋy?zXYZ[ڴ;Ȣ'Gi3kLR[2f3j(V+'̊F#Fby~*6:'+•SŌkoRw߃؋v>uo0ci+nndvzJ+Ϭו^߻pƉ^amzrKGjVq"LV3G=n}-|~]d5N } uN#(NNcQޱIcfQ*, vä1#6 'wtF\.'Pg>ODDȰ,bÀӘם(gɜU NmP8sV+.*SԊ"*[#IrWjq~Ⅺqݺ.h=6}lw+\ 4.^`O"<-,~*3C˞`ES,v M[eIm+DqrD2ke'm& LIQQ1-=QuL=DD3NFx~$F%8ٹ3PA0]5kޡS[ʻqA,.B?PL?.Q u rU!@^@/6?Q3o0b ,ō{s[$;\G"8 W`N༿Ұz);}^-W]Hz+/^)ݍEbΑ0H %dR-pT)""&q/eiY0Uفc?+mpٱ V yACsguvI8SY7.+={lTI,|nx매PlUރD̡שl$s0i2"T<{'>e)ȮV,;5d>yFeS$ӊ5J+`+ķl#L0 +,kK~[av4\R[A,bwaG"-Dߔ3j&9VU%yθ0ǖoRT L兢 8_I]Ko!#E:""V&{hUx [ YJƌ"cKhճ2 plU OEPj\smu9x%ڋT\E"N]q9\`6hŴJdzn&~N(J}tMi{ '1,VmR$b\y6 jQ#TCBn+x,26"8u_-H^j]<{g 3bZ?$pNkfE'+?oxeEuvbT P#}()[>ȤQo:|e5A(t"K6 ; Ÿ' WO[f=:t }Rd1ҍ4C7G\ ;ub$۞ T0n"tLM[Tmjđc.[0 pvOd %!xܜLx3LGi>uSq*qx!ŴS]&:dd &(ꕵBBvҺSޑ'QӸJ[XJP=vbTk[G3 YM#:/u<,@jN+^I9@J,΁T{Wr"VHc'o׵eލo,`"ОcsJ墁w /.jIxs}\06èg# 4p-d•5ˬA2e (k~ ~6VjMAq ͈Yrfg>2񓍸:H!G5=]<+ bOrFr1* h]_Flt/$zcT>vK`u_GOD@Z:78 $#;њ| BA[I't!{AFY#kIؑpPwF/e}sF/>kC Q%iTgLp)_gL+ffFp"ߌC{'2 >Ĩg\+{hٞZHzZ mTcMfQx9'? pQ4 XY' h& CtQ-EfmFZ9]fSqlEfz6U-]RʞgQw@@+Z-'r3UPP(h70>~nzc"F *pDM-<좘3P#.cL-.6ېMAǕw+JG!|j]+ci|XT?ڄS0ثQO愧9z'qW*oVި=dv]˗${2E ˰aԠh&p ڧ-%Ї13yi<*Q31Y1?*~̥8\8mS^{B*ú9XKrZ+(bX WiS9 Q;-05O)35-:3ecRa-5=}Y&#Rd- \Y(H) rHdlDR_s¬GF{WԀX^*4oq|;"ywb@bZ,*Gpp駠lm~3fi01.8'XUSj"Ub"JVr/͆j[aj8 *2SxaSCM&\J"cv?kF~&}IމiK@!ҜNjnS)i\DK E?RTԗƎa*"b0 ?4jIT¾Wr=tV+{r$MBv1w8EH/} in[cyGK̲bؖT#1+") W 5{aQ&]e (Z-zVDmgR]01jsQ( qޛz}X54j$W'X*r>%U4ĕ.bw BDMut cB~hAF~jBmUJTcGkhI#{ԓqI%R9'cQ׹!jSs\k=Dž`B ^bsOޔҫY1 d Ĕ^Y YyFȄlbfV\+i!29xA"f\~8άȩJ1̒0J2He ^;mw8H\mʥi <ؓ2/VkO<usyK{8n@ۜ4q.mMl-wS㙵>y,^eWVeVfWWdX]}3Bcpk >( j1 +&2 FZh|t1k$3ӀmX!sixIRvpJHF٬_ͼr- X>|*)cm"䬁W?IӵVgDvBLL HdY"D-YbܛX+atNd;JIH^(16 gj|WrݒV'L ~eP,Z/&!|g1eYU r&Q*OoFOgLJׅ^Z7./gRy8;e)c+k+.Ҝk.jd7:G7u+bGS}6&1S縃4/)(Zf0)o0HO>Hnwx_!ox~]?ў.lP)!AHOl %YzR fѺTDN3gqm+cQI9p~0{3DD+YEyZd ؔ%DZY9Q!g'&fIp.X;˙seg,JIQ*F tgϧRU ߬>e qջT8 Nb՝Hobqɫdfx#KUxkbYFM]9_ /̲r^M6v:/yZbJd\ <-$ NҬfeQ)ʰ+"y\qF$J7ggp:cIuSVq:Ԙu$5.0NieOپkةrv y3$gEK*iеcN9܋cgmRIYh#ɓ_AIYc|gp*U.$ʻBV(yOZ߯^dMg2(Ձxs+Tl3g[50E}딋e㕯oxL uVc7IYA߳;'8V?%E益av~.H#sa" j + gT(o!0xKx(Vy@׆O(p8 Am.abRşG-.Ȼ)A,(~5kRvD[Blo,o%yBx ]gsvi]tp"i$jE)? }L:e!R'SN2QΧ 0?ci[GIbr ΒUʤ'GqokPwJj/uJ9 Ti>j\^m7Yx(:e/(d? + X_œAW˲e{х7\7>Jr..hG`KsɤS]" 3[ ;n?>`Ex-wz(R,VŕѩьbP -4 rk3#* SӹCB[q'G$,gm+yãB̝ =ư iy.ֽ)|dPSw_e}~XC-]:+9i6V՜GɌjseRKf3RűL>reŷq*9)5'""0}8WƥEpkڍОשIAoZ(lC.G2" \z g)ssLyACs15>ΕO%pbFgVOA(vU K kX"x+2nE*IVYHXT̄x)T?9@=KpE]k߅;haT'`Ǯ8k49;qYZaGFwSx,O4=JF|bpR[oPU'q,gfsYA뢕 _8_r4lEŚA^~$DAIYgKkΕ{SA[ZY Vi(dH.YQY%]o~hUUyGxM>"NHՋWϫIN? ^8V[X>cS]*7qV< ոKQcmŴʿ4BiVqlɲbL+_;*WKqNYSzb}S}[K(h#QxA){U !@1Ts%q `i&K:+]!*dW($psQ0B{&7\8RƔeY)CjJOV V l#dKoLdChi  'ƥDi:.; gV! W>`R2= {qz%Z9HwΩJ  1ofȁc9ZuwUd<8pPj6HZGqa8St N:E# fMFel\vY69L7LAlN W;QIRj_t[~T0% Biv qשIMDR,K7'FN05RZ"ĵȓԋ8؜X>~/gw}<-.$ e7vDPӪ6]V(Rژ!+|N񐒿=0Jq嗓 1QHVz(+m@+|VcRFu&%S)V+zm~']<7 ԭtgiF&*(员T#YqyW߇R\=95ٹ' dzxE9Rn8/c״du#`w4 9RCyOo^<$% 7yG¶A1-WV /x-b$2=ZNJVb(Ļ=(.Ӭ -N.Nܸg{6E^zT qNOӸ?V"+Z$+͑,@sILjDno_Q#(eӚM+W*h3%0j_ZƿUQp,H HoNq9pCoL`0.f"Tuy\L6$̲Э6]<$f7oS\GN5+R's55U%vE]0z&GltU=^PXV4=]j \8_y5YH"$2Ic7A ;E =3;'*~ &7%U<⃃bmv 6,%dM˦8J8B|Xn8!ּ d͞/A$@~0j4Z@xs3ւ醋Jq!X3D 66-vSkbP"S-X@?Z ddP1s3WbX+HQ?#g`q s2Y=yA10Še|ìbkY6DntGKCpw W^*UV؎a be1AR,FUaEZ_LTy(}̼4(v^.&'} T ]݄MdygQZbr 7%D=[O; k%\ɳzɶM+JdnY;bv WRNڏVqDk=+܋뵚pvaEϭm0)쳮}>QDk'bdoo)Q&=nA4ZQJ^i $}#mE-K)M(OOc4+N9 n=צhyLʔWc<4z+Pz0cL~lYAͣȣžcLJ.<~d+)Ѓuqي\D 1G@Yr5!G!ɴ.k; ~R,H^ٺ5~@hy)2h9N?lWAcM?+/sC< E&xR<60Nɑ1ȣ-pR'1@2ϡw{b|m l*ZJ^Wd^S*9[SxJFx'Kj [u$e]#E}ͤQk&-1Z"yvHUEئ96iVK_g"\WVAl{#do)5Ver :o&eA4Ԯ*[QD-QH ɷ`oMPwn yn`Wa[TK)r=YuDyaKgB@Ή0Dۃ$We6fkr+F sئYb:Yhj6bO{Acԭ5BvsO,kc,KԺT+̊^VSdX~^Sߙs f$࣎Ώ]/婫np؎>^v*f|: `h~ 8|{ '~s8<÷w'rNZ~&ut"G|Hk )N'eZ1JwZ?)֎nZ>\<*C4DƉ 5hai>~gwҟ?dRtt07~쇻7? /M ~Oy;ÇL֟|{wxqgwż^xQ\/_/޾|߽[o~닱|EWpr맇~Ç󗿄gv?PKL8t;E47lybniz-qt/Example.lybUT Hј,HUxŒn0D|{H`[^R9pE,F8|}bo~3֬ on]Mpp @>h|3LYX" $xeiDZ5D#8Y㛣 Y'd*X\gV)})=m ; g^i8.yaP>>"h9SƢwl@ce ||_PK b8 Alybniz-qt/UTx,HUxPK̲8 =lybniz-qt/Lybniz.lnkUTHUxPK888mX;  lybniz-qt/lybniz.qrcUT )lybniz-qt/images/Lybniz.icoUTUHUxPK bJ3 /lybniz-qt/images/filenew.pngUTجJCUxPK bJ3/ 4lybniz-qt/images/filesave.pngUTجJCUxPK 4kM  :lybniz-qt/images/lybniz.pngUTDUxPK bJ3A" 1Elybniz-qt/images/fileclose.pngUTجJCUxPK 3aC Glybniz-qt/images/help_index.pngUTuBUxPK bJ3)++ Plybniz-qt/images/filesaveas.pngUTجJCUxPK bJ3J{D77 JYlybniz-qt/images/info.pngUTجJCUxPK bJ34 _lybniz-qt/images/fileopen.pngUTجJCUxPK bJ3 glybniz-qt/images/stop.pngUTجJCUxPK 3/n 9olybniz-qt/images/sheet.pngUT,BUxPKb8VqEB \rlybniz-qt/lybniz.pyUTx,HUxPKL8t;E47 lybniz-qt/Example.lybUTHUxPK:lybniz-3.0.4/ChangeLog.txt000066400000000000000000000026031343532221700154200ustar00rootroot00000000000000Current Version 3.0.4 Changes since 3.0.3 * Translations, man page Changes since 3.0.1 * tau Changes since 3.0.0 * Fix bug regarding resizing, icon loading, etc. Changes since 1.3.2 * Port to Python 3 and GTK 3 Changes since 1.3.1 * Version number needs to be a string if it has multiple decimal places - thanks Sebastian Pająk Changes since 1.3 * [ 1807003 ] Error when saving * [ 1726426 ] "evaluate" doenst recognise "^" power sign * [ 1829857 ] Two start entries for lybniz - thanks Mario Bonino Changes since 1.2 * Translatable * fac(), and sinc() functions added. ^ can be used for powers. * Improve documentation * Bug fixes Changes since 1.1 * Coloured plotting * Auto Scaling * Scale labelling * Fix rounding error bugs in drawing code Changes since 1.0 * Moved to sourceforge * Optimise drawing code (typically ~50% reduction in drawing time) This was by compiling the function outside of the drawing loop There are additional savings when only plotting 1 or 2 functions * Safer evaluation of expressions The eval statement now runs with a restricted namespace. This prevents a user being able to call other functions within the program. * Using "math." before a function name (eg math.sin(x)) is optional * Preserve center when zooming * Setup.py install script * Pressing enter in input boxes refreshes plot * Make division always use floats (unless you use the // operator) lybniz-3.0.4/LICENSE000066400000000000000000000027311343532221700140370ustar00rootroot00000000000000Copyright (c) 2005-2017, Thomas Führinger, Sam Tygier All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of lybniz nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.lybniz-3.0.4/PKG-INFO000066400000000000000000000004171343532221700141260ustar00rootroot00000000000000Metadata-Version: 1.0 Name: lybniz Version: 3.0.4 Summary: Graph Plotter Home-page: github.com/thomasfuhringer/lybniz Author: Thomas Führinger, Sam Tygier Author-email: ThomasFuhringer@Yahoo.com, samtygier@yahoo.co.uk License: BSD Description: UNKNOWN Platform: UNKNOWN lybniz-3.0.4/README.md000066400000000000000000000004331343532221700143060ustar00rootroot00000000000000# Lybniz 3 Easy to use mathematical function graph plotter using Python on GTK
Version 3 based on GTK+ 3. ![](images/Screenshot.png) Runs on Windows using MinGW ![](images/ScreenshotWin.png) Translations You're welcome to translate: https://www.transifex.com/Magic/lybniz lybniz-3.0.4/doc/000077500000000000000000000000001343532221700135745ustar00rootroot00000000000000lybniz-3.0.4/doc/figures/000077500000000000000000000000001343532221700152405ustar00rootroot00000000000000lybniz-3.0.4/doc/figures/lybniz_colour_graph_small.png000066400000000000000000001205171343532221700232170ustar00rootroot00000000000000PNG  IHDR PE pHYsftIME $9%n IDATxwXTG{SPQhlk1͘Ĵ/c4I1ƊQQA^ؾ~, "F=<CmHwf+d۟] jQ)PshLO E$I4c2"J|9){XgI@ IRE3Y7C,Z/h ]-8yE<+7P 0qIP KQ$N&$ łqCK EAEi;C~C WNqC44aߞhafhENbT#[(h"N; .J4IQM;eks'J]МHME4ARz}TBMekTR^̜ۋ{4ZGQ4I(0,$MT‚P C[((DRs(KaX*6ԥ=EI/dYvѣ=%-g SWXp(NǹmXgR_tOR IдD<@$!R4MR4MӦIKHzd;oXLM$ES4M@[/[%^1Fy:]KI+j4EY5x C"MNfYh ]͌uR#ȺX<եdDx?_O\֊}1qw2"( Kq]C3>vD{l-CcAhQ4}*kq.߼q E'%0d"I@Ӳ*qǰNBlbiGqb9b{2xL|"/Y6 YP!| jh~0 ?~1VIx1dӛG"T=ڞh4%7_w6ZnpV?l\njN @= 8E$Q&O's8i͡Qk*+0 Fn1h(iص+1'k=_h[3 C/V*#KH/ʬ:i7C10,<6XQi^-ss8^AH$ M2$a0G(@)ޞ-.,(PAoۉ@dV]%nCjeo@nl]@G")_$pdVg[[9$'\5^oiK"I'34vn~(Zڹ ;{^l8'
#Ӯ" Q(q.f@ =ˠIVWVf`رkϷ_}Kcԥ_rt\~I@\I4-0 re|z#Z9 Hmo}聡-,,T*U; m;uxyy;p(]9׎0"evey@ :0[W]x}ieZu䑸>v*=z9~6Ox,z ok t>}-AWmrӎǜ+i 9nX?v]TBN=g^?{ q2֢#㱧 j=Fd-j^e@ 'nxCոyI7<=ܛU|y3ġ-'{]6J `\˲NM;g; B_T?3=|!W}͟ G c|j7ޘ;T!I<#}?3EHšr/ºB.v\4+\fs9-@s`^gtq̬VR.ެ (? 0~-<hIxOusWe)쾛 FEسXGknԙ-6 ~ivk>Pm>}ϩX JU+[f7X!{ b*a3aY6rHsjf9,˖鲢bLfoT-Z%-X uI>cDz~B|Gȸ I[yrϥ.^mq/^%'m9pȜ&4̒0եpwCv, X֊ 3nΌiRNSR5'g q5E:E6+`d&Μ#>6h\rJc4TUIN"6er+E_Yj+h:~슺ڊ?V=htE诃\AU%%tFSMEk*J[o[$ <[ttyeCڸꫢ׬ :ӛFPޠ^7Dwd  XEߒ?7]蜏QuחaD{Q.e֔mEei+!9=^3+SFIzSse]Dyy51oJ&u}Xzq?+ό|$%ͻpqO;si3ݵF;qTsfMle@ n#( P~x;Mm:<ޝ.z<,¿Av ө<*1k<\]]\]]tU #Zɒ<2@ Hqqv2@ H><@ZGaT׫^ DaEQnNY9AA S sI`. Ũ2 ݾ`Zm:@ @ I@ : <:pGA555.^h4V|>AΥkqZܹZK _==~Vzj9::D9::jO~vZ all}y<ޓԛye/3t eQA maOUZB<+a܀Q\.>kƔg'`i'+">>>>vN!#+wC}nxTڻ$bYf?UzwOa*cݥovg4INĜ*++JJKkkX-((HOM$t=IԨMsT9 *d\Ju{ۋ]m2FӾ 'zsʟlI=՚̘D"0챵=pe슒7m~#eĉ"EQn߾zsK{K{i:z  \8˲&)b'O'""ǰ^{ޚ)//ieQFjZѨrrru:dA$K,$84C dEHRF.ӕ{KeYg/oʊ2'Gb.V $Ft DKW/XG*b0r\&mܸqǮ¢=#"$X,$T*J% fkkK|1[31O9[U]򠕕5/q !@nқ 5t⭲+9/eTb(iʗ R[B_G{gW |_ԛ~,2 >)[VUWo۱sڴi~~~֖:~ VVV3f̈=u&?w L/ĉ%Ç+ kkk\.8ϗdSN%NxZHQTZZZ+{GTz}CBAD" 03=KNIU3˴Y)Uj>G:(9WSO'y*<j~QR/2!ӏr{iIK78X"Š FSVV(++}6a\.wܸq{DFJA( ˲ PeoocԽhUUUM6DzkbbbL&So 0c4 / 2q3w[(ssq"(@a|ǝI,f'}.I.u8KQ뤔E\E2˲h/q\[;U+W:|D(a!}(:mʄ9iogP(zi0֨RòݻO eX|@ xךe\xq||[,4Ct>f0Ytme'S\~`úsӧ8sp( N5q8wŵdWA 00lr^sBD| )(R^EEQr%Cnia!;ft~~L&:$`42 u2|_VH>|ouuG/ B" 0,k4)R(oVs$A4MA444޻RFah(*::eiӦ1 0LocZ"3XY W/4^Rܜeeen8qy pܚr2LRBaWay8mO7_` &%2$YqD" Ԭ޽12viE^cA&MKO`O4 L&(++OIKfp|nUI{opDEIA}mNP'pKIfT"35sU'ȭ =Xfok! 3ft W$0 ]YYnuz'(T)S\T9h`\&C&j' ..΄ɴ+::##A^{=wMt…bo/Do"ñ޽ :骪m۶.xqO9egkp*@]gT`ߛ`M& Lz!7/70B'V$nrpjܕ-O(a(L&qN; ,˒4S]. vY?*go3ڦ0?9%}r,Q<ȲlTTԥK s:^"vv|_VUlݾNG!666cll|}&$={>%+*gEK~wՊ ]7i3XYZ.?pzAjkUݺ]͗r%rO98 $R_[E5haĻ`<ļzfC*88FѬD4 bf5MIrz*_{^ XȪB̸!}ꚺz/Vv IDAT8x֌8bT>bG`a]4-;$ ΞEĵ$WWםѻwip3":`hk+W\ܷO/]4 ipGJN;uڅ2 n.і>'v] ~r6?uE3IQP.q\.1 EǏo>G66JL*5;/1ofi>m*6oy7BP /$8",ke] /tz!("h;Ҥ}@^^`kZuˣeE ݻ9'd2MBMl|_(RTyJUGQ@ KƞSo!O>+,I<.A0  "jNJ Jxo #ݣ#l :;TWptzM]{ \'8w;~0gBDL-y/Ipiʾ旟:޼GP7ȼy7?3.5h^ܔV)C/?RiTU1v^NRM<߹U1k֮9MScǎ[k֮0 yvϞ14؛pn\J˲lUQn `{;YݫsxҷtNKۯ44;9y)..~t0!-֎]˾jC+XSps R;.heUhzTgkyX,HWXv}me~+8o>{W%_[毤f?GDJР7gY3(vɟm~5f{/`U2N!~XcӚ_ k@|~7ڟ$k)qB"YOxM>`6`ߺqv~wva>^ݦ-0O8?",Lqۄpě+>^v'Dʘw+jj_7 𑣙YfI8`P%^O.jZl{q?&KurrV.>C*HFAYX 4$eL+QfMN*+.{kyN˹=d#뫓畩D ې~\m}lndh:4<,Y1ށ.Xu^|yFLWB=13+;"<̜23+\0nR[yt>nI7,WdfekKca Bܥ@f=p 'yS8O>6:m@IhRndVev؈uWj عt &3׎:{0FN/D~~41{4sɤA=t/)jw2TXV\2!VW'arT.vwЇh 34>D>-kIiێ^2.9xPJ9v6?8z<8u랳*X,qfI$zI<.u&IJ7f@~fwcZ@R}p'sfyX\M̋+UFV߰f/_s%m]+5+GPwn\~EvҖm{rU{ɵM7Yϻv/Vo;o`0pxsyxƌY4iUzUmYyőcǛS&%HJ!t_hcBy _W˚-ZG;v\4_e mE5~bKY!*2~p%)W# ]{O^ePnmA] _O JWs%vX{_Ȫs1]ec&\&zWF4ȲU5߻dzR$wnch F^]}r&Cφ$[1Y[yވ˧L- j9W]QVZf'uaYİIc(akoK۹X^zJLjЁ,]ͲvUU1Yk):3l$ 7xܣ˷ ћ 4U%k_x~?gyZ{x쪹S.`zuߞqJh,xg{ڟ\?k)Chٶ(Fxгa|렅FxٛiMiՍU^}/Peۮ Yڕ 0|qJj>'>XFt‰飖5N#?P;X71bTRw2VSFr[L{_5l0x ^vB b89{4^ q %Cjh.صeߴ#?Ye (g%Bjl ^E|tXFZ]ҝ;8*x0X*RvQ;m]_Ҏ({gƪp| Whi|Xݹٳf4'+WiLFy儂+?a?~,3t`Ǝ)o1dR)_8fCK t('>rKʶrqg5A.6 -% Κ!,y~ݯl8r\-,Hm.m4ʭ8o2qyа}ZCeUm@Hy/ZS8|ϼ!MS|Qc Y ,K0 VY:- /α`տ5AF ,$fnmNiD'p"ZYp~vv~As?$ \ϾڷA{ |cLҷ.`bdYXZVg'D72ݧkʼOpaɕvE0v͟2sKCd\eY8tJ3GNTn^]{vrð$|p7<LTE}+*p9)11*ЁCK64_pؼgOw-uW3/^ha;hX@h[ />Fv'a/=vͫk4FV2e=} +7tʼZ?=n@ 'plצ+/N½Ǽw @60lLԾb$ [:O p_`$@ $ @@ 52P)ƹvI #yjQ(m9-Z}p6pM@sN@ I@ : @'@ $ 3A2 m4T5@z/"T$aX,$=*0\jm_VutSF 7ahZ*+<|"I7 U5e%=*eYVippr Dͯ~ u^Koφ04קR0eLppv$B'Dip@z/ qlTX*힌%R =4OnI hPX VFS^^A45fWT]$%ڻ9Ky*0 ?@D>4h4vvvm2PuեezqpssqBDt>{nkʋ+:#;x8*v;jᅤ:t~NF#mVi?++?\nݽ\꽝D+n.@KB/M /:cޝ%0MT~*ա{o4{挠uv{\z###_:[~__ap1dSfOo֤S=\kmPkt4@88qQs z}`'CMnG۬:%-Z* 9oˣ^WMb  ]HSɷFm\8Y4T̜coVZA|wd }zX{u;ldw%wg_.~E=t^!Qݘ!џ_LeRvdbc"m#$V#D3UTˏ96mڡuN?:"b茗ˬ7h\7;@,L?34w8Nvp4d. $;07N3,8W\J/Ȕ}<=ӮI@]-;>œsUUY9_Ι={7퍭3w_'>DVju,x+NǤD-`g!pX8Fz>|Z-_o&{}+D=\9Xrq+8{zn)cmRsH:Vѩyym;VZ<{?Chn/_}&ȫů5gylvdzp(ڹzoP 4Yh ]=t=u~MI&cC(2"DSXSX X:Ukc׭d2LɥOڿ6ʤg]眻tM꺺!NP4N|+ІtR(R_JX(M\X=}(ܹGoƐg_lat{& v^HG1;xQJ3%P=hjYL*juWQ39hQٝSF'. YK~)6[y6˖4RЊAIlGmrTs1uWKCznP<3IYJZT?Z)jN.QChiy;:aryؖ"^w,AZ_t^d¸^ϩk/&=mD=0h[#4U:u; sFI‚L,h\Bع߅7$m_W iN9PU-iw9!Ac\24`&Nj=6~VN[CCN R[v@KU0fO_+U1mGgb }ģՋVT9V\ĵe<=Z{]m{oIl>TPەG6|Lנ3Ǹ89`@uNϽa2Ϗj_{k Ο#cu(:S%_,|kRJ^߿m{͹-WvG{jAIm s3/MHNNn^_0Sɏ?s`/2y샧z`BED]J=[|A}mB]]EamcHXਨ(0ݫOdCq7ܢ?[l5'#?zIEB+ʊerR Rե9^sfN_ _=cG ;u@ϊo9{:)}Ί Ed޼2y+^gao-Ɛmӛ& \'lmjJ py=D'bD7nfJ0a5@n*OOY/rޜ)VMIPk?N(4!yyS7o$%e YL4Eo[py FU{y] 'Ev= Ó.9zz۱ ^N W3?/CO'!]GFDw5vlXd4+A\=:vzU꯿~6P[u]'pӑNM;aN{mDA>UҵuG{sU09vÖQ/F+nn;rZPi^a@ ]HmUH"n'akbIƎ7v #m*aݽӓݸ R]^ҧ80ښh~Y*KCf2ey uۃ^:GTAC EnIit'@"A"{@mzE*mtkܚD"mݓaaQOxO+ IDAT. #eyu9J@'@ a  ;HBhy@z/vV á* I{ uS:KΖBhh 77uE%EZ:RF ʑީ)m9E_yBn5 R$T RUQ*{BI6ݢ=aAyrDw^I\^COn8@oa@$$z?"ՃJ}G}]#ׯ=z]{3 X|͌|~ӧO7]lYƜruEީb0pg:]osRwD[NNO!㏛=W^i OSZo;Y:I8w[u{32eԴF`m0}`'!Z +SXJD 1x茸;kJ̉<'yKOa>b/;"}/zF`{n>bXdlgںgK=BIuhi9rQ`)4'#>Zez9 hx>Ң]jWVC"˥o:qtkWxĩyp`@ϗLo>]ȏ}\}Ĉѳ7~5D q6Gh=eqZ?9ZI~>FQ]N[]_y;f0oG9%CY't b T]BS ]_SQP\N<{GG;+ ( @ť2'Kc#hOJ-[P[.nXҟǺ\.ze噷h'oGaiʫ4%<ݮ릏޴uatzs3~ku6ϭXqm yY©UռִxS3eY-\f@[7˓r+s2ka!uZj}6y[7QcF"5Iy7<*-QwboU+\񟸤l#AkS!;fpuvF^neS=x@~eĩ7%K'/:eC 2q34Kjr-kWdn}"'˾3N4uHAŌ]9{CYeZ@ճw.3۲hUvoǟV9pBy];o3;3/95P_o۵p"Ų]Ϟ[4T_=n;$XMKDhKLݝ>=UHN{\M|dy|̹|B_!.7gz?7.s:w)c(oȻͪwC_A|V{pNsYY[-X8H?+5mذ!C 5J|/Y N{a.W Ϭ<3%ܽO:sb(S6Vy1|7^bTzJ: b wAM̅+y5yHBBL!ںQ\X_Q\U P*S"a ;$B#?ps=>}w.sfWmUt-Q2e#S3˛Tad+Hu_{S Ȍ;pżmtZ-NK?5~ h}D! 8NP2 WM9ciGܿw% e{/L(:v; $"HFdYP/X2 (P'@s_f?vÓ\_߫~2 K+zD5@iii5%7řk.˦F}Yt:현:A(4Vt4X_n.Rn74(˩}ka(nY14u)j>Kҵ517teFf}=i/ǡ%׮^1@"Wԉ$̬"P]ܗ8PF 7 >ARkf\L5@T)"5I`A~av%N`s2ק; "H$ D ԡmtZ,'TX}X1@>[S.71V˿q$$aN^3N[Lyq C`ͻws"1[v.N1tz͇W6;wn~,цY$K*u4JYq/5L rvr5^ (nfQ7o^Q }_EuLuaⰰ0iqn;#?)_0ּ)M΋V3 ݨO흰7E,X,b%"4ݶw$ho`gkvPI,E-pt9l5XNTf-Zwӱ[#|ڙێ=o?Oũ~toh}d煬gݹ|Y@a-k].>~sOk7(x /-mصVh3< W#d둮c &MV  5%Ĩ 72cw-[}H4;+SFN]U^t3yܯț]j~w="''%]'EMNTs%mIRa*xU4,ߕQj6N,AcTH ,ԋ.Oa>?)1ozq5ͭK0*duF \ntWaUrb O"uZFjPPod*o:@+}ǵwC ɟ&k}~~OU,vND)5H.bm$EEȨtOzÁ K S U5(:t;~'ңXMmNU+ujn(h O,ĩiJߢi]EfD𹓢-5M%IPoއ0g WB8z{T xILT쐱L AwSuBPmMi]-u#,=07޵徹PZEſױ=i=~ƕb[Mu,# }G((9X}Vq\A|ƟnIu=zeJTW'û Dqhr'aim>R4;F!0Prt2  9$’rs372Qø>zNȗVnkhڊS#^7xC]P({Y׫ PFF:~XhF(ϼHrR?!9G(w0 Itb1 DqIx@'!SQ/La|(O~,H$98UH*ť;6!I%īP 1X*Ņj`" % }ه˭!FonN;lHК!}O7g>z6]hN= )^ռ_:ugge(0մ# ӣDfbH󗹍|$޻&;n-"NDxqV^npOm{:~M«!3 +tL=lt0ӑD`z Wt2 C7$E ƭf2L&>eg=N4[q۳W>$zpi{mfDpd_)^qQ(Wr6{5bIe}|3saIl?[iٯF}3"AUD }[]]꜊$V+݆W",˨Gbg 0Dp*yQOM"ɤceүJjdMv/|[kֹ1݇b!hjjjׯ^HU))3rRRUpxS+g 5  s2|wN]z=~󕕔8E,] Y*C1#1VaIF1o&87lF3o anjzDGḀv=^i -9aF,Kgw+ 1Q*fOhi3 ҫٶ6Lq(:~g/:}wUOP[8?iRwC@X#z-ew[M_r> 5OK璱(Pʘ];<==g0{ἅhVI"bs. f1$g?0OfmcX-#@!v D&$aSsQ Gx0cMc} 7t×6nc@`3wy]:$iBÒc˲0i1\_ǎzdN j8HXSU]^9-UJC@ _uD@ h5GΜ9yyx26 k"H?Jc6SOJHܳN9n֙ n 1b󯕥x*Iˆz[۔6c DOFi' ۍĽ*j3ْV|='<e<2~Fj sA*(-g&yr>g7v~I(tJHvB#b}  &={hFiZ @h&XIOHqyĆ}"~ pSm<4Yc$$e*B( @R~VWw}-@G%%y'N#_y8ICp]FH= -\mmyrN^Qn)Y܍dȷÇ]b4lҏ{ۓf\#" +&X;Ƥ$ADw1'.y<}5)k?Cc雃6;JDMkku a34iC(0Hq@`=rdJIo\ 0(֐2{r$1z_/7`ePƩŪ&-^ޞ m^=Jz4`$伒›Ǖ':yRi'9NmTf-Z--]0pTU^{AlYm[84hoy ₏J=OrA % IH$b5PEדNIY`ï֋eD@ceի$}D:; P2G1&57>|x޽ C{HؠJ `a#i)*Cgkg^>ux^K P{,PQpr<.5lL^imr0 |)Zd|0MĢլ[!Z~ x b$ѓH$3a /U$*}B oB)bNo0.'#lbaESW1N# QQhB$ ItDI D~@@@ : t/H**E!ۼyҡCP;;sYVu!p1uQ8jk֝BYV{1AE5*P1L/X4c,-[,XJB(;#oZXB(:M$ :}e\TJ)[/$+;Ů(@ͦYd2p9P(]g"^II4*<@'ܼsӧ@*r[fևj@ \+0#V={!r1ꆊQW鷝;̑#瓕5k֬͛7o޼Rll['@ Iwt|66T3Z[:XeJYjl.,l5cFqƍ7vQ*kĢηΧg`B8ݤ`H$ 'ɓTmp8o޼W?{iٱVӠhiLBt]Qe0 *$ iƣG\'Nz;x͛o3B}V***.\p… vbʉu:q!#4tД)!p$T*uuާeۏ2WLLLLLLzQڏ==aAHU-XPRo5v-=4jP$H 4&SSS Ǐ?~xy_4TI@z4/ Ba~jiNKvg/ik u8)ԗ+1DBf~;ngl!4itY%$'/wsCd|04&'ۘ.TMMɦCUtiLT1 : x#2϶bRVۭ>s6: H0l~Ӌ <ۺڊ ?2<qp??1CVU8p]Srssׯ_'v1O’HXR'πXuuh8t aSѧگ펜MMM]]];&s0%Mg: H/1x@=@ $ u|p-0aôuGҘ릘`ᰅ%%ɭ7pPh$ Ȣ+&kH<77w/_ܽ{r*ZN\W'kv@@'tݔw$L5 [85D+t-O{Z): HK}PAUt4:å8[6L{ذWXo Yfv_Acyُ|64N<ݷBc<6(: Ha:i+3 U@4Gm@>pL&N~[ɘᾍ_^NBӅ@'! +IN3))R"z,&PêƯu<RY _&QSRtt:xh9 Q?{v_O ~NNNNKKSEGʼD*J%P4* /: H+:^>sLg___www+wmk 9u:dB(8MM^yj.n疧}L/o2|f H$DjPIR^ݽx%$q]2-16-CiN;=Pypg3FPm@ :5=Xdef2]M]I"OwmySO^Vfi?~/KO,v[ctih8[t wwWD9|1P3J&g{qACﴚlΝqwwz">> g*xtwH!I@zIUg%eϟT_罘Tj5*N2dȐ!CzL6$ I@zV8]>^$EB/+֭_a>qHS3f̘1=S+]@+@'5\U8y8.ذ^O>|KD"'u䕗$" #bFxy)N3=ų?@ѱ3bΉdI$SnnjSY!I@ڊt9`Y״bŊ$SUU:tСC{1A'CtS?B"5šޯ%$`ѣG6ot@Z'A+@'5(2q-Zkl6/^xE(r1D"`ᰅ%%J!I@ rJmmmbbbEE`0P!t )4Cwoد̵پ}+ K[DuSѧBXH23B<˙Aɠo7'/K"5namUR]RZS paIJJIJ< eϗf߿ߓ1fzN "&''WTTdddddd@@ IG콽O[~Rίjkk|˗wkYLVfk󸋷J!I@z mKҚR9~;|+9>C2hwԶL-IV NқxNǹU4&[1 VM ΁V NiΙ3VVҘꁘOw $<3: Ho"瑉^'cAnnP$ r ֶȏHI(ú~Xi 555%%%%%%%pbE: Hmeme|T[WPVF(֭{C:[b( I@ b2t+ݻ...>|p{UH0}@@'M&O̬̔aluq.Ж-k# F4Qtބ@ 99 ̦M']1ލIH _rZ)ׁ'kMz]*AC]7mڔd2i4Z78%&X[3Y̪eAƜ]e虘7<< I@z)'N[׻2\xwa2͛fДPF(: Hob0jTǏ^`ղ*dyPEZZN "H4F'1F#jh$ }[V["s'z5kV``````w|tJ{[i[Yi[]OM[K%P*TE!]AUNkhie}t7Sg>I?WTBCMVvB,Vӎlf/lhfcIt=f2II"Q=`36Ϙt?ޟ1xFϔU՛OWR{'3:Sv8i#6B AJ!&&$$5R WWQZt3y\LP"߿/RSK<%=W,cc&Bhi7nDDdmp0##uNBf\9bN%¹ݳn-^ڽ-W ۼs޽BFa2<9 `ޗw;"w$(֭c̱;G^ ̀cM &e2|x+֋uSW N.ou722zƍeUT4 EEUpBxtVFhIIrG#h4jh(N?xp:DC!45qvMܵk?뙚g[(YQBƪ>f泋mtlPJSS;b[:dOfggW>z8xeXJ*0VD#E- b&N4VSNl$=HH(ڶ-r￷8;sk&XYY,>=\3gh5kt.M7^.AjꭲrJ?}9mZ."i_Pk#tcdɓ2SRJ\]<V,Gcǎ;@$Hhkkkk+ӶݱȑD"N>vRFF W+9L2$dƤI.Ybo37e#WNsf[TUTY[9d@/I&'MPPȑ#e`DL TU%_#޵#GxWSǣ#GН}:&&F1 na!bzSH u|}Gw"O].Q70Niks JSS.l%E ff\H%%%>oll<\f};͔[p( PTYcFp8)qqH$6IȒ\vrd0/]J(,V4vvYdfe؜E 0 '<X3Yݹ#=Fxmq<<88=&yS%-cεڲ%b`ҝCںK[{?+PlbmmtҥKv11iwo2ں[vB=5}lOoNtvI$d̐!Z'O[oS@ MQ\}aC/wx~ʧOǑ8t+Aa 7ywp9sn}TYU%S1VbQzzDZf[14G%Bs+g5 yIc1_;v쭑1ͧMVqbq D][5i4oxa!zȐ{v"&gg۷*+#Mv!\U11]w)J5Aff&p}c ۷zy^^-:;7QQWWQWn 5qQ:DGG?~L_YY{LO.dDBzhU7v<$ Uvcdzwv}?psXjj޼dm'rƠAlYϹ=Q]]}Μ9>|[NȲݺulOϟ89)=:F%Pŝf>Ɉ7n<~aa!mO_ښ2oĉk߀Ҿ5[?r}Vűco԰Ӧ\%uKeafaI/[f;q_2AXXhI>"<=麺D ) ĂX0H.Q'K|)Sx5.'\iγ  )n+ή͛g 6x8M͞!z{}8.ٕ'*Ս]].^oΜwpH찷׫;9xz_3XY[0=dʽ%(iJ.܇+ Ǘh7Ku\{[mdz0;'Ъmt7ّ-yqe+d$D"f~?pI[uK>sW Q ii3g"BnRbrOYlPquܼB1h'hblgbb ̶mc;f=C42g) J PL+;-T DQ(ǙMgt*vXTVVl۾$xMddVbbqHͭ' a{{4ygTkeƅwgocoIC I ^7V6 J5V AvZ~WWSuulFFűcoׯ lg%ښʲʲW"ׯ_/K&LГ۟hg 82,% Ҷ?X<ϑm-hhҜ?N;K}svc]ɶ8%%ۛH$"9_>!!AlÇ4MSS]"̞}s޼[55vfrF&.]tҥذݚW)MGj,ۧkQǫvw>\S7.OGjzOښn<,,l<,o ZKypAw,b,BBBnnW^}ϫvz *S<4tً7 6JӧVf02BBBzHW\UR0@zQ(x (-Ϗή| IDATCc*4"sZ빶-:lZVaaaݲZ1ΥI߁I,J<sLPfD;3Le;,,Bhb-֘-m-7 ;l={>8DZ6kĒ.|MĤ;\8Prf7,,,Y\---L5VCdGFݴ:lˊ4Wt:ZVl(>>~Z㕺k uu--UD'1h+:lѻ:lwS[# movW}# wfZ>t+"AS|ȶ+w ō N?|_.:rD%'|2U.]jxOkXė}b'䍦qyVY&[O*bmMNtCWiiia0=N ?ѸV,puW'b깠 @AN)v 0iiit:=((ãCE<ѭ o+(}Nw[:? N {׀rt-["lltt:j ;20>驢.,끱s?5ٶh]d>vh(#:jɩ2; 5uv')+D99;&$-[PtVbc >@m4: 3z2۷;9]/oy+@]}U^h5g4o`899ZjժUаY{{Tt NBwxμ9s.+o{]X:cLXw.3G613?!`oXP&m!Jھ$;'d ѭ&~DXظ,/2<<}3Wb}\V]?hd )r&)yL|2Ukҡs+W߿/}#pccc Hr%}=epR-eϳW%r"ۼߗ[Gژk>kl4HcРΜSeTBI,xIK[o׾;w/2m"ufGjժ%kUƌ&껯1zجbt9!,{X(c$EqGoI8e4vx*{L6~  _a}At]ş^abj!X,׉I%Ǒ{FfdTȃl ŢWOY ZU"U|A݊+deoyy찰~{f׊Dv /%Kjq썠NT___'_[/JHxjH FgjawYQBQ}}pךw ?S'FG3edTu}>yl@S s#*%s'bƟĊ54C pX%& 䤊~uq1]~_ְ(PB+J8ُ hM~t4ɞ큀W()f,.?ߑ*{vg$I"hݗ%_E2|ʤ`y:66H4'Q@()ɕO<&UKꕔP9lvrG3#Fr/r#/}>ցjԽ,z]za˰PUe%ɡZ(VqH̅{Cw|E7sÁȜbEb``?U+(8E w'NfT Kʸ!ڿ[?~\{Q-;Qt?N[@q``O? cW/_]7o\v,'/b)OTMebii:fpmEIq1v/l1 /W;F H l;ͪUw*<-[F먇H$WWW}}}4Biϧ"K$"Z5YnĚ93cGxxXT::^Z y7&!l6ͮj>'dGi2|ԡCh4&F>aUU]xzz_,v@Iɕɓ{qX786CJI^"쏝F o1%%՝DcIht9h Pw@=*M]o93|q_Ԇ!|sz6[9DEUV uSTTPl9|8ӓN&tlM_HK}GvMAv.^]7;γr( Ν|m4m &ȃ3X4IDꏝ&=ɬڽԩ6RX]`VὌX,=f( H}7f͚r@Vp8~{?E2~ji{ĸs;oB.W FI|q|)`q{B Ao_""**I΍kku0`jx^ݻi7n`PH,WX?y򤾾5=߱uuuG iNL,w"Q}mHWiv|) 6gSIIu``҇e}l~sŽqIb=Ngrj VÆQCκV'\ii˗~QqV?}z$mmMI7'NMy.NNN?zحikkoڴ)##ã+WN &6}dV B'<4588?vDA>Pdt={2L'u`IK+c޻@UD^?lA~JR vvii徾˖ HXraLBNi߼xPX+i4~E"be^TZZ{#B CX{`ee/xC4I?xSYɯ55%˹b!fr볙L6p:N{Dn֎zˉL&wǎ {8xuuuL&鿲?//iiiO?-J t3~~]/y$ ee4VIx]dd+LM-%(+Dm+⤤?޿xx# ڃK~~ⲳLtO̰0ԡx;gsAQOOzRRC15TNH5I LIIիmm#E;wOR\ɰa#[aefV>ڻ4[q mm48d0*&L 0gۏTȩSo[-v0dEDM#3Lflݴirt}jm#"Q>qes^vl>_ Ϟb5QQ|K|~nn.UYOsX!wAQy?V~  %Svr&4&0 FI G-عs"7״n]b̑f[NwyڹqC_OяϚub˖(^<~u֝[V}[Y$퓗psZajja=<59z󙙽h9z}֭|x{,ZGXw˻{wњ5}233LO?WIO{j0?Fnj;@K}}~fO>]t:L7vza!QQ7l^a95,: I;)9'8pz=rRKM#'TWWwC^?z޼ᱱ\׉x/8e˰iӰ_*xK?l_nh|?  z\9R[d߾r~OR!tO;vfxdܸٳg :@@6n9۷W>MrrѣƏ8qk!` ڄ+O*ڽ[ӿa)^_\\,Xrs=y~;hP3z$??_e65wԩ'L2!fļwppOشinBxxqwKJ];ʕ҈#뤤xNhPxxٱ`JXoh:.TUw gʄNrKTj4oh@:tᆱ>sf_r"bO.G22:sܖ Zm h蓆BݻvGYRnKFs{+<5!|||\P"$tt5qĠH $wt"e :nI.R&1sL2 &E$""""""(@feeP&s86l6f 2 @2`W_}`ܹd# M)Φ Mh'ebP@I2 Эh4F 0l޼… )))I.۶mKLLL7NL7z8p8lmVwHZIX-W.R"] GPt$drƋےݎ$r۲mfhfkFcǝg7L.w8D[ih!W(kʭVN|. }{jux+}rBY|ࡣ*fsm$! $M9s__RZGJK|UjI{i!R(Ue&6 ǯniIvB׿ڡC$gu :J&nʙC9s+*B nu&nG)IDAT&+Tjg-¡ jnmOw5mK@PHkKsʁ!C:&}_mv[60H|!8<ݮT*Ja9;sڬγL$FtK)7@b5 !dӣ4Qkժ:D`7IENDB`lybniz-3.0.4/doc/lybniz.xml000066400000000000000000000205171343532221700156320ustar00rootroot00000000000000 Lybniz"> ]>
&app; User Manual Thomas Führinger Sam Tygier 2005 Thomas Führinger Sam Tygier 2006-09-12 Sam Tygier 2005-10-11 Thomas Führinger Lybniz &app; is a simple mathematical function graph plotter. Using &app; Enter functions in Python syntax with x as the dependent variable. Press the Plot button to see the graph.
&app; Window Shows &app; main window displaying 3 graphs.
Constants and functions of the math module are available. Examples: x**3 - 2 * x 2 * cos(x) e ** (x / -5) * sin(x) xMin, xMax, yMin, yMax define the boundaries of the range on the abszissa and ordinate to be displayed. To zoom in, activate the Zoom In tool button. It divides the range boundaries by half. Zoom out does the opposite. To closer inspect a specific section, drag the mouse cursor over an area. After release of the button the area thus marked will be displayed. The scale automatically adjusts as you zoom in and out. To switch between decimal and radian styles, use GraphScale StyleDecimal or GraphScale StyleRadians. If you wish to use a custom scale select GraphScale StyleCustom. You can then use the xScale, yScale entries to input the intervals at which marks are displayed on the respective axis. They can also be stated as expressions. Examples: xMin = pi * -2 xMax = pi * 2 xScale = pi / 2 To save the graph in PNG format choose FileSave. Using GraphEvaluate you get a dialog box that allows input of an x value and calculates y values.
Accelerator Keys Accelerator Function CtrlL Plot graph Ctrl+ Zoom in Ctrl- Zoom out CtrlR Reset zoom CtrlS Save graph CtrlE Evaluate functions CtrlQ Quit &app;
Operators and Functions Expressions are entered in python syntax. The following operators can be used. Note: multiplication is not implied (use "2*x" not "2x") Operator Description +,-,*,/ Plus, minus, multiply, divide // Integer divide. (eg 3/2 = 1) **, ^ Raise to the power of % Remainder
Lybniz has all the math functions of the python standard library available. acos() asin() atan() atan2() ceil() cos() cosh() degrees() exp() fabs() floor() fmod() frexp() hypot() ldexp() log() log10() modf() pow() radians() sin() sinh() sqrt() tan() tanh()
These are documented at Python Library Reference - Math. There are also a few extra functions that may be useful. Function Description fac(x) Factorial of x (or x!). Note: only works with positive integers. sinc(x) sin(x)/x.
The constants pi and e can be used.
About &app; &app; was written by Thomas Führinger and extended by Sam Tygier. To get the latest version please visit the &app; Web page. This program is distributed under the revised BSD license.
lybniz-3.0.4/images/000077500000000000000000000000001343532221700142745ustar00rootroot00000000000000lybniz-3.0.4/images/Screenshot.png000066400000000000000000000744461343532221700171360ustar00rootroot00000000000000PNG  IHDRNxC8sBIT|dtEXtSoftwaregnome-screenshot> IDATxw|unvSIH!z )`lXaî?!yNPT TNQ^lږ@B aw<awv|~F㦝MiaУItԆFGD """""g~VXÒ%l~ bb I>}ZWDDDDD*7k|rs٬y.v io>|>_cJX,:t@M>[]<84 v"""""RGaa!C 嫰ة})}BDDDDD֭[өcl))XVԐQ$lvχiIDDDDDjnctH=gc/""""Rϩ 'diE7O {-Sg%KGNlCDD*{nvE.]X,Nrr27vK { !|7 ~iHkoz8F-mq4Z+?/aÆX|9~JΝK;wk."##iذa{d# `%J 0UnMuryݓG""uV+7jԈVZn:oߎa|>v O]٨Q#<O^D$fin-q| VE?eKvٙYuyӲpjBgOmM;v-KWeIp*g=\|?liÅ7M0לF#[HpUxٳ'6?m۶>סCvk?͊#"RXqʐxټr'namҏ"saѮ$2t? >8pm?=g\x'{<#?apr\p?xlNL$05o<ΝܹsK+wj4MGFFF6dddo߾Z_D^D$k؛>,-NsF~;;\M@Ӿt+{n!`7oQ2dqͦiߒU؁?>;w0jw {PTM6ˎ7)7X~q+6oj'FQɀxk{qz[+Qt7("rteK]u%N'{}x@q=fCf͈U؋b;箴D@~H©M[I׾0͒qv';M+q%M{~PCY%_vr~> ["mOjEj)"R֭[}8 bdddw^uEv\.W]ZؗL/""!.bڕ.y<ʉԶX^?6 }*r{Q\#oYO-.#dP"Aia_n^o 7?ekGN-8nG@D$$|;v:^aa!ѣt hUϞ=#//V6&MdviDDu $4l۴BU24t3מl,14m݄](#5)^bW $~|+M] 'Qૣh1 ADDDD{L,^"U\*_~/iO|Vo̓X/\#_-.a\5y?;DKI]Fpǿ?a7~Rr̓;WJ^|]>|g]~~}p#'L%WǪEDDDOz=KV܏yL'U]汈A<: M i3?,ϺF5^݈Ï w[_e "/gGҐ7]I&E> qmzDZ&4A:5Zr$nWwM~QOb Ҋ+?qXk qpF[Yz]ӸDDDD$T$p#rljǣXX]K+\՗=˹㲹 an3Nv׼Hk;"&#nj|^*ӭmKy`;ނaJntE͏L? 5cKCi|YADsqĹ3`G;V 5$""""ᦚc1ťѰYg>ǕUÙ#z9_,>X`(V(V([ٚ,|?oNGErˬw;G"`Khi`xc\j=4ڣ6Ui̵ MDDDDJ5/GsϠl^~)۳r>?dmfΉĨQ,~j=y&N!HEJi/_M`!&#.sʬՒӓ˟d8xɱ,fqWDDDDcҤIfffQְ 2Ea#A\f`XDEGa`S@^3XQD;"Y1<仼)آbcpX Ln<7%<4MOą"&>OmG/Wr܌X#=8sGǪ;J̪EDDDϟ_{Ӈ"rJ CA: . ]][aner6qU-|'j]q3yd{ˮVɱ2|_,""""RyEDDDD$dPӛg,?t'ǘEDDD$|}C\B^}YDDDDJCqDDDDD€ {0^DDDD$  *EDDDD€ {0^DDDD$  *EDDDD€ {0><CDDDD-vv{0{0^DDDD$  *EDDDD€ aCDDDDF4+Aa`ZKz4|DDDDD.[V:/_I'ɓ|RoKߏxCDDD$4Da_2lQfq-ʬV+K,!66:`Zx<?&eZذatԩ\ %,L:o[p '0p@暀|Ӡ8DDDDB1i$33338;?XϘ1_~7h޼9:uꫯnyQfZoxDZZ < KyχbSNaܹ|>x0 ˽ܹ͛3=zfŊ4oޜ'|VVGϞ=駟G0H͟??xbaժU<ٳ"""(**<@^u_0ظq#ƍ#664'** EEEaӲeˠ61ct:y۷oqX,222`߾}tڕG},|2qdddtCFFF޽;/2]tK.x衇HJJ"11~6mz1M:ѣG 6nݺadiii\uU5zUW]EZZnN ʕ+իݺuBf̀jCnի;V'xđA~~~}hniӦѲe8nqCDDD$T0 Ν"**ӬY3N'yyyt:IHH$&&xcq-f[ӹIOO?{ܴbXɡcǎx^ι瞋nns2|pGǎ)xQXX6lXe8΀r|,Z (,,|> 4`|祅ٱZqlٲr4i҄gy7~СyرtyGzz:'N xott4. Ojjj{HIIǝ\.bccGI>vU X%yyyi2Pn'իXV&OL||<Çq\c8jua_[Mjj*6 Æ #//eذaL>t٥&Z4i߾=+W0 &OLQQ~;>,6 ʕ+i׮]p\Y3gV^vvv@(Z!"""*66_n7ve˖駟VaKMHHeKvrrrzx^rrrʭSrCmbb1QS>=z~>#v;7FFF^<߿]Y`1k,N'ٳb0Q;P{СCٵkK,ppyѿNX,o8cq-L֮]ݻ=_0prGLJ۶mhUϞ=裏`ĈL6 (&4k,>Jo=q|DDD0trLΙ3>(q=999̝;!"""*:fbOPPP@BBw}7^aaYgEnݎZ4hĉٰaCs^ݻw3`;RSSˍnժwqEEE8΀l_Y믉M6[\5kjcǎ\z饥{<㈍UV@%``?>#FLhѢE@vK_bW_}5111֗/299&Mp[6L^DYłb!""֭[ǎ;HMMp>oX4hn $ODDSN\.6o\:gѣ HNNO>aٜr)DEE8n7[nnݺ-``۴iSy0 Xn[&//fvZ֯_OVfرaw^&NX; %%%h%K~4dPͣ>ԩSYbYYYL0:Yqؗ(Кf̘@֭IOOg$$$rd߆arظqc]9䓉Xj_ǃrvxKEChɡ.EDDDDzBv(_ XDBU}nԾJ@^DsU-7Zu7 ũŸ`EHD]G]`"/gq ί8/w.:>%W]\/~5C#sΩ=ٳ7C.k]P6;dp/zW[=)OND$4%916w\fbԢEKx-Ui\z,v>;Hm1bqu=vozw0sdOz< #5q:7=0ڧW6ŧw\m$]0,~|$׼ Wcϗ -!TP6L'DuTM`fx??^OK(jdSro:Y_u{ys釽{_j~"#O_ǽfsy}2s'Iދm23^dy^/ڐ_LҐ.5k_ɟ^O+:׶?f~yS+ǽ¡q1&?N/OZIx~r+'m[q투{9|rHTs 4ćWrs Y>9T>.F3ccn9W߮` 琲+fm<,tqm$%; ]`nпчo7Jb[_yf6>`R"G+-fڈl%7gk3~ <_:3_~l/M+G~[7?MĻo ^nHLigeݧcmع,&\~!w.5>NH_woZ\C{$K'<>~mΙ>.GKW"u1'^o{0Pѫ+Xh^nm:1&8/M:sy|9,ߙ_O31u&p?m*=ʓʣ&I1{8mTsĽk=yIf/\5b>v/a*3}Y1pt&?1eO`mV~|rHh5hQ4EU ~?v0+{LoXs7]r86Br*b$qn:u{l̥}Ѽ5ۮ:*g{<6eNxHђc/?z\""%,qt ߮BZ@le NkIILϠZОٚ] Ҏ hɭlߑnZ?gc7 XC꽎gnyeW)b/˰%U.d yw9^$EB\5hQ[1c o|U'V[Ќa7ƒ[AomvU[pD39n7oFa,8;@t瑜[p=q8Z_;WeF?Fڹ?`v}÷I]S}R\˭h\*UHQo{=Lکﰺut<|(5 6k$1fMBTb`*og(Y5褤m;j,{;d98+X˅9V͚Lxo;d DT^`"!)}>q%Nowd!OMeQXQt_֎Wukgx(RD:WL{٢61~eaܝ_~7gk<~fTW CPUh݅_KaȖ+XvBU ߇)+N|&cv2AT=a4t$2S/[l"1\؏@KUIYGϡ5h4(i6)gv&rwj7?ng1eUQ^'wB~ZBPŊOd H=decg_&I ),,S՗5KDL1c3$2/y"ǻk!_lӵS^bYĆ ozLzn_.+o# I?נ+2K\0[-+Rj௼yN"mw\6~Cf@ 8 |#x pi׿x, cϗ/=e |}sZY{mpP:_߿fXFvY0s&<~ &)z*{ ;6 }./?.~Q힋}rSQ M9$Gws|rȘ4iYnjM9V/3$::ED9sЫW`R#j_%kTD9$PU͟?8y~+|(KWߛy6ka8D$IZo! cwWsS]FTCJ e}R*nrHNfW8AaCȱQI( pxb "Z~?8`Rcj_%sTD9$V >55ŋӽ{w4hb it:Yt)ԾJ |rH&9}-ؼy3 ,v;riii4opjDZ}Η($ЪC![ػ\.7oN۶m5ߏ㩗EW /QIU7B F@D$}96! E *EDDDD@Hٲe YYY1EDB 99M;ZQ*T"! P[l6m`5 4x齈Hpk_%@vCq ~ao# mĽptcδoorqhK}..܋={qUgVa/OND$4%916w\qvq)4.zENunοcv]uZh R1f̥wbC+͍¼ >nZ̑=2x/Xvzkf_۬oq }tt\*꾺A?{o?r=ړ={3G{9TF {#{%ѹ㗯qb_կ~?@9%'wO KxrlvdCNʕO|sE}|33\~g9{kS*h ץbvZ79oa4؞QMei?V\7,\ C݈>|_};,\<}?r2d}m[q_h O6-/Yyj|{9TF兽wgyYNOѦD y<#ۻa_, nmnt(䵞Z%`n2zc>"+.M$';6w~ _cXCj&_6ݻch^]9ݣ}Nfo kx羋tJ/z7N}+ZpQf*V|\<+ ܬ~bNSvY9$9fޮgm~l2_N/}a sb_yӦBA\.¶tk/ X1:I{54Iɼz =}sK o/_bٳw ~;;wtn&}+N-1iaf|RbSj&]x\Ӈ3xDnvmVđ-[$gs<>)? ~~k8{L]ђ8itJoױ!GT b^OGwxyaNv, U'F) U#[דUr?k5ogcϞqӢAMDǤme"ȼ;k;}7I#( ~fx9$qw^Cڼgyw]N(wBy3n?k IJ38 3^!%2}6ܾ\~{5V4AFSH]e7YB{2R#[U˳dwbYh|D̙H=E{dg|nQGX͔x{x2>}h9t|F)(0~@|7OymOf x9ِЉz-??r8bu7垧.&=n"!9:E,t/ǀ CƤI0s,R[Me㍭+rs<,^3KECh͡-8q¥ %j_ErHBQH[l!++K_sHq8$''Ӵi`"""pae hӦ v]7H0M֭[پ}{ ![geeѡC4~MDBjzj""Bw4lPDD`ZIHHPA !7" ""$ {=PIDDB {ZR$""DCqDDDDD@z}KxgϚZOθ3&piJ4u{ ejDD$Ԫ7}OK׽A;f윷9kiQPIDDBI兽o̸_fR{SvDnYI{p+6O%vms &ۏs6gD&L_#Y$pn\\QRԛxi6slv\S2O""J2Jr|_0똽ˀ' x%3^`RA'[ǟq*E$}Pr1LF6z7ep,ؓѭcywt6s]ަ[-6l&7j(H9ͳF"}32xꧯY68؋H(S$""9l WT^\maHD'w,ڷdE}s"""""r\T=ݥ#KZbY<xʼ[XtRN=u{{ ejDD$T]؛E-x[u܃}pTGCqL [ҹs 4FDDDD$4Uc_޽gpf˜ZNjH(S$""֞F.s8">H(b(U<D-(,} "SXXv("""@,^ݻӠA܋H0MҥKIMM v8"""@-Z`,XpDDq8Ѽys\.W r0 i*ED$Th𺈈HPa/""""T؋"""""aَ;3/5( fë W/((`G88y#`{<8yxP758m>߾1꒞xb矗4+}r&vY`9A`N曭+[߻un n{3gNi2\:$I###*))$iXA3TX8֮ I@}=`{p+tMyv)|B7C]y&oj$͊8?$^AUYI#`&{p*f,#?v@~k.{ߤEjb+_& [0=8IDxMSxLUOvl #3d]LΫ|&vMjWukL>Y|ע#`&{>^^l]3=~ҡPH͒`0`0(IOoY||=!Q@?&zm١S[w|_*WTA$-݈&g ]zLOIfu44 qsqYȗ.iw47-=k׎(--dS ۫6B!i^g[n~UWW#& ;Lk~ݣ d_{ I[H}}ƍA}^~eVUE=` /P .{G?ωV:#d=!=ͳztʼn'2w9p@@ZQ5{A䲮8gEZQ5Jq ơ,'#l&#w&{";=D`zw O g`,HFFtʼn Ikog,``P/'ttHk= @)o34 rjo{wԛ$*z4#/LSҼyv@yx(?yn*Ijkk3<#IZn*++Zv:^B`[<UVVjƍ  VizG _(kJ7{:󌪪~GyC`IGA`|]]% v${r3m -Zd(=yhd###:qN8###v-<)y<KR__v%I:t$IWVYYC/ne,=@n2H=\tʼnƣ=o考pCN9lY考D<)ErUͲ h߾}ڷoぁf?;崶"{ G"70e(..֒%K$I===1&r3mSݣɚ"c,t6 *{fYdʰʹl{YB=PcR 껺'njSNG$:tHo$i*++shÝi;%,kv-=t2s&ZrK?FlTpe#y+ ޭXk)A~aaf̘!I8"7Ӻp3vK g/#.Q6Z}d0/ZU55x_Lokdp/ KrZ[pI5e2 èBtu]]gblV0_V>\ \=wV>+=Pu$_?yn:zh~iI[o>[}H%%/n:UVVV.g,{QWoG?чoުnyX[WVVjƍS{ rZ:۷pc*(|ctl-{lu9zu9%*[bܼ8pzz[ p {5VWU5A%rs Ȇz{ji='khP7ਠ>Rdi45I<فe8< ֮U׆zmtGi Bjnn$AAIRmm~Cs/$'HhgC ip?ԡ{\_c9-]~6}{OuN~_uuu芓5.k [(,c-c݋rV㛧x]'OuuJ"G9$p tJŮKRs!:ܘ slB v&=ܘ 3կh=!-01 ea^3$:[]qit zDcwpOW<&7R2'r<ƒ@zgU#3Jp!Z`R_ ='Yj\={^C W|0gأA-&MTc<`LF` Jp+y݃ɿ|uʡ+M%UZ>oe(_c%8/[z i GȯAdfZK!?c%8]'^G"kF}=hX |>Mϑ9͍a,/bg#j3ɓ'uVIR[[yIҺuTYY7Bll^DZldlRYY7J+b@nիl},;0ڵ ΤH7Xs8kژ}AWɓOU =dͣ?-c,V*Ȏ.8dYU[=d[mY{(uL<THZ @&"dScMů.-\B!577K$V~?a"vɡ)3Ԯ8IY۸QL*DWGɠRk~}]&Xo>5)@>}55LFLD)DtkRa骮@i@@Kv](YV`*6XUcǞɊEho'Ø NCCCjkkS[[=:xhh(DR\=qqJp,{Jr$+J^ZctމX%8]q&KDd4]LťZr$ǩC}=q Jp,3Jr#c*6TK2_g%QcI.$@,1l>b%( $Kp,uE`l0,ƒ ?O%YcI>XpF,fs+٩OvҮ]o߾}}}$RcIf\B %u`Y6^SSuu5gΜ>_ I%\b %^b@,f#82? ݂q)XR%&d?LņX%AiX )+NM~Tl%N_ Y $> %"|:`6?0K3gMҚiYw <ΈuP(fIR0T0${HQ{4s^HJ)FpYy=(++SMM$iϞ=Zt!-I: xBf#_ca`$6Pch%91cf̘DžOȽ6\gea6R;%n8#3YlY(d'm-\Il 1% +seǒXREy"PYLlXY*N<*:yCpSNihha[If( B}C,PH_RjllK ?Q[s|jr OSY,O>dI'xO>:;;k8껕d2~8oV7__W]]hu?q:[n9>%8Fpؤ )d(q&YgCѲ\cI*Ot4adҤxgrS422ֱ}}}|,q###qK,39?2m&!ޱCCCxK,9 N\>؈,@? ƌN':>D9є咈I'ѱ'|R===iw^ 1gc> /h޽ioOOOܒ(>L=p?ֱCc;;;3:sYn=i-O8vR^yۥcL;<߿?s^;syػwoat+ڭ^z)/3'p&q?I9>ѱ%=G)dnPOyv-z9wつal^q]w]~u^N&i۶wh`ͺAҥmzpAGK`P@ >|8 ^]ox}=AIJd}oV?ض6\\}ޮ\^<;:vX!w:ѱOtlÇ5}kSU[[[q-x-uLc `>ikkK;}.\{'g}tҔ߷[ryul Х^}C)<;ȑ#:rH硻ۖ2w3wzŒ43… u׿ufO֟}Q_]'➇>D?-dC\<kݪ_ԝ|XUڳvitז<ƱW]uՄ}?ǣ.ƴ7˾9~ϞWO峓35A/9>cH.pc]ᓤBU?W^Whn\p35VS# !rг>+sυyp,1 ឞǮY8k'zx:ߏ\ip7c=oױ=P^JD!ޱ82,}zzz~8>pz{{Ã13f'q7{D2;Tq8޷Pee7eyulII|>_39|82,.++}֮UѿK̍LdKO%ҷ^Oփ?}]W_*74,sΔ1+rN믷{b ͙3aF޿[mR:tW;|\ܽJP_ȏU: ب;wѣjllO7jpp/;Lmެ|o`O CϥxK)Ycr^9r2H^[if@'-ef]]y)UWW'i{Qnte!g]-s|~"V7o?$ψ9>=O)B9"!$9Zf8jy.C]?@TջoPIO T- I=O93gj._/ڻ#;Ժ^ZϿ[#Yx X|^[>s:*ˆ?Qܹu0y=zi[k&9zu9%Im.݌Ue*(]Ϯٟ/oYNhsY]qtUU|]ݔn&Y$:y %Ʌ%8;gҬymRa͟U)Ư?={T|wWOBzw Q/ďҠcuɟeڌ%̧_PM#tUڛvú5-ݗ06gna"_\M)w5"2y[~k|X@@>F0TȞ,mq|KD ,I  ژkL: d$Jq s5+m.#%F>$cM\grP Y݃('yhs=t[\װp0{G^jdCks|KNnD ;Vcq^`\ks|a5PƉ2{Iwd56jddD'NЉ'3xdd$`5{rQX },8gdR6#"حOv$:tH}}\z:cۦh8@zZcqn`Ϥnv[rt2H=ܤLFhm֯{8@j\cqf) ykJ?y:1ʍؾi6N,<XKL:@2,Y}YaAfi6N,X3 c5=4 '%8O׻ۧ}) ?H5YDM];X 6%KL:@49"P_hXDMN,KJp, trEd-YD]t^E"[o^b",44.2l}$Vǁ3\TcqW`/1Rγ#*D\:ri}=,Hql[X׹^bҁ!@}N:۷k O:`:ΕH,\Xcqg`/1\E@En}{ޓͳQo?cU.-7gҁ!@}9|>U]]?Po?c5$KL:Ybe٣͛7+}(Rcc#?B*n5.[q̀3kij{$@E(//… ~F:)@Jvޭ+Beee׿ʔ2~_uuu@ y<+SA X )yEY{nm۶M?㚚{M%bcu17rs{Ifj2 /o[yںuBk{LɆ%jdofu0 ghhHpX-c=o}|S[ZaFn^`_ǦH3<o8tR=CFeee*((z|(Rss$) * JjkkޤiЄ_r­lؿOfWӑ&АM6ܯ\RͺURR:fpoWWhL N%k`S&+űP1Rޙ&XV^'㏫<38yd^bҁ;)q։l-\P*//E8qB7p?%Tn=qG%&8b2/|Aws=zب:kJV.}***TYY:Kt+N]]>O?vBPoqC枠>IN?&ϼKL:p, P_TguWK_6mڤ;S򗿬?ڿfƜԧntpz+gҁS8hi8NTPP+W[nѥ^+Vhɒ%ڲe***t饗jϞ=:}+$wݣEPI囷{I RSXXo~[h"͘1Ceeeڴiꪫ5wܘwu#+//&ۙ'g^bҁ-pc*g*..u%J6m> u/^nUU%[CPN<W\ <O{V'l?Ĺ ,e\V7%R / ,ͱjﳹKھL/+B+Ł3;x;t_2+߾=ײy+##Hn)N$K]TnЯCԕ?jt|D7U=([YU%:ҙ23fOn>Νg>e7y@+rnĤq`K gD^d8 A w3ۀz{Cgv!0 4YнW]1.?g>S&9`P`Ps;+2ȷX>A45adV-Nم>Aon|uݘ_Ʈ8(}E82HXR(IʹHe~e8}mHE3'Iޯ}me3'IQfZLS A=\`hhHmmmjkkѣG =4`}m\gu6-`ҁť 7uA}芓*:śxZZ8%Zr$@o#tQ.oa,Wiwg>]6@д{\" , @:._w j34& 8=}}}ڳg$u|ҥKUZZjЀ䰯X2@F\gP3fЌ3TQQ1.¾6tufl`1aMGgXK,ђ%KtE?...{h@jΚɰg Y l ոΚglΚlg]qpo# @G@`8{tA4}}}ڳg$UCCCKΡr0qSuu$71P#GD=`=rt=zt5B!577K$V~Ρrp9: ߯:IR  ( @`@"\8B`qͳp1: Pp1p):HKDb,Rҵ= 8]q[ji8-.x#NB`TK#NB`PW{0=B--yp!Z]"to!\CZQB)Bv8 =`{.LYe舃dpk܀8-."UU= 4,^l.b.EDYEZZhupZ]"topJq@tB`z ="zҭsfTU]Vw^{P'(뮻l+L@`0=`{  @`0=`{  @`0=`{  @`0=`{  @`0=`{|lL^<55JIENDB`lybniz-3.0.4/images/ScreenshotWin.jpg000066400000000000000000001526001343532221700175750ustar00rootroot00000000000000JFIF``ExifMM*;Ji\" >Thomas FÜHRINGER3838 2018:08:06 10:37:572018:08:06 10:37:57Thomas FHRINGER $http://ns.adobe.com/xap/1.0/ 2018-08-06T10:37:57.380Thomas FÜHRINGER C   '!%"."%()+,+ /3/*2'*+*C  ***************************************************\" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?=j};Xcr<`c3(A,A9bVH3iNo- ?Bo]*D%r;k=Z+.--!i|0&0 z T;)u;f2AAV^o_ןx6/.dұ.#U6eA]ݻD%ΛɮI"dU<:SWT­z oxp 7&o_ֆ &h/X)/dD8pp3958VEk$[ۉ%CN+D{~f͑_>Q"ދ?k;ۓn,u+X#$AzI8N9QmFFv17l81.\du,WWcÙz/ io5,d*jFkcÀȷ&<7y?q4V*32?kkÊ?\[W9I#˚/ (A?YW%6ʰ NێI74_AR {ijgVFy]YM> / +@4gvEh/h,fiw "# / (A{EdE^, / )?4/_AU3G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4CBEdE / *sKY?4/_AQп"G4GB{EdE / *sKY4/_AQB?(p)?н"w4]ȥB?Qл"|E1л"<9t_AUi>dS / )G;B?3+"χ\[U xYGu?kĤp$c[ M]EաTd&_xO4+?O={i5208oCG^?l?Z?[U|-cqÚ) rOy1I?dܵзe .˱IؿXt*Xr3 +ѡxzkX-9$T9U||ҝ Ũx \cI,KgGݱs2woskB<6KfX 1=J-eNzl>pc;JSc^-VH|=!CƝ%8#o# }e4?M>a;=qQ:WZ=ayXŇ_?WoTQYiSg4> ;ѣL+rH} r?+!tmUڍ4bm+rtnXzѵ'cʄb6ZvI95<ڗmǪV R__i^diM5`Os3r^q(p~^l}I5(]6~ c![f(,7r[kI큋K6'EԿo=I4CmǨ4e/#<ԘR3Z5/r rp +Ȫ5 mX/=FԇmǪy$>dJב֚oSֳ[Nԙ~v~K:ms"CޛRԿv~tKZmrH9.泓Mԕv~tCԽMnC6*Imo\ #PV]7PWuT94Re٦mm/]#P,θ?;=Gb9q0'&sP @6uTmF= =h,Tk|ˁjE?:mǩ{9m>iE mFWe5SsJn@ SqPɦj-I?;o=KF'P?ڡQ[ ?;=K^POby)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} ^PEQ9)EQ^P} "oǨ/~vz`BQ_&oǨo~vzg>̅(4&oǩ|˰s!?.oǩv^P>IdLq ]Io)uIᔂ`}AqL {@}Gj?5WEoms?\N(?EY y@mG=Z{E$z]4MItU#~sͼ.}[_:oǨ_tK}?.*ןy@]Gy=GZzoud2 iٍ#㊢ W'$Gj?տo=R6yZ.?&,k{o=Kj_շ1SOVv`#r#OI7.[b: w@MK}mǩ<]g:/I$n.34$1K1*%ǿ'+{o=դJ,U*^^Gm7I"sNZl-[A]q6?I\O$VC3">5Ɵۆ3E_Xg#үEq "4r4d$5MXxgWj2C>j:1rH鲩&-VhԭYk D;uLUR>lqF[WD Yn%dI$d0U Z4ގħura@jQ3mWcR}2sO M$R(dtlЂ:ukts[XH.QzGqt}_jKK{]+,r惍P@a2 m/;'HTYdRaHyݷ5/ U}B7urZ!ռƫYW1% 9nAqvڟ4ۢy*0 nkNVv1Ap"ȣ?S@L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G}L4yK})}_?G} CFK?і_u?>j; ;м@ ;Nn UKHZOvck XN\|ȩC~֗1juɩ5EHV8 t; 9?qj~"ok}r"_1 r$,2G;/ GVEy$FG 7Ns[5hcDdYf,/;@Qӵk1>bL?*Σz48-th%6f@Χ~*85Z<Zq HpI=@ PƣjYOwy B>_$1V 哝`nނyT~0ּ9o$􇸑44['Vy AiC #2v8#EP?nKpAnQ@ 婿;Xz*w0Csn;2nROzPŸ? 6>ܗ( SV=g4˘n`] #8`E-Pe4;!)$VlJ奶\( m wEs:i{pڗuP̨ G@*k) 1rUpU `{{U}KZfgլ.#8㶙X[U-ߢZ`QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEc2Y׍ #`W2Y׍ #`VO+薶 -#qIEUj;9 )è1"u = gMO2m:̙5EhI^ ҬQEԫ S$qJ4ϷZ?P!l2AnTn֟=ۭ?(uCJW2@F?/Tn֟=D1B7֟}~Z[G|`T?n֟=ۭ?(uCHG'V>o<#E'ۭ?(uCHGU }AO >i?P@ 0#ޡuCn6"mC MuCn >i?PGۭ?(z*Z?QO ֟}~'uCn >i?PGۭ?(z*Z?QO ֟}~'uC>9>L&:`q@QEQEQEQQ<0Ε#Min >i?PGۭ?(z*Z?QO ֟}~'uCn >i?PGۭ?(z*Z?QO ֟}~'uC>9>L&:`q@QEQEQEQQ<0Ε#Min >i?PGۭ?(z*Z?QO ֟}~'uCn >i?PGۭ?(z*Z?QO ֟}~'uC>9>L&:`q@zs-¾=)?|2Y׍ #`VO+越?HzEpA?TڞGZk"3̌AG꧎82+JIJVnڃZvN 3ȱD%b@ 9<3W5=NS𬚔{_" ynQ4e$9p 9SyNEVZ$I8pzB)iiﱚ*+ßo,d݌\}yg7naurΐ϶8Mhv4oƇTՏWټjdo1m3n.,[I9?3xKkv*Csljb O,HJ^;{tԘ=껱$9FNiOiqk ,ekDX%>(,ʠIh+[.Gզ(dYR%ZFE"5>^xդm2_71Y*p%@8szL:دc}wi]8h~FO\r tGamA@Ǩ$u~wFӢ^=B{A˧-GL0R68 R:ohq{8Ǔnv>dOQEQEQEQEQEQEQEQEQEQEQEQEQEQEѱys?AZ5MR]^"e|d\cNO]R+XZAivlo"vSwmN8Q麎:y0 ,q‚q'xSĖzΣi>K-pR8_(+ լfMRXK CB *].Gbΐ϶8Mhv4((((((j6Fs264IQp'T:nii{n. olavʪqgvKm.4W~6ttCFg,`x9ԦnkRgA[S)?5\)pzmM/qK&<Ym䅰*dU%Xt`6Ohb]C׺X]Z6cxJ68()?tՋz-?*ltn?#7ZIm9ca3P{֌<ۛi$8{!),[94)[+ kȭWlidǩpOS [@đEHPvt1VvկFw}7~Uֵ_3OcͅWiĒ9W9,{SAixfXs^_->#q`6KGyIKkj`Aon|e' ɝ#cUQFUzbcaˇlJ,pǁ%k]>.ŭ (n5(9kPFVė>D-ޯsiq8Jx{` :aI<1Ll M-i.0GɌ|;C]^VWr%Ea2rWp:rr_=?S3BVgK;[ɼ)ʒ2'87J4yn ^ XEڑ P{y*dB(0(((((((((((((_woZ5ZsyűQ@0`,oĞI-A@2(9Y]W]>aE mFwI9cZPN[/#OӖvi>i2 Oc#Z_[޽O[f[1LVn9P7nANWK-) R}G'&qX]uem:E%`B@$=7~~n"+H缞[2 ɑ%0Yl;Z.-zmF, Ln1ɿcRzOLtD.q B4F⠒zx4ok޿jry~磳II`B}p{"Z"k6َZgdXʴqʁrrvYlfiLfʔ`N~S9<94ˍ2$K+iXr,+@rr$GAuVZG=ِWL.1f00Ww͑thl6O-`P g;qzBK:GKҴk;H#ucbi ((((((ZG}\kKSos^>~SxzWs/ kB9[kGg"l~] C1wzzIbDq*]Im 6 @“>wVJN>ڜl4~8Je;A *y']N7'Mѭ #O±+9(AkEǶE9;=xz8:jk|Qe^7?2޼+ZoGMY?خ~ ڟIEuX-5 >kɑ(W{'𦴻سEak:#ԭ>kU{2. ?`G֭YjL#Ali1%D{=? jIϝ^ƝRQR.P)"?QVM5tbNڎYi6{k_+vax};|Kk?7Y% ?M>% (u}쿼7w(7w+m/ _ _Ҋ=W8/Ͽ/Ͽ»J(_p{/?M>% ?M>% (u}쿼7w(7w+m/ _ _Ҋ=W8/Ͽ/Ͽ»J(_p{/?M>% ?M>% (u}쿼7w(7w+m/ _ _Ҋ=W8/Ͽ/Ͽ»J(_p{/?M>% ?M>% (u}쿼7w) mGIlk}=M)C l;Wk\oW *lM7ѡEW)QEQEG$͏:$7(8}}ab ~aXة>i>߱Gm?*z(Ϭ?QO6}}ab ~aXة>i>߱Gm?*z(Ϭ?QO61$y@IEQEQEQEG$͏:$7(8}}ab ~aXة>i>߱Gm?*z(Ϭ?QO6}}ab ~aXة>i>߱Gm?*z(Ϭ?QO61$y@IEf3/і?Ǐ4'O,F[ׅ~?i O5C}\p> ش%Etwe)KY.y 15v 07#6Z:JM swg-PZwػȍ1ZhQ3l ךEW*2#dTӡcd{ rMԳGU()$In,x]COԴ|b[rMv g5BCa@i7cxz_5 ?]Rsj\taiݛgM?Tx&gTr9Fx S6K"r[%3. pbq`Qz_5 ?G#i JSG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SG\=/ 𣒟SW7o޿XKC*{=;[TFsy^z*%+wV&\嶫gsN(c(((((((((((((((((((((((olF[ׄ? GM^ת=,p9޼/q2INXI5f].z- 8F+>/5pO'"v>#|OK y?3ZV`>/5Eg_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօ y?3ZP%~fKhQ@zMk'pʩohrNP9I1o FE$3c|R#t;IRC) \is[\Co3O鑹H yU5d!϶"E }h]npnm"x$t[\ḰO1&RCw |.+B05e]aKG5x=؀?jUmGA\}W"`A y?3ZUg_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօ y?3ZKZAX-23$~QWP y?3W@0X g_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօ y?3ZP%~fKhQ@`>/5Eg_'hOօݠ췐wY\c޼WG_AxCvsmߍ6i_ _5`/잇ifb.-aD {U>@+RB((((((((((((((((((((( f m:}yqnf1IGWN+il=vn2nqڵmm$[F ;}(JFP܆4P{/[r%5bXIf zQVhQEQEQEQEtV0VȚӬ[!eF [Q"}Ӣ+Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@7a^W?6޾}#f`W^-݇y\zWGX?|'ykevԻ^^Ad+_1^NRQElHQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEI[yV\ftϔPm]+B6/#FXdc+pHg)vmḮ~aaqYY2OhQEV俺OlJU5(5YyLuzEVEPEPEPEPY~v`r!zxŸ^2&ԥ_@}-mKNiv_EV# ( ( ( ( ( ( ( ( ( ( ( ( (9?nm|F+k毠[!Ѷ4OPskbF+׫m.T|?<;jta.EVQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@ͼw5'LAuܦ#RF 2VGjB|8ZO٣.'hmێ1%Q@XyJ'cVj;Ya<+LR[MX< GGJi7ң]EQEQEQEQEVf5;g|b?f3ß?XXɏ~Au4袊aEPEPEPEPEPEPEPEPEPEPEPEPEP' ו~7٥-|7a^W?6޾}#f`V"[HE{x 8F+jQZQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEPN:iԥ;4dYO?_=m"NSb]_R:VbؒPrKYW-u{C,w2Hlѫ,3#2}0?!׼1y2Cio*Ψ䅍]p9sqKg+Egl& y$%X$M%}?߲ ;S{V,wAn{ !i}NB#7OUIdߦ4CkoLQg9/CkZ^ZG#/P~eW/pn㑗2QuPiuy z9?([-9.ƝV!e7‹MB e=j%֡ S}FYoΦMi%\ &խHEVQ@Q@Q@Q@uˇq đZRGVmmh#5GC>quejjԭ?QEŠ(((((((((((((Oſ+o_>oJZ/nm|F+k>EQeB++--?sWS݊](I ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( +;v$I'$ssMpQ}I<xrMTo9.GSrDk+sKoZ}ɳjĵE'Q&;gSJœܴ(ffno$m]o>PCw)Ԥj!Q팷Ԓ<nOҵmGbѰ+0hJ(*XGxQ ˞#Lt8p*s4c˼4. 8O=q3ZʹW Fr#A5ӱ2=MCf$]C)YmX&By@!j ſ+o_>oJZOd-|kD {xM>л j}E.EVQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@2YcgXE,@I`ίx@ ϑITlݍ!-^uox/cd-b`\Gf (+ saES (nk5gL[x]Vl^5fFB%[_c+?Y{KoC Ml1 c ٭˘ʪU}!@((kIrGpvpIr 0#irW.4~Өz z\XG5M}3ʞ-rIF\e?+NVFX.h󝭀x=}89jNJ..(dQ@Q@_MZv/ÿ6Ԓ\хjVտm> (QEQEQEQEQEQEQEQEQEQEQEQEQECvsmߍ6i_ _5} ו~7٥-|Ճ'ȿw0ev?"RD+QEn@QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEVS̕bds'I;" $ͶfBU^Ulyq t93z(XE @ca#&Koc;j{xcDb"I|~>%)Q@Q@ͼw5'LAuܦ#RF 2VGZVB]mg ㏥jۘʹf"6>8;s ((* ZEWhP?{TRRVd*J̝^Ca3ǔeAP d&մsۣCc#5 ӛ0ȽO܏̏V']>l`lor28,+(ɧgyӓg/?UԢ+b(Oc^E̐ՂrZ[Z+խ$Dػcj:}\K?OEmQH(((((((((((((Oſ+o_>oJZ/nm|F+k>E-GQWW[UeWңB}(((((((((((((((((ZRY"\Xٱt3!#Kf-O]]HA'ۮzpfZsEݷ3`pbw?Co S_pmFf?Hh^9$c$hZ]S%=FF8{ E7Z,aa˩.\vG2-Wl5 aa~אr8 Yچ+N/X]1N|ẩ=e5̪i=4U]?PPjl'?r8 X..d7wvr\Emm i"";PմmGOεf@oF{F\d0 39 >]+zvpGd%Tq[Q Nb jY%Hn"ў~k/vmHa͘>aa[5sUU*(QEQEQEyh)b\Ns19s箅2%٧ff~xgKyY1<88plt l$eԴKЂΧ7 Vu5H 8GlqQe\wv_Z(VeG~)5~bWN,}=JqaHmy4[RӚ]&iEŠ((((((((((((((Oſ+o_>oJZ/nm|F+k>EX4_nVOOGbZ5RW%QT (((((((((((((((/oUz>=s5ri+Q@GおyyB)VxZ]nzޭ" v(nrV(rwDJNN(Q@2ZryR"(s8$8wn]}jͺ7dGb<AF*jǓ:.f%(f8ݏ tnq1/ cb(f1O*[}݆=kB0{O++_em~r=63цjA[\Gc袊(((+ Ek i6Nn R#X{ Uh]2C+T`r=*H D{T\ t?>41\)1>Hx+AT:m]*9\{")3$_"0GJI^.c*u)I;95fh?WSIRFI.8"i #kǥVW"HE;T vl(|]Z؏j=:)r0aiiQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@7a^W?6޾}#f`W^-݇y\zWGX?|'1%m~'=Mk_eݵķh$ mQÜde+^o_&*B((((((((((((((($KRcK[CR6c3?RTq?b!"al1zU[%eG)>oXvǘ=L lA Q#B(Pt|}Ƶ=ݮEVfAEPEPLm5)M64D$LB>{iOb Ӭ^V/wfەAϸ@ܪOJks76;:61FEkR^u]%]ɏtVL 2 HCV~jd~يcZ1U_2n B( ( ( ( (3oaze]EN}V6Hh9T::eaA*$4}×.߂\S6~/~_6k}ؔzaV6jV\*:HzFڧ?U]4cX_Dv뎴U_YWe~#*C?ezhUMcδlw18l~RB ;8ĊW4RPh,[K_aDf6VsNcj QT߱H?^^kt-QU9YwEe4;|~~^-ץ4Uo- MB X{huvгE@d,%LnNje[1QEQAEPEPEPEPEPEPEPEL#ܒde8)q9 #vGJM-KyZ VXx,eݽ=^F+k毠%µ+/@ډLөc#ꊧMjWEm%On`(FQEQEQEmdťim䴑;^jv?t\\w#c9$e&A%&/ߦ61\Vaj%egʻA>'9X%#xRdnS85,q*!b?Ry?ZEٌuQREPEPEPEPT5XR;t-=FLiUXi7c`:rQp$,}ujQ:NCG2ֵa0ͣzue_9ti[G sf8*KOO@9^=p* ( ( ( (G&~lٜhF/8_:*1PΙ%8u u 1=n?DǙu\{W#8\4Ͻz"87K]OZ5[)$K-c >K#)QԀ3:\;ά _V`չmd\ryR1)f;J:*S\VO&Q6a #N!E#jG3Fd\zsMAD.Zއ=ҿɍSmro#3#g T~FXǷrFOlGW NWs1#Ai!9 #]n']Ѣ=be5Z^{ot} 1X#[/$UF9?#Uͭޡ1]`Es|Pvl:Y0ުO\IF\7_J ۡHjg#9嘱I#˅vlg$Ve5150iOiVi%Uɍ=qҀ)îXM,賨0Hvq} - HV*\Wp>9vJ*̱V-GGv1D ̒9-Ē})7b'dea_Au߽7I叾Qk'_i퀈 On[z^f.brMg_^z>XV]*yAI-skZ MتOݎO%5}3N] B)兴Au`dDήOw]H$gG(# *Pge9eu&y )nU+,7ծ# p1dzԿ-cW0Lш+`sT<[߆ vHlZhцUYd9jO S[maMy`w4Ȥ##+22(Z__9k5ep<77pq>I̹SJ-M0ݤ$a+ۼ!~Fa( G89vJ()Rg<?4N]"IVDuhy߻<ōтWlqU}}g?3ץV,-<&՘(u+ >i<]Qc3֌GqIrW8X0@u}L4[ r>n;/#ܖ)Ɣ⛼_CgYi[spsw)2r<¬ǯGQV\[HBAD.Zއ=ҿɍ'+FE9P7ėx H#',^F+kdxް_X?ƼWGX|NF^MK_Oxk#U<{-^M1p WTżQGZ5r7S9F 9/求G(YV1X:qSӿ=Vhw3Tf-^i1\eF#k)Vu>TGum$RA5[MR>fF yGGQӷ3?sԝצ:|O>|(RĶB`j\oy%"oyxgE3U(p~jwV My -b( 7۶0v7υɯ|3"C>$$z=krN0jkUק%e A8\BHh=aAL1zmJF(9A"Z*uǏ=$r e *ؿP-m '__ȳ\[}L^;jv?veF2 jg [>U  [lIL~ѭC^N6a'#[sWdL/pX'ju>P/N9?#T1*[MhP&dnA=/-w,TٍUh(4 ((WbbXd$Msījdc? x\SF <;)u+A /uɤ`Ng(9n?\ Pw뵇]Vm?&pch?"Ԯ%X䔍zԕg5fmvA ݍnoNV^wQw#6`Y {VoT=i+ ˃٥&F莔u4袊aUu }Π6x0>Q@XKJ,$w 2I$訢{((("Koۯ4c-"B^E 0@k)7ھKi6wFtgk-;$2c,"vͨKl4{gORXu$+%\eI֔+CAh$gIH$($-ա=?)MkR9%`AET ((|. R50mmUOrI$($*rIY~M485],q@~x4bHv|=aVTj/Cyjr[J=⦢ܤ]SN{r Q> =q"ǂ7/p%hs'(((( ڄ>$ fHu,lN">a nYP'g`(Z+P((('V!t; {JH,-{j(x6A(ʟCF~Ө (*j7R[‘m77"0XRڥvV1Տv>juNr4V#/︮A\u9ҩZmS^(o?FϿlҿ>j ſ+o_>oJZOdD@v/6-}_kek*Š(Vvdd0q8g }Z4uI.I\dr ]>ڞ^FSi8qJqv[QL((((((4;#ԕE&M'W:Xzlb`KG\S EYâ34+zi^fQ#Mcδlw18l~U(kfPmm'ea[+4-bU+*uK#(A)H 0>em^&(\ .~_FSu#\!Uioh76'ImŜnmF/DeP߆F(TͳcW+[J"bt)RC]R:7~V@ ;VEW֗oǠT)=s*¶+◛?@AEVEQ@Q@Q@Q@Q@!]=Bn3le3v֭-:yqm&ݣ vUfHʴ3|o:aZxՙ2%_cGhg-ռrmv .p IK.pq㊚-F+2A7Faف#VD#Z3ʟV>z8>y:UËc^(QEQEQUOP̱.v/sG'SM''d%N+062YSSZKIOQrUc-/C#rq>֕ZrizD(6Hh9T::eaA*$4}×.߂\Wꎥo!S}ͳnUG#RSii/QQմsۣCc#"2ifQE ( ( ( ( ( ( ( ( ( ݦxt]I22q؜㑻#\;[i'v@MUmmlm̧[j^SW}69r8(8"  uUQEr~-݇y\zWG_AxCvsmߍ6i_ _5`/윽̲ rGZm̱l@_lZJDQT (j6% @Ǡ|A 9,㾳,nz>=EOYķTYk .z$[0Ou9}u[4((((((((( ˸l丗$ WG'SQ֯mnZNd:眚3 F e[ҩZ܏'W_`* x-Ʋ%1@QglZ:\?ѧt~ G*,Vf~K3Wbr}$˩$,v_(2 (9?nm|F+k毠[!Ѷ4NF%_jZcheGbZ (`QE[Io:U(랠TP4wE:ywIevŮm?{'kӐx*QԭuKE-4d>)f;dqFjVJK.?=>QEQQEQEQEQEQEQEQEUJAZZ˛ڬ91ms֬EinQ8$uR7 82I</]4mu;xlq(D\b&waP_]sy([Ұ ?ʧ|X⁗uiJ*SI%OZ=ek)̐ՂO皹E2QQR3,[sG"lpWGì څݓ{ YM OQ>Ǹ=f39Aߚ;qUhfxG,ˌyѽU)"%$QEQAEPQhXGP Vu \[O626Ͼx5hQ3uk82uWԐp0w dΗ +]42D0"{p: Y&(Vl^5fFFWuQ@Rtys[{2`.v窰$8_`F]2qw@P5gAolf _m"H覌#9dTrݵC=Y9ǿA,']Ayy]>$pIrIRN1+ k`KO9|']#mjS}~ڐݦNާK`fK_q,..RˑA5r-IB:|m:(QE@Q@Q@fI,wCNIlҠF4.wzQY,tƙ.|ssHWN8r;tQE2(((((((OVn $]{FpKv `1N`L=c8"/S.*wfÇ(((o?FϿlҿ>j ſ+o_>oJZOdx nz/6-}_ ĹԵEl (((:U+?e'ĀqItbx^)dE*! &iN|g+>Ymf]6틺h&'>r #'qNES (((((( diIPҩdy ')"7aMK[;7!yY9 {= ӦEpBBqUE @)%aԒQL+3P:V3*Ӭ}˂܋k8ܰJږ˲EV# ( (#|Â:GLS`Mчf;T^&!gfhrT|w_{VrM>de4_,QMU3pjuhѢi(QEe<1Џnϵg6NU3;arЍJF.{?!@(((((((((mLj\w(2予獌sFv8pAV?PKyh fCR8ݑ/MMif_ןТ K ȡ0=4ӳ (Q@Q@Q@Q@Q@U6?6f8 ' 'qS\OcKc5RYn[PM:l.Jg8'ǂ9L*~/Db4s# EҲ (!EPEP' ו~7٥-|7a^W?6޾}#f`V"Ol[>8z/5}_<5؁_lZNDQLAEPEPEPk1{m721>8aGpH<mw2y7PKs`{W6ܓn  b6$^_?nQU#GF$OF## V*s)EمQ@(((*vPpc9i$h;!׿f)]M9qՉ#'IY[m-L|̯ݏp)Dk yDԒp3R՚J+???QTbQEUP"$djӭfxsdžOiIkhNO~tQEb0(((H˧zUjx=tCM: xU=guCݓ_QEhjQEcx{m?O< g['hqjI[yV\ftϔPm]+B6/#FXdc+pH:(((((((((( 1I>1wK>y|tt#'zPyYp7-'dON} ?QEQQEQEQEQEPN:Ysĭi6Q.%)daNݍ!gB?]G>3wEx|uqzIԠqҊN|-ES3 ( ( (9?nm|F+k毠[!Ѷ4Nn{_.^M_iW725WMk_kV*QEQEQEQER%Ri ̿o .$xA(&zB: x5jXюD>\W=ArD٭QdgO-QYj2[ʖ,21 Nq<| hM2' Cp)QEQYMmL<=ĸ&p2g=$mRzܣ~QEF!EPEPw%x|7IĂM*1$Q Q{\^@z;+iiIzQX(((*n[~|Vܰ\}qm?g=-.U4~]Y+CP(7Y{KoC Ml1 c ٭˘ʪU}!Yͼw5'LAuܦ#RF 2P((((((((()S"VF PE>6FZ6|ӒL}=<9Af}IVP3=α7jKN I)AVC yjzefQE ( Z /1ڪfs x*ٮO/?чdq$EK}isKEmy5GfdGcOhpBBhU`(J)m9rQEŠ((((Oſ+o_>oJZ/nm|F+k>E?M_iW27%/oGR$(b ( ( ( ( (,Q 2,*!Eg>IJsQ}r;+JM&iԚB63B8̐?|Qni7U)Y+?s4ۚwI?c4ÜI7c<~ѢKsS[G䑚t;ϽQOAR(QcUE `)SI"eRRV{QL(((̿A<^?7Zud[$m]Vj(D(FQEQEQEp$R٧I՘MYJZfSUkoA0}g?c՚mMY ѯK2Vϟi <`@r96tki^ݦRt9jW^*2j^m- bU|1IK|g9pEh/xUw[kDG3t+b4nsLĜжKl4OQu̍\+.`QEQEQEQEQEQEQEQEQEQEQEQERMQ: m[O |Vd1_ (!O9EO/cUUyW3Ʒf2'uIa`K8W>j_yuÞ,Oiɿ%lp|;W1iAGb5$(b ( ( ( ( ( ( ( ( ( ( ( ( (34T%<,j1~ ZuKyzW39S|jkv[QX(((('ɩ@џsjUXR^JA7:MY㤚 QEhjf/vmHa͘>aa[5sUU*+?YyRȹh1:g?0Ֆ5W}O:((((((((((((((((((((((Oſ+o_>oJZ/nm|F+k>E-s#kz{b(#kQE0 ( ( ( ( ( ( ( ( ( ( ( ( --&MKY$9y{2e"1)Jj/ؗC{Oi$VBZE2QQREPEPEPEPw1yÜyW>_>)1c#5%VݓyAf2zT^kK4QEhjc;m>vmϞqtn?ҵ d{F_pwT5mI_t.aqZ1 JQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQECvsmߍ6i_ _5} ו~7٥-|Ճ'ȿs2J^O_GbbڕˑoGR$(b ( ( ( ( ( ( ( ( ( ( ( ( yk?<N/{ *]*#յq=:(QEQEQEQEQEUkVe} hjVuAoγT/f( Le- 27y1+f#.cS*>eV8g)vmḮ~aaqYY2OhQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEr~-݇y\zWG_AxCvsmߍ6i_ _5`/ež|OԽ־ᯉB?]Mk__VȓjŢ+ڢh +ڢh +ڢh +ڢh +ڢh +ڢh _L˭6H(nE@TV-Eb@TV-Eb@TV-LhIrw"?VEOq4E11[\3K!ikF,FĞOY4PEmQXPEmQXPEmQXPEmQXPEmQXPEmQXPEmQXPEmQXPEmQXPEmQXPEmQXPo7a^W?6޾}#f`W+o^F+k>E{ԽWU,r(?^Mjkei-%LYHBAt5ޝ26ӵ8[PX$2s]ݬ7SZ]'r&Hܤ`Gҭ54GehRnt*Cۃ-?=W>*+]7JyP !$'`pp:r&4Z.ambMBF+q5~fеFWb< 9Q ih,f"u,g`9 X\&kp!g'  sS/nWL:Δm5e.4l`H#qן]?q$/&;YH`X)l l0IZ/ qZq ʑHlF08O&\j_%{'CF0zT(.u] i:KHm3{|qnam ]'hV(c^jXj0O{%y4!O< 8?B'{$iMxDZ#tR}Bpx˯NM"շ-ݣxG=i["k%լFy9ؕq S[,jZ#J˸$' zI_L|Fu֢-Øo)fu0`Wͱs#5_ii ЍLW 퓏>\`=~>.s@횵.i7DY )Qb1GO?կ/fmcm;1P#`q㝦(6Keo *C 2MÕV8ݎ?Ŝmi[}Že Ab6܎O?uzAΓm`!O$ls:nw8Z]]}򭨸hᔜLkwƓ{^L?<#0t#= VgHHV$$pĪ$n'َ}|3/1_ɱ$ eMA!p9O5Z\o̫ڥZJщ4\8~ٽRϖx@G'{3Q[˸3y[cnMʬy=gd_gݹTiYбb$p{}~[-rM]?bq3JF.Đv85VTm;f1;|(73H\zrkVw%+QHaEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEP!OѶ_lҿ>j]sCvqm¾7٥-|Ճ'ȿp73¾%]@& XN ?k h?u"ׂiZ>F`Kkm Jq`=H|WfzOE[jIu"Ob:qȵG_)h*&O>$Q a>:\-Ѷu"׀GУH=?EѶu" a>:\-x$z :/?#Q$Q a>:\-Ѷu"׀GУH=?EѶu" a>:\-x$z :/?#Q$Q a>:\-Ѷu"׀GУH=?EѶu" a>:\-x$z :/?#Q$Q a>:\-Ѷu"׀GУH=?E _Elt"K|Q}R0X?7a5n xKEEuzOˋm|;?9K+Dmv?O2~ZK+Lд_P5ESb'дa\:xOgtbԿOx?EчU]>~?i=5/:_1G>ZK+¿wv]_?zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAϖ?5/:_1^ ]>~߹ۚi/sR-?_;G.w/zAqqs{z7QCA$J.N\c^+/ImƷӒ9$po DZ~jhdeZ1]ۛ77 diNv=tN174k#lybniz-3.0.4/images/ScreenshotWin.png000066400000000000000000000662441343532221700176110ustar00rootroot00000000000000PNG  IHDRˡMIӿ~,ҿ7KI$l҅)wec.K/~_ Mx4oZѿo1=I=Ƈd09ǃGN O?xlcݩCF22>3K ߩ*Ԝse~cx_:.egҽUB!P5i2>K-[:{Lo[#BdɤK.'OTGƹL]d9yo1һ>Κ~̹ +k|dB!Prl79gbh{+߅uW`F3zf5k.?kY1yϔ|^yY0\#B&)ITh{¤Yޞa;J5ȤLjsh;\g]u^Xm_:Z!BRܙԅI_:+z4 c.fuHZy0XAB!*U&ְ sr}Lk듵ŤmsuIG!jܚx@Jy =C^֣ p=8Z.,kemrq !B9cݏ G_Iׯof%;:3>C2ҽbeB!Z9Lzۥ3MR!BE¤O B!&}ZtB!0!By&L:B!B B!g¤#B!0!Byiy&B!^d#B!IItB!2匏U}B5r_w)L:B!JUSj݆ՃkW+WݻbRݿz:3S꥗^T;vL{O+ ׽ 챍Swyzr_&!BɊI߱sJ=}jMj_cǎGW^yY=ԝn ~Tz.$]SVǏS 2j IFD6u w.S]??ssu򟨯] o־n6, )Ꜹڴ v1YV#k^۶5Kuk$1>Csφ Yce!BQ![B.'\Z[Ȍ| Q߻2uKSuV~wL}oK99Us} ǡo L7Ztˏmo [>~uʶIE!CGNiE2-ŗr]B!27t]x "~.\y:ݧw [\=ooJp~jjjwgwT{:Q߾+&^߽{W8,KձǦ'ȲymߺúFǩ mˈFm=?lBI_xMP9,S7.׮wE}oe]v9J0#kŠ'P.^<`mZv]jsϨkSoQ+&9!H;w>p+\3"~е*͗edYy:^y':W ҏnk#Ux;XsZ>n#j3OǶlP'{)smj'lt-/v|G2*$ik^۶T>!?6K4 r[crU+B!ڣB&]k rW~WqԜ ͸~'՚W~O-[vghw]Lc6_~OoW=`CB<r>5+F0qU8eS[QO=MIuՏ.T+WP7n/ը{mҿ pO\u~zOU2/ ]m*~uתVçO9lo34WwyZvMhuWM/'{CPH2FZ25tm[ij"UNdS̋z]B!6"9sbB|`OmS/W:t00,oFX*/GmܴN= gԷ-.EoLiooA͝{w[}k꯿qYvu}+c=+lt?'_K}/YVs{׈^O^eu?W"B}*eE{d"[Д?y}0zbܮjܨ}-ےǯ7ܗ ֫5kRWR?R{jnݣj۶F`me| KQ-]Dݻ'1O2eϞ=sۿQ[lRw?r^Ayn!BS).hwL{W|W-SmzcO U+[5nua8lD L2IOl ;ӬB!*UIō1bRV?4"-1YFsuiKb=Ĉxr1Yb/qDLH_ (I:Y/+ϕp-XWB*mQ14!B]¤$L:B!J&!B!τIG!B3aB!LtB!<&!B!τIG!B3aB!LtB!<&!B!τIG!B3aB!L0?YXq\B^iŊaŮ6x4Hʒɱx.pݺGԡCoHl[1M"C?xX~ 7K|СaŰ6x & &;oҥe;t1M")m?8cPm7%"1cL:0vS"")m?8cPm7%"1cL:0QCCCjd{_20дݔ0&`Jۏ0%X`s¤VSݻXvj\ )٨}zsՆcKg25O9uƤet P3V `\v>4>6Ugdu܍Qz?XSp - LU&tsƇӃɑ!5l`06%:F=nL6V1*c9]:湤I|I`IELIɰ1'YdO'`d#s~ь."O$ޠ%MzwfJ:۔I-`~'I;>IK҈$JC(>v[w?8ZNx,Ј>hB chҧ1lҐ3&3%y`~'I:O1@ ]>dO'ccФw/xUCa+@]t<~[O >xߋؔt>cz43y1i MNɻCxdO'Vã};; MzgJa)@)ll2)i0&`Jۏ0%X03kP'i/BҞA1G0شݔ0&`Jۏ0%X02麡.ҢdhnJD0u,U=4Lid 7+V,W~T8tZr6Ic0a0߱x[Ժu7$6[ںu6IcǠ c&]$jB$ ADU$1_߼ R%Ɨ}dno0 7K|FXam0ѶDEx0_nhIHŰ6)d'}-›)YPthx[P3thlML:@`ҡM`ҳ7S0eQCCCjd{_2(sǧwPghthlaG&&u00o$Zrn@T#C̣Xvj\ (KC(ؔy:&}xH}6ܤoTs>YjCⱥ}&et43427aKLƹΜw]u16#aF"iǂƤP=\tR']^/S\Sa02erdH_/ dx3ݩ 07颎Q s?AaNǨH.i;M 1)y/I|Z:=o0-_E B FyҐ:zњ|Boe'ky $WO,wˆFT:|2ifNgL^Ǩvpi1&u֩A/|&}+N31&IsB\};co9I]>t' : 97&᱀Io?zv"ǂ`w%;Ws魈6B'N3B~Ҕ&k^t9 ]v۟ 9Y$ 5kV1ܜ`ۇtPucIy-rI:0-C<ܿ5X,p:N 'BKgg#Xyׯ U6anқ+L (MzsISʛ-_Dnd%;WV%X2&&=[t0I1#9?>t, ]ghthla&gq @t&}ŊСCݏ T+W.ư6O֟ CmLo|ZĦuV[nư6i}//ݼ+4aQd҂]_CmaoEr0ȯVi O* tы/ :&I*be_Cme$7¤#B!&aB!L0?YXqBuJt !JSM$E !IbO0BHƛt.s#gK0BHƛti'*] C!t¤T&!Pa*B(0IG!G~L!52ٽdWy9S;}XB(J5ꢉ!5tAEu˹U~>F˱Ը Q2'bZǦ 14eǃGg &!P7/T'-i' 2e%}j|X (N 髸bM cNfO~|>c: "tByǤw'-_sb޺O͸ >$;VIgVh˝0kRTk0|2i5m~dX l?E0!o%=Y!_(a(94Wg=L&=4qqBQ !ƍ_ <7zjs3N֯}9 43VQ-mXB(={nRgO7(4lLzht'&bLF:r<9pv{ H} ğkgp&!PXٺ]mOXB(Lzd/IO0%ɴ+iّWdӌl[.S̠b~|6`B呙IU7]%0z=FuLEm9Y6irv~u*d}lk'u "tBydh;C^b\TŸG~(1c'\aQa:F +߸4l_@w}o{^tP L:B<24*eRI/OX>ȐbUb]2ʁIG!Gf&kȥIjڛAX5"PL:B<223x$&= 94B2p|6+`BY%c97#ʣƛ+Cu :tP\\B!o|Z0 ĦuV[n0BHƛtuK;!|T1!&!B6 B!g¤#B!0!By&L:B!B B!g¤#B!0!By&L:B!B B!g6#CjhL VK,u].E<4L:OLig>FFyԺu`0`<$2<>՝c&`4L:@` @;L:@;L:@;L:@;rU15::|htA%`Z&`Z&` LKILKb&IIlEtz0L'Orhd$N֝yMLz{)iR:+U13K kJ Ťm4#q:ˤ 7,Kb5p.~~0 ~2, c!1 UD@&=65mkbITn:q4J6y EL&&=`*jy|:^!PA$Ĥ(c|[Tiƽ21{.6L6 J^6وM!oäwaI8P7Ut[Fhy&=`eI8PǏWvR>Ztix[$]`+2>Skb.'$ÇIu7ٳgE266 -+E&&=` ꢊ.6  h;EtI4plB¤.l7o%1H6^ &}{0.l7mmB&]uPQkIdcs\e-a'&&ؘ odM\56x́6MI\V] uCqD6&dr8 &]b.U@kҫJ*qiҫrWQ@^s`MzU-UX@2Ug@(ҤW]!k\8Z"* 6@`LUApUIPu!66@O[T$ &F6p&]gjH8P.Lz: ge wT ^G= l 8^Y&m>PwuWxWUuy煷E2?ZFK$4[êΤI8П)5><9~ڱcG~Z[oUW_}ux[$edT}}:4l(^w5}QC#;rwHpOCae $pm&Ё&akI"AcUultЁ&akI"$pנ 6MzG$4^s`L!tNOLLWt od~Q|> t  c}Ep ]٥V%ݗ@m90&ݗ@W2t:l{́0>U [&ݧ@|ƅ)G[&ݧ@|ƅ[EH-@y⨏:3.@t ?بh@ϸ7ZĉP`&"I  >kޤWV$hR_d"u;S: ^6e;WX: ^kޤOӺ`r޽'i3~jdP֤W}Ls,}D7IW֛/`rFd $בHV$(Gw5bb,wlz"T2QTH:`tG qnRkщq}lI yKחIw}z*a3Mg#Gmҥ$U!X431Y|m<ʚt'!qM["n@M8>~Mmg\)cҝt3O&ԀΝ7;JPIH8ǏgyFYF-^8-X>$`) Pֻ8Zn} C<}"T ȑ#j?ꪫ"ow*Bv #(X>&|_kMՁA}aT2]vem2я8VZnu ߷Oe )jҭv+(.v DžjQ5[kҭ `QtkNJ r }L5V*BQ 5Fe (jҭu+*(U+*a5[iҭ 䯰zmTŢ2)ȟPcccjtt4-&X>])6bU`p}̈Q4VW\1EFe2(ZIR$F"v *@QtxVn<)W 6ELc J LlI/j2FU!?ELzcM1)טP`GJ^jU<2NMT@C^X6@RK>z֙N6Zc* 5&F2'>X; @lI/jN6BknRE*饺:/ (Ac:^j՜l\U!kKu=(l@R>37F?s-:?kKu== (AcN:^xydt \x'I/}(@ |h9NLz ɕJTsAh>&''Ս7ިfϞ, w=9:}hbNLz }"@h?vڥ}QtHgQa݁<?MLz a}"T|Z0R衹-ԁ0>526F}"U <&PSc[)g.27UB'B \`c u &@RC uKx֘Bd# .pKqaC(ԁ(n%q_IJlI7n64ۃ`'E:SZ$ :T#C#0mvhx2iMIqCZLva|^&ݨmd#) ڷ&GP &ݸm+BZ ;G;13W,3*#n4 87Fmۆ& Q?ҟ 'Iɇ)5>.<ؾI7jJGԿұh=G^&o۶a&d.%<J~$1FmÓ &+HY܈[Gb&@skyFtmCl]r)ƈ '|&ꩧRWVzkx[$mpO)ȹX@VX0% 5m[~4r915*N8.~@v%=Ӭ\pv ˼z2/PRIk3۶5|Z5$`4ٶQEށ!TcCJk:8IcMzf۶qUNk#Ƅ#tf3۶56:w B`<XڶUL'B 5&`4ٶQnYsqC: &sxi3۶"2Om[ı:VN*w^u*C&}Fd{!/57ʘ)̸@II_E6ʤp%e68 Up& Ln)٘[>{↍bC6*P܀6>EcfL W"TvӪPQ±eG!h q>c`7t/TT(yL;mVFlIQ| LLT8p@MLL15::8: t/TPܰ]`]S܀6lI/P|qqMw/+CKcɒlaX#^I"Hac2eC09qqU2ν-nLHFflIrVln4_q>aqmMYT+Q2D/C⁀I"3dډj*/掊 ia77!ƌ 5c{6\Ί+·NU@ zm '$σV7=&:Vdwj$ǻug8*nz<1͝.7d,bu#fB@Ƙ "b!/N&dC|d31ShZqB~Q:mx9o-aҧ7\P]DzoTrY1Av_c*og&uVf, L$e?hd?F⩎ȤOw3 wFSɐōX[:q,$YqY/G2%˻D&0=."TFk$^VLطlJߧҺȟ 7I&dϖC:ǎS[nU+WT .T]w.D/>>Pɐ@qa.iC3K7'Z.I$ftѣF#Lz WFk\VLd2kR ǝ:E&O)Ǒ#G</^ uP}h`ܓ[@%C^ 7$=% ݾTΙ3)bv3FlԱk6¤gm8_g$ YlT8s\2#z?ڄ wm~؁6|-릒yJ71}J9wqD_QFZB2b]9&]|?릲c8β FW/c)0|6Ĥzvzl_Q8rSܘ5VѨ+>w!IL^OW:ӹv[ti?>kp>l믿Qp$Ο?{/nuE>" gβ95U`}[*Cɠ:lٲ!V񅿣V|]SIuQu7lkתM6uU0n" 5֏4m޼YY{/6ʇuckӹv[Lt"@\ccc3U7ޯ>~o~ڲ%2Uȇm1{lcc&Ϫu{i3s=.rcqm:яϾzZgv2>N]~Ƈ?^ڲE\U-2I] 7ܠ֯_}J+Nӵ[n%JǪTc@Lag?xLjҥjǪWa|3n8F?~O62q?UK,>f"ɫU.:\|߫3`1S&}ݺu=1j]`y{}LxUa[\p>fe3}T_wʪE+i?w꺛>^\lU+oS[UK'Uvl]wݥ}J>f6DP_]H>pz߼T'uꩧ2ulkΜ9n>V~_޵~e3O>9SfKD6p+:aZnks+䋵Bwn:{ZЪ.#jhx\M%oAſՇ~kap6 wlg> 9%7FqE̔o+3%}%uCwTY߯*x超&=p_XsݹÎläfj%p?4'ؠ#1-Z%1ٲeNLl &51 b=]njcq/Q#`ٓW ;&]}`*mQ!-f{xe]}>t"դum|Ýwñue zDO2(@j2T}nf<'bƏlYZ2 MWw>2ʧpI~<ڑMzӯgq~}}9,v!뺺K2nʶ|jU|qō2WwSEczvˋ/V{:ֈn[:Hns~o<֐bIRšP옽ԝpl2#B-SI5oW_~]PIoeYh iyKͨkp [TwPZ@r{sgOZbEggxcua`c,[aBg䎙- 'ՄTlH8cғܱ .P>V^zCI# 3]LF(Ybgż&Rao5j͵SMLz+h~]5$GL8Q kkR4qDizL6Bfar$˰.ko/zGAÀ@$'8M,nvB^C+,nh[B:ռ?փ=դGMLinM0i 16M9ֵ P$h~M}%ں wqCf;ATVґ(STXܐu)siIݿ9G}9^&_ͤg pm8Qd;iE_|E' sij1J6B,I8[_Z&-%RwPuQqK'{1#>ϓN~%W 槃gj1cC6\[(jӢ`n<2sL 8Uz'ܧ9'4}ĤLh:XdcF*LUX|dOIO 4pf3&hy1b QEߝ3%] Ypzܗ >9Gر#w|*{\;.| (%)Y|\rw?:F0^򗕚t/uunN4>92&%BF " g{0>-l{͞=[]SC};>eWK)X>K,n>}8:UT| fiTpuK[wë>௖+OBuLXZaC\G! I}PuI`vҩobT ZU(~I/ 566FGGyO+.V*_vbҡMD٥QVqXܐcSO3lJrt-~L ZEɦjP U!qSo`#cǎM6˗ E2kyZ సԓLlҹ&FmWpQ$)'aiڐk#Ĝ'mm{QvZtR5H4Laqi'ݛ|ox֙tMH~^0 ECqM& y++#$p-]=&8*f:,n4WlJ2MJP ceL:P$I肘WFpp0IFU0Vt>ƻ)8*n4YlJRMzhV"4&m `""~l>d# h‰F$F3`2%:6xӘ鰸s֤;K4PζI7f_~6[kNWOY,8EhMZmG˼f[b1SpT | e֓=w pI6ɶ 566FGG"FL ޗEqTk&.W4cҝV"4!0ӄ/M<QڿlFZۖJ: Y1S&]t*/ʶl &iI"Դm\#$h)nDfѻꐃ˵+1BJa#mIA$-f/n:?ਸC<%\ 5{LsRM;G9J8u^)li!L:9<8(n݁s%1S|frBf&]v~m[aQm2 &]GCS϶h#s-&"U!ЧѯmIJcF13$B/P֤i?4l[RY0pLB'OaCW¤TK%bqôو)L8 5}M=$%ńӯ*ԘD#)li&]ƞAڮVZ1&Kō~FLlJܙ>*m 0(Hp$`[J8?t]'dmF (G‰Wf߿I}爝?Q -&oXqSbaq#+F`wX f/PƤW)4l[ГҴOW>)SR^alψIh)2t7r.X f/Pbߤ|-L@:&xrQtxAd3>Vh8p@ML4W\:,uiSO=5-2<I4)nf?W;^(oҥ #>4l[Lmy@7K6#jhhH oRIJM݁4M?ѮI f45 vp[L6Sj||2oW]nжŤ ;J7ف̑/0q U6l[p@ɄȪqacJw[ ڶtBqH\ц 5m pW6&G:[F1޵R9i`ōu @=n8_hٶ qU!†IN"S, 0,n4i8bChJtIM?Q24*zL;LJ7Ձ4.l%vLz_TJ$FUr6m1FFc:9 B.PbǤLtHdiDU(gӶŤ 9}Xt 36r&=giٶ U/O0bqсr&=giٶ Pf@=Iu 7E2~,Ȝ ' LzdӖ زsg9Wr&Ӷ׫;4r[I x;>W[}93mp}:9*T m2`RulIBq^[[6T$q۪PdI` 7@m9iT(n $6m8f{0]L^QIp 7@y>S̤L6mpP9I"ƻdߦsɦM*@̑JTԽ`}??11hx[$`(s@m:1I/lNB;^U0>RIqǛd ٦sFQ(ĞW-DɦH!b7Ȃ^m>3%M6TLxq"Td#>b`?9^t KxͶϤH6mpP9ZPP%PIir7@E>cnK&m8 CګB%M#'ōZ;%f}47%I`ZB9cG*0EōZ;%f}43%ж 5#&RbQIIu Kz6ߤ[H6mpP3ZBE#&Z:f}o-$6n8à^yUʈIz;fdt_]u|UyUH֧ĘJHꦛnRW^y袋"7So5xcIzZN *0 KɦHVoھ}ZjUx[$Uց5xcI7H|&2 (gT* $>Sʬ/]/} y7K^>MjPٯ1\d3箝aC!e*t0Avށ5zLn$q ?xHN09R5H([¤} N;f%5FT #FPfY*RQjP(c o۶mjŊmc k&}~M`<:TFFeл(X ER .TK. od>@*z2㽊R譤 uD[Ǥ$AvIgV;bf}5i@~d`%(eH`f;m>ѩIo@~hQRX3/JLrllt1PD|ҁt36Ԥu ?41bһ P#&Js)Gg&OEfe*OSmE37~;R,>:31ؠ0.~ C`2ذW>RI+t95/7t>:3GǦg d^sVV g?f*mL:GͰ$]$aIȹv[!L:!̃5tL[e8p(GC<^ӉI1Del&@*:5tƣ#lV0L xM&ǖ@KEl&?L:xM&fE>%!L:—xM&ݷv@>$[GkתK燷E2t kZ7GC±U:vڴiZ|Z`Ax[$lKrPU>(cplW.9H^ӪIU&\RwrU>(c=ԙp\T0;uH&4L8.*BtpMH_0SL:Wjx`0pWI:pQtYȤ ~ l'y-*z-w^yfu=E2 l7Md SCo]͛7O]zmYWl|VװaM` ԉxۤWll̫:`Nl*CלI_m4Ӎ VLw L:k4l4DE?tDqj&|kcң#KbYiI0718gڤ )!(֝&'M9^ӌ: @ӐxS̤>4Ǥ@L:@L:@L:@ 8rzŋ5\|htp1uVrJpH@L:@L:@L:@L:@ ??11hx[$y`ZtvIhtvIhtvIhtvIh8 .0-J:@;L:@;L:@;L:@;9At޼y.Sf o8q`Z±cԮ]?@3L:@L:@L:@Cy뭷BSƍ"YI߳%B!¤#B!0!By&L:B!B B!g¤#B!0!By&L:B!B B!g¤#B!0!By&L:B!B B!g¤#B!0!By&L:B!B B!g¤#B!0!By&L:B!B B!g¤#B!0!By&L:B!B B!g¤#B!0!By&L:B!Biڤ#B!|g`cpIENDB`lybniz-3.0.4/images/lybniz.png000066400000000000000000000053151343532221700163150ustar00rootroot00000000000000PNG  IHDR@@iqsBIT|dtEXtSoftwarewww.inkscape.org< _IDATx[{P\νw_d!&!dBLDvyTm:6fdlkFmqњT[GN:4ZCcK$% Bo]q޻`X:#̝R 9@98RkYx( ǔR"F@)ύȂU& 7VX@nrcU ȍU& 7VS4Q2ߑR lVg(//,?S=JٯN?Q^ҫR[[;DW PUU^rJTndfOy,'+ٙ;?S(//׳,*Bn,֜!Rxge]zCǧeA3^![Ȣ xRz0ZtPB#1PbȳVA =xC"+~sõp C@ݦA`d'@C{"6㧲8***E4@(g*|MT%"AOukz5,IŲjӹȶ@lw`ݨAc_#nII@Tlnhh\.,TA٫B҈vPRoc2XVVVI?jMo<\ =طoS6 1$|۵;KɧkyꌶgוqE#i/YTرcGg.^^{0rR+) tnb9o浞:~js̎GjoI۩\(VsSPPBs+:*?T*`*ox Eez㯏M5.0]YYhƓHII1S=Uյo_Lq0xjn\<ϿRuZ7t$/ ؖIq9ދm< @WqY҄&koJ>l8vKӡV?^җP[=}S RnydrWB(pwN 殺5F ᛆّC*O)#0XI"1vBg\bƖd2yNJF5e e Sڡ<(&$:FA)֙ȵ]7_ByA\u.HFghԩjťۉooNoeS]Ɖ4s `~?{U (GTQ+oCA vY M>bR J)FGG>nSP|$-#:' `CCHm2Ea0crI@oG/F?]H3E͟tJy SCz [ ٌzx48ki&0TNt#x-*o }4a#lk۶mOr yNO3 CX{47A˘9DI'ӏJ4Lةڨӗ }&I>]Vbh4tٜ¼H`U)M%xy!y|\iL3glXngey65lgԹr8Ɵqvn B+=ޢ j̵RrKJQaCgSߟ)w8HVq @) {IKpD+wu+6^|ٿH-ZQpО;kjjpܹ 2enL6I 욞wTXPM9mrG,:~fbkjH $@t8]jlltJ^>1b7:Z<5iq `0N$\*X<`wl/w~2^Na$_JLOtצ10Ahj-@uu5Ol' vr~<2CA S`-bg^4v|)6hkn^;a444"u4{P-Bߗ$Qznťo)E@ #IgҼ>NT[KRJ OȘ8&#v~7F?0d,n0j$JWl>s&WƄ?mx{b()8y䧬ޝz/l2HYi^ՀpӉ{\I,&V]R d1A C63/vx%b)+++bYE:lslls+e{9HjU ȍU& 7VX@nrCNw\$dRzRyGƿmIENDB`lybniz-3.0.4/images/lybniz.svg000066400000000000000000000116701343532221700163310ustar00rootroot00000000000000 image/svg+xml lybniz-3.0.4/locale/000077500000000000000000000000001343532221700142665ustar00rootroot00000000000000lybniz-3.0.4/locale/ast/000077500000000000000000000000001343532221700150555ustar00rootroot00000000000000lybniz-3.0.4/locale/ast/LC_MESSAGES/000077500000000000000000000000001343532221700166425ustar00rootroot00000000000000lybniz-3.0.4/locale/ast/LC_MESSAGES/lybniz.mo000066400000000000000000000046131343532221700205120ustar00rootroot00000000000000*l;   %4N _j     ,3 C MW]djpv}  "08@#Vz%>!Rt  * 5 F Q Z c m t {  $  %()  '"  &*#!About BoxCustomDecimalEvaluateEvaluate FunctionsFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:22+0000 Last-Translator: AlexL Language-Team: Asturian (http://www.transifex.com/Magic/lybniz/language/ast/) Language: ast MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Tocante aPersonalizáuDecimalEvaluarEvaluar les funcionesXenerador de gráfiques de funciónConteníu de l'ayudaLybnizXenerador de gráfiques Lybniz_TrazarFunciones de trazáuDibuxar gráfiques y funcionesColar de l'aplicaciónGuardar como...Guardar la gráfica coma mapa de bitsEstilu de la escalaEstablecer l'estilu personalizáuEstablecer l'estilu a decimalEstablecer l'estilu a radianesX maxX minescala XY maxY minescala YAverarAlloñarReaniciar ampliaciónA_verarAll_oñar_Reaniciar ampliación_Tocante a_Conectar puntos_Conteníu_Evaluar_FicheruG_ráficaA_yuda_Colar_Guardarlybnizlybniz-3.0.4/locale/ca/000077500000000000000000000000001343532221700146515ustar00rootroot00000000000000lybniz-3.0.4/locale/ca/LC_MESSAGES/000077500000000000000000000000001343532221700164365ustar00rootroot00000000000000lybniz-3.0.4/locale/ca/LC_MESSAGES/lybniz.mo000066400000000000000000000032311343532221700203010ustar00rootroot00000000000000)  $*08>DLT] fp w ?MUkr ! ")09@HPY bnv    CustomDecimalHelp ContentsLybnizQuit ApplicationSave as...Save graph as bitmapSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom _InZoom _Out_About_Contents_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:27+0000 Last-Translator: AlexL Language-Team: Catalan (http://www.transifex.com/Magic/lybniz/language/ca/) Language: ca MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); PersonalitzatDecimalContinguts de l'ajudaLybnizSurt de l'aplicacióDesa com...Desa el gràfic com un bitmapEstableix l'estil a personalitzatEstableix l'estil a decimalEstableix l'estil a radiansmàx Xmín Xescala Xmàx Ymín Yescala YApropaAllunyaA_propa_Allunya_Quant a_Continguts_Fitxer_Gràfic_Ajuda_Surt_Desalybnizlybniz-3.0.4/locale/da/000077500000000000000000000000001343532221700146525ustar00rootroot00000000000000lybniz-3.0.4/locale/da/LC_MESSAGES/000077500000000000000000000000001343532221700164375ustar00rootroot00000000000000lybniz-3.0.4/locale/da/LC_MESSAGES/lybniz.mo000066400000000000000000000044041343532221700203050ustar00rootroot00000000000000*l;   %4N _j     ,3 C MW]djpv} %-5Hfu|  .GNT\ciqz $  %()  '"  &*#!About BoxCustomDecimalEvaluateEvaluate FunctionsFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:22+0000 Last-Translator: AlexL Language-Team: Danish (http://www.transifex.com/Magic/lybniz/language/da/) Language: da MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Om BoxTilpassetDecimalEvaluerEvaluer funktionerPlotprogram for funktionsgrafHjælpeindholdLybnizGrafplotprogrammet LybnizP_lotPlotfunktionerPlot grafer og funktionerAfslut programGem som ...Gem graf som bitmapSkalastilSæt stil til tilpassetSæt stilen til decimalSæt stilen til radianerX maksX minX-skalaY maksY minY-skalaZoom indZoom udZoomnulstillingZoom _indZoom _udZoom_nulstilling_Om_Forbind punkter_Indhold_Evaluer_Fil_Graf_Hjælp_Afslut_Gemlybnizlybniz-3.0.4/locale/de/000077500000000000000000000000001343532221700146565ustar00rootroot00000000000000lybniz-3.0.4/locale/de/LC_MESSAGES/000077500000000000000000000000001343532221700164435ustar00rootroot00000000000000lybniz-3.0.4/locale/de/LC_MESSAGES/lybniz.mo000066400000000000000000000031501343532221700203060ustar00rootroot00000000000000)   * 3 =IP `jpw}'9 AMTfw    08?FM Va   CustomDecimalHelp ContentsLybnizQuit ApplicationSave as...Save graph as bitmapX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:25+0000 Last-Translator: AlexL Language-Team: German (http://www.transifex.com/Magic/lybniz/language/de/) Language: de MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); BenutzerdefiniertDezimalHilfeinhaltLybnizAnwendung beendenSpeichern als...Graph als Bitmap speichernX maxX minX SkalaY maxY minY SkalaHineinzoomenHerauszoomenZoom zurücksetzenH_ineinzoomenHerausz_oomenZoom zu_rücksetzen_ÜberPunkte _verbinden_Inhalt_Datei_Graph_Hilfe_Beenden_Speichernlybnizlybniz-3.0.4/locale/es/000077500000000000000000000000001343532221700146755ustar00rootroot00000000000000lybniz-3.0.4/locale/es/LC_MESSAGES/000077500000000000000000000000001343532221700164625ustar00rootroot00000000000000lybniz-3.0.4/locale/es/LC_MESSAGES/lybniz.mo000066400000000000000000000021761343532221700203340ustar00rootroot00000000000000,    (' /9 BM V`gnw   About BoxLybnizQuit ApplicationSave as...Save graph as bitmapZoom InZoom OutZoom _InZoom _Out_About_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:30+0000 Last-Translator: AlexL Language-Team: Spanish (http://www.transifex.com/Magic/lybniz/language/es/) Language: es MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Caja de Acerca deLybnizSalir de la aplicaciónGuardar como...Guardar el gráfico como un mapa de bitsAumentarReducir_Aumentar_Reducir_Acerca de_Fichero_GráficoAy_uda_Salir_Guardarlybnizlybniz-3.0.4/locale/et/000077500000000000000000000000001343532221700146765ustar00rootroot00000000000000lybniz-3.0.4/locale/et/LC_MESSAGES/000077500000000000000000000000001343532221700164635ustar00rootroot00000000000000lybniz-3.0.4/locale/et/LC_MESSAGES/lybniz.mo000066400000000000000000000024671343532221700203400ustar00rootroot00000000000000  '. ?J_eksy   al r  &0   CustomEvaluateHelp ContentsLybnizQuit ApplicationSave as...Save graph as bitmapX maxX minX scaleY maxY minY scale_About_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:28+0000 Last-Translator: AlexL Language-Team: Estonian (http://www.transifex.com/Magic/lybniz/language/et/) Language: et MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); KohandatudHindaAbiinfo sisuLybnizVälju rakendusestSalvesta kui...Salvesta graafik pildifailinaX maksX minX skaalaY maksY minY skaala_Info_Sisu_Hinda_Fail_Graafik_Abiinfo_Välju_Salvestalybnizlybniz-3.0.4/locale/gl/000077500000000000000000000000001343532221700146705ustar00rootroot00000000000000lybniz-3.0.4/locale/gl/LC_MESSAGES/000077500000000000000000000000001343532221700164555ustar00rootroot00000000000000lybniz-3.0.4/locale/gl/LC_MESSAGES/lybniz.mo000066400000000000000000000045611343532221700203270ustar00rootroot00000000000000*l;   %4N _j     ,3 C MW]djpv} *2:Lk}#""3Vu  - 7 @ J T [ b j $  %()  '"  &*#!About BoxCustomDecimalEvaluateEvaluate FunctionsFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:23+0000 Last-Translator: AlexL Language-Team: Galician (http://www.transifex.com/Magic/lybniz/language/gl/) Language: gl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); SobrePersonalizadoDecimalAvaliarAvaliar funciónsFunción xeradora de gráficasContidos da axudaLybnizXerador de gráficas Lybniz_TrazarFuncións de trazadoTrazar gráficas e funciónsSaír da aplicaciónGardar como...Gardar a gráfica coma mapa de bitsEstilo da escalaEstabelecer o estilo personalizadoEstabelecer o estilo a decimalEstabelecer o estilo a radiánsX máxX mínescala XY máxY mínescala YAmpliarAfastarRestabelecer ampliaciónAmpliarAfastarRestabelecer ampliación_Sobre_Conectar puntos_Contidos_Avaliar_FicheiroG_ráficaA_xuda_Saír_Gardarlybnizlybniz-3.0.4/locale/hr/000077500000000000000000000000001343532221700146775ustar00rootroot00000000000000lybniz-3.0.4/locale/hr/LC_MESSAGES/000077500000000000000000000000001343532221700164645ustar00rootroot00000000000000lybniz-3.0.4/locale/hr/LC_MESSAGES/lybniz.mo000066400000000000000000000017571343532221700203420ustar00rootroot00000000000000 018? P[ blry s         CustomLybnizQuit ApplicationSave as..._About_Contents_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:30+0000 Last-Translator: AlexL Language-Team: Croatian (http://www.transifex.com/Magic/lybniz/language/hr/) Language: hr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2; PrilagođenoLybnizIsključi programSpremi kao..._O programu_Sadržaj_Datoteka_Graf_Pomoć_Isključi_Spremilybnizlybniz-3.0.4/locale/id/000077500000000000000000000000001343532221700146625ustar00rootroot00000000000000lybniz-3.0.4/locale/id/LC_MESSAGES/000077500000000000000000000000001343532221700164475ustar00rootroot00000000000000lybniz-3.0.4/locale/id/LC_MESSAGES/lybniz.mo000066400000000000000000000012041343532221700203100ustar00rootroot00000000000000L |^ent}Lybniz_About_File_HelplybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:36+0000 Last-Translator: AlexL Language-Team: Indonesian (http://www.transifex.com/Magic/lybniz/language/id/) Language: id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; Lybniz_Tentang_File_Bantuanlybnizlybniz-3.0.4/locale/it/000077500000000000000000000000001343532221700147025ustar00rootroot00000000000000lybniz-3.0.4/locale/it/LC_MESSAGES/000077500000000000000000000000001343532221700164675ustar00rootroot00000000000000lybniz-3.0.4/locale/it/LC_MESSAGES/lybniz.mo000066400000000000000000000045301343532221700203350ustar00rootroot00000000000000*l;   %4N _j     ,3 C MW]djpv})8AHXqz  /B U b n {       & . 4 = D J Q $  %()  '"  &*#!About BoxCustomDecimalEvaluateEvaluate FunctionsFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:36+0000 Last-Translator: AlexL Language-Team: Italian (http://www.transifex.com/Magic/lybniz/language/it/) Language: it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Informazioni su BoxPersonalizzataDecimaleValutaValuta funzioniTracciato della funzioneSommarioLybnizLybniz Graph PlotterT_racciaTraccia funzioniDisegna grafici e funzioniTermina l'applicazioneSalva come...Salva come bitmapTipo di scalaImposta un tipo personalizzatoImposta a decimaleImposta a radiantiMassimo in XMinimo in XScala asse XMassimo in YMinimo in YScala asse YAumenta zoomDiminuisci zoomResetta lo zoomAumenta _zoomDiminuisci _zoomResetta lo _zoom_Informazioni_Collega punti_Contenuti_Valuta_File_Grafico_Aiuto_Esci_Salvalybnizlybniz-3.0.4/locale/lt/000077500000000000000000000000001343532221700147055ustar00rootroot00000000000000lybniz-3.0.4/locale/lt/LC_MESSAGES/000077500000000000000000000000001343532221700164725ustar00rootroot00000000000000lybniz-3.0.4/locale/lt/LC_MESSAGES/lybniz.mo000066400000000000000000000042051343532221700203370ustar00rootroot00000000000000 + .H Yd y    %,28>E c q$~! !6*Hs! .4 FP Xbk s~    CustomDecimalFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:24+0000 Last-Translator: AlexL Language-Team: Lithuanian (http://www.transifex.com/Magic/lybniz/language/lt/) Language: lt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3); PasirinktinisDešimtainisFunkcijos grafiko braižymo įrankisPagalbos turinysLybnizLybniz grafiko braižymo įrankis_BraižytiBraižyti funkcijasBraižykite grafikus ir funkcijasBaigti programos darbąĮrašyti kaip...Įrašyti grafiką kaip taškinę grafikąSkalės stiliusNustatyti pasirinktinį stiliųNustatyti stilių į dešimtainįNustatyti stilių į radianusDidintiMažintiAtstatyti mastelįD_idinti_MažintiA_tstatyti mastelį_Apie_Sujungti taškusŽ_inynas_Failas_Grafikas_Pagalba_BaigtiĮraš_ytilybnizlybniz-3.0.4/locale/ms/000077500000000000000000000000001343532221700147055ustar00rootroot00000000000000lybniz-3.0.4/locale/ms/LC_MESSAGES/000077500000000000000000000000001343532221700164725ustar00rootroot00000000000000lybniz-3.0.4/locale/ms/LC_MESSAGES/lybniz.mo000066400000000000000000000044431343532221700203430ustar00rootroot00000000000000*l;   %4N _j     ,3 C MW]djpv}  (1AUgn  !6T[aipv ~        $  %()  '"  &*#!About BoxCustomDecimalEvaluateEvaluate FunctionsFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:23+0000 Last-Translator: AlexL Language-Team: Malay (http://www.transifex.com/Magic/lybniz/language/ms/) Language: ms MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=1; plural=0; Perihal BoxSuaiPerpuluhanNilaikanNilaikan FungsiPemplot graf FungsiKandungan BantuanLybnizPemplot Graf LybnizP_lotPlot FungsiPlot graf dan fungsiKeluar dari AplikasiSimpan sebagai...Simpan graf sebagai peta bitGaya SkalaTetapkan gaya mengikut suaiTetapkan gaya mengikut perpuluhanTetapkan gaya mengikut radianX maksX minSkala XY maksY minSkala YZum MasukZum KeluarTetap Semula ZumZum _MasukZum K_eluar_Tetap Semula ZumPerih_alSa_mbung Titik_Kandungan_Nilai_Fail_Graf_Bantuan_Keluar_Simpanlybnizlybniz-3.0.4/locale/oc/000077500000000000000000000000001343532221700146675ustar00rootroot00000000000000lybniz-3.0.4/locale/oc/LC_MESSAGES/000077500000000000000000000000001343532221700164545ustar00rootroot00000000000000lybniz-3.0.4/locale/oc/LC_MESSAGES/lybniz.mo000066400000000000000000000013051343532221700203170ustar00rootroot00000000000000T    LybnizSave as..._About_File_HelplybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:33+0000 Last-Translator: AlexL Language-Team: Occitan (post 1500) (http://www.transifex.com/Magic/lybniz/language/oc/) Language: oc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); LybnizEnregistrar jos..._A prepaus_FichièrA_judalybnizlybniz-3.0.4/locale/pl/000077500000000000000000000000001343532221700147015ustar00rootroot00000000000000lybniz-3.0.4/locale/pl/LC_MESSAGES/000077500000000000000000000000001343532221700164665ustar00rootroot00000000000000lybniz-3.0.4/locale/pl/LC_MESSAGES/lybniz.mo000066400000000000000000000020601343532221700203300ustar00rootroot00000000000000 018 ?JR[ dnu{(      )    CustomLybnizSave as...Zoom InZoom OutZoom _InZoom _Out_About_File_Help_QuitlybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:35+0000 Last-Translator: AlexL Language-Team: Polish (http://www.transifex.com/Magic/lybniz/language/pl/) Language: pl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3); NiestandardoweLybnizZapisz jako...PowiększPomniejsz_PowiększP_omniejszInformacje o_PlikPo_mocWyjścielybnizlybniz-3.0.4/locale/pt/000077500000000000000000000000001343532221700147115ustar00rootroot00000000000000lybniz-3.0.4/locale/pt/LC_MESSAGES/000077500000000000000000000000001343532221700164765ustar00rootroot00000000000000lybniz-3.0.4/locale/pt/LC_MESSAGES/lybniz.mo000066400000000000000000000030621343532221700203430ustar00rootroot00000000000000%P Q[b jx    )39?EKR  %,I]l}  #+     About BoxCustomDecimalHelp ContentsLybnizPlot graphs and functionsQuit ApplicationSave as...Scale StyleSet style to customSet style to radiansX maxX minX scaleY maxY minY scale_About_Connect Points_Contents_File_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:28+0000 Last-Translator: AlexL Language-Team: Portuguese (http://www.transifex.com/Magic/lybniz/language/pt/) Language: pt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); Caixa de SobrePersonalizadoDecimalConteúdo da AjudaLybnizPlotar gráficos e funçõesSair da AplicaçãoGravar como...Estilo da EscalaDefinir estilo do personalizadoDefinir estilo dos radianosX máxX mínescala XY máxY mínescala Y_SobrePontos _Conectados_Conteúdo_Ficheiro_Ajuda_Sair_Gravarlybnizlybniz-3.0.4/locale/pt_BR/000077500000000000000000000000001343532221700152745ustar00rootroot00000000000000lybniz-3.0.4/locale/pt_BR/LC_MESSAGES/000077500000000000000000000000001343532221700170615ustar00rootroot00000000000000lybniz-3.0.4/locale/pt_BR/LC_MESSAGES/lybniz.mo000066400000000000000000000015251343532221700207300ustar00rootroot00000000000000 d  ")/5< (7>GN LybnizLybniz Graph PlotterPlot graphs and functionsSave as..._About_File_HelplybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:32+0000 Last-Translator: AlexL Language-Team: Portuguese (Brazil) (http://www.transifex.com/Magic/lybniz/language/pt_BR/) Language: pt_BR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); LybnizPlotador de Gráficos de LybnizPlote gráficos e funçõesSalvar como..._Sobre_Arquivo_Ajudalybnizlybniz-3.0.4/locale/ru/000077500000000000000000000000001343532221700147145ustar00rootroot00000000000000lybniz-3.0.4/locale/ru/LC_MESSAGES/000077500000000000000000000000001343532221700165015ustar00rootroot00000000000000lybniz-3.0.4/locale/ru/LC_MESSAGES/lybniz.mo000066400000000000000000000066541343532221700203600ustar00rootroot000000000000000C( )3:BK^g ~     *>S#h      '-3 9 GS!Z | !/ #2 V ']  ! Q " 0 H ` P}  @ 4% 4Z T      + /< l  0    ' 1 ? O [ o    .$')& +!*% / #"-( 0 ,About BoxCustomDecimalEvaluateEvaluate FunctionsFunctionFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationRadians πRadians τSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansSet style to radians using Tau (τ)X maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_Saveis invalid atis invalid.lybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:18+0000 Last-Translator: AlexL Language-Team: Russian (http://www.transifex.com/Magic/lybniz/language/ru/) Language: ru MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3); О полеПользовательскийДесятичныйВычислитьВычислить функциюФункцияГрафопостроитель функцийСодержание справкиLybnizLybniz графопостроитель_НачертитьНачертить функциюПостроение графиков математических функцийВыход из программыРадиальный πРадиальный τСохранить как...Сохранить график как растровое изображениеСтиль шкалыУстановить стиль пользовательскимУстановить стиль десятичнымУстановить стиль радиальнымУстановить стиль радиальным, используя Тау (τ)X maxX minШкала XY maxY minШкала YПриблизитьОтдалитьСбросить масштабирование_Приблизить_Отдалить_Сбросить масштабирование_О программеПодключить то_чки_Содержание_Вычислить_Файл_График_Справка_Выход_Сохранитьнедопустимая внедопустимая.lybnizlybniz-3.0.4/locale/sr/000077500000000000000000000000001343532221700147125ustar00rootroot00000000000000lybniz-3.0.4/locale/sr/LC_MESSAGES/000077500000000000000000000000001343532221700164775ustar00rootroot00000000000000lybniz-3.0.4/locale/sr/LC_MESSAGES/lybniz.mo000066400000000000000000000061631343532221700203510ustar00rootroot00000000000000*l;   %4N _j     ,3 C MW]djpv}M_#2?;{A09 $G l ?  N H2 D{       & D 0`       * < H T d $  %()  '"  &*#!About BoxCustomDecimalEvaluateEvaluate FunctionsFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:22+0000 Last-Translator: AlexL Language-Team: Serbian (http://www.transifex.com/Magic/lybniz/language/sr/) Language: sr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2); Прикажите прозорче са подацима о програмуПроизвољноДецималниПроценаПроцените функцијуИсцртавач графика функцијаПрикажите садржај помоћи програмаЛајбницЛајбниц исцртавач графика функција_ИсцртајНацртајте график функцијеИсцртавајте графике и функцијеИзађите из програмаСачувајте као...Сачувајте график као слику битмапeВрста размереЗа размеру користите произвољне вредностиЗа размеру користите децималне бројевеЗа размеру користите углове радијанаНајвеће XНајмање XX размераНајвеће YНајмање YY размераУвећајте приказУмањите приказВратите увеличање приказаУ_већајУ_мањиВрати _увеличање_О програму_Повежи тачке_Садржај_Процени_ДатотекаДија_грамПо_моћ_Изађи_Сачувајлајбницlybniz-3.0.4/locale/sv/000077500000000000000000000000001343532221700147165ustar00rootroot00000000000000lybniz-3.0.4/locale/sv/LC_MESSAGES/000077500000000000000000000000001343532221700165035ustar00rootroot00000000000000lybniz-3.0.4/locale/sv/LC_MESSAGES/lybniz.mo000066400000000000000000000044261343532221700203550ustar00rootroot00000000000000*l;   %4N _j     ,3 C MW]djpv}! )4J^ry  2KQW_eks|      $  %()  '"  &*#!About BoxCustomDecimalEvaluateEvaluate FunctionsFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansX maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_SavelybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-19 09:38+0300 PO-Revision-Date: 2019-02-19 05:23+0000 Last-Translator: AlexL Language-Team: Swedish (http://www.transifex.com/Magic/lybniz/language/sv/) Language: sv MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n != 1); OmrutaEgenDecimalUtvärderaUtvärdera funktionerFunktionsgrafritareHjälpens innehållLybnizGrafritaren LybnizR_ita uppRita upp funktionerRita upp grafer och funktionerAvsluta programSpara som...Spara graf som bitmapSkalstilSätt stil till egenSätt stil till decimalSätt stil till radianerX maxX minX-skalaY maxY minY-skalaZooma inZooma utÅterställ zoomZooma _inZ_ooma utZoom åte_rställ_Om_Koppla ihop punkter_InnehållUtvärd_era_Fil_Graf_Hjälp_Avsluta_Sparalybnizlybniz-3.0.4/locale/uk/000077500000000000000000000000001343532221700147055ustar00rootroot00000000000000lybniz-3.0.4/locale/uk/LC_MESSAGES/000077500000000000000000000000001343532221700164725ustar00rootroot00000000000000lybniz-3.0.4/locale/uk/LC_MESSAGES/lybniz.mo000066400000000000000000000066761343532221700203550ustar00rootroot000000000000000C( )3:BK^g ~     *>S#h      '-3 9 GStZ ! < HK   @  # I0 z    H  25 4h 3 A    , 2 8 E X )i   *    % 9 C Q a m     .$')& +!*% / #"-( 0 ,About BoxCustomDecimalEvaluateEvaluate FunctionsFunctionFunction Graph PlotterHelp ContentsLybnizLybniz Graph PlotterP_lotPlot FunctionsPlot graphs and functionsQuit ApplicationRadians πRadians τSave as...Save graph as bitmapScale StyleSet style to customSet style to decimalSet style to radiansSet style to radians using Tau (τ)X maxX minX scaleY maxY minY scaleZoom InZoom OutZoom ResetZoom _InZoom _OutZoom _Reset_About_Connect Points_Contents_Evaluate_File_Graph_Help_Quit_Saveis invalid atis invalid.lybnizProject-Id-Version: lybniz Report-Msgid-Bugs-To: POT-Creation-Date: 2019-02-20 02:06+0300 PO-Revision-Date: 2019-02-19 06:40+0000 Last-Translator: Yuri Chornoivan Language-Team: Ukrainian (http://www.transifex.com/Magic/lybniz/language/uk/) Language: uk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3); Про полеНетиповийДесятковийОбчислитиОбчислити функціюФункціяПрограма для побудови графіків функційЗміст довідкиLybnizПрограма для побудови графіків Lybniz_НакреслитиНакреслити функціюПобудова графіків математичних функційВийти з проґрамиπ-радіаниτ-радіаниЗберегти як...Зберегти графік як растрове зображенняСтиль шкалиВстановити нетиповий стильВстановити стиль десятковимВстановити стиль у радіанахВстановити стиль радіанів із тау (τ)X maxX minX шкалаY maxY minY шкалаЗбільшитиЗменшитиСкинути масштабуванняЗ_більшитиЗ_меншити_Скинути масштабування_Про проґрамуЗ'_єднати точки_Зміст_Обчислити_Файл_Графік_Довідка_Вийти_Зберегтиє некоректною ує некоректною.lybnizlybniz-3.0.4/lybniz-i18n.sh000077500000000000000000000020061343532221700154500ustar00rootroot00000000000000#!/bin/bash # Script lybniz-i18n was written by Alexey Loginov for lybniz internationalisation # License: GPLv3+ # https://www.transifex.com/Magic/lybniz/ echo "Starting script lybniz-i18n.sh" A=`which xgettext` if [ -z "$A" ] then echo "Error: missing xgettext" exit 1 fi pushd po echo "Creating POT file" xgettext --language=Python --keyword=_ --keyword=N_ --output=lybniz.pot ../lybniz.py xgettext --language=Desktop --output=lybniz.pot ../lybniz.desktop --from-code=utf-8 -j echo "Done for creating POT file." echo "Merge translations" for a in *.po; do msgmerge -U $a lybniz.pot done rm -f *.po~ echo "Done for merge translations." echo "Compiling translations" rm -rf ../locale for lang in `ls|grep -v \.pot|cut -d "." --fields=1` do echo " Compiling $lang" mkdir -p ../locale/$lang/LC_MESSAGES msgfmt $lang.po -o $lang.mo mv -f $lang.mo ../locale/$lang/LC_MESSAGES/lybniz.mo echo " Done for $lang" done echo "Done for compiling translations." popd echo "Script lybniz-i18n.sh was finished." lybniz-3.0.4/lybniz.1000066400000000000000000000007551343532221700144270ustar00rootroot00000000000000.TH lybniz 1 "October 20, 2006" .SH NAME lybniz - mathematical function graph plotter .SH DESCRIPTION .PP Lybniz is a simple desktop graph plotter. It can currently plot three functions and allows you to navigate the plot. Functions are entered in Python notation, eg sin(x)/x ; 2*x**2 + 3*x - 4. .PP .SH HOMEPAGE https://github.com/thomasfuhringer/lybniz .SH AUTHOR This manual page was written by Varun Hiremath , for the Debian project (but may be used by others). lybniz-3.0.4/lybniz.desktop000066400000000000000000000076101343532221700157350ustar00rootroot00000000000000[Desktop Entry] Name=Lybniz GenericName=Lybniz Graph Plotter GenericName[ru]=Lybniz графопостроитель GenericName[af]=Lybniz grafiekstipper GenericName[ast]=Dibuxu de gráficos Lybniz GenericName[bn]=Lybniz গ্রাফ প্লটার GenericName[bs]=Lybniz crtač grafova GenericName[pt_BR]=Plotador de Gráficos de Lybniz GenericName[bg]=Lybniz плотер на графика GenericName[ca]=Plòter de gràfics Lybniz GenericName[ca@valencia]=Plòter de gràfics Lybniz GenericName[zh_HK]=Lybniz 製圖器 GenericName[zh_CN]=Lybniz 绘图机 GenericName[crh]=Lybniz Grafik Çizici GenericName[cs]=Tvůrce grafů Lybniz GenericName[da]=Lybniz - graftegner GenericName[fi]=Lybniz-graafipiirtäjä GenericName[fr]=Traceur de graphes Lybniz GenericName[gl]=Ferramenta de trazado de gráficos Lybniz GenericName[de]=Lybniz – Funktionsgraphzeichner GenericName[el]=Σχεδιαστής γραφημάτων Lybniz GenericName[hu]=Lybniz grafikonrajzoló GenericName[it]=Plotter per grafici Lybniz GenericName[ja]=Lybniz グラフプロッター GenericName[ky]=Lybniz граф түзүүчү GenericName[lt]=Lybniz grafiko braižymo įrankis GenericName[ms]=Pemplot graf Lybniz GenericName[nb]=Lybniz grafplotter GenericName[oc]=Traçador de grafes Lybniz GenericName[pl]=Ploter wykresów Lybniz GenericName[pt]=Lybniz, Plotador de Gráficos GenericName[ro]=Trasor de grafice Lybniz GenericName[sl]=Lybniz, izrisovalnik grafov GenericName[sr]=Лајбниц исцртавач графика функција GenericName[es]=Dibujo de gráficos Lybniz GenericName[sv]=Lybniz grafritare GenericName[tr]=Lybniz Grafik Çizici GenericName[uk]=Lybniz Графобудівник GenericName[vi]=Trình vẽ đồ thị Lybniz Comment=Plot graphs and functions Comment[ru]=Построение графиков математических функций Comment[af]=Stip grafieke en funksies Comment[sq]=Rregullo grafikët dhe funksionet Comment[ast]=Dibuxa gráfiques y funciones Comment[be]=Маляваць графікі й функцыі Comment[bn]=গ্রাফ এবং ফাংশন অঙ্কিত করুন Comment[bs]=Crtajte grafove i funkcije Comment[pt_BR]=Plote gráficos e funções Comment[bg]=Чертане на графики и функции Comment[ca]=Dibuixeu gràfics i funcions Comment[ca@valencia]=Dibuixeu gràfics i funcions Comment[zh_HK]=繪製圖表及函式 Comment[zh_CN]=绘制图表和函数 Comment[zh_TW]=繪製圖表及函式 Comment[crh]=Grafikler ve fonksiyonlar çizdir Comment[cs]=Vykreslování grafů a funkcí Comment[da]=Tegn grafer Comment[nl]=Grafiek- en functieplotter Comment[fi]=Piirrä graafeja ja funktioita Comment[fr]=Tracer des courbes de fonctions et des graphes Comment[gl]=Trace gráficos e funcións Comment[de]=Darstellen von Graphen und Funktionen Comment[el]=Σχεδιάστε γραφήματα και συναρτήσεις Comment[hu]=Grafikonok és függvények rajzolása Comment[it]=Disegna grafici e funzioni Comment[ja]=グラフと関数をプロットします Comment[ky]=Графтарды жана функцияларды түзүү Comment[lt]=Braižykite grafikus ir funkcijas Comment[ms]=Plot graf dan fungsi Comment[nb]=Plott grafer og funksjoner Comment[oc]=Traçar de corbas de foncions e de grafes Comment[pl]=Kreśli wykresy funkcji Comment[pt]=Plotar gráficos e funções Comment[ro]=Trasați curbe de funcții și grafice Comment[sl]=Izrisujte grafe in funkcije Comment[sr]=Исцртавајте графике и функције Comment[es]=Dibuja gráficas y funciones Comment[sv]=Rita grafer och funktioner Comment[tg]=Функсияҳо ва диаграммаҳои Plot Comment[tr]=Grafikler ve fonksiyonlar çizdir Comment[uk]=Побудова графіків математичних функцій Comment[vi]=Vẽ đồ thị và hàm số Exec=lybniz Terminal=false StartupNotify=true Type=Application Categories=Education;Math; Icon=lybniz lybniz-3.0.4/lybniz.py000066400000000000000000001435451343532221700147240ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: UTF-8 -*- """ Simple Function Graph Plotter © Thomas Führinger, Sam Tygier 2005-2018 https://github.com/thomasfuhringer/lybniz Version 3.0.4 Requires PyGObject 3 Released under the terms of the revised BSD license Modified: 2018-08-16 """ import sys, os, cairo, gettext, configparser from math import * import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk, Gdk, GObject, Pango, Gio, GdkPixbuf from pathlib import Path app_version = "3.0.4" gettext.install("lybniz") # profiling enable_profiling = False if enable_profiling: from time import time app_win = None actions = Gtk.ActionGroup(name="General") graph = None connect_points = True configFile = os.path.expanduser("~/.lybniz.cfg") config = configparser.ConfigParser() x_res = 1 x_max = "5.0" x_min = "-5.0" x_scale = "1.0" y_max = "3.0" y_min = "-3.0" y_scale = "1.0" y1 = "sin(x)" y2 = "" y3 = "" # some extra maths functions def fac(x): if type(x) != int or x < 0: raise ValueError if x==0: return 1 for n in range(2,x): x = x*n return x def sinc(x): if x == 0: return 1 return sin(x)/x # create a safe namespace for the eval()s in the graph drawing code def sub_dict(somedict, somekeys, default=None): return dict([ (k, somedict.get(k, default)) for k in somekeys ]) # a list of the functions from math that we want. safe_list = ['math', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'tau', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh','fac','sinc'] safe_dict = sub_dict(locals(), safe_list) #add any needed builtins back in. safe_dict['abs'] = abs safe_dict['min'] = min safe_dict['max'] = max def marks(min_val,max_val,minor=1): "Yield positions of scale marks between min and max. For making minor marks, set minor to the number of minors you want between majors" try: min_val = float(min_val) max_val = float(max_val) except: print ("Needs 2 numbers") raise ValueError if(min_val >= max_val): print ("Min bigger or equal to max") raise ValueError a = 0.2 # tweakable control for when to switch scales # big a value results in more marks a = a + log10(minor) width = max_val - min_val log10_range = log10(width) interval = 10 ** int(floor(log10_range - a)) lower_mark = min_val - fmod(min_val,interval) if lower_mark < min_val: lower_mark += interval a_mark = lower_mark while a_mark <= max_val: if abs(a_mark) < interval / 2: a_mark = 0 yield a_mark a_mark += interval class GraphClass: def __init__(self): def da_configure_event(widget, event): global x_max, x_min, x_scale, y_max, y_min, y_scale, y1, y2, y3 x_max = app_win.x_max_entry.get_text() x_min = app_win.x_min_entry.get_text() x_scale = app_win.x_scale_entry.get_text() y_max = app_win.y_max_entry.get_text() y_min = app_win.y_min_entry.get_text() y_scale = app_win.y_scale_entry.get_text() y1 = app_win.y1_entry.get_text() y2 = app_win.y2_entry.get_text() y3 = app_win.y3_entry.get_text() gdkWindow = widget.get_window() width = widget.get_allocated_width() height = widget.get_allocated_height() self.surface = gdkWindow.create_similar_surface(cairo.CONTENT_COLOR, width, height) self.layout = Pango.Layout(widget.create_pango_context()) self.canvas_width = width self.canvas_height = height self.x_max = eval(x_max,{"__builtins__":{}},safe_dict) self.x_min = eval(x_min,{"__builtins__":{}},safe_dict) self.x_scale = eval(x_scale,{"__builtins__":{}},safe_dict) self.y_max = eval(y_max,{"__builtins__":{}},safe_dict) self.y_min = eval(y_min,{"__builtins__":{}},safe_dict) self.y_scale = eval(y_scale,{"__builtins__":{}},safe_dict) self.previousMouseX = 0 self.previousMouseY = 0 self.plot() return True # Redraw the screen from the backing pixmap def da_draw_event(widget, cr): cr.set_source_surface(self.surface, 0, 0) cr.paint() return False # Start marking selection def button_press_event(widget, event): global x_sel, y_sel if event.button == 1: self.selection[0][0], self.selection[0][1] = int(event.x), int(event.y) self.selection[1][0], self.selection[1][1] = None, None # duplicate surface self.clean_surface = self.surface.create_similar(cairo.CONTENT_COLOR, self.canvas_width, self.canvas_height) crc = cairo.Context(self.clean_surface) crc.set_source_surface(self.surface, 0, 0) crc.paint() del crc # End of selection def da_button_release_event(widget, event): if event.button == 1 and event.x != self.selection[0][0] and event.y != self.selection[0][1]: xmi, ymi = min(self.graph_x(self.selection[0][0]), self.graph_x(event.x)), min(self.graph_y(self.selection[0][1]), self.graph_y(event.y)) xma, yma = max(self.graph_x(self.selection[0][0]), self.graph_x(event.x)), max(self.graph_y(self.selection[0][1]), self.graph_y(event.y)) self.x_min, self.y_min, self.x_max, self.y_max = xmi, ymi, xma, yma parameter_entries_repopulate() self.plot() self.selection[1][0] = None self.selection[0][0] = None # Draw rectangle during mouse movement def da_motion_notify_event(widget, event): if event.is_hint: dummy, x, y, state = event.window.get_device_position(event.device) else: x = event.x y = event.y state = event.get_state() if state & Gdk.ModifierType.BUTTON1_MASK and self.selection[0][0] is not None: cr = cairo.Context(self.surface) cr.set_source_surface(self.clean_surface, 0, 0) cr.paint() x0 = min(self.selection[0][0], int(x)) y0 = min(self.selection[0][1], int(y)) w = abs(int(x) - self.selection[0][0]) h = abs(int(y) - self.selection[0][1]) self.selection[1][0], self.selection[1][1] = int(x), int(y) cr.set_source_rgb(0.3, 0.3, 0.3) cr.set_line_width (0.5) cr.rectangle(x0, y0, w, h) cr.stroke() del cr widget.queue_draw() elif state & Gdk.ModifierType.BUTTON2_MASK: dx = event.x - self.previousMouseX dy = event.y - self.previousMouseY dx = dx / self.canvas_width * (self.x_max - self.x_min) dy = dy / self.canvas_height * (self.y_max - self.y_min) self.x_min -= dx; self.x_max -= dx self.y_min += dy; self.y_max += dy parameter_entries_repopulate() graph.plot() self.previousMouseX = event.x self.previousMouseY = event.y def da_scroll_event(widget, event): if event.direction == Gdk.ScrollDirection.UP: zoom_in(None) elif event.direction == Gdk.ScrollDirection.DOWN: zoom_out(None) self.prev_y = [None, None, None] # Marked area point[0, 1][x, y] self.selection = [[None, None], [None, None]] self.drawing_area = Gtk.DrawingArea() self.drawing_area.connect("draw", da_draw_event) self.drawing_area.connect("configure_event", da_configure_event) self.drawing_area.connect("button_press_event", button_press_event) self.drawing_area.connect("button_release_event", da_button_release_event) self.drawing_area.connect("motion_notify_event", da_motion_notify_event) self.drawing_area.connect("scroll-event", da_scroll_event) self.drawing_area.set_events(Gdk.EventMask.EXPOSURE_MASK | Gdk.EventMask.LEAVE_NOTIFY_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK | Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.POINTER_MOTION_HINT_MASK | Gdk.EventMask.SCROLL_MASK) self.scale_style = "dec" def plot(self): cr = cairo.Context(self.surface) cr.set_source_rgb(1, 1, 1) cr.paint() cr.set_source_rgb(0, 0, 0) cr.set_line_width (0.2) app_win.status_bar.remove_all(0) if (self.scale_style == "cust"): #draw cross cr.rectangle(self.canvas_x(0), 0, 0.2, self.canvas_height) cr.rectangle(0, self.canvas_y(0), self.canvas_width, 0.2) cr.stroke() # old style axis marks iv = self.x_scale * self.canvas_width / (self.x_max - self.x_min) # pixel interval between marks os = self.canvas_x(0) % iv # pixel offset of first mark # loop over each mark. for i in range(int(self.canvas_width / iv + 1)): # multiples of iv, cause adding of any error in iv, so keep iv as float # use round(), to get to closest pixel, int() to prevent warning cr.rectangle(os + i * iv, self.canvas_y(0) - 5, 0.2, 11) cr.stroke() # and the y-axis iv = self.y_scale * self.canvas_height / (self.y_max - self.y_min) os = self.canvas_y(0) % iv for i in range(int(self.canvas_height / iv + 1)): cr.rectangle(self.canvas_x(0) - 5, i * iv + os, 11, 0.2) cr.stroke() else: # new style factor = 1 if (self.scale_style == "rad"): factor = pi if (self.scale_style == "tau"): factor = 2 * pi # where to put the numbers numbers_x_pos = -10 numbers_y_pos = 10 # where to center the axis center_x_pix = int(round(self.canvas_x(0))) center_y_pix = int(round(self.canvas_y(0))) if (center_x_pix < 5): center_x_pix = 5 if (center_x_pix < 20):numbers_x_pos = 10 if (center_y_pix < 5): center_y_pix = 5 if (center_x_pix > self.canvas_width - 5): center_x_pix = self.canvas_width - 5 if (center_y_pix > self.canvas_height -5): center_y_pix = self.canvas_height - 5; if (center_y_pix > self.canvas_height -20): numbers_y_pos = - 10 # draw cross cr.rectangle(center_x_pix, 0, 0.1, self.canvas_height) cr.rectangle(0, center_y_pix, self.canvas_width, 0.1) cr.stroke() for i in marks(self.x_min / factor, self.x_max / factor): label = '%g' % i if (self.scale_style == "rad"): label += " π" if (self.scale_style == "tau"): label += " τ" i = i * factor cr.rectangle(self.canvas_x(i), center_y_pix - 5, 0.2, 11) cr.stroke() if (numbers_y_pos < 0): adjust = cr.text_extents(label)[3] else: adjust = 0 cr.move_to(int(round(self.canvas_x(i))), center_y_pix + numbers_y_pos - adjust + 7) cr.show_text(label) for i in marks(self.y_min,self.y_max): label = '%g' % i cr.rectangle(center_x_pix - 5, self.canvas_y(i), 11, 0.2) cr.stroke() if (numbers_x_pos < 0): adjust = cr.text_extents(label)[3] else: adjust = 0 cr.move_to(center_x_pix + numbers_x_pos - adjust, int(round(self.canvas_y(i))) + 7) cr.show_text(label) # minor marks for i in marks(self.x_min / factor, self.x_max / factor, minor=10): i = i * factor cr.rectangle(self.canvas_x(i), center_y_pix - 2, 0.2, 5) cr.stroke() for i in marks(self.y_min, self.y_max, minor=10): label = '%g' % i cr.rectangle(center_x_pix - 2, self.canvas_y(i), 5, 0.2) cr.stroke() plots = [] # precompile the functions invalid_input = False if y1: try: compiled_y1 = compile(y1.replace("^","**"), "", 'eval') plots.append((compiled_y1, 0, (0, 0, 1), y1)) except: set_statusbar(_("Function") + " '" + y1 + "' " + _("is invalid.")) invalid_input = True compiled_y1 = None else: compiled_y1 = None if y2: try: compiled_y2 = compile(y2.replace("^","**"),"",'eval') plots.append((compiled_y2, 1, (1, 0, 0), y2)) except: set_statusbar(_("Function") + " '" + y2 + "' " + _("is invalid.")) invalid_input = True compiled_y2 = None else: compiled_y2 = None if y3: try: compiled_y3 = compile(y3.replace("^","**"), "", 'eval') plots.append((compiled_y3, 2, (0, 1, 0), y3)) except: set_statusbar(_("Function") + " '" + y3 + "' " + _("is invalid.")) invalid_input = True compiled_y3 = None else: compiled_y3 = None self.prev_y = [None, None, None] if enable_profiling: start_graph = time() cr.set_line_width (0.6) if len(plots) != 0: for i in range(0, self.canvas_width, x_res): x = self.graph_x(i + 1) for e in plots: safe_dict['x']=x try: y = eval(e[0],{"__builtins__":{}},safe_dict) y_c = int(round(self.canvas_y(y))) if y_c < 0 or y_c > self.canvas_height: self.prev_y[e[1]] = None else: cr.set_source_rgb(*e[2]) if connect_points and self.prev_y[e[1]] is not None: cr.move_to(i, self.prev_y[e[1]]) cr.line_to(i + x_res, y_c) cr.stroke() else: cr.rectangle(i + x_res, y_c, 1, 1) cr.fill() self.prev_y[e[1]] = y_c except: #print ("Error at %d: %s" % (x, sys.exc_info())) set_statusbar(_("Function") + " '" + e[3] + "' " + _("is invalid at") + " " + str(int(x)) + ".") invalid_input = True self.prev_y[e[1]] = None if enable_profiling: print ("Time to draw graph:", (time() - start_graph) * 1000, "ms") if not invalid_input: set_statusbar("") del cr self.drawing_area.queue_draw() def canvas_x(self, x): "Calculate position on canvas to point on graph" return (x - self.x_min) * self.canvas_width / (self.x_max - self.x_min) def canvas_y(self, y): return (self.y_max - y) * self.canvas_height / (self.y_max - self.y_min) def canvas_point(self, x, y): return (self.canvas_x(x), self.canvas_y(y)) def graph_x(self, x): "Calculate position on graph from point on canvas" return x * (self.x_max - self.x_min) / self.canvas_width + self.x_min def graph_y(self, y): return self.y_max - (y * (self.y_max - self.y_min) / self.canvas_height) def menu_toolbar_create(): app_win.menu_main = Gtk.MenuBar() menu_file = Gtk.Menu() menu_item_file = Gtk.MenuItem(label=_("_File")) menu_item_file.set_submenu(menu_file) menu_item_file.set_use_underline(True) actions.save = Gtk.Action(name="Save", label=_("_Save"), tooltip=_("Save graph as bitmap"), stock_id=Gtk.STOCK_SAVE) actions.save.connect ("activate", save) actions.add_action(actions.save) menu_item_save = actions.save.create_menu_item() menu_item_save.add_accelerator("activate", app_win.accel_group, ord("S"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) menu_file.append(menu_item_save) actions.quit = Gtk.Action(name="Quit", label=_("_Quit"), tooltip=_("Quit Application"), stock_id=Gtk.STOCK_QUIT) actions.quit.connect ("activate", quit_dlg) actions.add_action(actions.quit) menuItem_quit = actions.quit.create_menu_item() menuItem_quit.add_accelerator("activate", app_win.accel_group, ord("Q"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) menu_file.append(menuItem_quit) menu_graph = Gtk.Menu() menu_item_graph = Gtk.MenuItem(label=_("_Graph")) menu_item_graph.set_submenu(menu_graph) menu_item_graph.set_use_underline(True) actions.plot = Gtk.Action(name="Plot", label=_("P_lot"), tooltip=_("Plot Functions"), stock_id=Gtk.STOCK_REFRESH) actions.plot.connect ("activate", plot) actions.add_action(actions.plot) menu_item_plot = actions.plot.create_menu_item() menu_item_plot.add_accelerator("activate", app_win.accel_group, ord("l"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) menu_graph.append(menu_item_plot) actions.evaluate = Gtk.Action(name="Evaluate", label=_("_Evaluate"), tooltip=_("Evaluate Functions"), stock_id=Gtk.STOCK_EXECUTE) actions.evaluate.connect ("activate", evaluate) actions.add_action(actions.evaluate) menu_item_evaluate = actions.evaluate.create_menu_item() menu_item_evaluate.add_accelerator("activate", app_win.accel_group, ord("e"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) menu_graph.append(menu_item_evaluate) actions.zoom_in = Gtk.Action(name="zoom_in", label=_("Zoom _In"), tooltip=_("Zoom In"), stock_id=Gtk.STOCK_ZOOM_IN) actions.zoom_in.connect ("activate", zoom_in) actions.add_action(actions.zoom_in) menu_item_zoomin = actions.zoom_in.create_menu_item() menu_item_zoomin.add_accelerator("activate", app_win.accel_group, ord("+"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) menu_graph.append(menu_item_zoomin) actions.zoom_out = Gtk.Action(name="zoom_out", label=_("Zoom _Out"), tooltip=_("Zoom Out"), stock_id=Gtk.STOCK_ZOOM_OUT) actions.zoom_out.connect ("activate", zoom_out) actions.add_action(actions.zoom_out) menu_item_zoomout = actions.zoom_out.create_menu_item() menu_item_zoomout.add_accelerator("activate", app_win.accel_group, ord("-"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) menu_graph.append(menu_item_zoomout) actions.zoom_reset = Gtk.Action(name="zoom_reset", label=_("Zoom _Reset"), tooltip=_("Zoom Reset"), stock_id=Gtk.STOCK_ZOOM_100) actions.zoom_reset.connect ("activate", zoom_reset) actions.add_action(actions.zoom_reset) menu_item_zoomreset = actions.zoom_reset.create_menu_item() menu_item_zoomreset.add_accelerator("activate", app_win.accel_group, ord("r"), Gdk.ModifierType.CONTROL_MASK, Gtk.AccelFlags.VISIBLE) menu_graph.append(menu_item_zoomreset) menu_item_toggle_connect = Gtk.CheckMenuItem(label=_("_Connect Points")) menu_item_toggle_connect.set_active(True) menu_item_toggle_connect.set_use_underline(True) menu_item_toggle_connect.connect ("toggled", toggle_connect) menu_graph.append(menu_item_toggle_connect) menu_scale_style = Gtk.Menu() menu_item_scale_style = Gtk.MenuItem(label=_("Scale Style")) menu_item_scale_style.set_submenu(menu_scale_style) menu_graph.append(menu_item_scale_style) actions.dec = Gtk.Action(name="Dec", label=_("Decimal"), tooltip=_("Set style to decimal"), stock_id=None) actions.dec.connect ("activate", scale_dec) actions.add_action(actions.dec) menu_item_dec = actions.dec.create_menu_item() menu_scale_style.append(menu_item_dec) actions.rad = Gtk.Action(name="Rad", label=_("Radians π"), tooltip=_("Set style to radians"), stock_id=None) actions.rad.connect ("activate", scale_rad) actions.add_action(actions.rad) menu_item_rad = actions.rad.create_menu_item() menu_scale_style.append(menu_item_rad) actions.rad_tau = Gtk.Action(name="Radτ", label=_("Radians τ"), tooltip=_("Set style to radians using Tau (τ)"), stock_id=None) actions.rad_tau.connect ("activate", scale_rad_tau) actions.add_action(actions.rad_tau) menu_item_rad_tau = actions.rad_tau.create_menu_item() menu_scale_style.append(menu_item_rad_tau) actions.cust = Gtk.Action(name="Cust", label=_("Custom"), tooltip=_("Set style to custom"), stock_id=None) actions.cust.connect ("activate", scale_cust) actions.add_action(actions.cust) menu_item_cust = actions.cust.create_menu_item() menu_scale_style.append(menu_item_cust) menu_help = Gtk.Menu() menu_item_help = Gtk.MenuItem(label=_("_Help"), use_underline=True) menu_item_help.set_submenu(menu_help) menu_item_help.set_use_underline(True) actions.Help = Gtk.Action(name="Help", label=_("_Contents"), tooltip=_("Help Contents"), stock_id=Gtk.STOCK_HELP) actions.Help.connect ("activate", show_yelp) actions.add_action(actions.Help) menu_item_contents = actions.Help.create_menu_item() menu_item_contents.add_accelerator("activate", app_win.accel_group, Gdk.keyval_from_name("F1"), 0, Gtk.AccelFlags.VISIBLE) menu_help.append(menu_item_contents) actions.about = Gtk.Action(name="About", label=_("_About"), tooltip=_("About Box"), stock_id=Gtk.STOCK_ABOUT) actions.about.connect ("activate", show_about_dialog) actions.add_action(actions.about) menu_item_about = actions.about.create_menu_item() menu_help.append(menu_item_about) app_win.menu_main.append(menu_item_file) app_win.menu_main.append(menu_item_graph) app_win.menu_main.append(menu_item_help) app_win.tool_bar = Gtk.Toolbar() app_win.tool_bar.insert(actions.plot.create_tool_item(), -1) app_win.tool_bar.insert(actions.evaluate.create_tool_item(), -1) app_win.tool_bar.insert(Gtk.SeparatorToolItem(), -1) app_win.tool_bar.insert(actions.zoom_in.create_tool_item(), -1) app_win.tool_bar.insert(actions.zoom_out.create_tool_item(), -1) app_win.tool_bar.insert(actions.zoom_reset.create_tool_item(), -1) def plot(widget, event=None): global x_max, x_min, x_scale, y_max, y_min, y_scale, y1, y2, y3 x_max = app_win.x_max_entry.get_text() x_min = app_win.x_min_entry.get_text() x_scale = app_win.x_scale_entry.get_text() y_max = app_win.y_max_entry.get_text() y_min = app_win.y_min_entry.get_text() y_scale = app_win.y_scale_entry.get_text() graph.x_max = eval(x_max,{"__builtins__":{}},safe_dict) graph.x_min = eval(x_min,{"__builtins__":{}},safe_dict) graph.x_scale = eval(x_scale,{"__builtins__":{}},safe_dict) graph.y_max = eval(y_max,{"__builtins__":{}},safe_dict) graph.y_min = eval(y_min,{"__builtins__":{}},safe_dict) graph.y_scale = eval(y_scale,{"__builtins__":{}},safe_dict) y1 = app_win.y1_entry.get_text() y2 = app_win.y2_entry.get_text() y3 = app_win.y3_entry.get_text() graph.plot() def evaluate(widget, event=None): "Evaluate a given x for the three functions" def entry_changed(self): for e in ((y1, dlg_win.y1_entry), (y2, dlg_win.y2_entry), (y3, dlg_win.y3_entry)): try: x = float(dlg_win.x_entry.get_text()) safe_dict['x']=x e[1].set_text(str(eval(e[0].replace("^","**"),{"__builtins__":{}},safe_dict))) except: if len(e[0]) > 0: e[1].set_text("Error: " + str(sys.exc_info()[1])) else: e[1].set_text("") def close(self): dlg_win.destroy() dlg_win = Gtk.Window(type=Gtk.WindowType.TOPLEVEL) dlg_win.set_title(_("Evaluate")) dlg_win.connect("destroy", close) dlg_win.x_entry = Gtk.Entry() dlg_win.x_entry.set_size_request(200, 24) dlg_win.x_entry.connect("changed", entry_changed) dlg_win.y1_entry = Gtk.Entry() dlg_win.y1_entry.set_size_request(200, 24) dlg_win.y1_entry.set_sensitive(False) dlg_win.y2_entry = Gtk.Entry() dlg_win.y2_entry.set_size_request(200, 24) dlg_win.y2_entry.set_sensitive(False) dlg_win.y3_entry = Gtk.Entry() dlg_win.y3_entry.set_size_request(200, 24) dlg_win.y3_entry.set_sensitive(False) grid = Gtk.Grid() grid.set_property("row-spacing", 2) grid.set_property("column-spacing", 10) grid.set_border_width(24) label = Gtk.Label(label="x = ") label.set_valign(Gtk.Align.CENTER) label.set_halign(Gtk.Align.START) grid.add(label) grid.attach(dlg_win.x_entry, 1, 0, 1, 1) label = Gtk.Label(label="y1 = ") label.set_halign(Gtk.Align.START) label.set_valign(Gtk.Align.CENTER) label.get_style_context().add_class("y1") grid.attach(label, 0, 1, 1, 1) grid.attach(dlg_win.y1_entry, 1, 1, 1, 1) label = Gtk.Label(label="y2 = ") label.set_halign(Gtk.Align.START) label.set_valign(Gtk.Align.CENTER) label.get_style_context().add_class("y2") grid.attach(label, 0, 2, 1, 1) grid.attach(dlg_win.y2_entry, 1, 2, 1, 1) label = Gtk.Label(label="y3 = ") label.set_halign(Gtk.Align.START) label.set_valign(Gtk.Align.CENTER) label.get_style_context().add_class("y3") grid.attach(label, 0, 3, 1, 1) grid.attach(dlg_win.y3_entry, 1, 3, 1, 1) dlg_win.add(grid) dlg_win.show_all() def zoom_in(widget, event=None): "Narrow the plotted section by half" center_x = (graph.x_min + graph.x_max) / 2 center_y = (graph.y_min + graph.y_max) / 2 range_x = (graph.x_max - graph.x_min) range_y = (graph.y_max - graph.y_min) graph.x_min = center_x - (range_x / 4) graph.x_max = center_x + (range_x / 4) graph.y_min = center_y - (range_y / 4) graph.y_max = center_y +(range_y / 4) parameter_entries_repopulate() graph.plot() def zoom_out(widget, event=None): "Double the plotted section" center_x = (graph.x_min + graph.x_max) / 2 center_y = (graph.y_min + graph.y_max) / 2 range_x = (graph.x_max - graph.x_min) range_y = (graph.y_max - graph.y_min) graph.x_min = center_x - (range_x) graph.x_max = center_x + (range_x) graph.y_min = center_y - (range_y) graph.y_max = center_y +(range_y) parameter_entries_repopulate() graph.plot() def zoom_reset(widget, event=None): "Set the range back to the user's input" graph.x_min = eval(x_min,{"__builtins__":{}},safe_dict) graph.y_min = eval(y_min,{"__builtins__":{}},safe_dict) graph.x_max = eval(x_max,{"__builtins__":{}},safe_dict) graph.y_max = eval(y_max,{"__builtins__":{}},safe_dict) parameter_entries_populate() graph.plot() def scale_dec(widget, event=None): graph.scale_style = "dec" app_win.scale_grid.hide() plot(None) def scale_rad(widget, event=None): graph.scale_style = "rad" app_win.scale_grid.hide() plot(None) def scale_rad_tau(widget, event=None): graph.scale_style = "tau" app_win.scale_grid.hide() plot(None) def scale_cust(widget, event=None): graph.scale_style = "cust" app_win.scale_grid.show() plot(None) def toggle_connect(widget, event=None): "Toggle between a graph that connects points with lines and one that does not" global connect_points connect_points = not connect_points graph.plot() def save(widget, event=None): "Save graph as .png" file_dialog = Gtk.FileChooserDialog(_("Save as..."), app_win, Gtk.FileChooserAction.SAVE, (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_SAVE, Gtk.ResponseType.OK)) file_dialog.set_default_response(Gtk.ResponseType.OK) filter = Gtk.FileFilter() filter.add_mime_type("image/png") filter.add_pattern("*.png") file_dialog.add_filter(filter) file_dialog.set_filename("FunctionGraph.png") response = file_dialog.run() if response == Gtk.ResponseType.OK: width = graph.drawing_area.get_allocated_width() height = graph.drawing_area.get_allocated_height() pix_buffer = GdkPixbuf.Pixbuf(GdkPixbuf.Colorspace.RGB, False, 8, width, height) pix_buffer.get_from_drawable(graph.pix_map, graph.pix_map.get_colormap(), 0, 0, 0, 0, width, height) pix_buffer.save(file_dialog.get_filename(), "png") file_dialog.destroy() def set_statusbar(text): app_win.status_bar.remove_all(0) app_win.status_bar.push(0, text) def quit_dlg(widget, event=None): global config width, height = app_win.get_size() config["MainWindow"]["width"] = str(width) config["MainWindow"]["height"] = str(height) x, y = app_win.get_position() config["MainWindow"]["x"] = str(x) config["MainWindow"]["y"] = str(y) with open(configFile, "w") as file: config.write(file) app_win.destroy() def show_yelp(widget): try: import os xml_file = Path("doc/lybniz.xml") if xml_file.is_file(): os.system("yelp doc/lybniz.xml") else: xml_file = Path("/usr/share/gnome/help/lybniz/C/lybniz.xml") if xml_file.is_file(): os.system("yelp /usr/share/gnome/help/lybniz/C/lybniz.xml") #os.system("yelp /usr/share/gnome/help/lybniz/C/lybniz.xml") #Gtk.show_uri(None, "lybniz", 0) except: print ("Can't Show help") def show_about_dialog(widget): about_dialog = Gtk.AboutDialog(transient_for=app_win, modal=True) about_dialog.set_program_name("Lybniz") about_dialog.set_version(str(app_version)) about_dialog.set_authors(["Thomas Führinger","Sam Tygier"]) about_dialog.set_comments(_("Function Graph Plotter")) about_dialog.set_license("BSD") about_dialog.set_website("https://github.com/thomasfuhringer/lybniz") about_dialog.set_logo(lybniz_icon) about_dialog.connect ("response", lambda d, r: d.destroy()) about_dialog.present() def parameter_entries_create(): # create text entries for parameters app_win.y1_entry = Gtk.Entry() app_win.y1_entry.set_size_request(300, 24) app_win.y1_entry.set_hexpand(True) app_win.y2_entry = Gtk.Entry() app_win.y3_entry = Gtk.Entry() app_win.y3_entry.set_size_request(300, 24) app_win.x_min_entry = Gtk.Entry() app_win.x_min_entry.set_width_chars(3) app_win.x_min_entry.set_size_request(140, 24) app_win.x_min_entry.set_alignment(xalign=1) app_win.x_max_entry = Gtk.Entry() app_win.x_max_entry.set_width_chars(3) app_win.x_max_entry.set_size_request(140, 24) app_win.x_max_entry.set_alignment(xalign=1) app_win.x_scale_entry = Gtk.Entry() app_win.x_scale_entry.set_width_chars(3) app_win.x_scale_entry.set_size_request(140, 24) app_win.x_scale_entry.set_alignment(xalign=1) app_win.y_min_entry = Gtk.Entry() app_win.y_min_entry.set_width_chars(3) app_win.y_min_entry.set_size_request(140, 24) app_win.y_min_entry.set_alignment(xalign=1) app_win.y_max_entry = Gtk.Entry() app_win.y_max_entry.set_width_chars(3) app_win.y_max_entry.set_size_request(140, 24) app_win.y_max_entry.set_alignment(xalign=1) app_win.y_scale_entry = Gtk.Entry() app_win.y_scale_entry.set_width_chars(3) app_win.y_scale_entry.set_size_request(140, 24) app_win.y_scale_entry.set_alignment(xalign=1) parameter_entries_populate() app_win.y1_entry.connect("key-press-event", key_press_plot) app_win.y2_entry.connect("key-press-event", key_press_plot) app_win.y3_entry.connect("key-press-event", key_press_plot) app_win.x_min_entry.connect("key-press-event", key_press_plot) app_win.y_min_entry.connect("key-press-event", key_press_plot) app_win.x_max_entry.connect("key-press-event", key_press_plot) app_win.y_max_entry.connect("key-press-event", key_press_plot) app_win.x_scale_entry.connect("key-press-event", key_press_plot) app_win.y_scale_entry.connect("key-press-event", key_press_plot) app_win.scale_grid = Gtk.Grid() app_win.scale_grid.set_property("column-spacing", 10) grid = Gtk.Grid() grid.set_property("row-spacing", 2) grid.set_property("column-spacing", 10) grid.set_border_width(6) label = Gtk.Label(label="y1 = ") label.set_valign(Gtk.Align.CENTER) label.set_halign(Gtk.Align.START) label.get_style_context().add_class("y1") grid.add(label) grid.attach(app_win.y1_entry, 1, 0, 1, 1) label = Gtk.Label(label=_("X min")) label.set_valign(Gtk.Align.CENTER) label.set_halign(Gtk.Align.START) grid.attach(label, 2, 0, 1, 1) grid.attach(app_win.x_min_entry, 3, 0, 1, 1) label = Gtk.Label(label=_("Y min")) label.set_valign(Gtk.Align.CENTER) label.set_halign(Gtk.Align.START) grid.attach(label, 4, 0, 1, 1) grid.attach(app_win.y_min_entry, 5, 0, 1, 1) label = Gtk.Label(label="y2 = ") label.set_valign(Gtk.Align.CENTER) label.get_style_context().add_class("y2") grid.attach(label, 0, 1, 1, 1) grid.attach(app_win.y2_entry, 1, 1, 1, 1) label = Gtk.Label(label=_("X max")) label.set_valign(Gtk.Align.CENTER) label.set_halign(Gtk.Align.START) grid.attach(label, 2, 1, 1, 1) grid.attach(app_win.x_max_entry, 3, 1, 1, 1) label = Gtk.Label(label=_("Y max")) label.set_valign(Gtk.Align.CENTER) label.set_halign(Gtk.Align.START) grid.attach(label, 4, 1, 1, 1) grid.attach(app_win.y_max_entry, 5, 1, 1, 1) label = Gtk.Label(label="y3 = ") label.set_valign(Gtk.Align.CENTER) label.get_style_context().add_class("y3") grid.attach(label, 0, 2, 1, 1) grid.attach(app_win.y3_entry, 1, 2, 1, 1) label = Gtk.Label(label=_("X scale")) label.set_valign(Gtk.Align.CENTER) app_win.scale_grid.add(label) app_win.scale_grid.attach(app_win.x_scale_entry, 1, 0, 1, 1) label = Gtk.Label(label=_("Y scale")) label.set_valign(Gtk.Align.CENTER) app_win.scale_grid.attach(label, 2, 0, 1, 1) app_win.scale_grid.attach(app_win.y_scale_entry, 3, 0, 1, 1) grid.attach(app_win.scale_grid, 2, 2, 4, 1) return grid def parameter_entries_populate(): # set text in entries for parameters with user's input app_win.y1_entry.set_text(y1) app_win.y2_entry.set_text(y2) app_win.y3_entry.set_text(y3) app_win.x_min_entry.set_text(x_min) app_win.x_max_entry.set_text(x_max) app_win.x_scale_entry.set_text(x_scale) app_win.y_min_entry.set_text(y_min) app_win.y_max_entry.set_text(y_max) app_win.y_scale_entry.set_text(y_scale) def parameter_entries_repopulate(): # set text in entries for parameters app_win.y1_entry.set_text(y1) app_win.y2_entry.set_text(y2) app_win.y3_entry.set_text(y3) app_win.x_min_entry.set_text(str(graph.x_min)) app_win.x_max_entry.set_text(str(graph.x_max)) app_win.x_scale_entry.set_text(str(graph.x_scale)) app_win.y_min_entry.set_text(str(graph.y_min)) app_win.y_max_entry.set_text(str(graph.y_max)) app_win.y_scale_entry.set_text(str(graph.y_scale)) def key_press_plot(widget, event): if event.keyval == 65293: plot(None) return True else: return False class LybnizApp(Gtk.Application): def __init__(self): Gtk.Application.__init__(self, application_id="apps.lybniz", flags=Gio.ApplicationFlags.FLAGS_NONE) self.connect("activate", self.on_activate) def on_activate(self, data=None): global app_win, graph, config style_provider = Gtk.CssProvider () css = """ button, entry, label { padding-top: 0px; padding-bottom: 0px; min-height: 20px; min-width: 12px; } entry { padding-left: 5px; padding-right: 5px; } toolbar, statusbar { margin-left: 0px; margin-top: 0px; margin-bottom: 0px; padding-left: 0px; padding-top: 0px; padding-bottom: 0px; min-height: 10px; } label.y1 { color: blue; } label.y2 { color: red; } label.y3 { color: green; } """ style_provider.load_from_data(css.encode()); Gtk.StyleContext.add_provider_for_screen (Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION); app_win = Gtk.ApplicationWindow(application=self, title="Lybniz") app_win.connect("delete-event", quit_dlg) app_win.set_icon(lybniz_icon) if config.read([configFile, ]) == []: config.add_section("MainWindow") app_win.set_default_size(800, 600) if config.has_option("MainWindow", "width"): app_win.resize(config.getint("MainWindow", "width"), config.getint("MainWindow", "height")) if config.has_option("MainWindow", "x"): app_win.move(config.getint("MainWindow", "x"), config.getint("MainWindow", "y")) else: app_win.set_position(Gtk.WindowPosition.CENTER) app_win.accel_group = Gtk.AccelGroup() app_win.add_accel_group(app_win.accel_group) app_win.v_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=0) #app_win.v_box.set_border_width(1) menu_toolbar_create() app_win.v_box.pack_start(app_win.menu_main, False, False, 0) app_win.v_box.pack_start(app_win.tool_bar, False, False, 0) app_win.v_box.pack_start(parameter_entries_create(), False, False, 4) graph = GraphClass() app_win.v_box.pack_start(graph.drawing_area, True, True, 0) app_win.status_bar = Gtk.Statusbar() app_win.status_bar.set_margin_top(0) app_win.status_bar.set_margin_bottom(0) app_win.v_box.pack_start(app_win.status_bar, False, False, 0) app_win.add(app_win.v_box) app_win.show_all() app_win.scale_grid.hide() self.add_window(app_win) lybniz_icon = GdkPixbuf.Pixbuf.new_from_xpm_data(( "64 64 231 2", " c None", "! c black", "# c #393D39", "$ c #364336", "% c #384336", "& c #364436", "' c #237A21", "( c #1A9218", ") c #334D32", "* c #374237", "+ c #383D38", ", c #384137", "- c #199417", ". c #04CE00", "0 c #04CF00", "1 c #247623", "2 c #364236", "3 c #384237", "4 c #2E5A2D", "5 c #0BBC07", "6 c #06CA02", "7 c #324E32", "8 c #3A3D3A", "9 c #394039", ": c #384138", "; c #393C39", "< c #384038", "= c #344A34", "> c #3A3A3A", "? c #383F38", "@ c #1D891B", "A c #03C200", "B c #027E00", "C c #0A5509", "D c #027900", "E c #03BD00", "F c #12A80F", "G c #227C20", "H c #0CBA08", "I c #05CB01", "J c #179C14", "K c #2F592F", "L c #383B38", "M c #169E13", "N c #0B4A0A", "O c #3E463E", "P c #8F8F8F", "Q c #484F48", "R c #0C370C", "S c #05CD01", "T c #1F861D", "U c #07C604", "V c #0FAF0C", "W c #374336", "X c #11AA0E", "Y c #03CC00", "Z c #0B220B", "[ c #929292", "] c #EDEDED", "^ c #A6A6A6", "_ c #091509", "` c #03C500", "a c #257324", "b c #383A38", "c c #374337", "d c #315330", "e c #0ABD07", "f c #0CB909", "g c #364735", "h c #393E39", "i c #374137", "j c #13A510", "k c #03A300", "l c #0F3A0F", "m c #070D07", "n c #103510", "o c #039701", "p c #13A610", "q c #384236", "r c #257424", "s c #05CB02", "t c #344B33", "u c #315530", "v c #131313", "w c #189816", "x c #2B6728", "y c #12A90F", "z c #286E26", "{ c #363E36", "| c #14A311", "} c #1C8C1A", "~ c #374236", " ! c #384633", "!! c #247B1F", "#! c #364536", "$! c #2F572F", "%! c #FF0000", "&! c #D60C0C", "'! c #7D2824", "(! c #3D3F34", ")! c #364435", "*! c #237922", "+! c #11AC0E", ",! c #393D38", "-! c #169D14", ".! c #2A6629", "0! c #090909", "1! c #1C1E1C", "2! c #313B31", "3! c #1D861B", "4! c #2E4E2D", "5! c #0E0E0E", "6! c #000200", "7! c #000300", "8! c #000400", "9! c #010101", ":! c #111111", ";! c #293529", "! c #247122", "?! c #1F221F", "@! c #060606", "A! c #353D35", "B! c #227920", "C! c #1C1D1C", "D! c #161716", "E! c #344234", "F! c #0BBD07", "G! c #0BBB08", "H! c #353C35", "I! c #030303", "J! c #212721", "K! c #1E851C", "L! c #15A012", "M! c #2A352A", "N! c #1A1C1A", "O! c #314831", "P! c #08C404", "Q! c #276326", "R! c #191B19", "S! c #0D0D0D", "T! c #1A1A1A", "U! c #202020", "V! c #334832", "W! c #08C305", "X! c #373C37", "Y! c #181818", "Z! c #191919", "[! c #020302", "]! c #010601", "^! c #000900", "_! c #000800", "`! c #000600", "a! c #010201", "b! c #121212", "c! c #2A2E2A", "d! c #2A5F29", "e! c #0FB20B", "f! c #343C34", "g! c #171717", "h! c #303030", "i! c #2F2F2F", "j! c #2E2E2E", "k! c #364136", "l! c #0EB50A", "m! c #344833", "n! c #313131", "o! c #2D2D2D", "p! c #2C2C2C", "q! c #2A6229", "r! c #09C105", "s! c #354435", "t! c #333333", "u! c #2B2B2B", "v! c #354035", "w! c #179915", "x! c #30512F", "y! c #1E861C", "z! c #267025", "{! c #30572F", "|! c #30552F", "}! c #373F37", "~! c #325031", " # c #374037", "!# c #324F32", "## c #266F25", "$# c #2B632A", "%# c #0FB10C", "&# c #0ABF06", "'# c #1C8E19", "(# c #384238", ")# c #179A15", "*# c #1B9118", "+# c #2E5C2D", ",# c #286A27", "-# c #3B3B3B", ".# c #2E5B2D", "0# c #2B6529", "1# c #374437", "2# c #07C603", "3# c #314C30", "4# c #374537", "5# c #1A9317", "6# c #2A322A", "7# c #325231", "8# c #296927", "9# c #21821E", ":# c #11AB0E", ";# c #169C14", "<# c #354535", "=# c #393B39", "># c #2A6828", "?# c #08C504", "@# c #0FB00C", "A# c #374436", "B# c #383E38", "C# c #0AC006", "D# c #276E26", "E# c #1F831D", "F# c #06C903", "G# c #1F851D", "H# c #05CC01", "I# c #2B652A", "J# c #2F582E", "K# c #296728", "L# c #393939", "M# c #30562F", "N# c #07C803", "O# c #199616", "P# c #354834", " ! ! ! ! ", " ! ! ! ! ", " ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " # $ ! ! ! ! ! ", " % & ' ( ) * ! ! ! ! ! ", " + , - . 0 0 . 1 2 ! ! ! ! ! ", " 3 4 5 0 0 0 0 0 6 7 8 ! ! ! ! ! 9 : ; < = * $ > ", " ? @ . 0 A B C D E 0 F & ! ! ! ! ! : , G H I 0 0 I J K ? L ", " < M 0 0 0 N O P Q R 0 S * ! ! ! ! ! + * T U 0 0 0 0 0 0 0 0 V W ; ", " * X 0 0 0 Y Z [ ] ^ _ ` 0 a b ! ! ! ! ! c d e 0 0 0 0 0 0 0 0 0 0 0 f g h ", " i j 0 0 0 0 0 k l m n o 0 0 p & ! ! ! ! ! q r s 0 0 0 0 0 0 0 0 0 0 0 0 0 e t + ", " > u 0 0 0 0 0 0 0 0 0 0 0 0 0 S : ! ! ! ! v < w 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f ? ", " , x y . 0 0 0 0 0 0 0 0 0 0 0 z > ! ! ! ! { | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 } * ", " ; ~ !!!V 0 0 0 0 0 0 0 0 0 | #! ! ! ! ! p 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 . $!; ", " %!%!%!&!'!(!)!*!+!. 0 0 0 0 0 6 ,! ! ! ! ! 0 0 0 0 0 0 0 0 0 6 -!.!( S 0 0 0 0 0 0 0 f ? ", " ! ! ! ! ! ! ! ! 0!1!2!3!0 0 0 0 0 0 4!5!! ! ! ! ! ! ! ! ! ! ! ! ! 6!7!7!8!8!8!8!8!8!9!9!:!;!!?!! ! ! ! ! ", " ! ! ! ! ! ! ! ! ! ! @!A!e 0 0 0 0 0 B!C!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! D!E!F!0 0 0 0 0 0 G!H!I!! ! ! ! ", " ! ! ! ! ! ! ! ! ! ! ! J!K!0 0 0 0 0 L!M!! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! N!O!P!0 0 0 0 0 0 Q!R!! ! ! ! ", " ! S!T!T!T!T!T!T!T!T!T!U!V!0 0 0 0 0 W!X!Y!Z!Z!5!9!9!9![!]!! ! ! ! ^!_!_!_!_!`!a!9!! ! ! b!Y!Y!Y!c!d!0 0 0 0 0 0 e!f!Y!Y!g!g!h!", " i!i!i!i!i!i!j!j!j!h!k!l!0 0 0 0 0 m!n!j!j!o!o!p!f!q!S ! ! ! ! 0 0 0 0 r!s!t!p!p!p!p!p!p!u!u!u!v!w!0 0 0 0 0 0 x!h!u!u!u!i!", " : y!0 0 0 0 0 z!> < {!6 0 ! ! ! ! 0 0 0 s |!< i r!0 0 0 0 0 K!}! ", " ~!0 0 0 0 0 | $ #!#P!0 0 ! ! ! ! 0 0 0 ##k! < $#0 0 0 0 0 %#$ ", " ? � 0 0 0 S & i !#W!0 0 0 ! ! ! ! 0 0 '#(# i )#0 0 0 0 . i ", " $ *#0 0 0 0 0 - ? 3 +#W!0 0 0 0 ! ! ! ! 0 F : * r!0 0 0 0 ,#-# ", " .#0 0 0 0 0 0 F F 0 0 0 0 0 0 ! ! ! ! G!* : 0#0 0 0 0 )#1# ", " ? 2#0 0 0 0 0 0 0 0 0 0 0 0 0 ! ! ! ! 3#+ (#J 0 0 0 W!h ", " 4#5#0 0 0 0 0 0 0 0 0 0 0 0 0 ! ! ! ! 6# * W!0 0 0 7# ", " !#0 0 0 0 0 0 0 0 0 0 0 0 0 ! ! ! ! 9! : 8#0 0 0 9#h ", " (#:#0 0 0 0 0 0 0 0 0 0 0 0 ! ! ! ! ! , L!0 0 ;#<# ", " =#>#0 0 0 0 0 0 0 0 0 0 0 0 ! ! ! ! ! & ?#0 @#A# ", " B#C#0 0 0 0 0 0 0 0 0 0 e ! ! ! ! ! (#D#0 W!? ", " i E#0 0 0 0 0 0 0 0 0 F#~!! ! ! ! ! , G#W!? ", " A#H#0 0 0 0 0 0 0 . I#* ! ! ! ! ! i J#i ", " * } 0 0 0 0 0 0 6 K#* ! ! ! ! ! L# ", " < X 0 0 0 0 W!M#* ! ! ! ! ! ", " A#L!S N#O#P# # ! ! ! ! ! ", " L#$ #!? 1# ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ! ! ! ", " ! ! ")) if __name__ == "__main__": app = LybnizApp() app.run(sys.argv) lybniz-3.0.4/po/000077500000000000000000000000001343532221700134455ustar00rootroot00000000000000lybniz-3.0.4/po/ast.po000066400000000000000000000071241343532221700146000ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Xuacu Saturio , 2018 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:22+0000\n" "Last-Translator: AlexL \n" "Language-Team: Asturian (http://www.transifex.com/Magic/lybniz/language/" "ast/)\n" "Language: ast\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Ficheru" #: ../lybniz:443 msgid "_Save" msgstr "_Guardar" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Guardar la gráfica coma mapa de bits" #: ../lybniz:450 msgid "_Quit" msgstr "_Colar" #: ../lybniz:450 msgid "Quit Application" msgstr "Colar de l'aplicación" #: ../lybniz:458 msgid "_Graph" msgstr "G_ráfica" #: ../lybniz:462 msgid "P_lot" msgstr "_Trazar" #: ../lybniz:462 msgid "Plot Functions" msgstr "Funciones de trazáu" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Evaluar" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Evaluar les funciones" #: ../lybniz:476 msgid "Zoom _In" msgstr "A_verar" #: ../lybniz:476 msgid "Zoom In" msgstr "Averar" #: ../lybniz:483 msgid "Zoom _Out" msgstr "All_oñar" #: ../lybniz:483 msgid "Zoom Out" msgstr "Alloñar" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "_Reaniciar ampliación" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Reaniciar ampliación" #: ../lybniz:497 msgid "_Connect Points" msgstr "_Conectar puntos" #: ../lybniz:504 msgid "Scale Style" msgstr "Estilu de la escala" #: ../lybniz:508 msgid "Decimal" msgstr "Decimal" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Establecer l'estilu a decimal" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Establecer l'estilu a radianes" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Personalizáu" #: ../lybniz:526 msgid "Set style to custom" msgstr "Establecer l'estilu personalizáu" #: ../lybniz:533 msgid "_Help" msgstr "A_yuda" #: ../lybniz:537 msgid "_Contents" msgstr "_Conteníu" #: ../lybniz:537 msgid "Help Contents" msgstr "Conteníu de l'ayuda" #: ../lybniz:544 msgid "_About" msgstr "_Tocante a" #: ../lybniz:544 msgid "About Box" msgstr "Tocante a" #: ../lybniz:608 msgid "Evaluate" msgstr "Evaluar" #: ../lybniz:735 msgid "Save as..." msgstr "Guardar como..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Xenerador de gráfiques de función" #: ../lybniz:858 msgid "X min" msgstr "X min" #: ../lybniz:863 msgid "Y min" msgstr "Y min" #: ../lybniz:875 msgid "X max" msgstr "X max" #: ../lybniz:881 msgid "Y max" msgstr "Y max" #: ../lybniz:893 msgid "X scale" msgstr "escala X" #: ../lybniz:898 msgid "Y scale" msgstr "escala Y" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Xenerador de gráfiques Lybniz" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Dibuxar gráfiques y funciones" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/ca.po000066400000000000000000000065221343532221700143750ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Robert Antoni Buj Gelonch , 2015 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:27+0000\n" "Last-Translator: AlexL \n" "Language-Team: Catalan (http://www.transifex.com/Magic/lybniz/language/ca/)\n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Fitxer" #: ../lybniz:443 msgid "_Save" msgstr "_Desa" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Desa el gràfic com un bitmap" #: ../lybniz:450 msgid "_Quit" msgstr "_Surt" #: ../lybniz:450 msgid "Quit Application" msgstr "Surt de l'aplicació" #: ../lybniz:458 msgid "_Graph" msgstr "_Gràfic" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "A_propa" #: ../lybniz:476 msgid "Zoom In" msgstr "Apropa" #: ../lybniz:483 msgid "Zoom _Out" msgstr "_Allunya" #: ../lybniz:483 msgid "Zoom Out" msgstr "Allunya" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "Decimal" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Estableix l'estil a decimal" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Estableix l'estil a radians" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Personalitzat" #: ../lybniz:526 msgid "Set style to custom" msgstr "Estableix l'estil a personalitzat" #: ../lybniz:533 msgid "_Help" msgstr "_Ajuda" #: ../lybniz:537 msgid "_Contents" msgstr "_Continguts" #: ../lybniz:537 msgid "Help Contents" msgstr "Continguts de l'ajuda" #: ../lybniz:544 msgid "_About" msgstr "_Quant a" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Desa com..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "mín X" #: ../lybniz:863 msgid "Y min" msgstr "mín Y" #: ../lybniz:875 msgid "X max" msgstr "màx X" #: ../lybniz:881 msgid "Y max" msgstr "màx Y" #: ../lybniz:893 msgid "X scale" msgstr "escala X" #: ../lybniz:898 msgid "Y scale" msgstr "escala Y" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/da.po000066400000000000000000000067101343532221700143750ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Joe Hansen , 2017 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:22+0000\n" "Last-Translator: AlexL \n" "Language-Team: Danish (http://www.transifex.com/Magic/lybniz/language/da/)\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Fil" #: ../lybniz:443 msgid "_Save" msgstr "_Gem" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Gem graf som bitmap" #: ../lybniz:450 msgid "_Quit" msgstr "_Afslut" #: ../lybniz:450 msgid "Quit Application" msgstr "Afslut program" #: ../lybniz:458 msgid "_Graph" msgstr "_Graf" #: ../lybniz:462 msgid "P_lot" msgstr "P_lot" #: ../lybniz:462 msgid "Plot Functions" msgstr "Plotfunktioner" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Evaluer" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Evaluer funktioner" #: ../lybniz:476 msgid "Zoom _In" msgstr "Zoom _ind" #: ../lybniz:476 msgid "Zoom In" msgstr "Zoom ind" #: ../lybniz:483 msgid "Zoom _Out" msgstr "Zoom _ud" #: ../lybniz:483 msgid "Zoom Out" msgstr "Zoom ud" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "Zoom_nulstilling" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Zoomnulstilling" #: ../lybniz:497 msgid "_Connect Points" msgstr "_Forbind punkter" #: ../lybniz:504 msgid "Scale Style" msgstr "Skalastil" #: ../lybniz:508 msgid "Decimal" msgstr "Decimal" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Sæt stilen til decimal" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Sæt stilen til radianer" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Tilpasset" #: ../lybniz:526 msgid "Set style to custom" msgstr "Sæt stil til tilpasset" #: ../lybniz:533 msgid "_Help" msgstr "_Hjælp" #: ../lybniz:537 msgid "_Contents" msgstr "_Indhold" #: ../lybniz:537 msgid "Help Contents" msgstr "Hjælpeindhold" #: ../lybniz:544 msgid "_About" msgstr "_Om" #: ../lybniz:544 msgid "About Box" msgstr "Om Box" #: ../lybniz:608 msgid "Evaluate" msgstr "Evaluer" #: ../lybniz:735 msgid "Save as..." msgstr "Gem som ..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Plotprogram for funktionsgraf" #: ../lybniz:858 msgid "X min" msgstr "X min" #: ../lybniz:863 msgid "Y min" msgstr "Y min" #: ../lybniz:875 msgid "X max" msgstr "X maks" #: ../lybniz:881 msgid "Y max" msgstr "Y maks" #: ../lybniz:893 msgid "X scale" msgstr "X-skala" #: ../lybniz:898 msgid "Y scale" msgstr "Y-skala" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Grafplotprogrammet Lybniz" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Plot grafer og funktioner" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/de.po000066400000000000000000000064761343532221700144120ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Ettore Atalan , 2015 # psyca, 2015 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:25+0000\n" "Last-Translator: AlexL \n" "Language-Team: German (http://www.transifex.com/Magic/lybniz/language/de/)\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Datei" #: ../lybniz:443 msgid "_Save" msgstr "_Speichern" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Graph als Bitmap speichern" #: ../lybniz:450 msgid "_Quit" msgstr "_Beenden" #: ../lybniz:450 msgid "Quit Application" msgstr "Anwendung beenden" #: ../lybniz:458 msgid "_Graph" msgstr "_Graph" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "H_ineinzoomen" #: ../lybniz:476 msgid "Zoom In" msgstr "Hineinzoomen" #: ../lybniz:483 msgid "Zoom _Out" msgstr "Herausz_oomen" #: ../lybniz:483 msgid "Zoom Out" msgstr "Herauszoomen" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "Zoom zu_rücksetzen" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Zoom zurücksetzen" #: ../lybniz:497 msgid "_Connect Points" msgstr "Punkte _verbinden" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "Dezimal" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Benutzerdefiniert" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "_Hilfe" #: ../lybniz:537 msgid "_Contents" msgstr "_Inhalt" #: ../lybniz:537 msgid "Help Contents" msgstr "Hilfeinhalt" #: ../lybniz:544 msgid "_About" msgstr "_Über" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Speichern als..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "X min" #: ../lybniz:863 msgid "Y min" msgstr "Y min" #: ../lybniz:875 msgid "X max" msgstr "X max" #: ../lybniz:881 msgid "Y max" msgstr "Y max" #: ../lybniz:893 msgid "X scale" msgstr "X Skala" #: ../lybniz:898 msgid "Y scale" msgstr "Y Skala" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/es.po000066400000000000000000000063101343532221700144140ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Miguel de Dios Matias , 2016 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:30+0000\n" "Last-Translator: AlexL \n" "Language-Team: Spanish (http://www.transifex.com/Magic/lybniz/language/es/)\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Fichero" #: ../lybniz:443 msgid "_Save" msgstr "_Guardar" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Guardar el gráfico como un mapa de bits" #: ../lybniz:450 msgid "_Quit" msgstr "_Salir" #: ../lybniz:450 msgid "Quit Application" msgstr "Salir de la aplicación" #: ../lybniz:458 msgid "_Graph" msgstr "_Gráfico" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "_Aumentar" #: ../lybniz:476 msgid "Zoom In" msgstr "Aumentar" #: ../lybniz:483 msgid "Zoom _Out" msgstr "_Reducir" #: ../lybniz:483 msgid "Zoom Out" msgstr "Reducir" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "Ay_uda" #: ../lybniz:537 msgid "_Contents" msgstr "" #: ../lybniz:537 msgid "Help Contents" msgstr "" #: ../lybniz:544 msgid "_About" msgstr "_Acerca de" #: ../lybniz:544 msgid "About Box" msgstr "Caja de Acerca de" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Guardar como..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/et.po000066400000000000000000000063051343532221700144210ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Rivo Zängov , 2018 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:28+0000\n" "Last-Translator: AlexL \n" "Language-Team: Estonian (http://www.transifex.com/Magic/lybniz/language/" "et/)\n" "Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Fail" #: ../lybniz:443 msgid "_Save" msgstr "_Salvesta" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Salvesta graafik pildifailina" #: ../lybniz:450 msgid "_Quit" msgstr "_Välju" #: ../lybniz:450 msgid "Quit Application" msgstr "Välju rakendusest" #: ../lybniz:458 msgid "_Graph" msgstr "_Graafik" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Hinda" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "" #: ../lybniz:476 msgid "Zoom In" msgstr "" #: ../lybniz:483 msgid "Zoom _Out" msgstr "" #: ../lybniz:483 msgid "Zoom Out" msgstr "" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Kohandatud" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "_Abiinfo" #: ../lybniz:537 msgid "_Contents" msgstr "_Sisu" #: ../lybniz:537 msgid "Help Contents" msgstr "Abiinfo sisu" #: ../lybniz:544 msgid "_About" msgstr "_Info" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "Hinda" #: ../lybniz:735 msgid "Save as..." msgstr "Salvesta kui..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "X min" #: ../lybniz:863 msgid "Y min" msgstr "Y min" #: ../lybniz:875 msgid "X max" msgstr "X maks" #: ../lybniz:881 msgid "Y max" msgstr "Y maks" #: ../lybniz:893 msgid "X scale" msgstr "X skaala" #: ../lybniz:898 msgid "Y scale" msgstr "Y skaala" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/gl.po000066400000000000000000000071041343532221700144110ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Xurxo Guerra Perez , 2015-2016 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:23+0000\n" "Last-Translator: AlexL \n" "Language-Team: Galician (http://www.transifex.com/Magic/lybniz/language/" "gl/)\n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Ficheiro" #: ../lybniz:443 msgid "_Save" msgstr "_Gardar" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Gardar a gráfica coma mapa de bits" #: ../lybniz:450 msgid "_Quit" msgstr "_Saír" #: ../lybniz:450 msgid "Quit Application" msgstr "Saír da aplicación" #: ../lybniz:458 msgid "_Graph" msgstr "G_ráfica" #: ../lybniz:462 msgid "P_lot" msgstr "_Trazar" #: ../lybniz:462 msgid "Plot Functions" msgstr "Funcións de trazado" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Avaliar" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Avaliar funcións" #: ../lybniz:476 msgid "Zoom _In" msgstr "Ampliar" #: ../lybniz:476 msgid "Zoom In" msgstr "Ampliar" #: ../lybniz:483 msgid "Zoom _Out" msgstr "Afastar" #: ../lybniz:483 msgid "Zoom Out" msgstr "Afastar" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "Restabelecer ampliación" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Restabelecer ampliación" #: ../lybniz:497 msgid "_Connect Points" msgstr "_Conectar puntos" #: ../lybniz:504 msgid "Scale Style" msgstr "Estilo da escala" #: ../lybniz:508 msgid "Decimal" msgstr "Decimal" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Estabelecer o estilo a decimal" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Estabelecer o estilo a radiáns" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Personalizado" #: ../lybniz:526 msgid "Set style to custom" msgstr "Estabelecer o estilo personalizado" #: ../lybniz:533 msgid "_Help" msgstr "A_xuda" #: ../lybniz:537 msgid "_Contents" msgstr "_Contidos" #: ../lybniz:537 msgid "Help Contents" msgstr "Contidos da axuda" #: ../lybniz:544 msgid "_About" msgstr "_Sobre" #: ../lybniz:544 msgid "About Box" msgstr "Sobre" #: ../lybniz:608 msgid "Evaluate" msgstr "Avaliar" #: ../lybniz:735 msgid "Save as..." msgstr "Gardar como..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Función xeradora de gráficas" #: ../lybniz:858 msgid "X min" msgstr "X mín" #: ../lybniz:863 msgid "Y min" msgstr "Y mín" #: ../lybniz:875 msgid "X max" msgstr "X máx" #: ../lybniz:881 msgid "Y max" msgstr "Y máx" #: ../lybniz:893 msgid "X scale" msgstr "escala X" #: ../lybniz:898 msgid "Y scale" msgstr "escala Y" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Xerador de gráficas Lybniz" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Trazar gráficas e funcións" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/hr.po000066400000000000000000000063001343532221700144150ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Ivica Kolić , 2016 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:30+0000\n" "Last-Translator: AlexL \n" "Language-Team: Croatian (http://www.transifex.com/Magic/lybniz/language/" "hr/)\n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Datoteka" #: ../lybniz:443 msgid "_Save" msgstr "_Spremi" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "" #: ../lybniz:450 msgid "_Quit" msgstr "_Isključi" #: ../lybniz:450 msgid "Quit Application" msgstr "Isključi program" #: ../lybniz:458 msgid "_Graph" msgstr "_Graf" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "" #: ../lybniz:476 msgid "Zoom In" msgstr "" #: ../lybniz:483 msgid "Zoom _Out" msgstr "" #: ../lybniz:483 msgid "Zoom Out" msgstr "" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Prilagođeno" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "_Pomoć" #: ../lybniz:537 msgid "_Contents" msgstr "_Sadržaj" #: ../lybniz:537 msgid "Help Contents" msgstr "" #: ../lybniz:544 msgid "_About" msgstr "_O programu" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Spremi kao..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/id.po000066400000000000000000000057711343532221700144130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:36+0000\n" "Last-Translator: AlexL \n" "Language-Team: Indonesian (http://www.transifex.com/Magic/lybniz/language/" "id/)\n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_File" #: ../lybniz:443 msgid "_Save" msgstr "" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "" #: ../lybniz:450 msgid "_Quit" msgstr "" #: ../lybniz:450 msgid "Quit Application" msgstr "" #: ../lybniz:458 msgid "_Graph" msgstr "" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "" #: ../lybniz:476 msgid "Zoom In" msgstr "" #: ../lybniz:483 msgid "Zoom _Out" msgstr "" #: ../lybniz:483 msgid "Zoom Out" msgstr "" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "_Bantuan" #: ../lybniz:537 msgid "_Contents" msgstr "" #: ../lybniz:537 msgid "Help Contents" msgstr "" #: ../lybniz:544 msgid "_About" msgstr "_Tentang" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "" #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/it.po000066400000000000000000000070651343532221700144310ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Sebastiano Pistore , 2016 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:36+0000\n" "Last-Translator: AlexL \n" "Language-Team: Italian (http://www.transifex.com/Magic/lybniz/language/it/)\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_File" #: ../lybniz:443 msgid "_Save" msgstr "_Salva" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Salva come bitmap" #: ../lybniz:450 msgid "_Quit" msgstr "_Esci" #: ../lybniz:450 msgid "Quit Application" msgstr "Termina l'applicazione" #: ../lybniz:458 msgid "_Graph" msgstr "_Grafico" #: ../lybniz:462 msgid "P_lot" msgstr "T_raccia" #: ../lybniz:462 msgid "Plot Functions" msgstr "Traccia funzioni" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Valuta" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Valuta funzioni" #: ../lybniz:476 msgid "Zoom _In" msgstr "Aumenta _zoom" #: ../lybniz:476 msgid "Zoom In" msgstr "Aumenta zoom" #: ../lybniz:483 msgid "Zoom _Out" msgstr "Diminuisci _zoom" #: ../lybniz:483 msgid "Zoom Out" msgstr "Diminuisci zoom" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "Resetta lo _zoom" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Resetta lo zoom" #: ../lybniz:497 msgid "_Connect Points" msgstr "_Collega punti" #: ../lybniz:504 msgid "Scale Style" msgstr "Tipo di scala" #: ../lybniz:508 msgid "Decimal" msgstr "Decimale" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Imposta a decimale" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Imposta a radianti" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Personalizzata" #: ../lybniz:526 msgid "Set style to custom" msgstr "Imposta un tipo personalizzato" #: ../lybniz:533 msgid "_Help" msgstr "_Aiuto" #: ../lybniz:537 msgid "_Contents" msgstr "_Contenuti" #: ../lybniz:537 msgid "Help Contents" msgstr "Sommario" #: ../lybniz:544 msgid "_About" msgstr "_Informazioni" #: ../lybniz:544 msgid "About Box" msgstr "Informazioni su Box" #: ../lybniz:608 msgid "Evaluate" msgstr "Valuta" #: ../lybniz:735 msgid "Save as..." msgstr "Salva come..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Tracciato della funzione" #: ../lybniz:858 msgid "X min" msgstr "Minimo in X" #: ../lybniz:863 msgid "Y min" msgstr "Minimo in Y" #: ../lybniz:875 msgid "X max" msgstr "Massimo in X" #: ../lybniz:881 msgid "Y max" msgstr "Massimo in Y" #: ../lybniz:893 msgid "X scale" msgstr "Scala asse X" #: ../lybniz:898 msgid "Y scale" msgstr "Scala asse Y" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Lybniz Graph Plotter" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Disegna grafici e funzioni" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/lt.po000066400000000000000000000071671343532221700144370ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Moo, 2015 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:24+0000\n" "Last-Translator: AlexL \n" "Language-Team: Lithuanian (http://www.transifex.com/Magic/lybniz/language/" "lt/)\n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < " "11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? " "1 : n % 1 != 0 ? 2: 3);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Failas" #: ../lybniz:443 msgid "_Save" msgstr "Įraš_yti" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Įrašyti grafiką kaip taškinę grafiką" #: ../lybniz:450 msgid "_Quit" msgstr "_Baigti" #: ../lybniz:450 msgid "Quit Application" msgstr "Baigti programos darbą" #: ../lybniz:458 msgid "_Graph" msgstr "_Grafikas" #: ../lybniz:462 msgid "P_lot" msgstr "_Braižyti" #: ../lybniz:462 msgid "Plot Functions" msgstr "Braižyti funkcijas" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "D_idinti" #: ../lybniz:476 msgid "Zoom In" msgstr "Didinti" #: ../lybniz:483 msgid "Zoom _Out" msgstr "_Mažinti" #: ../lybniz:483 msgid "Zoom Out" msgstr "Mažinti" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "A_tstatyti mastelį" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Atstatyti mastelį" #: ../lybniz:497 msgid "_Connect Points" msgstr "_Sujungti taškus" #: ../lybniz:504 msgid "Scale Style" msgstr "Skalės stilius" #: ../lybniz:508 msgid "Decimal" msgstr "Dešimtainis" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Nustatyti stilių į dešimtainį" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Nustatyti stilių į radianus" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Pasirinktinis" #: ../lybniz:526 msgid "Set style to custom" msgstr "Nustatyti pasirinktinį stilių" #: ../lybniz:533 msgid "_Help" msgstr "_Pagalba" #: ../lybniz:537 msgid "_Contents" msgstr "Ž_inynas" #: ../lybniz:537 msgid "Help Contents" msgstr "Pagalbos turinys" #: ../lybniz:544 msgid "_About" msgstr "_Apie" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Įrašyti kaip..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Funkcijos grafiko braižymo įrankis" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Lybniz grafiko braižymo įrankis" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Braižykite grafikus ir funkcijas" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/lybniz.pot000066400000000000000000000055611343532221700155070ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "" #: ../lybniz:443 msgid "_Save" msgstr "" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "" #: ../lybniz:450 msgid "_Quit" msgstr "" #: ../lybniz:450 msgid "Quit Application" msgstr "" #: ../lybniz:458 msgid "_Graph" msgstr "" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "" #: ../lybniz:476 msgid "Zoom In" msgstr "" #: ../lybniz:483 msgid "Zoom _Out" msgstr "" #: ../lybniz:483 msgid "Zoom Out" msgstr "" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "" #: ../lybniz:537 msgid "_Contents" msgstr "" #: ../lybniz:537 msgid "Help Contents" msgstr "" #: ../lybniz:544 msgid "_About" msgstr "" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "" #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "" lybniz-3.0.4/po/ms.po000066400000000000000000000067401343532221700144330ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # abuyop , 2015 # AlexL , 2019 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:23+0000\n" "Last-Translator: AlexL \n" "Language-Team: Malay (http://www.transifex.com/Magic/lybniz/language/ms/)\n" "Language: ms\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Fail" #: ../lybniz:443 msgid "_Save" msgstr "_Simpan" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Simpan graf sebagai peta bit" #: ../lybniz:450 msgid "_Quit" msgstr "_Keluar" #: ../lybniz:450 msgid "Quit Application" msgstr "Keluar dari Aplikasi" #: ../lybniz:458 msgid "_Graph" msgstr "_Graf" #: ../lybniz:462 msgid "P_lot" msgstr "P_lot" #: ../lybniz:462 msgid "Plot Functions" msgstr "Plot Fungsi" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Nilai" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Nilaikan Fungsi" #: ../lybniz:476 msgid "Zoom _In" msgstr "Zum _Masuk" #: ../lybniz:476 msgid "Zoom In" msgstr "Zum Masuk" #: ../lybniz:483 msgid "Zoom _Out" msgstr "Zum K_eluar" #: ../lybniz:483 msgid "Zoom Out" msgstr "Zum Keluar" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "_Tetap Semula Zum" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Tetap Semula Zum" #: ../lybniz:497 msgid "_Connect Points" msgstr "Sa_mbung Titik" #: ../lybniz:504 msgid "Scale Style" msgstr "Gaya Skala" #: ../lybniz:508 msgid "Decimal" msgstr "Perpuluhan" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Tetapkan gaya mengikut perpuluhan" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Tetapkan gaya mengikut radian" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Suai" #: ../lybniz:526 msgid "Set style to custom" msgstr "Tetapkan gaya mengikut suai" #: ../lybniz:533 msgid "_Help" msgstr "_Bantuan" #: ../lybniz:537 msgid "_Contents" msgstr "_Kandungan" #: ../lybniz:537 msgid "Help Contents" msgstr "Kandungan Bantuan" #: ../lybniz:544 msgid "_About" msgstr "Perih_al" #: ../lybniz:544 msgid "About Box" msgstr "Perihal Box" #: ../lybniz:608 msgid "Evaluate" msgstr "Nilaikan" #: ../lybniz:735 msgid "Save as..." msgstr "Simpan sebagai..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Pemplot graf Fungsi" #: ../lybniz:858 msgid "X min" msgstr "X min" #: ../lybniz:863 msgid "Y min" msgstr "Y min" #: ../lybniz:875 msgid "X max" msgstr "X maks" #: ../lybniz:881 msgid "Y max" msgstr "Y maks" #: ../lybniz:893 msgid "X scale" msgstr "Skala X" #: ../lybniz:898 msgid "Y scale" msgstr "Skala Y" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Pemplot Graf Lybniz" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Plot graf dan fungsi" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/oc.po000066400000000000000000000060361343532221700144130ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:33+0000\n" "Last-Translator: AlexL \n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/Magic/lybniz/" "language/oc/)\n" "Language: oc\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Fichièr" #: ../lybniz:443 msgid "_Save" msgstr "" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "" #: ../lybniz:450 msgid "_Quit" msgstr "" #: ../lybniz:450 msgid "Quit Application" msgstr "" #: ../lybniz:458 msgid "_Graph" msgstr "" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "" #: ../lybniz:476 msgid "Zoom In" msgstr "" #: ../lybniz:483 msgid "Zoom _Out" msgstr "" #: ../lybniz:483 msgid "Zoom Out" msgstr "" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "A_juda" #: ../lybniz:537 msgid "_Contents" msgstr "" #: ../lybniz:537 msgid "Help Contents" msgstr "" #: ../lybniz:544 msgid "_About" msgstr "_A prepaus" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Enregistrar jos..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/pl.po000066400000000000000000000063351343532221700144270ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:35+0000\n" "Last-Translator: AlexL \n" "Language-Team: Polish (http://www.transifex.com/Magic/lybniz/language/pl/)\n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n" "%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n" "%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Plik" #: ../lybniz:443 msgid "_Save" msgstr "" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "" #: ../lybniz:450 msgid "_Quit" msgstr "Wyjście" #: ../lybniz:450 msgid "Quit Application" msgstr "" #: ../lybniz:458 msgid "_Graph" msgstr "" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "_Powiększ" #: ../lybniz:476 msgid "Zoom In" msgstr "Powiększ" #: ../lybniz:483 msgid "Zoom _Out" msgstr "P_omniejsz" #: ../lybniz:483 msgid "Zoom Out" msgstr "Pomniejsz" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Niestandardowe" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "Po_moc" #: ../lybniz:537 msgid "_Contents" msgstr "" #: ../lybniz:537 msgid "Help Contents" msgstr "" #: ../lybniz:544 msgid "_About" msgstr "Informacje o" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Zapisz jako..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/pt.po000066400000000000000000000064551343532221700144420ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Rui , 2018 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:28+0000\n" "Last-Translator: AlexL \n" "Language-Team: Portuguese (http://www.transifex.com/Magic/lybniz/language/" "pt/)\n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Ficheiro" #: ../lybniz:443 msgid "_Save" msgstr "_Gravar" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "" #: ../lybniz:450 msgid "_Quit" msgstr "_Sair" #: ../lybniz:450 msgid "Quit Application" msgstr "Sair da Aplicação" #: ../lybniz:458 msgid "_Graph" msgstr "" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "" #: ../lybniz:476 msgid "Zoom In" msgstr "" #: ../lybniz:483 msgid "Zoom _Out" msgstr "" #: ../lybniz:483 msgid "Zoom Out" msgstr "" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "Pontos _Conectados" #: ../lybniz:504 msgid "Scale Style" msgstr "Estilo da Escala" #: ../lybniz:508 msgid "Decimal" msgstr "Decimal" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Definir estilo dos radianos" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Personalizado" #: ../lybniz:526 msgid "Set style to custom" msgstr "Definir estilo do personalizado" #: ../lybniz:533 msgid "_Help" msgstr "_Ajuda" #: ../lybniz:537 msgid "_Contents" msgstr "_Conteúdo" #: ../lybniz:537 msgid "Help Contents" msgstr "Conteúdo da Ajuda" #: ../lybniz:544 msgid "_About" msgstr "_Sobre" #: ../lybniz:544 msgid "About Box" msgstr "Caixa de Sobre" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Gravar como..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "X mín" #: ../lybniz:863 msgid "Y min" msgstr "Y mín" #: ../lybniz:875 msgid "X max" msgstr "X máx" #: ../lybniz:881 msgid "Y max" msgstr "Y máx" #: ../lybniz:893 msgid "X scale" msgstr "escala X" #: ../lybniz:898 msgid "Y scale" msgstr "escala Y" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Plotar gráficos e funções" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/pt_BR.po000066400000000000000000000061251343532221700150170ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:32+0000\n" "Last-Translator: AlexL \n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/Magic/lybniz/" "language/pt_BR/)\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Arquivo" #: ../lybniz:443 msgid "_Save" msgstr "" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "" #: ../lybniz:450 msgid "_Quit" msgstr "" #: ../lybniz:450 msgid "Quit Application" msgstr "" #: ../lybniz:458 msgid "_Graph" msgstr "" #: ../lybniz:462 msgid "P_lot" msgstr "" #: ../lybniz:462 msgid "Plot Functions" msgstr "" #: ../lybniz:469 msgid "_Evaluate" msgstr "" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "" #: ../lybniz:476 msgid "Zoom _In" msgstr "" #: ../lybniz:476 msgid "Zoom In" msgstr "" #: ../lybniz:483 msgid "Zoom _Out" msgstr "" #: ../lybniz:483 msgid "Zoom Out" msgstr "" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "" #: ../lybniz:490 msgid "Zoom Reset" msgstr "" #: ../lybniz:497 msgid "_Connect Points" msgstr "" #: ../lybniz:504 msgid "Scale Style" msgstr "" #: ../lybniz:508 msgid "Decimal" msgstr "" #: ../lybniz:508 msgid "Set style to decimal" msgstr "" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "" #: ../lybniz:526 msgid "Set style to custom" msgstr "" #: ../lybniz:533 msgid "_Help" msgstr "_Ajuda" #: ../lybniz:537 msgid "_Contents" msgstr "" #: ../lybniz:537 msgid "Help Contents" msgstr "" #: ../lybniz:544 msgid "_About" msgstr "_Sobre" #: ../lybniz:544 msgid "About Box" msgstr "" #: ../lybniz:608 msgid "Evaluate" msgstr "" #: ../lybniz:735 msgid "Save as..." msgstr "Salvar como..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "" #: ../lybniz:858 msgid "X min" msgstr "" #: ../lybniz:863 msgid "Y min" msgstr "" #: ../lybniz:875 msgid "X max" msgstr "" #: ../lybniz:881 msgid "Y max" msgstr "" #: ../lybniz:893 msgid "X scale" msgstr "" #: ../lybniz:898 msgid "Y scale" msgstr "" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Plotador de Gráficos de Lybniz" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Plote gráficos e funções" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/ru.po000066400000000000000000000105571343532221700144430ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2015,2019 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:18+0000\n" "Last-Translator: AlexL \n" "Language-Team: Russian (http://www.transifex.com/Magic/lybniz/language/ru/)\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" "%100>=11 && n%100<=14)? 2 : 3);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "Функция" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "недопустимая." #: ../lybniz:404 msgid "is invalid at" msgstr "недопустимая в" #: ../lybniz:439 msgid "_File" msgstr "_Файл" #: ../lybniz:443 msgid "_Save" msgstr "_Сохранить" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Сохранить график как растровое изображение" #: ../lybniz:450 msgid "_Quit" msgstr "_Выход" #: ../lybniz:450 msgid "Quit Application" msgstr "Выход из программы" #: ../lybniz:458 msgid "_Graph" msgstr "_График" #: ../lybniz:462 msgid "P_lot" msgstr "_Начертить" #: ../lybniz:462 msgid "Plot Functions" msgstr "Начертить функцию" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Вычислить" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Вычислить функцию" #: ../lybniz:476 msgid "Zoom _In" msgstr "_Приблизить" #: ../lybniz:476 msgid "Zoom In" msgstr "Приблизить" #: ../lybniz:483 msgid "Zoom _Out" msgstr "_Отдалить" #: ../lybniz:483 msgid "Zoom Out" msgstr "Отдалить" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "_Сбросить масштабирование" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Сбросить масштабирование" #: ../lybniz:497 msgid "_Connect Points" msgstr "Подключить то_чки" #: ../lybniz:504 msgid "Scale Style" msgstr "Стиль шкалы" #: ../lybniz:508 msgid "Decimal" msgstr "Десятичный" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Установить стиль десятичным" #: ../lybniz:514 msgid "Radians π" msgstr "Радиальный π" #: ../lybniz:514 msgid "Set style to radians" msgstr "Установить стиль радиальным" #: ../lybniz:520 msgid "Radians τ" msgstr "Радиальный τ" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "Установить стиль радиальным, используя Тау (τ)" #: ../lybniz:526 msgid "Custom" msgstr "Пользовательский" #: ../lybniz:526 msgid "Set style to custom" msgstr "Установить стиль пользовательским" #: ../lybniz:533 msgid "_Help" msgstr "_Справка" #: ../lybniz:537 msgid "_Contents" msgstr "_Содержание" #: ../lybniz:537 msgid "Help Contents" msgstr "Содержание справки" #: ../lybniz:544 msgid "_About" msgstr "_О программе" #: ../lybniz:544 msgid "About Box" msgstr "О поле" #: ../lybniz:608 msgid "Evaluate" msgstr "Вычислить" #: ../lybniz:735 msgid "Save as..." msgstr "Сохранить как..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Графопостроитель функций" #: ../lybniz:858 msgid "X min" msgstr "X min" #: ../lybniz:863 msgid "Y min" msgstr "Y min" #: ../lybniz:875 msgid "X max" msgstr "X max" #: ../lybniz:881 msgid "Y max" msgstr "Y max" #: ../lybniz:893 msgid "X scale" msgstr "Шкала X" #: ../lybniz:898 msgid "Y scale" msgstr "Шкала Y" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Lybniz графопостроитель" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Построение графиков математических функций" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/sr.po000066400000000000000000000105321343532221700144320ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Мирослав Николић , 2016 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:22+0000\n" "Last-Translator: AlexL \n" "Language-Team: Serbian (http://www.transifex.com/Magic/lybniz/language/sr/)\n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Датотека" #: ../lybniz:443 msgid "_Save" msgstr "_Сачувај" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Сачувајте график као слику битмапe" #: ../lybniz:450 msgid "_Quit" msgstr "_Изађи" #: ../lybniz:450 msgid "Quit Application" msgstr "Изађите из програма" #: ../lybniz:458 msgid "_Graph" msgstr "Дија_грам" #: ../lybniz:462 msgid "P_lot" msgstr "_Исцртај" #: ../lybniz:462 msgid "Plot Functions" msgstr "Нацртајте график функције" #: ../lybniz:469 msgid "_Evaluate" msgstr "_Процени" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Процените функцију" #: ../lybniz:476 msgid "Zoom _In" msgstr "У_већај" #: ../lybniz:476 msgid "Zoom In" msgstr "Увећајте приказ" #: ../lybniz:483 msgid "Zoom _Out" msgstr "У_мањи" #: ../lybniz:483 msgid "Zoom Out" msgstr "Умањите приказ" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "Врати _увеличање" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Вратите увеличање приказа" #: ../lybniz:497 msgid "_Connect Points" msgstr "_Повежи тачке" #: ../lybniz:504 msgid "Scale Style" msgstr "Врста размере" #: ../lybniz:508 msgid "Decimal" msgstr "Децимални" #: ../lybniz:508 msgid "Set style to decimal" msgstr "За размеру користите децималне бројеве" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "За размеру користите углове радијана" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Произвољно" #: ../lybniz:526 msgid "Set style to custom" msgstr "За размеру користите произвољне вредности" #: ../lybniz:533 msgid "_Help" msgstr "По_моћ" #: ../lybniz:537 msgid "_Contents" msgstr "_Садржај" #: ../lybniz:537 msgid "Help Contents" msgstr "Прикажите садржај помоћи програма" #: ../lybniz:544 msgid "_About" msgstr "_О програму" #: ../lybniz:544 msgid "About Box" msgstr "Прикажите прозорче са подацима о програму" #: ../lybniz:608 msgid "Evaluate" msgstr "Процена" #: ../lybniz:735 msgid "Save as..." msgstr "Сачувајте као..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Исцртавач графика функција" #: ../lybniz:858 msgid "X min" msgstr "Најмање X" #: ../lybniz:863 msgid "Y min" msgstr "Најмање Y" #: ../lybniz:875 msgid "X max" msgstr "Највеће X" #: ../lybniz:881 msgid "Y max" msgstr "Највеће Y" #: ../lybniz:893 msgid "X scale" msgstr "X размера" #: ../lybniz:898 msgid "Y scale" msgstr "Y размера" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Лајбниц" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Лајбниц исцртавач графика функција" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Исцртавајте графике и функције" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "лајбниц" lybniz-3.0.4/po/sv.po000066400000000000000000000067351343532221700144500ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Arve Eriksson <031299870@telia.com>, 2015 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-19 09:38+0300\n" "PO-Revision-Date: 2019-02-19 05:23+0000\n" "Last-Translator: AlexL \n" "Language-Team: Swedish (http://www.transifex.com/Magic/lybniz/language/sv/)\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 ../lybniz:404 msgid "Function" msgstr "" #: ../lybniz:345 ../lybniz:356 ../lybniz:367 msgid "is invalid." msgstr "" #: ../lybniz:404 msgid "is invalid at" msgstr "" #: ../lybniz:439 msgid "_File" msgstr "_Fil" #: ../lybniz:443 msgid "_Save" msgstr "_Spara" #: ../lybniz:443 msgid "Save graph as bitmap" msgstr "Spara graf som bitmap" #: ../lybniz:450 msgid "_Quit" msgstr "_Avsluta" #: ../lybniz:450 msgid "Quit Application" msgstr "Avsluta program" #: ../lybniz:458 msgid "_Graph" msgstr "_Graf" #: ../lybniz:462 msgid "P_lot" msgstr "R_ita upp" #: ../lybniz:462 msgid "Plot Functions" msgstr "Rita upp funktioner" #: ../lybniz:469 msgid "_Evaluate" msgstr "Utvärd_era" #: ../lybniz:469 msgid "Evaluate Functions" msgstr "Utvärdera funktioner" #: ../lybniz:476 msgid "Zoom _In" msgstr "Zooma _in" #: ../lybniz:476 msgid "Zoom In" msgstr "Zooma in" #: ../lybniz:483 msgid "Zoom _Out" msgstr "Z_ooma ut" #: ../lybniz:483 msgid "Zoom Out" msgstr "Zooma ut" #: ../lybniz:490 msgid "Zoom _Reset" msgstr "Zoom åte_rställ" #: ../lybniz:490 msgid "Zoom Reset" msgstr "Återställ zoom" #: ../lybniz:497 msgid "_Connect Points" msgstr "_Koppla ihop punkter" #: ../lybniz:504 msgid "Scale Style" msgstr "Skalstil" #: ../lybniz:508 msgid "Decimal" msgstr "Decimal" #: ../lybniz:508 msgid "Set style to decimal" msgstr "Sätt stil till decimal" #: ../lybniz:514 msgid "Radians π" msgstr "" #: ../lybniz:514 msgid "Set style to radians" msgstr "Sätt stil till radianer" #: ../lybniz:520 msgid "Radians τ" msgstr "" #: ../lybniz:520 msgid "Set style to radians using Tau (τ)" msgstr "" #: ../lybniz:526 msgid "Custom" msgstr "Egen" #: ../lybniz:526 msgid "Set style to custom" msgstr "Sätt stil till egen" #: ../lybniz:533 msgid "_Help" msgstr "_Hjälp" #: ../lybniz:537 msgid "_Contents" msgstr "_Innehåll" #: ../lybniz:537 msgid "Help Contents" msgstr "Hjälpens innehåll" #: ../lybniz:544 msgid "_About" msgstr "_Om" #: ../lybniz:544 msgid "About Box" msgstr "Omruta" #: ../lybniz:608 msgid "Evaluate" msgstr "Utvärdera" #: ../lybniz:735 msgid "Save as..." msgstr "Spara som..." #: ../lybniz:790 msgid "Function Graph Plotter" msgstr "Funktionsgrafritare" #: ../lybniz:858 msgid "X min" msgstr "X min" #: ../lybniz:863 msgid "Y min" msgstr "Y min" #: ../lybniz:875 msgid "X max" msgstr "X max" #: ../lybniz:881 msgid "Y max" msgstr "Y max" #: ../lybniz:893 msgid "X scale" msgstr "X-skala" #: ../lybniz:898 msgid "Y scale" msgstr "Y-skala" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Grafritaren Lybniz" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Rita upp grafer och funktioner" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/po/uk.po000066400000000000000000000111601343532221700144230ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: # AlexL , 2019 # Yuri Chornoivan , 2019 # Микола Ткач , 2015 msgid "" msgstr "" "Project-Id-Version: lybniz\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-02-20 02:07+0300\n" "PO-Revision-Date: 2019-02-19 06:40+0000\n" "Last-Translator: Yuri Chornoivan \n" "Language-Team: Ukrainian (http://www.transifex.com/Magic/lybniz/language/" "uk/)\n" "Language: uk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != " "11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % " "100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || " "(n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n" #: ../lybniz.py:345 ../lybniz.py:356 ../lybniz.py:367 ../lybniz.py:404 msgid "Function" msgstr "Функція" #: ../lybniz.py:345 ../lybniz.py:356 ../lybniz.py:367 msgid "is invalid." msgstr "є некоректною." #: ../lybniz.py:404 msgid "is invalid at" msgstr "є некоректною у" #: ../lybniz.py:439 msgid "_File" msgstr "_Файл" #: ../lybniz.py:443 msgid "_Save" msgstr "_Зберегти" #: ../lybniz.py:443 msgid "Save graph as bitmap" msgstr "Зберегти графік як растрове зображення" #: ../lybniz.py:450 msgid "_Quit" msgstr "_Вийти" #: ../lybniz.py:450 msgid "Quit Application" msgstr "Вийти з проґрами" #: ../lybniz.py:458 msgid "_Graph" msgstr "_Графік" #: ../lybniz.py:462 msgid "P_lot" msgstr "_Накреслити" #: ../lybniz.py:462 msgid "Plot Functions" msgstr "Накреслити функцію" #: ../lybniz.py:469 msgid "_Evaluate" msgstr "_Обчислити" #: ../lybniz.py:469 msgid "Evaluate Functions" msgstr "Обчислити функцію" #: ../lybniz.py:476 msgid "Zoom _In" msgstr "З_більшити" #: ../lybniz.py:476 msgid "Zoom In" msgstr "Збільшити" #: ../lybniz.py:483 msgid "Zoom _Out" msgstr "З_меншити" #: ../lybniz.py:483 msgid "Zoom Out" msgstr "Зменшити" #: ../lybniz.py:490 msgid "Zoom _Reset" msgstr "_Скинути масштабування" #: ../lybniz.py:490 msgid "Zoom Reset" msgstr "Скинути масштабування" #: ../lybniz.py:497 msgid "_Connect Points" msgstr "З'_єднати точки" #: ../lybniz.py:504 msgid "Scale Style" msgstr "Стиль шкали" #: ../lybniz.py:508 msgid "Decimal" msgstr "Десятковий" #: ../lybniz.py:508 msgid "Set style to decimal" msgstr "Встановити стиль десятковим" #: ../lybniz.py:514 msgid "Radians π" msgstr "π-радіани" #: ../lybniz.py:514 msgid "Set style to radians" msgstr "Встановити стиль у радіанах" #: ../lybniz.py:520 msgid "Radians τ" msgstr "τ-радіани" #: ../lybniz.py:520 msgid "Set style to radians using Tau (τ)" msgstr "Встановити стиль радіанів із тау (τ)" #: ../lybniz.py:526 msgid "Custom" msgstr "Нетиповий" #: ../lybniz.py:526 msgid "Set style to custom" msgstr "Встановити нетиповий стиль" #: ../lybniz.py:533 msgid "_Help" msgstr "_Довідка" #: ../lybniz.py:537 msgid "_Contents" msgstr "_Зміст" #: ../lybniz.py:537 msgid "Help Contents" msgstr "Зміст довідки" #: ../lybniz.py:544 msgid "_About" msgstr "_Про проґраму" #: ../lybniz.py:544 msgid "About Box" msgstr "Про поле" #: ../lybniz.py:608 msgid "Evaluate" msgstr "Обчислити" #: ../lybniz.py:735 msgid "Save as..." msgstr "Зберегти як..." #: ../lybniz.py:790 msgid "Function Graph Plotter" msgstr "Програма для побудови графіків функцій" #: ../lybniz.py:858 msgid "X min" msgstr "X min" #: ../lybniz.py:863 msgid "Y min" msgstr "Y min" #: ../lybniz.py:875 msgid "X max" msgstr "X max" #: ../lybniz.py:881 msgid "Y max" msgstr "Y max" #: ../lybniz.py:893 msgid "X scale" msgstr "X шкала" #: ../lybniz.py:898 msgid "Y scale" msgstr "Y шкала" #: ../lybniz.desktop:3 msgid "Lybniz" msgstr "Lybniz" #: ../lybniz.desktop:4 msgid "Lybniz Graph Plotter" msgstr "Програма для побудови графіків Lybniz" #: ../lybniz.desktop:42 msgid "Plot graphs and functions" msgstr "Побудова графіків математичних функцій" #: ../lybniz.desktop:90 msgid "lybniz" msgstr "lybniz" lybniz-3.0.4/setup.py000066400000000000000000000020201343532221700145330ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: UTF-8 -*- from distutils.core import setup from glob import glob import os import shutil shutil.copyfile('lybniz.py', 'lybniz') data_files = [('share/icons/hicolor/scalable/apps',['images/lybniz.svg']),('share/man/man1',['lybniz.1']),('share/applications',['lybniz.desktop']),('share/pixmaps',['images/lybniz.png']),('share/gnome/help/lybniz/C',['doc/lybniz.xml']),('share/gnome/help/lybniz/C/figures',['doc/figures/lybniz_colour_graph_small.png'])] directories = glob('locale/*/*/') for directory in directories: files = glob(directory+'*') data_files.append(('share/'+directory, files)) setup( name = 'lybniz', version = '3.0.4', description = 'Graph Plotter', author = 'Thomas Führinger, Sam Tygier', author_email = 'ThomasFuhringer@Yahoo.com, samtygier@yahoo.co.uk', contact = 'Thomas Führinger', contact_email = 'ThomasFuhringer@Yahoo.com', url = 'github.com/thomasfuhringer/lybniz', scripts = ['lybniz'], data_files = data_files, license = 'BSD', ) os.remove("lybniz")