MFU2  Shunting-yard?C:\Users\Karol B\Downloads\Shunting-yard new operator cases.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'_i`}$@xɎx<dkȌ@y kҪͫ:y(?R쭝_{tx}_%?mw2{bis'_Xpvp|.VI l x; D9v*Eζg#,/cҬGg`HwU/%CҞHԳGVs67S~c痉~c4v2?JO o; flx8|q zOǓµvOg:y?'!S*\AGMI{׻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' wp/xF $)ƯY1ʈQL3( ƪ:  xՖK =F5\<ކNi `X8hsٺSqG2z8J뼴8 Xmz)9bcc9<rM[H&xHUJO~Ώ#~d-9v>b-֮?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%YIIF.mfxImmediate If Object%Y AssArray.mfxAssArray Object%Y AsciiChar.mfxASCII Character Object%Y kcamath.mfxAdvanced Math object%YMainS{׻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+KLBEDAEH1STVEp 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 Regular 8(-Throw error.  2 \1 =D-:Mixed strings and numbers"#  %"Segoe UI RegularR 8(-Throw error$  D1 =,-"Unknown error  %"Segoe UIRegular8(-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. ]If a particualar combination of operator cases is left out, the operator does not support it. )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%Yff(PTahoma22222222222222221 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" Immediate If Object  Movement #0Immediate If ObjectIIF.mfx%Y &Advanced Math object  Movement #0Advanced Math object kcamath.mfx%Y p p pppppppp pppppppppp pppppppp pH l $ xxxxxx xx x``8 xxx`xXxPxEvtsfy %X"Segoe UI SemiboldQSemibold %"Segoe UIWRegular %"Segoe UIRegular %"Segoe UIRegular %"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  0/ 10& Parentheses  21%"Segoe UIRegular< 32@0-&Scan characters:   (J1  =2-(OPEN_PARENTHESIS"#  ,  2 ^<-2Get scanned character F$-End token Z 43@0-&Scan characters:   )N1  =6-,CLOSED_PARENTHESIS,  2 ^<-2Get scanned character F$-End token  54 65&Separators (2)  76%"Segoe UIRegularJ 87@0-&Scan characters:   ,<1  =$-SEPARATOR"#  ,  2 ^<-2Get scanned character F$-End token  98 :9& Operatorsq  ;:%"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  A@,-Whileh D5    *-While '  BAt CB6&-If level 1H&-Get lexeme  DC6&-If level 1Z 6 _    :1  ="-OPERATOR"#   ' F$-End token  ED6&-If level 1Z 6 _    fD-:Close groups before error ,  2 J(-Throw error  FE6&-If level 1TD-:Close groups before error ' F$-End token  GF HG IH&NumbersV  JI%"Segoe UI!Regular  KJ%"Segoe UIRegular  LK%"Segoe UIRegular( ML@0-&Scan charactersh D5    61  =-NUMBER,  2 ^<-2Get scanned character  'H&-If level 1  NM&If level 15  ON%"Segoe UIRegulard PO6&-If level 1 '>-While  QP&While scanned character is found in isDigitDot( RQ,-Whileh D5    ,  2 ^<-2Get scanned character  SR,-Whileh D5    *-While ' TSZ UT6&-If level 1 'H&-If level 2  VU&If level 25  WV%"Segoe UIRegular  XW%"Segoe UIRegular YX6&-If level 2F "4  E,  2 ^<-2Get scanned character  'H&-If level 3  ZY6&-If level 2F "4  E ' 'F$-End token  [Z&If level 35  \[%"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 a`,-Whileh D5    ,  2 ^<-2Get scanned character  ba,-Whileh D5    *-While ' cb( dc6&-If level 3 ' ' 'F$-End token  ed fe gf hg ih&StringsH  ji%"Segoe UI>Regular  kj%"Segoe UICRegular lk@0-&Scan characters:   ",  2 ^<-2Get scanned character  '+H&-If level 1  ml&+If level 15d nm6&-If level 1 ',>-While  on&,While scanned character is any character*  po%"Segoe UIGRegular qp,-While:   ",  2 ^<-2Get scanned character   rq%"Segoe UIIRegular sr,-While8  fD-:Close groups before error ,  2 J(-Throw error   ts%"Segoe UIKRegular ut,-While:   ",  2 ^<-2Get scanned character *-While ', vuTD-:Close groups before error*-While ', '+F$-End token  wv& xw6&-If level 161  =-STRING '+F$-End token  yx zy {z&Variables or functions0   |{%"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 '2X6-,Evaluate functions  &/Evaluate operators1   %"Segoe UIDRegularZ F6-,Evaluate operatorsv  W R T  _    fD-:Close groups before error ,  2 J(-Throw error   %"Segoe UIFRegular `F6-,Evaluate operatorsv  W R T  _   \-RPop values from the stack to evaluateR T  _    '0P.-$Operator cases   %"Segoe UIJRegular TD-:Close groups before errorD6-,Evaluate operators '/>0-&Evaluate tokens '. &0Operator cases3  y%"Segoe UIRRegular a>.-$Operator cases"$    N%"Segoe UIRegular  %"Segoe UIrRegular c>.-$Operator cases$  0  =. ||R $ T  NUMBERR $ T  NUMBER, V-NUMBER V - T   T   T   T  "#    %"Segoe UIERegular  O%"Segoe UIsRegular  >.-$Operator cases$  0  =. &&R $ T  NUMBERR $ T  NUMBER, V-NUMBER V - T   T   T   T  "#     !%"Segoe UI9Regular  P"%"Segoe UIiRegular !#>.-$Operator cases$  .  =. |R $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T   T  "#    "$%"Segoe UITRegular  Q%%"Segoe UIjRegular #&>.-$Operator cases$  .  =. ^R $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T   T  "#    $'%"Segoe UIURegular  R(%"Segoe UIkRegular %)>.-$Operator cases$  .  =. &R $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T   T  "#    S*%"Segoe UIaRegular  DT+%"Segoe UIuRegular ',>.-$Operator cases$  .  =. =R $ T  NUMBERR $ T  NUMBER, V-NUMBER V -"U  T   = T   1 0"#  V (->.-$Operator cases$  .  =. =R $ T  STRINGR $ T  STRING>.-$Operator cases$  .  =. =R $ T  NUMBERR $ T  STRING>.-$Operator cases$  .  =. =R $ T  STRINGR $ T  NUMBER, V-NUMBER V -"T  T   = T   1 0"#    ).%"Segoe UI\Regular  DU/%"Segoe UIwRegular h0>.-$Operator cases$  0  =. <>R $ T  NUMBERR $ T  NUMBER, V-NUMBER V -"U  T   <> T   1 0"#  P i1>.-$Operator cases$  0  =. <>R $ T  STRINGR $ T  STRING>.-$Operator cases$  0  =. <>R $ T  NUMBERR $ T  STRING>.-$Operator cases$  .  =. =R $ T  STRINGR $ T  NUMBER, V-NUMBER V -"T  T   <> T   1 0"#    ,2%"Segoe UI^Regular  V3%"Segoe UIyRegular -4>.-$Operator cases$  .  =. <R $ T  NUMBERR $ T  NUMBER, V-NUMBER V -"U  T   < T   1 0"#    /5%"Segoe UIbRegular  W6%"Segoe UI|Regular k7>.-$Operator cases$  0  =. <=R $ T  NUMBERR $ T  NUMBER, V-NUMBER V -"U  T   <= T   1 0"#    28%"Segoe UIcRegular  X9%"Segoe UI~Regular l:>.-$Operator cases$  .  =. >R $ T  NUMBERR $ T  NUMBER, V-NUMBER V -"U  T   > T   1 0"#    5;%"Segoe UIdRegular  Y<%"Segoe UIRegular m=>.-$Operator cases$  0  =. >=R $ T  NUMBERR $ T  NUMBER, V-NUMBER V -"U  T   >= T   1 0"#    8>%"Segoe UIgRegular  DZ?%"Segoe UIRegular 9@>.-$Operator cases$  .  =. +R $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T   T  "#   oA>.-$Operator cases$  .  =. +R $ T  STRINGR $ T  STRING>.-$Operator cases$  .  =. +R $ T  NUMBERR $ T  STRING>.-$Operator cases$  .  =. +R $ T  STRINGR $ T  NUMBER, V-NUMBERR V D- T T  T T "#    :B%"Segoe UImRegular  [C%"Segoe UIRegular ;D>.-$Operator cases$  .  =. -R $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T   T  "#    <E%"Segoe UInRegular  \F%"Segoe UIRegular =G>.-$Operator cases$  .  =. *R $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T   T  "#    >H%"Segoe UIoRegular  ]I%"Segoe UIRegular ?J>.-$Operator cases$  .  =. /R $ T  NUMBERR $ T  NUMBER, V-NUMBER V - T   T  ??"#    @K%"Segoe UIpRegular  ^L%"Segoe UIRegular AM>.-$Operator cases$  .  =. %R $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T    T  "#    BN%"Segoe UIqRegular  _O%"Segoe UIRegularf CP>.-$Operator cases$  0  =. !-R $ T  NUMBER, V-NUMBERZ V L- T   "#    qQ%"Segoe UI-Regular uR>.-$Operator cases$  fD-:Close groups before error ,  2 J(-Throw error 6 vS>.-$Operator casesTD-:Close groups before error '0 DT EU V&2Evaluate functions(2)1   W%"Segoe UIRegularZ XF6-,Evaluate functionsv  W R T  _   fD-:Close groups before error ,  2 J(-Throw error   Y%"Segoe UIRegular ZF6-,Evaluate functionsv  W R T  _   \-RPop values from the stack to evaluateR T  _    '1P.-$Function cases   [%"Segoe UIRegular \TD-:Close groups before errorD6-,Evaluate functions '2>0-&Evaluate tokens '. ]&1Function cases(2)3  ^%"Segoe UIRegular _>.-$Function cases"$    `%"Segoe UIRegularf a>.-$Function cases$  4  =.sqrtR $ T  NUMBER, V-NUMBERV V H-  T T "#     b%"Segoe UIRegular c>.-$Function cases$  4  =.rootR $ T  NUMBERR $ T  NUMBER, V-NUMBER V x-&u  T   T  "#     d%"Segoe UIRegular  e>.-$Function cases$  2  =.powR $ T  NUMBERR $ T  NUMBER, V-NUMBERv V h- T    T  "#    f%"Segoe UI)Regularh g>.-$Function cases$  2  =.expR $ T  NUMBER, V-NUMBERV V H- T  "#    h%"Segoe UINRegularh i>.-$Function cases$  2  =.sinR $ T  NUMBER, V-NUMBERV V H-  T  "#    j%"Segoe UIYRegular k>.-$Function cases$  2  =.minR $ T  NUMBERR $ T  NUMBER, V-NUMBER V t-( T   T  "#    l%"Segoe UI_Regulard m>.-$Function cases$  2  =.facR $ T  NUMBER, V-NUMBERZ V L-&P  T  "#     n%"Segoe UIeRegular` !>.-$Function cases$  6  =.primeR $ T  NUMBER, V-NUMBERZ V L-&  T  "#    o%"Segoe UIRegular q>.-$Function cases$  fD-:Close groups before error ,  2 J(-Throw error 6 r>.-$Function casesTD-:Close groups before error '1 s t Fu  Gv%"Segoe UI=Regular Hw<,-"End iteration '  Ix%"Segoe UI7RegularH JyZJ-@Disable shunting yard module6(-Read tokens ' Kz@L{\L-BInitiate RPN evaluator moduleM|<,-"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.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.9 Bitwise OR.E Logical AND.T Bitwise XOR.U Bitwise AND.\ Different.^Lower.bLower or equal.cGreater.dGreater or equal.gAdd.m Subtract.n Multiply.oDivide.pModulus.q Unary minus.QBLN Parser v1.2Wby Karol "BulletHead" Belina Logical OR.aEqual.iNumber | Number: rounds the parameters to integers and retruns the number resulting from performing logical or comparisons on the bits in each number.jNumber ^ Number: rounds the parameters to integers and retruns the number resulting from performing logical exclusive or comparisons on the bits in each number.kNumber & Number: rounds the parameters to integers and retruns the number resulting from performing logical and comparisons on the bits in each number.rGNumber || Number: returns true if either param1 or param2 are non-zero.sFNumber && Number: returns true if both param1 and param2 are non-zero.uDNumber = Number: returns true if the two numbers are equivalent. String = String: returns true if the two strings are the same. Number = String: treats the number as a string and returns true if the two strings are the same. String = Number: treats the number as a string and returns true if the two strings are the same.wTNumber = Number: returns true if the two numbers are not equivalent. String = String: returns true if the two strings are not the same. Number = String: treats the number as a string and returns true if the two strings are not the same. String = Number: treats the number as a string and returns true if the two strings are not the same.y<Number < Number: returns true if param1 is less than param2.|FNumber <= Number: returns true if param1 is less or equal than param2.~?Number > Number: returns true if param1 is greater than param2.INumber => Number: returns true if param1 is greater or equal than param2.Number + Number: returns the sum of two numbers. String + String: concatenates the two strings. Number + String: treats the number as a string and concatenates the strings. String + Number: treats the number as a string and concatenates the strings.<Number - Number: returns the difference between two numbers.4Number * Number: returns the product of two numbers.5Number / Number: returns the quotient of two numbers.FNumber % Number: returns the remainder of the quotient of two numbers.2!- Number: returns the number with a changed sign.-xIf a particualar combination of operator cases is left out, the operator does not support it and will generate an error.J-Close groups if an unknown variable is found.RReset the else flag.If there are fewer values on the stack than an evaluated operator takes, the user has not input sufficient values in the expression.HElse, Pop the top values from the stack (as many as the operator takes).-Close groups if an unknown variable is found.Reset the else flag.xIf a particualar combination of operator cases is left out, the operator does not support it and will generate an error.NHere'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 operator token check. Flag 1 - Else for loop in operator and function cases. Square root. Nth root.Power.) Exponential.NSine.YMinimum._ Factorial.e Factorial.EvOb 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"Immediate If Object0FII &Advanced Math object0MASEvEd*    !$#"&   ConsolesFunction listsOperator listsEvTs +EvLs$EvCs!DNE!#% ( &'<* +,.0 8 ACHKR~; <@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.