From 424a374d8358b2f92e3d356f2ee5757ea8b07c7d Mon Sep 17 00:00:00 2001 From: kaeza Date: Fri, 18 Oct 2013 02:16:40 -0200 Subject: [PATCH] Add support for high resolution and proportional fonts to signs. This also gets rid of useless constructs, and optimizes others. --- characters | 283 ----------------------------------------- signs_lib.lua | 320 ++++++++++++++++++++++++++++++++--------------- textures/_0.png | Bin 128 -> 0 bytes textures/_1.png | Bin 129 -> 0 bytes textures/_2.png | Bin 135 -> 0 bytes textures/_3.png | Bin 133 -> 0 bytes textures/_4.png | Bin 134 -> 0 bytes textures/_5.png | Bin 132 -> 0 bytes textures/_6.png | Bin 132 -> 0 bytes textures/_7.png | Bin 132 -> 0 bytes textures/_8.png | Bin 127 -> 0 bytes textures/_9.png | Bin 132 -> 0 bytes textures/_a.png | Bin 128 -> 0 bytes textures/_a_.png | Bin 130 -> 0 bytes textures/_am.png | Bin 123 -> 0 bytes textures/_ap.png | Bin 122 -> 0 bytes textures/_as.png | Bin 127 -> 0 bytes textures/_at.png | Bin 133 -> 0 bytes textures/_b.png | Bin 132 -> 0 bytes textures/_b_.png | Bin 129 -> 0 bytes textures/_bl.png | Bin 130 -> 0 bytes textures/_br.png | Bin 130 -> 0 bytes textures/_c.png | Bin 127 -> 0 bytes textures/_c_.png | Bin 129 -> 0 bytes textures/_ca.png | Bin 127 -> 0 bytes textures/_cl.png | Bin 129 -> 0 bytes textures/_cm.png | Bin 123 -> 0 bytes textures/_co.png | Bin 103 -> 0 bytes textures/_cr.png | Bin 128 -> 0 bytes textures/_d.png | Bin 132 -> 0 bytes textures/_d_.png | Bin 126 -> 0 bytes textures/_dl.png | Bin 135 -> 0 bytes textures/_dt.png | Bin 121 -> 0 bytes textures/_dv.png | Bin 133 -> 0 bytes textures/_e.png | Bin 127 -> 0 bytes textures/_e_.png | Bin 130 -> 0 bytes textures/_eq.png | Bin 121 -> 0 bytes textures/_ex.png | Bin 123 -> 0 bytes textures/_f.png | Bin 130 -> 0 bytes textures/_f_.png | Bin 132 -> 0 bytes textures/_g.png | Bin 129 -> 0 bytes textures/_g_.png | Bin 130 -> 0 bytes textures/_gt.png | Bin 129 -> 0 bytes textures/_h.png | Bin 132 -> 0 bytes textures/_h_.png | Bin 129 -> 0 bytes textures/_ha.png | Bin 125 -> 0 bytes textures/_hs.png | Bin 119 -> 0 bytes textures/_i.png | Bin 130 -> 0 bytes textures/_i_.png | Bin 126 -> 0 bytes textures/_j.png | Bin 128 -> 0 bytes textures/_j_.png | Bin 128 -> 0 bytes textures/_k.png | Bin 134 -> 0 bytes textures/_k_.png | Bin 130 -> 0 bytes textures/_l.png | Bin 128 -> 0 bytes textures/_l_.png | Bin 128 -> 0 bytes textures/_lt.png | Bin 129 -> 0 bytes textures/_m.png | Bin 125 -> 0 bytes textures/_m_.png | Bin 127 -> 0 bytes textures/_mn.png | Bin 122 -> 0 bytes textures/_n.png | Bin 125 -> 0 bytes textures/_n_.png | Bin 130 -> 0 bytes textures/_o.png | Bin 125 -> 0 bytes textures/_o_.png | Bin 126 -> 0 bytes textures/_p.png | Bin 129 -> 0 bytes textures/_p_.png | Bin 130 -> 0 bytes textures/_pr.png | Bin 135 -> 0 bytes textures/_ps.png | Bin 125 -> 0 bytes textures/_q.png | Bin 129 -> 0 bytes textures/_q_.png | Bin 127 -> 0 bytes textures/_qo.png | Bin 123 -> 0 bytes textures/_qu.png | Bin 130 -> 0 bytes textures/_r.png | Bin 125 -> 0 bytes textures/_r_.png | Bin 128 -> 0 bytes textures/_re.png | Bin 132 -> 0 bytes textures/_s.png | Bin 128 -> 0 bytes textures/_s_.png | Bin 131 -> 0 bytes textures/_sl.png | Bin 126 -> 0 bytes textures/_sm.png | Bin 107 -> 0 bytes textures/_sp.png | Bin 112 -> 0 bytes textures/_sr.png | Bin 126 -> 0 bytes textures/_t.png | Bin 130 -> 0 bytes textures/_t_.png | Bin 128 -> 0 bytes textures/_tl.png | Bin 124 -> 0 bytes textures/_u.png | Bin 125 -> 0 bytes textures/_u_.png | Bin 126 -> 0 bytes textures/_un.png | Bin 121 -> 0 bytes textures/_v.png | Bin 127 -> 0 bytes textures/_v_.png | Bin 128 -> 0 bytes textures/_vb.png | Bin 120 -> 0 bytes textures/_w.png | Bin 126 -> 0 bytes textures/_w_.png | Bin 128 -> 0 bytes textures/_x.png | Bin 127 -> 0 bytes textures/_x_.png | Bin 129 -> 0 bytes textures/_y.png | Bin 129 -> 0 bytes textures/_y_.png | Bin 130 -> 0 bytes textures/_z.png | Bin 128 -> 0 bytes textures/_z_.png | Bin 130 -> 0 bytes 97 files changed, 221 insertions(+), 382 deletions(-) delete mode 100644 characters delete mode 100644 textures/_0.png delete mode 100644 textures/_1.png delete mode 100644 textures/_2.png delete mode 100644 textures/_3.png delete mode 100644 textures/_4.png delete mode 100644 textures/_5.png delete mode 100644 textures/_6.png delete mode 100644 textures/_7.png delete mode 100644 textures/_8.png delete mode 100644 textures/_9.png delete mode 100644 textures/_a.png delete mode 100644 textures/_a_.png delete mode 100644 textures/_am.png delete mode 100644 textures/_ap.png delete mode 100644 textures/_as.png delete mode 100644 textures/_at.png delete mode 100644 textures/_b.png delete mode 100644 textures/_b_.png delete mode 100644 textures/_bl.png delete mode 100644 textures/_br.png delete mode 100644 textures/_c.png delete mode 100644 textures/_c_.png delete mode 100644 textures/_ca.png delete mode 100644 textures/_cl.png delete mode 100644 textures/_cm.png delete mode 100644 textures/_co.png delete mode 100644 textures/_cr.png delete mode 100644 textures/_d.png delete mode 100644 textures/_d_.png delete mode 100644 textures/_dl.png delete mode 100644 textures/_dt.png delete mode 100644 textures/_dv.png delete mode 100644 textures/_e.png delete mode 100644 textures/_e_.png delete mode 100644 textures/_eq.png delete mode 100644 textures/_ex.png delete mode 100644 textures/_f.png delete mode 100644 textures/_f_.png delete mode 100644 textures/_g.png delete mode 100644 textures/_g_.png delete mode 100644 textures/_gt.png delete mode 100644 textures/_h.png delete mode 100644 textures/_h_.png delete mode 100644 textures/_ha.png delete mode 100644 textures/_hs.png delete mode 100644 textures/_i.png delete mode 100644 textures/_i_.png delete mode 100644 textures/_j.png delete mode 100644 textures/_j_.png delete mode 100644 textures/_k.png delete mode 100644 textures/_k_.png delete mode 100644 textures/_l.png delete mode 100644 textures/_l_.png delete mode 100644 textures/_lt.png delete mode 100644 textures/_m.png delete mode 100644 textures/_m_.png delete mode 100644 textures/_mn.png delete mode 100644 textures/_n.png delete mode 100644 textures/_n_.png delete mode 100644 textures/_o.png delete mode 100644 textures/_o_.png delete mode 100644 textures/_p.png delete mode 100644 textures/_p_.png delete mode 100644 textures/_pr.png delete mode 100644 textures/_ps.png delete mode 100644 textures/_q.png delete mode 100644 textures/_q_.png delete mode 100644 textures/_qo.png delete mode 100644 textures/_qu.png delete mode 100644 textures/_r.png delete mode 100644 textures/_r_.png delete mode 100644 textures/_re.png delete mode 100644 textures/_s.png delete mode 100644 textures/_s_.png delete mode 100644 textures/_sl.png delete mode 100644 textures/_sm.png delete mode 100644 textures/_sp.png delete mode 100644 textures/_sr.png delete mode 100644 textures/_t.png delete mode 100644 textures/_t_.png delete mode 100644 textures/_tl.png delete mode 100644 textures/_u.png delete mode 100644 textures/_u_.png delete mode 100644 textures/_un.png delete mode 100644 textures/_v.png delete mode 100644 textures/_v_.png delete mode 100644 textures/_vb.png delete mode 100644 textures/_w.png delete mode 100644 textures/_w_.png delete mode 100644 textures/_x.png delete mode 100644 textures/_x_.png delete mode 100644 textures/_y.png delete mode 100644 textures/_y_.png delete mode 100644 textures/_z.png delete mode 100644 textures/_z_.png diff --git a/characters b/characters deleted file mode 100644 index d282d23..0000000 --- a/characters +++ /dev/null @@ -1,283 +0,0 @@ -A -_a_ -7 -B -_b_ -5 -C -_c_ -6 -D -_d_ -6 -E -_e_ -5 -F -_f_ -5 -G -_g_ -6 -H -_h_ -6 -I -_i_ -1 -J -_j_ -4 -K -_k_ -5 -L -_l_ -4 -M -_m_ -7 -N -_n_ -6 -O -_o_ -6 -P -_p_ -5 -Q -_q_ -7 -R -_r_ -5 -S -_s_ -5 -T -_t_ -5 -U -_u_ -6 -V -_v_ -7 -W -_w_ -9 -X -_x_ -5 -Y -_y_ -7 -Z -_z_ -5 -a -_a -5 -b -_b -5 -c -_c -4 -d -_d -5 -e -_e -4 -f -_f -4 -g -_g -5 -h -_h -5 -i -_i -1 -j -_j -1 -k -_k -4 -l -_l -1 -m -_m -7 -n -_n -5 -o -_o -5 -p -_p -5 -q -_q -5 -r -_r -3 -s -_s -4 -t -_t -3 -u -_u -4 -v -_v -5 -w -_w -7 -x -_x -5 -y -_y -4 -z -_z -4 - -_sp -2 -0 -_0 -4 -1 -_1 -2 -2 -_2 -4 -3 -_3 -4 -4 -_4 -4 -5 -_5 -4 -6 -_6 -4 -7 -_7 -4 -8 -_8 -4 -9 -_9 -4 -( -_bl -2 -) -_br -2 -{ -_cl -3 -} -_cr -3 -[ -_sl -2 -] -_sr -2 -' -_ap -1 -! -_ex -1 -? -_qu -4 -@ -_at -5 -# -_hs -5 -$ -_dl -4 -% -_pr -5 -^ -_ca -3 -& -_am -5 -* -_as -3 -_ -_un -3 -+ -_ps -3 -- -_mn -3 -= -_eq -3 -: -_co -1 -; -_sm -1 -, -_cm -2 -" -_qo -3 -/ -_dv -5 -~ -_tl -4 -< -_lt -3 -> -_gt -3 -\ -_re -5 -| -_vb -1 -. -_dt -1 - diff --git a/signs_lib.lua b/signs_lib.lua index 8e37592..b73f96b 100644 --- a/signs_lib.lua +++ b/signs_lib.lua @@ -1,46 +1,3 @@ --- Font: 04.jp.org - --- CONSTANTS - -local SIGN_WIDTH = 110 -local SIGN_PADDING = 8 - -local LINE_LENGTH = 16 -local NUMBER_OF_LINES = 4 - -local LINE_HEIGHT = 14 -local CHAR_WIDTH = 5 - -local signs = { - {delta = {x = -0.06, y = 0, z = 0.399}, yaw = 0}, - {delta = {x = 0.399, y = 0, z = 0.06}, yaw = math.pi / -2}, - {delta = {x = 0.06, y = 0, z = -0.399}, yaw = math.pi}, - {delta = {x = -0.399, y = 0, z = -0.06}, yaw = math.pi / 2}, -} - -local signs_yard = { - {delta = {x = -0.06, y = 0, z = -0.05}, yaw = 0}, - {delta = {x = -0.05, y = 0, z = 0.06}, yaw = math.pi / -2}, - {delta = {x = 0.06, y = 0, z = 0.05}, yaw = math.pi}, - {delta = {x = 0.05, y = 0, z = -0.06}, yaw = math.pi / 2}, -} - -local signs_post = { - {delta = {x = -0.06, y = 0, z = -0.226}, yaw = 0}, - {delta = {x = -0.226, y = 0, z = 0.06}, yaw = math.pi / -2}, - {delta = {x = 0.06, y = 0, z = 0.226}, yaw = math.pi}, - {delta = {x = 0.226, y = 0, z = -0.06}, yaw = math.pi / 2}, -} - -local sign_groups = {choppy=2, dig_immediate=2} - -local fences_with_sign = { } - --- Misc variables - -local chars_file = io.open(minetest.get_modpath("homedecor").."/characters", "r") -local charmap = {} -local max_chars = 16 -- Boilerplate to support localized strings if intllib mod is installed. local S @@ -51,6 +8,174 @@ else S = function ( s ) return s end end +-- CONSTANTS + +local NUMBER_OF_LINES = 6 + +local MP = minetest.get_modpath("homedecor") + +-- Used by `build_char_db' to locate the file. +local FONT_FMT = "%s/hdf_%02x.png" + +-- Simple texture name for building text texture. +local FONT_FMT_SIMPLE = "hdf_%02x.png" + +-- Path to the textures. +local TP = MP.."/textures" + +local TEXT_SCALE = {x=0.9, y=0.7} + +-- Lots of overkill here. KISS advocates, go away, shoo! ;) -- kaeza + +local PNG_HDR = string.char(0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) + +-- Read the image size from a PNG file. +-- Returns image_w, image_h. +-- Only the LSB is read from each field! +local function read_png_size(f) + f:seek("set", 0x0) + local hdr = f:read(8) + if hdr ~= PNG_HDR then return end + f:seek("set", 0x13) + local ws = f:read(1) + f:seek("set", 0x17) + local hs = f:read(1) + return ws:byte(), hs:byte() +end + +-- Set by build_char_db() +local LINE_HEIGHT +local SIGN_WIDTH +local SIGN_PADDING + +-- This holds the individual character widths. +-- Indexed by the actual character (e.g. charwidth["A"]) +local charwidth = { } + +-- File to cache the font size to. +local CHARDB_FILE = minetest.get_worldpath().."/homedecor_chardb" + +local function build_char_db() + + LINE_HEIGHT = nil + SIGN_WIDTH = nil + SIGN_PADDING = nil + + -- To calculate average char width. + local total_width = 0 + local char_count = 0 + + -- Try to load cached data to avoid heavy disk I/O. + + local cdbf = io.open(CHARDB_FILE, "rt") + + if cdbf then + minetest.log("info", "[homedecor] Reading cached character database.") + for line in cdbf:lines() do + local ch, w = line:match("(0x[0-9A-Fa-f]+)%s+([0-9][0-9]+)") + if ch and w then + local c = tonumber(ch, 16) + w = tonumber(w) + if c and w then + if c == 0 then + LINE_HEIGHT = h + elseif (c >= 32) and (c < 127) then + charwidth[string.char(c)] = w + total_width = total_width + w + char_count = char_count + 1 + end + end + end + end + cdbf:close() + if LINE_HEIGHT then + -- XXX: Is there a better way to calc this? + -- XXX: Remember to change similar lines below if this changes. + SIGN_WIDTH = math.floor((total_width / char_count) * 16) + SIGN_PADDING = SIGN_WIDTH / 14 -- Totally arbitrary. + return + else + minetest.log("warning", "[homedecor]" + .." Could not find font line height in cached DB." + .." Trying brute force." + ) + end + end + + -- OK, something went wrong... try brute force loading from texture files. + + total_width = 0 + char_count = 0 + LINE_HEIGHT = nil + + for c = 32, 126 do + local filename = FONT_FMT:format(TP, c) + local f = io.open(filename) + if f then + local ch = string.char(c) + local w, h = read_png_size(f) + f:close() + if w and h then + charwidth[ch] = w + total_width = total_width + w + char_count = char_count + 1 + if not LINE_HEIGHT then LINE_HEIGHT = h end + end + end + end + + if not LINE_HEIGHT then + error("Could not find font line height.") + end + + SIGN_WIDTH = math.floor((total_width / char_count) * 16) + SIGN_PADDING = SIGN_WIDTH / 14 -- Totally arbitrary. + + -- Try to save cached list back to disk. + + local e -- Note: `cdbf' is already declared local above. + cdbf, e = io.open(CHARDB_FILE, "wt") + if not cdbf then + minetest.log("warning", "[homedecor] Could not save cached char DB: "..(e or "")) + return + end + + cdbf:write(("0x00 %d\n"):format(LINE_HEIGHT)) + for c = 32, 126 do + local w = charwidth[string.char(c)] + if w then + cdbf:write(("0x%02X %d\n"):format(c, w)) + end + end + cdbf:close() + +end + +local signs = { + {delta = {x = 0, y = 0, z = 0.399}, yaw = 0}, + {delta = {x = 0.399, y = 0, z = 0 }, yaw = math.pi / -2}, + {delta = {x = 0, y = 0, z = -0.399}, yaw = math.pi}, + {delta = {x = -0.399, y = 0, z = 0 }, yaw = math.pi / 2}, +} + +local signs_yard = { + {delta = {x = 0, y = 0.05, z = -0.05}, yaw = 0}, + {delta = {x = -0.05, y = 0.05, z = 0}, yaw = math.pi / -2}, + {delta = {x = 0, y = 0.05, z = 0.05}, yaw = math.pi}, + {delta = {x = 0.05, y = 0.05, z = 0}, yaw = math.pi / 2}, +} + +local signs_post = { + {delta = {x = 0, y = 0, z = -0.226}, yaw = 0}, + {delta = {x = -0.226, y = 0, z = 0}, yaw = math.pi / -2}, + {delta = {x = 0, y = 0, z = 0.226}, yaw = math.pi}, + {delta = {x = 0.226, y = 0, z = 0}, yaw = math.pi / 2}, +} + +local sign_groups = {choppy=2, dig_immediate=2} + +local fences_with_sign = { } + -- some local helper functions local homedecor_create_lines = function(text) @@ -66,52 +191,56 @@ end local math_max = math.max local homedecor_generate_line = function(s, lineno) - local i = 1 - local parsed = {} - local width = 0 - local maxw = 0 - local chars = 0 - while i <= #s do - local file = nil - if charmap[s:sub(i, i)] ~= nil then - file = charmap[s:sub(i, i)] - i = i + 1 - elseif i < #s and charmap[s:sub(i, i + 1)] ~= nil then - file = charmap[s:sub(i, i + 1)] - i = i + 2 - else - print("[signs] W: unknown symbol in '"..s.."' at "..i.." (probably "..s:sub(i, i)..")") - i = i + 1 - end - if file ~= nil then - width = width + CHAR_WIDTH - maxw = math_max(width, maxw) - chars = chars + 1 - if chars > max_chars then + + local width = 0 + local maxw = 0 + + local chars = { } + + local max_line_w = SIGN_WIDTH - (SIGN_PADDING * 2) + + -- We check which chars are available here. + for i = 1, #s do + local c = s:sub(i, i) + local w = charwidth[c] + if w then + width = width + w + 1 + maxw = math_max(width, maxw) + if width >= max_line_w then width = 0 end - table.insert(parsed, file) - end - end - maxw = maxw - 1 + table.insert(chars, c) + end + end - local texture = { } - local start_xpos = math.floor((SIGN_WIDTH - 2 * SIGN_PADDING - maxw) / 2 + SIGN_PADDING) - local xpos = start_xpos - local linepos = 0 - for i = 1, #parsed do - if lineno >= NUMBER_OF_LINES then break end - local ypos = 12 + (LINE_HEIGHT * lineno) - table.insert(texture, (":%d,%d=%s.png"):format(xpos, ypos, parsed[i])) - xpos = xpos + CHAR_WIDTH + 1 - linepos = linepos + 1 - if linepos > max_chars then + maxw = maxw - 1 + + -- Okay, we actually build the "line texture" here. + + local start_xpos = math.floor((SIGN_WIDTH - 2 * SIGN_PADDING - maxw) / 2 + SIGN_PADDING) + local xpos = start_xpos + local texture = { } + local ypos = (LINE_HEIGHT * (lineno --[[+ 1]])) + + width = 0 + + for i = 1, #s do + local c = s:sub(i, i) + local w = charwidth[c] + local tex = FONT_FMT_SIMPLE:format(c:byte()) + table.insert(texture, (":%d,%d=%s"):format(xpos, ypos, tex)) + xpos = xpos + w + 1 + width = width + w + 1 + if width > max_line_w then xpos = start_xpos - linepos = 0 + ypos = ypos + LINE_HEIGHT + width = 0 lineno = lineno + 1 end - end - return table.concat(texture, ""), lineno + if lineno >= NUMBER_OF_LINES then break end + end + + return table.concat(texture, ""), lineno end local function copy ( t ) @@ -138,20 +267,11 @@ local homedecor_generate_texture = function(lines) return table.concat(texture, "") end --- load characters map - -if not chars_file then - print("[signs] "..S("E: character map file not found")) -else - while true do - local char = chars_file:read("*l") - if char == nil then - break - end - local img = chars_file:read("*l") - chars_file:read("*l") - charmap[char] = img - end +local function set_obj_text(obj, text) + obj:set_properties({ + textures={homedecor_generate_texture(homedecor_create_lines(text))}, + visual_size = TEXT_SCALE, + }) end homedecor.construct_sign = function(pos) @@ -179,7 +299,7 @@ homedecor.update_sign = function(pos, fields) local objects = minetest.get_objects_inside_radius(pos, 0.5) for _, v in ipairs(objects) do if v:get_entity_name() == "signs:text" then - v:set_properties({textures={homedecor_generate_texture(homedecor_create_lines(text))}}) + set_obj_text(v, text) return end end @@ -392,7 +512,7 @@ if not homedecor.disable_signs then signs_text_on_activate = function(self) local meta = minetest.get_meta(self.object:getpos()) local text = meta:get_string("text") - self.object:set_properties({textures={homedecor_generate_texture(homedecor_create_lines(text))}}) + set_obj_text(self.object, text) end else signs_text_on_activate = function(self) @@ -479,6 +599,8 @@ function homedecor.register_fence_with_sign(fencename, fencewithsignname) print("Registered "..fencename.." and "..fencewithsignname) end +build_char_db() + if minetest.setting_get("log_mods") then minetest.log("action", S("signs loaded")) end diff --git a/textures/_0.png b/textures/_0.png deleted file mode 100644 index 4cde0513abbf71da3b41b64d30cad7ec81657301..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i)x;Tb#Tu=US;6q~~lQWZyUjjpC4Ff~O3HFU# R+Bv!)jh?Q4F6*2UngEkW9-;sM diff --git a/textures/_1.png b/textures/_1.png deleted file mode 100644 index 4c709bc9e44277adc5999341edb1f3b7d5d224ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M1x;Tb#Tu=US;6vj>re+2KX9Z?vk0;CwnI0S$ TH?Tf41L^d1^>bP0l+XkK$CV%N diff --git a/textures/_2.png b/textures/_2.png deleted file mode 100644 index 741bba0385995ac64d34d70103b19b508609514e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1?0(jx;Tb#Tu=US;6q~~lQYv{<~D8~X$dX~2?+-! Zd4@C&j>2Tw!(T!AJzf1=);T3K0RUCcAG`nn diff --git a/textures/_3.png b/textures/_3.png deleted file mode 100644 index 56c72641cc5a8693ef36cd5166b3255f74d5f905..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1?0(ix;Tb#Tu=US;6q~~lQYv{W`&;&9{vdooiz*$ X85SH56+|C=1L^j3^>bP0l+XkKQez>Z diff --git a/textures/_4.png b/textures/_4.png deleted file mode 100644 index f958039f9291f21aa41f574f363d78deeef518a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3G>Eal|aXtCR!4J(3Sr2oziSkJD@HkxKW}9$= ZpCNw&XXc%4TZ}>4Jzf1=);T3K0RY)SBUu0d diff --git a/textures/_5.png b/textures/_5.png deleted file mode 100644 index 9c97f5574a2ea002bb6d2c89f84ea513d10609d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M4x;Tb#Tu=US;6r0$<3a`wRtY(Vg$&FdPna2k WI@k-Z%!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M4x;Tb#Tu=US;6vlW#)S+VtP(;E1x(ByPna1( WJJ<`8Utj(K((LK#=d#Wzp$Py!S|Swy diff --git a/textures/_7.png b/textures/_7.png deleted file mode 100644 index 1bc96a5ec1551aebf8547430f4967dab0fa92eb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M4x;Tb#Tu=US;6r0$qhjMj#>1=%cNkg}Ch{{R XpWygd_5NT3P#J@#tDnm{r-UW|a?T^= diff --git a/textures/_8.png b/textures/_8.png deleted file mode 100644 index ca57489683282a10945c6880cd3bc11f6695d88f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i&x;Tb#Tu=US;6q~~lQWaRA&&_s*cqZN*dK~z R-<%E7=jrO_vd$@?2>_HKAQb=r diff --git a/textures/_9.png b/textures/_9.png deleted file mode 100644 index e690d4678cdd0df3320abdd956fce4432a74e21b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M4x;Tb#Tu=US;6q~~lQWZmnSl+16C>M%6YLBL WFE|31rwhLWY4&vWb6Mw<&;$SvpCCH` diff --git a/textures/_a.png b/textures/_a.png deleted file mode 100644 index 0d66eb40a359510cd49492866fdc9761845fd6c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3J>Eal|aXtCRL54;Y4mjUb6Mw<&;$VWVj({O diff --git a/textures/_a_.png b/textures/_a_.png deleted file mode 100644 index eab424c4236662f7c13126a18bddb5870c0af4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l7ba4#fxSssuFhi3qPq@T3gDngj8E5=wXDC+T UOg(7I{sW}d)78&qol`;+0OuMYPXGV_ diff --git a/textures/_am.png b/textures/_am.png deleted file mode 100644 index d187fe32b8f8cf3b6703306da32a597100ba7f48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$D3?#QN+_DTvv7|ftIx;Y9?C1WI2$EzA@Ck7R z(m=2@edl=~#Z(gH7yO^$>2?DzAWz8C#W95Adh(2e0S65l6`K>87FVdQ&MBb@086MIy#N3J diff --git a/textures/_ap.png b/textures/_ap.png deleted file mode 100644 index 4c44a61606cd93c3200afb38e0f27bc1c3d2e2eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8$P6TBy1I%0DVB6cUq=Rpjs4tz5?O(Kwg8_H zS0D`pOVf9r2U1KWL4Lvi8J=!8@B;D#JzX3_IIbsWBxEEsG_a*`FzC%-Y5etuQv#&L M)78&qol`;+0F%!g6#xJL diff --git a/textures/_as.png b/textures/_as.png deleted file mode 100644 index 3aa7a3e1d5011a774444d1ec0d9bc51df260ed4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3B>Eal|aXtCR!4J(3*_xRI)+hXEY+xw)z-76J R?QSDTpQo#z%Q~loCIAc&B7pz^ diff --git a/textures/_at.png b/textures/_at.png deleted file mode 100644 index bdd84d2c7db96d61e1879fb4cdb03c3bf24d55c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l4ba4#fxSssu@Q3z?9EbVZSlR>>d=hRjKVdw| Yko<)s^zY2cAafZ!UHx3vIVCg!0GyH}AOHXW diff --git a/textures/_b.png b/textures/_b.png deleted file mode 100644 index 8eb71d548838b4793a3a5c1cf1992fe7f6910c48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3I>Eal|aXtCR!4J&`n-bZb*$=ZBJV{{a{KLSI Ww1FdY;X(UfAkChxelF{r5}E+FZ6qoH diff --git a/textures/_b_.png b/textures/_b_.png deleted file mode 100644 index f3dc2074a2f3a95fd9209352f9da99b87b8d391c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz36>Eal|aXtCRL53z79%%`yh6?5htYVA|sS`LV TmCX`J`BzRuNe+AGsNFu UKd5$l`8JSNPgg&ebxsLQ0256ix&QzG diff --git a/textures/_br.png b/textures/_br.png deleted file mode 100644 index f845aad90c8104f1e6bf1de1b5e14775878405bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;2qNchn5qe+SkfJR9T^xl_H+M9WCils0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l7ba4#fxSm{b;6sCAV!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i&x;Tb#Tu=USfT2-XLP&zEp@OM}pCRW5$HTJ9qp00i_>zopr0B8^%=>Px# diff --git a/textures/_c_.png b/textures/_c_.png deleted file mode 100644 index fea49cbb0f3d098ec1523e012b46e5fff216fca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M1x;Tb#Tu=USfT2lPLP&zE!GQ4uQ#S)c$_$Rg Sj(QJ}(F~rhelF{r5}E*qrya8Z diff --git a/textures/_ca.png b/textures/_ca.png deleted file mode 100644 index 7c5eabd931f2449944c137be3df378c346efa883..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3B>Eal|aXtCR!4J(3*$#8HF}2B`5MZeOz_s#% S@<#`t3I8O`A7>gTe~DWM4f+c+P} diff --git a/textures/_cm.png b/textures/_cm.png deleted file mode 100644 index f637f4abdbaa988395ce589f137e883e082bf7e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-T$P6TlivEcMDVB6cUq=Rpjs4tz5?O(Kwg8_H zS0D`pOVf9r2U1KWL4Lvi8J=!8@B;FLJY5_^IIbsK9BAN@Zn)6+kbxn61_z^EEpsAB NkEg4j%Q~loCII^>9QyzO diff --git a/textures/_co.png b/textures/_co.png deleted file mode 100644 index ae97df03c4a1e62fa6dc5637fe547e3ab0e02974..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-T$P6TlivEcMDYgKg5LX}#1WVI*o(EElB|(0{ u3=Yq3qyahno-U3d9M_W*8kpHtCNVOwN-#7k<*M_7)O))6xvXNd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3I>Eal|aXtCR!4J(3Sq^iz@wM?7%sIdy^plYx Wn}Oq|_8)~4AkChxelF{r5}E*{x+5U~ diff --git a/textures/_d_.png b/textures/_d_.png deleted file mode 100644 index 33346ef3a1345b178a0b2aea0bb62a9a064d3f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3F>Eal|aXtCRL53z79_a-Wn9uxYWJsUEv2eC= Q%w3Q+Pgg&ebxsLQ0I@b8PXGV_ diff --git a/textures/_dl.png b/textures/_dl.png deleted file mode 100644 index 21c6b3d8cbc15847cc19523a2065e5bfc9b39994..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1?0(jx;Tb#Tu=US;6vj>CTC`6#=|Ua>^z(fpO^xk ZFf*jT;Mk~o_Kh}3zo)C8%Q~loCIF?rBHjQ1 diff --git a/textures/_dt.png b/textures/_dt.png deleted file mode 100644 index 271886fb91721867eb92f287eec232dc2e1d9693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8$P6TBy1I%0DVB6cUq=Rpjs4tz5?O(Kwg8_H zS0D`pOVf9r2U1KWL4Lvi8J=!8@B;D#JY5_^IIbsWBsjDwFr+auI7qNEZhYmg2-4x{ L>gTe~DWM4fRyZ0q diff --git a/textures/_dv.png b/textures/_dv.png deleted file mode 100644 index 987804cca7c514b6623f0b3d1f7b34de08bac499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l4ba4#fxSssu@Q3Dy+=rzV_As|pH*9Eo$bVR# Xp)rRmmFcnf4Ule6S3j3^P6!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i&x;Tb#Tu=USfT2-XLP&z8p@OM}pCRK0N8`!V QbA}*&p00i_>zopr0AQLPZ~y=R diff --git a/textures/_e_.png b/textures/_e_.png deleted file mode 100644 index 140b24f1b1a21f2c43378559915ffbe60702a2d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3E>Eal|aXtCRL53zC9%%_Hi82OHHiQ4{45=C% Vg=<@9C;$~Pc)I$ztaD0e0s!&s9_j!9 diff --git a/textures/_eq.png b/textures/_eq.png deleted file mode 100644 index d472687345eb07dc72433df296aaada38022059d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>^~Mx;Tb#Tu=USfT58mfTxuqZwF^0SFxNwNQbAZ KpUXO@geCy1pd0l7 diff --git a/textures/_ex.png b/textures/_ex.png deleted file mode 100644 index eb30a3f79660ed2f0bcb3220c673a34af1cc5308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^j6lr8$P6TBy1I%0DVB6cUq=Rpjs4tz5?O(Kwg8_H zS0D`pOVf9r2U1KWL4Lvi8J=!8@B;FLJY5_^IIbsWBxEEwG_V=4IWfpfFf$(G7v%uy N@pScbS?83{1OR{x8NC1i diff --git a/textures/_f.png b/textures/_f.png deleted file mode 100644 index b8c956e2ad81e4b58baffba5dc18bfb8d893c68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M3x;Tb#Tu=US;6vj>hQn-ZYzp@nmN_cPGbCkj U82Vn0umx%LboFyt=akR{0PUF|8vpNd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3I>Eal|aXtCRL53zC9%%_Hi7Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz36>Eal|aXtCRL54!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M3x;Tb#Tu=USfT2lPLP&y3LZ;yfi@|?phNKP- T!)cD05g@Ieu6{1-oD!MnB TFV6Ix2h!>3>gTe~DWM4fv}Yf< diff --git a/textures/_ha.png b/textures/_ha.png deleted file mode 100644 index 3eff069f16370877b94818ecd90939c11f8cc24a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz37>Eal|aXtCR!4J)etO7;~6CDg0VsEft?97lj P3DV{1>gTe~DWM4fmz^K? diff --git a/textures/_hs.png b/textures/_hs.png deleted file mode 100644 index 6f46e6e1661535ae4d8dae6adcf07429a91a438d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$D3?#QN+_DTvv7|ftIx;Y9?C1WI2$EzA@Ck7R z(m=2@edl=~#Z(gH7yO^$>2?DzAdk<}#W95AdUC|U0|yw6F>pR&{F(bIeF;dtr>mdK II;Vst0PH^=+yDRo diff --git a/textures/_i.png b/textures/_i.png deleted file mode 100644 index 421a1bb76c7102e78ae8bdb863da4b78b6b97b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3E>Eal|aXtCR!4J(3*#yorOj0;;fI;XdBSXao V&Xd!8)8ar{Jzf1=);T3K0RU^WBLDyZ diff --git a/textures/_i_.png b/textures/_i_.png deleted file mode 100644 index d533cf9d0dec044c829f548fd7b4b5cc6c5c8901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3F>Eal|aXtCRL53zC9`gkg7|;A?WXOx)G(7!( QX(LFRr>mdKI;Vst0JP{Jng9R* diff --git a/textures/_j.png b/textures/_j.png deleted file mode 100644 index 057d7eb02475262e8510ceecffea5a8f3fa36a52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;2qNchn5qe+SkfJR9T^xl_H+M9WCils0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1qba4#fxSm{b;6uYh1_5IRPl=F(3I>L>9UO{E SCyR|i8a-Y8T-G@yGywpltRBt) diff --git a/textures/_j_.png b/textures/_j_.png deleted file mode 100644 index f1f6cf50c435cbcff3ee69d164a984ce9601bee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3J>Eal|aXtCRL53z?9{mObW{&iRpY{wT44j=` S<^4cP7(8A5T-G@yGywq2q8~H> diff --git a/textures/_k.png b/textures/_k.png deleted file mode 100644 index 564c593b1a70f038077bd54c6aa335378bbdfe62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3G>Eal|aXtCR!4J&`n-bX%Gqs8G7&k;TGOB!H YW=Q7XDEwCw@CBsZ)78&qol`;+0OzVBwg3PC diff --git a/textures/_k_.png b/textures/_k_.png deleted file mode 100644 index 72f8859be287fd64acb6a45d22d7046875b52cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l7ba4#fxSssuFhi3TPqxG}hL2)woCg2-88Y{9 UoV|HMJrJbT)78&qol`;+0P9pBxc~qF diff --git a/textures/_l.png b/textures/_l.png deleted file mode 100644 index 7875ef9c75e2e67c2784d83e50234cb8ed365035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3J>Eal|aXtCR!4J)eY=?O*QW6+C|1dC=PT*Xb S+u$q=(&*{x=d#Wzp$Py7CLsd= diff --git a/textures/_l_.png b/textures/_l_.png deleted file mode 100644 index 05eccbc6947cf5086bd836217e2c421063cd11b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3J>Eal|aXtCRL53zF9_s@I%*@O){xdUVuHZOm SThBEOq|wvW&t;ucLK6Vl%pbx4 diff --git a/textures/_lt.png b/textures/_lt.png deleted file mode 100644 index 29bed046cbe03e25dfa020add00e0f3cc813ee3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y;2qNchn5qe+SkfJR9T^xl_H+M9WCils0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l3ba4#fxSm{bfT4+9Ld-yg;Ugm($A3nK+#8&Z T|GqXK1L^d1^>bP0l+XkKu%aKV diff --git a/textures/_m.png b/textures/_m.png deleted file mode 100644 index 58320aaf87ae8a518d4e03f333ed4ccb6bbc6241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1kba4#fxSssuFhipik79xZ!$W3Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3B>Eal|aXtCRL53z)9xfh62aZJtl^CKc*e9-7 R8+`?&&(qb!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>^~Ox;Tb#Tu=USfT5X(hvOSNL)8nez>>8)|AMr5 My85}Sb4q9e0OcAULI3~& diff --git a/textures/_n.png b/textures/_n.png deleted file mode 100644 index 4322fa599b90310a7bf6e53a2d91d007e8c313cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1kba4#fxSssuFhipqPxOHRhC}QO#b-EUxh74p P2kG*3^>bP0l+XkKKLs8; diff --git a/textures/_n_.png b/textures/_n_.png deleted file mode 100644 index cfd43ba2ae98303115c493854cb21750429a0c8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l7ba4#fxSssuFhdg;Pqf4`10BXmY6<`388W|c U+%2#yV*+XQboFyt=akR{0NAY`*8l(j diff --git a/textures/_o.png b/textures/_o.png deleted file mode 100644 index 539c44ac986b57f38f8a6bb37e0d547429967844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i%x;Tb#Tu=USfT2-XLg+vNQwu*sjt9rZT$#-c PKzRmFS3j3^P6!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i(x;Tb#Tu=USfT2lPLTEt&(~SR&49OB4j&t_K Qi-5Fwy85}Sb4q9e082j}3;+NC diff --git a/textures/_p.png b/textures/_p.png deleted file mode 100644 index 4f401394d1b8ed21e5a17bd20849f7af9ad04196..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz36>Eal|aXtCRL54;-9_a%cniJWX*$?wG6g=Rl T{Iy1%8>G|I)z4*}Q$iB}24NtD diff --git a/textures/_p_.png b/textures/_p_.png deleted file mode 100644 index 56abf2d240c9c6a19c2e5d4f768f273a13cf98ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3E>Eal|aXtCRL53z79_fY+&57*IEHnNyGo;Pn Un3%Ze$ZL>RPgg&ebxsLQ06bqJDgXcg diff --git a/textures/_pr.png b/textures/_pr.png deleted file mode 100644 index 0645e04740ac4b5de3268de555bbd012431ba178..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&@l6ba4#fxSssu@P~HCHpQlcEf0APGqv%wsq-jI Zv}cHl;qdJa_Dccj_jL7hS?83{1OUnhBIE!7 diff --git a/textures/_ps.png b/textures/_ps.png deleted file mode 100644 index 8d822abfff7e7a24666d3f7ae474e5178d18decc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz37>Eal|aXtCRL53#th6#*5PCx7!DjK*n1${C= Psu?_8{an^LB{Ts5hI1b& diff --git a/textures/_q.png b/textures/_q.png deleted file mode 100644 index f73c8359517d8873b7ecc7d5cbb5c80003cead5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz36>Eal|aXtCRL54!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i&x;Tb#Tu=USfT2lPLTEt&lQXji3q!&S_KQY$ R%4$LSJYD@<);T3K0RUwx9+v!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M3x;Tb#Tu=USfT2lPLP$c-ActX-S;J3xh9V8l UjUSRsFMzaqy85}Sb4q9e0LZH!;s5{u diff --git a/textures/_r.png b/textures/_r.png deleted file mode 100644 index f30c9835dc3433622c47e9612fa3d2dbd8bbd691..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz37>Eal|aXtCRL54;?9_s@Wm=Cct6ftmGwlStZ Q0Ln9Xy85}Sb4q9e0C7PcPXGV_ diff --git a/textures/_r_.png b/textures/_r_.png deleted file mode 100644 index 7e63a20dc91eb1215d726594f5459ba443d4a9c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1qba4#fxSssuFhi3KPjtfu_72qpf9x4DN;tN@ SZxjRB!QkoY=d#Wzp$P!JC?KQ& diff --git a/textures/_re.png b/textures/_re.png deleted file mode 100644 index abf907f5d7b0a8e6f61cceab898889fa9b37dbe9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3I>Eal|aXtCR!2re<>xK_(0{a*a@$=YA)G;t* W7jW);QQQ&+((LK#=d#Wzp$PzT&>^}2 diff --git a/textures/_s.png b/textures/_s.png deleted file mode 100644 index 8564681acb83fd1aaa909a24660926f6f7ae0437..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i)x;Tb#Tu=USfT59>hm}WILe7B0;Ri#$1t;U* SLocO38a-Y8T-G@yGywo;l^yE< diff --git a/textures/_s_.png b/textures/_s_.png deleted file mode 100644 index a19b907aa48670be624c6b19528bf3dbc038c249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M2x;Tb#Tu=USfT4+(hm}WILe4mdKI;Vst0JRw%_5c6? diff --git a/textures/_sl.png b/textures/_sl.png deleted file mode 100644 index 49f213bd7ebf2f94311c61acf3dbb0b462b70f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-T$P6TlivEcMDVB6cUq=Rpjs4tz5?O(Kwg8_H zS0D`pOVf9r2U1KWL4Lvi8J=!8@B;EgJzX3_IIbsK94KgLY&^)wYGfe8z+fuD!ua#f Q6j6{iPgg&ebxsLQ07=9hhX4Qo diff --git a/textures/_sm.png b/textures/_sm.png deleted file mode 100644 index d6e4ab06e36e3c1ae67c32fe11a7f51794187748..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-T$P6TlivEcMDYgKg5LX}#1WVI*o(EElB|(0{ z3=Yq3qyag?o-U3d9M_W*8kpHNULLq`-~a;y`wd3N3A}dlKxqa~S3j3^P6s0gabg8QVfhLE`Cpe!VI3SelF{r5}E+8 CtQbfD diff --git a/textures/_sr.png b/textures/_sr.png deleted file mode 100644 index 7d135186fa2a5bd0e79ed79dae9ba6c286309a23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^OhC-T$P6TlivEcMDVB6cUq=Rpjs4tz5?O(Kwg8_H zS0D`pOVf9r2U1KWL4Lvi8J=!8@B;EgJzX3_IIbsK94KgLY+T65YGfe8z~B+VdT^KB Qzg&Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3E>Eal|aXtCR!4J)e>;gp%CwY0)B^;FO8L~ET UTH5(snFrG9>FVdQ&MBb@05K9E*8l(j diff --git a/textures/_t_.png b/textures/_t_.png deleted file mode 100644 index 42cf212a47036d7244b6760c159dbe519397025d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3J>Eal|aXtCRL53zC9!4JX0~?sn{AXmylHfG_ S{BL(QNTa8#pUXO@geCy!3n0z_ diff --git a/textures/_tl.png b/textures/_tl.png deleted file mode 100644 index 07443d386765de624b477ee681f891d1d7382e6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 124 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>^~Px;Tb#Tu=USfT59Ff=R+oL4l#lgDdcG-{ NCQnyCmvv4FO#t|l9OnQ4 diff --git a/textures/_u.png b/textures/_u.png deleted file mode 100644 index 348bc93bddfbe3efedf8afd991cf0da89daf77f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1kba4#fxSssuFhipjPxOHgEG_&DWi^~{->hE$ P6r{`3)z4*}Q$iB}WpW^x diff --git a/textures/_u_.png b/textures/_u_.png deleted file mode 100644 index 42be4ed9c8e7d4aa22247c8e0264822b5721cc59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1oba4#fxSssuFhdg?PxOKhJTv~YGZfZvZk4)q QcOFQar>mdKI;Vst0Dtx%Z~y=R diff --git a/textures/_un.png b/textures/_un.png deleted file mode 100644 index 1a1d6a930fd4e5629914e6700436b21fdfbf4d20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1jba4#fxSssua092L#6Jdxt|weqTfaX&3ew@} L>gTe~DWM4f>8~GC diff --git a/textures/_v.png b/textures/_v.png deleted file mode 100644 index bf70c3c0489aea7854974422446f5b00abed56b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1mba4#fxSssuFhe67kF~@)hKJG|@(fiExDp>; Ry3+^J=jrO_vd$@?2>^icAIAUy diff --git a/textures/_v_.png b/textures/_v_.png deleted file mode 100644 index abe633edb471ea4cdac2d943dd37d1b50b20713d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJz$P6T_XU63MDVB6cUq=Rpjs4tz5?MhC0(?ST zfiw^-P2YJQNHLWJ`33)Hc)H!d3&<1qba4#fxSssuFhdg;k19|0fe(B${Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3B>Eal|aXtCRL54;y9&L#{hK)=u{0s#rI1NA8 Rbtr@MdAjNd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz36>Eal|aXtCRL53zS9&L#{hKF1V+&WAQIX5^3 T)vju^gLHbj`njxgN@xNA(rF%a diff --git a/textures/_y.png b/textures/_y.png deleted file mode 100644 index 9cd323df5b320aeb9f533253f6fbed509dd9e007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz36>Eal|aXtCRL54;y9_a%gSPt{Dakt4c6jpFN TG+Ef74ASZ8>gTe~DWM4f{P7?a diff --git a/textures/_y_.png b/textures/_y_.png deleted file mode 100644 index 70cec732ebb1bc9676cfd7076caa886a69ef3fac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 130 zcmeAS@N?(olHy`uVBq!ia0vp^tU%1e$P6SWtb3XVq*&4&eH|GXHuiJ>Nd!r<1^9%x z0%;&vn!fWqkYXwc@(cdY@N~O@7mz3E>Eal|aXtCRL53zS9#$T0i9Cix_8I?~8M0S! UI-cdevI(Ts)78&qol`;+00TH5_W%F@ diff --git a/textures/_z.png b/textures/_z.png deleted file mode 100644 index 160d9ccc314212ecf4c4241334439dc7d97fc5f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^EI`b|$P6UwbNT{60_l#vjtmSN`?>!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>}i)x;Tb#Tu=USfT59xM_j_pK!qXGK%OC!gQM`@ R!lvI6;R0X`wF zKpF^^rtdrtq?k&A{DS{8Jl$^K1>{M3x;Tb#Tu=USfT4+phm%KK!i>R_&EP*XL);Gb UhYwl&FM_msy85}Sb4q9e0H($st^fc4