MFU2  Shunting-yard4C:\Users\Karol B\Downloads\Shunting-yard new rpn.mfa4(@0YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYATNFq1Lucida ConsoleAPMSASUMAGMI """)))UUUMMMBBB999|PP3f333f3333f3ffffff3f̙3ff333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffff3ffff̙fff3fffff3fff333f3f3ff3ff33f̙̙3̙ff̙̙̙3f̙3f333f3333f3ffffff3f̙3f3f3f333f3333f3ffffff3f̙3f3ffffffffff!___wwwcO 00xlg_;)m@tj:YPFa)2H*KIQ$G%(Mq*7VZ-(DuSBh aKgw!*x޻}v ">~}^¡.\܍[nDm80>.y_ ].1SFa[R>1> V\5o& @[9qe ZuưzUΙ.o}@lg;mlf<pݷnfz|V`l2Ab`8*2.Fߟ!wJdB!˙oZg :! r+xF˸ LJU -I_fiûl4 HυYn[BP31Xok;w NY& @-Z̷A>0?7 |>3858Y:΂kRX+jԗ^8?d:pdѷl\˚E[g7H0;a%\̧zfbD+ufܜ۬]`| TÝcH?n`ïe3}@]qo<*=uwLvF·IٓzXב/=Ɠ]~n3n ہ1z泿2i.]$3";#=7n̺4Ǔޗ6ţ1 D!{AkOek4uY?>=S󹽌eo"@, |(w]EP*\W(<}YezOEA<7n~V{bX4F)T ҋJ]=.?{U>}< O2d118W.T`Q3ҥ%H'D7(ݖLj>!¹@dm\?ݔZ$L|HLOq mqTuh02 4]`$ J-+GiY#l iӝd Z K3ɻ߸b+18@&#Ϗ6*? iy T:W7=f~[8ouY~ y|&WE`; M`+).%L Z4@r&a?l&Qr怹#"YbE6YR#F Q`Qt]O HN uӖ9FyXJ>PZ: rdm1ǶC_Y&*d46KY(Y)|"YbCow(odfJGguv.&ۨHv诲%"Y؄za767}r*kxY>bDUjK0Ϡzi/{M7]3Yd^mSw@[Aս%ʣ5JAcfO%|FOЎ:f06X$1mf f WY39M03) 7rMG΂3`|ΞHdͣx {of\ 6t{+.4vZ*rW+wEXEFW<x@C";C;F/:=74Lޥg`U]БLj*0XUѳZX@##`idO컇F>[S% N}됮VɁ)`}[4uv4#҉i]M7)T* Kygٕw˹8m;{ ec ڦ.Tܠ1Tp_c^يp?T.ĞF5R?S.#I !ij}j S݅w)W>}]~M +4uU o~NEjڪڏUj߯G?=wFu=OBsSѹ`i@o+*'|ZsX5鳇kv 7y[Up(k =R T8~U_~ZTPꛆ\ jW&bd'/  xUoHg݊ݲB6VvA !7Bf9,kGIB!"B}9"`8[ٺbMVQ {%vsn^|D{ PP;W]E2:|~~u/Q,=!o/,%ke) ⣌ڡl */v̚T" *-Jf7~S\%#^u[)jVӈ*fզveY!nb[Ӗ̗:=zUBBEAPǤ1iC[ݸ[;=0倴JK\ ]Ӯa&pX/u?,z;dʑ@}dqĆcw9\8Swh7'?,ucB*"EG _sWgTb h}$O(uMR##a厺6tpA:2>FL[؏ryP#"/Xz2cu= jǹϪ?w~GjSG-$3L?.>%S*^ט<ř¿nϓ$e aԸ|/qʳຒ}-J7$jL37t.+ 4ŝkvq$a*!b@"ٳg@<\[.&MH}Kt!䅾5,z`ݫȧ dN\έăa:DqѾygE,c.%hc[-n)btc V A8B&Siɠg< :C.]}Mʩt݊Ŷ}lH^7~.quߙg>ر*.e?F n`e17|pTQTTQU_ @[xe?hQ_' N>AQp)N./(d8HH`;ep G!Wǁ9b=! w߻pN_~{?HAY@ 4sF;mMe5seQ+ F-1:7`o[x]}5pi5hhQG[>޸,_foygvmE;Q+ÂC ruDmQ;s㺥Swy V?j ]Trw yQFm*8sFk{:T0 Gkg8LmTN 2{]}C'~Fl0jK^Q+~7UFf Nf\T< ~y 8MysQ&N1ްl4Jc<"DHKX@4 {aqNY83ߏiC_Q(ħ͓qZ+&ΜVp8nPi00x͗j@t60T2e ja~5+Bp'HjFƍ$2q[Xsf4#ɗ7?>]ܛ<\(gDӏǩ.Hs8-d|kJաe2u;`sɔMlt[;:H6;G߾TM)tݼXi:СzU\,&RYzunyH>:4uoBelk}?o ɷ;t'm?VcH<=#ZY'KОP]Y_L_q]w=?xzbVKV4Q,nud[ͺ=\)hl؂-}=y՟DUuʇ ђo_]jV?f|t`M^kk:WYe:gYWΗy+ANsOj\|JtO=K|Hc8|v L?=*¤s*mt}G"!܅MV&׏Q?Ne:2ߡȏ*ɯt2)u*Pv*n=6U<l',tbޖU*80aYʂ o 'k.~cz'7fإJlaAѕJ!ŽWܡ! Ԓ cA3:6y6?}xsKuhv lrkKY]E>UK x1o@op`tt;n#t OFLssMc~Faq&dH8I =@'D=NVswO\#O91LP\^kmdמH^ta axڞ$Z3/;\kXqzZI4;5+ <&Ҟ='U<f4۰ϗm`pE$s+y-F<wΥq#Da3>Km2g ZA ʪK-)Km`[fyIuv=W{dNGU+lAKLcBH{<=yв^u9Msh jԧ78?B,F7 Ͻ*-|9ɸ7VrxUr?YM,{x;0D(T|;* N`C%`ðDJ47#~U`{HG -5:H^T=iu3$iea 2sᩡ&O׸pKg>9' uᠣCx=6h܋=]*7Yo 1fv 00xA0PQ{vi OD?5)+8 )@Rtdoe8 qPO%^azVzԪOw@^#Sw |Bt_xCBWtt3qyCoH]/O(rnt:|~/df]X$]D)tAOzeހz%i ]L}>-aƢvmRPn. x C; vԎ=T*$+v_tRu2Jʆ<Vxi@h&(}ݯ&zq w紪!M^Һ~10ލE+<vw#g_L{^' @Гˠ8; }vTKxƁAcax!CST"NN 1!m |":О"*5?+~9lϺ3|&H/-Q79Ԯ?t m KLg!xݝ tT՝gI2I&d8 0(A b :6Fi0xtF3DHkhc,ht1YHV]dFEMZtlCj|]9|$sZǛhTG<-^Cj hYn_:[!T@6w-Ul RE)`Qwdwߪ%.mSշ[ fUK({o58J da Ζ9փ8 qG'ehbDs #[rz oZ0VԘJ!J H:{><{VCjm +wBfo$I)m!JNPz 1~d ]6M{۬wQs]1RJrc@LXXj3ɻղI뛐:(elcRui"ZcNѱ%>lڋN17t H?%څW<_Z=}mݾy'rĎwf>x9A j @ wρ|^ }.0iAbv̌7ߊbD  0&&xvL~" ^Gs c2LӲCJuWo |$lDsbpo*wm_ObDOigY3nZQ!ٛTyn0 )s Yhce2p7F]wu9(B;A>'@_ ΉQշTaFyu ny~&fH/N1uM Fd4'+I[|[ 탟wtBÜAc"c]5!D r4I tl^{e09}#(l%SPK& %/}!HnX@/դ/* V͵ Ael=?C~ @^ixѬhƧO@2IdID!= iBA?@!i;siMD!}یiDX  W7Pky:|y|~1yz8ea ˆT ^D#߿lh|U @3<a-g脶xGSƠ?@2G }*Q~BYgEP6`嫃'޶!+z.z?hf`M D x^jֽ7;}y\{ȯW k7F7ê? ?ݟz=n H!g0l5>{O4ü ?i{{"R}c(BT? 'H&|߃G!}>Jӽl5V~>믚;0:p"Ư9<qY@m #ZJժ@jŵ2xH?֭0! l >My%;e K^}kCm$o=l& ` 3C 0#6}[j{OW~zf,Xboqok$O>V`엁}g@{@ *-qT<}?_>>w1NX2[|gjIû}䳪HqByhi,7F_6\H#"/$`KǸdGw :߃dևޯu bؽHWפv9^D4ZVO'8z11?lVp3* ' Ɯ' Z'aw9@ݻY&h`Gxsͪzc|燨T+zo [>>`bxќ.Gd2}P'ߤRW+ -;x>ns@32+ӧ=QSd 5u . .E hy }jDatLpzzW*P *g&\yz~]w9 mFn}PTVVU~كj_`RMaVC#otd ==E߄> |gۀeFN>_v7 */ĸj߃* z H!,(#ߌ A-1 np.wٕ`+>^6.X`9(f#xQrc} U g~W^6t-\?$Ԫg~=`=8}Ϙ.~iFFIFnd5ՠ5; A.AEmg}R%{ߡ-ۯ;;`b?P H@hU/﵊o0; #W;'& ~ru/͂WT gvKyr)Nt+째f@4cc@w{+mk^ (Bapw7o ɩg$KѩqVX/]{g(;qÔ Cy切kzRGl \ S ;0=\T*;057V@>MQ~Y@-B̗#qg ^ E p8(RRӌ/ gGQ7S/Qhx^ Poo=Yff?WGsd /x䫀@غ9=&r9B?V?Ǐ3ʆ>x#@iž}j>JJPP+vPrz0[? -S ,lְgQTϘ\vrrvJV` %oP/hWuIݻyrӻG[^Og5Nεd/??*iF}Ph'قֿ>3~8~>Њ A{k\f7);O=,A}\GN;{_a Q7 m293Mo+DWP6gy_RFv'ONF.[z(kd [#b~۶Ho{zVD>\]sF.gwv?Q"wEjǤodž? M~r,o)_S~pT pHEؑBolPFFo3[v`;݇!;EN2T|7Gﰖ}Jow@EvZq(@ݏw!%ԡW|_S#N甜z_S'#d=!]9 W9g)S%g찏_~@bgۇ< j3v}:\6B&߬AՖ!nHWd?̀hW|ZkSz>2 ";X~|~?&, FX%sk}dߌ F,r]dS;;v>J=GK.86-`S|Tm֖S>5oukڧBN:PbcfJS6h5[<V)k]P,,Pd~:;yZV9/}*{5k?g(F#ۦO̧f!O-<7#ۚ-(9_4̯yGĻvJ+Bq3r(#cth*"3U|sP;'~ހR}p2FG_zNr3c .Xd |*OnY/UNH %N h-e}?] >?K5l#XADpqvl{z|/̧_"qZxKS\q-Ik@.iŷ -G+v'oѝ;i~%Fg>6UV[",m{o|_7@'"2U|5 CpkԒ=Ө? x6,iŏ|~w!P2{,e+`$ T~# |&|yŏ຿W";PV73+lmǾߌs`UdT)'TӲ|VUC4eu?cgO?n'Q~x`ߊzP -TW,ķŽMBzÐ[~{85ԧ$} ? Mi)>zjFVWUk̾(;=-zrJQ_v٤+]`c~/MWp~fE'6rTB4n#q98)e+TbPʾ6S a}8޽}ե&glzMdR, 8p^f"7~[ BHQʟE6IO| ,)qhpwWzmJV*z}M|=3HJ,__nx~Kn+22ݻmRt65ʥZmzS"b䬃 z7fFLgJ-3R@4~/A~[Q^FRrS og3k R,եKypmA^jjyu%i7&Lhv>~r\9Gh﫽j^!j̓Sbɜ1鳥c}{IVv{?:/6z)x+rmU+s3ߖ8-Na7?;k2H_0;(TKaw9ԙ'Gn[1+-%_m.85%' F)E>AtA.9c~bԏt]2wFr~Λ ]usFRRғ)3oH=M7.1i39}m~VVq zkM,M˹)e&xMʏmH留 Sɛ3:vRs5U.huy/Yǝdms{"jSWX%O=D18;Kre q4~Rj ۸uߵ;&5'{ 0I9U0//.?u+.ʐЦ̐6Aڒ `eOA]~q.soiZuAyIj\#w~cQndEKkc{< X{EG,՟{i_%gjO_Z2`տ7v?X}ܠabv?|gG|tկD}ybSCf1qw7-ч {_D]~~bS8$VG9 z;mc`ꦿFQᆰ]0w_<~ߺ={Wso~ޛ̏L ϣ~'խ]9?7Tޫ<@qڕ5W6*giiyeD)馹wtM #y33'6)Ye^ʺ_MIı?bYٓz7AFnk/'czjsgN&fλdL^G/vܽhH;0 ,Zy-uPo?˽[/^|Iv^LapyM5 퇆*ꉝ7_|IL ;oo;A7+ ǚ7՗3(AJZf]]mS_pO55֮+ f4M'@F9gko\M[zdGzps]wTxΈ M/Yv7֔VmÆ26l}ڲ5(.\`)۠OI;ҳ3/-Y^Q20V,f_b2feB9} i)LyܸhfΌt=~{Rs׻(MhbEeG^{O@y \Pu@`o]Unq 4]b P\ aѯ=؟[޳tC2-n^ղH7 Ұw>AOq7"%hEs;֞[tCv}?o4eAZݭBT?K x9.ʠ }}ݲdzE7kWVV_uC#N1j7}y;bH)!PYI^ۣC */koBGڃ_;wرֶōKBچ0fwP'쁬dǗ~~U"BeG;v[~ny;W4yD$s@ޟT}|!E^ʜ1q;&OGrswh%)O>;WoX[>.{[yȽK_{9y%R'C@N2ǦrFtf{a78'E++E"sN,Ouv,y8dKj`GO|9$Ȓ}ZQzCC{O] ?ֹc/!׫>}<^,,g )K%'AS/@Y}.vfТ;/4PC{HJ}=gIJ1m=s";('c4}=K7XN:N`4S4Wp ÇydgMy'agQcṣ f?a jZA :Jda@}vԂAx d'vUoOj}LⱽC*zT洎bZ>_3t%f䌦_{Z>`_cmӣWpvoeE#]NakO(k| _X ltzFGWz KU<=ζN'o<S 哼|僜QJX/Z;)GN7 9{|cϣ^; z){޿&m$E>_zR"i')Y'Y]gmtk" ߣ-ϱc Q^x=j.`- 1.H2Iu'4jxi_ډև, b߽|W$=;mlEMX:@<>[uv]e-Ff|\x(Lsས/>]KZP*v,K_;)FR?&}S?8Cb'gq o D&4'dWz+ -_r kҜwNrśl~`=C[=]}DԸgҚ@<7HNuJAU/`:a&}!w|;O髳7}?#ysDutzأU>عc'oo*fʃ/I>gsfQW}쵫"/`:iu0#;*0G^MCbi|~RfJ+E|u>䅶=8P<]oJ߶Kϡès>ٶ϶z6yuI.}=^_ZM"["ʇ :{=9_g[gUa_-d|R'+<_3^YZM^9ZgpD*b/l+Oy5>y=볼>r4ujtj٩rRu027X+=b*!߇90+Z^_9c5j\NA5/R,/p'/TkՀ쥞pC!A}T^A?-hgP럭: zH?"D}P Vi ..b__eW䯏yJQ_{w kjW'KlwԽŗ^^/h$KTO?3 K~Kj+&܈l YoT~5QϽK<}K%>f:`ސR7'yDz|ml- 5 oDK}"?烞l4k="}n/h'h'ؓ1qćcX$lDŽ r LL~wo_=_,d%ˋ/(@1qS@|R @]4,_pv)z~ˇ>ޓY=⎩㳞O~- _1}yf`z޳d^PAr~Pu*:}9yc;"ξNh<'HP)g[>M{7Pu@CdZ;Qpް MjЗʫOh=Mуuխ~T:5ǀRT*j@ÚoN6>}+Jl_ioOQGz|h:ny o|AkY0Nɢk'y_ [|Ҁrsvpy=-E+-_l+?*#?$]/rrg[Q|?M_J :N DPlc-:}o<ҋ0.zR(߫[>ŝ@iWbO[ _J t ;6rtU_ֳNO9yT(W{XaC !uzܟYϢD4@z!R;B^NzH'0ì81] _d"}`8IB& 2iIL* I_ʞJQ 8o{ W%n^9/q>|{y}: cp$JUʕKf.EW4 .@IX;De)}J!ZMAh P߽,{ӤV `O9jBD/4rpO_ "?\ëd֯_|ׇVH;?ty!+ /3NX 9. G)`j@ի<}O70󃫽xg[_ꋵ|U vɷKkW{[?h@y#Za{@ e pQ ?P\AXi;}I5 r/翎׃9բGV P~=YQߺx/tOR1Tk^iwsA3xf~'$UIb^_y&J?یΊrWg"}ג1,uoy28VW5?|CMg g@ZEge?R1|g)߷ =}': Th01X>$^u `A;"ҟaX?~۾ g j?{H׽xOeW?M7 YkBOU>bGX狀|=yۇy>` xWqC;Q~G%(;83K{{ :DT?Au"9;ϊr)2}kAL߾W=Uz?GuDP|W=lwx.?ߣMvu|B[>v@*n0b׷R!ݟ1}XIYR=K | Wq<|G.>',bO&wq״\!_OHS|i?gi$֪y:>\큞|,H|_taxo]^e^Ww?t_=)zc׳tD[?M#Sǃd b`h@[D_w'zKKdF#r <X3 ,zDx:7ѳ?1;`9#~|'U_) #?CY_1{$2~#?YU-T|9 V~r]u{Z-;+&=Ъ/N2`0se"z3 iPR:u`eW~GU}ՕՒn`(?.ٷQc o!Ӡ.\Y vCx'8-L+ * <5Gyg*pU]aW%\pF }wrgY1J>y1gb7ݞpwPIpy}>wu'3s.c;?De?+۰<@G /_gCVs@fFܟB|;E>Z>^YKϐO|>:G~ x7U]vW}zTɀuvӒQ>zSJ41]d_U Pw@ e_99@(fzw6agI+~0G}CpT|~(,3Ź߉[kmx֏/9@wO9?rެG|,aIýV|/m{P>"׃k2;5-cL__qT"o?F/@Y>!%& {p'P4+vy >KA?ndi[f/}ė6=9 @Y o?5S~r/`k~Y(_N<Ěu ([o' Y_QqVZT]vGyN%Ba/}-kV;ϺW{ 4@ID^}5{BN&G=?q/}kd~k^-H55vy'_$v4LZA=>Kc?8 luU~߅xt g~xW{Adk|׀N;N$Z@뀚,M_wx:`1 :?tfb_Zv{o}?>-33buȻ@iKԵ` {ڬw5{3wws޿oy 9* S!;B}keE9aqp\|&/g/_d#??m;BUmr~!eΏvy[<""+m>QQbHKV=ZPd%z}U">x^pί~+u ,~@} , Л+= #_k~Ŀ[\*6Չ{4.CB|@W!a5@סg61bGm1{ul_ ww?A'rl)7/+[ĕٳa>N׀#ĿA_$V$|~ y?$%zͿ=c#?; 'RgiN.=mJ~#".VfXh| x_7ũXkzQI5X?Ǒ[\9@T;J'? vը":ߵ[?<3$O?Gc߸[/<) IEK}??w{ Tjɟ?ubb?~(j"@ +POY N-=̱DBt 옧i-"OxU~h+f4_=w,>}OI(w FbzHH/Z~ߋb?ts.;_īzN҇8rO,7"Z\-ɎY[V;+`b]bX(tעCBe/>0jr7xKwii`yJ 8у]Lʖ>97S] Q)Y?"Ԁ1wgBF%"I@K5E}]@-|@=`-~H#@ۧ1O5@G~)RKQԧcPvĴmUB?Fb! ~gEmp!? @Ԫ-_{oL5ٟ'OV {DEO #N_@SJ}?8#fٟce .r7wWBD~kR/")ATG43@ 8;,M a ÛA3<w"8(m쥖Eȿˮٿ?{ψ~/{}+y2ti}1._eiH}&{_E_ k*hFe}&(ua>M,O}SeW8 ʟwzuW-ཀྵ\5P%s/! Q"-ofrz [;_Ϸ#+?l |WZ#ppCrBQ gN0?8$1|w]?.|B~W~O9u4=c8{2A9z儏YKw |"?z:| k_tm}w; y#Z_?wDv'w cu*Di/{/?m===/ yTK/݂ 2'/v{ƈ}&hi/&ej^POVOV,oAKrnS.hwȏXP_4Asf>rv1F=-J[]᯾ E pJKFJ1{W_=Dڿ"w #?bW|q7B~LFf/&Zz]{c-]Cτs~tJ>pJGvY:>>Z~W\7)UO׀[1<1g^cS8WTE Z~q. '|W=@ȳ |/gΘR-Ы bWfO})}%Ki#ϣQ䯱(Z1i@7 }DӖO'}' yNqI7>u껁>ƀ֏Aͳu@h'YVkѯ$w g}ʿV`83 gzĥ:@kKKy= { =B` !ugZYqF|';uHM]7{5ϟ\ラh<@o7j"~ Py=&.m-MRm2˷waP$~k}^񏿯1ƜőwC_5AJ;e'"و_={,`ெ#)z:D٫}H? xx0zě>XїgZ1ĭ`~a-o&!Z2{%}'3 < 1>W F eDGD#k[X:~y|P[,x=_wWvׇb7/ +K 5Au<T,kWWv-y Հcn.-/Kh>h{6y=IWYj <Ҁv+D/}1@}0n2SXYh-_%ω{d5kZgW[Ϣ;WjY|B/2Wm@͐^U` \1RK`;"0 c?<@x@tG`Xչa' :̟1d_a(x}ǷXYŐ{=M{=$̿Uʁ:@K#Ο1@ 9!lr{E-͊鷟oȿF<`?}Y'MJ.~]~ߩIyxܫ)%o5/ztx-dQLNV]u҇]P"R_ C_sCG{ \AFDXwjKNA/ТQ'XvHYHx0WD֞.'ϲz̞MyWʞG>E'|_Fn7=,Xqg[{2׍z ܢB?!_o 3Rȯyh7SW&ɞ_wmxOԫ0<$D>/[#0dƟLP?m6wNbWP(󧅤o$xW] Z\}D{}(8+C՟"|-e XX 2|Fws9AS y̞o=@1|]/rp%{8 2>WWa^zޯ3@-pSb< 8'\ג]⯚4%`K-|yCߥG&lJ>y-zKRG߲L4w<`ąP FCJ'jЛM!c]&{,fK^n.R7lֶN)+u{}?K￀#0CoCdZ6LfGJk6se {^a[u.TM)"w;W8= yAWxW?M8  h :E~*/u~bZJ:{S1?T)tp5I2%@[tRWNWb".>C>1~ `{ZH/mE?))*RKEm9y9{Б+~YZSkhk;X|t_I5 F]y=яϛT?b6_K=þD~:~JP⥪i,;r-`_QaHP  zֳRf_]<=W~kTN}+t4,gZ4#?K?=3 9)uMf{~~W,*5@ xgɌ|R*JzBn g%}>X]>錿eFMoM66bmmwcW~U\}pTWFu(i" ݺg ;P9\V4@Dרj'3k{MkiAt%Zo=\S kT#SIG(k^MOT_qW $? DZ'3~Wiŧ;n|^1{*oq >9Tpdﮓ@ItB+-X>TO|[U5@)}Z+r=Ч 1<q:poP1vz@Y 5AF$U(NO;&L $P]j@Jz DwK!OYo_7\@ROdxjZ5B7*<8! ʏ3phFֵR'n\ E;M'*zU1i*Dg KgV^َiB ;J wq_YwUYAƝYۥZփ@uAwJ<"a`__^+832~[M^E-끲&tCSK[?}Z9pϼ##c[-Դ^rR(Wu?*`T+ݟg٥kh酞-y^NaԩA{S (G~:wԑ'Y=hoܽs&ʃ^r3~{--끲&hO֥SCwա=?~@<@*F~:q,-`>]9;o!9q=zz0PTRd|%=ЯZ?; Wr7E1SS%=У zE/n܊BX.#Wx%(l@Of"[U 7{ZsE~u`xf/}-=Ч oIn3q#cO_ L-fW;0&*B}~' b:o"zo߆5cwUVx͟*b3cA2Ɗ~e0é`E~2~5AM3%}^{2Kd^28L~WFb@xI#?gÍpW~'34`U#(Fea,n_D W[r s+AI7>?MTZrb`j AE:}TW|`^g$(7U.@~W2 8`ƻ#91ҝT`BHDSi],2)#? zbb- y yy!V|ֻo^4 ߺFfxA>/ 2 Y%@곏"ryM3?s-#DN+{B!"cf_HZn/8;Lj_A}!5??b3~)}Gv,kd-4 G~+PV?sfRn0SG4@Gp/盛{Y [B%Ljӻ|K KW 80'L$< -[Pأ0\fS#\$8f:)~|xGE_Ea,ؚ@Ξ8GQ@_U(*~hWJ驃gx^?5ndC"Ёcf P@ol(뻨oשe5ۺE|O \#-UW@M*e@we5\|ѝ-G ׇW o}{*_ui (|@-gnq=|do6j( p:v g{=X=?kjb,t(yN q}l|M^\:4@TΪ pOo91QX#8/aϪh̜vϚ<ёdlBتn9O'e\8wq啥&:f''qjh ̞t>5Ƨy1)I "sŸDNKU1}Ĝ̌x% ŏ{rZk8ƽEyelVv`#pÅhk\|RJ5o:y8ρ9S\zh=g)c+_yfOjy͏KLJsOo&Ϗ/VMua|\LThS3<(klBRJVA=?~\_9VΞfr0GL9|f_ZLOper@vĤ!dw.HONF4`kKJ˺OWYgMsNb-.~NW}=e0gڽisSM;t糦?jfaԄxAB1}sS2>,WTʕr$N}scɲYSSd *^Ȩ8{j&x}EuIA~ pUQ/Z5?=oq}lI9|>7\͞UgRcfLqIEPf)?gI㷛=c8u缒 Yh25.>%kzp\ЦgNǁ`r'e^&GgNo2\j'Ξ6g0~ҙƥ%EN8ά(?>5hYO561eJ>hδ1\*tq&ȨfQ}_pD[qhkbJFxz>r҅ S8h R~Oͪ ͻKgMn1& @:~s5w,5yBjb!&\_|JCfL1\\1i֙=/ԝs'e'@']m|ݺxryo(?9xRy>Wf1{F>w.[8!7oPC_57vH=Q񩓌c ع|n>&(0ƗO-]407o:.KHY0qҹYɱQ>.D3{?Zrݜ)~H-mְtxwM 'e} b5^;'x~i٩v~_1|}w㝕WͰY}x5!ހyWNa2g??i(.h[_ƌΆg92buA`˚a4lբ=H.6lxW.YwQ.2Ա~ټ ԕsoKfC8׬XXVnԞ?(g3 ˜IV$d2{w͂y\)c6 ?pMWMU/a0]Q煮;9+5&J= 5||ELsOdD9?8~ť9v[ ~`mZ^Bϥ~Q f?jPo+ 3bT>1)?7Q3eDkbq5f?hQ1odJeKa/_SYϾ ;n=%;٦![ʦ::Rf?d_9p\*PQV~`Mָ͌b(~3~Ġ?RWU6i=&;^0:j_qu'X! K-gD,y+wV~㬂DlZ*0#V~exQ,ѱ'~`kWx4:Q8ُ#/X5jTTlˆ~pl}}lI#pC:~\`Q`˫ ۫n_0uRJ|42c.cCX25I?6G ѕKʮN]e9 V%?1)oh/>zO+,įM4B4aѵǧp򏵵`!gry bα;n)<616t{F'ogYiavR89 ?cbZ@cLrُU[sõ&g$Zf8(G첿|t=*WA@eCpqmMyqvZ\?f*/[ʜ8~oH|o;il_THe{!56B:>[pe~j\ Rr\]x3#>tDKkm0<|We%mau[Ǐic`WDF'@!~3s"'V@!<-w/̌ix l~hEU4::z hM)/?z|wʚYp1)#=zhyATk+uv7~`uEcc_jo=rkE8~V[ُ]?m\zlȘsQhC*gF["c//8No^w 33G~@߶l{qIXҽf?NߞX ǧPǓ ̝iMH5+M+/`4Z^>en׹`޺~a3%%8=ϬrFAj5~)upKv/uQIQZb_55~džŗwaf?N"I癇VT̀O ?\; hwXPd7qB>>t|ʥr^mK Y2'ٳ<׿#cƾdz1 c.Ћ;7=? 8]iK0B<>[+Cf?Po;?ON<(g[|JV5r4O߯o1.)c`_3._s&ڣׄ~P_$G8s!~CmLkG9OL!"/c. /_,1 Y~ЍޝqI80 ~Ѝvn]rF^J LO1o}qttl|'=r5d:gO0B5: ο[0B5zv=-וfآc6B4N:9zy pIz~ЌҸp3n[ɗP|eU+\3{l 9S~Pn]G.@._f?[(y+KDζo6 Sp ,mOW]19;n Y_ccGJȹ O _lm4/=9Z 9W"}k}/@w_cn016gk)c?SIoA|y[-DHϯs,5A4~'4,GXd |t͚tfV|ic|eOۃ__V863xvb _|vw+hU< ֖=e~ZDZמۢC[5|Oj߿ROkoZwu/g:fc<>XsҜL{ 701ʑt:Zuu3H=IL8뻞~ʧNNM{$WDcKכsuU%K=. jK˞`\x͗v?1qHus,7ݻ:6WɄd~> %V6hyi[[㲪YYxy/#c3'O]x'7d\|7=qwk4:})@[Jn[OF_xycn,<{5Z(K-=g7`|'Ι"}Q0k/F]qb"̟NL)ǂ.ս[XyKӞ>kp\t^c.fRv:WG̟ꠉ3.F￰+˧fgj%R WY2{}ϳ޷|n~vzbl֘ F/W?_pvqvFhS/ 2ʖ>p5i}=74/[4pRzo4RL*;\Lon_Z>kҘtGZ $rNpx o^ۼt 鉶(KʏT`tTLbw|f4şe 3c~z~r&f3T^o^4hq} 4KyQwwlZ$.\ҥBp;3 | $^ne_{aUuF}yߘ=UƸdKge%55{ϣ׻oqnqq`?w{:2{};V,Z0gJ1q_<`J5>nq{`w>feœǧe܂+]7Jā~e_'l|ڤ4{1q@6n҅5[dq:\ryMSRl1:^%*ƞ66jقEw7ٓG_y7E J&OHI2,^@dlbX.WͿ3y[ _bkf9gc"w} Y9%Z]S?Χ{ ͜HOVcS2OQv x;nZ|w͢ 卍c0j%jL**[A9smO<⮛+NO+`N?@jVsU-^g__iEWM/JMKv8'7}N-w޷ſvkwn;-/7=947>| Dڒ38#׽|S?辣U6Rlڭ}+ 'e8lMu H^~n6wsfKIq)!~ $f_dي-w Sqzko?ҼbYs &q~/| 3fd-15sl~ጫ\7,Uk6>vp/l5\(_Zç562֑?uUo <Ϙ#4k:i믻jfqclJ- Uߤ 19 ZPcO|;7? *6)D%S3O/{m^ղqO7<^ϫ/ݳc{u]˪︹jܒgL{71Ĕ g-\y<{Of }W}ag3qmKC7.(]8yBVfJb|5D'B,v?ez5޸d]+On9 ?޻;omVk{ْ^S6}j>{{7wVE\0v0ΑWT ֖9.'Y8dnUnuٝ Zf ckeT]u킹gNLKNĀ1FA K 9O0f|ΤE3Jʮ]Eŷܶ}}72{Oe,\xye%3 &dIzÛ=d蘸ĤlI¢3gϝW-^,h ϝ]2}jsDGNVFZb9ԀJice;r&L~ҹW]=o޼k$jnٜ+8&8ǏHONJX#=F!%`ONIK3.'w`JaaT(*,R8!ǧd{G>&N~p<"3..'$SRRҙ#--55M E`NS(70:222 \zd^B9s =2rh ߂58́[,~^7\|({ ([ x!O!^C.O"~H~Qd OsΡg tD}0Dw?6;r~TڤAl7>O'%X߽޹w'D'Q~LR3~uPs>0$oRzA.@. e[% x x1H@!Cp),uPTp1tI]8tqbA8v`tutp!kz^MZ?}{wK+>rP3̨46zO,`<Yf;=BiEƷS=zz23AO-o~zC  ·J`fCamV>wF g'?%x_XbEl? q<L!X+H;m}ObG:l~|v{}}SL&e^AijX_+ѹ2H!_1?z]̟u4Jat7JkL"`|=`/ Xy gD[ ˼\E ^E4]nX~{c+"Q Ԝ7QZ3d*j@yd8bizQVf4uZ3j s^d9 x A|d"cni5wTį?selkcZ3n-Zָ*0 0i CW 3Ce^yZe_+??wiY!w͟?i{޿ҿR^&A xc`AX"aÄ&nxӁd{Av\Cn }0 H+ zҏV܏-Έu? af?i?.I׏{O~y:$_b!_~RV~SZP^Q^RR@7 x E@.ÇPJ-D^9SW# 6l:+uثxN盗3}.|:M)ul{}Gy~zlK}ZLkYq,>wbßU  xՕ  ,A*%S .%KV;L" dRdžUݗZm]pь=8kCG|$<%drI1޿V.Wg̾xs^ ݎGΧ2_ :>T/{Yz뇾u?V0U;RΫ~wV'`E_',x q xՕ  ,A*%S .%KV;.(Kp.{"v6m*sqo^wVHg|Gc4*Xٰq|h%3g _3g^+_0^mw޼7|?J<*6z? x!O!O6g X֯@{CՏj ~3AG AX?[HOA~TCxQR`F(L響2C;l \/C\(Oq  @ x!O!O6g X֯@{CՏl utDۏ~t?|qa7>O~dW' (ѿ{)0^Dc~G~o~ҡ~F}A|ozA.@.0#v# x!O!O6g X֯@{Cx ?fq.PSޮe'_ib-֮?DM  xc`@  l$nu0ج@4p4|7(@혮xrQ̦p C4 S/1`RGs.K 2r>cEj(4b>֠h>C|O/d4-V`$)|e>wZOhݾC[ڵ   xc`@  l$nu0ج@4p4|7(@혮xrQ̦p C4 S/1`RGsVB ˋ1e) ac>Xr0ߡe>b‡H+nZOZ>CvsXM Shunting-yardH<&(%' &(%' &(%' &(%' &H&File&New F2Pass&word&Pause Ctrl+PPla&yers Ctrl+Y&Quit Alt+F4&OptionsPlay &samples Ctrl+SPlay &musics Ctrl+M&Hide the menu F8&Full Screen Alt+Enter&Help&Contents F1&About...  P Y S Mpqsw Error message  kclist.mfxList%Y kcedit.mfxEdit Box%Y AssArray.mfxAssArray Object%Y AsciiChar.mfxASCII Character Object%YStringTokenizer.mfxString tokenizer%YtMain-{׻kϻ[ǻwwwcccSSSCCC333oSKC;{3k+Ww#G_7K'3 kWCw;k3_+S#C7g+K 3ssccSSGG;;33s++_##K7#ۧϏ{gWG7{+osccW WGK;;//ssKK##kS;#ۻÓoG#gc[WO;/s_K ;CϳÛscSwGg7W+K#ߧϏwwggSWCG3;w'/g#[K ; +ӃkgSK73# o_SC7'{cK7'o _##'#'#'#'##skkSS??ۧןϓLJsgߏ[ӃSsKgCW;K3?+{3#o+_OC3 '{k_OC3' w?? Console  Movement #0List kclist.mfx%Y$$x1Lucida Console(((  Console 2  Movement #0List kclist.mfx%Y$$1Lucida Console(((!Edit Box   Movement #0Edit Box kcedit.mfx%Y  @)1Lucida Console Shunting yard token output   Movement #0List kclist.mfx%Y$$("Tahoma "Shunting yard token operator stack   Movement #0List kclist.mfx%Y$$(PTahoma  Operator name   Movement #0List kclist.mfx%Ytt(PTahomaLogical ORLogical ANDBitwise ORBitwise XORBitwise ANDEqualDifferentLowerGreaterLower or equalGreater or equalAddSubtractMultiplyDivideModulusUnary minus Scanner variables4Scanned character index!Scanned lookahead character index Lexeme start Source stringScanned characterScanned lookahead characterToken categoryLexemeisUMinus!-isAlpha5ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_ isDigitDot 0123456789.isDigit 0123456789 isDelimeter &|<>=+/*%^! Movement #122 Shunting yard variables4 Read token Read lexemeStack peek tokenStack peek lexemeEvaluated tokenEvaluated lexeme Movement #122 Operator symbol   Movement #0List kclist.mfx%Yrr(PTahoma||&&|^&=<><><=>=+-*/%!- Function symbol   Movement #0List kclist.mfx%Y(PTahomasqrtrootpowexplogsincostanasinacosatanatan2minmaxfloorceilroundintfracgdclcmfibfacabsisprimeprime  Error console  Movement #0List kclist.mfx%Y$$P1Lucida Console(((Error variables4 Error codeMessage Movement #1 Throw error)KLBEDAEH1STVE 3%"Segoe UIRegular %"Segoe UIRegularl8(-Throw errorN,-"Abort parsing  "%"Segoe UIRegular8(-Throw error"$  &Error listI5  %"Segoe UIRegular 8(-Throw error.  2 N1 =6-,Undetermined error"#   %"Segoe UIRegular  8(-Throw error.  2 L1 =4-*Invalid character"#   %"Segoe UIRegular   8(-Throw error.  2 J1 =2-(Invalid operator"#   %"Segoe UIRegular  8(-Throw error.  2 n1 =V-LMisplaced separator or parentheses"#  %"Segoe UIRegular 8(-Throw error.  2 Z1 =B-8Missing open parenthesis"#  %"Segoe UIRegular 8(-Throw error.  2 \1 =D-:Missing close parenthesis"#  %"Segoe UI Regular& 8(-Throw error.  2 D1 =,-"Missing quote"#  %"Segoe UI Regular 8(-Throw error.  2 p1 =X-NNot enough values in the expression"#  !%"Segoe UI Regular   8(-Throw error.  2 J1 =2-(Unknown variable"#  %"Segoe UI RegularR 8(-Throw error$  D1 =,-"Unknown error  %"Segoe UI Regular8(-Throw error 8J8 V-8Error found on position   ,  "  ", 2 SMER)This loop is started once if an error is found in user's input string. Prior to staring the loop we must determine the error code in the "Error code" variable, which is then interpreted in this behaviour and given a proper user-friendly error message. This message can be then displayed anywhere.+Abort parsing when an error is encountered.This flag is required to display the "Unknown error" message if the error code is not interpreted in this group. If any message is assigned, the flag turns on, which prevents the "Unknown error" from showing.JError code hasn't been determined in the main code before starting a loop.-Something unknown is found, wrong characters.!Operator isn't found in the list.BEither the separator was misplaced or parentheses were mismatched.!There are mismatched parentheses.!There are mismatched parentheses. Missing quote. !There are mismatched parentheses. ;Unknown variable is tried to be taken from the environment. )Message is not interpreted in this group. &Display the error and reset it's code.SJBOError variablesSpriteOIC0 Error console0TSLOIC2GMIC# !;!P[!P[P[!;!;!;!;!;!;!;!;!;!!!P[!!!;ﻥ!;!;!;!;!;!;!!P[P[!P[!!!!Scanner variablesSpriteOIC2GMIC9n ``````````4ޅ4``4ނ4ށށ ށށށށ ށށށށށށނށށށރ ށށށނށށށށށށށށށށ ރށށށ ރށށށށށށށށށ ށށށށ ށށށ4ނ4``4ދ4``````````SPRGError liste8e7wVīV!Nf<Ǧl>Nc8b<Qf>ܽwvvvuu!DNE22 Operator precedence   Movement #0List kclist.mfx%Y(PTahoma10203040506060707070708080909090100 Operator associavity   Movement #0List kclist.mfx%Y(PTahomaleftleftleftleftleftleftleftleftleftleftleftleftleftleftleftleftright Operator arguments   Movement #0List kclist.mfx%Y(PTahoma2,002,002,002,002,002,00,112,00,112,002,002,002,002,00,112,002,002,002,001,0 Function arguments   Movement #0List kclist.mfx%Y(PTahoma12212111111122111112211111$ASCII Character Object  Movement #0ASCII Character Object AsciiChar.mfx%Y Scanner token output  Movement #0List kclist.mfx%Y$$(PTahoma Scanner lexeme output  Movement #0List kclist.mfx%Y$$(PTahoma Shunting yard lexeme output   Movement #0List kclist.mfx%Y$$("Tahoma #Shunting yard lexeme operator stack   Movement #0List kclist.mfx%Y$$(PTahomaResult  Movement #0Text RPN evaluator token container   Movement #0List kclist.mfx%Y$$(PTahoma Function names   Movement #0List kclist.mfx%YPP(PTahomaSquare rootNth rootPowerExponentialLogarithmSineCosineTangentArc sineArc cosineArc tangentArc tangent of y/xMinimumMaximumFloorCeilingRoundInteger partFractional partGreatest common divisorLeast common multipleFibonacciFactorialAbsoluteIs primeNth prime RPN evaluator lexeme container   Movement #0List kclist.mfx%Y$$(PTahoma# Environment  Movement #0AssArray Object AssArray.mfx%Y Variable types list   Movement #0List kclist.mfx%Y>>(PTahomaNUMBERSTRING%String tokenizer  Movement #0String tokenizerStringTokenizer.mfx%Yp p pppppppp pppppppppp ppppppppH l $xxxxxx xx x``8 xxx`xXxPxEvts. M%X"Segoe UI SemiboldQSemibold NM%"Segoe UIWRegular %"Segoe UIRegular w%"Segoe UI-Regular %"Segoe UIZRegular4P#P .-$P1 VARIABLE pi ^#Q .-$P1 VARIABLE pi"-3.141596F:  !P  b@-6Initiate scanner module P@-6Initiate scanner module ' &Scanner module3P P@-6Initiate scanner module,1  =-!P ,  2  U U U U UB V4-*Start of scanning V-R0-&Scan characters   &Global loops4   %"Segoe UI RegularJ  L<-2Get scanned character\1  =D-   6  `P-FGet scanned lookahead character\1  =D-     &Get lexemeo5  "%"Segoe UIMRegular 6&-Get lexeme8  =.STRING$  p1  =X-      %"Segoe UIPRegular 6&-Get lexeme8  =.STRING$  1  =x-        %"Segoe UILRegular 6&-Get lexeme$  p1  =X- T  _ Unary minus "$      %"Segoe UI$Regular @0-&Scan characters '  %"Segoe UIRegular @0-&Scan characters.  2  %"Segoe UIRegular  %"Segoe UIRegular @0-&Scan characters.  2 "#  ^<-2Get scanned character   D%"Segoe UIRegularZ @0-&Scan characters '>-While  &Skip whitespaces2`   ,-WhileJ  $$Q  ,-WhileJ  $$Q  ,-WhileJ  $$Q  ,-WhileJ  $$Q  ,  2 ^<-2Get scanned character , !!,-WhileJ  $$Q  J  $$Q  J  $$Q  J  $$Q  .  2 *-While ' "" ##&Token check $$&End  %%%"Segoe UI Regular6 &&@0-&Scan characters8  01  =-ENDF$-End token `>-4Disable scanner module nL-BInitiate shunting yard module  '' ((&Minusheses (2)(  ))%"Segoe UI Regular  "**%"Segoe UIRegular( ++@0-&Scan characters:   -$  :1  ="-OPERATOR"#  ,  2 ^<-2Get scanned character F$-End token   ",,%"Segoe UI#Regular( --@0-&Scan characters:   -$  :1  ="-OPERATOR"#  ,  2 ^<-2Get scanned character F$-End token  .. //& Parentheses  00%"Segoe UIRegular< 11@0-&Scan characters:   (J1  =2-(OPEN_PARENTHESIS"#  ,  2 ^<-2Get scanned character F$-End token Z 22@0-&Scan characters:   )N1  =6-,CLOSED_PARENTHESIS,  2 ^<-2Get scanned character F$-End token  33 44&Separators (2)  55%"Segoe UIRegularJ 66@0-&Scan characters:   ,<1  =$-SEPARATOR"#  ,  2 ^<-2Get scanned character F$-End token  77 88& Operatorsq  99%"Segoe UIRegular^ ::@0-&Scan charactersh D5    ,  2 ^<-2Get scanned character  ' H&-If level 1  ;;& If level 15d <<6&-If level 1 ' >-While  ==& While scanned character is found in isDelimetersDigit (2) >>,-Whileh D5    ,  2 ^<-2Get scanned character  ??,-Whileh D5    *-While '  @@t AA6&-If level 1H&-Get lexeme  BB6&-If level 1Z 6 _    :1  ="-OPERATOR"#   ' F$-End token  CC6&-If level 1Z 6 _    fD-:Close groups before error ,  2 J(-Throw error  DD6&-If level 1TD-:Close groups before error ' F$-End token  EE FF GG&NumbersV  HH%"Segoe UI!Regular  II%"Segoe UIRegular  JJ%"Segoe UIRegular( KK@0-&Scan charactersh D5    61  =-NUMBER,  2 ^<-2Get scanned character  'H&-If level 1  LL&If level 15  MM%"Segoe UIRegulard NN6&-If level 1 '>-While  OO&While scanned character is found in isDigitDot( PP,-Whileh D5    ,  2 ^<-2Get scanned character  QQ,-Whileh D5    *-While ' RRZ SS6&-If level 1 'H&-If level 2  TT&If level 25  UU%"Segoe UIRegular  VV%"Segoe UIRegular WW6&-If level 2F "4  E,  2 ^<-2Get scanned character  'H&-If level 3  XX6&-If level 2F "4  E ' 'F$-End token  YY&If level 35  ZZ%"Segoe UIRegular [[6&-If level 3h D5 +- d  ,  2 ^<-2Get scanned character   \\%"Segoe UIRegulard ]]6&-If level 3 '>-While  ^^&While scanned character is found in isDigitot (2)0 __,-Whileh D5    ,  2 ^<-2Get scanned character  ``,-Whileh D5    *-While ' aa( bb6&-If level 3 ' ' 'F$-End token  cc dd ee ff gg&StringsH  hh%"Segoe UI>Regular  ii%"Segoe UICRegular jj@0-&Scan characters:   ",  2 ^<-2Get scanned character  '+H&-If level 1  kk&+If level 15d ll6&-If level 1 ',>-While  mm&,While scanned character is any character*  nn%"Segoe UIGRegular oo,-While:   ",  2 ^<-2Get scanned character   pp%"Segoe UIIRegular qq,-While8  fD-:Close groups before error ,  2 J(-Throw error   rr%"Segoe UIKRegular ss,-While:   ",  2 ^<-2Get scanned character *-While ', ttTD-:Close groups before error*-While ', '+F$-End token  uu& vv6&-If level 161  =-STRING '+F$-End token  ww xx yy&Variables or functions0   zz%"Segoe UI"Regular^ {{@0-&Scan charactersh D5    ,  2 ^<-2Get scanned character  'H&-If level 1  ||&If level 15d }}6&-If level 1 '>-While  ~~&While scanned character is found in isAlpha or isDigitB%0 ,-Whileh D5    ,-Whileh D5    ,  2 ^<-2Get scanned character  ,-Whileh D5    h D5    *-While '   "%"Segoe UIRegular 6&-If level 1.  2 rP-FGet scanned lookahead character d 6&-If level 1 ' >-While  & Skip whitespaces2L  ,-WhileJ  $$Q  ,-WhileJ  $$Q  ,-WhileJ  $$Q  ,-WhileJ  $$Q  ,  2 rP-FGet scanned lookahead character Z ,-WhileJ  $$Q  J  $$Q  J  $$Q  J  $$Q  *-While '  H 6&-If level 1:   (:1  ="-FUNCTIONH 6&-If level 1:   (:1  ="-VARIABLE\ 6&-If level 1F$-End token  '   &UnknownB  %"Segoe UI&Regularn @0-&Scan characters,  2 ^<-2Get scanned character D"-End scan ,  2 J(-Throw error    4$-End token ' &End tokenص  %"Segoe UI Regular  %"Segoe UI%Regular 4$-End tokenV4-*Check unary minus L*- Output token  ' &Unary minusӴ  %"Segoe UIRegularh D4-*Check unary minus$  "$  F D4-*Check unary minus$  "#  "$    &Output token[4  "%"Segoe UIRegular :*- Output token<  =".OPERATOR:*- Output token8  =.NUMBER:*- Output token8  =.STRING:*- Output token<  =".VARIABLE:*- Output token<  =".FUNCTIONH&-Get lexeme $ V- $ V- F V8-   $ :*- Output token<  =".OPERATOR8  =.NUMBER<  =".VARIABLE<  =".FUNCTION8  =.STRING$ V- ( V-null$ V-   %"Segoe UIRegular :*- Output token*1  =-  4$-End token '   %"Segoe UI4RegularL N>-4Disable scanner module>0-&Scan characters ' |\L-BInitiate shunting yard module ' &Shunting yard module_1  \L-BInitiate shunting yard module U U  U U@ V2-(Start of reading V-J(-Read tokens  &!Global loops4  %"Segoe UI Regular  %"Segoe UI3RegularN VF-<Pop operator off the stackL1  =4- T  W  L1  =4- T  W  2 X$ W  2 X$ W  R0-&Evaluate tokens 2 \L-BRemove operator off the stack2 X$ W  2 X$ W  N \L-BAdd input to the output queue$ V- $ V - V TD-:Push input onto the stack$ V- $ V-   %"Segoe UI<Regular J:-0Get stack peek tokenL1  =4- T  W  L1  =4- T  W   &-Pop values from the stack to evaluateP  %"Segoe UISRegular  %"Segoe UIVRegular l\-RPop values from the stack to evaluatef 4 T  W  "VARIABLEV W 4- T  W  V W 4- T W  2 X$ W  2 X $ W    3%"Segoe UIARegular l\-RPop values from the stack to evaluatef 4 T  W  "VARIABLE W z- T #P  P1 VARIABLE  T W   W j-#Q  P1 VARIABLE  T  W  2 X$ W  2 X $ W      %"Segoe UIRegular 8(-Read tokens '  %"Segoe UIRegular 8(-Read tokens\1  =D- T .Read tokens\1  =D- T .Read tokens &Token check &Number, string or a variable.  %"Segoe UI*Regular 8(-Read tokens8  =.NUMBER8(-Read tokens8  =.STRING8(-Read tokens<  =".VARIABLEnL-BAdd input to the output queue N,-"End iteration   &Function5  %"Segoe UI(Regular 8(-Read tokens<  =".FUNCTIONfD-:Push input onto the stack N,-"End iteration   &Separator2)  %"Segoe UI0Regular 8(-Read tokens>  =$.SEPARATOR\:-0Get stack peek token  ' >-While  & Until the token at the top of the stack is a left parenthesis  "%"Segoe UI5Regular~ ,-WhileL  =2.(OPEN_PARENTHESIS8  W  hF-<Pop operator off the stack \:-0Get stack peek token  ,-While8  W  fD-:Close groups before error ,  2 J(-Throw error  ,-WhileL  =2.(OPEN_PARENTHESISTD-:Close groups before error*-While ' N,-"End iteration    &"Operator5  %"Segoe UIRegular 8(-Read tokens<  =".OPERATOR '$H&-If level 1  &$If level 15 6&-If level 1\:-0Get stack peek token  '#>-While  &#While there is an operator token at the top of the operator stackck.  ,-While"$   "%"Segoe UIRegular  ,-While<  =".OPERATORp F T  _   left R T  _    R T  _   ,-While<  =".OPERATORr F T  _   right R T  _    R T  _   hF-<Pop operator off the stack \:-0Get stack peek token "#  ^ ,-While$  *-While '# TD-:Close groups before error*-While '# '$N,-"End iteration    %"Segoe UI.Regular 6&-If level 1fD-:Push input onto the stack  '$N,-"End iteration    &%Open parenthesis2  %"Segoe UI1Regular 8(-Read tokensL  =2.(OPEN_PARENTHESISfD-:Push input onto the stack N,-"End iteration   &&Closed parenthesis2   %"Segoe UI2Regular 8(-Read tokensP  =6.,CLOSED_PARENTHESIS ''H&-If level 1  &'If level 15 6&-If level 1\:-0Get stack peek token  '(>-While  &(Until the token at the top of the stack is a left parenthesisack (2)  %"Segoe UIRegular~ ,-WhileL  =2.(OPEN_PARENTHESIS8  W  hF-<Pop operator off the stack \:-0Get stack peek token  ,-While8  W  fD-:Close groups before error ,  2 J(-Throw error   %"Segoe UI'Regular ,-WhileL  =2.(OPEN_PARENTHESISnL-BRemove operator off the stack *-While '( TD-:Close groups before error*-While '( ''N,-"End iteration    %"Segoe UI8Regular` 6&-If level 1\:-0Get stack peek token  6&-If level 1<  =".FUNCTIONhF-<Pop operator off the stack T 6&-If level 1 ''N,-"End iteration    &)End  %"Segoe UI:Regular 8(-Read tokens2  =.END\:-0Get stack peek token  '*>-While  &*While there are still operator tokens in the stackarenthesis (2)h&  %"Segoe UI+Regularf ,-While8  W  L  =2.(OPEN_PARENTHESISfD-:Close groups before error ,  2 J(-Throw error   %"Segoe UI,Regular~ ,-While8  W  L  =2.(OPEN_PARENTHESIShF-<Pop operator off the stack \:-0Get stack peek token   %"Segoe UI@Regular ,-While8  W  TD-:Close groups before error*-While '*N,-"End iteration    %"Segoe UIBRegular 8(-Read tokenslJ-@Disable shunting yard module nL-BInitiate RPN evaluator module        @0-&Evaluate tokens '.   &.RPN evaluatorI    %"Segoe UI?Regular   @0-&Evaluate tokens<  =".OPERATOR '/X6-,Evaluate operators   %"Segoe UI/Regular @0-&Evaluate tokens<  =".FUNCTION '/X6-,Evaluate functions  &/Evaluate operators1   %"Segoe UINRegularD F6-,Evaluate operatorsh%PF- T T _ _  - ,  %"Segoe UIDRegular| F6-,Evaluate operatorsT  W 0%Q  fD-:Close groups before error ,  2 J(-Throw error   %"Segoe UIFRegularL F6-,Evaluate operatorsT  W 0%Q  \-RPop values from the stack to evaluateR T  _   P.-$Operator cases  `%"Segoe UI6Regular`TD-:Close groups before errorD6-,Evaluate operators '/>0-&Evaluate tokens '. &0Operator cases3  %"Segoe UI;Regularj F6-,Evaluate operators0  =. ||, V-NUMBER V - T   T   T   T    %"Segoe UIERegularj F6-,Evaluate operators0  =. &&, V-NUMBER V - T   T   T   T    %"Segoe UI9Regular F6-,Evaluate operators.  =. |, V-NUMBERv V h- T   T      %"Segoe UITRegular !!F6-,Evaluate operators.  =. ^, V-NUMBERv V h- T   T    ""%"Segoe UIURegular ##F6-,Evaluate operators.  =. &, V-NUMBERv V h- T   T    $$%"Segoe UIYRegular %%F6-,Evaluate operators.  =. =p 0 T T 0 T  , V-NUMBER" V - 1 &&F6-,Evaluate operators.  =. =p 0 T T 0 T  , V-NUMBER" V - 0  ''%"Segoe UI\Regular ((F6-,Evaluate operators0  =. <>p 0 T T 0 T  , V-NUMBER" V - 1 ))F6-,Evaluate operators0  =. <>p 0 T T 0 T  , V-NUMBER" V - 0  **%"Segoe UI^Regular ++F6-,Evaluate operators.  =. <p 0 T T 0 T  , V-NUMBER" V - 1 ,,F6-,Evaluate operators.  =. <p 0 T T 0 T  , V-NUMBER" V - 0  --%"Segoe UIbRegular ..F6-,Evaluate operators0  =. <=p 0 T T 0 T  , V-NUMBER" V - 1 //F6-,Evaluate operators0  =. <=p 0 T T 0 T  , V-NUMBER" V - 0  00%"Segoe UIcRegular 11F6-,Evaluate operators.  =. >p 0 T T 0 T  , V-NUMBER" V - 1 22F6-,Evaluate operators.  =. >p 0 T T 0 T  , V-NUMBER" V - 0  33%"Segoe UIdRegular 44F6-,Evaluate operators0  =. >=p 0 T T 0 T  , V-NUMBER" V - 1 55F6-,Evaluate operators0  =. >=p 0 T T 0 T  , V-NUMBER" V - 0  66%"Segoe UIgRegular 77F6-,Evaluate operators.  =. +, V-NUMBERv V h- T   T    88%"Segoe UImRegular 99F6-,Evaluate operators.  =. -, V-NUMBERv V h- T   T    ::%"Segoe UInRegular ;;F6-,Evaluate operators.  =. *, V-NUMBERv V h- T   T    <<%"Segoe UIoRegular ==F6-,Evaluate operators.  =. /, V-NUMBER V - T   T  ??  >>%"Segoe UIpRegular ??F6-,Evaluate operators.  =. %, V-NUMBERv V h- T    T    @@%"Segoe UIqRegular AAF6-,Evaluate operators0  =. !-, V-NUMBERZ V L- T    BB CC DD  EE%"Segoe UI=Regular FF<,-"End iteration '  GG%"Segoe UI7RegularH HHZJ-@Disable shunting yard module6(-Read tokens ' II@JJ\L-BInitiate RPN evaluator moduleKK<,-"Abort parsing`>-4Disable scanner module lJ-@Disable shunting yard module Rems]if scanned character is found in isDigit: set token type to NUMBER add 1 to scanned character and while scanned character is found in isDigitDot: add 1 to scanned character loop back and if scanned character is "e": add 1 to scanned character and if scanned character is "+" or "-": add 1 to scanned character and while scanned character is found in isDigit: add 1 to scanned character loop back end token(If scanned character is found in isDigit.While scanned character is found in isDigitDotIf scanned character is "e""If scanned character is "+" or "-"+While scanned character is found in isDigit9Check for scientific notation like "2.3e-4" or "1.23e50".Check if this is a variable or a function. A function has a parentesis '(' open after the name. Here a similar loop to the one on the beginning of a scan is started.Get the first character.`Inspired by: http://www.speqmath.com/tutorials/expression_parser_cpp/html/parser/parser.cpp.htmlEvery loop the scanner is guaranteed to start on the beginning of a new token, so we have to point there to then evaluate the whole lexeme.$1Activate all groups at the beginning of the loop. >Find a character on the current position in the source string.<Unary minus can occur at the beginning of the source string.If a "-" character is after a token, which doesn't allow the unary minus, make the token of a "-" a subtraction. Unary minus can go after a subtract token (2--2=4) ;Check for end of expression. If found - stop the main loop. Check for minus.Check for parentheses.Check for operators.!Check for a value."!Check for variables or functions.&^Here something unknown is found or there are wrong characters, which result in a syntax error.FSkip over whitespaces (spaces, tabs and new lines). Here an infinite "while" loop is started. If it stumbles on a whitespace, it moves it's position by 1 and scans once more. But if everything else but a whitespace is found, then the loop stops and the code continues to run. Space=32, Tab=9, Carriage return=13, New line=10 Determine a token and store it.uIf a token which allows unary minus after itself is found - set a flag 0 on. Then turn a flag 1 on, else turn it off.UCheck if a token needs a lexeme. Send a token and optionally a lexeme to the output.Reset a token category.Check for separator (comma).#If it is after a token which allows the unary minus, make it so. Turn on the flag 2, so changing the lexeme from "-" to "!-" could happen.,Read one line (tokens and lexemes) per loop.1Activate all groups at the beginning of the loop.(>If the token is a function token, then push it onto the stack. BAutomatically do operations between input, stack and output queue.If the token is an operator..7At the end of iteration push o1 onto the operator stack1KIf the token is a left parenthesis (i.e. "("), then push it onto the stack.2/If the token is a right parenthesis (i.e. ")"):8WIf the token at the top of the stack is a function token, pop it onto the output queue.:&When there are no more tokens to read.<&Get the token at the top of the stack.If o1 is left-associative and its precedence is less than or equal to that of o2 or, o1 is right-associative, and has precedence less than that of o2.2Pop operators off the stack onto the output queue.'GPop the left parenthesis from the stack, but not onto the output queue.,'Pop the operator onto the output queue.0>If the token is a function argument separator (e.g., a comma).5Until the token at the top of the stack is a left parenthesis, pop operators off the stack onto the output queue. If no left parentheses are encountered, either the separator was misplaced or parentheses were mismatched.+fIf the operator token on the top of the stack is a parenthesis, then there are mismatched parentheses.*HIf the token is a number or a variable, then add it to the output queue.%If a token is already found, prevent another one to be found in the same loop. For this deactivate all the token checks, which are then activated at the beginning of every loop.4eEnd of scanner module - stop the main loop and close the group. The module won't be accessed anymore.7kEnd of shunting yard module - stop the main loop and close the group. The module won't be accessed anymore.=If a token is already checked, prevent another one to be checked in the same loop. For this deactivate all the token checks, which are then activated at the beginning of every loop.?0If the token taken off the stack is an operator.DIf there are fewer values on the stack than an evaluated operator takes, the user has not input sufficient values in the expression.FHElse, Pop the top values from the stack (as many as the operator takes).3Here to get the full Reverse Polish notation, an operator or a function taken off the stack should be added to the output queue instead of keeping it in a value. And of course a current iteration should be ended.@*No more operators in the stack - end loop.B-After everything is done, disable the module.//If the token taken off the stack is a function.>Check for a string.C)If scanned character is a quotation mark.G&Add any scanned character to a string.IdScan has reached the end of the source string and the string wasn't ended anywhere - throw an error.K9Another quotation mark is detected, so end a string here.LLIf a token is an unary minus, then change the lexeme of it from "-" to "!-".M{Cut a string from the source string and store it in a value. Do it normally if the token isn't an unary minus or a string.PWIf the token is a string, cut the string inside the quotation marks, but not with them.SQGet the token from the top of the output stack and put it in the value container.V;Do it normally if the token we're popping isn't a variable.ZBEnter the variables to the environment for the purpose of testing.6-Close groups is an unknown variable is found.AYIf it is however, we need to get it's value from the environment. Type is stored in a key as a value (0=number, 1=string, we can change it in the variable type list) and a value is stored as a string for every type, even the numbers. At this point we are sure that a variable with such identifier exists, so there's no need for checking again.N%Tokenize the operator arguments list.9 Bitwise OR.; Logical OR.E Logical AND.T Bitwise XOR.U Bitwise AND.YEqual.\ Different.^Lower.bLower or equal.cGreater.dGreater or equal.gAdd.m Subtract.n Multiply.oDivide.pModulus.q Unary minus.- Here's the purpose of each flag, as kliks STILL don't have an option to name them. Scanner variables: Flag 0 - Unary minus character. Flag 1 - Allow unary minus. Flag 2 - Character is an unary minus. Shunting yard variables: Flag 0 - Else for loop in operators.QBLN Parser v1.2Wby Karol "BulletHead" BelinaEvOb Console0TSL Console 20TSL!Edit Box00zE Shunting yard token output0TSL "Shunting yard token operator stack0TSL Operator name0TSL Scanner variablesSprite Shunting yard variablesSprite  Operator symbol0TSL Function symbol0TSL Error console0TSL Error variablesSprite Operator precedence0TSL Operator associavity0TSL  Operator arguments0TSL Function arguments0TSL$ASCII Character ObjectICSA Scanner token output0TSL Scanner lexeme output0TSL  Shunting yard lexeme output0TSL  #Shunting yard lexeme operator stack0TSLResultText RPN evaluator token container0TSL Function names0TSL RPN evaluator lexeme container0TSL # Environment3BOM Variable types list0TSL%String tokenizerENONEvEd)    !$#%   ConsolesFunction listsOperator listsEvTs EvLs$EvCs!DNE!#% ( &'<* +,.0 8 ACHK>l^+<@DHT`\dh lv2 #default#itDz10.1.0^1.0com.clickteam.runtimeȧ 1.0 bcom.yourcompany.yourapplicationt Shunting-yard1.0.0.01.0.0.0 , resourcessrc 6 #default#i  Bcom.yourcompany.yourapplication>Touch the screen to continue.