This was an attempt to rewrite the python version of title_creator in Go. The idea was to improve the speed. And yes, it is much faster but with caveats, see State.
,,,_ _gMMp, _qqq, ,qqq
MMMMMM %MMMMMk MMMMM @MMMMB
@MMMM" MMMM" MMMMW @MMMM
@MMMM ]MMMM MMMMB @MMMM
MMMMM 1MMMM MMMMB @MMMM
MMMMH 1MMMM _gMMMMp, MMMMB @MMMM ,pMMMMpq_
@MMMH dMMMM pMMMMMMMMp MMMMB 1MMMM gMMMMMMMMMp
@MMMM,qqpMMMMMp MMMMP %MMM MMMMB 1MMMM gMMM@ @MMMp
@MMMMMMMMMMMMMMMM gMMMK @MMM MMMMB 1MMMM _MMMM MMMM
"MMMMMMMWWPMMMM" MMMM gMMM" MMMMB 1MMMM gMMMH MMMM
@MMMM MMMM MMMM_gMMMH` MMMMB 1MMMM MMMMB MMMM
@MMMM MMMM MMMMMMMH" MMMMB jMMMM @MMMH qMMMM
@MMMM MMMM MMMMW"` ,pp_ MMMMB ]MMMM 'MMMM @MMMW
@MMMM @MMMM MMMMk ,MMMM MMMMB ]MMMM @MMMp gMMMM
@MMMM MMMMM@ MMMMMMMMMMH` MMMMH gMMMM, @MMMMMMMMM`
MMMMM `"" "MMMMMWP" MMMMM @MMMM# "MMMMMM"
,,,,,,,,, =, ,,,,,,,, ,,===[] ,===[[ ,=
''[]][ ,]] ][]' [[]} {[[[ []]
[]]] ]]]] [[ [][[ ][[] [[[
[]] [}][], ]/ [[[[ ]][] []]
[]][ {] '[[] [] ,,,, , ,, {][[ ,,, ]]]] {]]
][[ =[ \[]] ,]' ,=='''''=]]= ===[[[ ,=][]] {[[ ,=='''=[][[[] []
[[[, ,]' []]\ [} ,][' '[]], [][=/'''[[ {]] ,[]' '{[]] [[
']]] [/ [[], ][ ,][[ ']]] [[[ {[] ,][' ][[] []
][[, [} ']][ [/ [[] ][[] ][[ {[] ]]] ][[] []
'[[] {] {[[] {[ ][[[ ][]} [[] {[][ []] ]]]] ='
][[=[ [[],]/ [][] []] ]][ []][ [[][ []]]
]][]' '[[[[ [][= ,[]' [][ [[[} '[]]= ={]]] ,==
][} \]]' \[[], ,=]' ,[[[, [[[] =]][]====' ][][, [][
title_creator is a single use script that will print a title in a window or to file
βββββββ β β β β β βββ ββ ββ β β ββ β β
ββ βββ β
β ββ β
ββ ββ ββ β
ββ βββ β
β ββ ββ βββ β
β ββ
ββ ββ ββ β
β βββ β
βββ β
β
ββ β
β ββ β ββ β ββ βββ β
β β
β ββ ββ β
β βββ
β β β βββ β
β ββ β
ββ βββ β ββ β
β β
ββ βββ
β βββ
ββ β β β
ββ
β
βββ β β ββ ββ βββ β ββ ββ
β ββ ββ βββ ββ β ββ ββ β ββ β β ββββ ββ ββ β βββ ββ ββ ββ ββ β ββ ββ ββ ββ β ββββ ββ β β ββ β βββ ββ ββ ββ β ββ β β ββ ββ ββββ ββ ββ β β ββ ββ ββ ββ βββββββ ββ β ββ β ββ ββ ββββ
ββ ββ ββ βββββ βββββ ββββββ ββ ββββββββββ ββ ββ ββ βββββ ββ ββββββ ββ β ββ βββββ βββββββββββ ββ ββ βββ βββββ ββ βββ β ββ βββββ ββ ββββββββββ ββ β βββ ββ βββ ββ ββ ββ ββ β ββββββ ββ ββ ββββ
βββ βββ βββ βββ ββββ ββ β βββ ββ βββββ βββ βββ ββ ββ βββ ββββ ββ βββ ββ ββββ βββ βββ βββ β ββ βββ β βββ ββ βββ βββ ββ β βββββ ββ βββ βββ ββ β ββ βββ ββββ βββ βββββ
βββββββββββ βββ βββ βββ β β ββ ββ
βββ ββ βββ βββ β
βββββ β βββ
ββ
βββββ ββ
ββββ β
β
β
β
ββ
β ββ
ββββββββ
β βββββ
ββββ
βββ
β β
β
β
β
ββ
ββββ βββ
β
β
ββ
β
β βββββ
ββββ
β βββββ ββββ
βββ
β βββ ββββ
βββ
βββ ββ
βββ
ββββββ β
βββ
ββ β
βββ
β βββ
ββ
ββ
β ββ
β ββββββ β
β
β
ββββ
βββ ββ
βββ
ββββββββ
β
β βββββ ββ
βββ βββββ
βββ ββ βββββββββ ββ ββββββ βββββ βββ β βββββ βββ βββ ββ βββββ ββ ββ ββββββββββββ ββ ββββββββββββ ββ βββ βββββ ββββββββββββββ βββ βββ ββ ββββββ ββ βββββ βββββββ βββ βββ ββββββββββ ββββββββββββββββββ βββ βββββ ββββββ ββ
βββ ββ ββββββββ βββ
ββββββ ββββββββ ββββββ βββ ββ ββββββββ βββββ βββββ βββ ββ βββββββββββ ββ ββ ββ ββββββββ βββββ βββ βββ βββ ββββββββ ββ βββββ ββββ βββββ βββ βββββ βββ βββββββββββββ ββ ββ βββββ ββ βββββ
βββ ββ βββββββ
β
β βββββββββ
ββββββββββββββββββ βββ βββββββββ βββ βββ βββ
ββββββ βββ ββ ββββ ββββ
ββββββββ ββββββ ββββ ββββ
βββββ βββ βββ ββ βββ
β
ββ ββ βββ
ββββββ
β
β
βββββ ββββββ ββ ββββββ βββββββ ββββββ ββββββ ββββββββββββ
βββββ βββ β β ββ ββ ββ ββ β βββ β ββ β ββ β β β β ββ β
ββββ ββββββββ β
ββ ββ βββ β
ββββ ββ βββββ
ββ ββ ββ β
βββ ββ ββββ ββββββββββββββββ βββ β ββββββββββ ββββββ βββββ ββ ββββ ββββββββ βββββ
βββββββββ ββββ ββ βββββββββ ββββ
ββ βββββββ ββββββ βββββ βββββ ββ
βββ ββββββ ββ ββ βββββββββββββββ β ββ ββ ββββββββββββββ ββ βββ
βββββ ββ ββββ ββ βββ ββββ
ββββββββββββ βββββ
β β βββ βββ β
β
ββ ββββββ
β
β ββββ βββ
ββββββ
βββββ
ββ βββ ββββ βββ βββ
ββββββββββ βββ
β
βββ
ββ ββββ ββ βββ
β
ββββ
ββ βββββββ
β
βββ
β
βββββββββ ββ βββ
ββββββββββββββββββββ βββ
βββββββββββ
ββ β βββββ βββ ββ β βββ β β β β β ββ βββ β β β βββ βββ ββ β βββ β β β β β βββ ββββ βββββ β ββ ββ ββ β ββ β β βββ ββ βββ
β
β
βββ
βββ ββ βββ βββ βββ ββ ββ ββ ββ ββ ββ
βββ ββββ βββ ββββ ββ ββ ββ βββ ββ ββ ββ ββββ ββ ββ ββ ββ ββ βββββββ ββββ ββββ βββββ βββ β ββ ββββ ββββ ββββββββ ββββ βββ ββββ ββββ β ββ βββββ βββ βββ β ββ β ββββ ββββββββββ ββββ
ββ ββββββββββ βββββββββ ββββββββββββββ βββββββββ ββββ βββββ ββββββββββββββββββββββββββββ βββββ βββββββββββββββ ββββββββββββββ ββββββββ ββββ βββββ βββββββββββββββ βββββββββββββ βββββββββββββββββ
βββ βββββββββββ ββββββββββ
ββββ βββββββββ ββ βββ
β
βββββββ βββββ
ββ ββ ββ βββββ
β
βββββββ
ββββββ βββββ ββββ βββββ
ββ ββ ββ βββββββ
β βββββββββββββ ββββ βββ
β
ββββ ββββββ βββ βββ ββ ββ βββ
ββββββ
β
βββββββ
β β β βββ βββββ ββ ββ βββ β ββ ββ βββ β ββ βββ ββ ββ ββ βββββββ βββ ββββ βββ β βββ β ββ ββ β ββ ββ ββββββββββ ββ ββββ β βββ β β ββ ββ ββββ ββ β
β
βββ
ββ β βββ βββ ββ βββ βββ β
ββββ β
β β ββ β β ββ ββ ββ β ββ
β βββ ββββββββ ββββ βββββ βββ βββ βββ ββββ ββββββ ββββ ββββ βββββββ ββ βββ βββ βββββββββ βββββ ββββ ββββββ ββββ βββ ββ ββββ βββββ ββββ βββββ ββββ ββ ββββ βββββββββ ββ βββββ βββββ ββββ βββ βββ ββββββββ βββββ ββββ βββββ
βββ βββββββββββββ βββ ββ βββ βββ ββββββ ββ βββββ βββ βββ βββ βββββ βββ βββ βββ ββββββββββ ββββββββββββββββ βββ ββ ββ βββ ββββββββ βββββ βββ ββββββ ββββββ ββ ββββββ βββββ βββ ββ βββ ββ ββββββββ βββ ββ βββ β βββββββ ββ βββ βββ ββββββ ββ
βββ βββ βββββββββ ββ ββ βββ βββ ββββββ βββββ βββ βββ βββ ββββ ββ βββ βββ βββ ββ βββ βββ ββββββββββββ βββ ββ βββ βββ
β ββββββ βββ βββ ββ ββββββββββ ββ ββββββ βββ βββ
β ββ ββββββ βββ βββ ββββββββ βββ βββ ββ ββ ββ βββββββββ
β ββ β βββ β ββ ββ β
β β ββββ ββ βββ β ββ βββ βββ
β ββββββββ β β βββ ββ ββββββ βββββ βββ βββ β ββ β βββββββ ββ βββ β
ββ βββ β
β β βββ
β ββ βββ β
ββ ββ ββ β
β β βββ βββ
β βββ βββ βββ β
β β βββββββ β ββββ βββ β β ββ βββ β
ββ βββ ββ ββββ βββ ββ β ββ β ββ βββ
β ββ ββββ
β β βββββ
β
ββ ββ ββ βββ ββ β ββ ββ
βββββββββββ βββ βββ βββββ βββ βββ ββ
β βββ βββ βββ ββ
βββ ββββ
βββ
βββ βββ ββ
βββ
ββ βββ βββ βββ ββ
βββββββ βββ βββββ ββββββ β ββ
βββ ββββ ββ βββ ββββββ
ββ
βββ βββββββ β
ββ ββ
βββββββ ββββββ ββ ββ βββ βββ ββββ
ββ βββββββββββββ ββ
ββ ββ
βββ βββ βββ
ββββββββ ββ ββ βββββββ ββββ
β ββββββ ββ βββ βββββββ
βββ β
βββ
ββ β
ββββ
β ββ
βββ
β
ββ βββ βββββββββββ βββ βββ βββ βββ ββββββ βββββββ βββ βββ βββ βββββ βββ ββ βββ βββ βββ βββ βββ βββββββββββββ βββ βββ ββββββ ββββββββββββββββ βββ βββ βββ βββββββ βββ ββββββ β
ββ ββ βββ βββ βββ ββββββββ βββββββββββββ βββ βββ βββ ββ βββ ββ βββ ββ
ββ βββ ββββββββββ βββ βββ βββ βββ ββββββ ββββββββ βββ βββ βββ βββββ βββ ββ βββ βββ βββ ββ βββ ββββββββββββββ βββ βββ βββ βββββ βββββββ βββ βββ βββ βββ βββββββ βββ βββββββ ββββ βββββ βββ βββ βββ βββ βββ ββββ ββββ βββ ββ βββ βββ βββ ββ ββββββ
ββ βββ βββ βββββ β βββββββ βββββββ βββ ββββ βββββ βββ βββ ββββββ β β β βββ βββ ββββββ β ββ βββ β β ββββ βββ βββ β ββ βββββββ ββββββ ββ β βββββ ββββ β ββββ ββββ βββ βββββ ββ ββ β βββ β βββββββ β ββ βββ ββββ ββ βββ ββββ ββ βββ ββ β βββ ββ βββββββ βββ βββ ββββββ
βββ ββββ βββ ββ ββββββ
ββββ
ββββ ββ
β βββ βββ β ββ ββ βββ βββ ββ ββ
βββββ βββββ ββ ββββ β βββββ ββ βββ ββ βββββββ ββ ββ βββββ β βββββ β ββββ βββ ββββ βββ ββ ββ βββ β ββ ββββββββ βββ βββ βββ βββββββ ββ ββββ ββ ββ βββββ β ββββ β ββββ βββ ββββ
βββ βββββ ββββ βββββββ βββββββββββββββ β βββββββββββββ βββββββββββββββββββββββββββββββ ββββββββββββββββββββ β ββββββββββββββ ββββββββ βββββββββββ ββββββββββββββββββββ ββββββββ βββββββββββββββ
βββ ββββββββ
ββ ββ ββββ ββββββββββββββ ββ ββ ββββββ ββββββββββββββββββββββββββββ ββ ββββββββββ βββββββ ββ βββ ββββββ ββββββββ βββ ββββ ββ βββββ ββββββββββββ
ββββββββ ββ βββββββββ ββ
βββ ββ ββ βββ
β ββββββββ
βββββββββββββββ ββ ββββββββββ βββββββ ββ ββββββββββ βββ
ββββ
ββ βββββ ββββ βββββββ ββ βββ βββββββ ββββββββββββ
ββ ββ βββββββ ββββ βββ βββ βββ ββ βββ
ββββββββββββ
ββ ββ ββ βββ βββ β ββ β β ββ ββ β ββ βββ ββ ββ ββββββ ββ βββ ββ ββ ββ β ββ β ββ ββββ β βββ βββ ββββ β ββ ββ ββ ββ βββ ββ ββ
ββ
ββ β
β
β
βββ β ββ βββ ββ β ββ ββ ββ β
β β β β β β β β β β ββ β ββ β β β β β βββ β β β β β ββ β β ββ β β β βββ β β β β βββ β β
ββ βββββ β
ββ ββββββ ββββ βββ βββ βββββ βββββββ βββββ ββ ββ ββ ββββββββ ββββ ββββββ
βββ ββββ ββ ββββββββββ βββ βββββββββ β ββββββββββββββ ββββββββββββββ ββ β ββββββββ ββ
βββ ββββ ββββ
ββ βββ β βββ βββββ βββββ ββ βββ ββββ ββββ βββββββ ββ βββββ ββ βββββ β ββββββββ βββ ββ ββ βββββββ ββ βββββ ββ βββ ββββββ
ββββ
β β βββ ββ ββ ββ ββββ βββββββ ββ ββ ββ βββββ βββββ β
βββ β ββ βββ ββββ ββ ββ ββ βββ β β ββ βββ ββ ββ ββ βββββ β ββ ββ ββββ βββ ββ ββ βββ ββ ββ β ββ β ββ βββ ββ ββββ βββββ ββ βββ β βββ ββββββ β ββ ββ ββ βββ ββ β
β
βββ β
ββ βββ ββ ββββ βββββ
β
β β β
β β β
ββ ββ
ββ β
βββ β
β ββ ββ ββ ββ ββ
β ββ β ββββ βββ ββββ ββ β β βββ ββ ββ ββββ βββ ββ ββ ββ ββ β βββββ ββ ββββ βββ ββββ βββ ββ ββ ββ ββββ ββββ ββββ βββ ββ βββ βββββββ β βββ ββββ βββ ββ β β ββββ βββββ βββ βββ
ββ βββββββββββ ββ ββ ββ β ββ ββ ββ ββββ ββββββ ββ ββββ ββ ββ ββ βββββββββ βββββ ββββββββ ββ βββ ββ ββ βββββββ ββββ ββββ βββββ βββββ ββ βββββ βββββ βββββ βββββ ββββ ββ ββ ββ ββ ββ βββββ ββ ββ βββββββββ β
βββ ββ ββ ββββ ββ ββ ββ ββ ββ ββ ββββ ββ ββ ββ ββββ ββ ββ ββ ββ ββ ββ ββ ββββββ ββ ββ ββ ββ ββββ βββ ββ ββ ββ ββββββ ββ ββ ββ ββββ βββ ββ ββ ββ ββ ββ βββββββ ββ ββ ββ ββ ββ ββββ ββ
βββ β ββ ββββ ββββ βββββ ββ ββββ ββ ββ ββ βββ β ββ ββ ββ βββββ ββ ββ ββ βββ ββ ββββ βββββ ββ ββ ββ ββββ ββ βββ ββ ββ ββββ ββ βββββ βββββ ββ ββ ββ β ββββ β β ββ ββ βββββ βββ ββ βββββ
βββ ββ
ββ ββ βββ ββ ββ
ββ β
βββββ βββ β β ββ ββ ββ ββ β βββ β ββ β ββ β β β ββ β
βββββββββββββ β
ββ ββ βββ β
ββββ ββ βββββ
ββ ββ ββ β
βββ ββ ββββ ββββββββββββββββ βββ β ββββββββββ ββββ β ββββ β ββ ββββ ββββββββ βββββ
βββββββββ ββββ ββ βββββββββ ββββ
ββ βββββββ ββββββ βββββ βββββ ββ
βββ ββββββ ββ ββ βββββββββββββββ β ββ ββ ββββββββββββββ ββ βββ
βββββ ββ ββββ ββ βββ ββββ
ββββββ βββββ βββββ
β β βββ βββ β
β
ββ ββββββ
β
β ββββ βββ
βββββββββββ
ββ βββ ββββ ββ
β βββ
ββββββββββ βββ
β
βββ
ββ ββββ ββ βββ
β
ββββ
ββ βββββββ
β
ββββ
βββββββββ ββ βββ
ββββββββββββββββββββ βββ
βββββββββββ
ββ β βββββ βββ βββ β βββ β β β β β ββ βββ β β β βββ βββ ββ β βββ βββ β β β βββ ββββ βββββ β ββ ββ ββ β ββ β β βββ ββ βββ
Usage: title_creator
Create a title
optional arguments:
display:
--text=Hello World!
text to render (default Hello World!)
--characters= !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}
text to render, ignored when loading a map (default !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|})
--resolution=16
text to render, ignored when loading a map (default 16)
--aspect=0.5
character height to width (default 0.5)
--font=/System/Library/Fonts/Monaco.ttf
filename of the ttf/otf font (default /System/Library/Fonts/Helvetica.ttc)
--size=12
font size in points (default 25)
--max-width=None
maximum width to render
--mode=20
render mode (default 20)
--allow-inverted=false
use inverted characters, ignored when writing to file
input/output:
--load=None
load saved character map
--save=None
save character map
--output=None
save output to file
title_creator -font /Library/Fonts/CooperBlackStd.otf -resolution 64 -allow-inverted=false -text "Numbers" -characters="1234567890#%$^*.,-+<> "
,,,,, ,,,,,
<%%%%%%0, %%%%%%%> ,,#%%%%>
%%%%%%%%% %%%0 %%%%%%%
%%%%%%%%%%, %%%> ,,+4##% ,,+##%% ,,+#% ,4#%%, ,4#%%, %%%%% ,+#%%, ,+#%%%+, ,,+##% ,4%%, ,4%%%4#%,
%%%%%%%%%%%%#%%% 70%%%%% %%%%%%% #%%%%%%0%%%%%%%%%%%%%%%% %%%%%%%%%%%%%, ,%%%0770%%%, %%%%%%%%%%%%% 0%%%%0%%%%,
%%%%7%%%%%%%%%%% %%%%% 4%%%%% %%%%%%7 3%%%%%# %%%%%% %%%%%7 7%%%%%% 2%%%%%,,#%%%% 3%%%%%0%%%%# %%%%%%, 77
%%%1 %%%%%%%%% %%%%% 4%%%%% 4%%%%% %%%%%7 %%%%%% %%%%% 3%%%%% %%%%%0%%%%%%# 4%%%%% 7%%%%%%%%,
%%%8 %%%%%%% %%%%%, 8%%%%% 4%%%%% %%%%%1 %%%%%% %%%%%, ,%%%%# %%%%%0, ,,, 4%%%%% ,%,7%%%%%%%,
<%%%%%% 7%%%% %%%%%%%%%%%%%%% ,%%%%%%, #%%%%%% ,%%%%%%, ,%%%%%%,,%%%%7 %%%%%%%%%%%7 <%%%%%%%% 3%%%,#%%%%%
7#%%%#7 7%# 7#%%#7 %%##7 7#%%%##7 9#%%%#7 79#%%## 7#%%%#7 79%%%#77 7#%%%%##7 7###%%%#7
I like starting my programs with a nice title. So why another? I wanted to see if go could improve the performance over python. Was it fast? Yes. Much
- It takes the text and renders it to an image using the font and the size
- It scales the image to no bigger than max-width.
- It scales the image to the inverse of aspect so that when drawn to screen it matches the original image.
- It crops the image into chucks of resolution x resolution and puts it into a 4D array.
- It then takes the characters and maps each one to a 2D array of brightness values, and optionally saves or loads this
- It then goes through 2 dimensions of the 4D array and compares ,using the mode, to see which is the best match, and optionally allow-inverted versions of the character
- It draws each matching character to screen or outputs to file
- Mode 0 (default) : Mean Squared Error
- Mode 1 : Sum of absolute differences in matrix
- Mode 2-4 : Absolute differences in matrix with neighbouring values
- Mode 10-23: Contrasted values
Add more font types
- Some fonts it does not render some characters, for example, the letter 'n' might not appear when using myfont.ttf??
- Unicode characters beyond 1byte (255 or \u00FF) do not render, this matters for title and for characters used in the
character map, but will write to screen
- Workaround: Use the python script to create json maps and use those in the go program. It will allow you to use those character to render but still not be in the title, for that stick the python version
- Does not work with all fonts.
xattr -d com.apple.quarantine /path/to/title_creator
chmod a+x /path/to/title_creator
Windows only renders block characters aligned in the console and no where else
Make sure you are using a fixed width font
Choose a font that supports the character you choose the render with
Create a title and save/load the character map created
- Fixed bad ascii code in default character set
- Support multiline
- Better cropping
- Inverted mode
- New render modes
- Code cleanup
- Printing first character only in json key, this allows for duplicate keys, example ascii-art.json
/----\ /--------| /-----\ ---------| /---------|
---- ------ -----| -| / | \\ | -\ |
/-- -/ \- | | | \ -/ | | | /
/- -/ \ | / / \--- | | | |
/ |/ \| | | | -----\ --------\ /----\ /---- -----\ ----\ ----- ------ -----\ ------ ------ -------- / | /---- /-------\ /------\/ |
/ / \-/ / |-- \\ /--- ---- -\/-- -\/- -/-- \/-- \/- -\ / | /-- \/-- -\ /--- -\ /-- ----| -\ | / /-- | --- ---\ -\ /-- ---- |/
/ | | -----| | // / | |\/ | ---| - \| --/ |- \| | | / \ \| -- \| \ | | // / / | / | /- - / /- // | | // -/ | |
| | / / | / /- / / -/ | / \ / | |/ \ / / | /| | /| | | | | / /- | | / | //- // ----/ / |/ /| / /- |/ | /
| | | / / / | / --- --/ / | \---/ / | \---/ / / | | | / | | / / | | ----/ / |/ |\ / | ---- --/ | / / |
| | /\ / | | |/ / ------- | / | |/ / / | | | | | / | / | | | - \ | -------/ | | | /
\| | // - | / / | \ \ /\ | | / | | / / | / | / -/ / | | | /\ / | \ \ | | /\ | | / |
\- -\ /---/ / | | | \ \\ /-- / | | | / |\ /-- / | / /- // | | \ \ -- / | / \ \ \ \ -- -/ \ \ // |
\- ---------- | / \- ---/ \- ---- --/ | | / | \ --/ / / ----- --/ \ ----/ \- ---- --/ /| | \ ----/ \- -------/ \- ------ ---/
----------- ------ ------/ \--------/ -----/ \-----/ \------ / |/ | /-------- \------- \--------- \-----/ \------- \--------- -------/ ------/
/----\ / -/ / |
| \\ // -/ / |
\--- -- ---- /--- ---\
\-- \------------