Some more ideas for the PBIDE...

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
User avatar
Michael Vogel
Addict
Addict
Posts: 2666
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Some more ideas for the PBIDE...

Post by Michael Vogel »

PureBasic is a great package and is nearly perfect. So I don't think, there is no need for big enhancements or changes, but there's still space for doing some small improvements here and there (for the next xmas present)...
...otherwise, someone should tell Google that PureBasic would be the best platform to get more great apps for android :wink:

Here's are some points to be discussed if useful or not...
* Shortcuts in the dialogs, e.g. Alt+A to activate the replace all button in the "Find" dialog
* Auto complete for labels, e.g. CatchImage(0,?abc...)
* Advanced auto complete for functions to remove brackets when not needed, e.g GadgetW|(0) should not get GadgetWidth(|(0)
* Allow to undo unwanted editor changes in strings, e.g. edit a.s="...from A to B, step by step" to get a.s="I..."+Str(i)+"...from A to B, step by step"
* Better search (and replace) to differ between pointer and multiplication, e.g. find "c" doesn't find anything in "a=b*c" (whole word only)
* Debug output may show it's originating source line when hovered or allows to jump to the position in the source text
* Constant viewer may get some more options, e.g. full text filter, hex or decimal output format or even a search for values
* User defined editor status line to show some specific infomration, e.g. procedure/macro name around the cursor position
* Maybe some optimization could be done to work with multiple versions of PB, e.g. single help file path
* Some (optimized) additional functions would be welcome, e.g. integer (abs, min, max etc.) and string functions
* Eventually some few libraries (printing, PDF etc.) could be supported by Fantaisie Software, I would pay (!) for such enhancements
* Eliminating some (small) quirks, e.g Save As... and then "Escape" activates the debug, not the editor window


And best wishes to all...

Code: Select all

; Define

	DataSection
		Data.s "BRShXhS=W2=ZBK=NBK=NB[CcB[CcB[CcBRcABRcA","`e0T#:$+)GtzT;r7_BqRhFo4n_fu{rUMyX;v`e0T","XM=LXM=LXKOAXKOAXKOAXFd#XFd#","X'=Lv&<ld>OYXMP'i=P6j}PrldWBn^^XjfcmW{d6"
		Data.s "BsSTXJS*VX>6BQ>*BQ>*BfD0BfD0BfD0B5c=B5c=","_:2E#\&))lt]SOqo^6q1f}nsm)fqyrU{w_=5_X23","WM>YWM>YWWP%WWP%WWP%W8dEW8dE","Wf=wtk=>cXOlX.P9hIPGj$P}kaW;mU^<i?csW.d:"
		Data.s "C:S@X-RsV$>nBW>bBW>bBrDYBrDYBrDYAtc:Atc:","]j46$#(&*6tARcqL]+pkeYnXkOfmwrVNug>O^L3m","VM?fVM?fVdPeVdPeVdPeV+dhV+dh","WK>GsV=kbsP$WjPKgUPYi&Q-j^W4lM]{gscyV=d?"
		Data.s "C\S-WjRaUJ?JB^??B^??C#E&C#E&C#E&AWc7AWc7","\@6'$E)}*[t%Qwq)[zpJd6n=itfjurV|so?i]?5M","UM@sUM@sUqQJUqQJUqQJTxe/Txe/","W0>sr@>=b2P8WKP]fbPjh(Q9i[W-kE]`fMd$ULdD"
		Data.s "D#RtWMRNTq@'Bd?wBd?wC/EOC/EOC/EOA;c4A;c4","Zp7t$g+z+%sdQ0paZop)bmm}h?ffsrWOqwA(\37,","TNB&TNB&U#R.U#R.U#R.SkeRSkeR","Vp?Cq+>jaMPKW-PoenP|g*QDhYW&j=]De&d*TZdI"
		Data.s "DDR`W/R<T<@^Bk@TBk@TC;EwC;EwC;Ew@yc1@yc1","YE9e%--w+KsGPDp>YdocaJmbfefcqrW}p$BB['8g","SNC3SNC3T0RnT0RnT0RnR^etR^et","VT?nop?<`hP^ViQ&d{Q3f-QPgVVzi5])cZd0SidN"
		Data.s "DfRMVmR*ScA;BqA1BqA1CGFECGFECGFE@]c.@]c.","Wv;V%O/t+ps+OXovXXoB`&mGe/f_orXPn,C\Yu:F","RND@RND@S<SSS<SSS<SSQPf<QPf<","V9@?n[?j`'PrVJQ8d,QDe/Q[fSVsh,\hb4d6RxdS"
		Data.s "E-R9VOQrS.ArBxAiBxAiCSFmCSFmCSFm@@c+@@c+","VK=G%q1q,:rjNmoSWMn|^^m+cUf[mrY#l4DvXi<&","QNENQNENRIT7RIT7RIT7PCf^PCf^","Uy@jmE@<_BQ*V+QJc9QVd1QgeQVlg$\M`hd<R,dX"
		Data.s "EOR%V2Q`RUBOC#BFC#BFC_G;C_G;C_G;@$c(@$c(","T{?9&83n,_rNN&o0VBn[]:lka{fXkrYQj<F6W]=`","POF[POF[QVTwQVTwQVTwO6g&O6g&","U^A:l0@i^]Q>UhQ\bEQhc3QrdNVeew\1_AdBQ:d]"
		Data.s "EpQmUoQNQ{C+C*B}C*B}CkGcCkGcCkGc?bc%?bc%","SQA*&Z5k-)r2M:nhU6n:[rlP`EfTirZ$hDGPVP?@","OOGhOOGhPcU\PcU\PcU\N(gHN(gH","UCAfjuA;]wQQUIQnaQQyb5Q}cKV^do[p]vdHPIdb"
		Data.s "F7QYURQ;QGCcC0CZC0CZCwH1CwH1CwH1?Fb}?Fb}","R&Bv&{7h-OqpLNnET+mtZNl5^kfQgrZRfLHjUD@z","NOHvNOHvOpV@OpV@OpV@LvgkLvgk","U'B6i`Ah]7QdU*R%`^R0a8R.bIVWcg[U\OdNOXdg"
		Data.s "FYQEU4Q)PmD?C7D7C7D7D(HYD(HYD(HY?)by?)by","PVDg'B9f-tqTKbn#R{mTY+ku]5fMer[%dTJ)T8BZ","MPJ(MPJ(N|W%N|W%N|W%Kih2Kih2","TgBahJB;\QQxTgR8_jRA`:R9aFVPb^[9[(dTNfdk"
		Data.s "F{Q2TrPrP9DwC=DoC=DoD4I'D4I'D4I'>hbv>hbv","O,FY'd;c.>q8Jvm[Qom3WbkZ[[fIcr[Sb\KCS+D9","LPK5LPK5N.WeN.WeN.WeJ[hUJ[hU","TLC2g5Bh[lR0THRJ^wRS_<RE`CVIaVZyY]dZMudp"
		Data.s "GAPyTTP_O_ESCDELCDELD@IOD@IOD@IO>Kbs>Kbs","M\HJ(+=`.cpwJ0m8PdlmV?k>Z&fFar\&`dL]QzEt","KPLCKPLCM;XIM;XIM;XIINhwINhw","T1C]ezC:[,RCT)R\^(Re^>RP_AVB`NZ]X6d`M)du"
		Data.s "GcPeT7PMO+F0CJF)CJF)DLIxDLIxDLIx>/bp>/bp","L1J;(L?]/.pZIDlpOYlLTvk#XKfB_r\T^lMwPnGS","JPMPJPMPLHY.LHY.LHY.HAi?HAi?","SpD-deCgZFRWSeRn]5Rv]AR\^>V;_FZBVjdfL8dz"
		Data.s "H*PRStP;NQFgCQFaCQFaDXJEDXJEDXJE=mbm=mbm","JbL,(mAZ/Sp>HXlMNMl+SSjcVqf?]r]'\tO6OaI3","IQN]IQN]KUYnKUYnKUYnG3iaG3ia","SUDYcOD9YaRjSGS%\AS-\CRg];V4^>Z&UDdlKFe$"
		Data.s "HLP>SWP)MxGDCWG>CWG>DdJnDdJnDdJn=Qbj=Qbj","I7My)4CW/xo}Gll*MBkeR/jHU<f;[s]UZ|PQNUJm","HQOkHQOkJbZSJbZSJbZSF&j)F&j)","S:E)b:DgX|S#S(S7[NS?[ERs\9V-]6YfSxdrJUe)"
		Data.s "HmP*S9OqMDG{C]GuC]GuDpK<DpK<DpK<=4bg=4bg","GgOj)VET0BoaG%kbL7kDPfj-Saf7Ys^(Y)QkMILL","GQPxGQPxIn[7In[7In[7DtjLDtjL","RzETa$E9X;S6RdSIZZSPZGS#[6V&\-YJRQdxIde."
		Data.s "I4OrRwO_LjHXCdHRCdHRD|KdD|KdD|Kd<sbd<sbd","F=Q[)xGQ0goEF9k?K+k#OCimR,f4Ws^VW1S*L<N,","FRR*FRR*H{[wH{[wH{[wCfjnCfjn","R_F%_jEfWVSIRFS[YfSbYIS.Z3Uz[%Y.Q+e#Hre3"
		Data.s "IVO^RYOML6I4CjI/CjI/E-L2E-L2E-L2<Vba<Vba","DmSL*>IN12o(EMjwI{j]MziRPQf0Us_)U9TDK0Of","ERS7ERS7H-\\H-\\H-\\BYk6BYk6","RCFP^TF8VpS]R'SmXsSsXLS:Y0UsYxXnO_e)H&e8"
		Data.s "IxOJR<O:K\IlCqIgCqIgE9LZE9LZE9LZ<:b^<:b^","CBU>*`KK1WngDbjTHpj<LWi6Nwf-Ss_WSAU^J$QF","DRTEDRTEG:]@G:]@G:]@ALkXALkX","R(F{]?FeV0SpQcT$X$T*WNSEX.UlXpXRN8e/G5e="
		Data.s "J>O7QyO(K(JHCwJDCwJDEEM(EEM(EEM(;xb[;xb[","AsW/+'MH1|nKCvj1GdivK3hvMBf)Qs`*QIVxHrS%","CRURCRURFG^%FG^%FG^%@>k{@>k{","QhGL\)G7UKT(QDT6W1T<VPSQW+UeWhX7Lme5FDeB"
		Data.s "J`O#Q\NqJNK%D#J|D#J|EQMPEQMPEQMP;\bW;\bW","@HX{+IOF2Fn/C/ijFYiVIkh[Kgf%Os`XOQX7GfT`","BSV_BSV_ES^eES^eES^e?1lB?1lB","QMGwZoGeTeT<Q&TIV=TMURS\V(U^V_WvKFe;EReF"
		Data.s "K'NjQ>N^IuK\D)KYD)KYE]MyE]MyE]My;?bT;?bT",">xZl+jQC2lmmBCiGENi5HGh@J2e}Msa+MYYQFZV?","ASWmASWmD`_ID`_ID`_I>$le>$le","Q1HGYYH7T%TOPbT[UJT_TUShU&UWUWW[IzeADaeK"
		Data.s "KINWP|NLI@L9D0L6D0L6EiNFEiNFEiNF;#bQ;#bQ","=N\^,1S@36mQAWi$DBhoG$h%HXeyKsaYKaZlEMWz","@SXz@SXzCm`.Cm`.Cm`.<qm,<qm,","PqHsXDHdS@TcPCTmTVTqSWSsT#UPTOW?HTeGCpeP"
		Data.s "KjNCP^N:HgLpD6LmD6LmEuNoEuNoEuNo:abN:abN","<#^O,SU=3[m5@kh\C7hNE[geF}evIsb,Ii\+DAYY","?TZ,?TZ,Bz`nBz`nBz`n;dmO;dmO","PVICW.I6RZTvP%U$SbU'RYT#R{UISGW#G-eMC#eU"
		Data.s "L1N/PAN'H2MMD=MJD=MJF&O<F&O<F&O<:EbK:EbK",":S`@,uW:4%lt@%h9B,h-D8gIEHerGsbZGq]EC5[9",">T[:>T[:B,aRB,aRB,aR:Wmq:Wmq","P;InUtIcQuU.OaU6RoU9Q[T/QyUBR?VcEaeSB2eZ"
		Data.s "LSMwP#MpGYN)DCN'DCN'F2OeF2OeF2Oe:(bH:(bH","9)b1-<Y74JlX?9gq@{ggBog.CmenEsc-Ey^_B(\s","=T\G=T\GA8b7A8b7A8b79In99In9","O{J?T^J6Q4UBOBUHQ{UJP]T:PvU;Q6VGD;eYAAe_"
		Data.s "LuMcOaM^G$NaDJN_DJN_F>P2F>P2F>P29gbE9gbE","7Yd#-][44pl;>MgN?pgFALfnB8ekCsc[D&_y@w^S","<T]T<T]T@Ebw@Ebw@Ebw8<n[8<n[","O_JjSIJcPOUUO#UZQ-U\O`TFOsU4P.V,Boe_@Ped"
		Data.s "M;MOOCMKFKO=DPO<DPO<FJP[FJP[FJP[9JbB9JbB","6.eo.$]15:kz=ag+>eg%@(fS@^egAsd.B.a8?k`2",";U^b;U^b?Rc[?Rc[?Rc[7/o#7/o#","ODK:R3K5OjUhN`UlP9UnNbTQNqU-O&UkAHee?^ei"
		Data.s "M]M<O&M9EqOuDWOtDWOtFVQ(FVQ(FVQ(9.b?9.b?","4_g`.F_.5_k^<ufc=Yf_>`f8?(ed?sd\@6bR>^am",":U_o:U_o>_d@>_d@>_d@5|oE5|oE","O)KfPyKbO)U|NAV#OFV$MdT]MnU&MyUP?}ek>men"
		Data.s "N$M(NcM'E=PQD]PQD]PQFbQQFbQQFbQQ8lb<8lb<","34iQ.ha+6)kB<.f@<Nf>=<ex=Ne`=se/>>cl=RcL","9U`|9U`|=le%=le%=le%4ooh4ooh","NiL6OcL4NDV4M}V5NRV6LfThLkTzLqU4>Veq=|es"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","1ekC//c)6Ok&;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex","NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","1ekC//c)6Ok&;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","1zk5/Oc16Xjw;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","24k'/oc96ajn;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","2Jjt05cB6jjd;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","2_jf0UcJ6sj[;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","2ujX0ucR6|jQ;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","3/jJ1;c[7*jH;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","3Dj<1[cc73j>;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","3Zj.1|ck7=j5;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","3oi{2Act7Fj,;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","4*im2ac|7Oi};Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","4?i_3'd)7Xit;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","4TiQ3Gd27aij;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","4jiC3gd:7jia;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","5$i54-dB7siW;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","5:i'4MdK7|iN;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","5Oht4ndS8+iE;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","5dhf53d[84i;;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","5zhX5Sdd8=i2;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","64hJ5tdl8Fi(;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","6Jh<69dt8Ohz;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","6_h.6Yd}8Xhp;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","6tg{6ze*8ahg;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","7/gm7?e28jh];Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","7Dg_7`e;8thT;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","7ZgQ8%eC8}hK;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","7ogC8EeK9+hA;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","8)g58feT94h8;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","8?g'9+e\9=h.;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","8Tft9Ked9Fh%;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","8jff9lem9Ogv;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","9$fX:1eu9Xgm;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","9:fJ:Rf#9bgd;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex","NFLpNFLpDdQ.DdQ.DdQ.FnQzFnQzFnQz8Pb98Pb9","9:fJ:Rf#9bgd;Cey;Cey;te];te];te]<Fe,<Fe,","8Vb/8Vb/<yee<yee<yee3bp03bp0","NNLbNNLbM_VHM_VHM_VHKiTtKiTtKiTt=0ex=0ex"
		Data.s "O-L@O-L@EJPVEJPVEJPVGSQGGSQGGSQG90a\90a\","9zem;4eG:Gg(<$eB<$eB<Te&<Te&<Te&=%dQ=%dQ","97aS97aS=Xe/=Xe/=Xe/4>oR4>oR","O5L2O5L2NCUrNCUrNCUrLMTCLMTCLMTC=jeB=jeB"
		Data.s "OoKkOoKkF0P#F0P#F0P#H9PpH9PpH9Pp9la%9la%",":`e5;qdl;-fG<`df<`df=4dK=4dK=4dK=`cv=`cv","9s`w9s`w>8dT>8dT>8dT4vnt4vnt","OwK]OwK]O'UBO'UBO'UBM2SmM2SmM2Sm>Jdg>Jdg"
		Data.s "PWK<PWK<FqOKFqOKFqOKHzP>HzP>HzP>:M`I:M`I",";FdY<Sd5;nef=Ad/=Ad/=pco=pco=pco>@c@>@c@",":T`@:T`@>scz>scz>scz5Rn;5Rn;","P_K.P_K.OgTmOgTmOgTmMrS=MrS=MrS=?*d2?*d2"
		Data.s "Q>JgQ>JgGWNsGWNsGWNsI`OgI`OgI`Og;._m;._m","<,c|=5cZ<Te+=}cT=}cT>Pc9>Pc9>Pc9>{be>{be",";5_d;5_d?ScD?ScD?ScD6/m]6/m]","QFJYQFJYPKT=PKT=PKT=NWRgNWRgNWRg?dcW?dcW"
		Data.s "R%J7R%J7H=N@H=N@H=N@JFO5JFO5JFO5;j_6;j_6","<mcD=sc#=:dJ>^bx>^bx?0b^?0b^?0b^?[b/?[b/",";q_-;q_-@2bi@2bi@2bi6gm%6gm%","R.J)R.J)Q/ShQ/ShQ/ShO<R6O<R6O<R6@Db}@Db}"
		Data.s "RhIcRhIcI$MhI$MhI$MhK,N^K,N^K,N^<K^Z<K^Z","=Rbh>UbH={ci??bA??bA?lb'?lb'?lb'@;aT@;aT","<R^Q<R^Q@mb4@mb4@mb47ClG7ClG","RpIURpIUQoS8QoS8QoS8O|QaO|QaO|QaA$bGA$bG"
		Data.s "SOI3SOI3IeM6IeM6IeM6KmN+KmN+KmN+=,^#=,^#",">8b0?7am>ac-?|ae?|ae@LaL@LaL@LaL@v`z@v`z","=3]u=3]uAMaYAMaYAMaY7{ki7{ki","SWI%SWI%RSRcRSRcRSRcP`Q0P`Q0P`Q0A_alA_al"
		Data.s "T7H^T7H^JKL^JKL^JKL^LSMTLSMTLSMT=h]G=h]G",">yaT?ta6?GbM@]a/@]a/A-`qA-`qA-`qAV`DAV`D","=o]>=o]>B-a#B-a#B-a#8Xk08Xk0","T?HPT?HPS7R3S7R3S7R3QEPZQEPZQEPZB>a7B>a7"
		Data.s "TyH/TyH/K1L+K1L+K1L+M8L}M8L}M8L}>I\k>I\k","?_`w@V`[@,alA>`SA>`SAh`:Ah`:Ah`:B6_iB6_i",">P\b>P\bBh`IBh`IBh`I94jR94jR","U&G|U&G|SwQ^SwQ^SwQ^R*P*R*P*R*P*By`\By`\"
		Data.s "U`GZU`GZKrKSKrKSKrKSMyLKMyLKMyLK?*\4?*\4","@E`?A9`$@ma0Az_wAz_wBH__BH__BH__Bq_3Bq_3","?1\+?1\+CG_nCG_nCG_n9liu9liu","UiGLUiGLT[Q.T[Q.T[Q.RjOTRjOTRjOTCY`'CY`'"
		Data.s "VHG*VHG*LYJ{LYJ{LYJ{N_KtN_KtN_Kt?f[X?f[X","A*_cAv_IAS`OB[_AB[_AC)_(C)_(C)_(CQ^XCQ^X","?m[O?m[OD'_8D'_8D'_8:Hi<:Hi<","VPFwVPFwU?PXU?PXU?PXSOO#SOO#SOO#D8_LD8_L"
		Data.s "W/FVW/FVM?JHM?JHM?JHOEKBOEKBOEKB@GZ|@GZ|","Ak_+BX^nB9_oC<^eC<^eCd^MCd^MCd^MD1]}D1]}","@NZs@NZsDb^^Db^^Db^^;%h^;%h^","W7FHW7FHV$P(V$P(V$P(T4NNT4NNT4NNDs^qDs^q"
		Data.s "WqF&WqF&N%IqN%IqN%IqP+JjP+JjP+JjA(ZEA(ZE","BQ^NC:^7Bz_3Cy^.Cy^.DD]rDD]rDD]rDl]HDl]H","A/Z<A/Z<EB^(EB^(EB^(;]h%;]h%","WzEsWzEsVcOSVcOSVcOSTsMxTsMxTsMxES^<ES^<"
		Data.s "XYEQXYEQNfI>NfI>NfI>PlJ8PlJ8PlJ8AdYiAdYi","C7]rCx]\C`^RDZ]RDZ]RE%];E%];E%];EL\mEL\m","AkY`AkY`E|]ME|]ME|]M<9gH<9gH","XaECXaECWGO#WGO#WGO#UXMGUXMGUXMGF3]aF3]a"
		Data.s "Y@D}Y@D}OLHfOLHfOLHfQRIaQRIaQRIaBEY2BEY2","Cx]:DZ]%DF]qE;\wE;\wE`\`E`\`E`\`F,\7F,\7","BLY)BLY)F\\sF\\sF\\s<qfj<qfj","YIDoYIDoX,NNX,NNX,NNV=LrV=LrV=LrFm],Fm],"
		Data.s "Z(DMZ(DMP3H3P3H3P3H3R8I/R8I/R8I/C&XVC&XV","D^\^E<\JE,]6Ew\@Ew\@FA\*FA\*FA\*Fg[\Fg[\","C-XMC-XMG<\=G<\=G<\==Nf1=Nf1","Z0D?Z0D?XkMyXkMyXkMyV}LAV}LAV}LAGM\QGM\Q"
		Data.s "ZjCxZjCxPtG[PtG[PtG[RxHXRxHXRxHXCbWzCbWz","EC\&Ey[oEl\UFX[dFX[dF|[NF|[NF|[NGG[&GG[&","CiWqCiWqGw[bGw[bGw[b>*eS>*eS","ZrCjZrCjYOMIYOMIYOMIWbKkWbKkWbKkH-[vH-[v"
		Data.s "[QCI[QCIQZG(QZG(QZG(S^H&S^H&S^H&DCWCDCWC","F)[IF[[8FR[tG9[.G9[.G\ZsG\ZsG\ZsH'ZKH'ZK","DJW:DJW:HW[-HW[-HW[->bdu>bdu","[ZC;[ZC;Z4LtZ4LtZ4LtXGK;XGK;XGK;Hg[AHg[A"
		Data.s "\9Bt\9BtR@FPR@FPR@FPTDGOTDGOTDGOE$VgE$Vg","FjZmG>Z]G8[8GuZRGuZRH=Z<H=Z<H=Z<HbYpHbYp","E+V^E+V^I6ZRI6ZRI6ZR?>d=?>d=","\ABf\ABfZsLDZsLDZsLDY,JeY,JeY,JeIGZfIGZf"
		Data.s "\{BD\{BDS&EyS&EyS&EyU*FwU*FwU*FwE`V0E`V0","GPZ5G{Z&GyZXHWYvHWYvHxYaHxYaHxYaIBY;IBY;","EgV'EgV'IqYwIqYwIqYw?vc_?vc_","])B6])B6[WKo[WKo[WKoYkJ4YkJ4YkJ4J'Z1J'Z1"
		Data.s "]bAp]bApSgEFSgEFSgEFUkFEUkFEUkFEFAUTFAUT","H6YXH]YKH_YwI8Y?I8Y?IXY+IXY+IXY+I}X`I}X`","FHUKFHUKJQYBJQYBJQYB@Sc&@Sc&","]kAb]kAb\<K?\<K?\<K?ZPI_ZPI_ZPI_JbYVJbYV"
		Data.s "^JA@^JA@TNDnTNDnTNDnVQEnVQEnVQEnF}TxF}Tx","HvX|I?XpIEY;ItXdItXdJ9XOJ9XOJ9XOJ]X*J]X*","G)ToG)ToK1XgK1XgK1XgA/bHA/bH","^RA2^RA2\{Ji\{Ji\{Ji[5I.[5I.[5I.KAX{KAX{"
		Data.s "_1@k_1@kU4D;U4D;U4D;W7E<W7E<W7E<G^TAG^TA","I\XDI}X9J+XZJUX-JUX-JtWtJtWtJtWtK=WOK=WO","GeT8GeT8KkX1KkX1KkX1AgakAgak","_:@]_:@]]_J9]_J9]_J9[uHX[uHX[uHXK|XFK|XF"
		Data.s "_t@<_t@<UuCcUuCcUuCcWxDeWxDeWxDeH?SeH?Se","JBWhJ_W^JlWzK6WQK6WQKUW>KUW>KUW>KxVtKxVt","HFS\HFS\LKWWLKWWLKWWBDa2BDa2","_|@._|@.^DId^DId^DId\ZH(\ZH(\ZH(L\WkL\Wk"
		Data.s "`[?g`[?gV[C0V[C0V[C0X]D3X]D3X]D3H{S.H{S.","K(W0KAW'KQW>KrVvKrVvL5VbL5VbL5VbLXV>LXV>","I'S%I'S%M+V|M+V|M+V|B{`TB{`T","`d?Y`d?Y_(I4_(I4_(I4]?GR]?GR]?GRM;W6M;W6"
		Data.s "aB?7aB?7WABYWABYWABYYCC[YCC[YCC[I\RRI\RR","KiVSL#VLL7V]LTV?LTV?LpV,LpV,LpV,M8UdM8Ud","IcRIIcRIMfVFMfVFMfVFCX_vCX_v","aK?)aK?)_gH__gH__gH_^#F|^#F|^#F|MvV[MvV["
		Data.s "b*>cb*>cX(B&X(B&X(B&Z)C)Z)C)Z)C)J=QvJ=Qv","LNUwL`UqLxU|M5UcM5UcMQUPMQUPMQUPMsU.MsU.","JDQmJDQmNFUlNFUlNFUlD4_=D4_=","b2>Ub2>U`LH/`LH/`LH/^cFL^cFL^cFLNVV%NVV%"
		Data.s "bl>3bl>3XiANXiANXiANZjBRZjBRZjBRJyQ?JyQ?","M4U?MCU:M^UAMqU,MqU,N1TuN1TuN1TuNSTSNSTS","K%Q6K%Q6O%U6O%U6O%U6Dl^`Dl^`","bu>%bu>%a0GZa0GZa0GZ_HEv_HEv_HEvO6UKO6UK"
		Data.s "cS=^cS=^YO@vYO@vYO@v[PA{[PA{[PA{KZPcKZPc","MuTbN%T_NDT`NRTQNRTQNlT?NlT?NlT?O3SxO3Sx","KaPZKaPZO`T[O`T[O`T[EI^'EI^'","c\=Pc\=PaoG*aoG*aoG*`-EE`-EE`-EEOpTpOpTp"
		Data.s "d;=/d;=/Z5@CZ5@CZ5@C\6AI\6AI\6AIL;P,L;P,","N[T+NbT(O*T$O3SuO3SuOMScOMScOMScOnSBOnSB","LBP#LBP#P@T&P@T&P@T&F%]IF%]I","dD<|dD<|bTFUbTFUbTFU`mDp`mDp`mDpPPT;PPT;"
		Data.s "d}<Zd}<ZZv?kZv?kZv?k\w@r\w@r\w@rLwOPLwOP","OASNODSMOkSCOoS>OoS>P-S-P-S-P-S-PNRgPNRg","M#OGM#OGP{SKP{SKP{SKF]\kF]\k","e+<Le+<Lc8F%c8F%c8F%aRD?aRD?aRD?Q0S`Q0S`"
		Data.s "ee<+ee<+[]?9[]?9[]?9]]@@]]@@]]@@MXNtMXNt","P'RrP'RrPQRcPQRcPQRcPiRRPiRRPiRRQ.R2Q.R2","M_NlM_NlQ[RqQ[RqQ[RqG:\3G:\3","en;xen;xcxEPcxEPcxEPb7Cjb7Cjb7CjQkS+QkS+","ee<+ee<+[]?9[]?9[]?9]]@@]]@@]]@@MXNtMXNt","P'RrP'RrPQRcPQRcPQRcPiRRPiRRPiRRQ.R2Q.R2","M_NlM_NlQ[RqQ[RqQ[RqG:\3G:\3","en;xen;xcxEPcxEPcxEPb7Cjb7Cjb7CjQkS+QkS+"
		Data.s "e?;|e?;|[h?{[h?{[h?{]8@*]8@*]8@*N?O$N?O$","PmR/PmR/PVRdPVRdPVRdQ_Q{Q_Q{Q_Q{PuQaPuQa","NENvNENvR)Q}R)Q}R)Q}Gh[{Gh[{","ew;uew;uc2Eic2Eic2EibbCvbbCvbbCvQURWQURW"
		Data.s "dt;sdt;s[s@c[s@c[s@c\n?o\n?o\n?oO'O/O'O/","QYQHQYQHP\ReP\ReP\ReRUQIRUQIRUQIPbQ5PbQ5","O,O&O,O&RRQ.RRQ.RRQ.H<[hH<[h","f%;rf%;rbHF'bHF'bHF'c3D'c3D'c3D'Q@R)Q@R)"
		Data.s "dN;jdN;j\#AK\#AK\#AK\I?Y\I?Y\I?YOjO:OjO:","REP`REP`PaRfPaRfPaRfSKPrSKPrSKPrPNPdPNPd","OmO1OmO1R{P:R{P:R{P:Hk[VHk[V","f.;of.;oa^F@a^F@a^F@c^D3c^D3c^D3Q*QVQ*QV"
		Data.s "d);`d);`\/B3\/B3\/B3\%?C\%?C\%?CPROFPROF","S1OyS1OyPgRgPgRgPgRgTAP@TAP@TAP@P;P8P;P8","PTO<PTO<SIOGSIOGSIOGI?[CI?[C","f8;lf8;l`tFY`tFY`tFYd/D@d/D@d/D@PpQ'PpQ'"
		Data.s "c^;Wc^;W\:Bv\:Bv\:Bv[[?-[[?-[[?-Q:OQQ:OQ","SwO6SwO6PmRhPmRhPmRhU7OiU7OiU7OiP'OgP'Og","Q:OGQ:OGSrNSSrNSSrNSIn[1In[1","fA;ifA;i`/Fr`/Fr`/Frd[DLd[DLd[DLPZPTPZPT"
		Data.s "c8;Nc8;N\EC]\EC]\EC][6>r[6>r[6>rQ|O\Q|O\","TcNOTcNOPrRiPrRiPrRiV-O7V-O7V-O7OoO;OoO;","Q|ORQ|ORT@M_T@M_T@M_JBZyJBZy","fJ;ffJ;f_EG0_EG0_EG0e+DXe+DXe+DXPEP&PEP&"
		Data.s "bm;Ebm;E\PDE\PDE\PDEZl>]Zl>]Zl>]RdOgRdOg","UOMgUOMgPxRjPxRjPxRjW#N`W#N`W#N`O[NjO[Nj","RbO]RbO]TiLlTiLlTiLlJqZgJqZg","fS;cfS;c^[GJ^[GJ^[GJeWDdeWDdeWDdP/ORP/OR"
		Data.s "]$9y]$9y^8N_^8N_^8N_U1;<U1;<U1;<]#QO]#QO","`ECS`ECSQlRxQlRxQlRxcMF}cMF}cMF}L[H$L[H$","\iQ@\iQ@[*@b[*@b[*@bR+WtR+Wt","gz;9gz;9S|K>S|K>S|K>l=FZl=FZl=FZLnHGLnHG"
		Data.s "ZS9AZS9A^{S(^{S(^{S(Rf9oRf9oRf9oaGR7aGR7","e'?0e'?0R2S#R2S#R2S#hlCbhlCbhlCbKAE-KAE-","a+R&a+R&]j;Q]j;Q]j;QU4V`U4V`","hW;'hW;'OILzOILzOILzo2GHo2GHo2GHKHEBKHEB"
		Data.s "Z-98Z-98_,Sk_,Sk_,SkRA9YRA9YRA9Yb/RCb/RC","em>Hem>HR8S$R8S$R8S$ibC0ibC0ibC0K.D\K.D\","amR1amR1^8:]^8:]^8:]UcVNUcVN","h`;$h`;$N_M8N_M8N_M8o^GUo^GUo^GUK3DoK3Do"
		Data.s "Yc9.Yc9._7TS_7TS_7TSQx9CQx9CQx9CbrRNbrRN","fY=afY=aR>S%R>S%R>S%jXBYjXBYjXBYJuD0JuD0","bSR<bSR<^a9j^a9j^a9jV7V;V7V;","hj:|hj:|MuMQMuMQMuMQp/Gap/Gap/GaJxD@JxD@"
		Data.s "Y=9%Y=9%_BU;_BU;_BU;QS9-QS9-QS9-cZRYcZRY","gE<ygE<yRCS&RCS&RCS&kNB'kNB'kNB'JbC_JbC_","c:RGc:RG_/8v_/8v_/8vVfV)VfV)","hs:yhs:yM0MjM0MjM0MjpZGmpZGmpZGmJcCmJcCm"
		Data.s "Xr8wXr8w_MV#_MV#_MV#Q.8rQ.8rQ.8rdBRddBRd","h1<7h1<7RIS'RIS'RIS'lDAPlDAPlDAPJNC3JNC3","c{RRc{RR_X8'_X8'_X8'W:UqW:Uq","h|:vh|:vLFN(LFN(LFN(q+Gyq+Gyq+GyJMC?JMC?"
		Data.s "XM8nXM8n_YVf_YVf_YVfPe8]Pe8]Pe8]e*Rpe*Rp","hx;Phx;PROS(ROS(ROS(m;@zm;@zm;@zJ;BcJ;Bc","dbR]dbR]`&74`&74`&74WiU_WiU_","i+:ti+:tK\NBK\NBK\NBqWH+qWH+qWH+J8BlJ8Bl","XM8nXM8n_YVf_YVf_YVfPe8]Pe8]Pe8]e*Rpe*Rp","hx;Phx;PROS(ROS(ROS(m;@zm;@zm;@zJ;BcJ;Bc","dbR]dbR]`&74`&74`&74WiU_WiU_","i+:ti+:tK\NBK\NBK\NBqWH+qWH+qWH+J8BlJ8Bl"
		Data.s "WI96WD8l^tUz^^VE^[VKOn9qOo9qOo9qczS:czS:","h%;igj;cQrS4R-SFR;SQl=AylIAjl\AQJWBfJ=Bd","d3R3d3R3_q7G_q7G_q7GWqU{WqU{","i7;$hp;&L,NSL=NjLKN|qEHvqWHhqhHZKPBxJyC<"
		Data.s "VE9ZV;8k^4U3]dV$]^V0Nw;+Nz;+Nz;+boS_boS_","g.<'f];wQ;SAQgSdR'S{k@BykWB[l#B)JtBjJ?Be","c`Qdc`Qd_b7[_b7[_b7[WyV=WyV=","iD;/hZ;4LWNeLzO8M:O\q4IfqWIJqzI.LiC)K_Ch"
		Data.s "UA9}U28j]OTG\jU_\aUpN%<@N*<@N*<@adT*adT*","f7<@eP<0P_SNQET(QnTIjCCxjeCKkDB[K6BnJABg","c2Q;c2Q;_S7n_S7n_S7nX&VZX&VZ","iQ;;hD;BM'NvM\OaN)P;p}JWqWJ,r1I]N'C6LED9"
		Data.s "T>:FT)8h\jS\[pU>[cUUM.=UM5=UM5=U`YTO`YTO","e@<ZdC<DP'SZQ$TFQ[TsiFDxitD<jfC3KSBqJDBh","b_Plb_Pl_D8'_D8'_D8'X.VwX.Vw","i^;Fh.;OMRO-N=P/NtPvplKGqWJjrCJ1O@CBM+De"
		Data.s "S::jR{8g\*RpZvTyZfU:L7>jL?>jL?>j_NTu_NTu","dI<sc6<XOKSgP]TeQGUBhHEwi'E,j,CeKpBuJFBj","b0PBb0PB_48:_48:_48:X6W9X6W9","ik;Rgs;]M}O>NzPWOcQUpZL7qWKLrTJ`PYCNMmE5"
		Data.s "R6;2Qr8f[ER)Y|TXYiTzK@@$KJ@$KJ@$^CU?^CU?","cQ=1b(<lNoStP<U(Q3UkgKFwh5ExiND=L2ByJHBk","a]Ota]Ot_%8N_%8N_%8NX>WVX>WV","ix;]g];kNMOPO\Q%PRR5pIM(qWL.rfK5QrC[NSEa"
		Data.s "Q3;VPi8dZ`Q=Y'T7XkT`JIA9JUA9JUA9]8Ud]8Ud","bZ=J`v=%N8T&OuUGPzV:fNGvgDFhhoDpLOB}JJBm","a/OJa/OJ^q8a^q8a^q8aXFWsXFWs","j);hgG;xNxOaP=QNQARop8MsqWLlrxKdS0CgO9F2"
		Data.s "P/;zO`8cY{PRX-SrWnTEIRBNI`BNI`BN\.V/\.V/","ac=d_i=9M[T2OTUePgVdeQHvfRGYh6EGLlC%JMBn","`\N|`\N|^b8u^b8u^b8uXNX5XNX5","j6;tg2<+OHOsPzQwR1SOp&NcqXMNs/L8TICtOzF^"
		Data.s "O+<BNW8bY;OfW2SQVqT*H[CcHkCcHkCc[#VT[#VT","`l=}^\=LM$T?O3V)PSW2dSIue`HIgWEzM.C)JOBo","`.NR`.NR^S9.^S9.^S9.XVXRXVXR","jC<$fw<9OsP)Q\RDR{T/opOTqXN0s@LgUbD%P`G/"
		Data.s "N(<fMN8`XVNzV8S1UsSjGdDxGuDxGuDxYsVzYsVz","_u>;]O=`LHTLNlVGP?W\cVJudoI:fyFQMKC-JQBq","_ZN(_ZN(^C9A^C9A^C9AX^XoX^Xo","jP<0fa<FPCP;R=RmSjTio^PDqXNnsRM;V{D1QGGZ"
		Data.s "M$=/LE8_WqN4U>RkTvSOFmF2G%F2G%F2XhWDXhWD","^}>T\A=tKkTXNKVfP+X*bYKtc}J*f?G)MhC0JSBr","_,MZ_,MZ^49U^49U^49UXgY1XgY1","j]<;fK<TPnPLRzS;TYUIoMQ4qXOPsdMkX9D>R-H+"
		Data.s "K{=RK<8^W1MHTDRJSyS4EvGGF0GGF0GGW]WiW]Wi","^+>n[4>-K4TeN)W)OsXTa\Ltc0JveaG\N*C4JVBt","^YM0^YM0^%9h^%9h^%9hXoYNXoYN","jj<Ff5<bQ>P^S\SdUIV(o<R%qXP2svN?YRDJRnHW"
		Data.s "Jx=vJ38\VLL\SJR*R{RuE$H\E;H\E;H\VRX4VRX4","]4?,Z'>AJXTrMcWHO_Y#`^Msb?Kfe'H3NGC8JXBu","^+La^+La]q9|]q9|]q9|XwYkXwYk","jv<Rez<oQiPoT=T1V8Vco*RpqXPpt,NnZkDVSTI("
		Data.s "It>?I*8[UgKpRPQdR#RZD-IqDEIqDEIqUGXYUGXY","\=?EXu>UI|U$MAWfOKYL_aNsaMLWdIHfNdC<JZBw","]WL8]WL8]a:4]a:4]a:4Y$Z-Y$Z-","k(<]ed<}R9Q&TzTZW'WBntS`qXQRt>OB\)DcT;IS"
		Data.s "Hp>bG|8ZU'K*QVQDQ&R?C6K+CPK+CPK+T<Y$T<Y$","[F?^Wh>iIDU0L{X*O7Yv^dOr`[MGcjI=O&C?J\Bx","])Ki])Ki]R:H]R:H]R:HY,ZJY,ZJ","k5<ieN=0RdQ7U\U(WqW}nbTQqXR4tPOq]BDoT|J$"
		Data.s "Gm?+Ft8YTBJ>P\Q#P)R$B@L@B[L@B[L@S2YIS2YI","ZO?xV[>}HhU=LZXHO$ZE]gPr_jN8c1IpOCCCJ_Bz","\VK@\VK@]C:\]C:\]C:\Y4ZgY4Zg","kB<te9=>S4QIV>UQXaX]nQUAqYRrtbPF^[D|UbJP"
		Data.s "Fi?OEk8WS]IROaP]O+QdAIMTAfMTAfMTR'YnR'Yn","YW@6UM?5H1UJL8XfNkZn\iQr^xO)bRJHO`CGJaB{","\(Jq\(Jq]4:o]4:o]4:oY<[)Y<[)","kO=$e#=KS_Q[VzUyYPY<n@V1qYSTtsPu_sE-VHJ|"
		Data.s "Ee?rDb8VRxHgNgP=N.QI@RNi@qNi@qNiPwZ9PwZ9","X`@OT@?IGTUVKrY*NW[=[lRq^+OtatJzO}CJJcB|","[UJG[UJG]%;(]%;(]%;(YD[FYD[F","k\=0dh=YT/QlW\VGZ?Ywn.V}qYT6u*QIa1E9W.KM"
		Data.s "Da@;CY8UR8G{MmOwM1Q.?[P#?{P#?{P#OlZ^OlZ^","Wi@hS3?]FxUcKPYHNC[fZoSq]9Pea:KRP?CNJeC#","[&Iy[&Iy\p;;\p;;\p;;YL[cYL[c","ki=;dR=gTZR#X>Vp[.ZVmxWmqYTsu<QxbJEFWpKx"
		Data.s "C^@_BP8SQSG4LsOWL3Po>dQ8?+Q8?+Q8Na[)Na[)","VrA'R&?qFAUpK/YgN0\5YrTp\HQU`\L)P\CRJhC$","ZSIOZSIO\a;O\a;O\a;OYT\%YT\%","ku=Gd<=tU*R4XzW>[y[6mfX]qYUVuNRLccERXVLI"
		Data.s "BZA'AG8RPnFHKyO6K6PT=mRM>6RM>6RMMV[NMV[N","U{A@Pt@*EeU}JhZ*Mw\_XtUp[VRF_}L\PyCVJjC&","Z%I%Z%I%\R;b\R;b\R;bY\\BY\\B","l'=Rd&>'UURFY\Wf\h[pmUYNqYV8u_R{d|E^Y<Lu"
		Data.s "AVAK@>8QP.E]K$NpJ9P9<vSb=ASb=ASbLK[sLK[s","U(AYOf@>E-V.JGZIMc]-WwVoZdS6_DM4Q;CYJlC'","YRHWYRHW\C;v\C;v\C;vYe\_Ye\_","l4=]ck>5V%RWZ>X4]W\PmDZ>qYVuuqSPf:EkY}MF"
		Data.s "@SAo?58OOIDqJ*NPI;Oy<$Tw<KTw<KTwK@\>K@\>","T1ArNY@RDQV;J%ZgMO]WVzWoYsT'^eMfQXC]JnC)","Y#H-Y#H-\3<.\3<.\3<.Ym\|Ym\|","lA=icU>BVPRiZzX]^F]/m2[.qYWXv(T$gSEwZdMq"
		Data.s "?OB7>,8NNdD*I0N/H>O^;-V1;VV1;VV1J6\cJ6\c","S:B1ML@fCuVHI_[+M<^&U}XnY&Tr^,N>QuCaJqC*","XPG_XPG_\$<B\$<B\$<BYu]>Yu]>","lN=tc@>PV{Rz[\Y+_6]jl|[zqZX:v:TShlF)[JNB"
		Data.s ">KB[=#8MN$C?H5MjGAOC:6WF:aWF:aWFI+].I+].","RCBJL?@yC=VTI>[IM(^OU$YnX4Uc]MNpR7CdJsC+","W}G5W}G5[p<V[p<V[p<VY}][Y}][","l[>%c*>^WKS1\>YS`%^Jlj\jqZXwvKU'j*F5\0Nn"
		Data.s "=HC$;u8KM?BSG;MIFCO)9?X[9lX[9lX[G{]SG{]S","QLBcK2A2BaVaHw[hLo^yT'ZmWCVS\oOHRTChJuC-","WOFfWOFf[a<i[a<i[a<iZ*]xZ*]x","lg>0bo>kWvSB\zY|`o_)lY]ZqZYZv]UVkCFA\qO?"
		Data.s "<DCG:l8JLZAgFAM(EFNi8HYp8wYp8wYpFp]xFp]x","PTB|J$AFB*VnHV\+L[_GS*[mVQWD\5O{RqClJwC.","V|F=V|F=[R<}[R<}[R<}Z2^:Z2^:","lt>;bY>yXFST]\ZJa^_dlH^KqZZ<voV+l\FN]WOk"
		Data.s ";@Ck9c8IKu@{EGLcDINN7Q[*8&[*8&[*Ee^CEe^C","O]C;HrAZANV{H4\JLH_qR-\lU_X4[WPRS3CpJzC0","VMEnVMEn[B=5[B=5[B=5Z:^WZ:^W","m&>GbC?,XqSe^>ZsbN`Cl6_;qZZyw&VZmuFZ^>P;"
		Data.s ":=D48Z8GK5@5DMLBCKN36Z\?71\?71\?DZ^hDZ^h","NfCTGeAn@qW,Gn\hL4`@Q/]lTnY%ZxQ*SPCsJ|C1","UzEDUzED[3=I[3=I[3=IZB^tZB^t","m3>Rb-?9YASw^z[@c=a#l%`+qZ[\w7W.o3Ff_$Pg"
		Data.s "99DW7Q8FJP?ICSK}BNMs5c]T6<]T6<]TCO_3CO_3","MoCmFXB'@:W9GL],K{`iP2^kS|YpZ?Q\SmCwK#C3","ULDvULDv[$=\[$=\[$=\ZJ_6ZJ_6","m@>^ar?GYlT-_\[id,a]kn`wqZ\>wIW]pLFs_eQ8"
		Data.s "85D{6H8EIk>]BYK\AQMX4l^i5G^i5G^iBD_XBD_X","LxD+EKB;?^WFG+]JKga8O5_kS/ZaY`R4T/C{K%C4","TyDLTyDLZp=pZp=pZp=pZR_SZR_S","mM>ia\?UZ<T?`>\7dvb=k]agqZ\{w[X1qeG$`KQd"
		Data.s "72ED5@8DI+=rA_K<@TM>3v`#4R`#4R`#A:`#A:`#","L&DED>BO?'WSFe]iKTabN8`kR>[RY'RgTLD$K(C6","TKD#TKD#Za>)Za>)Za>)Z[_pZ[_p","mZ>uaG?cZhTQ`{\`efbxkLbXq[]^wmXas#G1a2R5"
	EndDataSection

	#M=146 : #N=#M<<2+3

	CompilerIf #PB_Compiler_Unicode
		ImportC ""
			ToAscii.i(*str_b, wchar$, nBytesToWr.i) As "_wcstombs"
		EndImport
	CompilerEndIf

	Global Dim s.s(#N)
	For i=0 To #N
		Read.s s(i)
		CompilerIf #PB_Compiler_Unicode
			ToAscii(@s(i),s(i),Len(s(i)))
		CompilerEndIf
	Next i

; EndDefine

Macro Code(n)

	(((n>>8)&$FF-35)+91*(n&$FF-35))

EndMacro
Procedure do(n)

	Protected *m,z
	Protected p1,p2,p3,p4,p5,p6

	*m=@s(n)

	p1=Code(PeekW(*m))
	p2=Code(PeekW(*m+2))
	MovePathCursor(p1,p2)

	For z=1 To (Len(s(n))-4)/12
		p1=Code(PeekW(*m+4))
		p2=Code(PeekW(*m+6))
		p3=Code(PeekW(*m+8))
		p4=Code(PeekW(*m+10))
		p5=Code(PeekW(*m+12))
		p6=Code(PeekW(*m+14))
		AddPathCurve(p1,p2,p3,p4,p5,p6)
		*m+12
	Next z

	VectorSourceColor($FF0000A0)
	StrokePath(99,#PB_Path_RoundEnd|#PB_Path_RoundCorner)

EndProcedure

OpenWindow(0,0,0,800,720,"Birdwatch",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
CanvasGadget(0,0,0,800,720)

Repeat
	k=i%(#M<<2)
	If k>(#M<<1) : k=(#M<<2)-k : EndIf
	k-(#M>>1)
	If k<0 : k=0 : ElseIf k>#M : k=#M : EndIf

	StartVectorDrawing(CanvasVectorOutput(0))
	VectorSourceColor(RGBA(255,255,255,255))
	FillVectorOutput()
	ResetPath()
	ScaleCoordinates(0.10,0.10)
	TranslateCoordinates(-500,-500)

	For j=0 To 3
		Do(k<<2+j)
	Next j

	StopVectorDrawing()

	i+1
Until WindowEvent()=#PB_Event_CloseWindow

User avatar
Michael Vogel
Addict
Addict
Posts: 2666
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: Some more ideas for the PBIDE...

Post by Michael Vogel »

Meantime I tried to improve some things I mentioned in the posting above, like creting shortcuts for the dialogs of PureBasic...

...does anyone know a smarter approach?

Code: Select all

Procedure ListWindows(hwnd,Param)

	Protected s.s

	s=Space(128)
	GetWindowText_(hwnd,s,128)

	If s="Whole Words only"
		If SendMessage_(hwnd,#BM_GETCHECK,0,0)
			SendMessage_(hwnd,#BM_SETCHECK,#BST_UNCHECKED,#Null)
		Else
			SendMessage_(hwnd,#BM_SETCHECK,#BST_CHECKED,#Null)
		EndIf
	EndIf

	ProcedureReturn #True

EndProcedure

WinID=OpenWindow(0,0,0,16,16,"PB+",#PB_Window_BorderLess)
SetWindowColor(0,$6DF9B4)
StickyWindow(0,1)

RegisterHotKey_(WinID,666,#MOD_WIN|#MOD_CONTROL,#VK_W)

Repeat
	Select WaitWindowEvent()
	Case #PB_Event_CloseWindow
		UnregisterHotKey_(WinID,666)
		End

	Case #WM_HOTKEY
		If EventwParam()=666
			EnumChildWindows_(FindWindow_(#Null,"Find/Replace"),@ListWindows(),0)
		EndIf
	EndSelect
ForEver

User avatar
Lunasole
Addict
Addict
Posts: 1091
Joined: Mon Oct 26, 2015 2:55 am
Location: UA
Contact:

Re: Some more ideas for the PBIDE...

Post by Lunasole »

Interesting crazy code in first post ^^
Michael Vogel wrote:Meantime I tried to improve some things I mentioned in the posting above, like creting shortcuts for the dialogs of PureBasic...

...does anyone know a smarter approach?
I'd suggest you to use AutoIt for this (http://www.purebasic.fr/english/viewtop ... 14&t=66067)
It allows to get checkbox state/switch it and so on, without need to rewrite this all from scratch.
As well as allows select menu items and much more, many UI actions may be done
"W̷i̷s̷h̷i̷n̷g o̷n a s̷t̷a̷r"
User avatar
Michael Vogel
Addict
Addict
Posts: 2666
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

Re: Some more ideas for the PBIDE...

Post by Michael Vogel »

The following code works when started from the IDE, but the compiled exe doesn't popup the orange status window...

Code: Select all

Global ActionMode
Global ActionName.s
Enumeration
	#ModeCheckbox
	#ModeClick
EndEnumeration

Procedure Action(hwnd,param)

	Protected s.s
	Protected c.s

	s=Space(128)
	GetWindowText_(hwnd,s,128)

	If s=ActionName

		If IsWindowEnabled_(hwnd)
			Select ActionMode
			Case #ModeClick
				SendMessage_(hwnd,#BM_CLICK,1,0)
			Case #ModeCheckbox
				SendMessage_(hwnd,#BM_SETCHECK,Bool(SendMessage_(hwnd,#BM_GETCHECK,#Null,#Null)=0),#Null)
			EndSelect
		EndIf

	EndIf

	ProcedureReturn #True

EndProcedure
Procedure.s ProcessNameFromHwnd(hwnd)

	Protected ProcessID
	Protected hProcess
	Protected hModule
	Protected ProcessName.s=Space(#MAX_PATH)
	Protected EnumProcessModules
	Protected GetModuleFileNameEx

	If  OpenLibrary(0,"psapi.dll")
		EnumProcessModules=GetFunction(0,"EnumProcessModules")
		GetModuleFileNameEx=GetFunction(0,"GetModuleFileNameExA")

		GetWindowThreadProcessId_(hwnd,@ProcessID)
		hProcess=OpenProcess_(#PROCESS_QUERY_INFORMATION|#PROCESS_VM_READ,0,ProcessID)

		CallFunctionFast(EnumProcessModules,hProcess,@hModule,1,0)
		CallFunctionFast(GetModuleFileNameEx,hProcess,hModule,@ProcessName,#MAX_PATH)

		CloseHandle_(hProcess)
		CloseLibrary(0)
	EndIf

	ProcedureReturn ProcessName

EndProcedure
Procedure InfoWindow()

	Static x,y,z
	Protected h
	Protected s.s
	Protected r.rect

	h=GetForegroundWindow_()
	If h
		s=ProcessNameFromHwnd(h)
		If FindString(s,"Purebasic.")
			s=Space(255)
			GetWindowText_(h,@s,255)
			If Left(s,10)="PureBasic "
				GetWindowRect_(h,@r)
				x=r\right
				y=r\top
				ResizeWindow(0,x-140,y+1,#PB_Ignore,#PB_Ignore)
				h=0
			EndIf
		EndIf
	Else
		h=1
	EndIf

	HideWindow(0,h,#PB_Window_NoActivate)

EndProcedure
Procedure Click(s.s,t.s,mode)

	Protected w

	w=FindWindow_(#Null,s)
	If w
		ActionName=t
		ActionMode=mode
		EnumChildWindows_(w,@Action(),0)
	EndIf

EndProcedure

Procedure Main()

	Protected WinID
	Protected w

	WinID=OpenWindow(0,0,0,32,20,"(PB)",#PB_Window_BorderLess|#PB_Window_Invisible)
	TextGadget(0,1,1,30,18,"×",#PB_Text_Center|#SS_NOTIFY)
	SetGadgetColor(0,#PB_Gadget_BackColor,$0D7BFF)
	SetGadgetColor(0,#PB_Gadget_FrontColor,$FFFFFF)
	SetWindowColor(0,$0060C0)
	StickyWindow(0,1)
	AddWindowTimer(0,0,10)
	
	GadgetToolTip(0,"Purebasic Find Helper - Click here to quit...")
	
	#MonkeyKey=#MOD_CONTROL|#MOD_SHIFT

	RegisterHotKey_(WinID,6001,#MonkeyKey,#VK_W)
	RegisterHotKey_(WinID,6002,#MonkeyKey,#VK_C)
	RegisterHotKey_(WinID,6003,#MonkeyKey,#VK_M)
	RegisterHotKey_(WinID,6004,#MonkeyKey,#VK_S)
	RegisterHotKey_(WinID,6005,#MonkeyKey,#VK_N)
	RegisterHotKey_(WinID,6006,#MonkeyKey,#VK_R)
	RegisterHotKey_(WinID,6007,#MonkeyKey,#VK_A)

	Repeat

		Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			For w=6001 To 6007
				UnregisterHotKey_(WinID,w)
			Next w
			End

		Case #PB_Event_Gadget
			PostEvent(#PB_Event_CloseWindow)

		Case #WM_HOTKEY
			Select EventwParam()
			Case 6001
				Click("Find/Replace","Whole Words only",#ModeCheckbox)
			Case 6002
				Click("Find/Replace","Case Sensitive",#ModeCheckbox)
			Case 6003
				Click("Find/Replace","Don't search in Comments",#ModeCheckbox)
			Case 6004
				Click("Find/Replace","Don't search in Strings",#ModeCheckbox)
			Case 6005
				Click("Find/Replace","Find Next",1)
			Case 6006
				Click("Find/Replace","Replace",1)
			Case 6007
				Click("Find/Replace","Replace All",1)
			EndSelect
			
		Case #PB_Event_Timer
			InfoWindow()

		EndSelect

	ForEver

EndProcedure

Main()
Post Reply