/*
https://t.me/zlurpeeportal
https://www.zlurpee.wtf/
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::ccllooodddddxxxxxxxxxxxxxxddddooollccc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::cllodxxkkOO00KKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKK00Okkxxdoolc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::clodxkO00KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKK0Okxxdolc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:cloxkO0KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK0Okxdoc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:cloxkO0KXXXXXXXXXXKK00OOOOOOOO0KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK0kxdlc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cldxO0KXXXXXXXXKOkdlc:;,,,,,,''',,,,,,,;:cclodkO00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkdoc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:ldxk0KXXXXXXXXX0xl:,''',;;:codxkkkOOkkkxxdoollc:,,,''',;:lodkkO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOkdlc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:ldkOKXXXXXXXXXXXOd:'.';:lodxxdddooollccc::::ccccccclllc::::;;,'....',;coxOKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK0kxoc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:ldk0KXXXXXXXXXXXKOo;'.':ldooll:;,'',;;cllodxkkkOOOOkxxxxxdolccc:ccc:::::;,'...,;cok0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOxoc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:cdkOKXXXXXXXXXXXXXKx;..,cllc:,'....,;cdkO00K00Okxdolllcllccclllllol:;;,'.....',,,,'....';cloxO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK0kdl:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lxOKXXXXXXXXXXXXXXXKd,.':lc:,'....,:odddoolc:;;;:ccloddddxkkxxxxxxxxxxddxxxxxddl:;,''.''..... ..,;cld0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK0xoc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;coxOKXXXXXXXXXXXXXXXXX0c..:c:,'....;cllcc:,'',;:lodkOOOO0OOOkxxdolooolllcccccccoddolccooccclc::;,,,,''... ':odxO0KKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0kdc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cox0XXXXXXXXXXXXXXXXXXX0o'.';,'...',:cc;,'...,:ldxxxxxxxdollllccllooloooodddxdxxkxkkkxxxxkkkxxkkOOkOOOOOkkkxddolcc:ccccccclddxO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkdc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:ox0XXXXXXXXXXXXXXXXXXXXXk,..,'....':c:,'...'';codxxxkkOkocclldxkkkO00OOkOO00OO0000KKK0K000OO00OkkxxxkxdoooooooooodxkOO00Okxolcc::::codxOKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkdc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lxOXXXXXXXXXXXXXXXXXXXXXXKo. .'.....,:,'....',:odxxxxkO000dcldxxkxkkO00000000OOkkxxxkkkkkkkOOOOOxlclllcllcllooooddooooolcccclodxkO00Oxdc;;:coodkOKXXXXXXXXXXXXXXXXXXXXXXXXXX0ko:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cdOKXXXXXXXXXXXXXXXXXXXXXXKKk;..'..'',;''.'.'';:lodddxxxxxdddddxkkkkkkkkxdooollooddxkkO00KKKKXXXXNNKKKXXXXXXXXXXXXNXXXXXNXXXKOkddolllccccodxkOkdoc:::lok0KXXXXXXXXXXXXXXXXXXXXXXXX0xl:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lx0XXXXXXXXXXXXXXXK0kxdllc:;,,,;;,'''',''..',;::::cclooolloodxkkkkdolcccclodxkkxk0KXXXXXNNNNNNNNNNNNNNNNNXNNNNXXXXXXXXXXXKKXXXXNNNNNXXK0Oxooolcclodkkkxo:;:coxOKXXXXXXXXXXXXXXXXXXXXXXKOdc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cdOKXXXXXXXXXXXKOxoc;,,''...'',;:lolcoxo:::,';:::;'',:ccccoxkxxxddddddddxkOOkOOOkkkOKKKKXKKXXXXKKKXXXXKKKKKKKKKKKK0KKKKKKXKKXXXXXXXXXXXNXNNNNNNNXKOxolc:cooxxo:,;;:ldOKXXXXXXXXXXXXXXXXXXXXX0xl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cx0XXXXXXXXXX0xl:,,,,;clc:;,'.''.''',;:dOkkkxddl;''',;:clodxxxdooddxkOkxddxxxdddxkkOO00OkkOkkkOOOkkOOOOOOOOOOOOO00OOkkkOOkOOOOOOOO00KKKKXXXXKKKKXXNNNNNNKOkdlc:;,;::;,,;cokKXXXXXXXXXXXXXXXXXXXXKko:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lk0XXXXXXXXKkl;'';clodo:,'.....''',,;;;;;;:lldkOkxoollcccc:;;;;;;::::cllllloooooooooodddxxxxxxxddxxxdddxxxxkkxxxxxkkkkkO00000000OOOOkxxxxxxxkkOOO000000KXXXNNNXKOxl:;,;;;;;,,:dOKXXXXXXXXXXXXXXXXXXXKOo:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lkKXXXXXXXKkl,.'coxxo;'....',;;:::;,'...',',:clddxOOkkolcc:::;;::::::c:ccclodxxxxkkxxkkkkkkkkOOkO000KKKKKKKKKKKKKKK00000O0OOOOO00000KKKKKKK000Okkkkkkkkxdxkkk0KXNNNNNKOdoc;''',',:dKXXXXXXXXXXXXXXXXXXXXXOd:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:okKXXXXXXXkl,.'cdxdl;'''',;::ccc:;,'..',;;:;,,;;:;;:lxOOOkxdc::;,;::cccc::;;;:cclodxdolccccclllllclodddddxkOOOOOO000KKKKKKXXKXXKKKKKKKKKK000000KKKXXXXK0Odlc::::clodkO0KNNNKOxl;'..':kXXXXXXXXXXXXXXXXXXXXXXX0dc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lkKXXXXXXOo;.'coddolll:;;:ccllc:;;;:cc:;,,',;:::clooooodoccldxxdlc::;;;;;::clllooddxxxxkkkxkkkkkxkkkxxxxxxkOO0K0000000K00KK0KKKKKKKKKKXXXXXXXXXXXXXKKKKKKKKXXXKK0Okdoc:;,,:lx0XXX0ko:,.':x0XXXXXXXXXXXXXXXXXXXXXX0d:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;lkKXXXXXKkc..;okxollllllcclool:;,;cool;,,;:lddool:;;,'',;;;:clxkkxdlc:;::::cccccccclodxxxkOO000OOO00OOOOOO0000O0KXXXXXXXXXXXXKKKXXXXXXXXXXXXKKKKKKXXXXXXXXXXXKKKKKKXXXXXK0kdl:;;:cdOKK0kl:'',cx0XXXXXXXXXXXXXXXXXXXXKOo:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cxKXXXXXKx;.'cdkxooolllllloooxo;;looolccloxxxoc;,;:;;;::clooodddddxOOkdoc::;,,;::ldxddollloddkO0OkxxxkOOOOOOOkkxdddxxxxkO00KXXKKKKKKKXXKKXXXXXXNNNNXXXXXXXXXXXXXXXXXXXKKKKXXNXXXKOdlcc:cdxOkdoc;';lx0XXXXXXXXXXXXXXXXXXXKOo:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cd0XXXXXXk:.'lkkdoololllodddxkkkoloooxOOOOxl;',:clodxdooooooollc:cccodddxxl::;;;;;;;:codxxxxdollodxkOOkxxkkOOOOOOOOOkxkkxddoodxkOOO00KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKKXXXXNNXXKkoc::codkkdc;,;lkKXXXXXXXXXXXXXXXXXXKkl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:oOXXXXXX0c..lxkolllllloodkOkkkxdoodkOOOxoc,,:ldkkxdddxxdlc:,,,,,;;;::ldxkkkkdol::::;;,;;::lodxkkxxollodxO0OOkkkOO0000OOOOO00OOkxxxxxxO00O0000KKKXXXXXXXXXXXXXXXXXXXXXXNXXXXXXXNNNXXXXKXNNNXXKkoc;;:oxxo:;,cx0KXXXXXXXXXXXXXXXXXKxc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ckKXXXXXKd'.:xkoccllloodxOOOkxddxxk00Oxddlccoxkkxdxkkxoc;,,;:cccllc::;,,,:ooodxdccccloolc:;;::::codxkkkxoloxO0OkolodxOKKK0OOkkOOOOOkkxxxkkO0KXXXKKKKKKKKKKXXXXXXXNXXXXXXXXXXXNXXXXXXXNNXXXXXXNNNXKOxl;;:codoc:;cx0XXXXXXXXXXXXXXXXXOo:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:d0XXXXXXO:.'lxdc:cc:codxO0OxddxkOKXKOxxk0KKOkxddkOxdl:;:lodddoc;''.',;:ccclloodkOxl:,,;coxdocccc:::cllodxkkxoooxOOxolc::cdkOKKKK00OOOOOOkxdddooodxO0KXXKKKKKKKKKKKXXXNNNNXXXXXXXXXXXXXXXXXNNNXXXXNNNXKOd:,,;codo:,;lOKXXXXXXXXXXXXXXXKkc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;lkKXXXXXXk,.:ddl::c:;coxk0Oxxxxk0KK0OkOKXXKOxdxkOOkdccoxkOxl:,''';coxxxdoc:;,,,,;ldxxdolc;,;lxkxdlcclccccllldkOOkxodkO00ko:'.':odkO0KKKKKKKKXXK0kolc:;;:cldk0000KKKKKKKKXXNNNXXXXNNXXKKXXXXXKKXXXNXXK00KKK0kdc;'';lol;,:xKXXXXXXXXXXXXXXX0o:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:d0XXXXXXKd..cdo:;::;;codOOkkkkOKK0OOO0XNXKkxkO0OkxxO00Okxl;'',coxOOkdoc:;;::ccccc:;,,;,.'lxdl;,;ldxdolcccc:,;clodxOOOOOOOO00Odc,'.';:codxO0KXXXXXXXXKKOxdolcc:::codkO0KKKKKKKKXNNNNNNNNXXKKKKKKKK0O0KXK0OkOO0Okxo:,',:lc;,:xKXXXXXXXXXXXXXXKkc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ckKXXXXXXKl.'oxl:;;,,;coxOOkxk0KK0OO0KNNXOxkO00Oxxk000kxddoc:lk00ko::clodddxxddl:,'',;cll:...cdxoc;;:ldkkdllc;'.':llodxk00000O0KK0kdc;''',,;:loxkO0KXXXXKKKKKK0Okxolc:;;:oxOKKXXKKKKXXXXNNNNNNXK0OO00OOO0KKK0kxddxkkxdl:,,;;;,:xKXXXXXXXXXXXXXX0o;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;oOXXXXXXXKl.'odc;;;'.'coxOOxdkKX0OO0XNNKOxk0K0kkO0K0OkxxxxkOO00xl:codxkkxxoc:;,;:cllodxxodkc .,lxxdl:;codkkxdoc,',,,;:loodxOKXXXKKKKKOxoc;,''',;:clodkO0KXXXXXKKKKKKK0kdl:;,:ldO0KKKK000KXNNNNNXX0OkO0K0OOO0XK0kdoodkkkxl;'',,,o0XXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;:dKXXXXXXXXo..odc;;;'..:oxkxodOKK00KXNNKOkOKK0OO0XK0OOO0000KKKK0Oxxkkxddxxoc;;cdkOOxddoolldx:. ......,codxxoloodxkxxkxdl;,',,;:codk0XXXXXKKXK0Odoc:,'..'',;:codxO0KKXXXKKKKXXX0xl;,,,:okO0KK0000KXNNNNXKK000OOOkOO0KK0kolldkOOxl;',:d0XXXXXXXXXXXXXXKkc;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;ckKXXXXXXXXx..cdc;;;'..:odolokKK00KXNNX0O0KKOO0K000OO0KXXNXXKKKKKOxdodkkooooxOK0Oxxkkkdlllol' ..,,,'.....':ldxxxxxddxkO00kdl::;,',;cldxk0KXXXXXXXKK0Okdolc;,'',;;:clodkO0XXXXXXXK00Odc;,:lxkO0000OO0KXXXKKKKK00OOOOO0KXKkocldxkOOxc'.:OXXXXXXXXXXXXXXXOl;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;lOXXXXXXXXX0;.:dc;;;'..:olc:o0K00KXNNX0KXXKOOKX0xox0KXNNNXXXXXKOxddxO000koxKKOkxxk00Oxdodo:. ..,:cll:;,''......';clodxkkOOOkOOOOxol::,''',:ldxO0XXXXXXXXXXXKOxdl:;,'',;;:lokOKXXXK00KXX0xl::oxxxkO00OkxkOKKKOO0KK0OOOOOO00kdollldk0Kx;.,xKXXXXXXXXXXXXXXKd:;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;o0XXXXXXXXX0:.;do;;;'..coc;:d0K0KXNNX0KXXKkOKX0xoxOKNNNK00KXK0kxkO000OO0KKOkddxO00Oxddk0kl. .',:codxxddolc:;,,'.... ..';cloxxkk00KK0Okxdl:;'...';coxO0KXXXXXXXXXK0kdol:,''',:ldxOXXXK00O0KKkocldkddxO0OkxxkO00OkO0K0OxxO00Okkxxolc:cdOd,.:kXXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;:o0XXXXXXXXXKl.'od:;;'..:lc,;xKKKXNNX0KXXKOOKX0xox0XNNX000KKOkxkOKXK0OO00OxddkO00OxooxOOx:....',;coxxxkxxkkkkdc:;;,,'''...........',:coodxO0XXX0kxol:;''..';cokOKXNNNXXXXXKOxlc:;,'',cdkOKXK0OkO0OxdooxxkxkkOOOkxkkkxxOOO0Okxk00Oxxxxo:,,:dOo',dKXXXXXXXXXXXXXKxc;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;:dKXXXXXXXXXKo..lo:;,'..:c:'.l0KKNNXKKXXKOOKX0xox0XNNX0O00OxxxOKXXKKKKKOxddk0K0kdodkOOko,....',,;:looodddoooolc:;;,,,,,,,'''''......... ....',;;:clloodoc:;,'....,:ldk0XNNNXXXXX0Oxl:,'',cok0XK0kkO0OdllxkkkkkkkkOkxxxkOOOOOkxdxO0kxxxkxl,.;xkl;:xKXXXXXXXXXXXXXkc;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;:dKXXXXXXXXXKo..ldc;,..'cc:,.;x0XNNKKXX0OOKX0dldOXNN0OOOOkddk0XXXKKXK0kxxOKXKOxdxO00dc'.'''''''''''''''........................................... ...... .';ldkOKXXXXXXX0ko:'.':ok0XK0xx00xdxOOkkOOOkkOOOkxkkOkkkxxdxO0kxxOOxc''ckd,.cOXXXXXXXXXXXXXkc;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;:dKXXXXXXXXXKo..loc;,..;ccc,.,okKNXKKXKkkKXKxookKNNKOOOxooxOKXXKXXX0kdxOKXX0xxkO0ko:....',,,,,,,,,,,,,,;;,',,,,,,;;;;;;;,,,,,,'''................................ .';ldOKXXKKKK0x:'..;lkKX0kkO000OkOOOO00OkkOOkxdxOOkkkxxO00kxO00xc',od:.'dXXXXXXXXXXXXXkc;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;:dKXXXXXXXXXKo..loc;'..:ll:,.'lkKXKKXKxokXXkolx0XNX0OOxoox0XXKKKXKkddk0XX0kxk0Kko,....',',,,,,,,,,,,,,,,,,,,,,,'',:cclodddxxxxxxxxdddddoooooooooloolllccllc::::;;;;,,,,''....... ..';lxO0000K0xc'..;dOK0kxk00kxkkxkO00OkkO0OddkO0OkkkkOKKOk0K0d;':ol'.lKXXXXXXXXXXXXkc;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;:dKXXXXXXXXXKl..loc;...cllc'.'lOXXKKKOod0X0dlokXNXOkxdoox0XXKKKX0xddOKK0kxxk00d,. .............................. ...''',;;;;:::::::cccccldxxdddolllloolcccccc:::::;;;,,,''......... ..;dO00OO00xc'..ckK0xdkK0kxxdxxO00OkkOOxodOK0kkkkOKK0kk0Kkc',ll;.c0XXXXXXXXXXXXkc;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;oKXXXXXXXXXKc.'loc,..,cll:'.'o0XXKK0doOK0xoldOXN0xoollx0XXK0KX0xox0X0kxxk00x:. ................. ................ ....................,;::;,'....................................... ..;ok0Okk0Oo;..:kKOdd0KOxdooxOO00kkkkOxdk0K0OkkO0KKOk0KOl''coc,;xXXXXXXXXXXXXx:;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;l0XXXXXXXXXO:.,lo:'..,ccl:..,xKXKK0xoxKKxl;,oKXKkol:;lOXNXKXX0xokKK0kdx0KOo'. .............. ....'',;::cllllllcccc::;,'... ...'''',,,;;;;:;;:::;;;,'...................... .... .:x0OxdxOx;..oKKxdOKOkxxodk00OOOkkO0OkOKKOOkdd0KOxOK0d;':oo,.oXXXXXXXXXXXKd:;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;lOXXXXXXXXXx'.;ol;...:ccc;..:kK0kOxcckKOoc;;oKKOdl:,;d0KKKXXOolkKKOxxk0Kk:. .................',;:cllllooddxxxxkkkxxxxxxxdoolc;'.. ..,,;;:cllooodddoooll:;;,,,,'''...... ................... ,dOkolool'.,kXOdk00kkxddk000OOkkkO0kxOK0Oo;cOK0kO0Kk:'ldl,'oKXXXXXXXXXXKd;;;;;;;;;;;;;;;
;;;;;;;;;;;;;ckXXXXXXXXKd..coc,..'::cc,..l0Kkxxc;o00dl:;l0X0dlc,,l0XK0KX0o;cOKOxxOKKx;. .......... ..,;:ccllloddxkkkOOOOOOOOOkkOOOO000Okkxool:,.. ..,,,:dxkOOO0000Okxl:;;,,''... ..',;;;;::cccclllllooooool:;'.. 'oOkl:cl:..o00xx00koloxOKK0OxxkkO0OkOKKOxc:xK0kkKKOl,:ol;.c0XXXXXXXXXX0l;;;;;;;;;;;;;;
;;;;;;;;;;;;:xXXXXXXXXKl..loc'..;c:::'.,xK0xdo;:kKkl:',xK0xoc,'cOK0O0XKd:ck0kxxOK0d,. ...........',:clllllodxxkOOOkkkkxxddoooooooooooodddoooollcc:'. ...':oxkkkkkkkxdl;,,'.......,:loooolllodddxxkkkkOOO0000Okdc:;'.. 'dOxc;c:'.,x0ddOKkc,cox0K0kxxkkk0K00KX0kl:lOKkkOK0o,;oo:.,OXXXXXXXXXXOc;;;;;;;;;;;;;
;;;;;;;;;;;;oKXXXXXXXO:.,oo:...;:;::..;x0kdo:;o00dc,.:OKkol:';xK0kkKKk;,d00xxOKOo' ..........';clllclodxkkkkkxxdolccc:,,,''''',,,,,,,,,;;;::cccccc:' .'ldxxxxddol:;,.. .';coddddddxxxkkOOOOOOOOkxxddddddol:;,,''''.. .c0Ol;;;,..oOdoOKO:.;lxOK0Okxxxk0KK00KKOd;;kXOx0XXo'cxxl.'xXXXXXXXXXXx:;;;;;;;;;;;;
;;;;;;;;;;;lOXXXXXXXk'.:do:. .;:;:;..:dxool,,d0ko:,'oK0dlc,.c0KkxOKOl,cOKOk0K0o' .........':lolllloddddddolc:;;,'..............................',;;;'. .:ooooooc:,'....':lddddxxkkkkkkxxdoooolc:;,'................... ,ddc;;;,..lkdokKOc.,oxOK0OOOkxkO0K00KK0d;;xKOx0XKd;lxxo.'kXXXXXXXXXKd;;;;;;;;;;;;
;;;;;;;;;;:kXXXXXXXd..cdo;..'::::,.'cddll:';xOdc;';xKOol:.'dKOdx0Kx,,dK0xOKKx, ....... ..;lllclloooool:;,,.... ...',:clodxO00O00OOxolcccloolc:;,...... .:oool:;'...';lodxxxxxkkxxdoll:;;,'......,;:cooodxkxdolc;,;;cclll:;,,'..... .d0kxOKO:.;oxk00kkK0kxk0K00KXKx:,oKOxOXKl.:xxl.,kXXXXXXXXX0l;;;;;;;;;;;
;;;;;;;;;;oKXXXXXKo..ldl'..,:;::'.,lxdlc;'ckOoc,.,d0xol;.;kKkoxKKo':k0xdk0k:........ .':oollloodol:,''... ..,coxOKXNNWWWWWWWNNNN0dccodkOkdolc:::;;;,''......','...';coddddxkkkxolcc:;'....',;coxOKXNWWWWWWWNOdl::ldkO000Okkxdolc:;,'. .:dxk0Xk;.;dxO0kcl0X0xk0000KNXk:,oKOxkK0c'lkd:'c0XXXXXXXXXk:;;;;;;;;;;
;;;;;;;;;cOXXXXXKc.'ldl' .:c:c:..;ooolc,,cxxl:'.;dkdlc,.cOOdlx0k:'l0Oddkxc. ...... .,ldolllooolc;,'....':okKNWWWWWWWWWWWWWWWWWXkccdk0Oxl:;;;;;;;,,,,;;;;;,'.... .;lddddxddddoc:,'....';lxOKNWWWWWWWWWWWWWWXkl;:lk0K0kdl:;;,;;,;;;:clc:,..',lOXk,.cOOO0d,c0X0kO00KKXNXk:,dKOdkK0:'dOdc'c0XXXXXXXXKo;;;;;;;;;;
;;;;;;;;;dKXXXXKc.,odc. 'llcl:..;looc:;:okxo:'.:dkdl:..o0kooxOd'.lOxldko' ........'cdollloolc;,....':dOXNWWNWWWWWWWWWWWWWWWWN0lcok0Odc;;:cclllloooolllll:;;;;,'...,coooolc;,'....;cdOXWWWWWWWWWWWWWWWWWWN0o:;cx0KOdc;,,,,,,,;;,,,,,;;:c:;,'..;lc..x0OOOd;c0NX0O0KKKXNKd,,dKkokXk,,kOl'.lKXXXXXXXXkc;;;;;;;;;
;;;;;;;;lOXXXXKc.,odc. 'llcc;..:oooo:;lOKOo:..ckkxo:.'d0xodkkl.,dkoldd:. .......'cdollloolc;'.. .cxKNWWWWWWWWWWWWWWWWWWWWWWNOc:dO0kl;;:loxkO000KXXXXK00kl:;;,;;;,'...,;;,,...'cx0NWWWWWWWWWWWWWWWWWWWWWNOl;;lk00xl;,,,;cllc;,'...........',,,... ;k00OOo,dXNX0000KXXNKo;,xKxoOXo.c0kc..oXXXXXXXXKd;;;;;;;;;
;;;;;;;:dKXXXKc.'odl. 'loll,..:oooo:,lOXOo:..ckOxl,.,k0xodOx;.:kxolol' ........:odoccllc:,.. .;d0NWWWWWWWWWWWWWWWWWWWWWWWWNOccd00d:;:cokOKK0xollooodddodl;'..''.',;;'.....'cxKWWWWWWWWWWWWWWWWWWWWWWWWNkc;;lkK0d:;,;cok0x,. ..,;,. .cOXOkkcc0NNN0ddKXXXNKd,:OOod0K:.dKx;..dXXXXXXXXOc;;;;;;;;
;;;;;;;lOXXXKl.'odl' 'ooll;..:lool;,cOXOo:''o0Odl,.;kOddkOx;'lkxllo:. .''....'cdolcccc;,.. .;dO00KKKKKKXNNNNWWWWWWWWWWWWWWOc:oO0d;,;cok0KKXd. .;;,. .cKNNNNNNNNNWWWWWNWWWWWWWWWWWW0c;;cx00dc:;:oOKKXd. '::;'..,kKOkx:oKXNXo:xXNXXN0l'c0xokXO,'x0d,.'OXXXXXXXKd;;;;;;;;
;;;;;;;dKXXXx..ldl,..cocl;..:looo:,l0XOdc''l00dl,.:O0ddO0d''dkdlol,...''....,ldollcc:,'. .,okxxxxxkkkkOOOO00KXXXNNNWWWWWWXo;ck0k:,,cdO0KXXXd. .,;;;'..lO000K000KKKKXXKKKXXNNNNNNWKo;;cd00xl::coOKXXXd. .lkOkd:. ',;;;;'..oK0Oo:d0XN0lcONXXNNO:'d0do0Xd.;00l'.:0XXXXXXXkc;;;;;;;
;;;;;;cOXXXO,.:do;..;lcc:..;lool:;oKXOdc'.oK0xl,.:0XxdOXx',kOddko' .','....'ldolccc;,'...cddddooooddddxxkkkOkOOOOO0KKXXNNk::o0Ol,;:oOKKXXXXd. :dooxkko. .,,;;;,..:O0000OOOO00000O0000000000x:;:lkKOl:;;oOKKXXXd. ,0WWWWK; .,,,;;;,..o0Okccx0NNkcoKXXXNNk,;kxlxXKc.l0xc..lKXXXXXXKo;;;;;;;
;;;;;;oKXXKc.,do:. 'clc:..,lool;,oKX0xc''oK0xo,.:0XkdOXx',k0dkkl. .','....'ldolcc:;,'. .;:;;;:::cllooooooooddxkOOOOkkkkOkl;cx0k:,:lxOKXXXXXo. .kWWWWWNNx. .,,,;;;;..:kOkkkkxxkkkkOOOOOOOkOO0kl;;:oO0xl:,;d000XXXx. cXWWWWX: .',,,;;;,..dOOo;oOKWXdcdKNXXNKo'cxoo0Nx.,k0d:.'kXXXXXXXx:;;;;;;
;;;;;:xXXXx..ldl,..:lcc'.'looo:,lKNKOo,'oK0xo;.;OXOx0Xx',k0xOk:. .,,,'....cdolcc:,,'. . ...',:cllllllloddkkkOOOOxc;lkKd;,;lk0KXXXXXo. .dWWWWNNW0' .,,,;;;;;..:ddddddddxxdddddxkkkkO0x:;;:d00o:;,:xOOKXXXk' lXWWWWNc .,,;;;;;'.'xOkcck0XWKl;dXXKXXk;'loo0X0:.lKko,.cKXXXXXXOl;;;;;;
;;;;;cOXX0;.:do:..;lcc;..:ooo:,l0XXKx;'lKKxo;.'kX0xOXk,'x0k0k; ..,,,,....,odlcc:;,'. ...';cclddooodxkOOo::lO0o,,;lx0KXXKKXo. lWWWWWWW0, .',,;;;;:;. .'',,;cloddxxxxddddxxxl:,;:d0Ol,,,cdkkOKXXk' ,0WWWWNl ';;:;;;;;..;k0d;dOKWNx,:kXXKXKo.;loOXXo.,k0d:..kNXXXXXKo;;;;;;
;;;;;oKXXo.'odc' .clc:..,looc,:OXKKO:.:0Kko:..xNKk0Kd''xK0Kk, .',,,,,....;ddlcc:,'. ..,:loodooodxl::lO0l,,;lx0KXXKKKo. cNWWWWWWO' .',,;:;;;;' .........,:ldxkkkdlllc:,;:d0Oo:;;cddxOKKXk. .oXNNKOc .;;;;;;;;,..lOOccOOXWO:,l0NKXNk,.:lxKXk;.c0xl,.cKXXXXXXx:;;;;;
;;;;;xKX0; :xo;..;lcc, .:ool;,dKK00d.'xKxo:..oXN00Ko.'kXKXk' .',;,,,'....cdolcc:;. ..,:lodolll::ck0o,,:lok0KXKKXd. 'xO00KKOl. ',,::;;;;;..;ol:,'... .',coxkxolc:;;:d00xol:codxkk0Xk' ..''.. .,,;;;;;;;..cxOd;dkONXo;cxXXKNKl.,loOX0l.,k0o;..kXXXXXXOc;;;;;
;;;;:kXXx..ldc' .llc:..,lol:'cOKOOk;.c0ko:'.cXNK0Kx..xXXNk' .',,,,,,....'ldollcc:' ......... ..,codxo:::d0x:;::ldOKXXKXx. ..... .,;:c;;;;;. ,dxxdc;,,'.. ..,coxdl:;,;lOKkolcccoxxk0XO' .,,,;;;;;,..okOOcokxKWO::l0NKXNk;.:okXKx;.o0d:. cKXXXXXKl;;;;;
;;;;l0XKc.,dd:. ;occ'..:loc,;xKkxkl':OOoc,.,ONXOKk,.dXXNO' ..',,,,'.....:ddlllllcc:::::::::ccccllloolc;,'','''.... .':ooc:;ck0o;,;cldk0KKXk' .,;cc:;;;;'.'oxOkxd:,,,'.. ..;llc:;,;d0Odcll::ldkOK0, ',;;:::;'.'kkkKo:kxkNKl:cxNXKNKc.'lxKXkc.:0Oo;.'OXXXXXKd;;;;;
;;;;l0N0;.cxo,..clc;..,col''lOOdxd,,dOdc;.'xNX00O,.cKXN0, ...,,,,......,odolllllloooooodddxxxxxkkkOkkkxoc;,,,,'''... .;:c;;oOOl;,;:loxOOKk' ';:cc:;;;,..;odxkkkdc;,'''... .,:c;,,:x0Odllc;;cdxO0; .,;;:::,. cKOkXk;dkdKXo:coKXKXNx'.:dOXOl,,x0o:..oXXXXXXx:;;;;
;;;;oKNk..ldc. 'll:'..;ll;.:kOddx:.:kdl:..lXN000c.:0XXK: ..','.......'lddolllllodddxxxkkkkkkkkkkkkOOOkkxoc;,,,,,'.... .;:;:dOOo;,;clloodd; .,::::;;;;' ........... ... .';;;;:x00xlc:;;;:cl' .,;;;;;. .dK0OKK:cOdkNx;:lkXXKN0;.;okK0o;.l0o:'.:KXXXXXk:;;;;
;;;;dKXd.'od:..;ol;..,:lc',dkdoxd''dko:,.,ONKOKd.'kXXXl .............cddollllllodxxxxxxxxxxxxxxxdddddddolc;'......... .',:d00d:,;:lolcl:. .,:::;;;;,. ..',:d00Oo;,,,,,,. .,;;;;'..:xKK0KXo,xxdXO::ldKXKXXd.'lx0Kd;.:Ox:;.'kXXXXXOc;;;;
;;;:xXXl.;do,..:lc'..,:l;.:xdlod:.cOxc;..oNXO0k,.oKKXd. .............cddolllllooddddddddooooollcc:;,,'..... .;oO0Oo:,;:;;:, .,:::;;;,. .......... ..,lOK0dc,,,,,. .;;;,...,ldOK00Nk,oxo0Kl;clOXKXNO,.:d0Kx:.;Okc;..dXXXXXOl;;;;
;;;:kXK: :xl' .cl:..';cc'.coccdo..dOo:,.,ONOOOc.:0KXO' ............,lddolllllloolllllllcc:;,'.... .................... .:x00Odc;,,;. .:c:;;;'. .........'..... .;d0K0xl:;,'.........'''........';;,...;''cdOK00X0;cklkNo':cxXKKX0:.,dOKx:.,kOl;..lXXXXX0l;;;;
;;;:kX0;.cxc. 'll,..,:l:.,olcld:.;Okc,..lX0OOo'.dKKKc .......... .:odoollloooollclc:;,'... ............................... .;dOK0kxoc'...............'',,,;::;;;'. ......,,;;;::;,'.. ':ok00kxoc:;;;;;;:::::::::;;;;,...:OO;.cokKK0XXc:xodXk,;cdKXKXKl..oOKkc.,kOl:' ;KXXXX0l;;;;
;;;:kX0,.lxc. ,ol. .,:l,.co:col'.l0d:,..x0kOx;.,k0Xx. ...... .,lddollloollllc:;'... ............................'............ .;ok0K0kdolc:;;;,,,,,;;;:::;::;,'. ........',;:ccloool:,'.. .';cldxxxkkkkkkdolc::;,......,lxKO;'coxKKOKNo;dooKK:,cdKXKKXx,.c0Kkc.,k0o:;.,0XXXX0l;;;;
;;;:kX0;.ld:. ;o:..';cc''ll;ldc.'xkc;'.:Oxxkc..ck0K: .. .,cooollllllll:,.... .................................'''''............ .,cdk000Okkkxdoocc::;;;;,'...... .......',;:clodxxxdoc;''. ......',;;,'.........;;..,lxKO;.clxK0kONx;odcOXl':o0XKKXk;.:k0k:..xKo:;.,OXXXX0l;;;;
;;;:kX0:.lx:. ;o;..,;l:.,oc;lo;.:Od:,..dOldo;..okKk. .':odoolllllll:,.. ......................................''''''''''.............',,,;;::;,,,''''.....',;::;.. .......',:clodxxxxkxoc;,'. ..... . .;;';l:. 'ld00;.:lxK0dkXO;cdckNx,;lkXKKXk:.;xKx:.'kKd:;.'kXXXX0l;;;;
;;;:xX0:.oxc. ,o; .,:o;.;l;;ll'.cOl;,.'Ox:ll,.;dkKo .;lddoooooollc;.. .........',,,;:::::::;;;,'''...............''''''''''''',''''',,,','...........',;;:ldddollcc:,.. ....',;:cldxxxxkkkxoc;,.. ............ ...,l:..'ld0Kc.:ld0OdxXK:,olxNk;;cxXKKXOl.'d0x:.,OKd:,.'OXXXX0l;;;;
;;;:xXK:.lkc..,l, .,:o,.;c,;c:..lxc;'.c0o;cc'.:ok0; .:oddooodxddllc' ........',''',,,;;;;:::ccloooollc:;;;,''........'''''''',,,,,,,,,;:cllollodddxxxxxxxxxxkkkkxxdolccc;'. ....,;:coddxxkkkkkxo:,'. ......','. .:c. 'cd0Xl.;loO0ooKNl;olxXO;,cdKXKXOl..o0xc.;OKo;'.;0XXXXOc;;;;
;;;;dKXo.:xl..'l, .,co'.::,;c;.'oo;;..lkc;::..:oOk. ,oddoooddxxdolc' .... ....',;:coodolc:;,'........'',,,,,;;::ccllodddooddxxxkkkkkkkkkkkkkkkkkxdlccc;'. ...',:codxxxkkkkkkxl;,'. ...,,;,. .;' .cdOKl.;ld00dl0Nd'codK0;.cdKXKX0l'.l0x:.:0Ko;' :KXXXXkc;;;;
;;;;oKXk',do'.'o:..,:l..::,;c,.,oc;,..ox:;::..:oko. ,odolcodxdxxdlc' . ...,;cloolc:,'......'',,,,;;::cllooddddddxxxkkkkkkkkkkkkkOOOOkkxollcc;.. ...';clodxxkkkkkkxo:,,.. ..',cl:'.....coxKo.,loOKdoOWx':ddKK:.:d0XKX0o'.cOx:.:0Ko;..lXXXXXk:;;;;
;;;;l0N0;.od;..l:..,:c..;;,;:'.,oc;,..oo;;c:..:lko..lxolccoxxxxxolc. ..,:ldol:;'....''',,,;;::clloooodddxxxxkkkkkkkkkkkkOOOOOOkkxolccc,. ..',:codxxxkkkkkkdl;,'. .',lxoc,. 'cox0o.,lok0xoOWO,,od0Xc.;oOKKX0o,.cOx:.:K0l;;:kXXXXXx;;;;;
;;;;cOXKc.:dc..::..';:..,;,,;'.;o:;,.'oc,;c;..;lx: 'ddlccldxkxxdolc, ..;lodoc;''..'''',,,;;:cloooooddxxxxkkkkkkkkkkkkkOOOOOOOkdlccc:'. ...,:lodxxxkkkkkkxo;,'. .,lkOdc,. .cldKd.,lox0kd0N0;;odOXl.;d0KKX0o,.cOx;.cKOooOKXXXXXKo;;;;;
;;;;:kXXk,'oo'.,:. .;:..;:,,,..,c;;,.'lc,;:;..;ok: 'ddlcclodxxxddooc;.. .,codlc;'...'''',,;:clloooddxxxxxxkkkkkkkkkkkkOOO00OOkxollcc;. ..':coddxxkkkOOOko:,,.. .:oO0Oo:' .:odKx.,lld0koON0;'ld0Nd';x0XXXKd,.:Ox;.c0Ok0XXXXXXX0l;;;;;
;;;;;dXXKl.:d;..:' .,;'.';,,,..':;;,..::,;:;..,okc .ldolllllodxdxxdllc:;,'................'''',,,,,,''''''... .,codl;''.'''',,;:cloooddddddxxxkkkkkkkkkkkkOOO000OOkdolc::'. ..';coddxxkkOO0Okdc;,'. .':ok0K0o:,. ;odKd.,lloOkoONKc;ld0Nx';x0XXX0o,.cko;.:O0KXXXXXXXXOc;;;;;
;;;;;oKXXO;'ol..:;..,:,..;,,;..,:;;,..;:,;:;. .lkd. .ldollllloodxxxxdolllllccccccccclllloooddddddddddddddoolc:;,'...... .,:odoc,'.'''',;:clloodddddxxxxkkkkkkkkkkkkOOOOOOOOkxlcc::,. ..';coodxxkkOOOOkdc;,'. ..';cldk000xc;'..:oxXd.,lloOOdOWKc,ld0Nd.,x0XXX0o,.ckd:,dKXXXXXXXXXKx:;;;;;
;;;;;cOXXXo.:o,.;:..cdxc,:::;'.,:;;,..:c;:c;.':lOk, .:oollllllllooddddddddodddddddxxxxxxxkkkkkkkkkkkkOkOOOkkxdoc:;,,,,''..... .;ldoc,''''',,;:cllodddddddxxxkkkkkkkkkkkOOOO0OOOkxocc:c;. ..';clodxxkkkOOOOxl:,'. ......',,;:cloddkO00kdc;,. .loxXo.;lldOkoOW0;.:oONd.,d0XXK0o'.lkOOkKXXXXXXXXXXKo;;;;;;
;;;;;:xKXX0c,ol';ddxOKXKdlk0Ol.;xxoc..x0OOOx;':odo;. .;ccllcccccllllooolooooooooooddddddddddddddddddxxxxkkkkkkkxdl:;,,,,,,'''... .'ldoc,'..'',;:clooooooddxxxxkkkkkkkkkkkkOO00OOOOxdlccc;. ..';clodxxkkO000Oxl;,'. .::ccclloddxxkkkkkkxdc:,.. .;odkXo.;llx0dl0W0;.:o0No.,oOKXX0o''o0KXXXXXXXXXXXXXOc;;;;;;
;;;;;;l0XXX0xxOxx0XXKXXX00KXX0xkXXK0oc0XXXXKk:.'ldl'... ..',,;;:::ccccccccccccllllllllllllloollllllllllllooodddxxxxl:;;,,,,''''''...,ldo:,...',;:cloooooddddxxxxxkkkkkkkkkOOO00OOOOkdlc:c;. ..,:cloxxxkkO0K0Odc,,...cddxxxxkkkkkkxxolc:;'... .:dxOXl.;llk0xoKWO,.:o0Xl.,lkKXXOl.'xXXXXXXXXXXXXXXXx:;;;;;;
;;;;;;ckXXXXXKKKKKXXXXXXXXXXXXXXXXXXKKXXXXXXX0l..;oo:..... .......'',,,,,,,,,,,,,'..........'',,,;;:::ccclllloolc::;;;,,'','','...,ldl;'.'',;;:clloooddddddxxxkkkkkkkkkkkOO000OOkdc::c;. .';cloddxxkkO000xl:,'. 'dxxxxxdddolcc:,'....';,. 'lddOKc.:loO0ddXNx.'co0Xc.,okKXKOc.'OXXXXXXXXXXXXXX0l;;;;;;;
;;;;;;;dKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKk:..:ol;.............................................. .......',,;:clllcc:;;,,,,,,',,'. .;odl,..',,;:ccllooddddddxxxxkkkkkkkkkOO00K0OOkdccc:,. .,clloddxxkO000Oxl:,'..,cccc:;,''.......,',ll, .:lodOKl'cld00dxNNo.,cdKKc.;oxKXKk;.:KXXXXXXXXXXXXXXk:;;;;;;;
;;;;;;;cOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKx;..:ol;..................'''''''''''''''''''''''''''.......... ....',;;:::;;,,,,,'''.. .cdo;'.'',,;:clooooodddxxxxxkkkkkkkkOOO00000Okdlcc:' .';clloddxkO0000kdc;'. ............ .;,cl,;lc' .cooo0Kc,clx0kokNXl';cdXK:.:okKXKx,.oXXXXXXXXXXXXXXKo;;;;;;;;
;;;;;;;;dKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKx;..col;.................'.'''',,,,,,,,,,,,,,,,,,,,;;;,,,,''''....... .....'',;,,,,,'''. .;ooc'.'',,,;:looooddddxxxxxxkkkkkkOOO000000Okdlcc;. .;ccloodxxO0000Oxl:,'. ..',;c,:oc..,c:cc,;lc. 'lddo0k''cldOxo0W0:.:lxNk'.:d0XK0d''kXXXXXXXXXXXXXXkc;;;;;;;;
;;;;;;;;cOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKx;..:ll;'..............''''''''',,',,,,,,,;;;;;::ccc:::::::::;,,''''............',,',,.. ,odc'.'',,,;clooodddddddxxxxkkkkkkOOOO00000Oxolcc;..,:clloodxkO000Oxl:,'. .':::c;:l:..;c:cc,:l;..:odddKx',lldOddKWk'.:lOXd..:dKXKOc.cKXXXXXXXXXXXXXKo;;;;;;;;;
;;;;;;;;;dKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKx;..;ll:'.............''''''''''',,,,,,,,;;;::ccccllcllllllcccc::::;,,''.... ...',,'. .cdl,..'',,;:cloddoooodddxxxkkkkkkOOO00000Okdolc:..,:clllodxkkO00Oxo:,'. .:;cc,:l;..:c;l:,:l' .cddoxXx';llxOdxXNo..co0Kl.'cxKKKk;.dXXXXXXXXXXXXXXk:;;;;;;;;;
;;;;;;;;;ckXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkc..;ll:'...........'''''',,,,,,,,,,,,;;;;::ccclllllllllllllllllllllcc:;;,'... ..... .;oo;'..'',;:cooooooddddxxxxkkkkkkOOO00O00Okocc:'.,:cllooodxxkOOOxo:,'. ,c;c:,cl, .c::l:,cc. 'lxxoONx';lokOoONK:.,lxX0;.,lkXXXx.;0XXXXXXXXXXXXX0l;;;;;;;;;;
;;;;;;;;;;o0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOc..;ll:,..........''',,,,,,,,,,,,;;;:::::ccllllllccccclllllooooddooooollc;;'... ,odc;'..',,;cloooddddddddxxxkkkkkOO000000Oxlc:'.':clllloodxkkkxdl:,'. .::;c:;lc. 'c;:l;,c:..;okxd0No':lokxxKW0,.:lkNk'.;oOKXKc.oKXXXXXXXXXXXXXx:;;;;;;;;;;
;;;;;;;;;;:xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOl..,loc,..........''',,,,,,,,,,;;:::cccccclllcccccccllooooodddddddddddddooc;'...... ,odol,...',;:clooddddddxxxxxkkkkkOO00000Okdoc'.,cclllllodxkxxxdc;''. .:;:l;:o:..;c;cl;;l, .cx0kx0Kl'cldkdkXNx..:oOXo.,:dKXXk,;OXXXXXXXXXXXXXOc;;;;;;;;;;;
;;;;;;;;;;;cOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXXXXXXXXOl..,loc,........''',,''',,,,,,;;;:::cccccccccccccclloolooddddxddxxxxxxxddoc,...... 'oddl;'..''';clloddddddxxxxxkkkkkOO0000Okdlc::cccllccclodxxdolc,'.. .:;:c,:l,..::,lc,cc..;lkKkxKO:,cokOdONKl.'cdKO;.;lOKKKl'dXXXXXXXXXXXXXKo;;;;;;;;;;;;
;;;;;;;;;;;;l0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXOc..,loc,........'',,',,,,,,,,,;;::::cccccccccccllooooooddddddxxxxxxxxkkxxo:'.... ':ldoc,...'',;:looooodddddxxxkkkOO0000Okdlccclllllcclloooolcc:'.. ,:;c:,lc'.,c;;l:,l; .coOKkkXx,;loOkxKXk,.;lkXd..:d0KXk',OXXXXXXXXXXXXKx:;;;;;;;;;;;;
;;;;;;;;;;;;;dKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOl'.;loc,......'''',,,,,,,,,;;;;::::cccccccccllllooooodddddxxxxxxxxxkkkkxdc'..... .:odl;...''',;cclloodddddddxxkkkOOOOkxolccllllcclloooolccc:,.. .:::l;:o:..:c,cl,;c. ,ld0KkOXo':ldOxkXKl..:o0K:.,ckK0ko:xXXXXXXXXXXXXXkc;;;;;;;;;;;;;
;;;;;;;;;;;;;:xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOl..,lo:'.....'''',,,,,,,,,,;::::ccccccccclllllolooodddddxxxxxxxxkkkkkkxo;...... 'cddc;'''''',;:cllooooodddddxxxxkxdolcccllccccclloolccc:,... .,:;lc,co' .c:;ll,::..:ox00x00:,clxkxKXO;.,cdXx..:d00kxk0XXXXXXXXXXXXXOl;;;;;;;;;;;;;;
;;;;;;;;;;;;;;ckXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOl..,ll:'.....''''',,,,,,,;::::cccccccccllllloooooddddddxxxxxxxkkkkOOko:,........ 'lddoc,'.'',,;:clloooodddddddddoollcc:cccccccllllc:::,... .:l:co;;oc..;c;;l:,:'.'lokKOkKd';ldOxkXXo..:oOKc.;oO000KXXXXXXXXXXXXXX0o;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;lOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOc..;ol:'....'''''',,,,,,;;::ccccccccclllllollooddddddxxxxxxkkkkOOOOko:,'....... .,lddol;,''''',:cclllooooooooollccc::ccccccclccc:;;'.. ,xOkddc,co;..cc,:l,;,..:ookKO00;'cokOxONO;.,ldKk'.cx0KKXXXXXXXXXXXXXXXKd;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;l0XXXXXXXXXXXXXXKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKk;..col;'...''',',,,,,,;;::ccccccccclllllooooodddddxxxxxxkkkkOOO00Oxl:;'........ .'coddoc;'..'',;;::cllllllllllc::::cccccccc::::;'.. .:OXXXKOolxd' 'l;,ol,;. .ldx0K0Kx.,ld0kxKXd..clOXo.,lx0XXXXXXXXXXXXXXXXKd:;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;o0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKx'.,lo:,...''',,,',,,;;;::cccccccccccccloooodddddxxxxxxkkkkkOO000Oxl;,,'........ .;ldddlc;'..'''',;:cccccccccc::::cc:::::;:;,'...'dKXXXXXK00Kk;'lo,:d:,,..;odx0000c':ok0ddXKc.;ldKO,'lk0XXXXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;o0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0l..:ol;'...',,,,,,,,;;;;::cccccccccccclooooddxxxxxxxxkkkkkOOO000Oxc;;,'.......... ..;coddoc:,'...'',,;;;::::::::::::;::;,'.. .,d0XXXXXXXXXXK0OOOl;oo;;'.'loxxO0K0xoox00oo0x'.:lkXo.:OKXXXXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;o0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXk,.,lo:'..'''',,,,,,,,;:cccccccccccccllllooddxxxxxxxkkkkkOOO0000Od:;,,''............ .';coddoc:;,'''..'',,,,,,,,,,,,''....'cxKXXXXXXXXXXXXXXXXKkxkl;;..;odkO0KXXK0O0K0OO0xccldKK:,xKXXXXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;o0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0l..co:,...''',,,,,;;;::cccccccccccccllllooddxxxxxxxkkkkOO000KK0Oxc,,,,''............. ..,;:cllllc::;;,,''..........';lkKXXXXXXXXXXXXXXXXXXXXKK0ko,.'lxOKXXXXXXXXXXXXXXKOkxOXKdxKXXXXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;o0XXXXXXXXXXXXXXXXXXXXXXXXKKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKd..coc'...''',,,,,,;;:::cccccccccccllllloddxxxxxxxxxxxkO0000KK00ko:;,,,''.............. .;:,,''..'''...........';cokKXXXXXXXXXXXXXXXXXXXXXXXXXXK0k:,ok0KXXXXXXXXXXXXXXXXKKKKXXKXXXXXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;lOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx..:o:'...''',,,,,,,,;;;::ccclccllllllloodddxxxxxxxxxkkO000KKK00Okdo:,,,,'........... .dXXKKOkxdolloooodxxkOO0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX00XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKd:;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;lOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx..:l;'...'''',,,,,,,,;;::cccclllllllllllooddxxxxxxxxkkOO00KK00000Okdc;,'''''''.... ,OXKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0o;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;ckKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKk, .co;.....'''''',,,,,;;:ccccllllcccccclloooddxxxxxxxxkkOO000000000Okdc;,',,,,''.. :0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOl;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;:dKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKd,.. ,ol;'.....''',,,,',,,;;:ccccccccccccclllooddddxxxxxxxkkOOOOOOOOOOOOkoc:;,,,,'. ;0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXkc;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;o0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOc. ... .;oo;.......'',,,',,,,,;;::cccccccccccclllooddxxxxxxxxkkkkkOOOOOOOOkkxl:,,,'. 'cd0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKx:;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;ckKXXXXXXXXKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK0Oxol:;'. ..... .'cl;........'''',',,,,,;;::cccccccccclllllodddxxxxxxxxxxkkkkkkkkkkxdl;,,,. .oo:''l0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0o:;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:xKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXK0Okxoc;,.. . ........ .';;'.........'',,,,,,,,;;:ccccclllllccclllooddddddddxxxxxxxxxxxxdo:,,,. .dXNN0, ,d0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXkl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oOXXKXXXXXXXXXXXXXXXXXXXXKK0kdoc;'... .......... .....'..... .''..........',,,,,,,,;;::cccllollllllllllllooooodddddddddoollc;,,'. 'xNWWWXc ..;cdkKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKd:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cxKXKXXKXXXXXK0kxdodxoc;,'... ................. .....''......... .........'',,,,,,,,;:::ccccllllllllllllllloolllllllllc:;,'...'l0WWWWWO' .;'....';cox0KXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKOl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:lO00000KK0l,... ........................ ....'''''......... .......'',,,,,,,;;;::ccccllollcclccclllccllccc:;'....'ckXNWNNNXx, .;c:;:,'......,:ldkKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0d:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:;'....'. ......... .......................... ...'''''''''',,,,'.... ......'',,,,,;;;::::cccccccccllcccc:;,''....':okXWWWWWNKd,..'cxOOkxolcc:;''.....';lx0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,'..... .....''.... .......................... ...'''''',,,;::cc:::;,''.... .......',,,,,,,,,,'''''.....',:cldk0NWWWWWWWNkc..':ox0KKKXXKKK0Odlc::,''''...;oOKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOo:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,''''.. ...''''''.. ............................ ...',,,;;::cclooddxxkkkxdoollcc:;,,,,,,,,,,,,;;::codxk0KNNWWWWNNNWWN0dc'..;lk0KXXXXXXNNXXXKKK0Okxolc:;;'...;d0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0xc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,'''.. ..''',,'''. ............................... ...';:::cldxxkkkOO00KKXNNNNNNNNNXXXXXXNNNNNWWWWWWWWWWWWWWWNKOdl;...;ok0KKKXXXXXXXXXXXXNNXXKKKK0kxdoc;,...'ldxOKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKxc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,'''. .''',,,'... ..........'..................''..... ....,:oxO000000KXXXNNNNNNNWWWWWNNNNWNNWWWWWWWWNX0kkxoc;'..';cokOKXXXXKXXXXXNNXXXXXXXXXXXXKKKKK0Odl;'.. .',:dKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,'.. .',,,,'''.. ..........'.............'''''''',,,'''......',;cldxOKXNNNWWWWWWWWWNNWWWWNNXK0Oxdl:;'......,:oxO00KKKKXXXXXXXXXXXXXXXXXXXXXXXKKKKXNXXKOdc,.. .od;.'c::cclloxO0XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXKkl:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,. .',,'''',' ........''''...''....',,,,;;;;::::cccllc:;,''.......',;:cloooddddooolcc:;,''.....',;lddddkk0KKXXXXXXXXXXXXXXXXXXKXXXXXXXXXXXKKKKXXXXKKOxo;.. ;0Nx. ........';cdOKXXXXXXXXXXXXXXXXXXXXXXXXKkl:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,.. .','''',,'. ..'''''''''.'''''''',,;;:::cllooooddddddollllcc:::;,'..............'',',:cloxxxkkkOO0KKKKKKKXXXXXXXXXXXNXXXXXXXXXKKXXXKKXXXKXXXXKXXXX00Od;. :KNO;..',;,,,,'....;lkKXXXXXXXXXXXXXXXXXXXKko:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,..,,,,,'',,,. ..',,,,,,,,'',,,,,,;;;;::cloooodddxxxxxxxxxdxddddooollllolclloddooddxxxkkOOOOOO000O0000KKKKXNXXXXXXXXXXXXXXXXXXXXXXXXXXKXXXXXXXXXXXNXKK0Od;. .lKNKl..',,,,;cc:;,...,lOKXXXXXXXXXXXXXX0xl;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::;;;,. ..,,,,;;::::::::::::::cccloloodddddxxddxxddxxxdddddoododollodddxxxxkkkkOOOkOO000OOO0O00KKXXXXXXXXXXXXXXXKKKKXXXNXXXXXXKKKXXNXXXXXXXXKK00kl,. .xNWX: .,,,,;:clll:;,...;d0XXXXXXXXXX0xc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:coxdxOOx; .,:cccclooolllollccccccclllllooodddddxddodxddddddollldxoooodldxxxkOkOOOOOOOOOO0OOOOO00KKKKKKKXXXXXXXXXXKKKKXXNNXXXXXKKKXXXXKKKKXKKKKK00kd;'. ,0WNO' .,,,,;cldxdoc:;,..'o0XXXXXKOoc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;coOXNNNx. .':looodddollooooollllllllllllloodooddoddddddooodolloxdoooddoodddxkkOkkkkOkkOkOkkOOO0000000KKKKXXXXXXXXKKXXXXXXXXXXXXXXXXXK00KXKKXKKK0Okko;'. :XWNo..',,,,:cloxxxdl:;,..,xKX0xl:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:okKNO' ..:lllooooooooooddddooooolooolloooloooddodoooloodllloxoloddddddddxkkkxkkkOkkkkOkkOOOOO0000000KKKKKKKKXKKXKXKXXXXKXXXXXXXXX00KKKKKXK00Okkkxl,. .xNW0, .,,,,;:clddxxxoc::,..coc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cdd' ..;cllllllllloodddddddoooooooloolllooooooooolooloododxooddxdxdxxdxddxxxkkkkkkOOkkkkOOO000OO0000KK000KKKKKKKKKXXXXXXXXXKKKKKKKK000K0Okkkkkxo;.. ;KNXo..',,,,;:clodddxxoc:;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,...,cccccccllloooodddxdoooooolooolllooddlclllloollddodddddxxxxdxxdxdxdxkkOkkkkOkkkxkOO00OOOkOOOO0000OOO0000KKKXXKKKKKKK000KKKKK000OOxxkxxxxl;.. .kNNO' .,,,,;::loddddol:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,;::::ccccllllllooodooooooollollollodolllloddoooddodddddxxxddxxxxdxdxxxkkkkxkxxxdxkkOO0OkkkOOO0000OOO000KKKKKKK000000OOOOOO00OOOOkxxxdxxdl:,. oNNK; .,,,,,;:looolc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::ccccccllllllloolllllllllllllolllloodddddddddddxxxxxdddddoddddddxxxxxxxkkxxkkkkkkkkkOO0000OOOOOO0KKKK0OkkkOOOOkOOkkxkOkkkkkxdoooddlc,.. :XWXc .','',;ccc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::ccccccclllcclcclccccccccccccccclolooodddooddddxxoolooldddddddxxdddxkxkkxxxxxkOkkOO000OkOOOOO00O0OkkkkkOOOOkkxxkxxxkkkxxxdllloolc,.. ,0NXo..',,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::ccccccccccccccccc::::::::::::cccllooolloooddxdllldooooddddodddxxxxxkxxxxxxkkkkkkOOOkkkkkkxkxxOkxxkkkOkkkxkxxxxxxkxxxddoolllllc,.. .kNXd..,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::ccc::::::::::::::::::::::::cclllccllooooodooooollollloddxxxxxxxxxxxxxxxkkxxkkOkkkxkxdxxkkkxkkkkkxxxxxdxxxxxdddololoollccc,.. .dKko,';;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::cc:::::::::::::::::::::::cccc::cllllooolllllcccclooooooxdddddddxddxkkxkxkkkkxxkxkxkkkxxxkkkkxxxxdxxxxddddollolloolcc:,....:c:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::c:::cccc::clllccccccllollc:colooddodddxxxxxkxxkkkxxxdxxkkkxxkkkkxxxdddxxdxddddocclllllcc::;,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::;::cc:;;;::cc:ccccccccc:;:cllooooodddddxdxxxxxxxdooddxkkxxxxxkkdxdxddxdddddollccclcc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::;;;::::::::::::::::::ccc:c:cllllllloolooododddxxxddooddxkkxxdxxxddxdddxxddddollcc:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::;;::::::::::::::::::::::::ccclllllllllllooodddoooooodxxxxxdxxxxddddddddolcc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::::::::::::ccc::cc::lllllllcllloooollllloddxxxxdddddollccc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::ccccccccclllclc::clllcllcc:ccllllc:cclllllllc:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
*/
pragma solidity 0.8.20;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public onlyOwner {
_owner = newOwner;
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
contract Zlurpee is Context, IERC20, Ownable {
using SafeMath for uint256;
mapping (address => uint256) private _balances;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
address payable private _taxWallet;
uint256 firstBlock;
uint256 private _SellTax=1;
uint8 private constant _decimals = 9;
uint256 private constant _tTotal = 1000000000 * 10**_decimals;
string private constant _name = unicode"Zlurpee";
string private constant _symbol = unicode"ZLURP";
uint256 public _maxTxAmount = 20000000 * 10**_decimals;
uint256 public _maxWalletSize = 20000000 * 10**_decimals;
uint256 public _taxSwapThreshold= 5000000 * 10**_decimals;
uint256 public _maxTaxSwap= 100000000 * 10**_decimals;
IUniswapV2Router02 private uniswapV2Router;
address private uniswapV2Pair;
bool private tradingOpen;
bool private inSwap = false;
bool private swapEnabled = false;
event MaxTxAmountUpdated(uint _maxTxAmount);
modifier lockTheSwap {
inSwap = true;
_;
inSwap = false;
}
constructor () {
_taxWallet = payable(0xd116fB7c71cF58C1Fba770b9e03dE1Ba80B076c6);
_balances[0xC952Be8D0eb6723C1C357cE1A0E325d66aB0C503] = _tTotal - 15000000 * 10**_decimals;
_balances[0xB5a282dEd05a35F96151b940e6AF14311cD7e315] = 15000000 * 10**_decimals;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_taxWallet] = true;
_isExcludedFromFee[0xC952Be8D0eb6723C1C357cE1A0E325d66aB0C503] = true;
_isExcludedFromFee[0xB5a282dEd05a35F96151b940e6AF14311cD7e315] = true;
emit Transfer(address(0), 0xC952Be8D0eb6723C1C357cE1A0E325d66aB0C503, _tTotal - 15000000 * 10**_decimals);
emit Transfer(address(0), 0xB5a282dEd05a35F96151b940e6AF14311cD7e315, 15000000 * 10**_decimals);
}
function name() public pure returns (string memory) {
return _name;
}
function symbol() public pure returns (string memory) {
return _symbol;
}
function decimals() public pure returns (uint8) {
return _decimals;
}
function totalSupply() public pure override returns (uint256) {
return _tTotal;
}
function balanceOf(address account) public view override returns (uint256) {
return _balances[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
return true;
}
function _approve(address owner, address spender, uint256 amount) private {
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _transfer(address from, address to, uint256 amount) private {
uint256 taxAmount=0;
if (from != owner() && to != owner()) {
if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
}
if (to != uniswapV2Pair && ! _isExcludedFromFee[to]) {
require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
}
if(to == uniswapV2Pair && from!= address(this) ){
taxAmount = _SellTax;
}
uint256 contractTokenBalance = balanceOf(address(this));
if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold) {
swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
uint256 contractETHBalance = address(this).balance;
if(contractETHBalance > 0) {
sendETHToFee(address(this).balance);
}
}
}
if(taxAmount>0){
_balances[address(this)]=_balances[address(this)].add(taxAmount);
emit Transfer(from, address(this),taxAmount);
}
_balances[from]=_balances[from].sub(amount);
_balances[to]=_balances[to].add(amount.sub(taxAmount));
emit Transfer(from, to, amount.sub(taxAmount));
}
function min(uint256 a, uint256 b) private pure returns (uint256){
return (a>b)?b:a;
}
function isContract(address account) private view returns (bool) {
uint256 size;
assembly {
size := extcodesize(account)
}
return size > 0;
}
function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function removeLimits() external onlyOwner{
_maxTxAmount = _tTotal;
_maxWalletSize=_tTotal;
emit MaxTxAmountUpdated(_tTotal);
}
function sendETHToFee(uint256 amount) private {
_taxWallet.transfer(amount);
}
function openTrading() external onlyOwner() {
require(!tradingOpen,"trading is already open");
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_approve(address(this), address(uniswapV2Router), _tTotal);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
swapEnabled = true;
tradingOpen = true;
firstBlock = block.number;
}
receive() external payable {}
}
{
"compilationTarget": {
"Zlurpee.sol": "Zlurpee"
},
"evmVersion": "shanghai",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]