diff --git a/add_aliases.py b/add_aliases.py deleted file mode 100755 index b256140d3..000000000 --- a/add_aliases.py +++ /dev/null @@ -1,224 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2017 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import print_function -import argparse -import glob -import os -from os import path -import shutil -import sys - -from nototools import unicode_data - -"""Create aliases in target directory. - -In addition to links/copies named with aliased sequences, this can also -create canonically named aliases/copies, if requested.""" - - -DATA_ROOT = path.dirname(path.abspath(__file__)) - -def str_to_seq(seq_str): - res = [int(s, 16) for s in seq_str.split('_')] - if 0xfe0f in res: - print('0xfe0f in file name: %s' % seq_str) - res = [x for x in res if x != 0xfe0f] - return tuple(res) - - -def seq_to_str(seq): - return '_'.join('%04x' % cp for cp in seq) - - -def read_default_unknown_flag_aliases(): - unknown_flag_path = path.join(DATA_ROOT, 'unknown_flag_aliases.txt') - return read_emoji_aliases(unknown_flag_path) - - -def read_default_emoji_aliases(): - alias_path = path.join(DATA_ROOT, 'emoji_aliases.txt') - return read_emoji_aliases(alias_path) - - -def read_emoji_aliases(filename): - result = {} - - with open(filename, 'r') as f: - for line in f: - ix = line.find('#') - if (ix > -1): - line = line[:ix] - line = line.strip() - if not line: - continue - als, trg = (s.strip() for s in line.split(';')) - try: - als_seq = tuple([int(x, 16) for x in als.split('_')]) - trg_seq = tuple([int(x, 16) for x in trg.split('_')]) - except: - print('cannot process alias %s -> %s' % (als, trg)) - continue - result[als_seq] = trg_seq - return result - - -def add_aliases( - srcdir, dstdir, aliasfile, prefix, ext, replace=False, copy=False, - canonical_names=False, dry_run=False): - """Use aliasfile to create aliases of files in srcdir matching prefix/ext in - dstdir. If dstdir is null, use srcdir as dstdir. If replace is false - and a file already exists in dstdir, report and do nothing. If copy is false - create a symlink, else create a copy. - - If canonical_names is true, check all source files and generate aliases/copies - using the canonical name if different from the existing name. - - If dry_run is true, report what would be done. Dstdir will be created if - necessary, even if dry_run is true.""" - - if not path.isdir(srcdir): - print('%s is not a directory' % srcdir, file=sys.stderr) - return - - if not dstdir: - dstdir = srcdir - elif not path.isdir(dstdir): - os.makedirs(dstdir) - - prefix_len = len(prefix) - suffix_len = len(ext) + 1 - filenames = [path.basename(f) - for f in glob.glob(path.join(srcdir, '%s*.%s' % (prefix, ext)))] - seq_to_file = { - str_to_seq(name[prefix_len:-suffix_len]) : name - for name in filenames} - - aliases = read_emoji_aliases(aliasfile) - aliases_to_create = {} - aliases_to_replace = [] - alias_exists = False - - def check_alias_seq(seq): - alias_str = seq_to_str(seq) - alias_name = '%s%s.%s' % (prefix, alias_str, ext) - alias_path = path.join(dstdir, alias_name) - if path.exists(alias_path): - if replace: - aliases_to_replace.append(alias_name) - else: - print('alias %s exists' % alias_str, file=sys.stderr) - alias_exists = True - return None - return alias_name - - canonical_to_file = {} - for als, trg in sorted(aliases.items()): - if trg not in seq_to_file: - print('target %s for %s does not exist' % ( - seq_to_str(trg), seq_to_str(als)), file=sys.stderr) - continue - alias_name = check_alias_seq(als) - if alias_name: - target_file = seq_to_file[trg] - aliases_to_create[alias_name] = target_file - if canonical_names: - canonical_seq = unicode_data.get_canonical_emoji_sequence(als) - if canonical_seq and canonical_seq != als: - canonical_alias_name = check_alias_seq(canonical_seq) - if canonical_alias_name: - canonical_to_file[canonical_alias_name] = target_file - - if canonical_names: - print('adding %d canonical aliases' % len(canonical_to_file)) - for seq, f in seq_to_file.iteritems(): - canonical_seq = unicode_data.get_canonical_emoji_sequence(seq) - if canonical_seq and canonical_seq != seq: - alias_name = check_alias_seq(canonical_seq) - if alias_name: - canonical_to_file[alias_name] = f - - print('adding %d total canonical sequences' % len(canonical_to_file)) - aliases_to_create.update(canonical_to_file) - - if replace: - if not dry_run: - for k in sorted(aliases_to_replace): - os.remove(path.join(dstdir, k)) - print('replacing %d files' % len(aliases_to_replace)) - elif alias_exists: - print('aborting, aliases exist.', file=sys.stderr) - return - - for k, v in sorted(aliases_to_create.items()): - if dry_run: - msg = 'replace ' if k in aliases_to_replace else '' - print('%s%s -> %s' % (msg, k, v)) - else: - try: - if copy: - shutil.copy2(path.join(srcdir, v), path.join(dstdir, k)) - else: - # fix this to create relative symlinks - if srcdir == dstdir: - os.symlink(v, path.join(dstdir, k)) - else: - raise Exception('can\'t create cross-directory symlinks yet') - except Exception as e: - print('failed to create %s -> %s' % (k, v), file=sys.stderr) - raise Exception('oops, ' + str(e)) - print('created %d %s' % ( - len(aliases_to_create), 'copies' if copy else 'symlinks')) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - '-s', '--srcdir', help='directory containing files to alias', - required=True, metavar='dir') - parser.add_argument( - '-d', '--dstdir', help='directory to write aliases, default srcdir', - metavar='dir') - parser.add_argument( - '-a', '--aliasfile', help='alias file (default emoji_aliases.txt)', - metavar='file', default='emoji_aliases.txt') - parser.add_argument( - '-p', '--prefix', help='file name prefix (default emoji_u)', - metavar='pfx', default='emoji_u') - parser.add_argument( - '-e', '--ext', help='file name extension (default png)', - choices=['ai', 'png', 'svg'], default='png') - parser.add_argument( - '-r', '--replace', help='replace existing files/aliases', - action='store_true') - parser.add_argument( - '-c', '--copy', help='create a copy of the file, not a symlink', - action='store_true') - parser.add_argument( - '--canonical_names', help='include extra copies with canonical names ' - '(including fe0f emoji presentation character)', action='store_true'); - parser.add_argument( - '-n', '--dry_run', help='print out aliases to create only', - action='store_true') - args = parser.parse_args() - - add_aliases( - args.srcdir, args.dstdir, args.aliasfile, args.prefix, args.ext, - args.replace, args.copy, args.canonical_names, args.dry_run) - - -if __name__ == '__main__': - main() diff --git a/add_emoji_gsub.py b/add_emoji_gsub.py deleted file mode 100755 index 1621a99e5..000000000 --- a/add_emoji_gsub.py +++ /dev/null @@ -1,195 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2014 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Modify the Noto Color Emoji font to use GSUB rules for flags and keycaps.""" - -__author__ = "roozbeh@google.com (Roozbeh Pournader)" - - -import sys - -from fontTools import agl -from fontTools import ttLib -from fontTools.ttLib.tables import otTables - -from nototools import font_data - - -def create_script_list(script_tag='DFLT'): - """Create a ScriptList for the GSUB table.""" - def_lang_sys = otTables.DefaultLangSys() - def_lang_sys.ReqFeatureIndex = 0xFFFF - def_lang_sys.FeatureCount = 1 - def_lang_sys.FeatureIndex = [0] - def_lang_sys.LookupOrder = None - - script_record = otTables.ScriptRecord() - script_record.ScriptTag = script_tag - script_record.Script = otTables.Script() - script_record.Script.DefaultLangSys = def_lang_sys - script_record.Script.LangSysCount = 0 - script_record.Script.LangSysRecord = [] - - script_list = otTables.ScriptList() - script_list.ScriptCount = 1 - script_list.ScriptRecord = [script_record] - - return script_list - - -def create_feature_list(feature_tag, lookup_count): - """Create a FeatureList for the GSUB table.""" - feature_record = otTables.FeatureRecord() - feature_record.FeatureTag = feature_tag - feature_record.Feature = otTables.Feature() - feature_record.Feature.LookupCount = lookup_count - feature_record.Feature.LookupListIndex = range(lookup_count) - feature_record.Feature.FeatureParams = None - - feature_list = otTables.FeatureList() - feature_list.FeatureCount = 1 - feature_list.FeatureRecord = [feature_record] - - return feature_list - - -def create_lookup_list(lookups): - """Create a LookupList for the GSUB table.""" - lookup_list = otTables.LookupList() - lookup_list.LookupCount = len(lookups) - lookup_list.Lookup = lookups - - return lookup_list - - -def get_glyph_name_or_create(char, font): - """Return the glyph name for a character, creating if it doesn't exist.""" - cmap = font_data.get_cmap(font) - if char in cmap: - return cmap[char] - - glyph_name = agl.UV2AGL[char] - assert glyph_name not in font.glyphOrder - - font['hmtx'].metrics[glyph_name] = [0, 0] - cmap[char] = glyph_name - - if 'glyf' in font: - from fontTools.ttLib.tables import _g_l_y_f - empty_glyph = _g_l_y_f.Glyph() - font['glyf'].glyphs[glyph_name] = empty_glyph - - font.glyphOrder.append(glyph_name) - return glyph_name - - -def create_lookup(table, font, flag=0): - """Create a Lookup based on mapping table.""" - cmap = font_data.get_cmap(font) - - ligatures = {} - for output, (ch1, ch2) in table.iteritems(): - output = cmap[output] - ch1 = get_glyph_name_or_create(ch1, font) - ch2 = get_glyph_name_or_create(ch2, font) - - ligature = otTables.Ligature() - ligature.CompCount = 2 - ligature.Component = [ch2] - ligature.LigGlyph = output - - try: - ligatures[ch1].append(ligature) - except KeyError: - ligatures[ch1] = [ligature] - - ligature_subst = otTables.LigatureSubst() - ligature_subst.ligatures = ligatures - - lookup = otTables.Lookup() - lookup.LookupType = 4 - lookup.LookupFlag = flag - lookup.SubTableCount = 1 - lookup.SubTable = [ligature_subst] - - return lookup - - -def create_simple_gsub(lookups, script='DFLT', feature='ccmp'): - """Create a simple GSUB table.""" - gsub_class = ttLib.getTableClass('GSUB') - gsub = gsub_class('GSUB') - - gsub.table = otTables.GSUB() - gsub.table.Version = 1.0 - gsub.table.ScriptList = create_script_list(script) - gsub.table.FeatureList = create_feature_list(feature, len(lookups)) - gsub.table.LookupList = create_lookup_list(lookups) - return gsub - - -def reg_indicator(letter): - """Return a regional indicator charater from corresponing capital letter. - """ - return 0x1F1E6 + ord(letter) - ord('A') - - -EMOJI_FLAGS = { - 0xFE4E5: (reg_indicator('J'), reg_indicator('P')), # Japan - 0xFE4E6: (reg_indicator('U'), reg_indicator('S')), # United States - 0xFE4E7: (reg_indicator('F'), reg_indicator('R')), # France - 0xFE4E8: (reg_indicator('D'), reg_indicator('E')), # Germany - 0xFE4E9: (reg_indicator('I'), reg_indicator('T')), # Italy - 0xFE4EA: (reg_indicator('G'), reg_indicator('B')), # United Kingdom - 0xFE4EB: (reg_indicator('E'), reg_indicator('S')), # Spain - 0xFE4EC: (reg_indicator('R'), reg_indicator('U')), # Russia - 0xFE4ED: (reg_indicator('C'), reg_indicator('N')), # China - 0xFE4EE: (reg_indicator('K'), reg_indicator('R')), # Korea -} - -KEYCAP = 0x20E3 - -EMOJI_KEYCAPS = { - 0xFE82C: (ord('#'), KEYCAP), - 0xFE82E: (ord('1'), KEYCAP), - 0xFE82F: (ord('2'), KEYCAP), - 0xFE830: (ord('3'), KEYCAP), - 0xFE831: (ord('4'), KEYCAP), - 0xFE832: (ord('5'), KEYCAP), - 0xFE833: (ord('6'), KEYCAP), - 0xFE834: (ord('7'), KEYCAP), - 0xFE835: (ord('8'), KEYCAP), - 0xFE836: (ord('9'), KEYCAP), - 0xFE837: (ord('0'), KEYCAP), -} - -def main(argv): - """Modify all the fonts given in the command line.""" - for font_name in argv[1:]: - font = ttLib.TTFont(font_name) - - assert 'GSUB' not in font - font['GSUB'] = create_simple_gsub([ - create_lookup(EMOJI_KEYCAPS, font), - create_lookup(EMOJI_FLAGS, font)]) - - font_data.delete_from_cmap( - font, EMOJI_FLAGS.keys() + EMOJI_KEYCAPS.keys()) - - font.save(font_name+'-fixed') - -if __name__ == '__main__': - main(sys.argv) diff --git a/add_glyphs.py b/add_glyphs.py deleted file mode 100644 index 3c4aa4289..000000000 --- a/add_glyphs.py +++ /dev/null @@ -1,405 +0,0 @@ -#!/usr/bin/env python3 - -"""Extend a ttx file with additional data. - -Takes a ttx file and one or more directories containing image files named -after sequences of codepoints, extends the cmap, hmtx, GSUB, and GlyphOrder -tables in the source ttx file based on these sequences, and writes out a new -ttx file. - -This can also apply aliases from an alias file.""" - -import argparse -import collections -import os -from os import path -import re -import sys - -from fontTools import ttx -from fontTools.ttLib.tables import otTables - -import add_emoji_gsub -import add_aliases - -sys.path.append( - path.join(os.path.dirname(__file__), 'third_party', 'color_emoji')) -from png import PNG - - -def get_seq_to_file(image_dir, prefix, suffix): - """Return a mapping from codepoint sequences to files in the given directory, - for files that match the prefix and suffix. File names with this prefix and - suffix should consist of codepoints in hex separated by underscore. 'fe0f' - (the codepoint of the emoji presentation variation selector) is stripped from - the sequence. - """ - start = len(prefix) - limit = -len(suffix) - seq_to_file = {} - for name in os.listdir(image_dir): - if not (name.startswith(prefix) and name.endswith(suffix)): - continue - try: - cps = [int(s, 16) for s in name[start:limit].split('_')] - seq = tuple(cp for cp in cps if cp != 0xfe0f) - except: - raise Exception('could not parse "%s"' % name) - for cp in cps: - if not (0 <= cp <= 0x10ffff): - raise Exception('bad codepoint(s) in "%s"' % name) - if seq in seq_to_file: - raise Exception('duplicate sequence for "%s" in %s' % (name, image_dir)) - seq_to_file[seq] = path.join(image_dir, name) - return seq_to_file - - -def collect_seq_to_file(image_dirs, prefix, suffix): - """Return a sequence to file mapping by calling get_seq_to_file on a list - of directories. When sequences for files in later directories match those - from earlier directories, the later file replaces the earlier one. - """ - seq_to_file = {} - for image_dir in image_dirs: - seq_to_file.update(get_seq_to_file(image_dir, prefix, suffix)) - return seq_to_file - - -def remap_values(seq_to_file, map_fn): - return {k: map_fn(v) for k, v in seq_to_file.items()} - - -def get_png_file_to_advance_mapper(lineheight): - def map_fn(filename): - wid, ht = PNG(filename).get_size() - return int(round(float(lineheight) * wid / ht)) - return map_fn - - -def cp_name(cp): - """return uniXXXX or uXXXXX(X) as a name for the glyph mapped to this cp.""" - return '%s%04X' % ('u' if cp > 0xffff else 'uni', cp) - - -def seq_name(seq): - """Sequences of length one get the cp_name. Others start with 'u' followed by - two or more 4-to-6-digit hex strings separated by underscore.""" - if len(seq) == 1: - return cp_name(seq[0]) - return 'u' + '_'.join('%04X' % cp for cp in seq) - - -def collect_cps(seqs): - cps = set() - for seq in seqs: - cps.update(seq) - return cps - - -def get_glyphorder_cps_and_truncate(glyphOrder): - """This scans glyphOrder for names that correspond to a single codepoint - using the 'u(ni)XXXXXX' syntax. All names that don't match are moved - to the front the glyphOrder list in their original order, and the - list is truncated. The ones that do match are returned as a set of - codepoints.""" - glyph_name_re = re.compile(r'^u(?:ni)?([0-9a-fA-F]{4,6})$') - cps = set() - write_ix = 0 - for ix, name in enumerate(glyphOrder): - m = glyph_name_re.match(name) - if m: - cps.add(int(m.group(1), 16)) - else: - glyphOrder[write_ix] = name - write_ix += 1 - del glyphOrder[write_ix:] - return cps - - -def get_all_seqs(font, seq_to_advance): - """Copies the sequences from seq_to_advance and extends it with single- - codepoint sequences from the GlyphOrder table as well as those internal - to sequences in seq_to_advance. Reduces the GlyphOrder table. """ - - all_seqs = set(seq_to_advance.keys()) - # using collect_cps includes cps internal to a seq - cps = collect_cps(all_seqs) - glyphOrder = font.getGlyphOrder() - # extract cps in glyphOrder and reduce glyphOrder to only those that remain - glyphOrder_cps = get_glyphorder_cps_and_truncate(glyphOrder) - cps.update(glyphOrder_cps) - # add new single codepoint sequences from glyphOrder and sequences - all_seqs.update((cp,) for cp in cps) - return all_seqs - - -def get_font_cmap(font): - """Return the first cmap in the font, we assume it exists and is a unicode - cmap.""" - return font['cmap'].tables[0].cmap - - -def add_glyph_data(font, seqs, seq_to_advance, vadvance): - """Add hmtx and GlyphOrder data for all sequences in seqs, and ensures there's - a cmap entry for each single-codepoint sequence. Seqs not in seq_to_advance - will get a zero advance.""" - - # We allow the template cmap to omit mappings for single-codepoint glyphs - # defined in the template's GlyphOrder table. Similarly, the hmtx table can - # omit advances. We assume glyphs named 'uniXXXX' or 'uXXXXX(X)' in the - # GlyphOrder table correspond to codepoints based on the name; we don't - # attempt to handle other types of names and these must occur in the cmap and - # hmtx tables in the template. - # - # seq_to_advance maps sequences (including single codepoints) to advances. - # All codepoints in these sequences will be added to the cmap. Some cps - # in these sequences have no corresponding single-codepoint sequence, they - # will also get added. - # - # The added codepoints have no advance information, so will get a zero - # advance. - - cmap = get_font_cmap(font) - hmtx = font['hmtx'].metrics - vmtx = font['vmtx'].metrics - - # We don't expect sequences to be in the glyphOrder, since we removed all the - # single-cp sequences from it and don't expect it to already contain names - # corresponding to multiple-cp sequencess. But just in case, we use - # reverseGlyphMap to avoid duplicating names accidentally. - - updatedGlyphOrder = False - reverseGlyphMap = font.getReverseGlyphMap() - - # Order the glyphs by grouping all the single-codepoint sequences first, - # then order by sequence so that related sequences are together. We group - # by single-codepoint sequence first in order to keep these glyphs together-- - # they're used in the coverage tables for some of the substitutions, and - # those tables can be more compact this way. - for seq in sorted(seqs, key=lambda s: (0 if len(s) == 1 else 1, s)): - name = seq_name(seq) - if len(seq) == 1: - cmap[seq[0]] = name - advance = seq_to_advance.get(seq, 0) - hmtx[name] = [advance, 0] - vmtx[name] = [vadvance, 0] - if name not in reverseGlyphMap: - font.glyphOrder.append(name) - updatedGlyphOrder=True - - if updatedGlyphOrder: - delattr(font, '_reverseGlyphOrderDict') - - -def add_aliases_to_cmap(font, aliases): - """Some aliases might map a single codepoint to some other sequence. These - should map directly to the glyph for that sequence in the cmap. (Others will - map via GSUB). - """ - if not aliases: - return - - cp_aliases = [seq for seq in aliases if len(seq) == 1] - if not cp_aliases: - return - - cmap = get_font_cmap(font) - for src_seq in cp_aliases: - cp = src_seq[0] - name = seq_name(aliases[src_seq]) - cmap[cp] = name - - -def get_rtl_seq(seq): - """Return the rtl variant of the sequence, if it has one, else the empty - sequence. - """ - # Sequences with ZWJ or TAG_END in them will reflect. Fitzpatrick modifiers - # however do not, so if we reflect we make a pass to swap them back into their - # logical order. - - ZWJ = 0x200d - TAG_END = 0xe007f - def is_fitzpatrick(cp): - return 0x1f3fb <= cp <= 0x1f3ff - - if not (ZWJ in seq or TAG_END in seq): - return () - - rev_seq = list(seq) - rev_seq.reverse() - for i in range(len(rev_seq)-1, 0, -1): - if is_fitzpatrick(rev_seq[i-1]): - rev_seq[i-1], rev_seq[i] = rev_seq[i], rev_seq[i-1] - return tuple(rev_seq) - - -def get_gsub_ligature_lookup(font): - """If the font does not have a GSUB table, create one with a ligature - substitution lookup. If it does, ensure the first lookup is a properly - initialized ligature substitution lookup. Return the lookup.""" - - # The template might include more lookups after lookup 0, if it has a - # GSUB table. - if 'GSUB' not in font: - ligature_subst = otTables.LigatureSubst() - ligature_subst.ligatures = {} - - lookup = otTables.Lookup() - lookup.LookupType = 4 - lookup.LookupFlag = 0 - lookup.SubTableCount = 1 - lookup.SubTable = [ligature_subst] - - font['GSUB'] = add_emoji_gsub.create_simple_gsub([lookup]) - else: - lookup = font['GSUB'].table.LookupList.Lookup[0] - assert lookup.LookupFlag == 0 - - # importXML doesn't fully init GSUB structures, so help it out - st = lookup.SubTable[0] - if not hasattr(lookup, 'LookupType'): - assert st.LookupType == 4 - setattr(lookup, 'LookupType', 4) - - if not hasattr(st, 'ligatures'): - setattr(st, 'ligatures', {}) - - return lookup - - -def add_ligature_sequences(font, seqs, aliases): - """Add ligature sequences.""" - - seq_to_target_name = { - seq: seq_name(seq) for seq in seqs if len(seq) > 1} - if aliases: - seq_to_target_name.update({ - seq: seq_name(aliases[seq]) for seq in aliases if len(seq) > 1}) - if not seq_to_target_name: - return - - rtl_seq_to_target_name = { - get_rtl_seq(seq): name for seq, name in seq_to_target_name.items()} - seq_to_target_name.update(rtl_seq_to_target_name) - # sequences that don't have rtl variants get mapped to the empty sequence, - # delete it. - if () in seq_to_target_name: - del seq_to_target_name[()] - - # organize by first codepoint in sequence - keyed_ligatures = collections.defaultdict(list) - for t in seq_to_target_name.items(): - first_cp = t[0][0] - keyed_ligatures[first_cp].append(t) - - def add_ligature(lookup, cmap, seq, name): - # The sequences consist of codepoints, but the entries in the ligature table - # are glyph names. Aliasing can give single codepoints names based on - # sequences (e.g. 'guardsman' with 'male guardsman') so we map the - # codepoints through the cmap to get the glyph names. - glyph_names = [cmap[cp] for cp in seq] - - lig = otTables.Ligature() - lig.CompCount = len(seq) - lig.Component = glyph_names[1:] - lig.LigGlyph = name - - ligatures = lookup.SubTable[0].ligatures - first_name = glyph_names[0] - try: - ligatures[first_name].append(lig) - except KeyError: - ligatures[first_name] = [lig] - - lookup = get_gsub_ligature_lookup(font) - cmap = get_font_cmap(font) - for first_cp in sorted(keyed_ligatures): - pairs = keyed_ligatures[first_cp] - - # Sort longest first, this ensures longer sequences with common prefixes - # are handled before shorter ones. The secondary sort is a standard - # sort on the codepoints in the sequence. - pairs.sort(key = lambda pair: (-len(pair[0]), pair[0])) - for seq, name in pairs: - add_ligature(lookup, cmap, seq, name) - - -def update_font_data(font, seq_to_advance, vadvance, aliases): - """Update the font's cmap, hmtx, GSUB, and GlyphOrder tables.""" - seqs = get_all_seqs(font, seq_to_advance) - add_glyph_data(font, seqs, seq_to_advance, vadvance) - add_aliases_to_cmap(font, aliases) - add_ligature_sequences(font, seqs, aliases) - - -def apply_aliases(seq_dict, aliases): - """Aliases is a mapping from sequence to replacement sequence. We can use - an alias if the target is a key in the dictionary. Furthermore, if the - source is a key in the dictionary, we can delete it. This updates the - dictionary and returns the usable aliases.""" - usable_aliases = {} - for k, v in aliases.items(): - if v in seq_dict: - usable_aliases[k] = v - if k in seq_dict: - del seq_dict[k] - return usable_aliases - - -def update_ttx(in_file, out_file, image_dirs, prefix, ext, aliases_file): - if ext != '.png': - raise Exception('extension "%s" not supported' % ext) - - seq_to_file = collect_seq_to_file(image_dirs, prefix, ext) - if not seq_to_file: - raise ValueError( - 'no sequences with prefix "%s" and extension "%s" in %s' % ( - prefix, ext, ', '.join(image_dirs))) - - aliases = None - if aliases_file: - aliases = add_aliases.read_emoji_aliases(aliases_file) - aliases = apply_aliases(seq_to_file, aliases) - - font = ttx.TTFont() - font.importXML(in_file) - - lineheight = font['hhea'].ascent - font['hhea'].descent - map_fn = get_png_file_to_advance_mapper(lineheight) - seq_to_advance = remap_values(seq_to_file, map_fn) - - vadvance = font['vhea'].advanceHeightMax if 'vhea' in font else lineheight - - update_font_data(font, seq_to_advance, vadvance, aliases) - - font.saveXML(out_file) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - '-f', '--in_file', help='ttx input file', metavar='file', required=True) - parser.add_argument( - '-o', '--out_file', help='ttx output file', metavar='file', required=True) - parser.add_argument( - '-d', '--image_dirs', help='directories containing image files', - nargs='+', metavar='dir', required=True) - parser.add_argument( - '-p', '--prefix', help='file prefix (default "emoji_u")', - metavar='pfx', default='emoji_u') - parser.add_argument( - '-e', '--ext', help='file extension (default ".png", currently only ' - '".png" is supported', metavar='ext', default='.png') - parser.add_argument( - '-a', '--aliases', help='process alias table', const='emoji_aliases.txt', - nargs='?', metavar='file') - args = parser.parse_args() - - update_ttx( - args.in_file, args.out_file, args.image_dirs, args.prefix, args.ext, - args.aliases) - - -if __name__ == '__main__': - main() diff --git a/add_svg_glyphs.py b/add_svg_glyphs.py deleted file mode 100755 index 18ea560a8..000000000 --- a/add_svg_glyphs.py +++ /dev/null @@ -1,295 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2015 Google, Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Google Author(s): Doug Felt - -"""Tool to update GSUB, hmtx, cmap, glyf tables with svg image glyphs.""" -from __future__ import print_function - -import argparse -import glob -import logging -import os -import re -import sys - -from fontTools.ttLib.tables import otTables -from fontTools.ttLib.tables import _g_l_y_f -from fontTools.ttLib.tables import S_V_G_ as SVG -from fontTools import ttx - -from nototools import tool_utils - -import add_emoji_gsub -import svg_builder - - -class FontBuilder(object): - """A utility for mutating a ttx font. This maintains glyph_order, cmap, and - hmtx tables, and optionally GSUB, glyf, and SVN tables as well.""" - - def __init__(self, font): - self.font = font; - self.glyph_order = font.getGlyphOrder() - self.cmap = font['cmap'].tables[0].cmap - self.hmtx = font['hmtx'].metrics - - def init_gsub(self): - """Call this if you are going to add ligatures to the font. Creates a GSUB - table if there isn't one already.""" - - if hasattr(self, 'ligatures'): - return - font = self.font - if 'GSUB' not in font: - ligature_subst = otTables.LigatureSubst() - ligature_subst.ligatures = {} - - lookup = otTables.Lookup() - lookup.LookupType = 4 - lookup.LookupFlag = 0 - lookup.SubTableCount = 1 - lookup.SubTable = [ligature_subst] - - font['GSUB'] = add_emoji_gsub.create_simple_gsub([lookup]) - else: - lookup = font['GSUB'].table.LookupList.Lookup[0] - assert lookup.LookupType == 4 - assert lookup.LookupFlag == 0 - self.ligatures = lookup.SubTable[0].ligatures - - def init_glyf(self): - """Call this if you need to create empty glyf entries in the font when you - add a new glyph.""" - - if hasattr(self, 'glyphs'): - return - font = self.font - if 'glyf' not in font: - glyf_table = _g_l_y_f.table__g_l_y_f() - glyf_table.glyphs = {} - glyf_table.glyphOrder = self.glyph_order - font['glyf'] = glyf_table - self.glyphs = font['glyf'].glyphs - - def init_svg(self): - """Call this if you expect to add SVG images in the font. This calls - init_glyf since SVG support currently requires fallback glyf records for - each SVG image.""" - - if hasattr(self, 'svgs'): - return - - # svg requires glyf - self.init_glyf() - - font = self.font - if 'SVG ' not in font: - svg_table = SVG.table_S_V_G_() - svg_table.docList = [] - svg_table.colorPalettes = None - font['SVG '] = svg_table - self.svgs = font['SVG '].docList - - def glyph_name(self, string): - return "_".join(["u%04X" % ord(char) for char in string]) - - def glyph_name_to_index(self, name): - return self.glyph_order.index(name) if name in self.glyph_order else -1; - - def glyph_index_to_name(self, glyph_index): - if glyph_index < len(self.glyph_order): - return self.glyph_order[glyph_index] - return '' - - def have_glyph(self, name): - return self.name_to_glyph_index >= 0 - - def _add_ligature(self, glyphstr): - lig = otTables.Ligature() - lig.CompCount = len(glyphstr) - lig.Component = [self.glyph_name(ch) for ch in glyphstr[1:]] - lig.LigGlyph = self.glyph_name(glyphstr) - - first = self.glyph_name(glyphstr[0]) - try: - self.ligatures[first].append(lig) - except KeyError: - self.ligatures[first] = [lig] - - def _add_empty_glyph(self, glyphstr, name): - """Create an empty glyph. If glyphstr is not a ligature, add a cmap entry - for it.""" - if len(glyphstr) == 1: - self.cmap[ord(glyphstr)] = name - self.hmtx[name] = [0, 0] - self.glyph_order.append(name) - if hasattr(self, 'glyphs'): - self.glyphs[name] = _g_l_y_f.Glyph() - - def add_components_and_ligature(self, glyphstr): - """Convert glyphstr to a name and check if it already exists. If not, check - if it is a ligature (longer than one codepoint), and if it is, generate - empty glyphs with cmap entries for any missing ligature components and add a - ligature record. Then generate an empty glyph for the name. Return a tuple - with the name, index, and a bool indicating whether the glyph already - existed.""" - - name = self.glyph_name(glyphstr) - index = self.glyph_name_to_index(name) - exists = index >= 0 - if not exists: - if len(glyphstr) > 1: - for char in glyphstr: - if ord(char) not in self.cmap: - char_name = self.glyph_name(char) - self._add_empty_glyph(char, char_name) - self._add_ligature(glyphstr) - index = len(self.glyph_order) - self._add_empty_glyph(glyphstr, name) - return name, index, exists - - def add_svg(self, doc, hmetrics, name, index): - """Add an svg table entry. If hmetrics is not None, update the hmtx table. - This expects the glyph has already been added.""" - # sanity check to make sure name and index correspond. - assert name == self.glyph_index_to_name(index) - if hmetrics: - self.hmtx[name] = hmetrics - svg_record = (doc, index, index) # startGlyphId, endGlyphId are the same - self.svgs.append(svg_record) - - -def collect_glyphstr_file_pairs(prefix, ext, include=None, exclude=None, verbosity=1): - """Scan files with the given prefix and extension, and return a list of - (glyphstr, filename) where glyphstr is the character or ligature, and filename - is the image file associated with it. The glyphstr is formed by decoding the - filename (exclusive of the prefix) as a sequence of hex codepoints separated - by underscore. Include, if defined, is a regex string to include only matched - filenames. Exclude, if defined, is a regex string to exclude matched - filenames, and is applied after include.""" - - image_files = {} - glob_pat = "%s*.%s" % (prefix, ext) - leading = len(prefix) - trailing = len(ext) + 1 # include dot - logging.info("Looking for images matching '%s'.", glob_pat) - ex_count = 0 - ex = re.compile(exclude) if exclude else None - inc = re.compile(include) if include else None - if inc: - logging.info("Including images matching '%s'.", include) - if ex: - logging.info("Excluding images matching '%s'.", exclude) - - for image_file in glob.glob(glob_pat): - if inc and not inc.search(image_file): - continue - - if ex and ex.search(image_file): - if verbosity > 1: - print("Exclude %s" % image_file) - ex_count += 1 - continue - - codes = image_file[leading:-trailing] - if "_" in codes: - pieces = codes.split ("_") - u = "".join ([unichr(int(code, 16)) for code in pieces]) - else: - u = unichr(int(codes, 16)) - image_files[u] = image_file - - if ex_count: - logging.info("Excluded %d files.", ex_count) - if not image_files: - raise Exception ("No image files matching '%s'.", glob_pat) - logging.info("Matched %s files.", len(image_files)) - return image_files.items() - - -def sort_glyphstr_tuples(glyphstr_tuples): - """The list contains tuples whose first element is a string representing a - character or ligature. It is sorted with shorter glyphstrs first, then - alphabetically. This ensures that ligature components are added to the font - before any ligatures that contain them.""" - glyphstr_tuples.sort(key=lambda t: (len(t[0]), t[0])) - - -def add_image_glyphs(in_file, out_file, pairs): - """Add images from pairs (glyphstr, filename) to .ttx file in_file and write - to .ttx file out_file.""" - - font = ttx.TTFont() - font.importXML(in_file) - - sort_glyphstr_tuples(pairs) - - font_builder = FontBuilder(font) - # we've already sorted by length, so the longest glyphstrs are at the end. To - # see if we have ligatures, we just need to check the last one. - if len(pairs[-1][0]) > 1: - font_builder.init_gsub() - - img_builder = svg_builder.SvgBuilder(font_builder) - for glyphstr, filename in pairs: - logging.debug("Adding glyph for U+%s", ",".join( - ["%04X" % ord(char) for char in glyphstr])) - img_builder.add_from_filename(glyphstr, filename) - - font.saveXML(out_file) - logging.info("Added %s images to %s", len(pairs), out_file) - - -def main(argv): - usage = """This will search for files that have image_prefix followed by one - or more hex numbers (separated by underscore if more than one), and end in - ".svg". For example, if image_prefix is "icons/u", then files with names like - "icons/u1F4A9.svg" or "icons/u1F1EF_1F1F5.svg" will be loaded. The script - then adds cmap, htmx, and potentially GSUB entries for the Unicode characters - found. The advance width will be chosen based on image aspect ratio. If - Unicode values outside the BMP are desired, the existing cmap table should be - of the appropriate (format 12) type. Only the first cmap table and the first - GSUB lookup (if existing) are modified.""" - - parser = argparse.ArgumentParser( - description='Update cmap, glyf, GSUB, and hmtx tables from image glyphs.', - epilog=usage) - parser.add_argument( - 'in_file', help='Input ttx file name.', metavar='fname') - parser.add_argument( - 'out_file', help='Output ttx file name.', metavar='fname') - parser.add_argument( - 'image_prefix', help='Location and prefix of image files.', - metavar='path') - parser.add_argument( - '-i', '--include', help='include files whoses name matches this regex', - metavar='regex') - parser.add_argument( - '-e', '--exclude', help='exclude files whose name matches this regex', - metavar='regex') - parser.add_argument( - '-l', '--loglevel', help='log level name', default='warning') - args = parser.parse_args(argv) - - tool_utils.setup_logging(args.loglevel) - - pairs = collect_glyphstr_file_pairs( - args.image_prefix, 'svg', include=args.include, exclude=args.exclude) - add_image_glyphs(args.in_file, args.out_file, pairs) - - -if __name__ == '__main__': - main(sys.argv[1:]) diff --git a/check_emoji_sequences.py b/check_emoji_sequences.py deleted file mode 100755 index 1eb4b5b0f..000000000 --- a/check_emoji_sequences.py +++ /dev/null @@ -1,463 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2016 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Compare emoji image file namings against unicode property data.""" -from __future__ import print_function - -import argparse -import collections -import glob -import os -from os import path -import re -import sys - -from nototools import unicode_data -import add_aliases - -ZWJ = 0x200d -EMOJI_VS = 0xfe0f - -END_TAG = 0xe007f - -def _make_tag_set(): - tag_set = set() - tag_set |= set(range(0xe0030, 0xe003a)) # 0-9 - tag_set |= set(range(0xe0061, 0xe007b)) # a-z - tag_set.add(END_TAG) - return tag_set - -TAG_SET = _make_tag_set() - -_namedata = None - -def seq_name(seq): - global _namedata - - if not _namedata: - def strip_vs_map(seq_map): - return { - unicode_data.strip_emoji_vs(k): v - for k, v in seq_map.iteritems()} - _namedata = [ - strip_vs_map(unicode_data.get_emoji_combining_sequences()), - strip_vs_map(unicode_data.get_emoji_flag_sequences()), - strip_vs_map(unicode_data.get_emoji_modifier_sequences()), - strip_vs_map(unicode_data.get_emoji_zwj_sequences()), - ] - - if len(seq) == 1: - return unicode_data.name(seq[0], None) - - for data in _namedata: - if seq in data: - return data[seq] - if EMOJI_VS in seq: - non_vs_seq = unicode_data.strip_emoji_vs(seq) - for data in _namedata: - if non_vs_seq in data: - return data[non_vs_seq] - - return None - - -def _check_no_vs(sorted_seq_to_filepath): - """Our image data does not use emoji presentation variation selectors.""" - for seq, fp in sorted_seq_to_filepath.iteritems(): - if EMOJI_VS in seq: - print('check no VS: FE0F in path: %s' % fp) - - -def _check_valid_emoji_cps(sorted_seq_to_filepath, unicode_version): - """Ensure all cps in these sequences are valid emoji cps or specific cps - used in forming emoji sequences. This is a 'pre-check' that reports - this specific problem.""" - - valid_cps = set(unicode_data.get_emoji()) - if unicode_version is None or unicode_version >= unicode_data.PROPOSED_EMOJI_AGE: - valid_cps |= unicode_data.proposed_emoji_cps() - else: - valid_cps = set( - cp for cp in valid_cps if unicode_data.age(cp) <= unicode_version) - valid_cps.add(0x200d) # ZWJ - valid_cps.add(0x20e3) # combining enclosing keycap - valid_cps.add(0xfe0f) # variation selector (emoji presentation) - valid_cps.add(0xfe82b) # PUA value for unknown flag - valid_cps |= TAG_SET # used in subregion tag sequences - - not_emoji = {} - for seq, fp in sorted_seq_to_filepath.iteritems(): - for cp in seq: - if cp not in valid_cps: - if cp not in not_emoji: - not_emoji[cp] = [] - not_emoji[cp].append(fp) - - if len(not_emoji): - print( - 'check valid emoji cps: %d non-emoji cp found' % len(not_emoji), - file=sys.stderr) - for cp in sorted(not_emoji): - fps = not_emoji[cp] - print( - 'check valid emoji cps: %04x (in %d sequences)' % (cp, len(fps)), - file=sys.stderr) - - -def _check_zwj(sorted_seq_to_filepath): - """Ensure zwj is only between two appropriate emoji. This is a 'pre-check' - that reports this specific problem.""" - - for seq, fp in sorted_seq_to_filepath.iteritems(): - if ZWJ not in seq: - continue - if seq[0] == ZWJ: - print('check zwj: zwj at head of sequence in %s' % fp, file=sys.stderr) - if len(seq) == 1: - continue - if seq[-1] == ZWJ: - print('check zwj: zwj at end of sequence in %s' % fp, file=sys.stderr) - for i, cp in enumerate(seq): - if cp == ZWJ: - if i > 0: - pcp = seq[i-1] - if pcp != EMOJI_VS and not unicode_data.is_emoji(pcp): - print( - 'check zwj: non-emoji %04x preceeds ZWJ in %s' % (pcp, fp), - file=sys.stderr) - if i < len(seq) - 1: - fcp = seq[i+1] - if not unicode_data.is_emoji(fcp): - print( - 'check zwj: non-emoji %04x follows ZWJ in %s' % (fcp, fp), - file=sys.stderr) - - -def _check_flags(sorted_seq_to_filepath): - """Ensure regional indicators are only in sequences of one or two, and - never mixed.""" - for seq, fp in sorted_seq_to_filepath.iteritems(): - have_reg = None - for cp in seq: - is_reg = unicode_data.is_regional_indicator(cp) - if have_reg == None: - have_reg = is_reg - elif have_reg != is_reg: - print( - 'check flags: mix of regional and non-regional in %s' % fp, - file=sys.stderr) - if have_reg and len(seq) > 2: - # We provide dummy glyphs for regional indicators, so there are sequences - # with single regional indicator symbols, the len check handles this. - print( - 'check flags: regional indicator sequence length != 2 in %s' % fp, - file=sys.stderr) - -def _check_tags(sorted_seq_to_filepath): - """Ensure tag sequences (for subregion flags) conform to the spec. We don't - validate against CLDR, just that there's a sequence of 2 or more tags starting - and ending with the appropriate codepoints.""" - - BLACK_FLAG = 0x1f3f4 - BLACK_FLAG_SET = set([BLACK_FLAG]) - for seq, fp in sorted_seq_to_filepath.iteritems(): - seq_set = set(cp for cp in seq) - overlap_set = seq_set & TAG_SET - if not overlap_set: - continue - if seq[0] != BLACK_FLAG: - print('check tags: bad start tag in %s' % fp) - elif seq[-1] != END_TAG: - print('check tags: bad end tag in %s' % fp) - elif len(seq) < 4: - print('check tags: sequence too short in %s' % fp) - elif seq_set - TAG_SET != BLACK_FLAG_SET: - print('check tags: non-tag items in %s' % fp) - - -def _check_skintone(sorted_seq_to_filepath): - """Ensure skin tone modifiers are not applied to emoji that are not defined - to take them. May appear standalone, though. Also check that emoji that take - skin tone modifiers have a complete set.""" - base_to_modifiers = collections.defaultdict(set) - for seq, fp in sorted_seq_to_filepath.iteritems(): - for i, cp in enumerate(seq): - if unicode_data.is_skintone_modifier(cp): - if i == 0: - if len(seq) > 1: - print( - 'check skintone: skin color selector first in sequence %s' % fp, - file=sys.stderr) - # standalone are ok - continue - pcp = seq[i-1] - if not unicode_data.is_emoji_modifier_base(pcp): - print( - 'check skintone: emoji skintone modifier applied to non-base ' + - 'at %d: %s' % (i, fp), file=sys.stderr) - else: - if pcp not in base_to_modifiers: - base_to_modifiers[pcp] = set() - base_to_modifiers[pcp].add(cp) - - for cp, modifiers in sorted(base_to_modifiers.iteritems()): - if len(modifiers) != 5: - print( - 'check skintone: base %04x has %d modifiers defined (%s) in %s' % ( - cp, len(modifiers), - ', '.join('%04x' % cp for cp in sorted(modifiers)), fp), - file=sys.stderr) - - -def _check_zwj_sequences(sorted_seq_to_filepath, unicode_version): - """Verify that zwj sequences are valid for the given unicode version.""" - for seq, fp in sorted_seq_to_filepath.iteritems(): - if ZWJ not in seq: - continue - age = unicode_data.get_emoji_sequence_age(seq) - if age is None or unicode_version is not None and age > unicode_version: - print('check zwj sequences: undefined sequence %s' % fp) - - -def _check_no_alias_sources(sorted_seq_to_filepath): - """Check that we don't have sequences that we expect to be aliased to - some other sequence.""" - aliases = add_aliases.read_default_emoji_aliases() - for seq, fp in sorted_seq_to_filepath.iteritems(): - if seq in aliases: - print('check no alias sources: aliased sequence %s' % fp) - - -def _check_coverage(seq_to_filepath, unicode_version): - """Ensure we have all and only the cps and sequences that we need for the - font as of this version.""" - - age = unicode_version - - non_vs_to_canonical = {} - for k in seq_to_filepath: - if EMOJI_VS in k: - non_vs = unicode_data.strip_emoji_vs(k) - non_vs_to_canonical[non_vs] = k - - aliases = add_aliases.read_default_emoji_aliases() - for k, v in sorted(aliases.items()): - if v not in seq_to_filepath and v not in non_vs_to_canonical: - alias_str = unicode_data.seq_to_string(k) - target_str = unicode_data.seq_to_string(v) - print('coverage: alias %s missing target %s' % (alias_str, target_str)) - continue - if k in seq_to_filepath or k in non_vs_to_canonical: - alias_str = unicode_data.seq_to_string(k) - target_str = unicode_data.seq_to_string(v) - print('coverage: alias %s already exists as %s (%s)' % ( - alias_str, target_str, seq_name(v))) - continue - filename = seq_to_filepath.get(v) or seq_to_filepath[non_vs_to_canonical[v]] - seq_to_filepath[k] = 'alias:' + filename - - # check single emoji, this includes most of the special chars - emoji = sorted(unicode_data.get_emoji(age=age)) - for cp in emoji: - if tuple([cp]) not in seq_to_filepath: - print( - 'coverage: missing single %04x (%s)' % ( - cp, unicode_data.name(cp, ''))) - - # special characters - # all but combining enclosing keycap are currently marked as emoji - for cp in [ord('*'), ord('#'), ord(u'\u20e3')] + range(0x30, 0x3a): - if cp not in emoji and tuple([cp]) not in seq_to_filepath: - print('coverage: missing special %04x (%s)' % (cp, unicode_data.name(cp))) - - # combining sequences - comb_seq_to_name = sorted( - unicode_data.get_emoji_combining_sequences(age=age).iteritems()) - for seq, name in comb_seq_to_name: - if seq not in seq_to_filepath: - # strip vs and try again - non_vs_seq = unicode_data.strip_emoji_vs(seq) - if non_vs_seq not in seq_to_filepath: - print('coverage: missing combining sequence %s (%s)' % - (unicode_data.seq_to_string(seq), name)) - - # flag sequences - flag_seq_to_name = sorted( - unicode_data.get_emoji_flag_sequences(age=age).iteritems()) - for seq, name in flag_seq_to_name: - if seq not in seq_to_filepath: - print('coverage: missing flag sequence %s (%s)' % - (unicode_data.seq_to_string(seq), name)) - - # skin tone modifier sequences - mod_seq_to_name = sorted( - unicode_data.get_emoji_modifier_sequences(age=age).iteritems()) - for seq, name in mod_seq_to_name: - if seq not in seq_to_filepath: - print('coverage: missing modifier sequence %s (%s)' % ( - unicode_data.seq_to_string(seq), name)) - - # zwj sequences - # some of ours include the emoji presentation variation selector and some - # don't, and the same is true for the canonical sequences. normalize all - # of them to omit it to test coverage, but report the canonical sequence. - zwj_seq_without_vs = set() - for seq in seq_to_filepath: - if ZWJ not in seq: - continue - if EMOJI_VS in seq: - seq = tuple(cp for cp in seq if cp != EMOJI_VS) - zwj_seq_without_vs.add(seq) - - for seq, name in sorted( - unicode_data.get_emoji_zwj_sequences(age=age).iteritems()): - if EMOJI_VS in seq: - test_seq = tuple(s for s in seq if s != EMOJI_VS) - else: - test_seq = seq - if test_seq not in zwj_seq_without_vs: - print('coverage: missing (canonical) zwj sequence %s (%s)' % ( - unicode_data.seq_to_string(seq), name)) - - # check for 'unknown flag' - # this is either emoji_ufe82b or 'unknown_flag', but we filter out things that - # don't start with our prefix so 'unknown_flag' would be excluded by default. - if tuple([0xfe82b]) not in seq_to_filepath: - print('coverage: missing unknown flag PUA fe82b') - - -def check_sequence_to_filepath(seq_to_filepath, unicode_version, coverage): - sorted_seq_to_filepath = collections.OrderedDict( - sorted(seq_to_filepath.items())) - _check_no_vs(sorted_seq_to_filepath) - _check_valid_emoji_cps(sorted_seq_to_filepath, unicode_version) - _check_zwj(sorted_seq_to_filepath) - _check_flags(sorted_seq_to_filepath) - _check_tags(sorted_seq_to_filepath) - _check_skintone(sorted_seq_to_filepath) - _check_zwj_sequences(sorted_seq_to_filepath, unicode_version) - _check_no_alias_sources(sorted_seq_to_filepath) - if coverage: - _check_coverage(sorted_seq_to_filepath, unicode_version) - - -def create_sequence_to_filepath(name_to_dirpath, prefix, suffix): - """Check names, and convert name to sequences for names that are ok, - returning a sequence to file path mapping. Reports bad segments - of a name to stderr.""" - segment_re = re.compile(r'^[0-9a-f]{4,6}$') - result = {} - for name, dirname in name_to_dirpath.iteritems(): - if not name.startswith(prefix): - print('expected prefix "%s" for "%s"' % (prefix, name)) - continue - - segments = name[len(prefix): -len(suffix)].split('_') - segfail = False - seq = [] - for s in segments: - if not segment_re.match(s): - print('bad codepoint name "%s" in %s/%s' % (s, dirname, name)) - segfail = True - continue - n = int(s, 16) - if n > 0x10ffff: - print('codepoint "%s" out of range in %s/%s' % (s, dirname, name)) - segfail = True - continue - seq.append(n) - if not segfail: - result[tuple(seq)] = path.join(dirname, name) - return result - - -def collect_name_to_dirpath(directory, prefix, suffix, exclude=None): - """Return a mapping from filename to path rooted at directory, ignoring files - that don't match suffix, and subtrees with names in exclude. Report when a - filename appears in more than one subdir; the first path found is kept.""" - result = {} - for dirname, dirs, files in os.walk(directory, topdown=True): - if exclude: - dirs[:] = [d for d in dirs if d not in exclude] - - if directory != '.': - dirname = path.join(directory, dirname) - for f in files: - if not f.endswith(suffix): - continue - if f in result: - print('duplicate file "%s" in %s and %s ' % ( - f, dirname, result[f]), file=sys.stderr) - continue - result[f] = dirname - return result - - -def collect_name_to_dirpath_with_override(dirs, prefix, suffix, exclude=None): - """Return a mapping from filename to a directory path rooted at a directory - in dirs, using collect_name_to_filepath. The last directory is retained. This - does not report an error if a file appears under more than one root directory, - so lets later root directories override earlier ones. Use 'exclude' to - name subdirectories (of any root) whose subtree you wish to skip.""" - result = {} - for d in dirs: - result.update(collect_name_to_dirpath(d, prefix, suffix, exclude)) - return result - - -def run_check(dirs, prefix, suffix, exclude, unicode_version, coverage): - msg = '' - if unicode_version: - msg = ' (%3.1f)' % unicode_version - print('Checking files with prefix "%s" and suffix "%s"%s in:\n %s' % ( - prefix, suffix, msg, '\n '.join(dirs))) - name_to_dirpath = collect_name_to_dirpath_with_override( - dirs, prefix=prefix, suffix=suffix, exclude=exclude) - print('checking %d names' % len(name_to_dirpath)) - seq_to_filepath = create_sequence_to_filepath(name_to_dirpath, prefix, suffix) - print('checking %d sequences' % len(seq_to_filepath)) - check_sequence_to_filepath(seq_to_filepath, unicode_version, coverage) - print('done.') - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - '-d', '--dirs', help='directory roots containing emoji images', - metavar='dir', nargs='+', required=True) - parser.add_argument( - '-e', '--exclude', help='names of source subdirs to exclude', - metavar='dir', nargs='+') - parser.add_argument( - '-c', '--coverage', help='test for complete coverage', - action='store_true') - parser.add_argument( - '-p', '--prefix', help='prefix to match, default "emoji_u"', - metavar='pfx', default='emoji_u') - parser.add_argument( - '-s', '--suffix', help='suffix to match, default ".png"', metavar='sfx', - default='.png') - parser.add_argument( - '-u', '--unicode_version', help='limit to this unicode version or before', - metavar='version', type=float) - args = parser.parse_args() - run_check( - args.dirs, args.prefix, args.suffix, args.exclude, args.unicode_version, - args.coverage) - - -if __name__ == '__main__': - main() diff --git a/collect_emoji_svg.py b/collect_emoji_svg.py deleted file mode 100755 index a249f5bda..000000000 --- a/collect_emoji_svg.py +++ /dev/null @@ -1,150 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2015 Google, Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Google Author(s): Doug Felt - -"""Tool to collect emoji svg glyphs into one directory for processing -by add_svg_glyphs. There are two sources, noto/color_emoji/svg and -noto/third_party/region-flags/svg. The add_svg_glyphs file expects -the file names to contain the character string that represents it -represented as a sequence of hex-encoded codepoints separated by -underscore. The files in noto/color_emoji/svg do this, and have the -prefix 'emoji_u', but the files in region-flags/svg just have the -two-letter code. - -We create a directory and copy the files into it with the required -naming convention. First we do this for region-flags/svg, converting -the names, and then we do this for color_emoji/svg, so any duplicates -will be overwritten by what we assume are the preferred svg. We use -copies instead of symlinks so we can continue to optimize or modify -the files without messing with the originals.""" - -import argparse -import glob -import logging -import os -import os.path -import re -import shutil -import sys - -from nototools import tool_utils - -def _is_svg(f): - return f.endswith('.svg') - - -def _is_svg_and_startswith_emoji(f): - return f.endswith('.svg') and f.startswith('emoji_u') - - -def _flag_rename(f): - """Converts a file name from two-letter upper-case ASCII to our expected - 'emoji_uXXXXX_XXXXX form, mapping each character to the corresponding - regional indicator symbol.""" - - cp_strs = [] - name, ext = os.path.splitext(f) - if len(name) != 2: - raise ValueError('illegal flag name "%s"' % f) - for cp in name: - if not ('A' <= cp <= 'Z'): - raise ValueError('illegal flag name "%s"' % f) - ncp = 0x1f1e6 - 0x41 + ord(cp) - cp_strs.append("%04x" % ncp) - return 'emoji_u%s%s' % ('_'.join(cp_strs), ext) - - -def copy_with_rename(src_dir, dst_dir, accept_pred=None, rename=None): - """Copy files from src_dir to dst_dir that match accept_pred (all if None) and - rename using rename (if not None), replacing existing files. accept_pred - takes the filename and returns True if the file should be copied, rename takes - the filename and returns a new file name.""" - - count = 0 - replace_count = 0 - for src_filename in os.listdir(src_dir): - if accept_pred and not accept_pred(src_filename): - continue - dst_filename = rename(src_filename) if rename else src_filename - src = os.path.join(src_dir, src_filename) - dst = os.path.join(dst_dir, dst_filename) - if os.path.exists(dst): - logging.debug('Replacing existing file %s', dst) - os.unlink(dst) - replace_count += 1 - shutil.copy2(src, dst) - logging.debug('cp -p %s %s', src, dst) - count += 1 - if logging.getLogger().getEffectiveLevel() <= logging.INFO: - src_short = tool_utils.short_path(src_dir) - dst_short = tool_utils.short_path(dst_dir) - logging.info('Copied %d files (replacing %d) from %s to %s', - count, replace_count, src_short, dst_short) - - -def build_svg_dir(dst_dir, clean=False, emoji_dir='', flags_dir=''): - """Copies/renames files from emoji_dir and then flags_dir, giving them the - standard format and prefix ('emoji_u' followed by codepoints expressed in hex - separated by underscore). If clean, removes the target dir before proceding. - If either emoji_dir or flags_dir are empty, skips them.""" - - dst_dir = tool_utils.ensure_dir_exists(dst_dir, clean=clean) - - if not emoji_dir and not flags_dir: - logging.warning('Nothing to do.') - return - - if emoji_dir: - copy_with_rename( - emoji_dir, dst_dir, accept_pred=_is_svg_and_startswith_emoji) - - if flags_dir: - copy_with_rename( - flags_dir, dst_dir, accept_pred=_is_svg, rename=_flag_rename) - - -def main(argv): - DEFAULT_EMOJI_DIR = '[emoji]/svg' - DEFAULT_FLAGS_DIR = '[emoji]/third_party/region-flags/svg' - - parser = argparse.ArgumentParser( - description='Collect svg files into target directory with prefix.') - parser.add_argument( - 'dst_dir', help='Directory to hold copied files.', metavar='dir') - parser.add_argument( - '--clean', '-c', help='Replace target directory', action='store_true') - parser.add_argument( - '--flags_dir', '-f', metavar='dir', help='directory containing flag svg, ' - 'default %s' % DEFAULT_FLAGS_DIR, default=DEFAULT_FLAGS_DIR) - parser.add_argument( - '--emoji_dir', '-e', metavar='dir', - help='directory containing emoji svg, default %s' % DEFAULT_EMOJI_DIR, - default=DEFAULT_EMOJI_DIR) - parser.add_argument( - '-l', '--loglevel', help='log level name/value', default='warning') - args = parser.parse_args(argv) - - tool_utils.setup_logging(args.loglevel) - - args.flags_dir = tool_utils.resolve_path(args.flags_dir) - args.emoji_dir = tool_utils.resolve_path(args.emoji_dir) - build_svg_dir( - args.dst_dir, clean=args.clean, emoji_dir=args.emoji_dir, - flags_dir=args.flags_dir) - - -if __name__ == '__main__': - main(sys.argv[1:]) diff --git a/emoji_annotations.txt b/emoji_annotations.txt deleted file mode 100644 index ab5eb7af0..000000000 --- a/emoji_annotations.txt +++ /dev/null @@ -1,458 +0,0 @@ -# annotations -### -### aliases -### -annotation: ok -1f3c3 # RUNNER -> man running -1f3c3 1f3fb # light skin tone -1f3c3 1f3fc # medium-light skin tone -1f3c3 1f3fd # medium skin tone -1f3c3 1f3fe # medium-dark skin tone -1f3c3 1f3ff # dark skin tone -1f3c4 # SURFER -> man surfing -1f3c4 1f3fb # light skin tone -1f3c4 1f3fc # medium-light skin tone -1f3c4 1f3fd # medium skin tone -1f3c4 1f3fe # medium-dark skin tone -1f3c4 1f3ff # dark skin tone -1f3ca # SWIMMER -> man swimming -1f3ca 1f3fb # light skin tone -1f3ca 1f3fc # medium-light skin tone -1f3ca 1f3fd # medium skin tone -1f3ca 1f3fe # medium-dark skin tone -1f3ca 1f3ff # dark skin tone -1f3cb # WEIGHT LIFTER -> man lifting weights -1f3cb 1f3fb # light skin tone -1f3cb 1f3fc # medium-light skin tone -1f3cb 1f3fd # medium skin tone -1f3cb 1f3fe # medium-dark skin tone -1f3cb 1f3ff # dark skin tone -1f3cc # GOLFER -> man golfing -1f3cc 1f3fb # light skin tone -1f3cc 1f3fc # medium-light skin tone -1f3cc 1f3fd # medium skin tone -1f3cc 1f3fe # medium-dark skin tone -1f3cc 1f3ff # dark skin tone -1f46a # FAMILY -> family: man, woman, boy -1f46e # POLICE OFFICER -> man police officer -1f46e 1f3fb # light skin tone -1f46e 1f3fc # medium-light skin tone -1f46e 1f3fd # medium skin tone -1f46e 1f3fe # medium-dark skin tone -1f46e 1f3ff # dark skin tone -1f46f # WOMAN WITH BUNNY EARS -> women with bunny ears partying -1f471 # PERSON WITH BLOND HAIR -> blond-haired man -1f471 1f3fb # light skin tone -1f471 1f3fc # medium-light skin tone -1f471 1f3fd # medium skin tone -1f471 1f3fe # medium-dark skin tone -1f471 1f3ff # dark skin tone -1f473 # MAN WITH TURBAN -> man wearing turban -1f473 1f3fb # light skin tone -1f473 1f3fc # medium-light skin tone -1f473 1f3fd # medium skin tone -1f473 1f3fe # medium-dark skin tone -1f473 1f3ff # dark skin tone -1f477 # CONSTRUCTION WORKER -> man construction worker -1f477 1f3fb # light skin tone -1f477 1f3fc # medium-light skin tone -1f477 1f3fd # medium skin tone -1f477 1f3fe # medium-dark skin tone -1f477 1f3ff # dark skin tone -1f481 # INFORMATION DESK PERSON -> woman tipping hand -1f481 1f3fb # light skin tone -1f481 1f3fc # medium-light skin tone -1f481 1f3fd # medium skin tone -1f481 1f3fe # medium-dark skin tone -1f481 1f3ff # dark skin tone -1f482 # GUARDSMAN -> man guard -1f482 1f3fb # light skin tone -1f482 1f3fc # medium-light skin tone -1f482 1f3fd # medium skin tone -1f482 1f3fe # medium-dark skin tone -1f482 1f3ff # dark skin tone -1f486 # FACE MASSAGE -> woman getting massage -1f486 1f3fb # light skin tone -1f486 1f3fc # medium-light skin tone -1f486 1f3fd # medium skin tone -1f486 1f3fe # medium-dark skin tone -1f486 1f3ff # dark skin tone -1f487 # HAIRCUT -> woman getting haircut -1f487 1f3fb # light skin tone -1f487 1f3fc # medium-light skin tone -1f487 1f3fd # medium skin tone -1f487 1f3fe # medium-dark skin tone -1f487 1f3ff # dark skin tone -1f48f # KISS -> kiss: woman, man -1f491 # COUPLE WITH HEART -> couple with heart: woman, man -1f575 # SLEUTH OR SPY -> man detective -1f575 1f3fb # light skin tone -1f575 1f3fc # medium-light skin tone -1f575 1f3fd # medium skin tone -1f575 1f3fe # medium-dark skin tone -1f575 1f3ff # dark skin tone -1f645 # FACE WITH NO GOOD GESTURE -> woman gesturing NO -1f645 1f3fb # light skin tone -1f645 1f3fc # medium-light skin tone -1f645 1f3fd # medium skin tone -1f645 1f3fe # medium-dark skin tone -1f645 1f3ff # dark skin tone -1f646 # FACE WITH OK GESTURE -> woman gesturing OK -1f646 1f3fb # light skin tone -1f646 1f3fc # medium-light skin tone -1f646 1f3fd # medium skin tone -1f646 1f3fe # medium-dark skin tone -1f646 1f3ff # dark skin tone -1f647 # PERSON BOWING DEEPLY -> man bowing -1f647 1f3fb # light skin tone -1f647 1f3fc # medium-light skin tone -1f647 1f3fd # medium skin tone -1f647 1f3fe # medium-dark skin tone -1f647 1f3ff # dark skin tone -1f64b # HAPPY PERSON RAISING ONE HAND -> woman raising hand -1f64b 1f3fb # light skin tone -1f64b 1f3fc # medium-light skin tone -1f64b 1f3fd # medium skin tone -1f64b 1f3fe # medium-dark skin tone -1f64b 1f3ff # dark skin tone -1f64d # PERSON FROWNING -> woman frowning -1f64d 1f3fb # light skin tone -1f64d 1f3fc # medium-light skin tone -1f64d 1f3fd # medium skin tone -1f64d 1f3fe # medium-dark skin tone -1f64d 1f3ff # dark skin tone -1f64e # PERSON WITH POUTING FACE -> woman pouting -1f64e 1f3fb # light skin tone -1f64e 1f3fc # medium-light skin tone -1f64e 1f3fd # medium skin tone -1f64e 1f3fe # medium-dark skin tone -1f64e 1f3ff # dark skin tone -1f6a3 # ROWBOAT -> man rowing boat -1f6a3 1f3fb # light skin tone -1f6a3 1f3fc # medium-light skin tone -1f6a3 1f3fd # medium skin tone -1f6a3 1f3fe # medium-dark skin tone -1f6a3 1f3ff # dark skin tone -1f6b4 # BICYCLIST -> man biking -1f6b4 1f3fb # light skin tone -1f6b4 1f3fc # medium-light skin tone -1f6b4 1f3fd # medium skin tone -1f6b4 1f3fe # medium-dark skin tone -1f6b4 1f3ff # dark skin tone -1f6b5 # MOUNTAIN BICYCLIST -> man mountain biking -1f6b5 1f3fb # light skin tone -1f6b5 1f3fc # medium-light skin tone -1f6b5 1f3fd # medium skin tone -1f6b5 1f3fe # medium-dark skin tone -1f6b5 1f3ff # dark skin tone -1f6b6 # PEDESTRIAN -> man walking -1f6b6 1f3fb # light skin tone -1f6b6 1f3fc # medium-light skin tone -1f6b6 1f3fd # medium skin tone -1f6b6 1f3fe # medium-dark skin tone -1f6b6 1f3ff # dark skin tone -1f926 # FACE PALM -> woman facepalming -1f926 1f3fb # light skin tone -1f926 1f3fc # medium-light skin tone -1f926 1f3fd # medium skin tone -1f926 1f3fe # medium-dark skin tone -1f926 1f3ff # dark skin tone -1f937 # SHRUG -> woman shrugging -1f937 1f3fb # light skin tone -1f937 1f3fc # medium-light skin tone -1f937 1f3fd # medium skin tone -1f937 1f3fe # medium-dark skin tone -1f937 1f3ff # dark skin tone -1f938 # PERSON DOING CARTWHEEL -> man cartwheeling -1f938 1f3fb # light skin tone -1f938 1f3fc # medium-light skin tone -1f938 1f3fd # medium skin tone -1f938 1f3fe # medium-dark skin tone -1f938 1f3ff # dark skin tone -1f939 # JUGGLING -> man juggling -1f939 1f3fb # light skin tone -1f939 1f3fc # medium-light skin tone -1f939 1f3fd # medium skin tone -1f939 1f3fe # medium-dark skin tone -1f939 1f3ff # dark skin tone -1f93c # WRESTLERS -> men wrestling -1f93d # WATER POLO -> man playing water polo -1f93d 1f3fb # light skin tone -1f93d 1f3fc # medium-light skin tone -1f93d 1f3fd # medium skin tone -1f93d 1f3fe # medium-dark skin tone -1f93d 1f3ff # dark skin tone -1f93e # HANDBALL -> man playing handball -1f93e 1f3fb # light skin tone -1f93e 1f3fc # medium-light skin tone -1f93e 1f3fd # medium skin tone -1f93e 1f3fe # medium-dark skin tone -1f93e 1f3ff # dark skin tone -26f9 # PERSON WITH BALL -> man bouncing ball -26f9 1f3fb # light skin tone -26f9 1f3fc # medium-light skin tone -26f9 1f3fd # medium skin tone -26f9 1f3fe # medium-dark skin tone -26f9 1f3ff # dark skin tone -fe82b # no name -> no name - -# flag aliases -1f1e7 1f1fb # BV -> NO -1f1e8 1f1f5 # CP -> FR -1f1ed 1f1f2 # HM -> AU -1f1f8 1f1ef # SJ -> NO -1f1fa 1f1f2 # UM -> US - -### -### unwanted flags -### -annotation: error -1f1e7 1f1f1 -1f1e7 1f1f6 -1f1e9 1f1ec -1f1ea 1f1e6 -1f1ea 1f1ed -1f1eb 1f1f0 -1f1ec 1f1eb -1f1ec 1f1f5 -1f1ec 1f1f8 -1f1f2 1f1eb -1f1f2 1f1f6 -1f1f3 1f1e8 -1f1f5 1f1f2 -1f1f7 1f1ea -1f1f9 1f1eb -1f1fc 1f1eb -1f1fd 1f1f0 -1f1fe 1f1f9 - -### -### new emoji -### -annotation: warning -1f6f7 -1f6f8 -1f91f -1f91f 1f3fb -1f91f 1f3fc -1f91f 1f3fd -1f91f 1f3fe -1f91f 1f3ff -1f928 -1f929 -1f92a -1f92b -1f92c -1f92d -1f92e -1f92f -1f931 -1f931 1f3fb -1f931 1f3fc -1f931 1f3fd -1f931 1f3fe -1f931 1f3ff -1f932 -1f932 1f3fb -1f932 1f3fc -1f932 1f3fd -1f932 1f3fe -1f932 1f3ff -1f94c -1f961 -1f962 -1f964 -1f965 -1f966 -1f995 -1f996 -1f997 -1f9d0 -1f9d1 -1f9d1 1f3fb -1f9d1 1f3fc -1f9d1 1f3fd -1f9d1 1f3fe -1f9d1 1f3ff -1f9d2 -1f9d2 1f3fb -1f9d2 1f3fc -1f9d2 1f3fd -1f9d2 1f3fe -1f9d2 1f3ff -1f9d3 -1f9d3 1f3fb -1f9d3 1f3fc -1f9d3 1f3fd -1f9d3 1f3fe -1f9d3 1f3ff -1f9d4 -1f9d4 1f3fb -1f9d4 1f3fc -1f9d4 1f3fd -1f9d4 1f3fe -1f9d4 1f3ff -1f9d5 -1f9d5 1f3fb -1f9d5 1f3fc -1f9d5 1f3fd -1f9d5 1f3fe -1f9d5 1f3ff -1f9d6 -1f9d6 1f3fb -1f9d6 1f3fc -1f9d6 1f3fd -1f9d6 1f3fe -1f9d6 1f3ff -1f9d6 200d 2640 -1f9d6 1f3fb 200d 2640 -1f9d6 1f3fc 200d 2640 -1f9d6 1f3fd 200d 2640 -1f9d6 1f3fe 200d 2640 -1f9d6 1f3ff 200d 2640 -1f9d6 200d 2642 -1f9d6 1f3fb 200d 2642 -1f9d6 1f3fc 200d 2642 -1f9d6 1f3fd 200d 2642 -1f9d6 1f3fe 200d 2642 -1f9d6 1f3ff 200d 2642 -1f9d7 -1f9d7 1f3fb -1f9d7 1f3fc -1f9d7 1f3fd -1f9d7 1f3fe -1f9d7 1f3ff -1f9d7 200d 2640 -1f9d7 1f3fb 200d 2640 -1f9d7 1f3fc 200d 2640 -1f9d7 1f3fd 200d 2640 -1f9d7 1f3fe 200d 2640 -1f9d7 1f3ff 200d 2640 -1f9d7 200d 2642 -1f9d7 1f3fb 200d 2642 -1f9d7 1f3fc 200d 2642 -1f9d7 1f3fd 200d 2642 -1f9d7 1f3fe 200d 2642 -1f9d7 1f3ff 200d 2642 -1f9d8 -1f9d8 1f3fb -1f9d8 1f3fc -1f9d8 1f3fd -1f9d8 1f3fe -1f9d8 1f3ff -1f9d8 200d 2640 -1f9d8 1f3fb 200d 2640 -1f9d8 1f3fc 200d 2640 -1f9d8 1f3fd 200d 2640 -1f9d8 1f3fe 200d 2640 -1f9d8 1f3ff 200d 2640 -1f9d8 200d 2642 -1f9d8 1f3fb 200d 2642 -1f9d8 1f3fc 200d 2642 -1f9d8 1f3fd 200d 2642 -1f9d8 1f3fe 200d 2642 -1f9d8 1f3ff 200d 2642 -1f9d9 -1f9d9 1f3fb -1f9d9 1f3fc -1f9d9 1f3fd -1f9d9 1f3fe -1f9d9 1f3ff -1f9d9 200d 2640 -1f9d9 1f3fb 200d 2640 -1f9d9 1f3fc 200d 2640 -1f9d9 1f3fd 200d 2640 -1f9d9 1f3fe 200d 2640 -1f9d9 1f3ff 200d 2640 -1f9d9 200d 2642 -1f9d9 1f3fb 200d 2642 -1f9d9 1f3fc 200d 2642 -1f9d9 1f3fd 200d 2642 -1f9d9 1f3fe 200d 2642 -1f9d9 1f3ff 200d 2642 -1f9da -1f9da 1f3fb -1f9da 1f3fc -1f9da 1f3fd -1f9da 1f3fe -1f9da 1f3ff -1f9da 200d 2640 -1f9da 1f3fb 200d 2640 -1f9da 1f3fc 200d 2640 -1f9da 1f3fd 200d 2640 -1f9da 1f3fe 200d 2640 -1f9da 1f3ff 200d 2640 -1f9da 200d 2642 -1f9da 1f3fb 200d 2642 -1f9da 1f3fc 200d 2642 -1f9da 1f3fd 200d 2642 -1f9da 1f3fe 200d 2642 -1f9da 1f3ff 200d 2642 -1f9db -1f9db 1f3fb -1f9db 1f3fc -1f9db 1f3fd -1f9db 1f3fe -1f9db 1f3ff -1f9db 200d 2640 -1f9db 1f3fb 200d 2640 -1f9db 1f3fc 200d 2640 -1f9db 1f3fd 200d 2640 -1f9db 1f3fe 200d 2640 -1f9db 1f3ff 200d 2640 -1f9db 200d 2642 -1f9db 1f3fb 200d 2642 -1f9db 1f3fc 200d 2642 -1f9db 1f3fd 200d 2642 -1f9db 1f3fe 200d 2642 -1f9db 1f3ff 200d 2642 -1f9dc -1f9dc 1f3fb -1f9dc 1f3fc -1f9dc 1f3fd -1f9dc 1f3fe -1f9dc 1f3ff -1f9dc 200d 2640 -1f9dc 1f3fb 200d 2640 -1f9dc 1f3fc 200d 2640 -1f9dc 1f3fd 200d 2640 -1f9dc 1f3fe 200d 2640 -1f9dc 1f3ff 200d 2640 -1f9dc 200d 2642 -1f9dc 1f3fb 200d 2642 -1f9dc 1f3fc 200d 2642 -1f9dc 1f3fd 200d 2642 -1f9dc 1f3fe 200d 2642 -1f9dc 1f3ff 200d 2642 -1f9dd -1f9dd 1f3fb -1f9dd 1f3fc -1f9dd 1f3fd -1f9dd 1f3fe -1f9dd 1f3ff -1f9dd 200d 2640 -1f9dd 1f3fb 200d 2640 -1f9dd 1f3fc 200d 2640 -1f9dd 1f3fd 200d 2640 -1f9dd 1f3fe 200d 2640 -1f9dd 1f3ff 200d 2640 -1f9dd 200d 2642 -1f9dd 1f3fb 200d 2642 -1f9dd 1f3fc 200d 2642 -1f9dd 1f3fd 200d 2642 -1f9dd 1f3fe 200d 2642 -1f9dd 1f3ff 200d 2642 -1f9de -1f9de 200d 2640 -1f9de 200d 2642 -1f9df -1f9df 200d 2640 -1f9df 200d 2642 -1f9e0 -1f9e1 -1f9e2 -1f9e3 -1f9e4 -1f9e5 -1f9e6 - diff --git a/flag_glyph_name.py b/flag_glyph_name.py deleted file mode 100755 index 8b19b4fa4..000000000 --- a/flag_glyph_name.py +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2014 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Generate a glyph name for flag emojis.""" -from __future__ import print_function - -__author__ = 'roozbeh@google.com (Roozbeh Pournader)' - -import re -import sys - -import add_emoji_gsub - -def two_letter_code_to_glyph_name(region_code): - return 'u%04x_%04x' % ( - add_emoji_gsub.reg_indicator(region_code[0]), - add_emoji_gsub.reg_indicator(region_code[1])) - - -subcode_re = re.compile(r'[0-9a-z]{2}-[0-9a-z]+$') -def hyphenated_code_to_glyph_name(sub_code): - # Hyphenated codes use tag sequences, not regional indicator symbol pairs. - sub_code = sub_code.lower() - if not subcode_re.match(sub_code): - raise Exception('%s is not a valid flag subcode' % sub_code) - cps = ['u1f3f4'] - cps.extend('e00%02x' % ord(cp) for cp in sub_code if cp != '-') - cps.append('e007f') - return '_'.join(cps) - - -def flag_code_to_glyph_name(flag_code): - if '-' in flag_code: - return hyphenated_code_to_glyph_name(flag_code) - return two_letter_code_to_glyph_name(flag_code) - - -def main(): - print(' '.join([ - flag_code_to_glyph_name(flag_code) for flag_code in sys.argv[1:]])) - -if __name__ == '__main__': - main() diff --git a/flag_info.py b/flag_info.py deleted file mode 100755 index 98cd84bcf..000000000 --- a/flag_info.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/python3 -# -# Copyright 2016 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Quick tool to display count/ids of flag images in a directory named -either using ASCII upper case pairs or the emoji_u+codepoint_sequence -names.""" -from __future__ import print_function - -import argparse -import re -import glob -import os -from os import path - -def _flag_names_from_emoji_file_names(src): - def _flag_char(char_str): - return unichr(ord('A') + int(char_str, 16) - 0x1f1e6) - flag_re = re.compile('emoji_u(1f1[0-9a-f]{2})_(1f1[0-9a-f]{2}).png') - flags = set() - for f in glob.glob(path.join(src, 'emoji_u*.png')): - m = flag_re.match(path.basename(f)) - if not m: - continue - flag_short_name = _flag_char(m.group(1)) + _flag_char(m.group(2)) - flags.add(flag_short_name) - return flags - - -def _flag_names_from_file_names(src): - flag_re = re.compile('([A-Z]{2}).png') - flags = set() - for f in glob.glob(path.join(src, '*.png')): - m = flag_re.match(path.basename(f)) - if not m: - print('no match') - continue - flags.add(m.group(1)) - return flags - - -def _dump_flag_info(names): - prev = None - print('%d flags' % len(names)) - for n in sorted(names): - if n[0] != prev: - if prev: - print() - prev = n[0] - print(n, end=' ') - print() - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - '-s', '--srcdir', help='location of files', metavar='dir', - required=True) - parser.add_argument( - '-n', '--name_type', help='type of names', metavar='type', - choices=['ascii', 'codepoint'], required=True) - args = parser.parse_args() - - if args.name_type == 'ascii': - names = _flag_names_from_file_names(args.srcdir) - else: - names = _flag_names_from_emoji_file_names(args.srcdir) - print(args.srcdir) - _dump_flag_info(names) - - -if __name__ == '__main__': - main() diff --git a/generate_emoji_name_data.py b/generate_emoji_name_data.py deleted file mode 100755 index a8f8760c5..000000000 --- a/generate_emoji_name_data.py +++ /dev/null @@ -1,405 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*-# -# -# Copyright 2015 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Generate name data for emoji resources. Currently in json format.""" -from __future__ import print_function - -import argparse -import collections -import glob -import json -import os -from os import path -import re -import sys - -import generate_emoji_html - -from nototools import tool_utils -from nototools import unicode_data - -def _create_custom_gendered_seq_names(): - """The names have detail that is adequately represented by the image.""" - - BOY = 0x1f466 - GIRL = 0x1f467 - MAN = 0x1f468 - WOMAN = 0x1f469 - HEART = 0x2764 # Heavy Black Heart - KISS_MARK = 0x1f48b - return { - (MAN, HEART, KISS_MARK, MAN): 'Kiss', - (WOMAN, HEART, KISS_MARK, WOMAN): 'Kiss', - (WOMAN, HEART, KISS_MARK, MAN): 'Kiss', - (WOMAN, HEART, MAN): 'Couple with Heart', - (MAN, HEART, MAN): 'Couple with Heart', - (WOMAN, HEART, WOMAN): 'Couple with Heart', - (MAN, GIRL): 'Family', - (MAN, GIRL, GIRL): 'Family', - (MAN, GIRL, BOY): 'Family', - (MAN, BOY): 'Family', - (MAN, BOY, BOY): 'Family', - (MAN, WOMAN, GIRL): 'Family', - (MAN, WOMAN, GIRL, GIRL): 'Family', - (MAN, WOMAN, GIRL, BOY): 'Family', - (MAN, WOMAN, BOY): 'Family', - (MAN, WOMAN, BOY, BOY): 'Family', - (MAN, MAN, GIRL): 'Family', - (MAN, MAN, GIRL, GIRL): 'Family', - (MAN, MAN, GIRL, BOY): 'Family', - (MAN, MAN, BOY): 'Family', - (MAN, MAN, BOY, BOY): 'Family', - (WOMAN, GIRL): 'Family', - (WOMAN, GIRL, GIRL): 'Family', - (WOMAN, GIRL, BOY): 'Family', - (WOMAN, BOY): 'Family', - (WOMAN, BOY, BOY): 'Family', - (WOMAN, WOMAN, GIRL): 'Family', - (WOMAN, WOMAN, GIRL, GIRL): 'Family', - (WOMAN, WOMAN, GIRL, BOY): 'Family', - (WOMAN, WOMAN, BOY): 'Family', - (WOMAN, WOMAN, BOY, BOY): 'Family' } - -def _create_custom_seq_names(): - """These have names that often are of the form 'Person xyz-ing' or 'Man Xyz.' - We opt to simplify the former to an activity name or action, and the latter to - drop the gender. This also generally makes the names shorter.""" - - EYE = 0x1f441 - SPEECH = 0x1f5e8 - WHITE_FLAG = 0x1f3f3 - RAINBOW = 0x1f308 - return { - (EYE, SPEECH): 'I Witness', - (WHITE_FLAG, RAINBOW): 'Rainbow Flag', - (0x2695,): 'Health Worker', - (0x2696,): 'Judge', - (0x26f7,): 'Skiing', - (0x26f9,): 'Bouncing a Ball', - (0x2708,): 'Pilot', - (0x1f33e,): 'Farmer', - (0x1f373,): 'Cook', - (0x1f393,): 'Student', - (0x1f3a4,): 'Singer', - (0x1f3a8,): 'Artist', - (0x1f3c2,): 'Snowboarding', - (0x1f3c3,): 'Running', - (0x1f3c4,): 'Surfing', - (0x1f3ca,): 'Swimming', - (0x1f3cb,): 'Weight Lifting', - (0x1f3cc,): 'Golfing', - (0x1f3eb,): 'Teacher', - (0x1f3ed,): 'Factory Worker', - (0x1f46e,): 'Police Officer', - (0x1f46f,): 'Partying', - (0x1f471,): 'Person with Blond Hair', - (0x1f473,): 'Person Wearing Turban', - (0x1f477,): 'Construction Worker', - (0x1f481,): 'Tipping Hand', - (0x1f482,): 'Guard', - (0x1f486,): 'Face Massage', - (0x1f487,): 'Haircut', - (0x1f4bb,): 'Technologist', - (0x1f4bc,): 'Office Worker', - (0x1f527,): 'Mechanic', - (0x1f52c,): 'Scientist', - (0x1f575,): 'Detective', - (0x1f645,): 'No Good Gesture', - (0x1f646,): 'OK Gesture', - (0x1f647,): 'Bowing Deeply', - (0x1f64b,): 'Raising Hand', - (0x1f64d,): 'Frowning', - (0x1f64e,): 'Pouting', - (0x1f680,): 'Astronaut', - (0x1f692,): 'Firefighter', - (0x1f6a3,): 'Rowing', - (0x1f6b4,): 'Bicycling', - (0x1f6b5,): 'Mountain Biking', - (0x1f6b6,): 'Walking', - (0x1f926,): 'Face Palm', - (0x1f937,): 'Shrug', - (0x1f938,): 'Doing a Cartwheel', - (0x1f939,): 'Juggling', - (0x1f93c,): 'Wrestling', - (0x1f93d,): 'Water Polo', - (0x1f93e,): 'Playing Handball', - (0x1f9d6,): 'Person in Steamy Room', - (0x1f9d7,): 'Climbing', - (0x1f9d8,): 'Person in Lotus Position', - (0x1f9d9,): 'Mage', - (0x1f9da,): 'Fairy', - (0x1f9db,): 'Vampire', - (0x1f9dd,): 'Elf', - (0x1f9de,): 'Genie', - (0x1f9df,): 'Zombie', - } - -_CUSTOM_GENDERED_SEQ_NAMES = _create_custom_gendered_seq_names() -_CUSTOM_SEQ_NAMES = _create_custom_seq_names() - -# Fixes for unusual capitalization or cases we don't care to handle in code. -# Also prevents titlecasing 'S' after apostrophe in posessives. Note we _do_ -# want titlecasing after apostrophe in some cases, e.g. O'Clock. -_CUSTOM_CAPS_NAMES = { - (0x26d1,): 'Rescue Worker’s Helmet', - (0x1f170,): 'A Button (blood type)', # a Button (Blood Type) - (0x1f171,): 'B Button (blood type)', # B Button (Blood Type) - (0x1f17e,): 'O Button (blood type)', # O Button (Blood Type) - (0x1f18e,): 'AB Button (blood type)', # Ab Button (Blood Type) - (0x1f191,): 'CL Button', # Cl Button - (0x1f192,): 'COOL Button', # Cool Button - (0x1f193,): 'FREE Button', # Free Button - (0x1f194,): 'ID Button', # Id Button - (0x1f195,): 'NEW Button', # New Button - (0x1f196,): 'NG Button', # Ng Button - (0x1f197,): 'OK Button', # Ok Button - (0x1f198,): 'SOS Button', # Sos Button - (0x1f199,): 'UP! Button', # Up! Button - (0x1f19a,): 'VS Button', # Vs Button - (0x1f3e7,): 'ATM Sign', # Atm Sign - (0x1f44C,): 'OK Hand', # Ok Hand - (0x1f452,): 'Woman’s Hat', - (0x1f45a,): 'Woman’s Clothes', - (0x1f45e,): 'Man’s Shoe', - (0x1f461,): 'Woman’s Sandal', - (0x1f462,): 'Woman’s Boot', - (0x1f519,): 'BACK Arrow', # Back Arrow - (0x1f51a,): 'END Arrow', # End Arrow - (0x1f51b,): 'ON! Arrow', # On! Arrow - (0x1f51c,): 'SOON Arrow', # Soon Arrow - (0x1f51d,): 'TOP Arrow', # Top Arrow - (0x1f6b9,): 'Men’s Room', - (0x1f6ba,): 'Women’s Room', -} - -# For the custom sequences we ignore ZWJ, the emoji variation selector -# and skin tone modifiers. We can't always ignore gender because -# the gendered sequences match against them, but we ignore gender in other -# cases so we define a separate set of gendered emoji to remove. - -_NON_GENDER_CPS_TO_STRIP = frozenset( - [0xfe0f, 0x200d] + - range(unicode_data._FITZ_START, unicode_data._FITZ_END + 1)) - -_GENDER_CPS_TO_STRIP = frozenset([0x2640, 0x2642, 0x1f468, 0x1f469]) - -def _custom_name(seq): - """Apply three kinds of custom names, based on the sequence.""" - - seq = tuple([cp for cp in seq if cp not in _NON_GENDER_CPS_TO_STRIP]) - name = _CUSTOM_CAPS_NAMES.get(seq) - if name: - return name - - # Single characters that participate in sequences (e.g. fire truck in the - # firefighter sequences) should not get converted. Single characters - # are in the custom caps names set but not the other sets. - if len(seq) == 1: - return None - - name = _CUSTOM_GENDERED_SEQ_NAMES.get(seq) - if name: - return name - - seq = tuple([cp for cp in seq if cp not in _GENDER_CPS_TO_STRIP]) - name = _CUSTOM_SEQ_NAMES.get(seq) - - return name - - -def _standard_name(seq): - """Use the standard emoji name, with some algorithmic modifications. - - We want to ignore skin-tone modifiers (but of course if the sequence _is_ - the skin-tone modifier itself we keep that). So we strip these so we can - start with the generic name ignoring skin tone. - - Non-emoji that are turned into emoji using the emoji VS have '(emoji) ' - prepended to them, so strip that. - - Regional indicator symbol names are a bit long, so shorten them. - - Regional sequences are assumed to be ok as-is in terms of capitalization and - punctuation, so no modifications are applied to them. - - After title-casing we make some English articles/prepositions lower-case - again. We also replace '&' with 'and'; Unicode seems rather fond of - ampersand.""" - - if not unicode_data.is_skintone_modifier(seq[0]): - seq = tuple([cp for cp in seq if not unicode_data.is_skintone_modifier(cp)]) - name = unicode_data.get_emoji_sequence_name(seq) - - if name.startswith('(emoji) '): - name = name[8:] - - if len(seq) == 1 and unicode_data.is_regional_indicator(seq[0]): - return 'Regional Symbol ' + unicode_data.regional_indicator_to_ascii(seq[0]) - - if (unicode_data.is_regional_indicator_seq(seq) or - unicode_data.is_regional_tag_seq(seq)): - return name - - name = name.title() - # Require space delimiting just in case... - name = re.sub(r'\s&\s', ' and ', name) - name = re.sub( - # not \b at start because we retain capital at start of phrase - r'(\s(:?A|And|From|In|Of|With|For))\b', lambda s: s.group(1).lower(), - name) - - return name - - -def _name_data(seq, seq_file): - name = _custom_name(seq) or _standard_name(seq) - # we don't need canonical sequences - sequence = ''.join('&#x%x;' % cp for cp in seq if cp != 0xfe0f) - fname = path.basename(seq_file) - return fname, sequence, name - - -def generate_names( - src_dir, dst_dir, skip_limit=20, omit_groups=None, pretty_print=False, - verbose=False): - srcdir = tool_utils.resolve_path(src_dir) - if not path.isdir(srcdir): - print('%s is not a directory' % src_dir, file=sys.stderr) - return - - if omit_groups: - unknown_groups = set(omit_groups) - set(unicode_data.get_emoji_groups()) - if unknown_groups: - print('did not recognize %d group%s: %s' % ( - len(unknown_groups), '' if len(unknown_groups) == 1 else 's', - ', '.join('"%s"' % g for g in omit_groups if g in unknown_groups)), file=sys.stderr) - print('valid groups are:\n %s' % ( - '\n '.join(g for g in unicode_data.get_emoji_groups())), file=sys.stderr) - return - print('omitting %d group%s: %s' % ( - len(omit_groups), '' if len(omit_groups) == 1 else 's', - ', '.join('"%s"' % g for g in omit_groups))) - else: - # might be None - print('keeping all groups') - omit_groups = [] - - # make sure the destination exists - dstdir = tool_utils.ensure_dir_exists( - tool_utils.resolve_path(dst_dir)) - - # _get_image_data returns canonical cp sequences - print('src dir:', srcdir) - seq_to_file = generate_emoji_html._get_image_data(srcdir, 'png', 'emoji_u') - print('seq to file has %d sequences' % len(seq_to_file)) - - # Aliases add non-gendered versions using gendered images for the most part. - # But when we display the images, we don't distinguish genders in the - # naming, we rely on the images-- so these look redundant. So we - # intentionally don't generate images for these. - # However, the alias file also includes the flag aliases, which we do want, - # and it also fails to exclude the unknown flag pua (since it doesn't - # map to anything), so we need to adjust for this. - canonical_aliases = generate_emoji_html._get_canonical_aliases() - - aliases = set([ - cps for cps in canonical_aliases.keys() - if not unicode_data.is_regional_indicator_seq(cps)]) - aliases.add((0xfe82b,)) # unknown flag PUA - excluded = aliases | generate_emoji_html._get_canonical_excluded() - - # The flag aliases have distinct names, so we _do_ want to show them - # multiple times. - to_add = {} - for seq in canonical_aliases: - if unicode_data.is_regional_indicator_seq(seq): - replace_seq = canonical_aliases[seq] - if seq in seq_to_file: - print('warning, alias %s has file %s' % ( - unicode_data.regional_indicator_seq_to_string(seq), - seq_to_file[seq])) - continue - replace_file = seq_to_file.get(replace_seq) - if replace_file: - to_add[seq] = replace_file - seq_to_file.update(to_add) - - data = [] - last_skipped_group = None - skipcount = 0 - for group in unicode_data.get_emoji_groups(): - if group in omit_groups: - continue - name_data = [] - for seq in unicode_data.get_emoji_in_group(group): - if seq in excluded: - continue - seq_file = seq_to_file.get(seq, None) - if seq_file is None: - skipcount += 1 - if verbose: - if group != last_skipped_group: - print('group %s' % group) - last_skipped_group = group - print(' %s (%s)' % ( - unicode_data.seq_to_string(seq), - ', '.join(unicode_data.name(cp, 'x') for cp in seq))) - if skip_limit >= 0 and skipcount > skip_limit: - raise Exception('skipped too many items') - else: - name_data.append(_name_data(seq, seq_file)) - data.append({'category': group, 'emojis': name_data}) - - outfile = path.join(dstdir, 'data.json') - with open(outfile, 'w') as f: - indent = 2 if pretty_print else None - separators = None if pretty_print else (',', ':') - json.dump(data, f, indent=indent, separators=separators) - print('wrote %s' % outfile) - - -def main(): - DEFAULT_DSTDIR = '[emoji]/emoji' - DEFAULT_IMAGEDIR = '[emoji]/build/compressed_pngs' - - parser = argparse.ArgumentParser() - parser.add_argument( - '-s', '--srcdir', help='directory containing images (default %s)' % - DEFAULT_IMAGEDIR, metavar='dir', default=DEFAULT_IMAGEDIR) - parser.add_argument( - '-d', '--dstdir', help='name of destination directory (default %s)' % - DEFAULT_DSTDIR, metavar='fname', default=DEFAULT_DSTDIR) - parser.add_argument( - '-p', '--pretty_print', help='pretty-print json file', - action='store_true') - parser.add_argument( - '-m', '--missing_limit', help='number of missing images before failure ' - '(default 20), use -1 for no limit', metavar='n', default=20) - parser.add_argument( - '--omit_groups', help='names of groups to omit (default "Misc, Flags")', - metavar='name', default=['Misc', 'Flags'], nargs='*') - parser.add_argument( - '-v', '--verbose', help='print progress information to stdout', - action='store_true') - args = parser.parse_args() - generate_names( - args.srcdir, args.dstdir, args.missing_limit, args.omit_groups, - pretty_print=args.pretty_print, verbose=args.verbose) - - -if __name__ == "__main__": - main() diff --git a/generate_emoji_thumbnails.py b/generate_emoji_thumbnails.py deleted file mode 100755 index 3b99c77af..000000000 --- a/generate_emoji_thumbnails.py +++ /dev/null @@ -1,159 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2017 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Generate 72x72 thumbnails including aliases. - -Takes a source directory of images named using our emoji filename -conventions and writes thumbnails of them into the destination -directory. If a file is a target of one or more aliases, creates -copies named for the aliases.""" - - -import argparse -import collections -import logging -import os -from os import path -import shutil -import subprocess - -import add_aliases - -from nototools import tool_utils -from nototools import unicode_data - -logger = logging.getLogger('emoji_thumbnails') - -def create_thumbnail(src_path, dst_path, crop): - # Uses imagemagik - # We need images exactly 72x72 in size, with transparent background. - # Remove 4-pixel LR margins from 136x128 source images if we crop. - if crop: - cmd = [ - 'convert', src_path, '-crop', '128x128+4+0!', '-thumbnail', '72x72', - 'PNG32:' + dst_path] - else: - cmd = [ - 'convert', '-thumbnail', '72x72', '-gravity', 'center', '-background', - 'none', '-extent', '72x72', src_path, 'PNG32:' + dst_path] - subprocess.check_call(cmd) - - -def get_inv_aliases(): - """Return a mapping from target to list of sources for all alias - targets in either the default alias table or the unknown_flag alias - table.""" - - inv_aliases = collections.defaultdict(list) - - standard_aliases = add_aliases.read_default_emoji_aliases() - for k, v in standard_aliases.iteritems(): - inv_aliases[v].append(k) - - unknown_flag_aliases = add_aliases.read_emoji_aliases( - 'unknown_flag_aliases.txt') - for k, v in unknown_flag_aliases.iteritems(): - inv_aliases[v].append(k) - - return inv_aliases - - -def filename_to_sequence(filename, prefix, suffix): - if not filename.startswith(prefix) and filename.endswith(suffix): - raise ValueError('bad prefix or suffix: "%s"' % filename) - seq_str = filename[len(prefix): -len(suffix)] - seq = unicode_data.string_to_seq(seq_str) - if not unicode_data.is_cp_seq(seq): - raise ValueError('sequence includes non-codepoint: "%s"' % filename) - return seq - - -def sequence_to_filename(seq, prefix, suffix): - return ''.join((prefix, unicode_data.seq_to_string(seq), suffix)) - - -def create_thumbnails_and_aliases(src_dir, dst_dir, crop, dst_prefix): - """Creates thumbnails in dst_dir based on sources in src.dir, using - dst_prefix. Assumes the source prefix is 'emoji_u' and the common suffix - is '.png'.""" - - src_dir = tool_utils.resolve_path(src_dir) - if not path.isdir(src_dir): - raise ValueError('"%s" is not a directory') - - dst_dir = tool_utils.ensure_dir_exists(tool_utils.resolve_path(dst_dir)) - - src_prefix = 'emoji_u' - suffix = '.png' - - inv_aliases = get_inv_aliases() - - for src_file in os.listdir(src_dir): - try: - seq = unicode_data.strip_emoji_vs( - filename_to_sequence(src_file, src_prefix, suffix)) - except ValueError as ve: - logger.warning('Error (%s), skipping' % ve) - continue - - src_path = path.join(src_dir, src_file) - - dst_file = sequence_to_filename(seq, dst_prefix, suffix) - dst_path = path.join(dst_dir, dst_file) - - create_thumbnail(src_path, dst_path, crop) - logger.info('wrote thumbnail%s: %s' % ( - ' with crop' if crop else '', dst_file)) - - for alias_seq in inv_aliases.get(seq, ()): - alias_file = sequence_to_filename(alias_seq, dst_prefix, suffix) - alias_path = path.join(dst_dir, alias_file) - shutil.copy2(dst_path, alias_path) - logger.info('wrote alias: %s' % alias_file) - - -def main(): - SRC_DEFAULT = '[emoji]/build/compressed_pngs' - PREFIX_DEFAULT = 'android_' - - parser = argparse.ArgumentParser() - parser.add_argument( - '-s', '--src_dir', help='source images (default \'%s\')' % SRC_DEFAULT, - default=SRC_DEFAULT, metavar='dir') - parser.add_argument( - '-d', '--dst_dir', help='destination directory', metavar='dir', - required=True) - parser.add_argument( - '-p', '--prefix', help='prefix for thumbnail (default \'%s\')' % - PREFIX_DEFAULT, default=PREFIX_DEFAULT, metavar='str') - parser.add_argument( - '-c', '--crop', help='crop images (will automatically crop if ' - 'src dir is the default)', action='store_true') - parser.add_argument( - '-v', '--verbose', help='write log output', metavar='level', - choices='warning info debug'.split(), const='info', - nargs='?') - args = parser.parse_args() - - if args.verbose is not None: - logging.basicConfig(level=getattr(logging, args.verbose.upper())) - - crop = args.crop or (args.src_dir == SRC_DEFAULT) - create_thumbnails_and_aliases( - args.src_dir, args.dst_dir, crop, args.prefix) - - -if __name__ == '__main__': - main() diff --git a/map_pua_emoji.py b/map_pua_emoji.py deleted file mode 100644 index 6e2f1cd2c..000000000 --- a/map_pua_emoji.py +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2014 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Modify an emoji font to map legacy PUA characters to standard ligatures.""" - -__author__ = 'roozbeh@google.com (Roozbeh Pournader)' - -import sys -import itertools - -from fontTools import ttLib - -from nototools import font_data - -import add_emoji_gsub - - -def get_glyph_name_from_gsub(char_seq, font): - """Find the glyph name for ligature of a given character sequence from GSUB. - """ - cmap = font_data.get_cmap(font) - # FIXME: So many assumptions are made here. - try: - first_glyph = cmap[char_seq[0]] - rest_of_glyphs = [cmap[ch] for ch in char_seq[1:]] - except KeyError: - return None - - for lookup in font['GSUB'].table.LookupList.Lookup: - ligatures = lookup.SubTable[0].ligatures - try: - for ligature in ligatures[first_glyph]: - if ligature.Component == rest_of_glyphs: - return ligature.LigGlyph - except KeyError: - continue - return None - - -def add_pua_cmap(source_file, target_file): - """Add PUA characters to the cmap of the first font and save as second.""" - font = ttLib.TTFont(source_file) - cmap = font_data.get_cmap(font) - for pua, (ch1, ch2) in itertools.chain( - add_emoji_gsub.EMOJI_KEYCAPS.items(), add_emoji_gsub.EMOJI_FLAGS.items() - ): - if pua not in cmap: - glyph_name = get_glyph_name_from_gsub([ch1, ch2], font) - if glyph_name is not None: - cmap[pua] = glyph_name - font.save(target_file) - - -def main(argv): - """Save the first font given to the second font.""" - add_pua_cmap(argv[1], argv[2]) - - -if __name__ == '__main__': - main(sys.argv) - diff --git a/materialize_emoji_images.py b/materialize_emoji_images.py deleted file mode 100755 index 41c1fb16c..000000000 --- a/materialize_emoji_images.py +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2016 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""Create a copy of the emoji images that instantiates aliases, etc. as -symlinks.""" -from __future__ import print_function - -import argparse -import glob -import os -from os import path -import re -import shutil - -from nototools import tool_utils - -# copied from third_party/color_emoji/add_glyphs.py - -EXTRA_SEQUENCES = { - 'u1F46A': '1F468_200D_1F469_200D_1F466', # MWB - 'u1F491': '1F469_200D_2764_FE0F_200D_1F468', # WHM - 'u1F48F': '1F469_200D_2764_FE0F_200D_1F48B_200D_1F468', # WHKM -} - -# Flag aliases - from: to -FLAG_ALIASES = { - 'BV': 'NO', - 'CP': 'FR', - 'HM': 'AU', - 'SJ': 'NO', - 'UM': 'US', -} - -OMITTED_FLAGS = set( - 'BL BQ DG EA EH FK GF GP GS MF MQ NC PM RE TF WF XK YT'.split()) - -def _flag_str(ris_pair): - return '_'.join('%04x' % (ord(cp) - ord('A') + 0x1f1e6) - for cp in ris_pair) - -def _copy_files(src, dst): - """Copies files named 'emoji_u*.png' from dst to src, and return a set of - the names with 'emoji_u' and the extension stripped.""" - code_strings = set() - tool_utils.check_dir_exists(src) - dst = tool_utils.ensure_dir_exists(dst, clean=True) - for f in glob.glob(path.join(src, 'emoji_u*.png')): - shutil.copy(f, dst) - code_strings.add(path.splitext(path.basename(f))[0][7:]) - return code_strings - - -def _alias_people(code_strings, dst): - """Create aliases for people in dst, based on code_strings.""" - for src, ali in sorted(EXTRA_SEQUENCES.items()): - if src[1:].lower() in code_strings: - src_name = 'emoji_%s.png' % src.lower() - ali_name = 'emoji_u%s.png' % ali.lower() - print('creating symlink %s -> %s' % (ali_name, src_name)) - os.symlink(path.join(dst, src_name), path.join(dst, ali_name)) - else: - print('people image %s not found' % src, file=os.stderr) - - -def _alias_flags(code_strings, dst): - for ali, src in sorted(FLAG_ALIASES.items()): - src_str = _flag_str(src) - if src_str in code_strings: - src_name = 'emoji_u%s.png' % src_str - ali_name = 'emoji_u%s.png' % _flag_str(ali) - print('creating symlink %s (%s) -> %s (%s)' % (ali_name, ali, src_name, src)) - os.symlink(path.join(dst, src_name), path.join(dst, ali_name)) - else: - print('flag image %s (%s) not found' % (src_name, src), file=os.stderr) - - -def _alias_omitted_flags(code_strings, dst): - UNKNOWN_FLAG = 'fe82b' - if UNKNOWN_FLAG not in code_strings: - print('unknown flag missing', file=os.stderr) - return - dst_name = 'emoji_u%s.png' % UNKNOWN_FLAG - dst_path = path.join(dst, dst_name) - for ali in sorted(OMITTED_FLAGS): - ali_str = _flag_str(ali) - if ali_str in code_strings: - print('omitted flag %s has image %s' % (ali, ali_str), file=os.stderr) - continue - ali_name = 'emoji_u%s.png' % ali_str - print('creating symlink %s (%s) -> unknown_flag (%s)' % ( - ali_str, ali, dst_name)) - os.symlink(dst_path, path.join(dst, ali_name)) - - -def materialize_images(src, dst): - code_strings = _copy_files(src, dst) - _alias_people(code_strings, dst) - _alias_flags(code_strings, dst) - _alias_omitted_flags(code_strings, dst) - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - '-s', '--srcdir', help='path to input sources', metavar='dir', - default = 'build/compressed_pngs') - parser.add_argument( - '-d', '--dstdir', help='destination for output images', metavar='dir') - args = parser.parse_args() - materialize_images(args.srcdir, args.dstdir) - - -if __name__ == '__main__': - main() diff --git a/png/128/emoji_u0023.png b/png/128/emoji_u0023.png deleted file mode 100644 index 431950a0c..000000000 Binary files a/png/128/emoji_u0023.png and /dev/null differ diff --git a/png/128/emoji_u0023_20e3.png b/png/128/emoji_u0023_20e3.png deleted file mode 100644 index 0d94a0615..000000000 Binary files a/png/128/emoji_u0023_20e3.png and /dev/null differ diff --git a/png/128/emoji_u002a.png b/png/128/emoji_u002a.png deleted file mode 100644 index 068304489..000000000 Binary files a/png/128/emoji_u002a.png and /dev/null differ diff --git a/png/128/emoji_u002a_20e3.png b/png/128/emoji_u002a_20e3.png deleted file mode 100644 index d768c61d5..000000000 Binary files a/png/128/emoji_u002a_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0030.png b/png/128/emoji_u0030.png deleted file mode 100644 index 752393086..000000000 Binary files a/png/128/emoji_u0030.png and /dev/null differ diff --git a/png/128/emoji_u0030_20e3.png b/png/128/emoji_u0030_20e3.png deleted file mode 100644 index c5d6fee49..000000000 Binary files a/png/128/emoji_u0030_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0031.png b/png/128/emoji_u0031.png deleted file mode 100644 index 4466b0216..000000000 Binary files a/png/128/emoji_u0031.png and /dev/null differ diff --git a/png/128/emoji_u0031_20e3.png b/png/128/emoji_u0031_20e3.png deleted file mode 100644 index 9d199371d..000000000 Binary files a/png/128/emoji_u0031_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0032.png b/png/128/emoji_u0032.png deleted file mode 100644 index 6e0018044..000000000 Binary files a/png/128/emoji_u0032.png and /dev/null differ diff --git a/png/128/emoji_u0032_20e3.png b/png/128/emoji_u0032_20e3.png deleted file mode 100644 index af5c5d737..000000000 Binary files a/png/128/emoji_u0032_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0033.png b/png/128/emoji_u0033.png deleted file mode 100644 index 2be2465b2..000000000 Binary files a/png/128/emoji_u0033.png and /dev/null differ diff --git a/png/128/emoji_u0033_20e3.png b/png/128/emoji_u0033_20e3.png deleted file mode 100644 index 8ac6d5362..000000000 Binary files a/png/128/emoji_u0033_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0034.png b/png/128/emoji_u0034.png deleted file mode 100644 index 51fb99323..000000000 Binary files a/png/128/emoji_u0034.png and /dev/null differ diff --git a/png/128/emoji_u0034_20e3.png b/png/128/emoji_u0034_20e3.png deleted file mode 100644 index fe48334f4..000000000 Binary files a/png/128/emoji_u0034_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0035.png b/png/128/emoji_u0035.png deleted file mode 100644 index 7b48ceaef..000000000 Binary files a/png/128/emoji_u0035.png and /dev/null differ diff --git a/png/128/emoji_u0035_20e3.png b/png/128/emoji_u0035_20e3.png deleted file mode 100644 index 00125b139..000000000 Binary files a/png/128/emoji_u0035_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0036.png b/png/128/emoji_u0036.png deleted file mode 100644 index 04bb5b6da..000000000 Binary files a/png/128/emoji_u0036.png and /dev/null differ diff --git a/png/128/emoji_u0036_20e3.png b/png/128/emoji_u0036_20e3.png deleted file mode 100644 index fc2b8bac3..000000000 Binary files a/png/128/emoji_u0036_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0037.png b/png/128/emoji_u0037.png deleted file mode 100644 index a20d96225..000000000 Binary files a/png/128/emoji_u0037.png and /dev/null differ diff --git a/png/128/emoji_u0037_20e3.png b/png/128/emoji_u0037_20e3.png deleted file mode 100644 index 24eb2da9b..000000000 Binary files a/png/128/emoji_u0037_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0038.png b/png/128/emoji_u0038.png deleted file mode 100644 index 88ee39df6..000000000 Binary files a/png/128/emoji_u0038.png and /dev/null differ diff --git a/png/128/emoji_u0038_20e3.png b/png/128/emoji_u0038_20e3.png deleted file mode 100644 index 44df32216..000000000 Binary files a/png/128/emoji_u0038_20e3.png and /dev/null differ diff --git a/png/128/emoji_u0039.png b/png/128/emoji_u0039.png deleted file mode 100644 index ba141b85c..000000000 Binary files a/png/128/emoji_u0039.png and /dev/null differ diff --git a/png/128/emoji_u0039_20e3.png b/png/128/emoji_u0039_20e3.png deleted file mode 100644 index 5f8d01575..000000000 Binary files a/png/128/emoji_u0039_20e3.png and /dev/null differ diff --git a/png/128/emoji_u00a9.png b/png/128/emoji_u00a9.png deleted file mode 100644 index 277c34f7d..000000000 Binary files a/png/128/emoji_u00a9.png and /dev/null differ diff --git a/png/128/emoji_u00ae.png b/png/128/emoji_u00ae.png deleted file mode 100644 index 2b662d9ad..000000000 Binary files a/png/128/emoji_u00ae.png and /dev/null differ diff --git a/png/128/emoji_u1f004.png b/png/128/emoji_u1f004.png deleted file mode 100644 index 5eb2e8aa9..000000000 Binary files a/png/128/emoji_u1f004.png and /dev/null differ diff --git a/png/128/emoji_u1f0cf.png b/png/128/emoji_u1f0cf.png deleted file mode 100644 index b759222a0..000000000 Binary files a/png/128/emoji_u1f0cf.png and /dev/null differ diff --git a/png/128/emoji_u1f170.png b/png/128/emoji_u1f170.png deleted file mode 100644 index dec97df56..000000000 Binary files a/png/128/emoji_u1f170.png and /dev/null differ diff --git a/png/128/emoji_u1f171.png b/png/128/emoji_u1f171.png deleted file mode 100644 index 0f9b0e512..000000000 Binary files a/png/128/emoji_u1f171.png and /dev/null differ diff --git a/png/128/emoji_u1f17e.png b/png/128/emoji_u1f17e.png deleted file mode 100644 index a8e7b15f3..000000000 Binary files a/png/128/emoji_u1f17e.png and /dev/null differ diff --git a/png/128/emoji_u1f17f.png b/png/128/emoji_u1f17f.png deleted file mode 100644 index c08bb0532..000000000 Binary files a/png/128/emoji_u1f17f.png and /dev/null differ diff --git a/png/128/emoji_u1f18e.png b/png/128/emoji_u1f18e.png deleted file mode 100644 index 09562247a..000000000 Binary files a/png/128/emoji_u1f18e.png and /dev/null differ diff --git a/png/128/emoji_u1f191.png b/png/128/emoji_u1f191.png deleted file mode 100644 index 071b61687..000000000 Binary files a/png/128/emoji_u1f191.png and /dev/null differ diff --git a/png/128/emoji_u1f192.png b/png/128/emoji_u1f192.png deleted file mode 100644 index 49b11c465..000000000 Binary files a/png/128/emoji_u1f192.png and /dev/null differ diff --git a/png/128/emoji_u1f193.png b/png/128/emoji_u1f193.png deleted file mode 100644 index 53ec8c3ed..000000000 Binary files a/png/128/emoji_u1f193.png and /dev/null differ diff --git a/png/128/emoji_u1f194.png b/png/128/emoji_u1f194.png deleted file mode 100644 index d064b9534..000000000 Binary files a/png/128/emoji_u1f194.png and /dev/null differ diff --git a/png/128/emoji_u1f195.png b/png/128/emoji_u1f195.png deleted file mode 100644 index 92fed590c..000000000 Binary files a/png/128/emoji_u1f195.png and /dev/null differ diff --git a/png/128/emoji_u1f196.png b/png/128/emoji_u1f196.png deleted file mode 100644 index ffade4349..000000000 Binary files a/png/128/emoji_u1f196.png and /dev/null differ diff --git a/png/128/emoji_u1f197.png b/png/128/emoji_u1f197.png deleted file mode 100644 index a2b1b688b..000000000 Binary files a/png/128/emoji_u1f197.png and /dev/null differ diff --git a/png/128/emoji_u1f198.png b/png/128/emoji_u1f198.png deleted file mode 100644 index 5958e83dd..000000000 Binary files a/png/128/emoji_u1f198.png and /dev/null differ diff --git a/png/128/emoji_u1f199.png b/png/128/emoji_u1f199.png deleted file mode 100644 index f25479c67..000000000 Binary files a/png/128/emoji_u1f199.png and /dev/null differ diff --git a/png/128/emoji_u1f19a.png b/png/128/emoji_u1f19a.png deleted file mode 100644 index 8e06d5342..000000000 Binary files a/png/128/emoji_u1f19a.png and /dev/null differ diff --git a/png/128/emoji_u1f1e6.png b/png/128/emoji_u1f1e6.png deleted file mode 100644 index b4990277f..000000000 Binary files a/png/128/emoji_u1f1e6.png and /dev/null differ diff --git a/png/128/emoji_u1f1e7.png b/png/128/emoji_u1f1e7.png deleted file mode 100644 index 783da1c8d..000000000 Binary files a/png/128/emoji_u1f1e7.png and /dev/null differ diff --git a/png/128/emoji_u1f1e8.png b/png/128/emoji_u1f1e8.png deleted file mode 100644 index 014efc882..000000000 Binary files a/png/128/emoji_u1f1e8.png and /dev/null differ diff --git a/png/128/emoji_u1f1e8_1f1f3.png b/png/128/emoji_u1f1e8_1f1f3.png deleted file mode 100644 index acccfb0e2..000000000 Binary files a/png/128/emoji_u1f1e8_1f1f3.png and /dev/null differ diff --git a/png/128/emoji_u1f1e9.png b/png/128/emoji_u1f1e9.png deleted file mode 100644 index d7efab6ba..000000000 Binary files a/png/128/emoji_u1f1e9.png and /dev/null differ diff --git a/png/128/emoji_u1f1e9_1f1ea.png b/png/128/emoji_u1f1e9_1f1ea.png deleted file mode 100644 index 78f953a02..000000000 Binary files a/png/128/emoji_u1f1e9_1f1ea.png and /dev/null differ diff --git a/png/128/emoji_u1f1ea.png b/png/128/emoji_u1f1ea.png deleted file mode 100644 index 9969a5011..000000000 Binary files a/png/128/emoji_u1f1ea.png and /dev/null differ diff --git a/png/128/emoji_u1f1ea_1f1f8.png b/png/128/emoji_u1f1ea_1f1f8.png deleted file mode 100644 index 4abe84565..000000000 Binary files a/png/128/emoji_u1f1ea_1f1f8.png and /dev/null differ diff --git a/png/128/emoji_u1f1eb.png b/png/128/emoji_u1f1eb.png deleted file mode 100644 index 2360f7027..000000000 Binary files a/png/128/emoji_u1f1eb.png and /dev/null differ diff --git a/png/128/emoji_u1f1eb_1f1f7.png b/png/128/emoji_u1f1eb_1f1f7.png deleted file mode 100644 index e4708bebe..000000000 Binary files a/png/128/emoji_u1f1eb_1f1f7.png and /dev/null differ diff --git a/png/128/emoji_u1f1ec.png b/png/128/emoji_u1f1ec.png deleted file mode 100644 index a7510a335..000000000 Binary files a/png/128/emoji_u1f1ec.png and /dev/null differ diff --git a/png/128/emoji_u1f1ec_1f1e7.png b/png/128/emoji_u1f1ec_1f1e7.png deleted file mode 100644 index fc50a8835..000000000 Binary files a/png/128/emoji_u1f1ec_1f1e7.png and /dev/null differ diff --git a/png/128/emoji_u1f1ed.png b/png/128/emoji_u1f1ed.png deleted file mode 100644 index e9fa1a325..000000000 Binary files a/png/128/emoji_u1f1ed.png and /dev/null differ diff --git a/png/128/emoji_u1f1ee.png b/png/128/emoji_u1f1ee.png deleted file mode 100644 index d91ec251e..000000000 Binary files a/png/128/emoji_u1f1ee.png and /dev/null differ diff --git a/png/128/emoji_u1f1ee_1f1f9.png b/png/128/emoji_u1f1ee_1f1f9.png deleted file mode 100644 index 09739a90d..000000000 Binary files a/png/128/emoji_u1f1ee_1f1f9.png and /dev/null differ diff --git a/png/128/emoji_u1f1ef.png b/png/128/emoji_u1f1ef.png deleted file mode 100644 index 1172db7ee..000000000 Binary files a/png/128/emoji_u1f1ef.png and /dev/null differ diff --git a/png/128/emoji_u1f1ef_1f1f5.png b/png/128/emoji_u1f1ef_1f1f5.png deleted file mode 100644 index dd29ea44f..000000000 Binary files a/png/128/emoji_u1f1ef_1f1f5.png and /dev/null differ diff --git a/png/128/emoji_u1f1f0.png b/png/128/emoji_u1f1f0.png deleted file mode 100644 index aaf0120c3..000000000 Binary files a/png/128/emoji_u1f1f0.png and /dev/null differ diff --git a/png/128/emoji_u1f1f0_1f1f7.png b/png/128/emoji_u1f1f0_1f1f7.png deleted file mode 100644 index 16b32bcb4..000000000 Binary files a/png/128/emoji_u1f1f0_1f1f7.png and /dev/null differ diff --git a/png/128/emoji_u1f1f1.png b/png/128/emoji_u1f1f1.png deleted file mode 100644 index 964671108..000000000 Binary files a/png/128/emoji_u1f1f1.png and /dev/null differ diff --git a/png/128/emoji_u1f1f2.png b/png/128/emoji_u1f1f2.png deleted file mode 100644 index d3db6444f..000000000 Binary files a/png/128/emoji_u1f1f2.png and /dev/null differ diff --git a/png/128/emoji_u1f1f3.png b/png/128/emoji_u1f1f3.png deleted file mode 100644 index 40ce76b94..000000000 Binary files a/png/128/emoji_u1f1f3.png and /dev/null differ diff --git a/png/128/emoji_u1f1f4.png b/png/128/emoji_u1f1f4.png deleted file mode 100644 index e232262e8..000000000 Binary files a/png/128/emoji_u1f1f4.png and /dev/null differ diff --git a/png/128/emoji_u1f1f5.png b/png/128/emoji_u1f1f5.png deleted file mode 100644 index 8752bbc60..000000000 Binary files a/png/128/emoji_u1f1f5.png and /dev/null differ diff --git a/png/128/emoji_u1f1f6.png b/png/128/emoji_u1f1f6.png deleted file mode 100644 index 66796dc1b..000000000 Binary files a/png/128/emoji_u1f1f6.png and /dev/null differ diff --git a/png/128/emoji_u1f1f7.png b/png/128/emoji_u1f1f7.png deleted file mode 100644 index 84085d35b..000000000 Binary files a/png/128/emoji_u1f1f7.png and /dev/null differ diff --git a/png/128/emoji_u1f1f7_1f1fa.png b/png/128/emoji_u1f1f7_1f1fa.png deleted file mode 100644 index 7d51c67f8..000000000 Binary files a/png/128/emoji_u1f1f7_1f1fa.png and /dev/null differ diff --git a/png/128/emoji_u1f1f8.png b/png/128/emoji_u1f1f8.png deleted file mode 100644 index c3d6d018b..000000000 Binary files a/png/128/emoji_u1f1f8.png and /dev/null differ diff --git a/png/128/emoji_u1f1f9.png b/png/128/emoji_u1f1f9.png deleted file mode 100644 index d440c0ca2..000000000 Binary files a/png/128/emoji_u1f1f9.png and /dev/null differ diff --git a/png/128/emoji_u1f1fa.png b/png/128/emoji_u1f1fa.png deleted file mode 100644 index 318215086..000000000 Binary files a/png/128/emoji_u1f1fa.png and /dev/null differ diff --git a/png/128/emoji_u1f1fa_1f1f8.png b/png/128/emoji_u1f1fa_1f1f8.png deleted file mode 100644 index 656d3df65..000000000 Binary files a/png/128/emoji_u1f1fa_1f1f8.png and /dev/null differ diff --git a/png/128/emoji_u1f1fb.png b/png/128/emoji_u1f1fb.png deleted file mode 100644 index 6d6ac0430..000000000 Binary files a/png/128/emoji_u1f1fb.png and /dev/null differ diff --git a/png/128/emoji_u1f1fc.png b/png/128/emoji_u1f1fc.png deleted file mode 100644 index 670b5e9e3..000000000 Binary files a/png/128/emoji_u1f1fc.png and /dev/null differ diff --git a/png/128/emoji_u1f1fd.png b/png/128/emoji_u1f1fd.png deleted file mode 100644 index b69f0b7ca..000000000 Binary files a/png/128/emoji_u1f1fd.png and /dev/null differ diff --git a/png/128/emoji_u1f1fe.png b/png/128/emoji_u1f1fe.png deleted file mode 100644 index 08bc1a72b..000000000 Binary files a/png/128/emoji_u1f1fe.png and /dev/null differ diff --git a/png/128/emoji_u1f1ff.png b/png/128/emoji_u1f1ff.png deleted file mode 100644 index fac16edfb..000000000 Binary files a/png/128/emoji_u1f1ff.png and /dev/null differ diff --git a/png/128/emoji_u1f201.png b/png/128/emoji_u1f201.png deleted file mode 100644 index a1ea0a7a5..000000000 Binary files a/png/128/emoji_u1f201.png and /dev/null differ diff --git a/png/128/emoji_u1f202.png b/png/128/emoji_u1f202.png deleted file mode 100644 index ee2c806bc..000000000 Binary files a/png/128/emoji_u1f202.png and /dev/null differ diff --git a/png/128/emoji_u1f21a.png b/png/128/emoji_u1f21a.png deleted file mode 100644 index 1dd0a3406..000000000 Binary files a/png/128/emoji_u1f21a.png and /dev/null differ diff --git a/png/128/emoji_u1f22f.png b/png/128/emoji_u1f22f.png deleted file mode 100644 index 87606c752..000000000 Binary files a/png/128/emoji_u1f22f.png and /dev/null differ diff --git a/png/128/emoji_u1f232.png b/png/128/emoji_u1f232.png deleted file mode 100644 index a339becb2..000000000 Binary files a/png/128/emoji_u1f232.png and /dev/null differ diff --git a/png/128/emoji_u1f233.png b/png/128/emoji_u1f233.png deleted file mode 100644 index 45622696d..000000000 Binary files a/png/128/emoji_u1f233.png and /dev/null differ diff --git a/png/128/emoji_u1f234.png b/png/128/emoji_u1f234.png deleted file mode 100644 index deb11470d..000000000 Binary files a/png/128/emoji_u1f234.png and /dev/null differ diff --git a/png/128/emoji_u1f235.png b/png/128/emoji_u1f235.png deleted file mode 100644 index 2c917e9b9..000000000 Binary files a/png/128/emoji_u1f235.png and /dev/null differ diff --git a/png/128/emoji_u1f236.png b/png/128/emoji_u1f236.png deleted file mode 100644 index ddc82f261..000000000 Binary files a/png/128/emoji_u1f236.png and /dev/null differ diff --git a/png/128/emoji_u1f237.png b/png/128/emoji_u1f237.png deleted file mode 100644 index 41b9729e5..000000000 Binary files a/png/128/emoji_u1f237.png and /dev/null differ diff --git a/png/128/emoji_u1f238.png b/png/128/emoji_u1f238.png deleted file mode 100644 index 686e4cc9d..000000000 Binary files a/png/128/emoji_u1f238.png and /dev/null differ diff --git a/png/128/emoji_u1f239.png b/png/128/emoji_u1f239.png deleted file mode 100644 index 4bbb5611c..000000000 Binary files a/png/128/emoji_u1f239.png and /dev/null differ diff --git a/png/128/emoji_u1f23a.png b/png/128/emoji_u1f23a.png deleted file mode 100644 index cdcc7c358..000000000 Binary files a/png/128/emoji_u1f23a.png and /dev/null differ diff --git a/png/128/emoji_u1f250.png b/png/128/emoji_u1f250.png deleted file mode 100644 index b85e5aa62..000000000 Binary files a/png/128/emoji_u1f250.png and /dev/null differ diff --git a/png/128/emoji_u1f251.png b/png/128/emoji_u1f251.png deleted file mode 100644 index f18ef83cc..000000000 Binary files a/png/128/emoji_u1f251.png and /dev/null differ diff --git a/png/128/emoji_u1f300.png b/png/128/emoji_u1f300.png deleted file mode 100644 index cc54e53fc..000000000 Binary files a/png/128/emoji_u1f300.png and /dev/null differ diff --git a/png/128/emoji_u1f301.png b/png/128/emoji_u1f301.png deleted file mode 100644 index 1f88a1ad6..000000000 Binary files a/png/128/emoji_u1f301.png and /dev/null differ diff --git a/png/128/emoji_u1f302.png b/png/128/emoji_u1f302.png deleted file mode 100644 index a7806fc11..000000000 Binary files a/png/128/emoji_u1f302.png and /dev/null differ diff --git a/png/128/emoji_u1f303.png b/png/128/emoji_u1f303.png deleted file mode 100644 index 3c6f0a7ef..000000000 Binary files a/png/128/emoji_u1f303.png and /dev/null differ diff --git a/png/128/emoji_u1f304.png b/png/128/emoji_u1f304.png deleted file mode 100644 index 10aa61695..000000000 Binary files a/png/128/emoji_u1f304.png and /dev/null differ diff --git a/png/128/emoji_u1f305.png b/png/128/emoji_u1f305.png deleted file mode 100644 index 0307c8d19..000000000 Binary files a/png/128/emoji_u1f305.png and /dev/null differ diff --git a/png/128/emoji_u1f306.png b/png/128/emoji_u1f306.png deleted file mode 100644 index 15919caea..000000000 Binary files a/png/128/emoji_u1f306.png and /dev/null differ diff --git a/png/128/emoji_u1f307.png b/png/128/emoji_u1f307.png deleted file mode 100644 index e596db8ba..000000000 Binary files a/png/128/emoji_u1f307.png and /dev/null differ diff --git a/png/128/emoji_u1f308.png b/png/128/emoji_u1f308.png deleted file mode 100644 index 4e5caeed1..000000000 Binary files a/png/128/emoji_u1f308.png and /dev/null differ diff --git a/png/128/emoji_u1f309.png b/png/128/emoji_u1f309.png deleted file mode 100644 index 51c8ae68c..000000000 Binary files a/png/128/emoji_u1f309.png and /dev/null differ diff --git a/png/128/emoji_u1f30a.png b/png/128/emoji_u1f30a.png deleted file mode 100644 index 9e4f860a4..000000000 Binary files a/png/128/emoji_u1f30a.png and /dev/null differ diff --git a/png/128/emoji_u1f30b.png b/png/128/emoji_u1f30b.png deleted file mode 100644 index 4906c2ea9..000000000 Binary files a/png/128/emoji_u1f30b.png and /dev/null differ diff --git a/png/128/emoji_u1f30c.png b/png/128/emoji_u1f30c.png deleted file mode 100644 index 4a1411280..000000000 Binary files a/png/128/emoji_u1f30c.png and /dev/null differ diff --git a/png/128/emoji_u1f30d.png b/png/128/emoji_u1f30d.png deleted file mode 100644 index e0edb91a6..000000000 Binary files a/png/128/emoji_u1f30d.png and /dev/null differ diff --git a/png/128/emoji_u1f30e.png b/png/128/emoji_u1f30e.png deleted file mode 100644 index e40a68f8a..000000000 Binary files a/png/128/emoji_u1f30e.png and /dev/null differ diff --git a/png/128/emoji_u1f30f.png b/png/128/emoji_u1f30f.png deleted file mode 100644 index b5c919ebb..000000000 Binary files a/png/128/emoji_u1f30f.png and /dev/null differ diff --git a/png/128/emoji_u1f310.png b/png/128/emoji_u1f310.png deleted file mode 100644 index 9801599a2..000000000 Binary files a/png/128/emoji_u1f310.png and /dev/null differ diff --git a/png/128/emoji_u1f311.png b/png/128/emoji_u1f311.png deleted file mode 100644 index 1b1fda2b4..000000000 Binary files a/png/128/emoji_u1f311.png and /dev/null differ diff --git a/png/128/emoji_u1f312.png b/png/128/emoji_u1f312.png deleted file mode 100644 index 89a35bc6d..000000000 Binary files a/png/128/emoji_u1f312.png and /dev/null differ diff --git a/png/128/emoji_u1f313.png b/png/128/emoji_u1f313.png deleted file mode 100644 index 2cc8dbb83..000000000 Binary files a/png/128/emoji_u1f313.png and /dev/null differ diff --git a/png/128/emoji_u1f314.png b/png/128/emoji_u1f314.png deleted file mode 100644 index e14a2420f..000000000 Binary files a/png/128/emoji_u1f314.png and /dev/null differ diff --git a/png/128/emoji_u1f315.png b/png/128/emoji_u1f315.png deleted file mode 100644 index 947657cb9..000000000 Binary files a/png/128/emoji_u1f315.png and /dev/null differ diff --git a/png/128/emoji_u1f316.png b/png/128/emoji_u1f316.png deleted file mode 100644 index 3b48e8ff6..000000000 Binary files a/png/128/emoji_u1f316.png and /dev/null differ diff --git a/png/128/emoji_u1f317.png b/png/128/emoji_u1f317.png deleted file mode 100644 index b6ffc319f..000000000 Binary files a/png/128/emoji_u1f317.png and /dev/null differ diff --git a/png/128/emoji_u1f318.png b/png/128/emoji_u1f318.png deleted file mode 100644 index 0040371b1..000000000 Binary files a/png/128/emoji_u1f318.png and /dev/null differ diff --git a/png/128/emoji_u1f319.png b/png/128/emoji_u1f319.png deleted file mode 100644 index 0facd57af..000000000 Binary files a/png/128/emoji_u1f319.png and /dev/null differ diff --git a/png/128/emoji_u1f31a.png b/png/128/emoji_u1f31a.png deleted file mode 100644 index 6bc93f842..000000000 Binary files a/png/128/emoji_u1f31a.png and /dev/null differ diff --git a/png/128/emoji_u1f31b.png b/png/128/emoji_u1f31b.png deleted file mode 100644 index fb6b08df2..000000000 Binary files a/png/128/emoji_u1f31b.png and /dev/null differ diff --git a/png/128/emoji_u1f31c.png b/png/128/emoji_u1f31c.png deleted file mode 100644 index 5f703276a..000000000 Binary files a/png/128/emoji_u1f31c.png and /dev/null differ diff --git a/png/128/emoji_u1f31d.png b/png/128/emoji_u1f31d.png deleted file mode 100644 index 9fd22cce1..000000000 Binary files a/png/128/emoji_u1f31d.png and /dev/null differ diff --git a/png/128/emoji_u1f31e.png b/png/128/emoji_u1f31e.png deleted file mode 100644 index cdaf056c4..000000000 Binary files a/png/128/emoji_u1f31e.png and /dev/null differ diff --git a/png/128/emoji_u1f31f.png b/png/128/emoji_u1f31f.png deleted file mode 100644 index dcbf346e0..000000000 Binary files a/png/128/emoji_u1f31f.png and /dev/null differ diff --git a/png/128/emoji_u1f320.png b/png/128/emoji_u1f320.png deleted file mode 100644 index 883ddc97a..000000000 Binary files a/png/128/emoji_u1f320.png and /dev/null differ diff --git a/png/128/emoji_u1f321.png b/png/128/emoji_u1f321.png deleted file mode 100644 index 42b9f5940..000000000 Binary files a/png/128/emoji_u1f321.png and /dev/null differ diff --git a/png/128/emoji_u1f324.png b/png/128/emoji_u1f324.png deleted file mode 100644 index 6dbaf8f6b..000000000 Binary files a/png/128/emoji_u1f324.png and /dev/null differ diff --git a/png/128/emoji_u1f325.png b/png/128/emoji_u1f325.png deleted file mode 100644 index 45b0910ef..000000000 Binary files a/png/128/emoji_u1f325.png and /dev/null differ diff --git a/png/128/emoji_u1f326.png b/png/128/emoji_u1f326.png deleted file mode 100644 index 0bcfad283..000000000 Binary files a/png/128/emoji_u1f326.png and /dev/null differ diff --git a/png/128/emoji_u1f327.png b/png/128/emoji_u1f327.png deleted file mode 100644 index d98172776..000000000 Binary files a/png/128/emoji_u1f327.png and /dev/null differ diff --git a/png/128/emoji_u1f328.png b/png/128/emoji_u1f328.png deleted file mode 100644 index e64eabecd..000000000 Binary files a/png/128/emoji_u1f328.png and /dev/null differ diff --git a/png/128/emoji_u1f329.png b/png/128/emoji_u1f329.png deleted file mode 100644 index e4a7b9e39..000000000 Binary files a/png/128/emoji_u1f329.png and /dev/null differ diff --git a/png/128/emoji_u1f32a.png b/png/128/emoji_u1f32a.png deleted file mode 100644 index e3ceedab2..000000000 Binary files a/png/128/emoji_u1f32a.png and /dev/null differ diff --git a/png/128/emoji_u1f32b.png b/png/128/emoji_u1f32b.png deleted file mode 100644 index 58f9ec784..000000000 Binary files a/png/128/emoji_u1f32b.png and /dev/null differ diff --git a/png/128/emoji_u1f32c.png b/png/128/emoji_u1f32c.png deleted file mode 100644 index aa674c768..000000000 Binary files a/png/128/emoji_u1f32c.png and /dev/null differ diff --git a/png/128/emoji_u1f32d.png b/png/128/emoji_u1f32d.png deleted file mode 100644 index 4e338940f..000000000 Binary files a/png/128/emoji_u1f32d.png and /dev/null differ diff --git a/png/128/emoji_u1f32e.png b/png/128/emoji_u1f32e.png deleted file mode 100644 index 90c70224c..000000000 Binary files a/png/128/emoji_u1f32e.png and /dev/null differ diff --git a/png/128/emoji_u1f32f.png b/png/128/emoji_u1f32f.png deleted file mode 100644 index f9e1da66b..000000000 Binary files a/png/128/emoji_u1f32f.png and /dev/null differ diff --git a/png/128/emoji_u1f330.png b/png/128/emoji_u1f330.png deleted file mode 100644 index 62560fd7d..000000000 Binary files a/png/128/emoji_u1f330.png and /dev/null differ diff --git a/png/128/emoji_u1f331.png b/png/128/emoji_u1f331.png deleted file mode 100644 index 3d2ed922b..000000000 Binary files a/png/128/emoji_u1f331.png and /dev/null differ diff --git a/png/128/emoji_u1f332.png b/png/128/emoji_u1f332.png deleted file mode 100644 index dbd838e2f..000000000 Binary files a/png/128/emoji_u1f332.png and /dev/null differ diff --git a/png/128/emoji_u1f333.png b/png/128/emoji_u1f333.png deleted file mode 100644 index b3178def1..000000000 Binary files a/png/128/emoji_u1f333.png and /dev/null differ diff --git a/png/128/emoji_u1f334.png b/png/128/emoji_u1f334.png deleted file mode 100644 index d894f42b6..000000000 Binary files a/png/128/emoji_u1f334.png and /dev/null differ diff --git a/png/128/emoji_u1f335.png b/png/128/emoji_u1f335.png deleted file mode 100644 index a7a1c3b8b..000000000 Binary files a/png/128/emoji_u1f335.png and /dev/null differ diff --git a/png/128/emoji_u1f336.png b/png/128/emoji_u1f336.png deleted file mode 100644 index f8f8edb25..000000000 Binary files a/png/128/emoji_u1f336.png and /dev/null differ diff --git a/png/128/emoji_u1f337.png b/png/128/emoji_u1f337.png deleted file mode 100644 index 72a69c39d..000000000 Binary files a/png/128/emoji_u1f337.png and /dev/null differ diff --git a/png/128/emoji_u1f338.png b/png/128/emoji_u1f338.png deleted file mode 100644 index 9ea6cb0d9..000000000 Binary files a/png/128/emoji_u1f338.png and /dev/null differ diff --git a/png/128/emoji_u1f339.png b/png/128/emoji_u1f339.png deleted file mode 100644 index 2928de0b7..000000000 Binary files a/png/128/emoji_u1f339.png and /dev/null differ diff --git a/png/128/emoji_u1f33a.png b/png/128/emoji_u1f33a.png deleted file mode 100644 index bef57cc27..000000000 Binary files a/png/128/emoji_u1f33a.png and /dev/null differ diff --git a/png/128/emoji_u1f33b.png b/png/128/emoji_u1f33b.png deleted file mode 100644 index 29645cced..000000000 Binary files a/png/128/emoji_u1f33b.png and /dev/null differ diff --git a/png/128/emoji_u1f33c.png b/png/128/emoji_u1f33c.png deleted file mode 100644 index f62efc30c..000000000 Binary files a/png/128/emoji_u1f33c.png and /dev/null differ diff --git a/png/128/emoji_u1f33d.png b/png/128/emoji_u1f33d.png deleted file mode 100644 index 5951e5b1d..000000000 Binary files a/png/128/emoji_u1f33d.png and /dev/null differ diff --git a/png/128/emoji_u1f33e.png b/png/128/emoji_u1f33e.png deleted file mode 100644 index 49a72c276..000000000 Binary files a/png/128/emoji_u1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f33f.png b/png/128/emoji_u1f33f.png deleted file mode 100644 index 4f4a2fd48..000000000 Binary files a/png/128/emoji_u1f33f.png and /dev/null differ diff --git a/png/128/emoji_u1f340.png b/png/128/emoji_u1f340.png deleted file mode 100644 index 3adb6123d..000000000 Binary files a/png/128/emoji_u1f340.png and /dev/null differ diff --git a/png/128/emoji_u1f341.png b/png/128/emoji_u1f341.png deleted file mode 100644 index bf9cb0c0f..000000000 Binary files a/png/128/emoji_u1f341.png and /dev/null differ diff --git a/png/128/emoji_u1f342.png b/png/128/emoji_u1f342.png deleted file mode 100644 index 1ff50cbe2..000000000 Binary files a/png/128/emoji_u1f342.png and /dev/null differ diff --git a/png/128/emoji_u1f343.png b/png/128/emoji_u1f343.png deleted file mode 100644 index 6a7f066ef..000000000 Binary files a/png/128/emoji_u1f343.png and /dev/null differ diff --git a/png/128/emoji_u1f344.png b/png/128/emoji_u1f344.png deleted file mode 100644 index 06db13998..000000000 Binary files a/png/128/emoji_u1f344.png and /dev/null differ diff --git a/png/128/emoji_u1f345.png b/png/128/emoji_u1f345.png deleted file mode 100644 index 06310cfe2..000000000 Binary files a/png/128/emoji_u1f345.png and /dev/null differ diff --git a/png/128/emoji_u1f346.png b/png/128/emoji_u1f346.png deleted file mode 100644 index ce42a9d6b..000000000 Binary files a/png/128/emoji_u1f346.png and /dev/null differ diff --git a/png/128/emoji_u1f347.png b/png/128/emoji_u1f347.png deleted file mode 100644 index 1f72c855a..000000000 Binary files a/png/128/emoji_u1f347.png and /dev/null differ diff --git a/png/128/emoji_u1f348.png b/png/128/emoji_u1f348.png deleted file mode 100644 index fb72dc545..000000000 Binary files a/png/128/emoji_u1f348.png and /dev/null differ diff --git a/png/128/emoji_u1f349.png b/png/128/emoji_u1f349.png deleted file mode 100644 index ec6c35440..000000000 Binary files a/png/128/emoji_u1f349.png and /dev/null differ diff --git a/png/128/emoji_u1f34a.png b/png/128/emoji_u1f34a.png deleted file mode 100644 index 0c16cce4e..000000000 Binary files a/png/128/emoji_u1f34a.png and /dev/null differ diff --git a/png/128/emoji_u1f34b.png b/png/128/emoji_u1f34b.png deleted file mode 100644 index 77883da8f..000000000 Binary files a/png/128/emoji_u1f34b.png and /dev/null differ diff --git a/png/128/emoji_u1f34c.png b/png/128/emoji_u1f34c.png deleted file mode 100644 index 421b43483..000000000 Binary files a/png/128/emoji_u1f34c.png and /dev/null differ diff --git a/png/128/emoji_u1f34d.png b/png/128/emoji_u1f34d.png deleted file mode 100644 index 61e6aa1ef..000000000 Binary files a/png/128/emoji_u1f34d.png and /dev/null differ diff --git a/png/128/emoji_u1f34e.png b/png/128/emoji_u1f34e.png deleted file mode 100644 index bda410ff1..000000000 Binary files a/png/128/emoji_u1f34e.png and /dev/null differ diff --git a/png/128/emoji_u1f34f.png b/png/128/emoji_u1f34f.png deleted file mode 100644 index 79188f796..000000000 Binary files a/png/128/emoji_u1f34f.png and /dev/null differ diff --git a/png/128/emoji_u1f350.png b/png/128/emoji_u1f350.png deleted file mode 100644 index 0c767e72a..000000000 Binary files a/png/128/emoji_u1f350.png and /dev/null differ diff --git a/png/128/emoji_u1f351.png b/png/128/emoji_u1f351.png deleted file mode 100644 index f3c5e7f76..000000000 Binary files a/png/128/emoji_u1f351.png and /dev/null differ diff --git a/png/128/emoji_u1f352.png b/png/128/emoji_u1f352.png deleted file mode 100644 index c1de0f369..000000000 Binary files a/png/128/emoji_u1f352.png and /dev/null differ diff --git a/png/128/emoji_u1f353.png b/png/128/emoji_u1f353.png deleted file mode 100644 index b1588267e..000000000 Binary files a/png/128/emoji_u1f353.png and /dev/null differ diff --git a/png/128/emoji_u1f354.png b/png/128/emoji_u1f354.png deleted file mode 100644 index 17670207e..000000000 Binary files a/png/128/emoji_u1f354.png and /dev/null differ diff --git a/png/128/emoji_u1f355.png b/png/128/emoji_u1f355.png deleted file mode 100644 index 796aee678..000000000 Binary files a/png/128/emoji_u1f355.png and /dev/null differ diff --git a/png/128/emoji_u1f356.png b/png/128/emoji_u1f356.png deleted file mode 100644 index 870535a07..000000000 Binary files a/png/128/emoji_u1f356.png and /dev/null differ diff --git a/png/128/emoji_u1f357.png b/png/128/emoji_u1f357.png deleted file mode 100644 index ecc27d46e..000000000 Binary files a/png/128/emoji_u1f357.png and /dev/null differ diff --git a/png/128/emoji_u1f358.png b/png/128/emoji_u1f358.png deleted file mode 100644 index 204d4c97e..000000000 Binary files a/png/128/emoji_u1f358.png and /dev/null differ diff --git a/png/128/emoji_u1f359.png b/png/128/emoji_u1f359.png deleted file mode 100644 index 7b241fa7e..000000000 Binary files a/png/128/emoji_u1f359.png and /dev/null differ diff --git a/png/128/emoji_u1f35a.png b/png/128/emoji_u1f35a.png deleted file mode 100644 index 5d14009b7..000000000 Binary files a/png/128/emoji_u1f35a.png and /dev/null differ diff --git a/png/128/emoji_u1f35b.png b/png/128/emoji_u1f35b.png deleted file mode 100644 index 10987860a..000000000 Binary files a/png/128/emoji_u1f35b.png and /dev/null differ diff --git a/png/128/emoji_u1f35c.png b/png/128/emoji_u1f35c.png deleted file mode 100644 index fad610356..000000000 Binary files a/png/128/emoji_u1f35c.png and /dev/null differ diff --git a/png/128/emoji_u1f35d.png b/png/128/emoji_u1f35d.png deleted file mode 100644 index 2453fc12b..000000000 Binary files a/png/128/emoji_u1f35d.png and /dev/null differ diff --git a/png/128/emoji_u1f35e.png b/png/128/emoji_u1f35e.png deleted file mode 100644 index 02339b5e5..000000000 Binary files a/png/128/emoji_u1f35e.png and /dev/null differ diff --git a/png/128/emoji_u1f35e_1f3fb.png b/png/128/emoji_u1f35e_1f3fb.png deleted file mode 100644 index 0b9896391..000000000 Binary files a/png/128/emoji_u1f35e_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f35e_1f3fc.png b/png/128/emoji_u1f35e_1f3fc.png deleted file mode 100644 index 074a52113..000000000 Binary files a/png/128/emoji_u1f35e_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f35e_1f3fd.png b/png/128/emoji_u1f35e_1f3fd.png deleted file mode 100644 index 58760bed8..000000000 Binary files a/png/128/emoji_u1f35e_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f35e_1f3fe.png b/png/128/emoji_u1f35e_1f3fe.png deleted file mode 100644 index 66f8d54cd..000000000 Binary files a/png/128/emoji_u1f35e_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f35e_1f3ff.png b/png/128/emoji_u1f35e_1f3ff.png deleted file mode 100644 index a56801225..000000000 Binary files a/png/128/emoji_u1f35e_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f35f.png b/png/128/emoji_u1f35f.png deleted file mode 100644 index 09dd34493..000000000 Binary files a/png/128/emoji_u1f35f.png and /dev/null differ diff --git a/png/128/emoji_u1f360.png b/png/128/emoji_u1f360.png deleted file mode 100644 index 2992a27cd..000000000 Binary files a/png/128/emoji_u1f360.png and /dev/null differ diff --git a/png/128/emoji_u1f361.png b/png/128/emoji_u1f361.png deleted file mode 100644 index 1a523f4dd..000000000 Binary files a/png/128/emoji_u1f361.png and /dev/null differ diff --git a/png/128/emoji_u1f362.png b/png/128/emoji_u1f362.png deleted file mode 100644 index b6e52705a..000000000 Binary files a/png/128/emoji_u1f362.png and /dev/null differ diff --git a/png/128/emoji_u1f363.png b/png/128/emoji_u1f363.png deleted file mode 100644 index 00477a62a..000000000 Binary files a/png/128/emoji_u1f363.png and /dev/null differ diff --git a/png/128/emoji_u1f364.png b/png/128/emoji_u1f364.png deleted file mode 100644 index d29b4a572..000000000 Binary files a/png/128/emoji_u1f364.png and /dev/null differ diff --git a/png/128/emoji_u1f365.png b/png/128/emoji_u1f365.png deleted file mode 100644 index abd4bb8c3..000000000 Binary files a/png/128/emoji_u1f365.png and /dev/null differ diff --git a/png/128/emoji_u1f366.png b/png/128/emoji_u1f366.png deleted file mode 100644 index 4ebc9afa0..000000000 Binary files a/png/128/emoji_u1f366.png and /dev/null differ diff --git a/png/128/emoji_u1f367.png b/png/128/emoji_u1f367.png deleted file mode 100644 index 85cfd6367..000000000 Binary files a/png/128/emoji_u1f367.png and /dev/null differ diff --git a/png/128/emoji_u1f368.png b/png/128/emoji_u1f368.png deleted file mode 100644 index a0df9c3d4..000000000 Binary files a/png/128/emoji_u1f368.png and /dev/null differ diff --git a/png/128/emoji_u1f369.png b/png/128/emoji_u1f369.png deleted file mode 100644 index 8778f83b5..000000000 Binary files a/png/128/emoji_u1f369.png and /dev/null differ diff --git a/png/128/emoji_u1f36a.png b/png/128/emoji_u1f36a.png deleted file mode 100644 index 06e03ac3d..000000000 Binary files a/png/128/emoji_u1f36a.png and /dev/null differ diff --git a/png/128/emoji_u1f36b.png b/png/128/emoji_u1f36b.png deleted file mode 100644 index 443fcf325..000000000 Binary files a/png/128/emoji_u1f36b.png and /dev/null differ diff --git a/png/128/emoji_u1f36c.png b/png/128/emoji_u1f36c.png deleted file mode 100644 index 1214e8ef1..000000000 Binary files a/png/128/emoji_u1f36c.png and /dev/null differ diff --git a/png/128/emoji_u1f36d.png b/png/128/emoji_u1f36d.png deleted file mode 100644 index 54d6d971b..000000000 Binary files a/png/128/emoji_u1f36d.png and /dev/null differ diff --git a/png/128/emoji_u1f36e.png b/png/128/emoji_u1f36e.png deleted file mode 100644 index 67688224f..000000000 Binary files a/png/128/emoji_u1f36e.png and /dev/null differ diff --git a/png/128/emoji_u1f36f.png b/png/128/emoji_u1f36f.png deleted file mode 100644 index 4f2a6d571..000000000 Binary files a/png/128/emoji_u1f36f.png and /dev/null differ diff --git a/png/128/emoji_u1f370.png b/png/128/emoji_u1f370.png deleted file mode 100644 index 96c843bdd..000000000 Binary files a/png/128/emoji_u1f370.png and /dev/null differ diff --git a/png/128/emoji_u1f371.png b/png/128/emoji_u1f371.png deleted file mode 100644 index cbfc609f5..000000000 Binary files a/png/128/emoji_u1f371.png and /dev/null differ diff --git a/png/128/emoji_u1f372.png b/png/128/emoji_u1f372.png deleted file mode 100644 index c6f8e6e00..000000000 Binary files a/png/128/emoji_u1f372.png and /dev/null differ diff --git a/png/128/emoji_u1f373.png b/png/128/emoji_u1f373.png deleted file mode 100644 index a6c13b751..000000000 Binary files a/png/128/emoji_u1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f374.png b/png/128/emoji_u1f374.png deleted file mode 100644 index 0e109df99..000000000 Binary files a/png/128/emoji_u1f374.png and /dev/null differ diff --git a/png/128/emoji_u1f375.png b/png/128/emoji_u1f375.png deleted file mode 100644 index d51a6746e..000000000 Binary files a/png/128/emoji_u1f375.png and /dev/null differ diff --git a/png/128/emoji_u1f376.png b/png/128/emoji_u1f376.png deleted file mode 100644 index 8e00e7e18..000000000 Binary files a/png/128/emoji_u1f376.png and /dev/null differ diff --git a/png/128/emoji_u1f377.png b/png/128/emoji_u1f377.png deleted file mode 100644 index 15861af8c..000000000 Binary files a/png/128/emoji_u1f377.png and /dev/null differ diff --git a/png/128/emoji_u1f378.png b/png/128/emoji_u1f378.png deleted file mode 100644 index b03cfb7ae..000000000 Binary files a/png/128/emoji_u1f378.png and /dev/null differ diff --git a/png/128/emoji_u1f379.png b/png/128/emoji_u1f379.png deleted file mode 100644 index e2620ce39..000000000 Binary files a/png/128/emoji_u1f379.png and /dev/null differ diff --git a/png/128/emoji_u1f37a.png b/png/128/emoji_u1f37a.png deleted file mode 100644 index 314c211cc..000000000 Binary files a/png/128/emoji_u1f37a.png and /dev/null differ diff --git a/png/128/emoji_u1f37b.png b/png/128/emoji_u1f37b.png deleted file mode 100644 index e48ae6907..000000000 Binary files a/png/128/emoji_u1f37b.png and /dev/null differ diff --git a/png/128/emoji_u1f37c.png b/png/128/emoji_u1f37c.png deleted file mode 100644 index 60f63ea10..000000000 Binary files a/png/128/emoji_u1f37c.png and /dev/null differ diff --git a/png/128/emoji_u1f37d.png b/png/128/emoji_u1f37d.png deleted file mode 100644 index 2cc6ab482..000000000 Binary files a/png/128/emoji_u1f37d.png and /dev/null differ diff --git a/png/128/emoji_u1f37e.png b/png/128/emoji_u1f37e.png deleted file mode 100644 index 89a191155..000000000 Binary files a/png/128/emoji_u1f37e.png and /dev/null differ diff --git a/png/128/emoji_u1f37f.png b/png/128/emoji_u1f37f.png deleted file mode 100644 index b7f876440..000000000 Binary files a/png/128/emoji_u1f37f.png and /dev/null differ diff --git a/png/128/emoji_u1f380.png b/png/128/emoji_u1f380.png deleted file mode 100644 index 4321333ea..000000000 Binary files a/png/128/emoji_u1f380.png and /dev/null differ diff --git a/png/128/emoji_u1f381.png b/png/128/emoji_u1f381.png deleted file mode 100644 index 81ab6bf3a..000000000 Binary files a/png/128/emoji_u1f381.png and /dev/null differ diff --git a/png/128/emoji_u1f382.png b/png/128/emoji_u1f382.png deleted file mode 100644 index 4e598a4b2..000000000 Binary files a/png/128/emoji_u1f382.png and /dev/null differ diff --git a/png/128/emoji_u1f383.png b/png/128/emoji_u1f383.png deleted file mode 100644 index 22c5607d6..000000000 Binary files a/png/128/emoji_u1f383.png and /dev/null differ diff --git a/png/128/emoji_u1f384.png b/png/128/emoji_u1f384.png deleted file mode 100644 index 601fcc95a..000000000 Binary files a/png/128/emoji_u1f384.png and /dev/null differ diff --git a/png/128/emoji_u1f385.png b/png/128/emoji_u1f385.png deleted file mode 100644 index 9d6fa5990..000000000 Binary files a/png/128/emoji_u1f385.png and /dev/null differ diff --git a/png/128/emoji_u1f385_1f3fb.png b/png/128/emoji_u1f385_1f3fb.png deleted file mode 100644 index 31f49de61..000000000 Binary files a/png/128/emoji_u1f385_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f385_1f3fc.png b/png/128/emoji_u1f385_1f3fc.png deleted file mode 100644 index 2acd15e4d..000000000 Binary files a/png/128/emoji_u1f385_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f385_1f3fd.png b/png/128/emoji_u1f385_1f3fd.png deleted file mode 100644 index 8eb3974c2..000000000 Binary files a/png/128/emoji_u1f385_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f385_1f3fe.png b/png/128/emoji_u1f385_1f3fe.png deleted file mode 100644 index ccff43ffe..000000000 Binary files a/png/128/emoji_u1f385_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f385_1f3ff.png b/png/128/emoji_u1f385_1f3ff.png deleted file mode 100644 index 0290e59b6..000000000 Binary files a/png/128/emoji_u1f385_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f386.png b/png/128/emoji_u1f386.png deleted file mode 100644 index 82937d5e6..000000000 Binary files a/png/128/emoji_u1f386.png and /dev/null differ diff --git a/png/128/emoji_u1f387.png b/png/128/emoji_u1f387.png deleted file mode 100644 index a62556f69..000000000 Binary files a/png/128/emoji_u1f387.png and /dev/null differ diff --git a/png/128/emoji_u1f388.png b/png/128/emoji_u1f388.png deleted file mode 100644 index c7863d5f1..000000000 Binary files a/png/128/emoji_u1f388.png and /dev/null differ diff --git a/png/128/emoji_u1f389.png b/png/128/emoji_u1f389.png deleted file mode 100644 index 5c136be73..000000000 Binary files a/png/128/emoji_u1f389.png and /dev/null differ diff --git a/png/128/emoji_u1f38a.png b/png/128/emoji_u1f38a.png deleted file mode 100644 index 707b8a2bc..000000000 Binary files a/png/128/emoji_u1f38a.png and /dev/null differ diff --git a/png/128/emoji_u1f38b.png b/png/128/emoji_u1f38b.png deleted file mode 100644 index ad5c00209..000000000 Binary files a/png/128/emoji_u1f38b.png and /dev/null differ diff --git a/png/128/emoji_u1f38c.png b/png/128/emoji_u1f38c.png deleted file mode 100644 index 3c4bde45a..000000000 Binary files a/png/128/emoji_u1f38c.png and /dev/null differ diff --git a/png/128/emoji_u1f38d.png b/png/128/emoji_u1f38d.png deleted file mode 100644 index f0afa8f50..000000000 Binary files a/png/128/emoji_u1f38d.png and /dev/null differ diff --git a/png/128/emoji_u1f38e.png b/png/128/emoji_u1f38e.png deleted file mode 100644 index f7681541a..000000000 Binary files a/png/128/emoji_u1f38e.png and /dev/null differ diff --git a/png/128/emoji_u1f38f.png b/png/128/emoji_u1f38f.png deleted file mode 100644 index 9239cd221..000000000 Binary files a/png/128/emoji_u1f38f.png and /dev/null differ diff --git a/png/128/emoji_u1f390.png b/png/128/emoji_u1f390.png deleted file mode 100644 index 2bb617b04..000000000 Binary files a/png/128/emoji_u1f390.png and /dev/null differ diff --git a/png/128/emoji_u1f391.png b/png/128/emoji_u1f391.png deleted file mode 100644 index 4926819c0..000000000 Binary files a/png/128/emoji_u1f391.png and /dev/null differ diff --git a/png/128/emoji_u1f392.png b/png/128/emoji_u1f392.png deleted file mode 100644 index d1707dc60..000000000 Binary files a/png/128/emoji_u1f392.png and /dev/null differ diff --git a/png/128/emoji_u1f393.png b/png/128/emoji_u1f393.png deleted file mode 100644 index 4f5eda13d..000000000 Binary files a/png/128/emoji_u1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f396.png b/png/128/emoji_u1f396.png deleted file mode 100644 index 7ca0f441b..000000000 Binary files a/png/128/emoji_u1f396.png and /dev/null differ diff --git a/png/128/emoji_u1f397.png b/png/128/emoji_u1f397.png deleted file mode 100644 index 956949388..000000000 Binary files a/png/128/emoji_u1f397.png and /dev/null differ diff --git a/png/128/emoji_u1f399.png b/png/128/emoji_u1f399.png deleted file mode 100644 index e3eb29aa8..000000000 Binary files a/png/128/emoji_u1f399.png and /dev/null differ diff --git a/png/128/emoji_u1f39a.png b/png/128/emoji_u1f39a.png deleted file mode 100644 index ce9c115b6..000000000 Binary files a/png/128/emoji_u1f39a.png and /dev/null differ diff --git a/png/128/emoji_u1f39b.png b/png/128/emoji_u1f39b.png deleted file mode 100644 index e038b0d79..000000000 Binary files a/png/128/emoji_u1f39b.png and /dev/null differ diff --git a/png/128/emoji_u1f39e.png b/png/128/emoji_u1f39e.png deleted file mode 100644 index 800ebb3fc..000000000 Binary files a/png/128/emoji_u1f39e.png and /dev/null differ diff --git a/png/128/emoji_u1f39f.png b/png/128/emoji_u1f39f.png deleted file mode 100644 index d2bfddfce..000000000 Binary files a/png/128/emoji_u1f39f.png and /dev/null differ diff --git a/png/128/emoji_u1f3a0.png b/png/128/emoji_u1f3a0.png deleted file mode 100644 index 89f719393..000000000 Binary files a/png/128/emoji_u1f3a0.png and /dev/null differ diff --git a/png/128/emoji_u1f3a1.png b/png/128/emoji_u1f3a1.png deleted file mode 100644 index 8f2d8c264..000000000 Binary files a/png/128/emoji_u1f3a1.png and /dev/null differ diff --git a/png/128/emoji_u1f3a2.png b/png/128/emoji_u1f3a2.png deleted file mode 100644 index c912686f2..000000000 Binary files a/png/128/emoji_u1f3a2.png and /dev/null differ diff --git a/png/128/emoji_u1f3a3.png b/png/128/emoji_u1f3a3.png deleted file mode 100644 index 7da9f83f0..000000000 Binary files a/png/128/emoji_u1f3a3.png and /dev/null differ diff --git a/png/128/emoji_u1f3a4.png b/png/128/emoji_u1f3a4.png deleted file mode 100644 index 650fb2dd5..000000000 Binary files a/png/128/emoji_u1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f3a5.png b/png/128/emoji_u1f3a5.png deleted file mode 100644 index 4896cfed2..000000000 Binary files a/png/128/emoji_u1f3a5.png and /dev/null differ diff --git a/png/128/emoji_u1f3a6.png b/png/128/emoji_u1f3a6.png deleted file mode 100644 index 14c543501..000000000 Binary files a/png/128/emoji_u1f3a6.png and /dev/null differ diff --git a/png/128/emoji_u1f3a7.png b/png/128/emoji_u1f3a7.png deleted file mode 100644 index cd746ec49..000000000 Binary files a/png/128/emoji_u1f3a7.png and /dev/null differ diff --git a/png/128/emoji_u1f3a8.png b/png/128/emoji_u1f3a8.png deleted file mode 100644 index cfd17422f..000000000 Binary files a/png/128/emoji_u1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f3a9.png b/png/128/emoji_u1f3a9.png deleted file mode 100644 index 047096d21..000000000 Binary files a/png/128/emoji_u1f3a9.png and /dev/null differ diff --git a/png/128/emoji_u1f3aa.png b/png/128/emoji_u1f3aa.png deleted file mode 100644 index a4cf9c0b0..000000000 Binary files a/png/128/emoji_u1f3aa.png and /dev/null differ diff --git a/png/128/emoji_u1f3ab.png b/png/128/emoji_u1f3ab.png deleted file mode 100644 index 1bc2835b2..000000000 Binary files a/png/128/emoji_u1f3ab.png and /dev/null differ diff --git a/png/128/emoji_u1f3ac.png b/png/128/emoji_u1f3ac.png deleted file mode 100644 index c247ae9bb..000000000 Binary files a/png/128/emoji_u1f3ac.png and /dev/null differ diff --git a/png/128/emoji_u1f3ad.png b/png/128/emoji_u1f3ad.png deleted file mode 100644 index ec42e87c0..000000000 Binary files a/png/128/emoji_u1f3ad.png and /dev/null differ diff --git a/png/128/emoji_u1f3ae.png b/png/128/emoji_u1f3ae.png deleted file mode 100644 index 2144bf844..000000000 Binary files a/png/128/emoji_u1f3ae.png and /dev/null differ diff --git a/png/128/emoji_u1f3af.png b/png/128/emoji_u1f3af.png deleted file mode 100644 index cffcd90f7..000000000 Binary files a/png/128/emoji_u1f3af.png and /dev/null differ diff --git a/png/128/emoji_u1f3b0.png b/png/128/emoji_u1f3b0.png deleted file mode 100644 index 9c8424ac2..000000000 Binary files a/png/128/emoji_u1f3b0.png and /dev/null differ diff --git a/png/128/emoji_u1f3b1.png b/png/128/emoji_u1f3b1.png deleted file mode 100644 index 1a784f64d..000000000 Binary files a/png/128/emoji_u1f3b1.png and /dev/null differ diff --git a/png/128/emoji_u1f3b2.png b/png/128/emoji_u1f3b2.png deleted file mode 100644 index 7f5c82826..000000000 Binary files a/png/128/emoji_u1f3b2.png and /dev/null differ diff --git a/png/128/emoji_u1f3b3.png b/png/128/emoji_u1f3b3.png deleted file mode 100644 index fb19a17ec..000000000 Binary files a/png/128/emoji_u1f3b3.png and /dev/null differ diff --git a/png/128/emoji_u1f3b4.png b/png/128/emoji_u1f3b4.png deleted file mode 100644 index 4c1c06c96..000000000 Binary files a/png/128/emoji_u1f3b4.png and /dev/null differ diff --git a/png/128/emoji_u1f3b5.png b/png/128/emoji_u1f3b5.png deleted file mode 100644 index 6efe4767c..000000000 Binary files a/png/128/emoji_u1f3b5.png and /dev/null differ diff --git a/png/128/emoji_u1f3b6.png b/png/128/emoji_u1f3b6.png deleted file mode 100644 index a91c5f253..000000000 Binary files a/png/128/emoji_u1f3b6.png and /dev/null differ diff --git a/png/128/emoji_u1f3b7.png b/png/128/emoji_u1f3b7.png deleted file mode 100644 index 5a13d3cd8..000000000 Binary files a/png/128/emoji_u1f3b7.png and /dev/null differ diff --git a/png/128/emoji_u1f3b8.png b/png/128/emoji_u1f3b8.png deleted file mode 100644 index d871325b7..000000000 Binary files a/png/128/emoji_u1f3b8.png and /dev/null differ diff --git a/png/128/emoji_u1f3b9.png b/png/128/emoji_u1f3b9.png deleted file mode 100644 index 4b7f4e5d7..000000000 Binary files a/png/128/emoji_u1f3b9.png and /dev/null differ diff --git a/png/128/emoji_u1f3ba.png b/png/128/emoji_u1f3ba.png deleted file mode 100644 index 5fb2498be..000000000 Binary files a/png/128/emoji_u1f3ba.png and /dev/null differ diff --git a/png/128/emoji_u1f3bb.png b/png/128/emoji_u1f3bb.png deleted file mode 100644 index c7868448d..000000000 Binary files a/png/128/emoji_u1f3bb.png and /dev/null differ diff --git a/png/128/emoji_u1f3bc.png b/png/128/emoji_u1f3bc.png deleted file mode 100644 index 6c2706e49..000000000 Binary files a/png/128/emoji_u1f3bc.png and /dev/null differ diff --git a/png/128/emoji_u1f3bd.png b/png/128/emoji_u1f3bd.png deleted file mode 100644 index 062c82f80..000000000 Binary files a/png/128/emoji_u1f3bd.png and /dev/null differ diff --git a/png/128/emoji_u1f3be.png b/png/128/emoji_u1f3be.png deleted file mode 100644 index 72a1ef0d5..000000000 Binary files a/png/128/emoji_u1f3be.png and /dev/null differ diff --git a/png/128/emoji_u1f3bf.png b/png/128/emoji_u1f3bf.png deleted file mode 100644 index 56de29704..000000000 Binary files a/png/128/emoji_u1f3bf.png and /dev/null differ diff --git a/png/128/emoji_u1f3c0.png b/png/128/emoji_u1f3c0.png deleted file mode 100644 index 749baa957..000000000 Binary files a/png/128/emoji_u1f3c0.png and /dev/null differ diff --git a/png/128/emoji_u1f3c1.png b/png/128/emoji_u1f3c1.png deleted file mode 100644 index e004dd984..000000000 Binary files a/png/128/emoji_u1f3c1.png and /dev/null differ diff --git a/png/128/emoji_u1f3c2.png b/png/128/emoji_u1f3c2.png deleted file mode 100644 index 0fa219460..000000000 Binary files a/png/128/emoji_u1f3c2.png and /dev/null differ diff --git a/png/128/emoji_u1f3c2_1f3fb.png b/png/128/emoji_u1f3c2_1f3fb.png deleted file mode 100644 index 1e495a39c..000000000 Binary files a/png/128/emoji_u1f3c2_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3c2_1f3fc.png b/png/128/emoji_u1f3c2_1f3fc.png deleted file mode 100644 index 32afa2fec..000000000 Binary files a/png/128/emoji_u1f3c2_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f3c2_1f3fd.png b/png/128/emoji_u1f3c2_1f3fd.png deleted file mode 100644 index 994100457..000000000 Binary files a/png/128/emoji_u1f3c2_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f3c2_1f3fe.png b/png/128/emoji_u1f3c2_1f3fe.png deleted file mode 100644 index d69197d26..000000000 Binary files a/png/128/emoji_u1f3c2_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f3c2_1f3ff.png b/png/128/emoji_u1f3c2_1f3ff.png deleted file mode 100644 index d719e309b..000000000 Binary files a/png/128/emoji_u1f3c2_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3.png b/png/128/emoji_u1f3c3.png deleted file mode 100644 index 7703fcbe4..000000000 Binary files a/png/128/emoji_u1f3c3.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fb.png b/png/128/emoji_u1f3c3_1f3fb.png deleted file mode 100644 index b7299a886..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fb_200d_2640.png b/png/128/emoji_u1f3c3_1f3fb_200d_2640.png deleted file mode 100644 index 6a4b77dc0..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fb_200d_2642.png b/png/128/emoji_u1f3c3_1f3fb_200d_2642.png deleted file mode 100644 index b7299a886..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fc.png b/png/128/emoji_u1f3c3_1f3fc.png deleted file mode 100644 index a4609d930..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fc_200d_2640.png b/png/128/emoji_u1f3c3_1f3fc_200d_2640.png deleted file mode 100644 index 636ed360f..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fc_200d_2642.png b/png/128/emoji_u1f3c3_1f3fc_200d_2642.png deleted file mode 100644 index a4609d930..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fd.png b/png/128/emoji_u1f3c3_1f3fd.png deleted file mode 100644 index 6b5d6ea61..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fd_200d_2640.png b/png/128/emoji_u1f3c3_1f3fd_200d_2640.png deleted file mode 100644 index 8bad5938d..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fd_200d_2642.png b/png/128/emoji_u1f3c3_1f3fd_200d_2642.png deleted file mode 100644 index 6b5d6ea61..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fe.png b/png/128/emoji_u1f3c3_1f3fe.png deleted file mode 100644 index bc634a781..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fe_200d_2640.png b/png/128/emoji_u1f3c3_1f3fe_200d_2640.png deleted file mode 100644 index b07303ca4..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3fe_200d_2642.png b/png/128/emoji_u1f3c3_1f3fe_200d_2642.png deleted file mode 100644 index bc634a781..000000000 Binary files a/png/128/emoji_u1f3c3_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3ff.png b/png/128/emoji_u1f3c3_1f3ff.png deleted file mode 100644 index 813448967..000000000 Binary files a/png/128/emoji_u1f3c3_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3ff_200d_2640.png b/png/128/emoji_u1f3c3_1f3ff_200d_2640.png deleted file mode 100644 index 7f17ba47e..000000000 Binary files a/png/128/emoji_u1f3c3_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f3ff_200d_2642.png b/png/128/emoji_u1f3c3_1f3ff_200d_2642.png deleted file mode 100644 index 813448967..000000000 Binary files a/png/128/emoji_u1f3c3_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f9b0.png b/png/128/emoji_u1f3c3_1f9b0.png deleted file mode 100644 index f213b2a2c..000000000 Binary files a/png/128/emoji_u1f3c3_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f9b0_200d_2640.png b/png/128/emoji_u1f3c3_1f9b0_200d_2640.png deleted file mode 100644 index accefe95f..000000000 Binary files a/png/128/emoji_u1f3c3_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f9b0_200d_2642.png b/png/128/emoji_u1f3c3_1f9b0_200d_2642.png deleted file mode 100644 index f213b2a2c..000000000 Binary files a/png/128/emoji_u1f3c3_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f9b3.png b/png/128/emoji_u1f3c3_1f9b3.png deleted file mode 100644 index 6ee933b67..000000000 Binary files a/png/128/emoji_u1f3c3_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f9b3_200d_2640.png b/png/128/emoji_u1f3c3_1f9b3_200d_2640.png deleted file mode 100644 index 43bba3e42..000000000 Binary files a/png/128/emoji_u1f3c3_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_1f9b3_200d_2642.png b/png/128/emoji_u1f3c3_1f9b3_200d_2642.png deleted file mode 100644 index 6ee933b67..000000000 Binary files a/png/128/emoji_u1f3c3_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_200d_2640.png b/png/128/emoji_u1f3c3_200d_2640.png deleted file mode 100644 index bdea12db7..000000000 Binary files a/png/128/emoji_u1f3c3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c3_200d_2642.png b/png/128/emoji_u1f3c3_200d_2642.png deleted file mode 100644 index 7703fcbe4..000000000 Binary files a/png/128/emoji_u1f3c3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4.png b/png/128/emoji_u1f3c4.png deleted file mode 100644 index 023d83d9d..000000000 Binary files a/png/128/emoji_u1f3c4.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fb.png b/png/128/emoji_u1f3c4_1f3fb.png deleted file mode 100644 index 423abb1e4..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fb_200d_2640.png b/png/128/emoji_u1f3c4_1f3fb_200d_2640.png deleted file mode 100644 index 1becbbdbb..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fb_200d_2642.png b/png/128/emoji_u1f3c4_1f3fb_200d_2642.png deleted file mode 100644 index 423abb1e4..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fc.png b/png/128/emoji_u1f3c4_1f3fc.png deleted file mode 100644 index 59db48efd..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fc_200d_2640.png b/png/128/emoji_u1f3c4_1f3fc_200d_2640.png deleted file mode 100644 index 11d31a1fa..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fc_200d_2642.png b/png/128/emoji_u1f3c4_1f3fc_200d_2642.png deleted file mode 100644 index 59db48efd..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fd.png b/png/128/emoji_u1f3c4_1f3fd.png deleted file mode 100644 index 25bced50e..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fd_200d_2640.png b/png/128/emoji_u1f3c4_1f3fd_200d_2640.png deleted file mode 100644 index ea4519181..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fd_200d_2642.png b/png/128/emoji_u1f3c4_1f3fd_200d_2642.png deleted file mode 100644 index 25bced50e..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fe.png b/png/128/emoji_u1f3c4_1f3fe.png deleted file mode 100644 index 8bf1dd94a..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fe_200d_2640.png b/png/128/emoji_u1f3c4_1f3fe_200d_2640.png deleted file mode 100644 index 1fd66cb06..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3fe_200d_2642.png b/png/128/emoji_u1f3c4_1f3fe_200d_2642.png deleted file mode 100644 index 8bf1dd94a..000000000 Binary files a/png/128/emoji_u1f3c4_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3ff.png b/png/128/emoji_u1f3c4_1f3ff.png deleted file mode 100644 index ce961e937..000000000 Binary files a/png/128/emoji_u1f3c4_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3ff_200d_2640.png b/png/128/emoji_u1f3c4_1f3ff_200d_2640.png deleted file mode 100644 index 00395996f..000000000 Binary files a/png/128/emoji_u1f3c4_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f3ff_200d_2642.png b/png/128/emoji_u1f3c4_1f3ff_200d_2642.png deleted file mode 100644 index ce961e937..000000000 Binary files a/png/128/emoji_u1f3c4_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f9b0.png b/png/128/emoji_u1f3c4_1f9b0.png deleted file mode 100644 index 539115f16..000000000 Binary files a/png/128/emoji_u1f3c4_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f9b0_200d_2640.png b/png/128/emoji_u1f3c4_1f9b0_200d_2640.png deleted file mode 100644 index 32ba4e86d..000000000 Binary files a/png/128/emoji_u1f3c4_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f9b0_200d_2642.png b/png/128/emoji_u1f3c4_1f9b0_200d_2642.png deleted file mode 100644 index 539115f16..000000000 Binary files a/png/128/emoji_u1f3c4_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f9b3.png b/png/128/emoji_u1f3c4_1f9b3.png deleted file mode 100644 index 090bd1b8e..000000000 Binary files a/png/128/emoji_u1f3c4_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f9b3_200d_2640.png b/png/128/emoji_u1f3c4_1f9b3_200d_2640.png deleted file mode 100644 index 8e8823ba4..000000000 Binary files a/png/128/emoji_u1f3c4_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_1f9b3_200d_2642.png b/png/128/emoji_u1f3c4_1f9b3_200d_2642.png deleted file mode 100644 index 090bd1b8e..000000000 Binary files a/png/128/emoji_u1f3c4_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_200d_2640.png b/png/128/emoji_u1f3c4_200d_2640.png deleted file mode 100644 index 9bb3ead5d..000000000 Binary files a/png/128/emoji_u1f3c4_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3c4_200d_2642.png b/png/128/emoji_u1f3c4_200d_2642.png deleted file mode 100644 index 023d83d9d..000000000 Binary files a/png/128/emoji_u1f3c4_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3c5.png b/png/128/emoji_u1f3c5.png deleted file mode 100644 index 03f62ad70..000000000 Binary files a/png/128/emoji_u1f3c5.png and /dev/null differ diff --git a/png/128/emoji_u1f3c6.png b/png/128/emoji_u1f3c6.png deleted file mode 100644 index 0071d69eb..000000000 Binary files a/png/128/emoji_u1f3c6.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7.png b/png/128/emoji_u1f3c7.png deleted file mode 100644 index b9dfbde2d..000000000 Binary files a/png/128/emoji_u1f3c7.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7_1f3fb.png b/png/128/emoji_u1f3c7_1f3fb.png deleted file mode 100644 index e657856fb..000000000 Binary files a/png/128/emoji_u1f3c7_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7_1f3fc.png b/png/128/emoji_u1f3c7_1f3fc.png deleted file mode 100644 index aa31d1ad6..000000000 Binary files a/png/128/emoji_u1f3c7_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7_1f3fd.png b/png/128/emoji_u1f3c7_1f3fd.png deleted file mode 100644 index 214022f9d..000000000 Binary files a/png/128/emoji_u1f3c7_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7_1f3fe.png b/png/128/emoji_u1f3c7_1f3fe.png deleted file mode 100644 index bc63938e0..000000000 Binary files a/png/128/emoji_u1f3c7_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7_1f3ff.png b/png/128/emoji_u1f3c7_1f3ff.png deleted file mode 100644 index e11ecb540..000000000 Binary files a/png/128/emoji_u1f3c7_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7_1f9b0.png b/png/128/emoji_u1f3c7_1f9b0.png deleted file mode 100644 index 527567609..000000000 Binary files a/png/128/emoji_u1f3c7_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f3c7_1f9b3.png b/png/128/emoji_u1f3c7_1f9b3.png deleted file mode 100644 index f428956ac..000000000 Binary files a/png/128/emoji_u1f3c7_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f3c8.png b/png/128/emoji_u1f3c8.png deleted file mode 100644 index 6fd114e4e..000000000 Binary files a/png/128/emoji_u1f3c8.png and /dev/null differ diff --git a/png/128/emoji_u1f3c9.png b/png/128/emoji_u1f3c9.png deleted file mode 100644 index d91ff0e6e..000000000 Binary files a/png/128/emoji_u1f3c9.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca.png b/png/128/emoji_u1f3ca.png deleted file mode 100644 index 485e10053..000000000 Binary files a/png/128/emoji_u1f3ca.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fb.png b/png/128/emoji_u1f3ca_1f3fb.png deleted file mode 100644 index a8bf57397..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fb_200d_2640.png b/png/128/emoji_u1f3ca_1f3fb_200d_2640.png deleted file mode 100644 index 95fa6071a..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fb_200d_2642.png b/png/128/emoji_u1f3ca_1f3fb_200d_2642.png deleted file mode 100644 index a8bf57397..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fc.png b/png/128/emoji_u1f3ca_1f3fc.png deleted file mode 100644 index 97b1af08b..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fc_200d_2640.png b/png/128/emoji_u1f3ca_1f3fc_200d_2640.png deleted file mode 100644 index 06d5891bf..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fc_200d_2642.png b/png/128/emoji_u1f3ca_1f3fc_200d_2642.png deleted file mode 100644 index 97b1af08b..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fd.png b/png/128/emoji_u1f3ca_1f3fd.png deleted file mode 100644 index f4a10e1bf..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fd_200d_2640.png b/png/128/emoji_u1f3ca_1f3fd_200d_2640.png deleted file mode 100644 index c514fcf4c..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fd_200d_2642.png b/png/128/emoji_u1f3ca_1f3fd_200d_2642.png deleted file mode 100644 index f4a10e1bf..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fe.png b/png/128/emoji_u1f3ca_1f3fe.png deleted file mode 100644 index bcdfe9cc5..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fe_200d_2640.png b/png/128/emoji_u1f3ca_1f3fe_200d_2640.png deleted file mode 100644 index a36635c79..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3fe_200d_2642.png b/png/128/emoji_u1f3ca_1f3fe_200d_2642.png deleted file mode 100644 index bcdfe9cc5..000000000 Binary files a/png/128/emoji_u1f3ca_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3ff.png b/png/128/emoji_u1f3ca_1f3ff.png deleted file mode 100644 index 45da8c710..000000000 Binary files a/png/128/emoji_u1f3ca_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3ff_200d_2640.png b/png/128/emoji_u1f3ca_1f3ff_200d_2640.png deleted file mode 100644 index 53c3185ef..000000000 Binary files a/png/128/emoji_u1f3ca_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f3ff_200d_2642.png b/png/128/emoji_u1f3ca_1f3ff_200d_2642.png deleted file mode 100644 index 45da8c710..000000000 Binary files a/png/128/emoji_u1f3ca_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f9b0.png b/png/128/emoji_u1f3ca_1f9b0.png deleted file mode 100644 index 6dc087cbc..000000000 Binary files a/png/128/emoji_u1f3ca_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f9b0_200d_2640.png b/png/128/emoji_u1f3ca_1f9b0_200d_2640.png deleted file mode 100644 index cb07fe32e..000000000 Binary files a/png/128/emoji_u1f3ca_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f9b0_200d_2642.png b/png/128/emoji_u1f3ca_1f9b0_200d_2642.png deleted file mode 100644 index 6dc087cbc..000000000 Binary files a/png/128/emoji_u1f3ca_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f9b3.png b/png/128/emoji_u1f3ca_1f9b3.png deleted file mode 100644 index baf011a9d..000000000 Binary files a/png/128/emoji_u1f3ca_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f9b3_200d_2640.png b/png/128/emoji_u1f3ca_1f9b3_200d_2640.png deleted file mode 100644 index b032afa52..000000000 Binary files a/png/128/emoji_u1f3ca_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_1f9b3_200d_2642.png b/png/128/emoji_u1f3ca_1f9b3_200d_2642.png deleted file mode 100644 index baf011a9d..000000000 Binary files a/png/128/emoji_u1f3ca_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_200d_2640.png b/png/128/emoji_u1f3ca_200d_2640.png deleted file mode 100644 index d5d63630c..000000000 Binary files a/png/128/emoji_u1f3ca_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3ca_200d_2642.png b/png/128/emoji_u1f3ca_200d_2642.png deleted file mode 100644 index 485e10053..000000000 Binary files a/png/128/emoji_u1f3ca_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb.png b/png/128/emoji_u1f3cb.png deleted file mode 100644 index ca055b9fb..000000000 Binary files a/png/128/emoji_u1f3cb.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fb.png b/png/128/emoji_u1f3cb_1f3fb.png deleted file mode 100644 index dc89d2965..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fb_200d_2640.png b/png/128/emoji_u1f3cb_1f3fb_200d_2640.png deleted file mode 100644 index 1f1818670..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fb_200d_2642.png b/png/128/emoji_u1f3cb_1f3fb_200d_2642.png deleted file mode 100644 index dc89d2965..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fc.png b/png/128/emoji_u1f3cb_1f3fc.png deleted file mode 100644 index 78a782901..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fc_200d_2640.png b/png/128/emoji_u1f3cb_1f3fc_200d_2640.png deleted file mode 100644 index 03d6e3c6b..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fc_200d_2642.png b/png/128/emoji_u1f3cb_1f3fc_200d_2642.png deleted file mode 100644 index 78a782901..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fd.png b/png/128/emoji_u1f3cb_1f3fd.png deleted file mode 100644 index 048bbb3b4..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fd_200d_2640.png b/png/128/emoji_u1f3cb_1f3fd_200d_2640.png deleted file mode 100644 index b7c727ba8..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fd_200d_2642.png b/png/128/emoji_u1f3cb_1f3fd_200d_2642.png deleted file mode 100644 index 048bbb3b4..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fe.png b/png/128/emoji_u1f3cb_1f3fe.png deleted file mode 100644 index c0b5b55c0..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fe_200d_2640.png b/png/128/emoji_u1f3cb_1f3fe_200d_2640.png deleted file mode 100644 index cdaf61b63..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3fe_200d_2642.png b/png/128/emoji_u1f3cb_1f3fe_200d_2642.png deleted file mode 100644 index c0b5b55c0..000000000 Binary files a/png/128/emoji_u1f3cb_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3ff.png b/png/128/emoji_u1f3cb_1f3ff.png deleted file mode 100644 index eea707bca..000000000 Binary files a/png/128/emoji_u1f3cb_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3ff_200d_2640.png b/png/128/emoji_u1f3cb_1f3ff_200d_2640.png deleted file mode 100644 index d67b13438..000000000 Binary files a/png/128/emoji_u1f3cb_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f3ff_200d_2642.png b/png/128/emoji_u1f3cb_1f3ff_200d_2642.png deleted file mode 100644 index eea707bca..000000000 Binary files a/png/128/emoji_u1f3cb_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f9b0.png b/png/128/emoji_u1f3cb_1f9b0.png deleted file mode 100644 index c24d1cc63..000000000 Binary files a/png/128/emoji_u1f3cb_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f9b0_200d_2640.png b/png/128/emoji_u1f3cb_1f9b0_200d_2640.png deleted file mode 100644 index 437aaeb2a..000000000 Binary files a/png/128/emoji_u1f3cb_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f9b0_200d_2642.png b/png/128/emoji_u1f3cb_1f9b0_200d_2642.png deleted file mode 100644 index c24d1cc63..000000000 Binary files a/png/128/emoji_u1f3cb_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f9b3.png b/png/128/emoji_u1f3cb_1f9b3.png deleted file mode 100644 index e6b61df0a..000000000 Binary files a/png/128/emoji_u1f3cb_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f9b3_200d_2640.png b/png/128/emoji_u1f3cb_1f9b3_200d_2640.png deleted file mode 100644 index 5b1405387..000000000 Binary files a/png/128/emoji_u1f3cb_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_1f9b3_200d_2642.png b/png/128/emoji_u1f3cb_1f9b3_200d_2642.png deleted file mode 100644 index e6b61df0a..000000000 Binary files a/png/128/emoji_u1f3cb_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_200d_2640.png b/png/128/emoji_u1f3cb_200d_2640.png deleted file mode 100644 index 5b363b04d..000000000 Binary files a/png/128/emoji_u1f3cb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cb_200d_2642.png b/png/128/emoji_u1f3cb_200d_2642.png deleted file mode 100644 index ca055b9fb..000000000 Binary files a/png/128/emoji_u1f3cb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc.png b/png/128/emoji_u1f3cc.png deleted file mode 100644 index 873c56e24..000000000 Binary files a/png/128/emoji_u1f3cc.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fb.png b/png/128/emoji_u1f3cc_1f3fb.png deleted file mode 100644 index a350dbf6a..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fb_200d_2640.png b/png/128/emoji_u1f3cc_1f3fb_200d_2640.png deleted file mode 100644 index a350dbf6a..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fb_200d_2642.png b/png/128/emoji_u1f3cc_1f3fb_200d_2642.png deleted file mode 100644 index d78d7d7d9..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fc_200d_2640.png b/png/128/emoji_u1f3cc_1f3fc_200d_2640.png deleted file mode 100644 index ea89d33db..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fc_200d_2642.png b/png/128/emoji_u1f3cc_1f3fc_200d_2642.png deleted file mode 100644 index 068c55147..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fd_200d_2640.png b/png/128/emoji_u1f3cc_1f3fd_200d_2640.png deleted file mode 100644 index aaa349d34..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fd_200d_2642.png b/png/128/emoji_u1f3cc_1f3fd_200d_2642.png deleted file mode 100644 index 3c0f1a367..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fe_200d_2640.png b/png/128/emoji_u1f3cc_1f3fe_200d_2640.png deleted file mode 100644 index ee2c0a269..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3fe_200d_2642.png b/png/128/emoji_u1f3cc_1f3fe_200d_2642.png deleted file mode 100644 index 68785c2db..000000000 Binary files a/png/128/emoji_u1f3cc_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3ff_200d_2640.png b/png/128/emoji_u1f3cc_1f3ff_200d_2640.png deleted file mode 100644 index 984d9882a..000000000 Binary files a/png/128/emoji_u1f3cc_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f3ff_200d_2642.png b/png/128/emoji_u1f3cc_1f3ff_200d_2642.png deleted file mode 100644 index 894dc2223..000000000 Binary files a/png/128/emoji_u1f3cc_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f9b0.png b/png/128/emoji_u1f3cc_1f9b0.png deleted file mode 100644 index 4c8b73d43..000000000 Binary files a/png/128/emoji_u1f3cc_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f9b0_200d_2640.png b/png/128/emoji_u1f3cc_1f9b0_200d_2640.png deleted file mode 100644 index 8289ef063..000000000 Binary files a/png/128/emoji_u1f3cc_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f9b0_200d_2642.png b/png/128/emoji_u1f3cc_1f9b0_200d_2642.png deleted file mode 100644 index 4c8b73d43..000000000 Binary files a/png/128/emoji_u1f3cc_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f9b3.png b/png/128/emoji_u1f3cc_1f9b3.png deleted file mode 100644 index 8f890b769..000000000 Binary files a/png/128/emoji_u1f3cc_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f9b3_200d_2640.png b/png/128/emoji_u1f3cc_1f9b3_200d_2640.png deleted file mode 100644 index 9ed84784f..000000000 Binary files a/png/128/emoji_u1f3cc_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_1f9b3_200d_2642.png b/png/128/emoji_u1f3cc_1f9b3_200d_2642.png deleted file mode 100644 index 8f890b769..000000000 Binary files a/png/128/emoji_u1f3cc_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_200d_2640.png b/png/128/emoji_u1f3cc_200d_2640.png deleted file mode 100644 index b39fa2ea5..000000000 Binary files a/png/128/emoji_u1f3cc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f3cc_200d_2642.png b/png/128/emoji_u1f3cc_200d_2642.png deleted file mode 100644 index 873c56e24..000000000 Binary files a/png/128/emoji_u1f3cc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f3cd.png b/png/128/emoji_u1f3cd.png deleted file mode 100644 index 1c63774ff..000000000 Binary files a/png/128/emoji_u1f3cd.png and /dev/null differ diff --git a/png/128/emoji_u1f3ce.png b/png/128/emoji_u1f3ce.png deleted file mode 100644 index e7eeeb19d..000000000 Binary files a/png/128/emoji_u1f3ce.png and /dev/null differ diff --git a/png/128/emoji_u1f3cf.png b/png/128/emoji_u1f3cf.png deleted file mode 100644 index eb30ff9d9..000000000 Binary files a/png/128/emoji_u1f3cf.png and /dev/null differ diff --git a/png/128/emoji_u1f3d0.png b/png/128/emoji_u1f3d0.png deleted file mode 100644 index 76af2cf5e..000000000 Binary files a/png/128/emoji_u1f3d0.png and /dev/null differ diff --git a/png/128/emoji_u1f3d1.png b/png/128/emoji_u1f3d1.png deleted file mode 100644 index 886c63c99..000000000 Binary files a/png/128/emoji_u1f3d1.png and /dev/null differ diff --git a/png/128/emoji_u1f3d2.png b/png/128/emoji_u1f3d2.png deleted file mode 100644 index 101155f19..000000000 Binary files a/png/128/emoji_u1f3d2.png and /dev/null differ diff --git a/png/128/emoji_u1f3d3.png b/png/128/emoji_u1f3d3.png deleted file mode 100644 index ba4bf5b18..000000000 Binary files a/png/128/emoji_u1f3d3.png and /dev/null differ diff --git a/png/128/emoji_u1f3d4.png b/png/128/emoji_u1f3d4.png deleted file mode 100644 index 0e00f3ad8..000000000 Binary files a/png/128/emoji_u1f3d4.png and /dev/null differ diff --git a/png/128/emoji_u1f3d5.png b/png/128/emoji_u1f3d5.png deleted file mode 100644 index c1afb5962..000000000 Binary files a/png/128/emoji_u1f3d5.png and /dev/null differ diff --git a/png/128/emoji_u1f3d6.png b/png/128/emoji_u1f3d6.png deleted file mode 100644 index 0bd6ae689..000000000 Binary files a/png/128/emoji_u1f3d6.png and /dev/null differ diff --git a/png/128/emoji_u1f3d7.png b/png/128/emoji_u1f3d7.png deleted file mode 100644 index 546665c2f..000000000 Binary files a/png/128/emoji_u1f3d7.png and /dev/null differ diff --git a/png/128/emoji_u1f3d8.png b/png/128/emoji_u1f3d8.png deleted file mode 100644 index dc0777502..000000000 Binary files a/png/128/emoji_u1f3d8.png and /dev/null differ diff --git a/png/128/emoji_u1f3d9.png b/png/128/emoji_u1f3d9.png deleted file mode 100644 index fd7ca0a8a..000000000 Binary files a/png/128/emoji_u1f3d9.png and /dev/null differ diff --git a/png/128/emoji_u1f3da.png b/png/128/emoji_u1f3da.png deleted file mode 100644 index 1157a9a11..000000000 Binary files a/png/128/emoji_u1f3da.png and /dev/null differ diff --git a/png/128/emoji_u1f3db.png b/png/128/emoji_u1f3db.png deleted file mode 100644 index c70c68324..000000000 Binary files a/png/128/emoji_u1f3db.png and /dev/null differ diff --git a/png/128/emoji_u1f3dc.png b/png/128/emoji_u1f3dc.png deleted file mode 100644 index a4aa7247d..000000000 Binary files a/png/128/emoji_u1f3dc.png and /dev/null differ diff --git a/png/128/emoji_u1f3dd.png b/png/128/emoji_u1f3dd.png deleted file mode 100644 index 4a12d2a6a..000000000 Binary files a/png/128/emoji_u1f3dd.png and /dev/null differ diff --git a/png/128/emoji_u1f3de.png b/png/128/emoji_u1f3de.png deleted file mode 100644 index 6ce19e082..000000000 Binary files a/png/128/emoji_u1f3de.png and /dev/null differ diff --git a/png/128/emoji_u1f3df.png b/png/128/emoji_u1f3df.png deleted file mode 100644 index 34f21521b..000000000 Binary files a/png/128/emoji_u1f3df.png and /dev/null differ diff --git a/png/128/emoji_u1f3e0.png b/png/128/emoji_u1f3e0.png deleted file mode 100644 index 0c630940d..000000000 Binary files a/png/128/emoji_u1f3e0.png and /dev/null differ diff --git a/png/128/emoji_u1f3e1.png b/png/128/emoji_u1f3e1.png deleted file mode 100644 index cf7e1caf2..000000000 Binary files a/png/128/emoji_u1f3e1.png and /dev/null differ diff --git a/png/128/emoji_u1f3e2.png b/png/128/emoji_u1f3e2.png deleted file mode 100644 index 25e895817..000000000 Binary files a/png/128/emoji_u1f3e2.png and /dev/null differ diff --git a/png/128/emoji_u1f3e3.png b/png/128/emoji_u1f3e3.png deleted file mode 100644 index 4fa0e417b..000000000 Binary files a/png/128/emoji_u1f3e3.png and /dev/null differ diff --git a/png/128/emoji_u1f3e4.png b/png/128/emoji_u1f3e4.png deleted file mode 100644 index a135836c2..000000000 Binary files a/png/128/emoji_u1f3e4.png and /dev/null differ diff --git a/png/128/emoji_u1f3e5.png b/png/128/emoji_u1f3e5.png deleted file mode 100644 index 73813de39..000000000 Binary files a/png/128/emoji_u1f3e5.png and /dev/null differ diff --git a/png/128/emoji_u1f3e6.png b/png/128/emoji_u1f3e6.png deleted file mode 100644 index 38882fc97..000000000 Binary files a/png/128/emoji_u1f3e6.png and /dev/null differ diff --git a/png/128/emoji_u1f3e7.png b/png/128/emoji_u1f3e7.png deleted file mode 100644 index 9f466be4d..000000000 Binary files a/png/128/emoji_u1f3e7.png and /dev/null differ diff --git a/png/128/emoji_u1f3e8.png b/png/128/emoji_u1f3e8.png deleted file mode 100644 index 95cdd63cd..000000000 Binary files a/png/128/emoji_u1f3e8.png and /dev/null differ diff --git a/png/128/emoji_u1f3e9.png b/png/128/emoji_u1f3e9.png deleted file mode 100644 index 142cf36b1..000000000 Binary files a/png/128/emoji_u1f3e9.png and /dev/null differ diff --git a/png/128/emoji_u1f3ea.png b/png/128/emoji_u1f3ea.png deleted file mode 100644 index cbe8a0c93..000000000 Binary files a/png/128/emoji_u1f3ea.png and /dev/null differ diff --git a/png/128/emoji_u1f3eb.png b/png/128/emoji_u1f3eb.png deleted file mode 100644 index afa73c3c7..000000000 Binary files a/png/128/emoji_u1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f3ec.png b/png/128/emoji_u1f3ec.png deleted file mode 100644 index 84a6abf8d..000000000 Binary files a/png/128/emoji_u1f3ec.png and /dev/null differ diff --git a/png/128/emoji_u1f3ed.png b/png/128/emoji_u1f3ed.png deleted file mode 100644 index e142f4c62..000000000 Binary files a/png/128/emoji_u1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f3ee.png b/png/128/emoji_u1f3ee.png deleted file mode 100644 index 806abc3ed..000000000 Binary files a/png/128/emoji_u1f3ee.png and /dev/null differ diff --git a/png/128/emoji_u1f3ef.png b/png/128/emoji_u1f3ef.png deleted file mode 100644 index 6715ee098..000000000 Binary files a/png/128/emoji_u1f3ef.png and /dev/null differ diff --git a/png/128/emoji_u1f3f0.png b/png/128/emoji_u1f3f0.png deleted file mode 100644 index 2cf0ecaed..000000000 Binary files a/png/128/emoji_u1f3f0.png and /dev/null differ diff --git a/png/128/emoji_u1f3f3.png b/png/128/emoji_u1f3f3.png deleted file mode 100644 index 9b39235f1..000000000 Binary files a/png/128/emoji_u1f3f3.png and /dev/null differ diff --git a/png/128/emoji_u1f3f3_200d_1f308.png b/png/128/emoji_u1f3f3_200d_1f308.png deleted file mode 100644 index b035e931c..000000000 Binary files a/png/128/emoji_u1f3f3_200d_1f308.png and /dev/null differ diff --git a/png/128/emoji_u1f3f3_200d_26a7.png b/png/128/emoji_u1f3f3_200d_26a7.png deleted file mode 100644 index cf0973dba..000000000 Binary files a/png/128/emoji_u1f3f3_200d_26a7.png and /dev/null differ diff --git a/png/128/emoji_u1f3f4.png b/png/128/emoji_u1f3f4.png deleted file mode 100644 index cea463bac..000000000 Binary files a/png/128/emoji_u1f3f4.png and /dev/null differ diff --git a/png/128/emoji_u1f3f4_200d_2620.png b/png/128/emoji_u1f3f4_200d_2620.png deleted file mode 100644 index 8ba5461c3..000000000 Binary files a/png/128/emoji_u1f3f4_200d_2620.png and /dev/null differ diff --git a/png/128/emoji_u1f3f5.png b/png/128/emoji_u1f3f5.png deleted file mode 100644 index 70596dc99..000000000 Binary files a/png/128/emoji_u1f3f5.png and /dev/null differ diff --git a/png/128/emoji_u1f3f7.png b/png/128/emoji_u1f3f7.png deleted file mode 100644 index 382349662..000000000 Binary files a/png/128/emoji_u1f3f7.png and /dev/null differ diff --git a/png/128/emoji_u1f3f8.png b/png/128/emoji_u1f3f8.png deleted file mode 100644 index 48ab76c67..000000000 Binary files a/png/128/emoji_u1f3f8.png and /dev/null differ diff --git a/png/128/emoji_u1f3f9.png b/png/128/emoji_u1f3f9.png deleted file mode 100644 index 30afcb8c7..000000000 Binary files a/png/128/emoji_u1f3f9.png and /dev/null differ diff --git a/png/128/emoji_u1f3fa.png b/png/128/emoji_u1f3fa.png deleted file mode 100644 index 6d5e4f189..000000000 Binary files a/png/128/emoji_u1f3fa.png and /dev/null differ diff --git a/png/128/emoji_u1f3fb.png b/png/128/emoji_u1f3fb.png deleted file mode 100644 index 9afc5cf53..000000000 Binary files a/png/128/emoji_u1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f3fc.png b/png/128/emoji_u1f3fc.png deleted file mode 100644 index 5ab607f97..000000000 Binary files a/png/128/emoji_u1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f3fd.png b/png/128/emoji_u1f3fd.png deleted file mode 100644 index cdd3454be..000000000 Binary files a/png/128/emoji_u1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f3fe.png b/png/128/emoji_u1f3fe.png deleted file mode 100644 index bbe82b22b..000000000 Binary files a/png/128/emoji_u1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f3ff.png b/png/128/emoji_u1f3ff.png deleted file mode 100644 index e269582f1..000000000 Binary files a/png/128/emoji_u1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f400.png b/png/128/emoji_u1f400.png deleted file mode 100644 index 3a7a3135c..000000000 Binary files a/png/128/emoji_u1f400.png and /dev/null differ diff --git a/png/128/emoji_u1f401.png b/png/128/emoji_u1f401.png deleted file mode 100644 index 8e7e14f73..000000000 Binary files a/png/128/emoji_u1f401.png and /dev/null differ diff --git a/png/128/emoji_u1f402.png b/png/128/emoji_u1f402.png deleted file mode 100644 index f027da047..000000000 Binary files a/png/128/emoji_u1f402.png and /dev/null differ diff --git a/png/128/emoji_u1f403.png b/png/128/emoji_u1f403.png deleted file mode 100644 index 39f298943..000000000 Binary files a/png/128/emoji_u1f403.png and /dev/null differ diff --git a/png/128/emoji_u1f404.png b/png/128/emoji_u1f404.png deleted file mode 100644 index 825cc38ee..000000000 Binary files a/png/128/emoji_u1f404.png and /dev/null differ diff --git a/png/128/emoji_u1f405.png b/png/128/emoji_u1f405.png deleted file mode 100644 index 60a0b101b..000000000 Binary files a/png/128/emoji_u1f405.png and /dev/null differ diff --git a/png/128/emoji_u1f406.png b/png/128/emoji_u1f406.png deleted file mode 100644 index 8ab865734..000000000 Binary files a/png/128/emoji_u1f406.png and /dev/null differ diff --git a/png/128/emoji_u1f407.png b/png/128/emoji_u1f407.png deleted file mode 100644 index 43326decf..000000000 Binary files a/png/128/emoji_u1f407.png and /dev/null differ diff --git a/png/128/emoji_u1f408.png b/png/128/emoji_u1f408.png deleted file mode 100644 index 6fc18a519..000000000 Binary files a/png/128/emoji_u1f408.png and /dev/null differ diff --git a/png/128/emoji_u1f409.png b/png/128/emoji_u1f409.png deleted file mode 100644 index 55292882b..000000000 Binary files a/png/128/emoji_u1f409.png and /dev/null differ diff --git a/png/128/emoji_u1f40a.png b/png/128/emoji_u1f40a.png deleted file mode 100644 index ee317a42e..000000000 Binary files a/png/128/emoji_u1f40a.png and /dev/null differ diff --git a/png/128/emoji_u1f40b.png b/png/128/emoji_u1f40b.png deleted file mode 100644 index ca984525d..000000000 Binary files a/png/128/emoji_u1f40b.png and /dev/null differ diff --git a/png/128/emoji_u1f40c.png b/png/128/emoji_u1f40c.png deleted file mode 100644 index 70a5b23f1..000000000 Binary files a/png/128/emoji_u1f40c.png and /dev/null differ diff --git a/png/128/emoji_u1f40d.png b/png/128/emoji_u1f40d.png deleted file mode 100644 index ec3531827..000000000 Binary files a/png/128/emoji_u1f40d.png and /dev/null differ diff --git a/png/128/emoji_u1f40e.png b/png/128/emoji_u1f40e.png deleted file mode 100644 index 357c69b60..000000000 Binary files a/png/128/emoji_u1f40e.png and /dev/null differ diff --git a/png/128/emoji_u1f40f.png b/png/128/emoji_u1f40f.png deleted file mode 100644 index ed837fc10..000000000 Binary files a/png/128/emoji_u1f40f.png and /dev/null differ diff --git a/png/128/emoji_u1f410.png b/png/128/emoji_u1f410.png deleted file mode 100644 index a7bf635bc..000000000 Binary files a/png/128/emoji_u1f410.png and /dev/null differ diff --git a/png/128/emoji_u1f411.png b/png/128/emoji_u1f411.png deleted file mode 100644 index 5864754d4..000000000 Binary files a/png/128/emoji_u1f411.png and /dev/null differ diff --git a/png/128/emoji_u1f412.png b/png/128/emoji_u1f412.png deleted file mode 100644 index 8a4713b8a..000000000 Binary files a/png/128/emoji_u1f412.png and /dev/null differ diff --git a/png/128/emoji_u1f413.png b/png/128/emoji_u1f413.png deleted file mode 100644 index 6610c8e44..000000000 Binary files a/png/128/emoji_u1f413.png and /dev/null differ diff --git a/png/128/emoji_u1f414.png b/png/128/emoji_u1f414.png deleted file mode 100644 index a1cc6c029..000000000 Binary files a/png/128/emoji_u1f414.png and /dev/null differ diff --git a/png/128/emoji_u1f415.png b/png/128/emoji_u1f415.png deleted file mode 100644 index 051228691..000000000 Binary files a/png/128/emoji_u1f415.png and /dev/null differ diff --git a/png/128/emoji_u1f415_200d_1f9ba.png b/png/128/emoji_u1f415_200d_1f9ba.png deleted file mode 100644 index b5c2b2287..000000000 Binary files a/png/128/emoji_u1f415_200d_1f9ba.png and /dev/null differ diff --git a/png/128/emoji_u1f416.png b/png/128/emoji_u1f416.png deleted file mode 100644 index ffaa4ad16..000000000 Binary files a/png/128/emoji_u1f416.png and /dev/null differ diff --git a/png/128/emoji_u1f417.png b/png/128/emoji_u1f417.png deleted file mode 100644 index 4701318f4..000000000 Binary files a/png/128/emoji_u1f417.png and /dev/null differ diff --git a/png/128/emoji_u1f418.png b/png/128/emoji_u1f418.png deleted file mode 100644 index 4e945feeb..000000000 Binary files a/png/128/emoji_u1f418.png and /dev/null differ diff --git a/png/128/emoji_u1f419.png b/png/128/emoji_u1f419.png deleted file mode 100644 index 12e488b35..000000000 Binary files a/png/128/emoji_u1f419.png and /dev/null differ diff --git a/png/128/emoji_u1f41a.png b/png/128/emoji_u1f41a.png deleted file mode 100644 index 5c93e2d41..000000000 Binary files a/png/128/emoji_u1f41a.png and /dev/null differ diff --git a/png/128/emoji_u1f41b.png b/png/128/emoji_u1f41b.png deleted file mode 100644 index 887b303e3..000000000 Binary files a/png/128/emoji_u1f41b.png and /dev/null differ diff --git a/png/128/emoji_u1f41c.png b/png/128/emoji_u1f41c.png deleted file mode 100644 index cc8191e3a..000000000 Binary files a/png/128/emoji_u1f41c.png and /dev/null differ diff --git a/png/128/emoji_u1f41d.png b/png/128/emoji_u1f41d.png deleted file mode 100644 index 737a77d95..000000000 Binary files a/png/128/emoji_u1f41d.png and /dev/null differ diff --git a/png/128/emoji_u1f41e.png b/png/128/emoji_u1f41e.png deleted file mode 100644 index 445e179f5..000000000 Binary files a/png/128/emoji_u1f41e.png and /dev/null differ diff --git a/png/128/emoji_u1f41f.png b/png/128/emoji_u1f41f.png deleted file mode 100644 index 93b7007d5..000000000 Binary files a/png/128/emoji_u1f41f.png and /dev/null differ diff --git a/png/128/emoji_u1f420.png b/png/128/emoji_u1f420.png deleted file mode 100644 index dee2d2451..000000000 Binary files a/png/128/emoji_u1f420.png and /dev/null differ diff --git a/png/128/emoji_u1f421.png b/png/128/emoji_u1f421.png deleted file mode 100644 index c423ea3ef..000000000 Binary files a/png/128/emoji_u1f421.png and /dev/null differ diff --git a/png/128/emoji_u1f422.png b/png/128/emoji_u1f422.png deleted file mode 100644 index 6471f42a9..000000000 Binary files a/png/128/emoji_u1f422.png and /dev/null differ diff --git a/png/128/emoji_u1f423.png b/png/128/emoji_u1f423.png deleted file mode 100644 index 2a2ac1146..000000000 Binary files a/png/128/emoji_u1f423.png and /dev/null differ diff --git a/png/128/emoji_u1f424.png b/png/128/emoji_u1f424.png deleted file mode 100644 index a5d1ae5eb..000000000 Binary files a/png/128/emoji_u1f424.png and /dev/null differ diff --git a/png/128/emoji_u1f425.png b/png/128/emoji_u1f425.png deleted file mode 100644 index 997d23712..000000000 Binary files a/png/128/emoji_u1f425.png and /dev/null differ diff --git a/png/128/emoji_u1f426.png b/png/128/emoji_u1f426.png deleted file mode 100644 index 875bd61bc..000000000 Binary files a/png/128/emoji_u1f426.png and /dev/null differ diff --git a/png/128/emoji_u1f427.png b/png/128/emoji_u1f427.png deleted file mode 100644 index adb37afb5..000000000 Binary files a/png/128/emoji_u1f427.png and /dev/null differ diff --git a/png/128/emoji_u1f428.png b/png/128/emoji_u1f428.png deleted file mode 100644 index 79d8d1950..000000000 Binary files a/png/128/emoji_u1f428.png and /dev/null differ diff --git a/png/128/emoji_u1f429.png b/png/128/emoji_u1f429.png deleted file mode 100644 index 8a8b19d53..000000000 Binary files a/png/128/emoji_u1f429.png and /dev/null differ diff --git a/png/128/emoji_u1f42a.png b/png/128/emoji_u1f42a.png deleted file mode 100644 index 7916d0b6c..000000000 Binary files a/png/128/emoji_u1f42a.png and /dev/null differ diff --git a/png/128/emoji_u1f42b.png b/png/128/emoji_u1f42b.png deleted file mode 100644 index 90333e10e..000000000 Binary files a/png/128/emoji_u1f42b.png and /dev/null differ diff --git a/png/128/emoji_u1f42c.png b/png/128/emoji_u1f42c.png deleted file mode 100644 index 3d011588b..000000000 Binary files a/png/128/emoji_u1f42c.png and /dev/null differ diff --git a/png/128/emoji_u1f42d.png b/png/128/emoji_u1f42d.png deleted file mode 100644 index a2b514974..000000000 Binary files a/png/128/emoji_u1f42d.png and /dev/null differ diff --git a/png/128/emoji_u1f42e.png b/png/128/emoji_u1f42e.png deleted file mode 100644 index b58509d60..000000000 Binary files a/png/128/emoji_u1f42e.png and /dev/null differ diff --git a/png/128/emoji_u1f42f.png b/png/128/emoji_u1f42f.png deleted file mode 100644 index cc3318a6d..000000000 Binary files a/png/128/emoji_u1f42f.png and /dev/null differ diff --git a/png/128/emoji_u1f430.png b/png/128/emoji_u1f430.png deleted file mode 100644 index 2ba4e1fc1..000000000 Binary files a/png/128/emoji_u1f430.png and /dev/null differ diff --git a/png/128/emoji_u1f431.png b/png/128/emoji_u1f431.png deleted file mode 100644 index bc3235631..000000000 Binary files a/png/128/emoji_u1f431.png and /dev/null differ diff --git a/png/128/emoji_u1f431_1f3fb.png b/png/128/emoji_u1f431_1f3fb.png deleted file mode 100644 index 057811538..000000000 Binary files a/png/128/emoji_u1f431_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f431_1f3fc.png b/png/128/emoji_u1f431_1f3fc.png deleted file mode 100644 index 068091506..000000000 Binary files a/png/128/emoji_u1f431_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f431_1f3fd.png b/png/128/emoji_u1f431_1f3fd.png deleted file mode 100644 index 41b8fca90..000000000 Binary files a/png/128/emoji_u1f431_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f431_1f3fe.png b/png/128/emoji_u1f431_1f3fe.png deleted file mode 100644 index 8bdb6a973..000000000 Binary files a/png/128/emoji_u1f431_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f431_1f3ff.png b/png/128/emoji_u1f431_1f3ff.png deleted file mode 100644 index 3467910e3..000000000 Binary files a/png/128/emoji_u1f431_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f432.png b/png/128/emoji_u1f432.png deleted file mode 100644 index a670a06e4..000000000 Binary files a/png/128/emoji_u1f432.png and /dev/null differ diff --git a/png/128/emoji_u1f433.png b/png/128/emoji_u1f433.png deleted file mode 100644 index 1f99fb917..000000000 Binary files a/png/128/emoji_u1f433.png and /dev/null differ diff --git a/png/128/emoji_u1f434.png b/png/128/emoji_u1f434.png deleted file mode 100644 index 992b60572..000000000 Binary files a/png/128/emoji_u1f434.png and /dev/null differ diff --git a/png/128/emoji_u1f435.png b/png/128/emoji_u1f435.png deleted file mode 100644 index f9102b47f..000000000 Binary files a/png/128/emoji_u1f435.png and /dev/null differ diff --git a/png/128/emoji_u1f436.png b/png/128/emoji_u1f436.png deleted file mode 100644 index eea2c4eea..000000000 Binary files a/png/128/emoji_u1f436.png and /dev/null differ diff --git a/png/128/emoji_u1f437.png b/png/128/emoji_u1f437.png deleted file mode 100644 index 498f53861..000000000 Binary files a/png/128/emoji_u1f437.png and /dev/null differ diff --git a/png/128/emoji_u1f438.png b/png/128/emoji_u1f438.png deleted file mode 100644 index d78861aac..000000000 Binary files a/png/128/emoji_u1f438.png and /dev/null differ diff --git a/png/128/emoji_u1f439.png b/png/128/emoji_u1f439.png deleted file mode 100644 index 0db720dc7..000000000 Binary files a/png/128/emoji_u1f439.png and /dev/null differ diff --git a/png/128/emoji_u1f43a.png b/png/128/emoji_u1f43a.png deleted file mode 100644 index 7654a7cf6..000000000 Binary files a/png/128/emoji_u1f43a.png and /dev/null differ diff --git a/png/128/emoji_u1f43b.png b/png/128/emoji_u1f43b.png deleted file mode 100644 index 508421b12..000000000 Binary files a/png/128/emoji_u1f43b.png and /dev/null differ diff --git a/png/128/emoji_u1f43c.png b/png/128/emoji_u1f43c.png deleted file mode 100644 index 6c6ad859f..000000000 Binary files a/png/128/emoji_u1f43c.png and /dev/null differ diff --git a/png/128/emoji_u1f43d.png b/png/128/emoji_u1f43d.png deleted file mode 100644 index ecc805b70..000000000 Binary files a/png/128/emoji_u1f43d.png and /dev/null differ diff --git a/png/128/emoji_u1f43e.png b/png/128/emoji_u1f43e.png deleted file mode 100644 index b9ec62c39..000000000 Binary files a/png/128/emoji_u1f43e.png and /dev/null differ diff --git a/png/128/emoji_u1f43f.png b/png/128/emoji_u1f43f.png deleted file mode 100644 index 38e5b07f2..000000000 Binary files a/png/128/emoji_u1f43f.png and /dev/null differ diff --git a/png/128/emoji_u1f440.png b/png/128/emoji_u1f440.png deleted file mode 100644 index 19c1d631c..000000000 Binary files a/png/128/emoji_u1f440.png and /dev/null differ diff --git a/png/128/emoji_u1f441.png b/png/128/emoji_u1f441.png deleted file mode 100644 index 677937bfa..000000000 Binary files a/png/128/emoji_u1f441.png and /dev/null differ diff --git a/png/128/emoji_u1f441_200d_1f5e8.png b/png/128/emoji_u1f441_200d_1f5e8.png deleted file mode 100644 index a117b10ac..000000000 Binary files a/png/128/emoji_u1f441_200d_1f5e8.png and /dev/null differ diff --git a/png/128/emoji_u1f442.png b/png/128/emoji_u1f442.png deleted file mode 100644 index 1db51f648..000000000 Binary files a/png/128/emoji_u1f442.png and /dev/null differ diff --git a/png/128/emoji_u1f442_1f3fb.png b/png/128/emoji_u1f442_1f3fb.png deleted file mode 100644 index 67b5c7021..000000000 Binary files a/png/128/emoji_u1f442_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f442_1f3fc.png b/png/128/emoji_u1f442_1f3fc.png deleted file mode 100644 index 1ef296411..000000000 Binary files a/png/128/emoji_u1f442_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f442_1f3fd.png b/png/128/emoji_u1f442_1f3fd.png deleted file mode 100644 index 8e3444b40..000000000 Binary files a/png/128/emoji_u1f442_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f442_1f3fe.png b/png/128/emoji_u1f442_1f3fe.png deleted file mode 100644 index 3932df1aa..000000000 Binary files a/png/128/emoji_u1f442_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f442_1f3ff.png b/png/128/emoji_u1f442_1f3ff.png deleted file mode 100644 index a33eb739d..000000000 Binary files a/png/128/emoji_u1f442_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f443.png b/png/128/emoji_u1f443.png deleted file mode 100644 index ca3942b03..000000000 Binary files a/png/128/emoji_u1f443.png and /dev/null differ diff --git a/png/128/emoji_u1f443_1f3fb.png b/png/128/emoji_u1f443_1f3fb.png deleted file mode 100644 index 7135be304..000000000 Binary files a/png/128/emoji_u1f443_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f443_1f3fc.png b/png/128/emoji_u1f443_1f3fc.png deleted file mode 100644 index 4f73f4799..000000000 Binary files a/png/128/emoji_u1f443_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f443_1f3fd.png b/png/128/emoji_u1f443_1f3fd.png deleted file mode 100644 index 8c6c48ef3..000000000 Binary files a/png/128/emoji_u1f443_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f443_1f3fe.png b/png/128/emoji_u1f443_1f3fe.png deleted file mode 100644 index aa10f3491..000000000 Binary files a/png/128/emoji_u1f443_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f443_1f3ff.png b/png/128/emoji_u1f443_1f3ff.png deleted file mode 100644 index 9d45fb5cc..000000000 Binary files a/png/128/emoji_u1f443_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f444.png b/png/128/emoji_u1f444.png deleted file mode 100644 index 11d00d882..000000000 Binary files a/png/128/emoji_u1f444.png and /dev/null differ diff --git a/png/128/emoji_u1f445.png b/png/128/emoji_u1f445.png deleted file mode 100644 index 3c2030359..000000000 Binary files a/png/128/emoji_u1f445.png and /dev/null differ diff --git a/png/128/emoji_u1f446.png b/png/128/emoji_u1f446.png deleted file mode 100644 index 5f3b956fa..000000000 Binary files a/png/128/emoji_u1f446.png and /dev/null differ diff --git a/png/128/emoji_u1f446_1f3fb.png b/png/128/emoji_u1f446_1f3fb.png deleted file mode 100644 index d088b29dc..000000000 Binary files a/png/128/emoji_u1f446_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f446_1f3fc.png b/png/128/emoji_u1f446_1f3fc.png deleted file mode 100644 index 006c0b520..000000000 Binary files a/png/128/emoji_u1f446_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f446_1f3fd.png b/png/128/emoji_u1f446_1f3fd.png deleted file mode 100644 index be05de07f..000000000 Binary files a/png/128/emoji_u1f446_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f446_1f3fe.png b/png/128/emoji_u1f446_1f3fe.png deleted file mode 100644 index 3baaa405e..000000000 Binary files a/png/128/emoji_u1f446_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f446_1f3ff.png b/png/128/emoji_u1f446_1f3ff.png deleted file mode 100644 index 048d31d89..000000000 Binary files a/png/128/emoji_u1f446_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f447.png b/png/128/emoji_u1f447.png deleted file mode 100644 index 8e99af4ae..000000000 Binary files a/png/128/emoji_u1f447.png and /dev/null differ diff --git a/png/128/emoji_u1f447_1f3fb.png b/png/128/emoji_u1f447_1f3fb.png deleted file mode 100644 index 4c74f90b1..000000000 Binary files a/png/128/emoji_u1f447_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f447_1f3fc.png b/png/128/emoji_u1f447_1f3fc.png deleted file mode 100644 index 15657aaea..000000000 Binary files a/png/128/emoji_u1f447_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f447_1f3fd.png b/png/128/emoji_u1f447_1f3fd.png deleted file mode 100644 index 4ad87c1c6..000000000 Binary files a/png/128/emoji_u1f447_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f447_1f3fe.png b/png/128/emoji_u1f447_1f3fe.png deleted file mode 100644 index 23753e273..000000000 Binary files a/png/128/emoji_u1f447_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f447_1f3ff.png b/png/128/emoji_u1f447_1f3ff.png deleted file mode 100644 index adb5945a7..000000000 Binary files a/png/128/emoji_u1f447_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f448.png b/png/128/emoji_u1f448.png deleted file mode 100644 index 362bd4304..000000000 Binary files a/png/128/emoji_u1f448.png and /dev/null differ diff --git a/png/128/emoji_u1f448_1f3fb.png b/png/128/emoji_u1f448_1f3fb.png deleted file mode 100644 index 33fc800d2..000000000 Binary files a/png/128/emoji_u1f448_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f448_1f3fc.png b/png/128/emoji_u1f448_1f3fc.png deleted file mode 100644 index 55d6e751e..000000000 Binary files a/png/128/emoji_u1f448_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f448_1f3fd.png b/png/128/emoji_u1f448_1f3fd.png deleted file mode 100644 index f8b4b9fa7..000000000 Binary files a/png/128/emoji_u1f448_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f448_1f3fe.png b/png/128/emoji_u1f448_1f3fe.png deleted file mode 100644 index 5ddc2e65a..000000000 Binary files a/png/128/emoji_u1f448_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f448_1f3ff.png b/png/128/emoji_u1f448_1f3ff.png deleted file mode 100644 index d82df5bc7..000000000 Binary files a/png/128/emoji_u1f448_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f449.png b/png/128/emoji_u1f449.png deleted file mode 100644 index ef2e45ef4..000000000 Binary files a/png/128/emoji_u1f449.png and /dev/null differ diff --git a/png/128/emoji_u1f449_1f3fb.png b/png/128/emoji_u1f449_1f3fb.png deleted file mode 100644 index 717b7370c..000000000 Binary files a/png/128/emoji_u1f449_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f449_1f3fc.png b/png/128/emoji_u1f449_1f3fc.png deleted file mode 100644 index cd8ff3cc3..000000000 Binary files a/png/128/emoji_u1f449_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f449_1f3fd.png b/png/128/emoji_u1f449_1f3fd.png deleted file mode 100644 index f85d23f8b..000000000 Binary files a/png/128/emoji_u1f449_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f449_1f3fe.png b/png/128/emoji_u1f449_1f3fe.png deleted file mode 100644 index cc105be64..000000000 Binary files a/png/128/emoji_u1f449_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f449_1f3ff.png b/png/128/emoji_u1f449_1f3ff.png deleted file mode 100644 index f0c751b1e..000000000 Binary files a/png/128/emoji_u1f449_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f44a.png b/png/128/emoji_u1f44a.png deleted file mode 100644 index dd26eacaa..000000000 Binary files a/png/128/emoji_u1f44a.png and /dev/null differ diff --git a/png/128/emoji_u1f44a_1f3fb.png b/png/128/emoji_u1f44a_1f3fb.png deleted file mode 100644 index baaeb8394..000000000 Binary files a/png/128/emoji_u1f44a_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f44a_1f3fc.png b/png/128/emoji_u1f44a_1f3fc.png deleted file mode 100644 index c5bbabc19..000000000 Binary files a/png/128/emoji_u1f44a_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f44a_1f3fd.png b/png/128/emoji_u1f44a_1f3fd.png deleted file mode 100644 index d9f03d1cc..000000000 Binary files a/png/128/emoji_u1f44a_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f44a_1f3fe.png b/png/128/emoji_u1f44a_1f3fe.png deleted file mode 100644 index 5854b2a88..000000000 Binary files a/png/128/emoji_u1f44a_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f44a_1f3ff.png b/png/128/emoji_u1f44a_1f3ff.png deleted file mode 100644 index b72a2e818..000000000 Binary files a/png/128/emoji_u1f44a_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f44b.png b/png/128/emoji_u1f44b.png deleted file mode 100644 index 2b2b9f342..000000000 Binary files a/png/128/emoji_u1f44b.png and /dev/null differ diff --git a/png/128/emoji_u1f44b_1f3fb.png b/png/128/emoji_u1f44b_1f3fb.png deleted file mode 100644 index 06e0e116c..000000000 Binary files a/png/128/emoji_u1f44b_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f44b_1f3fc.png b/png/128/emoji_u1f44b_1f3fc.png deleted file mode 100644 index 172f20d16..000000000 Binary files a/png/128/emoji_u1f44b_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f44b_1f3fd.png b/png/128/emoji_u1f44b_1f3fd.png deleted file mode 100644 index 333fec8b5..000000000 Binary files a/png/128/emoji_u1f44b_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f44b_1f3fe.png b/png/128/emoji_u1f44b_1f3fe.png deleted file mode 100644 index f09bb97dc..000000000 Binary files a/png/128/emoji_u1f44b_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f44b_1f3ff.png b/png/128/emoji_u1f44b_1f3ff.png deleted file mode 100644 index 22e34ab98..000000000 Binary files a/png/128/emoji_u1f44b_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f44c.png b/png/128/emoji_u1f44c.png deleted file mode 100644 index 6be91302e..000000000 Binary files a/png/128/emoji_u1f44c.png and /dev/null differ diff --git a/png/128/emoji_u1f44c_1f3fb.png b/png/128/emoji_u1f44c_1f3fb.png deleted file mode 100644 index 9c6145299..000000000 Binary files a/png/128/emoji_u1f44c_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f44c_1f3fc.png b/png/128/emoji_u1f44c_1f3fc.png deleted file mode 100644 index e4320ced5..000000000 Binary files a/png/128/emoji_u1f44c_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f44c_1f3fd.png b/png/128/emoji_u1f44c_1f3fd.png deleted file mode 100644 index b6fa10a05..000000000 Binary files a/png/128/emoji_u1f44c_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f44c_1f3fe.png b/png/128/emoji_u1f44c_1f3fe.png deleted file mode 100644 index 20bcf5b44..000000000 Binary files a/png/128/emoji_u1f44c_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f44c_1f3ff.png b/png/128/emoji_u1f44c_1f3ff.png deleted file mode 100644 index 23d946e55..000000000 Binary files a/png/128/emoji_u1f44c_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f44d.png b/png/128/emoji_u1f44d.png deleted file mode 100644 index b69231d83..000000000 Binary files a/png/128/emoji_u1f44d.png and /dev/null differ diff --git a/png/128/emoji_u1f44d_1f3fb.png b/png/128/emoji_u1f44d_1f3fb.png deleted file mode 100644 index 16bc350b8..000000000 Binary files a/png/128/emoji_u1f44d_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f44d_1f3fc.png b/png/128/emoji_u1f44d_1f3fc.png deleted file mode 100644 index 6d6a1fc9a..000000000 Binary files a/png/128/emoji_u1f44d_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f44d_1f3fd.png b/png/128/emoji_u1f44d_1f3fd.png deleted file mode 100644 index d42d1235d..000000000 Binary files a/png/128/emoji_u1f44d_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f44d_1f3fe.png b/png/128/emoji_u1f44d_1f3fe.png deleted file mode 100644 index ac61aa9e8..000000000 Binary files a/png/128/emoji_u1f44d_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f44d_1f3ff.png b/png/128/emoji_u1f44d_1f3ff.png deleted file mode 100644 index 95e96dd8e..000000000 Binary files a/png/128/emoji_u1f44d_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f44e.png b/png/128/emoji_u1f44e.png deleted file mode 100644 index e69e5ce28..000000000 Binary files a/png/128/emoji_u1f44e.png and /dev/null differ diff --git a/png/128/emoji_u1f44e_1f3fb.png b/png/128/emoji_u1f44e_1f3fb.png deleted file mode 100644 index eeabfc2a8..000000000 Binary files a/png/128/emoji_u1f44e_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f44e_1f3fc.png b/png/128/emoji_u1f44e_1f3fc.png deleted file mode 100644 index 0331fdc28..000000000 Binary files a/png/128/emoji_u1f44e_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f44e_1f3fd.png b/png/128/emoji_u1f44e_1f3fd.png deleted file mode 100644 index 7bfaf06c9..000000000 Binary files a/png/128/emoji_u1f44e_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f44e_1f3fe.png b/png/128/emoji_u1f44e_1f3fe.png deleted file mode 100644 index e51c35ea8..000000000 Binary files a/png/128/emoji_u1f44e_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f44e_1f3ff.png b/png/128/emoji_u1f44e_1f3ff.png deleted file mode 100644 index d22d92770..000000000 Binary files a/png/128/emoji_u1f44e_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f44f.png b/png/128/emoji_u1f44f.png deleted file mode 100644 index 19016612a..000000000 Binary files a/png/128/emoji_u1f44f.png and /dev/null differ diff --git a/png/128/emoji_u1f44f_1f3fb.png b/png/128/emoji_u1f44f_1f3fb.png deleted file mode 100644 index 2c0389c44..000000000 Binary files a/png/128/emoji_u1f44f_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f44f_1f3fc.png b/png/128/emoji_u1f44f_1f3fc.png deleted file mode 100644 index 2b4593459..000000000 Binary files a/png/128/emoji_u1f44f_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f44f_1f3fd.png b/png/128/emoji_u1f44f_1f3fd.png deleted file mode 100644 index 612f14d8a..000000000 Binary files a/png/128/emoji_u1f44f_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f44f_1f3fe.png b/png/128/emoji_u1f44f_1f3fe.png deleted file mode 100644 index 39a3525a7..000000000 Binary files a/png/128/emoji_u1f44f_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f44f_1f3ff.png b/png/128/emoji_u1f44f_1f3ff.png deleted file mode 100644 index 5f5213e0c..000000000 Binary files a/png/128/emoji_u1f44f_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f450.png b/png/128/emoji_u1f450.png deleted file mode 100644 index de71b2380..000000000 Binary files a/png/128/emoji_u1f450.png and /dev/null differ diff --git a/png/128/emoji_u1f450_1f3fb.png b/png/128/emoji_u1f450_1f3fb.png deleted file mode 100644 index 9717e257d..000000000 Binary files a/png/128/emoji_u1f450_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f450_1f3fc.png b/png/128/emoji_u1f450_1f3fc.png deleted file mode 100644 index 73d864f81..000000000 Binary files a/png/128/emoji_u1f450_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f450_1f3fd.png b/png/128/emoji_u1f450_1f3fd.png deleted file mode 100644 index c0b753fb6..000000000 Binary files a/png/128/emoji_u1f450_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f450_1f3fe.png b/png/128/emoji_u1f450_1f3fe.png deleted file mode 100644 index 86a9849ac..000000000 Binary files a/png/128/emoji_u1f450_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f450_1f3ff.png b/png/128/emoji_u1f450_1f3ff.png deleted file mode 100644 index d859883fc..000000000 Binary files a/png/128/emoji_u1f450_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f451.png b/png/128/emoji_u1f451.png deleted file mode 100644 index d9c6f1077..000000000 Binary files a/png/128/emoji_u1f451.png and /dev/null differ diff --git a/png/128/emoji_u1f452.png b/png/128/emoji_u1f452.png deleted file mode 100644 index b57110e2c..000000000 Binary files a/png/128/emoji_u1f452.png and /dev/null differ diff --git a/png/128/emoji_u1f453.png b/png/128/emoji_u1f453.png deleted file mode 100644 index 262033009..000000000 Binary files a/png/128/emoji_u1f453.png and /dev/null differ diff --git a/png/128/emoji_u1f454.png b/png/128/emoji_u1f454.png deleted file mode 100644 index 016cfa3b3..000000000 Binary files a/png/128/emoji_u1f454.png and /dev/null differ diff --git a/png/128/emoji_u1f455.png b/png/128/emoji_u1f455.png deleted file mode 100644 index b6ce0c27f..000000000 Binary files a/png/128/emoji_u1f455.png and /dev/null differ diff --git a/png/128/emoji_u1f456.png b/png/128/emoji_u1f456.png deleted file mode 100644 index ee659bbb8..000000000 Binary files a/png/128/emoji_u1f456.png and /dev/null differ diff --git a/png/128/emoji_u1f457.png b/png/128/emoji_u1f457.png deleted file mode 100644 index 1c068afe1..000000000 Binary files a/png/128/emoji_u1f457.png and /dev/null differ diff --git a/png/128/emoji_u1f458.png b/png/128/emoji_u1f458.png deleted file mode 100644 index 0fc4be35f..000000000 Binary files a/png/128/emoji_u1f458.png and /dev/null differ diff --git a/png/128/emoji_u1f459.png b/png/128/emoji_u1f459.png deleted file mode 100644 index 5c295c8a0..000000000 Binary files a/png/128/emoji_u1f459.png and /dev/null differ diff --git a/png/128/emoji_u1f45a.png b/png/128/emoji_u1f45a.png deleted file mode 100644 index 9981d1a63..000000000 Binary files a/png/128/emoji_u1f45a.png and /dev/null differ diff --git a/png/128/emoji_u1f45b.png b/png/128/emoji_u1f45b.png deleted file mode 100644 index 0df4229b4..000000000 Binary files a/png/128/emoji_u1f45b.png and /dev/null differ diff --git a/png/128/emoji_u1f45c.png b/png/128/emoji_u1f45c.png deleted file mode 100644 index f9eb788d6..000000000 Binary files a/png/128/emoji_u1f45c.png and /dev/null differ diff --git a/png/128/emoji_u1f45d.png b/png/128/emoji_u1f45d.png deleted file mode 100644 index 9f31fa217..000000000 Binary files a/png/128/emoji_u1f45d.png and /dev/null differ diff --git a/png/128/emoji_u1f45e.png b/png/128/emoji_u1f45e.png deleted file mode 100644 index 0c9b3b443..000000000 Binary files a/png/128/emoji_u1f45e.png and /dev/null differ diff --git a/png/128/emoji_u1f45f.png b/png/128/emoji_u1f45f.png deleted file mode 100644 index cafc6fea7..000000000 Binary files a/png/128/emoji_u1f45f.png and /dev/null differ diff --git a/png/128/emoji_u1f460.png b/png/128/emoji_u1f460.png deleted file mode 100644 index bcca709f3..000000000 Binary files a/png/128/emoji_u1f460.png and /dev/null differ diff --git a/png/128/emoji_u1f461.png b/png/128/emoji_u1f461.png deleted file mode 100644 index f47b78a94..000000000 Binary files a/png/128/emoji_u1f461.png and /dev/null differ diff --git a/png/128/emoji_u1f462.png b/png/128/emoji_u1f462.png deleted file mode 100644 index 099bb2212..000000000 Binary files a/png/128/emoji_u1f462.png and /dev/null differ diff --git a/png/128/emoji_u1f463.png b/png/128/emoji_u1f463.png deleted file mode 100644 index 458142550..000000000 Binary files a/png/128/emoji_u1f463.png and /dev/null differ diff --git a/png/128/emoji_u1f464.png b/png/128/emoji_u1f464.png deleted file mode 100644 index 149df3df8..000000000 Binary files a/png/128/emoji_u1f464.png and /dev/null differ diff --git a/png/128/emoji_u1f465.png b/png/128/emoji_u1f465.png deleted file mode 100644 index 41e7f1d7f..000000000 Binary files a/png/128/emoji_u1f465.png and /dev/null differ diff --git a/png/128/emoji_u1f466.png b/png/128/emoji_u1f466.png deleted file mode 100644 index b68beb2f0..000000000 Binary files a/png/128/emoji_u1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f466_1f3fb.png b/png/128/emoji_u1f466_1f3fb.png deleted file mode 100644 index 6781a7f2f..000000000 Binary files a/png/128/emoji_u1f466_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f466_1f3fc.png b/png/128/emoji_u1f466_1f3fc.png deleted file mode 100644 index 6b53012d6..000000000 Binary files a/png/128/emoji_u1f466_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f466_1f3fd.png b/png/128/emoji_u1f466_1f3fd.png deleted file mode 100644 index 9c406ddc9..000000000 Binary files a/png/128/emoji_u1f466_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f466_1f3fe.png b/png/128/emoji_u1f466_1f3fe.png deleted file mode 100644 index 6562329ee..000000000 Binary files a/png/128/emoji_u1f466_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f466_1f3ff.png b/png/128/emoji_u1f466_1f3ff.png deleted file mode 100644 index 75b631324..000000000 Binary files a/png/128/emoji_u1f466_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f466_1f9b0.png b/png/128/emoji_u1f466_1f9b0.png deleted file mode 100644 index 49029d562..000000000 Binary files a/png/128/emoji_u1f466_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f466_1f9b3.png b/png/128/emoji_u1f466_1f9b3.png deleted file mode 100644 index bdfa01d34..000000000 Binary files a/png/128/emoji_u1f466_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f467.png b/png/128/emoji_u1f467.png deleted file mode 100644 index d3ae59d9f..000000000 Binary files a/png/128/emoji_u1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f467_1f3fb.png b/png/128/emoji_u1f467_1f3fb.png deleted file mode 100644 index 7e09a0037..000000000 Binary files a/png/128/emoji_u1f467_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f467_1f3fc.png b/png/128/emoji_u1f467_1f3fc.png deleted file mode 100644 index e6846cf09..000000000 Binary files a/png/128/emoji_u1f467_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f467_1f3fd.png b/png/128/emoji_u1f467_1f3fd.png deleted file mode 100644 index b58785912..000000000 Binary files a/png/128/emoji_u1f467_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f467_1f3fe.png b/png/128/emoji_u1f467_1f3fe.png deleted file mode 100644 index db52c7f68..000000000 Binary files a/png/128/emoji_u1f467_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f467_1f3ff.png b/png/128/emoji_u1f467_1f3ff.png deleted file mode 100644 index d3614876f..000000000 Binary files a/png/128/emoji_u1f467_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f467_1f9b0.png b/png/128/emoji_u1f467_1f9b0.png deleted file mode 100644 index b9f4f4838..000000000 Binary files a/png/128/emoji_u1f467_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f467_1f9b3.png b/png/128/emoji_u1f467_1f9b3.png deleted file mode 100644 index 682e23716..000000000 Binary files a/png/128/emoji_u1f467_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f468.png b/png/128/emoji_u1f468.png deleted file mode 100644 index bcd8e348c..000000000 Binary files a/png/128/emoji_u1f468.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb.png b/png/128/emoji_u1f468_1f3fb.png deleted file mode 100644 index 96c4a3596..000000000 Binary files a/png/128/emoji_u1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f33e.png b/png/128/emoji_u1f468_1f3fb_200d_1f33e.png deleted file mode 100644 index 1b88dcb30..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f373.png b/png/128/emoji_u1f468_1f3fb_200d_1f373.png deleted file mode 100644 index a5ac7a203..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f393.png b/png/128/emoji_u1f468_1f3fb_200d_1f393.png deleted file mode 100644 index 0fbedfb6c..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f3a4.png b/png/128/emoji_u1f468_1f3fb_200d_1f3a4.png deleted file mode 100644 index 9e7982300..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f3a8.png b/png/128/emoji_u1f468_1f3fb_200d_1f3a8.png deleted file mode 100644 index 36743f022..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f3eb.png b/png/128/emoji_u1f468_1f3fb_200d_1f3eb.png deleted file mode 100644 index 2e2686c25..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f3ed.png b/png/128/emoji_u1f468_1f3fb_200d_1f3ed.png deleted file mode 100644 index d801f58f2..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f4bb.png b/png/128/emoji_u1f468_1f3fb_200d_1f4bb.png deleted file mode 100644 index 32b350ddc..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f4bc.png b/png/128/emoji_u1f468_1f3fb_200d_1f4bc.png deleted file mode 100644 index 2b895c8e1..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f527.png b/png/128/emoji_u1f468_1f3fb_200d_1f527.png deleted file mode 100644 index 7fe16168d..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f52c.png b/png/128/emoji_u1f468_1f3fb_200d_1f52c.png deleted file mode 100644 index d9fe4304a..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f680.png b/png/128/emoji_u1f468_1f3fb_200d_1f680.png deleted file mode 100644 index 318ea3755..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f692.png b/png/128/emoji_u1f468_1f3fb_200d_1f692.png deleted file mode 100644 index 75a0dda43..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f9af.png b/png/128/emoji_u1f468_1f3fb_200d_1f9af.png deleted file mode 100644 index a3ec8b677..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f9b0.png b/png/128/emoji_u1f468_1f3fb_200d_1f9b0.png deleted file mode 100644 index 867b09068..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f9b1.png b/png/128/emoji_u1f468_1f3fb_200d_1f9b1.png deleted file mode 100644 index 8f22e790b..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f9b2.png b/png/128/emoji_u1f468_1f3fb_200d_1f9b2.png deleted file mode 100644 index 2ec8bb003..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f9b3.png b/png/128/emoji_u1f468_1f3fb_200d_1f9b3.png deleted file mode 100644 index c6906933a..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f9bc.png b/png/128/emoji_u1f468_1f3fb_200d_1f9bc.png deleted file mode 100644 index e6e361891..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_1f9bd.png b/png/128/emoji_u1f468_1f3fb_200d_1f9bd.png deleted file mode 100644 index 02a993574..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_2695.png b/png/128/emoji_u1f468_1f3fb_200d_2695.png deleted file mode 100644 index d8e2d93e9..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_2696.png b/png/128/emoji_u1f468_1f3fb_200d_2696.png deleted file mode 100644 index 57b357e3b..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fb_200d_2708.png b/png/128/emoji_u1f468_1f3fb_200d_2708.png deleted file mode 100644 index 583ed9558..000000000 Binary files a/png/128/emoji_u1f468_1f3fb_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc.png b/png/128/emoji_u1f468_1f3fc.png deleted file mode 100644 index 188a66114..000000000 Binary files a/png/128/emoji_u1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f33e.png b/png/128/emoji_u1f468_1f3fc_200d_1f33e.png deleted file mode 100644 index 0789dd2ba..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f373.png b/png/128/emoji_u1f468_1f3fc_200d_1f373.png deleted file mode 100644 index dca66a3ad..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f393.png b/png/128/emoji_u1f468_1f3fc_200d_1f393.png deleted file mode 100644 index 991d108ca..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f3a4.png b/png/128/emoji_u1f468_1f3fc_200d_1f3a4.png deleted file mode 100644 index 689f9d77d..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f3a8.png b/png/128/emoji_u1f468_1f3fc_200d_1f3a8.png deleted file mode 100644 index 4265155b1..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f3eb.png b/png/128/emoji_u1f468_1f3fc_200d_1f3eb.png deleted file mode 100644 index 916823ebc..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f3ed.png b/png/128/emoji_u1f468_1f3fc_200d_1f3ed.png deleted file mode 100644 index e6b239bc3..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f4bb.png b/png/128/emoji_u1f468_1f3fc_200d_1f4bb.png deleted file mode 100644 index 5fcf86163..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f4bc.png b/png/128/emoji_u1f468_1f3fc_200d_1f4bc.png deleted file mode 100644 index 7ecb070d5..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f527.png b/png/128/emoji_u1f468_1f3fc_200d_1f527.png deleted file mode 100644 index 1ee47846a..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f52c.png b/png/128/emoji_u1f468_1f3fc_200d_1f52c.png deleted file mode 100644 index 850e453b7..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f680.png b/png/128/emoji_u1f468_1f3fc_200d_1f680.png deleted file mode 100644 index 2462ab3ca..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f692.png b/png/128/emoji_u1f468_1f3fc_200d_1f692.png deleted file mode 100644 index 03a8780a0..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f468_1f3fc_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index 9712ec146..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f9af.png b/png/128/emoji_u1f468_1f3fc_200d_1f9af.png deleted file mode 100644 index a7511865d..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f9b0.png b/png/128/emoji_u1f468_1f3fc_200d_1f9b0.png deleted file mode 100644 index 2b3cb9bfe..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f9b1.png b/png/128/emoji_u1f468_1f3fc_200d_1f9b1.png deleted file mode 100644 index 775deb3f5..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f9b2.png b/png/128/emoji_u1f468_1f3fc_200d_1f9b2.png deleted file mode 100644 index 1980da5b5..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f9b3.png b/png/128/emoji_u1f468_1f3fc_200d_1f9b3.png deleted file mode 100644 index 98d381553..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f9bc.png b/png/128/emoji_u1f468_1f3fc_200d_1f9bc.png deleted file mode 100644 index 7b3a883e2..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_1f9bd.png b/png/128/emoji_u1f468_1f3fc_200d_1f9bd.png deleted file mode 100644 index 41d347191..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_2695.png b/png/128/emoji_u1f468_1f3fc_200d_2695.png deleted file mode 100644 index 145ed7f09..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_2696.png b/png/128/emoji_u1f468_1f3fc_200d_2696.png deleted file mode 100644 index d3e976137..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fc_200d_2708.png b/png/128/emoji_u1f468_1f3fc_200d_2708.png deleted file mode 100644 index 6d9165b25..000000000 Binary files a/png/128/emoji_u1f468_1f3fc_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd.png b/png/128/emoji_u1f468_1f3fd.png deleted file mode 100644 index 83bc812b5..000000000 Binary files a/png/128/emoji_u1f468_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f33e.png b/png/128/emoji_u1f468_1f3fd_200d_1f33e.png deleted file mode 100644 index b0437fb09..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f373.png b/png/128/emoji_u1f468_1f3fd_200d_1f373.png deleted file mode 100644 index af8d770bb..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f393.png b/png/128/emoji_u1f468_1f3fd_200d_1f393.png deleted file mode 100644 index c027cde60..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f3a4.png b/png/128/emoji_u1f468_1f3fd_200d_1f3a4.png deleted file mode 100644 index 256fb936a..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f3a8.png b/png/128/emoji_u1f468_1f3fd_200d_1f3a8.png deleted file mode 100644 index d64a12bac..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f3eb.png b/png/128/emoji_u1f468_1f3fd_200d_1f3eb.png deleted file mode 100644 index 7516c8b63..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f3ed.png b/png/128/emoji_u1f468_1f3fd_200d_1f3ed.png deleted file mode 100644 index 4166f992e..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f4bb.png b/png/128/emoji_u1f468_1f3fd_200d_1f4bb.png deleted file mode 100644 index a31e239c1..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f4bc.png b/png/128/emoji_u1f468_1f3fd_200d_1f4bc.png deleted file mode 100644 index e1bcf9eba..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f527.png b/png/128/emoji_u1f468_1f3fd_200d_1f527.png deleted file mode 100644 index 1cae6200d..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f52c.png b/png/128/emoji_u1f468_1f3fd_200d_1f52c.png deleted file mode 100644 index 2bc7c7ac1..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f680.png b/png/128/emoji_u1f468_1f3fd_200d_1f680.png deleted file mode 100644 index 4cfd1f12e..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f692.png b/png/128/emoji_u1f468_1f3fd_200d_1f692.png deleted file mode 100644 index 40a4d9cac..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f468_1f3fd_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index 60a561293..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f91d_200d_1f468_1f3fc.png b/png/128/emoji_u1f468_1f3fd_200d_1f91d_200d_1f468_1f3fc.png deleted file mode 100644 index 52705d116..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f91d_200d_1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f9af.png b/png/128/emoji_u1f468_1f3fd_200d_1f9af.png deleted file mode 100644 index a0a93c339..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f9b0.png b/png/128/emoji_u1f468_1f3fd_200d_1f9b0.png deleted file mode 100644 index 1b25213fd..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f9b1.png b/png/128/emoji_u1f468_1f3fd_200d_1f9b1.png deleted file mode 100644 index db82d0e82..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f9b2.png b/png/128/emoji_u1f468_1f3fd_200d_1f9b2.png deleted file mode 100644 index 8065d999a..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f9b3.png b/png/128/emoji_u1f468_1f3fd_200d_1f9b3.png deleted file mode 100644 index c58a35391..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f9bc.png b/png/128/emoji_u1f468_1f3fd_200d_1f9bc.png deleted file mode 100644 index 5cc96dc1a..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_1f9bd.png b/png/128/emoji_u1f468_1f3fd_200d_1f9bd.png deleted file mode 100644 index fc032a154..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_2695.png b/png/128/emoji_u1f468_1f3fd_200d_2695.png deleted file mode 100644 index 56b94388b..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_2696.png b/png/128/emoji_u1f468_1f3fd_200d_2696.png deleted file mode 100644 index f9739760e..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fd_200d_2708.png b/png/128/emoji_u1f468_1f3fd_200d_2708.png deleted file mode 100644 index dbe5972c5..000000000 Binary files a/png/128/emoji_u1f468_1f3fd_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe.png b/png/128/emoji_u1f468_1f3fe.png deleted file mode 100644 index d6c18dd5e..000000000 Binary files a/png/128/emoji_u1f468_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f33e.png b/png/128/emoji_u1f468_1f3fe_200d_1f33e.png deleted file mode 100644 index 89fc40458..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f373.png b/png/128/emoji_u1f468_1f3fe_200d_1f373.png deleted file mode 100644 index d9729254a..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f393.png b/png/128/emoji_u1f468_1f3fe_200d_1f393.png deleted file mode 100644 index 3fabd13ef..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f3a4.png b/png/128/emoji_u1f468_1f3fe_200d_1f3a4.png deleted file mode 100644 index ecb2032c3..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f3a8.png b/png/128/emoji_u1f468_1f3fe_200d_1f3a8.png deleted file mode 100644 index 65aa72213..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f3eb.png b/png/128/emoji_u1f468_1f3fe_200d_1f3eb.png deleted file mode 100644 index 893ce1887..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f3ed.png b/png/128/emoji_u1f468_1f3fe_200d_1f3ed.png deleted file mode 100644 index 194c63c76..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f4bb.png b/png/128/emoji_u1f468_1f3fe_200d_1f4bb.png deleted file mode 100644 index 839b73e68..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f4bc.png b/png/128/emoji_u1f468_1f3fe_200d_1f4bc.png deleted file mode 100644 index 328c5f73c..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f527.png b/png/128/emoji_u1f468_1f3fe_200d_1f527.png deleted file mode 100644 index 7c48c0b6a..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f52c.png b/png/128/emoji_u1f468_1f3fe_200d_1f52c.png deleted file mode 100644 index d93aa64c4..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f680.png b/png/128/emoji_u1f468_1f3fe_200d_1f680.png deleted file mode 100644 index 9e809d898..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f692.png b/png/128/emoji_u1f468_1f3fe_200d_1f692.png deleted file mode 100644 index ad922b251..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index a649496fe..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fc.png b/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fc.png deleted file mode 100644 index af1653b76..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fd.png b/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fd.png deleted file mode 100644 index 533fa6ebf..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f91d_200d_1f468_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f9af.png b/png/128/emoji_u1f468_1f3fe_200d_1f9af.png deleted file mode 100644 index e605c045c..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f9b0.png b/png/128/emoji_u1f468_1f3fe_200d_1f9b0.png deleted file mode 100644 index dcf379ba1..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f9b1.png b/png/128/emoji_u1f468_1f3fe_200d_1f9b1.png deleted file mode 100644 index 58604c6f6..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f9b2.png b/png/128/emoji_u1f468_1f3fe_200d_1f9b2.png deleted file mode 100644 index 87f02bceb..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f9b3.png b/png/128/emoji_u1f468_1f3fe_200d_1f9b3.png deleted file mode 100644 index 8f12555ca..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f9bc.png b/png/128/emoji_u1f468_1f3fe_200d_1f9bc.png deleted file mode 100644 index 645cdee6d..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_1f9bd.png b/png/128/emoji_u1f468_1f3fe_200d_1f9bd.png deleted file mode 100644 index d01298e42..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_2695.png b/png/128/emoji_u1f468_1f3fe_200d_2695.png deleted file mode 100644 index 1b5ffb9d2..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_2696.png b/png/128/emoji_u1f468_1f3fe_200d_2696.png deleted file mode 100644 index bcdce82e2..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3fe_200d_2708.png b/png/128/emoji_u1f468_1f3fe_200d_2708.png deleted file mode 100644 index 887b6bbe2..000000000 Binary files a/png/128/emoji_u1f468_1f3fe_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff.png b/png/128/emoji_u1f468_1f3ff.png deleted file mode 100644 index 7542e953f..000000000 Binary files a/png/128/emoji_u1f468_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f33e.png b/png/128/emoji_u1f468_1f3ff_200d_1f33e.png deleted file mode 100644 index b1c3d00be..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f373.png b/png/128/emoji_u1f468_1f3ff_200d_1f373.png deleted file mode 100644 index 96575bcdd..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f393.png b/png/128/emoji_u1f468_1f3ff_200d_1f393.png deleted file mode 100644 index b99529cb6..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f3a4.png b/png/128/emoji_u1f468_1f3ff_200d_1f3a4.png deleted file mode 100644 index 0ffd86fc8..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f3a8.png b/png/128/emoji_u1f468_1f3ff_200d_1f3a8.png deleted file mode 100644 index e5e5fcc02..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f3eb.png b/png/128/emoji_u1f468_1f3ff_200d_1f3eb.png deleted file mode 100644 index 471a960ec..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f3ed.png b/png/128/emoji_u1f468_1f3ff_200d_1f3ed.png deleted file mode 100644 index 06b2180b9..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f4bb.png b/png/128/emoji_u1f468_1f3ff_200d_1f4bb.png deleted file mode 100644 index d453ecf63..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f4bc.png b/png/128/emoji_u1f468_1f3ff_200d_1f4bc.png deleted file mode 100644 index e84d3e308..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f527.png b/png/128/emoji_u1f468_1f3ff_200d_1f527.png deleted file mode 100644 index f03f2f676..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f52c.png b/png/128/emoji_u1f468_1f3ff_200d_1f52c.png deleted file mode 100644 index dee6f7dca..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f680.png b/png/128/emoji_u1f468_1f3ff_200d_1f680.png deleted file mode 100644 index 115bf2f84..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f692.png b/png/128/emoji_u1f468_1f3ff_200d_1f692.png deleted file mode 100644 index d0e8d8f08..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index 7335f6d6f..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fc.png b/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fc.png deleted file mode 100644 index a7f4f71fc..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fd.png b/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fd.png deleted file mode 100644 index 7662a5917..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fe.png b/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fe.png deleted file mode 100644 index 62aa90c97..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f91d_200d_1f468_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f9af.png b/png/128/emoji_u1f468_1f3ff_200d_1f9af.png deleted file mode 100644 index 03ab1c30b..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f9b0.png b/png/128/emoji_u1f468_1f3ff_200d_1f9b0.png deleted file mode 100644 index 9e4ebfa45..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f9b1.png b/png/128/emoji_u1f468_1f3ff_200d_1f9b1.png deleted file mode 100644 index 8352ac9c4..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f9b2.png b/png/128/emoji_u1f468_1f3ff_200d_1f9b2.png deleted file mode 100644 index 446f05bc1..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f9b3.png b/png/128/emoji_u1f468_1f3ff_200d_1f9b3.png deleted file mode 100644 index 1eb80a54e..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f9bc.png b/png/128/emoji_u1f468_1f3ff_200d_1f9bc.png deleted file mode 100644 index be83caf07..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_1f9bd.png b/png/128/emoji_u1f468_1f3ff_200d_1f9bd.png deleted file mode 100644 index 600c77835..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_2695.png b/png/128/emoji_u1f468_1f3ff_200d_2695.png deleted file mode 100644 index e0ecc1e9c..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_2696.png b/png/128/emoji_u1f468_1f3ff_200d_2696.png deleted file mode 100644 index f558904a0..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f3ff_200d_2708.png b/png/128/emoji_u1f468_1f3ff_200d_2708.png deleted file mode 100644 index 0742f1847..000000000 Binary files a/png/128/emoji_u1f468_1f3ff_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f33e.png b/png/128/emoji_u1f468_1f9b0_200d_1f33e.png deleted file mode 100644 index 3e911a7f6..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f373.png b/png/128/emoji_u1f468_1f9b0_200d_1f373.png deleted file mode 100644 index 18d560cd6..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f393.png b/png/128/emoji_u1f468_1f9b0_200d_1f393.png deleted file mode 100644 index 1329207a8..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f3a4.png b/png/128/emoji_u1f468_1f9b0_200d_1f3a4.png deleted file mode 100644 index f08423f19..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f3a8.png b/png/128/emoji_u1f468_1f9b0_200d_1f3a8.png deleted file mode 100644 index 3f0c92f79..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f3eb.png b/png/128/emoji_u1f468_1f9b0_200d_1f3eb.png deleted file mode 100644 index 62dd5184e..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f3ed.png b/png/128/emoji_u1f468_1f9b0_200d_1f3ed.png deleted file mode 100644 index 80cf79a05..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f4bb.png b/png/128/emoji_u1f468_1f9b0_200d_1f4bb.png deleted file mode 100644 index cc32e0062..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f4bc.png b/png/128/emoji_u1f468_1f9b0_200d_1f4bc.png deleted file mode 100644 index deed10c44..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f527.png b/png/128/emoji_u1f468_1f9b0_200d_1f527.png deleted file mode 100644 index 91cd954a6..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f52c.png b/png/128/emoji_u1f468_1f9b0_200d_1f52c.png deleted file mode 100644 index 30d94d5c4..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f680.png b/png/128/emoji_u1f468_1f9b0_200d_1f680.png deleted file mode 100644 index f5124037b..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f692.png b/png/128/emoji_u1f468_1f9b0_200d_1f692.png deleted file mode 100644 index a3e68ba88..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f9af.png b/png/128/emoji_u1f468_1f9b0_200d_1f9af.png deleted file mode 100644 index 27e9481e6..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f9b1.png b/png/128/emoji_u1f468_1f9b0_200d_1f9b1.png deleted file mode 100644 index c19904da0..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f9bc.png b/png/128/emoji_u1f468_1f9b0_200d_1f9bc.png deleted file mode 100644 index d32fa6ce8..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_1f9bd.png b/png/128/emoji_u1f468_1f9b0_200d_1f9bd.png deleted file mode 100644 index 47542e409..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_2695.png b/png/128/emoji_u1f468_1f9b0_200d_2695.png deleted file mode 100644 index 7c84f2dc2..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_2696.png b/png/128/emoji_u1f468_1f9b0_200d_2696.png deleted file mode 100644 index 8cf0cdc28..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b0_200d_2708.png b/png/128/emoji_u1f468_1f9b0_200d_2708.png deleted file mode 100644 index d61d7b119..000000000 Binary files a/png/128/emoji_u1f468_1f9b0_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f33e.png b/png/128/emoji_u1f468_1f9b3_200d_1f33e.png deleted file mode 100644 index 86ddb21c7..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f373.png b/png/128/emoji_u1f468_1f9b3_200d_1f373.png deleted file mode 100644 index d0da63049..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f393.png b/png/128/emoji_u1f468_1f9b3_200d_1f393.png deleted file mode 100644 index 6e783db28..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f3a4.png b/png/128/emoji_u1f468_1f9b3_200d_1f3a4.png deleted file mode 100644 index eb0dc3b22..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f3a8.png b/png/128/emoji_u1f468_1f9b3_200d_1f3a8.png deleted file mode 100644 index d54b77542..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f3eb.png b/png/128/emoji_u1f468_1f9b3_200d_1f3eb.png deleted file mode 100644 index 941631e81..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f3ed.png b/png/128/emoji_u1f468_1f9b3_200d_1f3ed.png deleted file mode 100644 index ebed4cb0d..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f4bb.png b/png/128/emoji_u1f468_1f9b3_200d_1f4bb.png deleted file mode 100644 index 7e9781552..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f4bc.png b/png/128/emoji_u1f468_1f9b3_200d_1f4bc.png deleted file mode 100644 index 9ca264408..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f527.png b/png/128/emoji_u1f468_1f9b3_200d_1f527.png deleted file mode 100644 index 6aa4a9857..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f52c.png b/png/128/emoji_u1f468_1f9b3_200d_1f52c.png deleted file mode 100644 index f46f6241c..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f680.png b/png/128/emoji_u1f468_1f9b3_200d_1f680.png deleted file mode 100644 index 86ef397f8..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f692.png b/png/128/emoji_u1f468_1f9b3_200d_1f692.png deleted file mode 100644 index 7aa5e109f..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f9af.png b/png/128/emoji_u1f468_1f9b3_200d_1f9af.png deleted file mode 100644 index 7fcbdaaca..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f9b1.png b/png/128/emoji_u1f468_1f9b3_200d_1f9b1.png deleted file mode 100644 index b179764b9..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f9bc.png b/png/128/emoji_u1f468_1f9b3_200d_1f9bc.png deleted file mode 100644 index 77f31acaf..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_1f9bd.png b/png/128/emoji_u1f468_1f9b3_200d_1f9bd.png deleted file mode 100644 index 9ebf5df2f..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_2695.png b/png/128/emoji_u1f468_1f9b3_200d_2695.png deleted file mode 100644 index 90c9d9b98..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_2696.png b/png/128/emoji_u1f468_1f9b3_200d_2696.png deleted file mode 100644 index 5f74e5d68..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_1f9b3_200d_2708.png b/png/128/emoji_u1f468_1f9b3_200d_2708.png deleted file mode 100644 index 5a2acb220..000000000 Binary files a/png/128/emoji_u1f468_1f9b3_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f33e.png b/png/128/emoji_u1f468_200d_1f33e.png deleted file mode 100644 index 6532fcd3c..000000000 Binary files a/png/128/emoji_u1f468_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f373.png b/png/128/emoji_u1f468_200d_1f373.png deleted file mode 100644 index 796d24e29..000000000 Binary files a/png/128/emoji_u1f468_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f393.png b/png/128/emoji_u1f468_200d_1f393.png deleted file mode 100644 index 9d7458a86..000000000 Binary files a/png/128/emoji_u1f468_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f3a4.png b/png/128/emoji_u1f468_200d_1f3a4.png deleted file mode 100644 index 700cf18db..000000000 Binary files a/png/128/emoji_u1f468_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f3a8.png b/png/128/emoji_u1f468_200d_1f3a8.png deleted file mode 100644 index cc9c57c41..000000000 Binary files a/png/128/emoji_u1f468_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f3eb.png b/png/128/emoji_u1f468_200d_1f3eb.png deleted file mode 100644 index 260e991ef..000000000 Binary files a/png/128/emoji_u1f468_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f3ed.png b/png/128/emoji_u1f468_200d_1f3ed.png deleted file mode 100644 index 5d3014001..000000000 Binary files a/png/128/emoji_u1f468_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f466.png b/png/128/emoji_u1f468_200d_1f466.png deleted file mode 100644 index 4c76f4f94..000000000 Binary files a/png/128/emoji_u1f468_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f466_200d_1f466.png b/png/128/emoji_u1f468_200d_1f466_200d_1f466.png deleted file mode 100644 index dd9d7ae6e..000000000 Binary files a/png/128/emoji_u1f468_200d_1f466_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f467.png b/png/128/emoji_u1f468_200d_1f467.png deleted file mode 100644 index 35b7a7464..000000000 Binary files a/png/128/emoji_u1f468_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f467_200d_1f466.png b/png/128/emoji_u1f468_200d_1f467_200d_1f466.png deleted file mode 100644 index 9c73a323a..000000000 Binary files a/png/128/emoji_u1f468_200d_1f467_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f467_200d_1f467.png b/png/128/emoji_u1f468_200d_1f467_200d_1f467.png deleted file mode 100644 index 39b92e609..000000000 Binary files a/png/128/emoji_u1f468_200d_1f467_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f468_200d_1f466.png b/png/128/emoji_u1f468_200d_1f468_200d_1f466.png deleted file mode 100644 index 553968dc3..000000000 Binary files a/png/128/emoji_u1f468_200d_1f468_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f468_200d_1f466_200d_1f466.png b/png/128/emoji_u1f468_200d_1f468_200d_1f466_200d_1f466.png deleted file mode 100644 index d20de004d..000000000 Binary files a/png/128/emoji_u1f468_200d_1f468_200d_1f466_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f468_200d_1f467.png b/png/128/emoji_u1f468_200d_1f468_200d_1f467.png deleted file mode 100644 index 5fd9a4db6..000000000 Binary files a/png/128/emoji_u1f468_200d_1f468_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f468_200d_1f467_200d_1f466.png b/png/128/emoji_u1f468_200d_1f468_200d_1f467_200d_1f466.png deleted file mode 100644 index cb9a693e1..000000000 Binary files a/png/128/emoji_u1f468_200d_1f468_200d_1f467_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f468_200d_1f467_200d_1f467.png b/png/128/emoji_u1f468_200d_1f468_200d_1f467_200d_1f467.png deleted file mode 100644 index a6a2e0491..000000000 Binary files a/png/128/emoji_u1f468_200d_1f468_200d_1f467_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f469_200d_1f466.png b/png/128/emoji_u1f468_200d_1f469_200d_1f466.png deleted file mode 100644 index 671bde030..000000000 Binary files a/png/128/emoji_u1f468_200d_1f469_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f469_200d_1f466_200d_1f466.png b/png/128/emoji_u1f468_200d_1f469_200d_1f466_200d_1f466.png deleted file mode 100644 index 85b642e1d..000000000 Binary files a/png/128/emoji_u1f468_200d_1f469_200d_1f466_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f469_200d_1f467.png b/png/128/emoji_u1f468_200d_1f469_200d_1f467.png deleted file mode 100644 index 550bd068f..000000000 Binary files a/png/128/emoji_u1f468_200d_1f469_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f469_200d_1f467_200d_1f466.png b/png/128/emoji_u1f468_200d_1f469_200d_1f467_200d_1f466.png deleted file mode 100644 index 71ea1ef45..000000000 Binary files a/png/128/emoji_u1f468_200d_1f469_200d_1f467_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f469_200d_1f467_200d_1f467.png b/png/128/emoji_u1f468_200d_1f469_200d_1f467_200d_1f467.png deleted file mode 100644 index f840565b7..000000000 Binary files a/png/128/emoji_u1f468_200d_1f469_200d_1f467_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f4bb.png b/png/128/emoji_u1f468_200d_1f4bb.png deleted file mode 100644 index 87e2aa018..000000000 Binary files a/png/128/emoji_u1f468_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f4bc.png b/png/128/emoji_u1f468_200d_1f4bc.png deleted file mode 100644 index 447e2df68..000000000 Binary files a/png/128/emoji_u1f468_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f527.png b/png/128/emoji_u1f468_200d_1f527.png deleted file mode 100644 index 687a61702..000000000 Binary files a/png/128/emoji_u1f468_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f52c.png b/png/128/emoji_u1f468_200d_1f52c.png deleted file mode 100644 index 8a7161690..000000000 Binary files a/png/128/emoji_u1f468_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f680.png b/png/128/emoji_u1f468_200d_1f680.png deleted file mode 100644 index 2da2983bb..000000000 Binary files a/png/128/emoji_u1f468_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f692.png b/png/128/emoji_u1f468_200d_1f692.png deleted file mode 100644 index c45203560..000000000 Binary files a/png/128/emoji_u1f468_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f9af.png b/png/128/emoji_u1f468_200d_1f9af.png deleted file mode 100644 index 604e3c7fb..000000000 Binary files a/png/128/emoji_u1f468_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f9b0.png b/png/128/emoji_u1f468_200d_1f9b0.png deleted file mode 100644 index 60bd22cc2..000000000 Binary files a/png/128/emoji_u1f468_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f9b1.png b/png/128/emoji_u1f468_200d_1f9b1.png deleted file mode 100644 index ecddf3ea4..000000000 Binary files a/png/128/emoji_u1f468_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f9b2.png b/png/128/emoji_u1f468_200d_1f9b2.png deleted file mode 100644 index 81faf3d88..000000000 Binary files a/png/128/emoji_u1f468_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f9b3.png b/png/128/emoji_u1f468_200d_1f9b3.png deleted file mode 100644 index c5a256a3f..000000000 Binary files a/png/128/emoji_u1f468_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f9bc.png b/png/128/emoji_u1f468_200d_1f9bc.png deleted file mode 100644 index ff689c9f6..000000000 Binary files a/png/128/emoji_u1f468_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_1f9bd.png b/png/128/emoji_u1f468_200d_1f9bd.png deleted file mode 100644 index 0e0d8a813..000000000 Binary files a/png/128/emoji_u1f468_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_2695.png b/png/128/emoji_u1f468_200d_2695.png deleted file mode 100644 index 05e22ca90..000000000 Binary files a/png/128/emoji_u1f468_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_2696.png b/png/128/emoji_u1f468_200d_2696.png deleted file mode 100644 index f2044b25a..000000000 Binary files a/png/128/emoji_u1f468_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_2708.png b/png/128/emoji_u1f468_200d_2708.png deleted file mode 100644 index d24b98e61..000000000 Binary files a/png/128/emoji_u1f468_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_2764_200d_1f468.png b/png/128/emoji_u1f468_200d_2764_200d_1f468.png deleted file mode 100644 index f8157f657..000000000 Binary files a/png/128/emoji_u1f468_200d_2764_200d_1f468.png and /dev/null differ diff --git a/png/128/emoji_u1f468_200d_2764_200d_1f48b_200d_1f468.png b/png/128/emoji_u1f468_200d_2764_200d_1f48b_200d_1f468.png deleted file mode 100644 index 3883d8147..000000000 Binary files a/png/128/emoji_u1f468_200d_2764_200d_1f48b_200d_1f468.png and /dev/null differ diff --git a/png/128/emoji_u1f469.png b/png/128/emoji_u1f469.png deleted file mode 100644 index d93befbb4..000000000 Binary files a/png/128/emoji_u1f469.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb.png b/png/128/emoji_u1f469_1f3fb.png deleted file mode 100644 index 71f747e1c..000000000 Binary files a/png/128/emoji_u1f469_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f33e.png b/png/128/emoji_u1f469_1f3fb_200d_1f33e.png deleted file mode 100644 index 63a871ef5..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f373.png b/png/128/emoji_u1f469_1f3fb_200d_1f373.png deleted file mode 100644 index 7740a46fd..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f393.png b/png/128/emoji_u1f469_1f3fb_200d_1f393.png deleted file mode 100644 index 1c87f2cc9..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f3a4.png b/png/128/emoji_u1f469_1f3fb_200d_1f3a4.png deleted file mode 100644 index ca3626066..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f3a8.png b/png/128/emoji_u1f469_1f3fb_200d_1f3a8.png deleted file mode 100644 index 93e39e192..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f3eb.png b/png/128/emoji_u1f469_1f3fb_200d_1f3eb.png deleted file mode 100644 index 6b30b4f1d..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f3ed.png b/png/128/emoji_u1f469_1f3fb_200d_1f3ed.png deleted file mode 100644 index 656a922d7..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f4bb.png b/png/128/emoji_u1f469_1f3fb_200d_1f4bb.png deleted file mode 100644 index 88df63fba..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f4bc.png b/png/128/emoji_u1f469_1f3fb_200d_1f4bc.png deleted file mode 100644 index 57767838e..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f527.png b/png/128/emoji_u1f469_1f3fb_200d_1f527.png deleted file mode 100644 index 15ccc4ddf..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f52c.png b/png/128/emoji_u1f469_1f3fb_200d_1f52c.png deleted file mode 100644 index b3ce692bf..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f680.png b/png/128/emoji_u1f469_1f3fb_200d_1f680.png deleted file mode 100644 index b891510d2..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f692.png b/png/128/emoji_u1f469_1f3fb_200d_1f692.png deleted file mode 100644 index 0a247412a..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fc.png b/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fc.png deleted file mode 100644 index c481961f5..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fd.png b/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fd.png deleted file mode 100644 index 6ef51382f..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fe.png b/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fe.png deleted file mode 100644 index 28a11c6e9..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3ff.png b/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3ff.png deleted file mode 100644 index 76582d7e1..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f91d_200d_1f468_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f9af.png b/png/128/emoji_u1f469_1f3fb_200d_1f9af.png deleted file mode 100644 index e37cf4197..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f9b0.png b/png/128/emoji_u1f469_1f3fb_200d_1f9b0.png deleted file mode 100644 index 4d1029ace..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f9b1.png b/png/128/emoji_u1f469_1f3fb_200d_1f9b1.png deleted file mode 100644 index de17c9cdd..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f9b2.png b/png/128/emoji_u1f469_1f3fb_200d_1f9b2.png deleted file mode 100644 index 67f4072c4..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f9b3.png b/png/128/emoji_u1f469_1f3fb_200d_1f9b3.png deleted file mode 100644 index 614c23544..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f9bc.png b/png/128/emoji_u1f469_1f3fb_200d_1f9bc.png deleted file mode 100644 index 139a1fca3..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_1f9bd.png b/png/128/emoji_u1f469_1f3fb_200d_1f9bd.png deleted file mode 100644 index a4d2f2702..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_2695.png b/png/128/emoji_u1f469_1f3fb_200d_2695.png deleted file mode 100644 index 604d7e65b..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_2696.png b/png/128/emoji_u1f469_1f3fb_200d_2696.png deleted file mode 100644 index 0feea54a7..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fb_200d_2708.png b/png/128/emoji_u1f469_1f3fb_200d_2708.png deleted file mode 100644 index bad9db4d9..000000000 Binary files a/png/128/emoji_u1f469_1f3fb_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc.png b/png/128/emoji_u1f469_1f3fc.png deleted file mode 100644 index e6dddbb87..000000000 Binary files a/png/128/emoji_u1f469_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f33e.png b/png/128/emoji_u1f469_1f3fc_200d_1f33e.png deleted file mode 100644 index b19b54c10..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f373.png b/png/128/emoji_u1f469_1f3fc_200d_1f373.png deleted file mode 100644 index d83f1a8ea..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f393.png b/png/128/emoji_u1f469_1f3fc_200d_1f393.png deleted file mode 100644 index f73aa46a5..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f3a4.png b/png/128/emoji_u1f469_1f3fc_200d_1f3a4.png deleted file mode 100644 index eed62b776..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f3a8.png b/png/128/emoji_u1f469_1f3fc_200d_1f3a8.png deleted file mode 100644 index fd7fb40e1..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f3eb.png b/png/128/emoji_u1f469_1f3fc_200d_1f3eb.png deleted file mode 100644 index 3d96c1b29..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f3ed.png b/png/128/emoji_u1f469_1f3fc_200d_1f3ed.png deleted file mode 100644 index 8ea330cc0..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f4bb.png b/png/128/emoji_u1f469_1f3fc_200d_1f4bb.png deleted file mode 100644 index b09eb2636..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f4bc.png b/png/128/emoji_u1f469_1f3fc_200d_1f4bc.png deleted file mode 100644 index bb7dba17c..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f527.png b/png/128/emoji_u1f469_1f3fc_200d_1f527.png deleted file mode 100644 index ef82b5241..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f52c.png b/png/128/emoji_u1f469_1f3fc_200d_1f52c.png deleted file mode 100644 index 3a1c67be7..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f680.png b/png/128/emoji_u1f469_1f3fc_200d_1f680.png deleted file mode 100644 index 94110b7c9..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f692.png b/png/128/emoji_u1f469_1f3fc_200d_1f692.png deleted file mode 100644 index cc9449468..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index cbffeac9e..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fd.png b/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fd.png deleted file mode 100644 index c35446287..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fe.png b/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fe.png deleted file mode 100644 index 892703261..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3ff.png b/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3ff.png deleted file mode 100644 index f3ee81789..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f468_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f469_1f3fb.png b/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f469_1f3fb.png deleted file mode 100644 index 4d521a129..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f91d_200d_1f469_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f9af.png b/png/128/emoji_u1f469_1f3fc_200d_1f9af.png deleted file mode 100644 index b7a4dea98..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f9b0.png b/png/128/emoji_u1f469_1f3fc_200d_1f9b0.png deleted file mode 100644 index 0235d255e..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f9b1.png b/png/128/emoji_u1f469_1f3fc_200d_1f9b1.png deleted file mode 100644 index c00dae804..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f9b2.png b/png/128/emoji_u1f469_1f3fc_200d_1f9b2.png deleted file mode 100644 index 5f91eeb69..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f9b3.png b/png/128/emoji_u1f469_1f3fc_200d_1f9b3.png deleted file mode 100644 index fe05b8942..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f9bc.png b/png/128/emoji_u1f469_1f3fc_200d_1f9bc.png deleted file mode 100644 index 7f31384f6..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_1f9bd.png b/png/128/emoji_u1f469_1f3fc_200d_1f9bd.png deleted file mode 100644 index 7cbbd2a35..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_2695.png b/png/128/emoji_u1f469_1f3fc_200d_2695.png deleted file mode 100644 index e9601d6d1..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_2696.png b/png/128/emoji_u1f469_1f3fc_200d_2696.png deleted file mode 100644 index 6b7c16b85..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fc_200d_2708.png b/png/128/emoji_u1f469_1f3fc_200d_2708.png deleted file mode 100644 index 204aec969..000000000 Binary files a/png/128/emoji_u1f469_1f3fc_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd.png b/png/128/emoji_u1f469_1f3fd.png deleted file mode 100644 index 1a10614d3..000000000 Binary files a/png/128/emoji_u1f469_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f33e.png b/png/128/emoji_u1f469_1f3fd_200d_1f33e.png deleted file mode 100644 index eb3b8a792..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f373.png b/png/128/emoji_u1f469_1f3fd_200d_1f373.png deleted file mode 100644 index 9c97f0cd1..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f393.png b/png/128/emoji_u1f469_1f3fd_200d_1f393.png deleted file mode 100644 index 05a79159b..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f3a4.png b/png/128/emoji_u1f469_1f3fd_200d_1f3a4.png deleted file mode 100644 index d9e167bf6..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f3a8.png b/png/128/emoji_u1f469_1f3fd_200d_1f3a8.png deleted file mode 100644 index 421ba58c5..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f3eb.png b/png/128/emoji_u1f469_1f3fd_200d_1f3eb.png deleted file mode 100644 index 3d76a01fa..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f3ed.png b/png/128/emoji_u1f469_1f3fd_200d_1f3ed.png deleted file mode 100644 index 6f7cff8a5..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f4bb.png b/png/128/emoji_u1f469_1f3fd_200d_1f4bb.png deleted file mode 100644 index f1385449e..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f4bc.png b/png/128/emoji_u1f469_1f3fd_200d_1f4bc.png deleted file mode 100644 index 2a43b02bb..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f527.png b/png/128/emoji_u1f469_1f3fd_200d_1f527.png deleted file mode 100644 index dbd7c4613..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f52c.png b/png/128/emoji_u1f469_1f3fd_200d_1f52c.png deleted file mode 100644 index b6e37723f..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f680.png b/png/128/emoji_u1f469_1f3fd_200d_1f680.png deleted file mode 100644 index 164aa51c1..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f692.png b/png/128/emoji_u1f469_1f3fd_200d_1f692.png deleted file mode 100644 index 529997513..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index 16d4e551a..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fc.png b/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fc.png deleted file mode 100644 index 89029ae16..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fe.png b/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fe.png deleted file mode 100644 index 82dce92de..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3ff.png b/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3ff.png deleted file mode 100644 index f9f6e328c..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f468_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f469_1f3fb.png b/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f469_1f3fb.png deleted file mode 100644 index 045ca8a14..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f469_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f469_1f3fc.png b/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f469_1f3fc.png deleted file mode 100644 index 0ba914b08..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f91d_200d_1f469_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f9af.png b/png/128/emoji_u1f469_1f3fd_200d_1f9af.png deleted file mode 100644 index 29995551a..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f9b0.png b/png/128/emoji_u1f469_1f3fd_200d_1f9b0.png deleted file mode 100644 index bfe6be595..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f9b1.png b/png/128/emoji_u1f469_1f3fd_200d_1f9b1.png deleted file mode 100644 index 3982ef1ca..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f9b2.png b/png/128/emoji_u1f469_1f3fd_200d_1f9b2.png deleted file mode 100644 index d059b3b6f..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f9b3.png b/png/128/emoji_u1f469_1f3fd_200d_1f9b3.png deleted file mode 100644 index 308edeef9..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f9bc.png b/png/128/emoji_u1f469_1f3fd_200d_1f9bc.png deleted file mode 100644 index 6fba5b275..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_1f9bd.png b/png/128/emoji_u1f469_1f3fd_200d_1f9bd.png deleted file mode 100644 index 682a77ec0..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_2695.png b/png/128/emoji_u1f469_1f3fd_200d_2695.png deleted file mode 100644 index 4f6fdbbc7..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_2696.png b/png/128/emoji_u1f469_1f3fd_200d_2696.png deleted file mode 100644 index 7f127b393..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fd_200d_2708.png b/png/128/emoji_u1f469_1f3fd_200d_2708.png deleted file mode 100644 index fdff63838..000000000 Binary files a/png/128/emoji_u1f469_1f3fd_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe.png b/png/128/emoji_u1f469_1f3fe.png deleted file mode 100644 index 53f459152..000000000 Binary files a/png/128/emoji_u1f469_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f33e.png b/png/128/emoji_u1f469_1f3fe_200d_1f33e.png deleted file mode 100644 index 8117d99bd..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f373.png b/png/128/emoji_u1f469_1f3fe_200d_1f373.png deleted file mode 100644 index 6d0f712e2..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f393.png b/png/128/emoji_u1f469_1f3fe_200d_1f393.png deleted file mode 100644 index db342aa20..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f3a4.png b/png/128/emoji_u1f469_1f3fe_200d_1f3a4.png deleted file mode 100644 index f9e5975b1..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f3a8.png b/png/128/emoji_u1f469_1f3fe_200d_1f3a8.png deleted file mode 100644 index 2142a0ffe..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f3eb.png b/png/128/emoji_u1f469_1f3fe_200d_1f3eb.png deleted file mode 100644 index aaf65828a..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f3ed.png b/png/128/emoji_u1f469_1f3fe_200d_1f3ed.png deleted file mode 100644 index 705ba2146..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f4bb.png b/png/128/emoji_u1f469_1f3fe_200d_1f4bb.png deleted file mode 100644 index b3deed5e1..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f4bc.png b/png/128/emoji_u1f469_1f3fe_200d_1f4bc.png deleted file mode 100644 index b765275c3..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f527.png b/png/128/emoji_u1f469_1f3fe_200d_1f527.png deleted file mode 100644 index 09ad80262..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f52c.png b/png/128/emoji_u1f469_1f3fe_200d_1f52c.png deleted file mode 100644 index 01daf2246..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f680.png b/png/128/emoji_u1f469_1f3fe_200d_1f680.png deleted file mode 100644 index ede98d404..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f692.png b/png/128/emoji_u1f469_1f3fe_200d_1f692.png deleted file mode 100644 index 5eb1868ad..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index 84809e647..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fc.png b/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fc.png deleted file mode 100644 index 2ec88defe..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fd.png b/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fd.png deleted file mode 100644 index a4f46a5c8..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3ff.png b/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3ff.png deleted file mode 100644 index bc33db967..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f468_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fb.png b/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fb.png deleted file mode 100644 index b6cf564d4..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fc.png b/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fc.png deleted file mode 100644 index 948ed33af..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fd.png b/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fd.png deleted file mode 100644 index ae98ea25a..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f91d_200d_1f469_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f9af.png b/png/128/emoji_u1f469_1f3fe_200d_1f9af.png deleted file mode 100644 index 7b8ccf98f..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f9b0.png b/png/128/emoji_u1f469_1f3fe_200d_1f9b0.png deleted file mode 100644 index 4ae5b9726..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f9b1.png b/png/128/emoji_u1f469_1f3fe_200d_1f9b1.png deleted file mode 100644 index 0895812de..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f9b2.png b/png/128/emoji_u1f469_1f3fe_200d_1f9b2.png deleted file mode 100644 index ab838e21f..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f9b3.png b/png/128/emoji_u1f469_1f3fe_200d_1f9b3.png deleted file mode 100644 index 609ef3c73..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f9bc.png b/png/128/emoji_u1f469_1f3fe_200d_1f9bc.png deleted file mode 100644 index ea71ae320..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_1f9bd.png b/png/128/emoji_u1f469_1f3fe_200d_1f9bd.png deleted file mode 100644 index 6b5de80d8..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_2695.png b/png/128/emoji_u1f469_1f3fe_200d_2695.png deleted file mode 100644 index f901679cf..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_2696.png b/png/128/emoji_u1f469_1f3fe_200d_2696.png deleted file mode 100644 index 3b22db62d..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3fe_200d_2708.png b/png/128/emoji_u1f469_1f3fe_200d_2708.png deleted file mode 100644 index 0ec490149..000000000 Binary files a/png/128/emoji_u1f469_1f3fe_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff.png b/png/128/emoji_u1f469_1f3ff.png deleted file mode 100644 index 507a65936..000000000 Binary files a/png/128/emoji_u1f469_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f33e.png b/png/128/emoji_u1f469_1f3ff_200d_1f33e.png deleted file mode 100644 index af123dbd0..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f373.png b/png/128/emoji_u1f469_1f3ff_200d_1f373.png deleted file mode 100644 index e1f1fce47..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f393.png b/png/128/emoji_u1f469_1f3ff_200d_1f393.png deleted file mode 100644 index 70002ab3a..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f3a4.png b/png/128/emoji_u1f469_1f3ff_200d_1f3a4.png deleted file mode 100644 index 7c5fec6cf..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f3a8.png b/png/128/emoji_u1f469_1f3ff_200d_1f3a8.png deleted file mode 100644 index 3a5c0d3c1..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f3eb.png b/png/128/emoji_u1f469_1f3ff_200d_1f3eb.png deleted file mode 100644 index 91e8b51bd..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f3ed.png b/png/128/emoji_u1f469_1f3ff_200d_1f3ed.png deleted file mode 100644 index a03c1faad..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f4bb.png b/png/128/emoji_u1f469_1f3ff_200d_1f4bb.png deleted file mode 100644 index db9a4739e..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f4bc.png b/png/128/emoji_u1f469_1f3ff_200d_1f4bc.png deleted file mode 100644 index 36cecad32..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f527.png b/png/128/emoji_u1f469_1f3ff_200d_1f527.png deleted file mode 100644 index 3151bb561..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f52c.png b/png/128/emoji_u1f469_1f3ff_200d_1f52c.png deleted file mode 100644 index 10395c836..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f680.png b/png/128/emoji_u1f469_1f3ff_200d_1f680.png deleted file mode 100644 index f7aee59aa..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f692.png b/png/128/emoji_u1f469_1f3ff_200d_1f692.png deleted file mode 100644 index 4df45764b..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fb.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fb.png deleted file mode 100644 index 546368e50..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fc.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fc.png deleted file mode 100644 index 91cf23fac..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fd.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fd.png deleted file mode 100644 index 9ea5690ec..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fe.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fe.png deleted file mode 100644 index 5200803d0..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f468_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fb.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fb.png deleted file mode 100644 index 0cf21bd92..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fc.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fc.png deleted file mode 100644 index e6751c3d4..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fd.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fd.png deleted file mode 100644 index 34c033b80..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fe.png b/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fe.png deleted file mode 100644 index 1d4339350..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f91d_200d_1f469_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f9af.png b/png/128/emoji_u1f469_1f3ff_200d_1f9af.png deleted file mode 100644 index b6dbf0512..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f9b0.png b/png/128/emoji_u1f469_1f3ff_200d_1f9b0.png deleted file mode 100644 index 2c8744eee..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f9b1.png b/png/128/emoji_u1f469_1f3ff_200d_1f9b1.png deleted file mode 100644 index 95a1a733d..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f9b2.png b/png/128/emoji_u1f469_1f3ff_200d_1f9b2.png deleted file mode 100644 index 5b5065040..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f9b3.png b/png/128/emoji_u1f469_1f3ff_200d_1f9b3.png deleted file mode 100644 index df35cc9ca..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f9bc.png b/png/128/emoji_u1f469_1f3ff_200d_1f9bc.png deleted file mode 100644 index d1717ab6b..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_1f9bd.png b/png/128/emoji_u1f469_1f3ff_200d_1f9bd.png deleted file mode 100644 index 7eabb0cba..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_2695.png b/png/128/emoji_u1f469_1f3ff_200d_2695.png deleted file mode 100644 index 94823bac5..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_2696.png b/png/128/emoji_u1f469_1f3ff_200d_2696.png deleted file mode 100644 index db9654105..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f3ff_200d_2708.png b/png/128/emoji_u1f469_1f3ff_200d_2708.png deleted file mode 100644 index bf90240e2..000000000 Binary files a/png/128/emoji_u1f469_1f3ff_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f33e.png b/png/128/emoji_u1f469_1f9b0_200d_1f33e.png deleted file mode 100644 index 483442339..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f373.png b/png/128/emoji_u1f469_1f9b0_200d_1f373.png deleted file mode 100644 index 21234247e..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f393.png b/png/128/emoji_u1f469_1f9b0_200d_1f393.png deleted file mode 100644 index e57fad3e7..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f3a4.png b/png/128/emoji_u1f469_1f9b0_200d_1f3a4.png deleted file mode 100644 index 630365a36..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f3a8.png b/png/128/emoji_u1f469_1f9b0_200d_1f3a8.png deleted file mode 100644 index 51fab7c49..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f3eb.png b/png/128/emoji_u1f469_1f9b0_200d_1f3eb.png deleted file mode 100644 index fe1599d7f..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f3ed.png b/png/128/emoji_u1f469_1f9b0_200d_1f3ed.png deleted file mode 100644 index 203a532ee..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f4bb.png b/png/128/emoji_u1f469_1f9b0_200d_1f4bb.png deleted file mode 100644 index ec1f26542..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f4bc.png b/png/128/emoji_u1f469_1f9b0_200d_1f4bc.png deleted file mode 100644 index 3e500eaa6..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f527.png b/png/128/emoji_u1f469_1f9b0_200d_1f527.png deleted file mode 100644 index 22fe5c6fe..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f52c.png b/png/128/emoji_u1f469_1f9b0_200d_1f52c.png deleted file mode 100644 index 1810bfb27..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f680.png b/png/128/emoji_u1f469_1f9b0_200d_1f680.png deleted file mode 100644 index 1d1dff525..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f692.png b/png/128/emoji_u1f469_1f9b0_200d_1f692.png deleted file mode 100644 index bebfb6110..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f9af.png b/png/128/emoji_u1f469_1f9b0_200d_1f9af.png deleted file mode 100644 index 131c8b072..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f9b1.png b/png/128/emoji_u1f469_1f9b0_200d_1f9b1.png deleted file mode 100644 index 3fb2c9801..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f9bc.png b/png/128/emoji_u1f469_1f9b0_200d_1f9bc.png deleted file mode 100644 index a8c0737c2..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_1f9bd.png b/png/128/emoji_u1f469_1f9b0_200d_1f9bd.png deleted file mode 100644 index 018a9717d..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_2695.png b/png/128/emoji_u1f469_1f9b0_200d_2695.png deleted file mode 100644 index 2845a395c..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_2696.png b/png/128/emoji_u1f469_1f9b0_200d_2696.png deleted file mode 100644 index d8ff06a67..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b0_200d_2708.png b/png/128/emoji_u1f469_1f9b0_200d_2708.png deleted file mode 100644 index cdc8f7f99..000000000 Binary files a/png/128/emoji_u1f469_1f9b0_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f33e.png b/png/128/emoji_u1f469_1f9b3_200d_1f33e.png deleted file mode 100644 index 5db36d132..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f373.png b/png/128/emoji_u1f469_1f9b3_200d_1f373.png deleted file mode 100644 index 482669ea2..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f393.png b/png/128/emoji_u1f469_1f9b3_200d_1f393.png deleted file mode 100644 index 288df04c7..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f3a4.png b/png/128/emoji_u1f469_1f9b3_200d_1f3a4.png deleted file mode 100644 index 4538abd3f..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f3a8.png b/png/128/emoji_u1f469_1f9b3_200d_1f3a8.png deleted file mode 100644 index e7ef9575f..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f3eb.png b/png/128/emoji_u1f469_1f9b3_200d_1f3eb.png deleted file mode 100644 index 0d323493f..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f3ed.png b/png/128/emoji_u1f469_1f9b3_200d_1f3ed.png deleted file mode 100644 index 833bc85ce..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f4bb.png b/png/128/emoji_u1f469_1f9b3_200d_1f4bb.png deleted file mode 100644 index ac517fee4..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f4bc.png b/png/128/emoji_u1f469_1f9b3_200d_1f4bc.png deleted file mode 100644 index 94232ab3e..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f527.png b/png/128/emoji_u1f469_1f9b3_200d_1f527.png deleted file mode 100644 index 8b5dca0d4..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f52c.png b/png/128/emoji_u1f469_1f9b3_200d_1f52c.png deleted file mode 100644 index 95e4b4a2d..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f680.png b/png/128/emoji_u1f469_1f9b3_200d_1f680.png deleted file mode 100644 index 908fc40b6..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f692.png b/png/128/emoji_u1f469_1f9b3_200d_1f692.png deleted file mode 100644 index 8b1954f14..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f9af.png b/png/128/emoji_u1f469_1f9b3_200d_1f9af.png deleted file mode 100644 index 9aad7a5ec..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f9b1.png b/png/128/emoji_u1f469_1f9b3_200d_1f9b1.png deleted file mode 100644 index 62b6069c2..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f9bc.png b/png/128/emoji_u1f469_1f9b3_200d_1f9bc.png deleted file mode 100644 index 35b1c9b95..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_1f9bd.png b/png/128/emoji_u1f469_1f9b3_200d_1f9bd.png deleted file mode 100644 index 52f8075b3..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_2695.png b/png/128/emoji_u1f469_1f9b3_200d_2695.png deleted file mode 100644 index 70feeccc8..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_2696.png b/png/128/emoji_u1f469_1f9b3_200d_2696.png deleted file mode 100644 index 8937dc9d7..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_1f9b3_200d_2708.png b/png/128/emoji_u1f469_1f9b3_200d_2708.png deleted file mode 100644 index 12a3c4158..000000000 Binary files a/png/128/emoji_u1f469_1f9b3_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f33e.png b/png/128/emoji_u1f469_200d_1f33e.png deleted file mode 100644 index 3c76c478a..000000000 Binary files a/png/128/emoji_u1f469_200d_1f33e.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f373.png b/png/128/emoji_u1f469_200d_1f373.png deleted file mode 100644 index 164ac970a..000000000 Binary files a/png/128/emoji_u1f469_200d_1f373.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f393.png b/png/128/emoji_u1f469_200d_1f393.png deleted file mode 100644 index dd392a05d..000000000 Binary files a/png/128/emoji_u1f469_200d_1f393.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f3a4.png b/png/128/emoji_u1f469_200d_1f3a4.png deleted file mode 100644 index e95bf595d..000000000 Binary files a/png/128/emoji_u1f469_200d_1f3a4.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f3a8.png b/png/128/emoji_u1f469_200d_1f3a8.png deleted file mode 100644 index fe0593b9f..000000000 Binary files a/png/128/emoji_u1f469_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f3eb.png b/png/128/emoji_u1f469_200d_1f3eb.png deleted file mode 100644 index 00c90225d..000000000 Binary files a/png/128/emoji_u1f469_200d_1f3eb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f3ed.png b/png/128/emoji_u1f469_200d_1f3ed.png deleted file mode 100644 index e9a965e5b..000000000 Binary files a/png/128/emoji_u1f469_200d_1f3ed.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f466.png b/png/128/emoji_u1f469_200d_1f466.png deleted file mode 100644 index 404d99c42..000000000 Binary files a/png/128/emoji_u1f469_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f466_200d_1f466.png b/png/128/emoji_u1f469_200d_1f466_200d_1f466.png deleted file mode 100644 index 4e9506b70..000000000 Binary files a/png/128/emoji_u1f469_200d_1f466_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f467.png b/png/128/emoji_u1f469_200d_1f467.png deleted file mode 100644 index 2ff66f2c5..000000000 Binary files a/png/128/emoji_u1f469_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f467_200d_1f466.png b/png/128/emoji_u1f469_200d_1f467_200d_1f466.png deleted file mode 100644 index 0e0966f82..000000000 Binary files a/png/128/emoji_u1f469_200d_1f467_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f467_200d_1f467.png b/png/128/emoji_u1f469_200d_1f467_200d_1f467.png deleted file mode 100644 index cbbd2b839..000000000 Binary files a/png/128/emoji_u1f469_200d_1f467_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f469_200d_1f466.png b/png/128/emoji_u1f469_200d_1f469_200d_1f466.png deleted file mode 100644 index 7b9ba673c..000000000 Binary files a/png/128/emoji_u1f469_200d_1f469_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f469_200d_1f466_200d_1f466.png b/png/128/emoji_u1f469_200d_1f469_200d_1f466_200d_1f466.png deleted file mode 100644 index 24440dc5a..000000000 Binary files a/png/128/emoji_u1f469_200d_1f469_200d_1f466_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f469_200d_1f467.png b/png/128/emoji_u1f469_200d_1f469_200d_1f467.png deleted file mode 100644 index b60d3cb4d..000000000 Binary files a/png/128/emoji_u1f469_200d_1f469_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f469_200d_1f467_200d_1f466.png b/png/128/emoji_u1f469_200d_1f469_200d_1f467_200d_1f466.png deleted file mode 100644 index 618c7e353..000000000 Binary files a/png/128/emoji_u1f469_200d_1f469_200d_1f467_200d_1f466.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f469_200d_1f467_200d_1f467.png b/png/128/emoji_u1f469_200d_1f469_200d_1f467_200d_1f467.png deleted file mode 100644 index b349562df..000000000 Binary files a/png/128/emoji_u1f469_200d_1f469_200d_1f467_200d_1f467.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f4bb.png b/png/128/emoji_u1f469_200d_1f4bb.png deleted file mode 100644 index 422c43f8d..000000000 Binary files a/png/128/emoji_u1f469_200d_1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f4bc.png b/png/128/emoji_u1f469_200d_1f4bc.png deleted file mode 100644 index 42817b1f7..000000000 Binary files a/png/128/emoji_u1f469_200d_1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f527.png b/png/128/emoji_u1f469_200d_1f527.png deleted file mode 100644 index 6c086f81b..000000000 Binary files a/png/128/emoji_u1f469_200d_1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f52c.png b/png/128/emoji_u1f469_200d_1f52c.png deleted file mode 100644 index 95e1c017b..000000000 Binary files a/png/128/emoji_u1f469_200d_1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f680.png b/png/128/emoji_u1f469_200d_1f680.png deleted file mode 100644 index ae4b26f9d..000000000 Binary files a/png/128/emoji_u1f469_200d_1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f692.png b/png/128/emoji_u1f469_200d_1f692.png deleted file mode 100644 index fd3789644..000000000 Binary files a/png/128/emoji_u1f469_200d_1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f9af.png b/png/128/emoji_u1f469_200d_1f9af.png deleted file mode 100644 index e210dd70c..000000000 Binary files a/png/128/emoji_u1f469_200d_1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f9b0.png b/png/128/emoji_u1f469_200d_1f9b0.png deleted file mode 100644 index 01f19cd3d..000000000 Binary files a/png/128/emoji_u1f469_200d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f9b1.png b/png/128/emoji_u1f469_200d_1f9b1.png deleted file mode 100644 index a032e652b..000000000 Binary files a/png/128/emoji_u1f469_200d_1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f9b2.png b/png/128/emoji_u1f469_200d_1f9b2.png deleted file mode 100644 index e9bb4d5c0..000000000 Binary files a/png/128/emoji_u1f469_200d_1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f9b3.png b/png/128/emoji_u1f469_200d_1f9b3.png deleted file mode 100644 index 5823a0f96..000000000 Binary files a/png/128/emoji_u1f469_200d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f9bc.png b/png/128/emoji_u1f469_200d_1f9bc.png deleted file mode 100644 index f88e1b1e9..000000000 Binary files a/png/128/emoji_u1f469_200d_1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_1f9bd.png b/png/128/emoji_u1f469_200d_1f9bd.png deleted file mode 100644 index 0e8f84234..000000000 Binary files a/png/128/emoji_u1f469_200d_1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_2695.png b/png/128/emoji_u1f469_200d_2695.png deleted file mode 100644 index 2610af34f..000000000 Binary files a/png/128/emoji_u1f469_200d_2695.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_2696.png b/png/128/emoji_u1f469_200d_2696.png deleted file mode 100644 index bf128c993..000000000 Binary files a/png/128/emoji_u1f469_200d_2696.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_2708.png b/png/128/emoji_u1f469_200d_2708.png deleted file mode 100644 index 22d226259..000000000 Binary files a/png/128/emoji_u1f469_200d_2708.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_2764_200d_1f468.png b/png/128/emoji_u1f469_200d_2764_200d_1f468.png deleted file mode 100644 index 05f0e3a35..000000000 Binary files a/png/128/emoji_u1f469_200d_2764_200d_1f468.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_2764_200d_1f469.png b/png/128/emoji_u1f469_200d_2764_200d_1f469.png deleted file mode 100644 index 7cf2fe9f5..000000000 Binary files a/png/128/emoji_u1f469_200d_2764_200d_1f469.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_2764_200d_1f48b_200d_1f468.png b/png/128/emoji_u1f469_200d_2764_200d_1f48b_200d_1f468.png deleted file mode 100644 index f6b582550..000000000 Binary files a/png/128/emoji_u1f469_200d_2764_200d_1f48b_200d_1f468.png and /dev/null differ diff --git a/png/128/emoji_u1f469_200d_2764_200d_1f48b_200d_1f469.png b/png/128/emoji_u1f469_200d_2764_200d_1f48b_200d_1f469.png deleted file mode 100644 index be60bfaba..000000000 Binary files a/png/128/emoji_u1f469_200d_2764_200d_1f48b_200d_1f469.png and /dev/null differ diff --git a/png/128/emoji_u1f46a.png b/png/128/emoji_u1f46a.png deleted file mode 100644 index 671bde030..000000000 Binary files a/png/128/emoji_u1f46a.png and /dev/null differ diff --git a/png/128/emoji_u1f46b.png b/png/128/emoji_u1f46b.png deleted file mode 100644 index 69769f51b..000000000 Binary files a/png/128/emoji_u1f46b.png and /dev/null differ diff --git a/png/128/emoji_u1f46b_1f3fb.png b/png/128/emoji_u1f46b_1f3fb.png deleted file mode 100644 index 19b2f9592..000000000 Binary files a/png/128/emoji_u1f46b_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f46b_1f3fc.png b/png/128/emoji_u1f46b_1f3fc.png deleted file mode 100644 index ae2994cd8..000000000 Binary files a/png/128/emoji_u1f46b_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f46b_1f3fd.png b/png/128/emoji_u1f46b_1f3fd.png deleted file mode 100644 index ded6adde9..000000000 Binary files a/png/128/emoji_u1f46b_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f46b_1f3fe.png b/png/128/emoji_u1f46b_1f3fe.png deleted file mode 100644 index e3275d503..000000000 Binary files a/png/128/emoji_u1f46b_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f46b_1f3ff.png b/png/128/emoji_u1f46b_1f3ff.png deleted file mode 100644 index ad6c5b0d7..000000000 Binary files a/png/128/emoji_u1f46b_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f46b_1f9b0.png b/png/128/emoji_u1f46b_1f9b0.png deleted file mode 100644 index 20e2bc38a..000000000 Binary files a/png/128/emoji_u1f46b_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f46b_1f9b3.png b/png/128/emoji_u1f46b_1f9b3.png deleted file mode 100644 index d991ac11c..000000000 Binary files a/png/128/emoji_u1f46b_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f46c.png b/png/128/emoji_u1f46c.png deleted file mode 100644 index 8818812ca..000000000 Binary files a/png/128/emoji_u1f46c.png and /dev/null differ diff --git a/png/128/emoji_u1f46c_1f3fb.png b/png/128/emoji_u1f46c_1f3fb.png deleted file mode 100644 index 6f265c7c7..000000000 Binary files a/png/128/emoji_u1f46c_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f46c_1f3fc.png b/png/128/emoji_u1f46c_1f3fc.png deleted file mode 100644 index 96dd57288..000000000 Binary files a/png/128/emoji_u1f46c_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f46c_1f3fd.png b/png/128/emoji_u1f46c_1f3fd.png deleted file mode 100644 index 26306e181..000000000 Binary files a/png/128/emoji_u1f46c_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f46c_1f3fe.png b/png/128/emoji_u1f46c_1f3fe.png deleted file mode 100644 index 4d0e12c1d..000000000 Binary files a/png/128/emoji_u1f46c_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f46c_1f3ff.png b/png/128/emoji_u1f46c_1f3ff.png deleted file mode 100644 index 467a1334f..000000000 Binary files a/png/128/emoji_u1f46c_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f46c_1f9b0.png b/png/128/emoji_u1f46c_1f9b0.png deleted file mode 100644 index 50d5381e5..000000000 Binary files a/png/128/emoji_u1f46c_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f46c_1f9b3.png b/png/128/emoji_u1f46c_1f9b3.png deleted file mode 100644 index 5352d136c..000000000 Binary files a/png/128/emoji_u1f46c_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f46d.png b/png/128/emoji_u1f46d.png deleted file mode 100644 index 90b90d0c3..000000000 Binary files a/png/128/emoji_u1f46d.png and /dev/null differ diff --git a/png/128/emoji_u1f46d_1f3fb.png b/png/128/emoji_u1f46d_1f3fb.png deleted file mode 100644 index fd973934a..000000000 Binary files a/png/128/emoji_u1f46d_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f46d_1f3fc.png b/png/128/emoji_u1f46d_1f3fc.png deleted file mode 100644 index 0b368cb07..000000000 Binary files a/png/128/emoji_u1f46d_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f46d_1f3fd.png b/png/128/emoji_u1f46d_1f3fd.png deleted file mode 100644 index 95adb2f2a..000000000 Binary files a/png/128/emoji_u1f46d_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f46d_1f3fe.png b/png/128/emoji_u1f46d_1f3fe.png deleted file mode 100644 index 049fe3116..000000000 Binary files a/png/128/emoji_u1f46d_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f46d_1f3ff.png b/png/128/emoji_u1f46d_1f3ff.png deleted file mode 100644 index f57bae5e4..000000000 Binary files a/png/128/emoji_u1f46d_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f46d_1f9b0.png b/png/128/emoji_u1f46d_1f9b0.png deleted file mode 100644 index aad8da2e1..000000000 Binary files a/png/128/emoji_u1f46d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f46d_1f9b3.png b/png/128/emoji_u1f46d_1f9b3.png deleted file mode 100644 index 0ee88f4e3..000000000 Binary files a/png/128/emoji_u1f46d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f46e.png b/png/128/emoji_u1f46e.png deleted file mode 100644 index 719187207..000000000 Binary files a/png/128/emoji_u1f46e.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fb.png b/png/128/emoji_u1f46e_1f3fb.png deleted file mode 100644 index a9bfb8c71..000000000 Binary files a/png/128/emoji_u1f46e_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fb_200d_2640.png b/png/128/emoji_u1f46e_1f3fb_200d_2640.png deleted file mode 100644 index 2936e25f1..000000000 Binary files a/png/128/emoji_u1f46e_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fb_200d_2642.png b/png/128/emoji_u1f46e_1f3fb_200d_2642.png deleted file mode 100644 index a9bfb8c71..000000000 Binary files a/png/128/emoji_u1f46e_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fc.png b/png/128/emoji_u1f46e_1f3fc.png deleted file mode 100644 index aa7887d0d..000000000 Binary files a/png/128/emoji_u1f46e_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fc_200d_2640.png b/png/128/emoji_u1f46e_1f3fc_200d_2640.png deleted file mode 100644 index 5630f2255..000000000 Binary files a/png/128/emoji_u1f46e_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fc_200d_2642.png b/png/128/emoji_u1f46e_1f3fc_200d_2642.png deleted file mode 100644 index aa7887d0d..000000000 Binary files a/png/128/emoji_u1f46e_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fd.png b/png/128/emoji_u1f46e_1f3fd.png deleted file mode 100644 index ccfb40964..000000000 Binary files a/png/128/emoji_u1f46e_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fd_200d_2640.png b/png/128/emoji_u1f46e_1f3fd_200d_2640.png deleted file mode 100644 index 89871ffd3..000000000 Binary files a/png/128/emoji_u1f46e_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fd_200d_2642.png b/png/128/emoji_u1f46e_1f3fd_200d_2642.png deleted file mode 100644 index ccfb40964..000000000 Binary files a/png/128/emoji_u1f46e_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fe.png b/png/128/emoji_u1f46e_1f3fe.png deleted file mode 100644 index dfac77e72..000000000 Binary files a/png/128/emoji_u1f46e_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fe_200d_2640.png b/png/128/emoji_u1f46e_1f3fe_200d_2640.png deleted file mode 100644 index 6cbc19326..000000000 Binary files a/png/128/emoji_u1f46e_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3fe_200d_2642.png b/png/128/emoji_u1f46e_1f3fe_200d_2642.png deleted file mode 100644 index dfac77e72..000000000 Binary files a/png/128/emoji_u1f46e_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3ff.png b/png/128/emoji_u1f46e_1f3ff.png deleted file mode 100644 index bfa76ef8d..000000000 Binary files a/png/128/emoji_u1f46e_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3ff_200d_2640.png b/png/128/emoji_u1f46e_1f3ff_200d_2640.png deleted file mode 100644 index e19165803..000000000 Binary files a/png/128/emoji_u1f46e_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f3ff_200d_2642.png b/png/128/emoji_u1f46e_1f3ff_200d_2642.png deleted file mode 100644 index bfa76ef8d..000000000 Binary files a/png/128/emoji_u1f46e_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f9b0.png b/png/128/emoji_u1f46e_1f9b0.png deleted file mode 100644 index a90af4f37..000000000 Binary files a/png/128/emoji_u1f46e_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f9b0_200d_2640.png b/png/128/emoji_u1f46e_1f9b0_200d_2640.png deleted file mode 100644 index 297360647..000000000 Binary files a/png/128/emoji_u1f46e_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f9b0_200d_2642.png b/png/128/emoji_u1f46e_1f9b0_200d_2642.png deleted file mode 100644 index a90af4f37..000000000 Binary files a/png/128/emoji_u1f46e_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f9b3.png b/png/128/emoji_u1f46e_1f9b3.png deleted file mode 100644 index 7682f91b3..000000000 Binary files a/png/128/emoji_u1f46e_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f9b3_200d_2640.png b/png/128/emoji_u1f46e_1f9b3_200d_2640.png deleted file mode 100644 index 8f539d6c4..000000000 Binary files a/png/128/emoji_u1f46e_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_1f9b3_200d_2642.png b/png/128/emoji_u1f46e_1f9b3_200d_2642.png deleted file mode 100644 index 7682f91b3..000000000 Binary files a/png/128/emoji_u1f46e_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_200d_2640.png b/png/128/emoji_u1f46e_200d_2640.png deleted file mode 100644 index 07eb1e582..000000000 Binary files a/png/128/emoji_u1f46e_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46e_200d_2642.png b/png/128/emoji_u1f46e_200d_2642.png deleted file mode 100644 index 719187207..000000000 Binary files a/png/128/emoji_u1f46e_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f46f.png b/png/128/emoji_u1f46f.png deleted file mode 100644 index 5c0bc2156..000000000 Binary files a/png/128/emoji_u1f46f.png and /dev/null differ diff --git a/png/128/emoji_u1f46f_200d_2640.png b/png/128/emoji_u1f46f_200d_2640.png deleted file mode 100644 index 5c0bc2156..000000000 Binary files a/png/128/emoji_u1f46f_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f46f_200d_2642.png b/png/128/emoji_u1f46f_200d_2642.png deleted file mode 100644 index 465cfbe48..000000000 Binary files a/png/128/emoji_u1f46f_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f470.png b/png/128/emoji_u1f470.png deleted file mode 100644 index d6829eeb6..000000000 Binary files a/png/128/emoji_u1f470.png and /dev/null differ diff --git a/png/128/emoji_u1f470_1f3fb.png b/png/128/emoji_u1f470_1f3fb.png deleted file mode 100644 index 315e6aee2..000000000 Binary files a/png/128/emoji_u1f470_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f470_1f3fc.png b/png/128/emoji_u1f470_1f3fc.png deleted file mode 100644 index d4f60222c..000000000 Binary files a/png/128/emoji_u1f470_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f470_1f3fd.png b/png/128/emoji_u1f470_1f3fd.png deleted file mode 100644 index db2772e9b..000000000 Binary files a/png/128/emoji_u1f470_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f470_1f3fe.png b/png/128/emoji_u1f470_1f3fe.png deleted file mode 100644 index 65cdcb9f6..000000000 Binary files a/png/128/emoji_u1f470_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f470_1f3ff.png b/png/128/emoji_u1f470_1f3ff.png deleted file mode 100644 index 774c30ffe..000000000 Binary files a/png/128/emoji_u1f470_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f470_1f9b0.png b/png/128/emoji_u1f470_1f9b0.png deleted file mode 100644 index deee556a6..000000000 Binary files a/png/128/emoji_u1f470_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f470_1f9b3.png b/png/128/emoji_u1f470_1f9b3.png deleted file mode 100644 index 7e7ed84de..000000000 Binary files a/png/128/emoji_u1f470_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f471.png b/png/128/emoji_u1f471.png deleted file mode 100644 index fe28e5f05..000000000 Binary files a/png/128/emoji_u1f471.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fb.png b/png/128/emoji_u1f471_1f3fb.png deleted file mode 100644 index 7494b7a20..000000000 Binary files a/png/128/emoji_u1f471_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fb_200d_2640.png b/png/128/emoji_u1f471_1f3fb_200d_2640.png deleted file mode 100644 index 87a6cadcc..000000000 Binary files a/png/128/emoji_u1f471_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fb_200d_2642.png b/png/128/emoji_u1f471_1f3fb_200d_2642.png deleted file mode 100644 index 7494b7a20..000000000 Binary files a/png/128/emoji_u1f471_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fc.png b/png/128/emoji_u1f471_1f3fc.png deleted file mode 100644 index e3978e722..000000000 Binary files a/png/128/emoji_u1f471_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fc_200d_2640.png b/png/128/emoji_u1f471_1f3fc_200d_2640.png deleted file mode 100644 index cd8c8feca..000000000 Binary files a/png/128/emoji_u1f471_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fc_200d_2642.png b/png/128/emoji_u1f471_1f3fc_200d_2642.png deleted file mode 100644 index e3978e722..000000000 Binary files a/png/128/emoji_u1f471_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fd.png b/png/128/emoji_u1f471_1f3fd.png deleted file mode 100644 index 712088d6d..000000000 Binary files a/png/128/emoji_u1f471_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fd_200d_2640.png b/png/128/emoji_u1f471_1f3fd_200d_2640.png deleted file mode 100644 index 283883b9c..000000000 Binary files a/png/128/emoji_u1f471_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fd_200d_2642.png b/png/128/emoji_u1f471_1f3fd_200d_2642.png deleted file mode 100644 index 712088d6d..000000000 Binary files a/png/128/emoji_u1f471_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fe.png b/png/128/emoji_u1f471_1f3fe.png deleted file mode 100644 index 6cf54eb73..000000000 Binary files a/png/128/emoji_u1f471_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fe_200d_2640.png b/png/128/emoji_u1f471_1f3fe_200d_2640.png deleted file mode 100644 index 7a6c1d14a..000000000 Binary files a/png/128/emoji_u1f471_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3fe_200d_2642.png b/png/128/emoji_u1f471_1f3fe_200d_2642.png deleted file mode 100644 index 6cf54eb73..000000000 Binary files a/png/128/emoji_u1f471_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3ff.png b/png/128/emoji_u1f471_1f3ff.png deleted file mode 100644 index d39ce55a6..000000000 Binary files a/png/128/emoji_u1f471_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3ff_200d_2640.png b/png/128/emoji_u1f471_1f3ff_200d_2640.png deleted file mode 100644 index 0fcb48e0b..000000000 Binary files a/png/128/emoji_u1f471_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f471_1f3ff_200d_2642.png b/png/128/emoji_u1f471_1f3ff_200d_2642.png deleted file mode 100644 index d39ce55a6..000000000 Binary files a/png/128/emoji_u1f471_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f471_200d_2640.png b/png/128/emoji_u1f471_200d_2640.png deleted file mode 100644 index 36b78966b..000000000 Binary files a/png/128/emoji_u1f471_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f471_200d_2642.png b/png/128/emoji_u1f471_200d_2642.png deleted file mode 100644 index fe28e5f05..000000000 Binary files a/png/128/emoji_u1f471_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f472.png b/png/128/emoji_u1f472.png deleted file mode 100644 index 163f6589d..000000000 Binary files a/png/128/emoji_u1f472.png and /dev/null differ diff --git a/png/128/emoji_u1f472_1f3fb.png b/png/128/emoji_u1f472_1f3fb.png deleted file mode 100644 index 9adbfecd6..000000000 Binary files a/png/128/emoji_u1f472_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f472_1f3fc.png b/png/128/emoji_u1f472_1f3fc.png deleted file mode 100644 index 742ce593b..000000000 Binary files a/png/128/emoji_u1f472_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f472_1f3fd.png b/png/128/emoji_u1f472_1f3fd.png deleted file mode 100644 index 936bdbad1..000000000 Binary files a/png/128/emoji_u1f472_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f472_1f3fe.png b/png/128/emoji_u1f472_1f3fe.png deleted file mode 100644 index 44064ab6d..000000000 Binary files a/png/128/emoji_u1f472_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f472_1f3ff.png b/png/128/emoji_u1f472_1f3ff.png deleted file mode 100644 index 8c5b3e277..000000000 Binary files a/png/128/emoji_u1f472_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f472_1f9b0.png b/png/128/emoji_u1f472_1f9b0.png deleted file mode 100644 index bb6b55cc4..000000000 Binary files a/png/128/emoji_u1f472_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f472_1f9b3.png b/png/128/emoji_u1f472_1f9b3.png deleted file mode 100644 index d3ecfcc9b..000000000 Binary files a/png/128/emoji_u1f472_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f473.png b/png/128/emoji_u1f473.png deleted file mode 100644 index 6acd8d0ad..000000000 Binary files a/png/128/emoji_u1f473.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fb.png b/png/128/emoji_u1f473_1f3fb.png deleted file mode 100644 index a3f3c59f0..000000000 Binary files a/png/128/emoji_u1f473_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fb_200d_2640.png b/png/128/emoji_u1f473_1f3fb_200d_2640.png deleted file mode 100644 index dcf99e6c3..000000000 Binary files a/png/128/emoji_u1f473_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fb_200d_2642.png b/png/128/emoji_u1f473_1f3fb_200d_2642.png deleted file mode 100644 index a3f3c59f0..000000000 Binary files a/png/128/emoji_u1f473_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fc.png b/png/128/emoji_u1f473_1f3fc.png deleted file mode 100644 index 307860bdb..000000000 Binary files a/png/128/emoji_u1f473_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fc_200d_2640.png b/png/128/emoji_u1f473_1f3fc_200d_2640.png deleted file mode 100644 index b8b240985..000000000 Binary files a/png/128/emoji_u1f473_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fc_200d_2642.png b/png/128/emoji_u1f473_1f3fc_200d_2642.png deleted file mode 100644 index 307860bdb..000000000 Binary files a/png/128/emoji_u1f473_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fd.png b/png/128/emoji_u1f473_1f3fd.png deleted file mode 100644 index 5c7ed42fc..000000000 Binary files a/png/128/emoji_u1f473_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fd_200d_2640.png b/png/128/emoji_u1f473_1f3fd_200d_2640.png deleted file mode 100644 index 40e19f548..000000000 Binary files a/png/128/emoji_u1f473_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fd_200d_2642.png b/png/128/emoji_u1f473_1f3fd_200d_2642.png deleted file mode 100644 index 5c7ed42fc..000000000 Binary files a/png/128/emoji_u1f473_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fe.png b/png/128/emoji_u1f473_1f3fe.png deleted file mode 100644 index 640c05682..000000000 Binary files a/png/128/emoji_u1f473_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fe_200d_2640.png b/png/128/emoji_u1f473_1f3fe_200d_2640.png deleted file mode 100644 index 14fe988b4..000000000 Binary files a/png/128/emoji_u1f473_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3fe_200d_2642.png b/png/128/emoji_u1f473_1f3fe_200d_2642.png deleted file mode 100644 index 640c05682..000000000 Binary files a/png/128/emoji_u1f473_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3ff.png b/png/128/emoji_u1f473_1f3ff.png deleted file mode 100644 index e9f955ce6..000000000 Binary files a/png/128/emoji_u1f473_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3ff_200d_2640.png b/png/128/emoji_u1f473_1f3ff_200d_2640.png deleted file mode 100644 index c5258f7ec..000000000 Binary files a/png/128/emoji_u1f473_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f3ff_200d_2642.png b/png/128/emoji_u1f473_1f3ff_200d_2642.png deleted file mode 100644 index e9f955ce6..000000000 Binary files a/png/128/emoji_u1f473_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f9b0.png b/png/128/emoji_u1f473_1f9b0.png deleted file mode 100644 index babbd8a4b..000000000 Binary files a/png/128/emoji_u1f473_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f9b0_200d_2640.png b/png/128/emoji_u1f473_1f9b0_200d_2640.png deleted file mode 100644 index 53b4d41bc..000000000 Binary files a/png/128/emoji_u1f473_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f9b3.png b/png/128/emoji_u1f473_1f9b3.png deleted file mode 100644 index f3db14240..000000000 Binary files a/png/128/emoji_u1f473_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f473_1f9b3_200d_2640.png b/png/128/emoji_u1f473_1f9b3_200d_2640.png deleted file mode 100644 index 708478675..000000000 Binary files a/png/128/emoji_u1f473_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_200d_2640.png b/png/128/emoji_u1f473_200d_2640.png deleted file mode 100644 index c9139dd9a..000000000 Binary files a/png/128/emoji_u1f473_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f473_200d_2642.png b/png/128/emoji_u1f473_200d_2642.png deleted file mode 100644 index 42340b987..000000000 Binary files a/png/128/emoji_u1f473_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f474.png b/png/128/emoji_u1f474.png deleted file mode 100644 index 231aa1ae4..000000000 Binary files a/png/128/emoji_u1f474.png and /dev/null differ diff --git a/png/128/emoji_u1f474_1f3fb.png b/png/128/emoji_u1f474_1f3fb.png deleted file mode 100644 index d5015ea95..000000000 Binary files a/png/128/emoji_u1f474_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f474_1f3fc.png b/png/128/emoji_u1f474_1f3fc.png deleted file mode 100644 index 4957501ea..000000000 Binary files a/png/128/emoji_u1f474_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f474_1f3fd.png b/png/128/emoji_u1f474_1f3fd.png deleted file mode 100644 index 57f92866b..000000000 Binary files a/png/128/emoji_u1f474_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f474_1f3fe.png b/png/128/emoji_u1f474_1f3fe.png deleted file mode 100644 index 90c9294c8..000000000 Binary files a/png/128/emoji_u1f474_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f474_1f3ff.png b/png/128/emoji_u1f474_1f3ff.png deleted file mode 100644 index 120ad29ed..000000000 Binary files a/png/128/emoji_u1f474_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f475.png b/png/128/emoji_u1f475.png deleted file mode 100644 index 709a5b590..000000000 Binary files a/png/128/emoji_u1f475.png and /dev/null differ diff --git a/png/128/emoji_u1f475_1f3fb.png b/png/128/emoji_u1f475_1f3fb.png deleted file mode 100644 index 2e3c51ead..000000000 Binary files a/png/128/emoji_u1f475_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f475_1f3fc.png b/png/128/emoji_u1f475_1f3fc.png deleted file mode 100644 index 4c13133ed..000000000 Binary files a/png/128/emoji_u1f475_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f475_1f3fd.png b/png/128/emoji_u1f475_1f3fd.png deleted file mode 100644 index b1929ff88..000000000 Binary files a/png/128/emoji_u1f475_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f475_1f3fe.png b/png/128/emoji_u1f475_1f3fe.png deleted file mode 100644 index 9c383e965..000000000 Binary files a/png/128/emoji_u1f475_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f475_1f3ff.png b/png/128/emoji_u1f475_1f3ff.png deleted file mode 100644 index 5b7666ecd..000000000 Binary files a/png/128/emoji_u1f475_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f476.png b/png/128/emoji_u1f476.png deleted file mode 100644 index 8c21df658..000000000 Binary files a/png/128/emoji_u1f476.png and /dev/null differ diff --git a/png/128/emoji_u1f476_1f3fb.png b/png/128/emoji_u1f476_1f3fb.png deleted file mode 100644 index 95a98ef33..000000000 Binary files a/png/128/emoji_u1f476_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f476_1f3fc.png b/png/128/emoji_u1f476_1f3fc.png deleted file mode 100644 index ffd6c466d..000000000 Binary files a/png/128/emoji_u1f476_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f476_1f3fd.png b/png/128/emoji_u1f476_1f3fd.png deleted file mode 100644 index 046a53f32..000000000 Binary files a/png/128/emoji_u1f476_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f476_1f3fe.png b/png/128/emoji_u1f476_1f3fe.png deleted file mode 100644 index 5d1148eda..000000000 Binary files a/png/128/emoji_u1f476_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f476_1f3ff.png b/png/128/emoji_u1f476_1f3ff.png deleted file mode 100644 index d38d29996..000000000 Binary files a/png/128/emoji_u1f476_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f476_1f9b0.png b/png/128/emoji_u1f476_1f9b0.png deleted file mode 100644 index f7205f546..000000000 Binary files a/png/128/emoji_u1f476_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f476_1f9b3.png b/png/128/emoji_u1f476_1f9b3.png deleted file mode 100644 index a056a7970..000000000 Binary files a/png/128/emoji_u1f476_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f477.png b/png/128/emoji_u1f477.png deleted file mode 100644 index 64e47986d..000000000 Binary files a/png/128/emoji_u1f477.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fb.png b/png/128/emoji_u1f477_1f3fb.png deleted file mode 100644 index 0cd03bb92..000000000 Binary files a/png/128/emoji_u1f477_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fb_200d_2640.png b/png/128/emoji_u1f477_1f3fb_200d_2640.png deleted file mode 100644 index 0b0809e00..000000000 Binary files a/png/128/emoji_u1f477_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fb_200d_2642.png b/png/128/emoji_u1f477_1f3fb_200d_2642.png deleted file mode 100644 index 0cd03bb92..000000000 Binary files a/png/128/emoji_u1f477_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fc.png b/png/128/emoji_u1f477_1f3fc.png deleted file mode 100644 index 4c9b4e8f8..000000000 Binary files a/png/128/emoji_u1f477_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fc_200d_2640.png b/png/128/emoji_u1f477_1f3fc_200d_2640.png deleted file mode 100644 index f804b1869..000000000 Binary files a/png/128/emoji_u1f477_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fc_200d_2642.png b/png/128/emoji_u1f477_1f3fc_200d_2642.png deleted file mode 100644 index 4c9b4e8f8..000000000 Binary files a/png/128/emoji_u1f477_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fd.png b/png/128/emoji_u1f477_1f3fd.png deleted file mode 100644 index 459ba2833..000000000 Binary files a/png/128/emoji_u1f477_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fd_200d_2640.png b/png/128/emoji_u1f477_1f3fd_200d_2640.png deleted file mode 100644 index 6cab66dc5..000000000 Binary files a/png/128/emoji_u1f477_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fd_200d_2642.png b/png/128/emoji_u1f477_1f3fd_200d_2642.png deleted file mode 100644 index 459ba2833..000000000 Binary files a/png/128/emoji_u1f477_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fe.png b/png/128/emoji_u1f477_1f3fe.png deleted file mode 100644 index 110ec7675..000000000 Binary files a/png/128/emoji_u1f477_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fe_200d_2640.png b/png/128/emoji_u1f477_1f3fe_200d_2640.png deleted file mode 100644 index 67d99ddfc..000000000 Binary files a/png/128/emoji_u1f477_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3fe_200d_2642.png b/png/128/emoji_u1f477_1f3fe_200d_2642.png deleted file mode 100644 index 110ec7675..000000000 Binary files a/png/128/emoji_u1f477_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3ff.png b/png/128/emoji_u1f477_1f3ff.png deleted file mode 100644 index 7860eed03..000000000 Binary files a/png/128/emoji_u1f477_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3ff_200d_2640.png b/png/128/emoji_u1f477_1f3ff_200d_2640.png deleted file mode 100644 index 230f745a1..000000000 Binary files a/png/128/emoji_u1f477_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f3ff_200d_2642.png b/png/128/emoji_u1f477_1f3ff_200d_2642.png deleted file mode 100644 index 7860eed03..000000000 Binary files a/png/128/emoji_u1f477_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f9b0.png b/png/128/emoji_u1f477_1f9b0.png deleted file mode 100644 index 5adaf476c..000000000 Binary files a/png/128/emoji_u1f477_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f9b0_200d_2640.png b/png/128/emoji_u1f477_1f9b0_200d_2640.png deleted file mode 100644 index 72e03e893..000000000 Binary files a/png/128/emoji_u1f477_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f9b0_200d_2642.png b/png/128/emoji_u1f477_1f9b0_200d_2642.png deleted file mode 100644 index 5adaf476c..000000000 Binary files a/png/128/emoji_u1f477_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f9b3.png b/png/128/emoji_u1f477_1f9b3.png deleted file mode 100644 index 0ce760cd0..000000000 Binary files a/png/128/emoji_u1f477_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f9b3_200d_2640.png b/png/128/emoji_u1f477_1f9b3_200d_2640.png deleted file mode 100644 index 9d1c44ff6..000000000 Binary files a/png/128/emoji_u1f477_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_1f9b3_200d_2642.png b/png/128/emoji_u1f477_1f9b3_200d_2642.png deleted file mode 100644 index 0ce760cd0..000000000 Binary files a/png/128/emoji_u1f477_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f477_200d_2640.png b/png/128/emoji_u1f477_200d_2640.png deleted file mode 100644 index 737e3ab16..000000000 Binary files a/png/128/emoji_u1f477_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f477_200d_2642.png b/png/128/emoji_u1f477_200d_2642.png deleted file mode 100644 index 64e47986d..000000000 Binary files a/png/128/emoji_u1f477_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f478.png b/png/128/emoji_u1f478.png deleted file mode 100644 index b1785cdfd..000000000 Binary files a/png/128/emoji_u1f478.png and /dev/null differ diff --git a/png/128/emoji_u1f478_1f3fb.png b/png/128/emoji_u1f478_1f3fb.png deleted file mode 100644 index 11940ced5..000000000 Binary files a/png/128/emoji_u1f478_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f478_1f3fc.png b/png/128/emoji_u1f478_1f3fc.png deleted file mode 100644 index 0b96206ca..000000000 Binary files a/png/128/emoji_u1f478_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f478_1f3fd.png b/png/128/emoji_u1f478_1f3fd.png deleted file mode 100644 index 6bdb433a8..000000000 Binary files a/png/128/emoji_u1f478_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f478_1f3fe.png b/png/128/emoji_u1f478_1f3fe.png deleted file mode 100644 index 77f1ee709..000000000 Binary files a/png/128/emoji_u1f478_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f478_1f3ff.png b/png/128/emoji_u1f478_1f3ff.png deleted file mode 100644 index a5e59262d..000000000 Binary files a/png/128/emoji_u1f478_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f478_1f9b0.png b/png/128/emoji_u1f478_1f9b0.png deleted file mode 100644 index ddeb82fa9..000000000 Binary files a/png/128/emoji_u1f478_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f478_1f9b3.png b/png/128/emoji_u1f478_1f9b3.png deleted file mode 100644 index dbffccfff..000000000 Binary files a/png/128/emoji_u1f478_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f479.png b/png/128/emoji_u1f479.png deleted file mode 100644 index d4d3401f8..000000000 Binary files a/png/128/emoji_u1f479.png and /dev/null differ diff --git a/png/128/emoji_u1f47a.png b/png/128/emoji_u1f47a.png deleted file mode 100644 index 42e02d54f..000000000 Binary files a/png/128/emoji_u1f47a.png and /dev/null differ diff --git a/png/128/emoji_u1f47b.png b/png/128/emoji_u1f47b.png deleted file mode 100644 index f1da41840..000000000 Binary files a/png/128/emoji_u1f47b.png and /dev/null differ diff --git a/png/128/emoji_u1f47c.png b/png/128/emoji_u1f47c.png deleted file mode 100644 index 9597295fd..000000000 Binary files a/png/128/emoji_u1f47c.png and /dev/null differ diff --git a/png/128/emoji_u1f47c_1f3fb.png b/png/128/emoji_u1f47c_1f3fb.png deleted file mode 100644 index 491d77b81..000000000 Binary files a/png/128/emoji_u1f47c_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f47c_1f3fc.png b/png/128/emoji_u1f47c_1f3fc.png deleted file mode 100644 index 2d4a5a154..000000000 Binary files a/png/128/emoji_u1f47c_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f47c_1f3fd.png b/png/128/emoji_u1f47c_1f3fd.png deleted file mode 100644 index 13f9e558e..000000000 Binary files a/png/128/emoji_u1f47c_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f47c_1f3fe.png b/png/128/emoji_u1f47c_1f3fe.png deleted file mode 100644 index f87afd76c..000000000 Binary files a/png/128/emoji_u1f47c_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f47c_1f3ff.png b/png/128/emoji_u1f47c_1f3ff.png deleted file mode 100644 index b58ce9737..000000000 Binary files a/png/128/emoji_u1f47c_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f47d.png b/png/128/emoji_u1f47d.png deleted file mode 100644 index d2c3a7bc4..000000000 Binary files a/png/128/emoji_u1f47d.png and /dev/null differ diff --git a/png/128/emoji_u1f47e.png b/png/128/emoji_u1f47e.png deleted file mode 100644 index c101d9783..000000000 Binary files a/png/128/emoji_u1f47e.png and /dev/null differ diff --git a/png/128/emoji_u1f47f.png b/png/128/emoji_u1f47f.png deleted file mode 100644 index 15be11053..000000000 Binary files a/png/128/emoji_u1f47f.png and /dev/null differ diff --git a/png/128/emoji_u1f480.png b/png/128/emoji_u1f480.png deleted file mode 100644 index fb55b408e..000000000 Binary files a/png/128/emoji_u1f480.png and /dev/null differ diff --git a/png/128/emoji_u1f481.png b/png/128/emoji_u1f481.png deleted file mode 100644 index 99634af5f..000000000 Binary files a/png/128/emoji_u1f481.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fb.png b/png/128/emoji_u1f481_1f3fb.png deleted file mode 100644 index 8f12ac653..000000000 Binary files a/png/128/emoji_u1f481_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fb_200d_2640.png b/png/128/emoji_u1f481_1f3fb_200d_2640.png deleted file mode 100644 index 8f12ac653..000000000 Binary files a/png/128/emoji_u1f481_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fb_200d_2642.png b/png/128/emoji_u1f481_1f3fb_200d_2642.png deleted file mode 100644 index f7bd4f02f..000000000 Binary files a/png/128/emoji_u1f481_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fc.png b/png/128/emoji_u1f481_1f3fc.png deleted file mode 100644 index f0db09229..000000000 Binary files a/png/128/emoji_u1f481_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fc_200d_2640.png b/png/128/emoji_u1f481_1f3fc_200d_2640.png deleted file mode 100644 index f0db09229..000000000 Binary files a/png/128/emoji_u1f481_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fc_200d_2642.png b/png/128/emoji_u1f481_1f3fc_200d_2642.png deleted file mode 100644 index f06606084..000000000 Binary files a/png/128/emoji_u1f481_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fd.png b/png/128/emoji_u1f481_1f3fd.png deleted file mode 100644 index 27337d4d3..000000000 Binary files a/png/128/emoji_u1f481_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fd_200d_2640.png b/png/128/emoji_u1f481_1f3fd_200d_2640.png deleted file mode 100644 index 27337d4d3..000000000 Binary files a/png/128/emoji_u1f481_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fd_200d_2642.png b/png/128/emoji_u1f481_1f3fd_200d_2642.png deleted file mode 100644 index e0f75272d..000000000 Binary files a/png/128/emoji_u1f481_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fe.png b/png/128/emoji_u1f481_1f3fe.png deleted file mode 100644 index 99e9341b8..000000000 Binary files a/png/128/emoji_u1f481_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fe_200d_2640.png b/png/128/emoji_u1f481_1f3fe_200d_2640.png deleted file mode 100644 index 99e9341b8..000000000 Binary files a/png/128/emoji_u1f481_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3fe_200d_2642.png b/png/128/emoji_u1f481_1f3fe_200d_2642.png deleted file mode 100644 index c8eac1ce9..000000000 Binary files a/png/128/emoji_u1f481_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3ff.png b/png/128/emoji_u1f481_1f3ff.png deleted file mode 100644 index 1ddaa6a20..000000000 Binary files a/png/128/emoji_u1f481_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3ff_200d_2640.png b/png/128/emoji_u1f481_1f3ff_200d_2640.png deleted file mode 100644 index 1ddaa6a20..000000000 Binary files a/png/128/emoji_u1f481_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f3ff_200d_2642.png b/png/128/emoji_u1f481_1f3ff_200d_2642.png deleted file mode 100644 index f7dbb9e04..000000000 Binary files a/png/128/emoji_u1f481_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f9b0.png b/png/128/emoji_u1f481_1f9b0.png deleted file mode 100644 index e103f957f..000000000 Binary files a/png/128/emoji_u1f481_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f9b0_200d_2640.png b/png/128/emoji_u1f481_1f9b0_200d_2640.png deleted file mode 100644 index e103f957f..000000000 Binary files a/png/128/emoji_u1f481_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f9b0_200d_2642.png b/png/128/emoji_u1f481_1f9b0_200d_2642.png deleted file mode 100644 index 0ea0ec728..000000000 Binary files a/png/128/emoji_u1f481_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f9b3.png b/png/128/emoji_u1f481_1f9b3.png deleted file mode 100644 index 4e60e2049..000000000 Binary files a/png/128/emoji_u1f481_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f9b3_200d_2640.png b/png/128/emoji_u1f481_1f9b3_200d_2640.png deleted file mode 100644 index 4e60e2049..000000000 Binary files a/png/128/emoji_u1f481_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_1f9b3_200d_2642.png b/png/128/emoji_u1f481_1f9b3_200d_2642.png deleted file mode 100644 index ec54f6eda..000000000 Binary files a/png/128/emoji_u1f481_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f481_200d_2640.png b/png/128/emoji_u1f481_200d_2640.png deleted file mode 100644 index 99634af5f..000000000 Binary files a/png/128/emoji_u1f481_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f481_200d_2642.png b/png/128/emoji_u1f481_200d_2642.png deleted file mode 100644 index 55f623e9b..000000000 Binary files a/png/128/emoji_u1f481_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482.png b/png/128/emoji_u1f482.png deleted file mode 100644 index ad081c36c..000000000 Binary files a/png/128/emoji_u1f482.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fb.png b/png/128/emoji_u1f482_1f3fb.png deleted file mode 100644 index 9e94d5ee7..000000000 Binary files a/png/128/emoji_u1f482_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fb_200d_2640.png b/png/128/emoji_u1f482_1f3fb_200d_2640.png deleted file mode 100644 index 1ee556cf5..000000000 Binary files a/png/128/emoji_u1f482_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fb_200d_2642.png b/png/128/emoji_u1f482_1f3fb_200d_2642.png deleted file mode 100644 index 9e94d5ee7..000000000 Binary files a/png/128/emoji_u1f482_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fc.png b/png/128/emoji_u1f482_1f3fc.png deleted file mode 100644 index 80debbd8f..000000000 Binary files a/png/128/emoji_u1f482_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fc_200d_2640.png b/png/128/emoji_u1f482_1f3fc_200d_2640.png deleted file mode 100644 index e3de86478..000000000 Binary files a/png/128/emoji_u1f482_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fc_200d_2642.png b/png/128/emoji_u1f482_1f3fc_200d_2642.png deleted file mode 100644 index 80debbd8f..000000000 Binary files a/png/128/emoji_u1f482_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fd.png b/png/128/emoji_u1f482_1f3fd.png deleted file mode 100644 index 66cc48ee7..000000000 Binary files a/png/128/emoji_u1f482_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fd_200d_2640.png b/png/128/emoji_u1f482_1f3fd_200d_2640.png deleted file mode 100644 index fc621df7c..000000000 Binary files a/png/128/emoji_u1f482_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fd_200d_2642.png b/png/128/emoji_u1f482_1f3fd_200d_2642.png deleted file mode 100644 index 66cc48ee7..000000000 Binary files a/png/128/emoji_u1f482_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fe.png b/png/128/emoji_u1f482_1f3fe.png deleted file mode 100644 index 75d924fc9..000000000 Binary files a/png/128/emoji_u1f482_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fe_200d_2640.png b/png/128/emoji_u1f482_1f3fe_200d_2640.png deleted file mode 100644 index f12424c86..000000000 Binary files a/png/128/emoji_u1f482_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3fe_200d_2642.png b/png/128/emoji_u1f482_1f3fe_200d_2642.png deleted file mode 100644 index 75d924fc9..000000000 Binary files a/png/128/emoji_u1f482_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3ff.png b/png/128/emoji_u1f482_1f3ff.png deleted file mode 100644 index 38c900957..000000000 Binary files a/png/128/emoji_u1f482_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3ff_200d_2640.png b/png/128/emoji_u1f482_1f3ff_200d_2640.png deleted file mode 100644 index dbc214db3..000000000 Binary files a/png/128/emoji_u1f482_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f3ff_200d_2642.png b/png/128/emoji_u1f482_1f3ff_200d_2642.png deleted file mode 100644 index 38c900957..000000000 Binary files a/png/128/emoji_u1f482_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f9b0.png b/png/128/emoji_u1f482_1f9b0.png deleted file mode 100644 index 4d55190b1..000000000 Binary files a/png/128/emoji_u1f482_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f9b0_200d_2640.png b/png/128/emoji_u1f482_1f9b0_200d_2640.png deleted file mode 100644 index 4fa758490..000000000 Binary files a/png/128/emoji_u1f482_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f9b0_200d_2642.png b/png/128/emoji_u1f482_1f9b0_200d_2642.png deleted file mode 100644 index 4d55190b1..000000000 Binary files a/png/128/emoji_u1f482_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f9b3.png b/png/128/emoji_u1f482_1f9b3.png deleted file mode 100644 index d5145f32f..000000000 Binary files a/png/128/emoji_u1f482_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f9b3_200d_2640.png b/png/128/emoji_u1f482_1f9b3_200d_2640.png deleted file mode 100644 index 6fc114778..000000000 Binary files a/png/128/emoji_u1f482_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_1f9b3_200d_2642.png b/png/128/emoji_u1f482_1f9b3_200d_2642.png deleted file mode 100644 index d5145f32f..000000000 Binary files a/png/128/emoji_u1f482_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f482_200d_2640.png b/png/128/emoji_u1f482_200d_2640.png deleted file mode 100644 index b6f2f1098..000000000 Binary files a/png/128/emoji_u1f482_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f482_200d_2642.png b/png/128/emoji_u1f482_200d_2642.png deleted file mode 100644 index ad081c36c..000000000 Binary files a/png/128/emoji_u1f482_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f483.png b/png/128/emoji_u1f483.png deleted file mode 100644 index abbe03c86..000000000 Binary files a/png/128/emoji_u1f483.png and /dev/null differ diff --git a/png/128/emoji_u1f483_1f3fb.png b/png/128/emoji_u1f483_1f3fb.png deleted file mode 100644 index 156c1201f..000000000 Binary files a/png/128/emoji_u1f483_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f483_1f3fc.png b/png/128/emoji_u1f483_1f3fc.png deleted file mode 100644 index 561466b2f..000000000 Binary files a/png/128/emoji_u1f483_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f483_1f3fd.png b/png/128/emoji_u1f483_1f3fd.png deleted file mode 100644 index 14ab78674..000000000 Binary files a/png/128/emoji_u1f483_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f483_1f3fe.png b/png/128/emoji_u1f483_1f3fe.png deleted file mode 100644 index ced760b91..000000000 Binary files a/png/128/emoji_u1f483_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f483_1f3ff.png b/png/128/emoji_u1f483_1f3ff.png deleted file mode 100644 index fac6313a3..000000000 Binary files a/png/128/emoji_u1f483_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f483_1f9b0.png b/png/128/emoji_u1f483_1f9b0.png deleted file mode 100644 index c5a61b99f..000000000 Binary files a/png/128/emoji_u1f483_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f483_1f9b3.png b/png/128/emoji_u1f483_1f9b3.png deleted file mode 100644 index f9d6a2f10..000000000 Binary files a/png/128/emoji_u1f483_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f484.png b/png/128/emoji_u1f484.png deleted file mode 100644 index df75831f5..000000000 Binary files a/png/128/emoji_u1f484.png and /dev/null differ diff --git a/png/128/emoji_u1f485.png b/png/128/emoji_u1f485.png deleted file mode 100644 index 2eac04d4c..000000000 Binary files a/png/128/emoji_u1f485.png and /dev/null differ diff --git a/png/128/emoji_u1f485_1f3fb.png b/png/128/emoji_u1f485_1f3fb.png deleted file mode 100644 index c4d8df2a4..000000000 Binary files a/png/128/emoji_u1f485_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f485_1f3fc.png b/png/128/emoji_u1f485_1f3fc.png deleted file mode 100644 index 855e13780..000000000 Binary files a/png/128/emoji_u1f485_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f485_1f3fd.png b/png/128/emoji_u1f485_1f3fd.png deleted file mode 100644 index 1bd80d66b..000000000 Binary files a/png/128/emoji_u1f485_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f485_1f3fe.png b/png/128/emoji_u1f485_1f3fe.png deleted file mode 100644 index e0e3875c9..000000000 Binary files a/png/128/emoji_u1f485_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f485_1f3ff.png b/png/128/emoji_u1f485_1f3ff.png deleted file mode 100644 index 9eed61e1d..000000000 Binary files a/png/128/emoji_u1f485_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f486.png b/png/128/emoji_u1f486.png deleted file mode 100644 index 6ff846b43..000000000 Binary files a/png/128/emoji_u1f486.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fb.png b/png/128/emoji_u1f486_1f3fb.png deleted file mode 100644 index 4a36cecd1..000000000 Binary files a/png/128/emoji_u1f486_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fb_200d_2640.png b/png/128/emoji_u1f486_1f3fb_200d_2640.png deleted file mode 100644 index 4a36cecd1..000000000 Binary files a/png/128/emoji_u1f486_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fb_200d_2642.png b/png/128/emoji_u1f486_1f3fb_200d_2642.png deleted file mode 100644 index 3dc7a0ecf..000000000 Binary files a/png/128/emoji_u1f486_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fc.png b/png/128/emoji_u1f486_1f3fc.png deleted file mode 100644 index 5a40fd6a0..000000000 Binary files a/png/128/emoji_u1f486_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fc_200d_2640.png b/png/128/emoji_u1f486_1f3fc_200d_2640.png deleted file mode 100644 index 5a40fd6a0..000000000 Binary files a/png/128/emoji_u1f486_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fc_200d_2642.png b/png/128/emoji_u1f486_1f3fc_200d_2642.png deleted file mode 100644 index f325ca31f..000000000 Binary files a/png/128/emoji_u1f486_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fd.png b/png/128/emoji_u1f486_1f3fd.png deleted file mode 100644 index 8bb1c2dbc..000000000 Binary files a/png/128/emoji_u1f486_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fd_200d_2640.png b/png/128/emoji_u1f486_1f3fd_200d_2640.png deleted file mode 100644 index 8bb1c2dbc..000000000 Binary files a/png/128/emoji_u1f486_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fd_200d_2642.png b/png/128/emoji_u1f486_1f3fd_200d_2642.png deleted file mode 100644 index 8c1f97167..000000000 Binary files a/png/128/emoji_u1f486_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fe.png b/png/128/emoji_u1f486_1f3fe.png deleted file mode 100644 index 9e13acbd1..000000000 Binary files a/png/128/emoji_u1f486_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fe_200d_2640.png b/png/128/emoji_u1f486_1f3fe_200d_2640.png deleted file mode 100644 index 9e13acbd1..000000000 Binary files a/png/128/emoji_u1f486_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3fe_200d_2642.png b/png/128/emoji_u1f486_1f3fe_200d_2642.png deleted file mode 100644 index 1358e26b4..000000000 Binary files a/png/128/emoji_u1f486_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3ff.png b/png/128/emoji_u1f486_1f3ff.png deleted file mode 100644 index c2f8300a6..000000000 Binary files a/png/128/emoji_u1f486_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3ff_200d_2640.png b/png/128/emoji_u1f486_1f3ff_200d_2640.png deleted file mode 100644 index c2f8300a6..000000000 Binary files a/png/128/emoji_u1f486_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f3ff_200d_2642.png b/png/128/emoji_u1f486_1f3ff_200d_2642.png deleted file mode 100644 index d8d151118..000000000 Binary files a/png/128/emoji_u1f486_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f9b0.png b/png/128/emoji_u1f486_1f9b0.png deleted file mode 100644 index f503512a7..000000000 Binary files a/png/128/emoji_u1f486_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f9b0_200d_2640.png b/png/128/emoji_u1f486_1f9b0_200d_2640.png deleted file mode 100644 index f503512a7..000000000 Binary files a/png/128/emoji_u1f486_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f9b0_200d_2642.png b/png/128/emoji_u1f486_1f9b0_200d_2642.png deleted file mode 100644 index 8464f6fd5..000000000 Binary files a/png/128/emoji_u1f486_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f9b3.png b/png/128/emoji_u1f486_1f9b3.png deleted file mode 100644 index 7464e0ac1..000000000 Binary files a/png/128/emoji_u1f486_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f9b3_200d_2640.png b/png/128/emoji_u1f486_1f9b3_200d_2640.png deleted file mode 100644 index 7464e0ac1..000000000 Binary files a/png/128/emoji_u1f486_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_1f9b3_200d_2642.png b/png/128/emoji_u1f486_1f9b3_200d_2642.png deleted file mode 100644 index b5dae8299..000000000 Binary files a/png/128/emoji_u1f486_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f486_200d_2640.png b/png/128/emoji_u1f486_200d_2640.png deleted file mode 100644 index 6ff846b43..000000000 Binary files a/png/128/emoji_u1f486_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f486_200d_2642.png b/png/128/emoji_u1f486_200d_2642.png deleted file mode 100644 index 9b5a7112b..000000000 Binary files a/png/128/emoji_u1f486_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487.png b/png/128/emoji_u1f487.png deleted file mode 100644 index 5af0c04ed..000000000 Binary files a/png/128/emoji_u1f487.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fb.png b/png/128/emoji_u1f487_1f3fb.png deleted file mode 100644 index 5235c61c9..000000000 Binary files a/png/128/emoji_u1f487_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fb_200d_2640.png b/png/128/emoji_u1f487_1f3fb_200d_2640.png deleted file mode 100644 index 5235c61c9..000000000 Binary files a/png/128/emoji_u1f487_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fb_200d_2642.png b/png/128/emoji_u1f487_1f3fb_200d_2642.png deleted file mode 100644 index f6f2f9614..000000000 Binary files a/png/128/emoji_u1f487_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fc.png b/png/128/emoji_u1f487_1f3fc.png deleted file mode 100644 index 6ef6ae246..000000000 Binary files a/png/128/emoji_u1f487_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fc_200d_2640.png b/png/128/emoji_u1f487_1f3fc_200d_2640.png deleted file mode 100644 index 6ef6ae246..000000000 Binary files a/png/128/emoji_u1f487_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fc_200d_2642.png b/png/128/emoji_u1f487_1f3fc_200d_2642.png deleted file mode 100644 index e41cf6416..000000000 Binary files a/png/128/emoji_u1f487_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fd.png b/png/128/emoji_u1f487_1f3fd.png deleted file mode 100644 index ab482b83e..000000000 Binary files a/png/128/emoji_u1f487_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fd_200d_2640.png b/png/128/emoji_u1f487_1f3fd_200d_2640.png deleted file mode 100644 index ab482b83e..000000000 Binary files a/png/128/emoji_u1f487_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fd_200d_2642.png b/png/128/emoji_u1f487_1f3fd_200d_2642.png deleted file mode 100644 index bbb4e50bc..000000000 Binary files a/png/128/emoji_u1f487_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fe.png b/png/128/emoji_u1f487_1f3fe.png deleted file mode 100644 index 7b1a6e009..000000000 Binary files a/png/128/emoji_u1f487_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fe_200d_2640.png b/png/128/emoji_u1f487_1f3fe_200d_2640.png deleted file mode 100644 index 7b1a6e009..000000000 Binary files a/png/128/emoji_u1f487_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3fe_200d_2642.png b/png/128/emoji_u1f487_1f3fe_200d_2642.png deleted file mode 100644 index f5581ae48..000000000 Binary files a/png/128/emoji_u1f487_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3ff.png b/png/128/emoji_u1f487_1f3ff.png deleted file mode 100644 index aab4c4652..000000000 Binary files a/png/128/emoji_u1f487_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3ff_200d_2640.png b/png/128/emoji_u1f487_1f3ff_200d_2640.png deleted file mode 100644 index aab4c4652..000000000 Binary files a/png/128/emoji_u1f487_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f3ff_200d_2642.png b/png/128/emoji_u1f487_1f3ff_200d_2642.png deleted file mode 100644 index becca4030..000000000 Binary files a/png/128/emoji_u1f487_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f9b0.png b/png/128/emoji_u1f487_1f9b0.png deleted file mode 100644 index 9cf0bef81..000000000 Binary files a/png/128/emoji_u1f487_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f9b0_200d_2640.png b/png/128/emoji_u1f487_1f9b0_200d_2640.png deleted file mode 100644 index 9cf0bef81..000000000 Binary files a/png/128/emoji_u1f487_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f9b0_200d_2642.png b/png/128/emoji_u1f487_1f9b0_200d_2642.png deleted file mode 100644 index c65969727..000000000 Binary files a/png/128/emoji_u1f487_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f9b3.png b/png/128/emoji_u1f487_1f9b3.png deleted file mode 100644 index 5381280a5..000000000 Binary files a/png/128/emoji_u1f487_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f9b3_200d_2640.png b/png/128/emoji_u1f487_1f9b3_200d_2640.png deleted file mode 100644 index 5381280a5..000000000 Binary files a/png/128/emoji_u1f487_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_1f9b3_200d_2642.png b/png/128/emoji_u1f487_1f9b3_200d_2642.png deleted file mode 100644 index 551fa87e3..000000000 Binary files a/png/128/emoji_u1f487_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f487_200d_2640.png b/png/128/emoji_u1f487_200d_2640.png deleted file mode 100644 index 5af0c04ed..000000000 Binary files a/png/128/emoji_u1f487_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f487_200d_2642.png b/png/128/emoji_u1f487_200d_2642.png deleted file mode 100644 index bfd5ae25d..000000000 Binary files a/png/128/emoji_u1f487_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f488.png b/png/128/emoji_u1f488.png deleted file mode 100644 index fbcba6a25..000000000 Binary files a/png/128/emoji_u1f488.png and /dev/null differ diff --git a/png/128/emoji_u1f489.png b/png/128/emoji_u1f489.png deleted file mode 100644 index d0284e314..000000000 Binary files a/png/128/emoji_u1f489.png and /dev/null differ diff --git a/png/128/emoji_u1f48a.png b/png/128/emoji_u1f48a.png deleted file mode 100644 index 60c380da2..000000000 Binary files a/png/128/emoji_u1f48a.png and /dev/null differ diff --git a/png/128/emoji_u1f48b.png b/png/128/emoji_u1f48b.png deleted file mode 100644 index 68232d02c..000000000 Binary files a/png/128/emoji_u1f48b.png and /dev/null differ diff --git a/png/128/emoji_u1f48c.png b/png/128/emoji_u1f48c.png deleted file mode 100644 index 1eb292a3a..000000000 Binary files a/png/128/emoji_u1f48c.png and /dev/null differ diff --git a/png/128/emoji_u1f48d.png b/png/128/emoji_u1f48d.png deleted file mode 100644 index b340ef847..000000000 Binary files a/png/128/emoji_u1f48d.png and /dev/null differ diff --git a/png/128/emoji_u1f48e.png b/png/128/emoji_u1f48e.png deleted file mode 100644 index 2177ce2f8..000000000 Binary files a/png/128/emoji_u1f48e.png and /dev/null differ diff --git a/png/128/emoji_u1f48f.png b/png/128/emoji_u1f48f.png deleted file mode 100644 index f6b582550..000000000 Binary files a/png/128/emoji_u1f48f.png and /dev/null differ diff --git a/png/128/emoji_u1f490.png b/png/128/emoji_u1f490.png deleted file mode 100644 index fff6da818..000000000 Binary files a/png/128/emoji_u1f490.png and /dev/null differ diff --git a/png/128/emoji_u1f491.png b/png/128/emoji_u1f491.png deleted file mode 100644 index 05f0e3a35..000000000 Binary files a/png/128/emoji_u1f491.png and /dev/null differ diff --git a/png/128/emoji_u1f492.png b/png/128/emoji_u1f492.png deleted file mode 100644 index 41b77e53f..000000000 Binary files a/png/128/emoji_u1f492.png and /dev/null differ diff --git a/png/128/emoji_u1f493.png b/png/128/emoji_u1f493.png deleted file mode 100644 index 264060bec..000000000 Binary files a/png/128/emoji_u1f493.png and /dev/null differ diff --git a/png/128/emoji_u1f494.png b/png/128/emoji_u1f494.png deleted file mode 100644 index 9b744242b..000000000 Binary files a/png/128/emoji_u1f494.png and /dev/null differ diff --git a/png/128/emoji_u1f495.png b/png/128/emoji_u1f495.png deleted file mode 100644 index 9f391efed..000000000 Binary files a/png/128/emoji_u1f495.png and /dev/null differ diff --git a/png/128/emoji_u1f496.png b/png/128/emoji_u1f496.png deleted file mode 100644 index d9ace1018..000000000 Binary files a/png/128/emoji_u1f496.png and /dev/null differ diff --git a/png/128/emoji_u1f497.png b/png/128/emoji_u1f497.png deleted file mode 100644 index 8df99177e..000000000 Binary files a/png/128/emoji_u1f497.png and /dev/null differ diff --git a/png/128/emoji_u1f498.png b/png/128/emoji_u1f498.png deleted file mode 100644 index b1b14abfb..000000000 Binary files a/png/128/emoji_u1f498.png and /dev/null differ diff --git a/png/128/emoji_u1f499.png b/png/128/emoji_u1f499.png deleted file mode 100644 index 7b8b2a163..000000000 Binary files a/png/128/emoji_u1f499.png and /dev/null differ diff --git a/png/128/emoji_u1f49a.png b/png/128/emoji_u1f49a.png deleted file mode 100644 index 7497eb744..000000000 Binary files a/png/128/emoji_u1f49a.png and /dev/null differ diff --git a/png/128/emoji_u1f49b.png b/png/128/emoji_u1f49b.png deleted file mode 100644 index b51abc414..000000000 Binary files a/png/128/emoji_u1f49b.png and /dev/null differ diff --git a/png/128/emoji_u1f49c.png b/png/128/emoji_u1f49c.png deleted file mode 100644 index 42e493923..000000000 Binary files a/png/128/emoji_u1f49c.png and /dev/null differ diff --git a/png/128/emoji_u1f49d.png b/png/128/emoji_u1f49d.png deleted file mode 100644 index 127e01d4d..000000000 Binary files a/png/128/emoji_u1f49d.png and /dev/null differ diff --git a/png/128/emoji_u1f49e.png b/png/128/emoji_u1f49e.png deleted file mode 100644 index a88a5e6c2..000000000 Binary files a/png/128/emoji_u1f49e.png and /dev/null differ diff --git a/png/128/emoji_u1f49f.png b/png/128/emoji_u1f49f.png deleted file mode 100644 index bf5cd5fdd..000000000 Binary files a/png/128/emoji_u1f49f.png and /dev/null differ diff --git a/png/128/emoji_u1f4a0.png b/png/128/emoji_u1f4a0.png deleted file mode 100644 index 0abbce60f..000000000 Binary files a/png/128/emoji_u1f4a0.png and /dev/null differ diff --git a/png/128/emoji_u1f4a1.png b/png/128/emoji_u1f4a1.png deleted file mode 100644 index 21e2a997b..000000000 Binary files a/png/128/emoji_u1f4a1.png and /dev/null differ diff --git a/png/128/emoji_u1f4a2.png b/png/128/emoji_u1f4a2.png deleted file mode 100644 index 8930cf3f3..000000000 Binary files a/png/128/emoji_u1f4a2.png and /dev/null differ diff --git a/png/128/emoji_u1f4a3.png b/png/128/emoji_u1f4a3.png deleted file mode 100644 index 19e63642e..000000000 Binary files a/png/128/emoji_u1f4a3.png and /dev/null differ diff --git a/png/128/emoji_u1f4a4.png b/png/128/emoji_u1f4a4.png deleted file mode 100644 index 1a8ba6016..000000000 Binary files a/png/128/emoji_u1f4a4.png and /dev/null differ diff --git a/png/128/emoji_u1f4a5.png b/png/128/emoji_u1f4a5.png deleted file mode 100644 index 2f7e6bdc0..000000000 Binary files a/png/128/emoji_u1f4a5.png and /dev/null differ diff --git a/png/128/emoji_u1f4a6.png b/png/128/emoji_u1f4a6.png deleted file mode 100644 index 5efe16e86..000000000 Binary files a/png/128/emoji_u1f4a6.png and /dev/null differ diff --git a/png/128/emoji_u1f4a7.png b/png/128/emoji_u1f4a7.png deleted file mode 100644 index 8b073a68b..000000000 Binary files a/png/128/emoji_u1f4a7.png and /dev/null differ diff --git a/png/128/emoji_u1f4a8.png b/png/128/emoji_u1f4a8.png deleted file mode 100644 index d876ec725..000000000 Binary files a/png/128/emoji_u1f4a8.png and /dev/null differ diff --git a/png/128/emoji_u1f4a9.png b/png/128/emoji_u1f4a9.png deleted file mode 100644 index c3d424dfc..000000000 Binary files a/png/128/emoji_u1f4a9.png and /dev/null differ diff --git a/png/128/emoji_u1f4aa.png b/png/128/emoji_u1f4aa.png deleted file mode 100644 index 26199c754..000000000 Binary files a/png/128/emoji_u1f4aa.png and /dev/null differ diff --git a/png/128/emoji_u1f4aa_1f3fb.png b/png/128/emoji_u1f4aa_1f3fb.png deleted file mode 100644 index 1600a8c8d..000000000 Binary files a/png/128/emoji_u1f4aa_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f4aa_1f3fc.png b/png/128/emoji_u1f4aa_1f3fc.png deleted file mode 100644 index c191608f9..000000000 Binary files a/png/128/emoji_u1f4aa_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f4aa_1f3fd.png b/png/128/emoji_u1f4aa_1f3fd.png deleted file mode 100644 index 1ceca972b..000000000 Binary files a/png/128/emoji_u1f4aa_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f4aa_1f3fe.png b/png/128/emoji_u1f4aa_1f3fe.png deleted file mode 100644 index 4388a8af7..000000000 Binary files a/png/128/emoji_u1f4aa_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f4aa_1f3ff.png b/png/128/emoji_u1f4aa_1f3ff.png deleted file mode 100644 index aba69273a..000000000 Binary files a/png/128/emoji_u1f4aa_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f4ab.png b/png/128/emoji_u1f4ab.png deleted file mode 100644 index 17ab769e1..000000000 Binary files a/png/128/emoji_u1f4ab.png and /dev/null differ diff --git a/png/128/emoji_u1f4ac.png b/png/128/emoji_u1f4ac.png deleted file mode 100644 index 481a4c2de..000000000 Binary files a/png/128/emoji_u1f4ac.png and /dev/null differ diff --git a/png/128/emoji_u1f4ad.png b/png/128/emoji_u1f4ad.png deleted file mode 100644 index 7dfbd7947..000000000 Binary files a/png/128/emoji_u1f4ad.png and /dev/null differ diff --git a/png/128/emoji_u1f4ae.png b/png/128/emoji_u1f4ae.png deleted file mode 100644 index f87071f41..000000000 Binary files a/png/128/emoji_u1f4ae.png and /dev/null differ diff --git a/png/128/emoji_u1f4af.png b/png/128/emoji_u1f4af.png deleted file mode 100644 index bdc4b4f19..000000000 Binary files a/png/128/emoji_u1f4af.png and /dev/null differ diff --git a/png/128/emoji_u1f4b0.png b/png/128/emoji_u1f4b0.png deleted file mode 100644 index 5252d7708..000000000 Binary files a/png/128/emoji_u1f4b0.png and /dev/null differ diff --git a/png/128/emoji_u1f4b1.png b/png/128/emoji_u1f4b1.png deleted file mode 100644 index f317d0c78..000000000 Binary files a/png/128/emoji_u1f4b1.png and /dev/null differ diff --git a/png/128/emoji_u1f4b2.png b/png/128/emoji_u1f4b2.png deleted file mode 100644 index c24cfa833..000000000 Binary files a/png/128/emoji_u1f4b2.png and /dev/null differ diff --git a/png/128/emoji_u1f4b3.png b/png/128/emoji_u1f4b3.png deleted file mode 100644 index df8711325..000000000 Binary files a/png/128/emoji_u1f4b3.png and /dev/null differ diff --git a/png/128/emoji_u1f4b4.png b/png/128/emoji_u1f4b4.png deleted file mode 100644 index 25b27bcba..000000000 Binary files a/png/128/emoji_u1f4b4.png and /dev/null differ diff --git a/png/128/emoji_u1f4b5.png b/png/128/emoji_u1f4b5.png deleted file mode 100644 index 68c8094a4..000000000 Binary files a/png/128/emoji_u1f4b5.png and /dev/null differ diff --git a/png/128/emoji_u1f4b6.png b/png/128/emoji_u1f4b6.png deleted file mode 100644 index ef7fc6431..000000000 Binary files a/png/128/emoji_u1f4b6.png and /dev/null differ diff --git a/png/128/emoji_u1f4b7.png b/png/128/emoji_u1f4b7.png deleted file mode 100644 index 8303b3f1d..000000000 Binary files a/png/128/emoji_u1f4b7.png and /dev/null differ diff --git a/png/128/emoji_u1f4b8.png b/png/128/emoji_u1f4b8.png deleted file mode 100644 index dc86d18b7..000000000 Binary files a/png/128/emoji_u1f4b8.png and /dev/null differ diff --git a/png/128/emoji_u1f4b9.png b/png/128/emoji_u1f4b9.png deleted file mode 100644 index a2b3cab22..000000000 Binary files a/png/128/emoji_u1f4b9.png and /dev/null differ diff --git a/png/128/emoji_u1f4ba.png b/png/128/emoji_u1f4ba.png deleted file mode 100644 index 79a43d50b..000000000 Binary files a/png/128/emoji_u1f4ba.png and /dev/null differ diff --git a/png/128/emoji_u1f4bb.png b/png/128/emoji_u1f4bb.png deleted file mode 100644 index f98e18a2c..000000000 Binary files a/png/128/emoji_u1f4bb.png and /dev/null differ diff --git a/png/128/emoji_u1f4bc.png b/png/128/emoji_u1f4bc.png deleted file mode 100644 index f3769868c..000000000 Binary files a/png/128/emoji_u1f4bc.png and /dev/null differ diff --git a/png/128/emoji_u1f4bd.png b/png/128/emoji_u1f4bd.png deleted file mode 100644 index 3864d1052..000000000 Binary files a/png/128/emoji_u1f4bd.png and /dev/null differ diff --git a/png/128/emoji_u1f4be.png b/png/128/emoji_u1f4be.png deleted file mode 100644 index 8b2ccac3a..000000000 Binary files a/png/128/emoji_u1f4be.png and /dev/null differ diff --git a/png/128/emoji_u1f4bf.png b/png/128/emoji_u1f4bf.png deleted file mode 100644 index ec7663946..000000000 Binary files a/png/128/emoji_u1f4bf.png and /dev/null differ diff --git a/png/128/emoji_u1f4c0.png b/png/128/emoji_u1f4c0.png deleted file mode 100644 index 86435af81..000000000 Binary files a/png/128/emoji_u1f4c0.png and /dev/null differ diff --git a/png/128/emoji_u1f4c1.png b/png/128/emoji_u1f4c1.png deleted file mode 100644 index b69ad6533..000000000 Binary files a/png/128/emoji_u1f4c1.png and /dev/null differ diff --git a/png/128/emoji_u1f4c2.png b/png/128/emoji_u1f4c2.png deleted file mode 100644 index 5c28dde09..000000000 Binary files a/png/128/emoji_u1f4c2.png and /dev/null differ diff --git a/png/128/emoji_u1f4c3.png b/png/128/emoji_u1f4c3.png deleted file mode 100644 index 743d2c1b1..000000000 Binary files a/png/128/emoji_u1f4c3.png and /dev/null differ diff --git a/png/128/emoji_u1f4c4.png b/png/128/emoji_u1f4c4.png deleted file mode 100644 index e7e285c6f..000000000 Binary files a/png/128/emoji_u1f4c4.png and /dev/null differ diff --git a/png/128/emoji_u1f4c5.png b/png/128/emoji_u1f4c5.png deleted file mode 100644 index 00886b7fb..000000000 Binary files a/png/128/emoji_u1f4c5.png and /dev/null differ diff --git a/png/128/emoji_u1f4c6.png b/png/128/emoji_u1f4c6.png deleted file mode 100644 index 8fa5506de..000000000 Binary files a/png/128/emoji_u1f4c6.png and /dev/null differ diff --git a/png/128/emoji_u1f4c7.png b/png/128/emoji_u1f4c7.png deleted file mode 100644 index 9dd14a170..000000000 Binary files a/png/128/emoji_u1f4c7.png and /dev/null differ diff --git a/png/128/emoji_u1f4c8.png b/png/128/emoji_u1f4c8.png deleted file mode 100644 index 7b1a6e3b4..000000000 Binary files a/png/128/emoji_u1f4c8.png and /dev/null differ diff --git a/png/128/emoji_u1f4c9.png b/png/128/emoji_u1f4c9.png deleted file mode 100644 index 391a1dcde..000000000 Binary files a/png/128/emoji_u1f4c9.png and /dev/null differ diff --git a/png/128/emoji_u1f4ca.png b/png/128/emoji_u1f4ca.png deleted file mode 100644 index 379079fe2..000000000 Binary files a/png/128/emoji_u1f4ca.png and /dev/null differ diff --git a/png/128/emoji_u1f4cb.png b/png/128/emoji_u1f4cb.png deleted file mode 100644 index 5c598ee0c..000000000 Binary files a/png/128/emoji_u1f4cb.png and /dev/null differ diff --git a/png/128/emoji_u1f4cc.png b/png/128/emoji_u1f4cc.png deleted file mode 100644 index fe19998fb..000000000 Binary files a/png/128/emoji_u1f4cc.png and /dev/null differ diff --git a/png/128/emoji_u1f4cd.png b/png/128/emoji_u1f4cd.png deleted file mode 100644 index 98236c0d4..000000000 Binary files a/png/128/emoji_u1f4cd.png and /dev/null differ diff --git a/png/128/emoji_u1f4ce.png b/png/128/emoji_u1f4ce.png deleted file mode 100644 index 013cdf095..000000000 Binary files a/png/128/emoji_u1f4ce.png and /dev/null differ diff --git a/png/128/emoji_u1f4cf.png b/png/128/emoji_u1f4cf.png deleted file mode 100644 index f26b5d8c0..000000000 Binary files a/png/128/emoji_u1f4cf.png and /dev/null differ diff --git a/png/128/emoji_u1f4d0.png b/png/128/emoji_u1f4d0.png deleted file mode 100644 index c7f315203..000000000 Binary files a/png/128/emoji_u1f4d0.png and /dev/null differ diff --git a/png/128/emoji_u1f4d1.png b/png/128/emoji_u1f4d1.png deleted file mode 100644 index 886767264..000000000 Binary files a/png/128/emoji_u1f4d1.png and /dev/null differ diff --git a/png/128/emoji_u1f4d2.png b/png/128/emoji_u1f4d2.png deleted file mode 100644 index 772881b73..000000000 Binary files a/png/128/emoji_u1f4d2.png and /dev/null differ diff --git a/png/128/emoji_u1f4d3.png b/png/128/emoji_u1f4d3.png deleted file mode 100644 index d86fc849b..000000000 Binary files a/png/128/emoji_u1f4d3.png and /dev/null differ diff --git a/png/128/emoji_u1f4d4.png b/png/128/emoji_u1f4d4.png deleted file mode 100644 index 9041aaf43..000000000 Binary files a/png/128/emoji_u1f4d4.png and /dev/null differ diff --git a/png/128/emoji_u1f4d5.png b/png/128/emoji_u1f4d5.png deleted file mode 100644 index 293221481..000000000 Binary files a/png/128/emoji_u1f4d5.png and /dev/null differ diff --git a/png/128/emoji_u1f4d6.png b/png/128/emoji_u1f4d6.png deleted file mode 100644 index 6b0a89776..000000000 Binary files a/png/128/emoji_u1f4d6.png and /dev/null differ diff --git a/png/128/emoji_u1f4d7.png b/png/128/emoji_u1f4d7.png deleted file mode 100644 index a362f97b3..000000000 Binary files a/png/128/emoji_u1f4d7.png and /dev/null differ diff --git a/png/128/emoji_u1f4d8.png b/png/128/emoji_u1f4d8.png deleted file mode 100644 index 8ad3bb332..000000000 Binary files a/png/128/emoji_u1f4d8.png and /dev/null differ diff --git a/png/128/emoji_u1f4d9.png b/png/128/emoji_u1f4d9.png deleted file mode 100644 index fff6da656..000000000 Binary files a/png/128/emoji_u1f4d9.png and /dev/null differ diff --git a/png/128/emoji_u1f4da.png b/png/128/emoji_u1f4da.png deleted file mode 100644 index ecb844e95..000000000 Binary files a/png/128/emoji_u1f4da.png and /dev/null differ diff --git a/png/128/emoji_u1f4db.png b/png/128/emoji_u1f4db.png deleted file mode 100644 index 7a287c06d..000000000 Binary files a/png/128/emoji_u1f4db.png and /dev/null differ diff --git a/png/128/emoji_u1f4dc.png b/png/128/emoji_u1f4dc.png deleted file mode 100644 index 78f5eec72..000000000 Binary files a/png/128/emoji_u1f4dc.png and /dev/null differ diff --git a/png/128/emoji_u1f4dd.png b/png/128/emoji_u1f4dd.png deleted file mode 100644 index 304d6a264..000000000 Binary files a/png/128/emoji_u1f4dd.png and /dev/null differ diff --git a/png/128/emoji_u1f4de.png b/png/128/emoji_u1f4de.png deleted file mode 100644 index 3f289ac84..000000000 Binary files a/png/128/emoji_u1f4de.png and /dev/null differ diff --git a/png/128/emoji_u1f4df.png b/png/128/emoji_u1f4df.png deleted file mode 100644 index c08b5e091..000000000 Binary files a/png/128/emoji_u1f4df.png and /dev/null differ diff --git a/png/128/emoji_u1f4e0.png b/png/128/emoji_u1f4e0.png deleted file mode 100644 index 4778f569c..000000000 Binary files a/png/128/emoji_u1f4e0.png and /dev/null differ diff --git a/png/128/emoji_u1f4e1.png b/png/128/emoji_u1f4e1.png deleted file mode 100644 index 2605594df..000000000 Binary files a/png/128/emoji_u1f4e1.png and /dev/null differ diff --git a/png/128/emoji_u1f4e2.png b/png/128/emoji_u1f4e2.png deleted file mode 100644 index 82f56d164..000000000 Binary files a/png/128/emoji_u1f4e2.png and /dev/null differ diff --git a/png/128/emoji_u1f4e3.png b/png/128/emoji_u1f4e3.png deleted file mode 100644 index 198fc1c54..000000000 Binary files a/png/128/emoji_u1f4e3.png and /dev/null differ diff --git a/png/128/emoji_u1f4e4.png b/png/128/emoji_u1f4e4.png deleted file mode 100644 index 4160c1316..000000000 Binary files a/png/128/emoji_u1f4e4.png and /dev/null differ diff --git a/png/128/emoji_u1f4e5.png b/png/128/emoji_u1f4e5.png deleted file mode 100644 index e909001d7..000000000 Binary files a/png/128/emoji_u1f4e5.png and /dev/null differ diff --git a/png/128/emoji_u1f4e6.png b/png/128/emoji_u1f4e6.png deleted file mode 100644 index 851116d6d..000000000 Binary files a/png/128/emoji_u1f4e6.png and /dev/null differ diff --git a/png/128/emoji_u1f4e7.png b/png/128/emoji_u1f4e7.png deleted file mode 100644 index de13da8a2..000000000 Binary files a/png/128/emoji_u1f4e7.png and /dev/null differ diff --git a/png/128/emoji_u1f4e8.png b/png/128/emoji_u1f4e8.png deleted file mode 100644 index d672e285a..000000000 Binary files a/png/128/emoji_u1f4e8.png and /dev/null differ diff --git a/png/128/emoji_u1f4e9.png b/png/128/emoji_u1f4e9.png deleted file mode 100644 index b7ac6f0af..000000000 Binary files a/png/128/emoji_u1f4e9.png and /dev/null differ diff --git a/png/128/emoji_u1f4ea.png b/png/128/emoji_u1f4ea.png deleted file mode 100644 index 27d2483a1..000000000 Binary files a/png/128/emoji_u1f4ea.png and /dev/null differ diff --git a/png/128/emoji_u1f4eb.png b/png/128/emoji_u1f4eb.png deleted file mode 100644 index 055c7e1f4..000000000 Binary files a/png/128/emoji_u1f4eb.png and /dev/null differ diff --git a/png/128/emoji_u1f4ec.png b/png/128/emoji_u1f4ec.png deleted file mode 100644 index 4607ab096..000000000 Binary files a/png/128/emoji_u1f4ec.png and /dev/null differ diff --git a/png/128/emoji_u1f4ed.png b/png/128/emoji_u1f4ed.png deleted file mode 100644 index 5db6a77f1..000000000 Binary files a/png/128/emoji_u1f4ed.png and /dev/null differ diff --git a/png/128/emoji_u1f4ee.png b/png/128/emoji_u1f4ee.png deleted file mode 100644 index 42465a32e..000000000 Binary files a/png/128/emoji_u1f4ee.png and /dev/null differ diff --git a/png/128/emoji_u1f4ef.png b/png/128/emoji_u1f4ef.png deleted file mode 100644 index f58756ba6..000000000 Binary files a/png/128/emoji_u1f4ef.png and /dev/null differ diff --git a/png/128/emoji_u1f4f0.png b/png/128/emoji_u1f4f0.png deleted file mode 100644 index 379b4ca72..000000000 Binary files a/png/128/emoji_u1f4f0.png and /dev/null differ diff --git a/png/128/emoji_u1f4f1.png b/png/128/emoji_u1f4f1.png deleted file mode 100644 index 1750a58ec..000000000 Binary files a/png/128/emoji_u1f4f1.png and /dev/null differ diff --git a/png/128/emoji_u1f4f2.png b/png/128/emoji_u1f4f2.png deleted file mode 100644 index 40db16d51..000000000 Binary files a/png/128/emoji_u1f4f2.png and /dev/null differ diff --git a/png/128/emoji_u1f4f3.png b/png/128/emoji_u1f4f3.png deleted file mode 100644 index 0ae082139..000000000 Binary files a/png/128/emoji_u1f4f3.png and /dev/null differ diff --git a/png/128/emoji_u1f4f4.png b/png/128/emoji_u1f4f4.png deleted file mode 100644 index 62b3ede18..000000000 Binary files a/png/128/emoji_u1f4f4.png and /dev/null differ diff --git a/png/128/emoji_u1f4f5.png b/png/128/emoji_u1f4f5.png deleted file mode 100644 index dc3af8bfa..000000000 Binary files a/png/128/emoji_u1f4f5.png and /dev/null differ diff --git a/png/128/emoji_u1f4f6.png b/png/128/emoji_u1f4f6.png deleted file mode 100644 index 9c407ebfb..000000000 Binary files a/png/128/emoji_u1f4f6.png and /dev/null differ diff --git a/png/128/emoji_u1f4f7.png b/png/128/emoji_u1f4f7.png deleted file mode 100644 index 4a7fcb189..000000000 Binary files a/png/128/emoji_u1f4f7.png and /dev/null differ diff --git a/png/128/emoji_u1f4f8.png b/png/128/emoji_u1f4f8.png deleted file mode 100644 index 6be84e39b..000000000 Binary files a/png/128/emoji_u1f4f8.png and /dev/null differ diff --git a/png/128/emoji_u1f4f9.png b/png/128/emoji_u1f4f9.png deleted file mode 100644 index 74f5885d3..000000000 Binary files a/png/128/emoji_u1f4f9.png and /dev/null differ diff --git a/png/128/emoji_u1f4fa.png b/png/128/emoji_u1f4fa.png deleted file mode 100644 index 1641be170..000000000 Binary files a/png/128/emoji_u1f4fa.png and /dev/null differ diff --git a/png/128/emoji_u1f4fb.png b/png/128/emoji_u1f4fb.png deleted file mode 100644 index e230ee20d..000000000 Binary files a/png/128/emoji_u1f4fb.png and /dev/null differ diff --git a/png/128/emoji_u1f4fc.png b/png/128/emoji_u1f4fc.png deleted file mode 100644 index 8a246bb9c..000000000 Binary files a/png/128/emoji_u1f4fc.png and /dev/null differ diff --git a/png/128/emoji_u1f4fd.png b/png/128/emoji_u1f4fd.png deleted file mode 100644 index d1751c0ce..000000000 Binary files a/png/128/emoji_u1f4fd.png and /dev/null differ diff --git a/png/128/emoji_u1f4ff.png b/png/128/emoji_u1f4ff.png deleted file mode 100644 index ff96ae043..000000000 Binary files a/png/128/emoji_u1f4ff.png and /dev/null differ diff --git a/png/128/emoji_u1f500.png b/png/128/emoji_u1f500.png deleted file mode 100644 index 15053dd6e..000000000 Binary files a/png/128/emoji_u1f500.png and /dev/null differ diff --git a/png/128/emoji_u1f501.png b/png/128/emoji_u1f501.png deleted file mode 100644 index 247b5a19d..000000000 Binary files a/png/128/emoji_u1f501.png and /dev/null differ diff --git a/png/128/emoji_u1f502.png b/png/128/emoji_u1f502.png deleted file mode 100644 index 15ee1c28d..000000000 Binary files a/png/128/emoji_u1f502.png and /dev/null differ diff --git a/png/128/emoji_u1f503.png b/png/128/emoji_u1f503.png deleted file mode 100644 index ce34aad7e..000000000 Binary files a/png/128/emoji_u1f503.png and /dev/null differ diff --git a/png/128/emoji_u1f504.png b/png/128/emoji_u1f504.png deleted file mode 100644 index 95021e7f5..000000000 Binary files a/png/128/emoji_u1f504.png and /dev/null differ diff --git a/png/128/emoji_u1f505.png b/png/128/emoji_u1f505.png deleted file mode 100644 index 0128cb861..000000000 Binary files a/png/128/emoji_u1f505.png and /dev/null differ diff --git a/png/128/emoji_u1f506.png b/png/128/emoji_u1f506.png deleted file mode 100644 index 4aea09f0a..000000000 Binary files a/png/128/emoji_u1f506.png and /dev/null differ diff --git a/png/128/emoji_u1f507.png b/png/128/emoji_u1f507.png deleted file mode 100644 index 2634ce730..000000000 Binary files a/png/128/emoji_u1f507.png and /dev/null differ diff --git a/png/128/emoji_u1f508.png b/png/128/emoji_u1f508.png deleted file mode 100644 index 7b872e638..000000000 Binary files a/png/128/emoji_u1f508.png and /dev/null differ diff --git a/png/128/emoji_u1f509.png b/png/128/emoji_u1f509.png deleted file mode 100644 index 08f1fc6db..000000000 Binary files a/png/128/emoji_u1f509.png and /dev/null differ diff --git a/png/128/emoji_u1f50a.png b/png/128/emoji_u1f50a.png deleted file mode 100644 index 76b08346c..000000000 Binary files a/png/128/emoji_u1f50a.png and /dev/null differ diff --git a/png/128/emoji_u1f50b.png b/png/128/emoji_u1f50b.png deleted file mode 100644 index 03d1a4ce4..000000000 Binary files a/png/128/emoji_u1f50b.png and /dev/null differ diff --git a/png/128/emoji_u1f50c.png b/png/128/emoji_u1f50c.png deleted file mode 100644 index 322f6f34c..000000000 Binary files a/png/128/emoji_u1f50c.png and /dev/null differ diff --git a/png/128/emoji_u1f50d.png b/png/128/emoji_u1f50d.png deleted file mode 100644 index 09d0faf80..000000000 Binary files a/png/128/emoji_u1f50d.png and /dev/null differ diff --git a/png/128/emoji_u1f50e.png b/png/128/emoji_u1f50e.png deleted file mode 100644 index ca44b2be7..000000000 Binary files a/png/128/emoji_u1f50e.png and /dev/null differ diff --git a/png/128/emoji_u1f50f.png b/png/128/emoji_u1f50f.png deleted file mode 100644 index 461eabb01..000000000 Binary files a/png/128/emoji_u1f50f.png and /dev/null differ diff --git a/png/128/emoji_u1f510.png b/png/128/emoji_u1f510.png deleted file mode 100644 index 5eff2d5ae..000000000 Binary files a/png/128/emoji_u1f510.png and /dev/null differ diff --git a/png/128/emoji_u1f511.png b/png/128/emoji_u1f511.png deleted file mode 100644 index 34cdb3c33..000000000 Binary files a/png/128/emoji_u1f511.png and /dev/null differ diff --git a/png/128/emoji_u1f512.png b/png/128/emoji_u1f512.png deleted file mode 100644 index 3dc909068..000000000 Binary files a/png/128/emoji_u1f512.png and /dev/null differ diff --git a/png/128/emoji_u1f513.png b/png/128/emoji_u1f513.png deleted file mode 100644 index 8eeed4999..000000000 Binary files a/png/128/emoji_u1f513.png and /dev/null differ diff --git a/png/128/emoji_u1f514.png b/png/128/emoji_u1f514.png deleted file mode 100644 index 4d08b6a05..000000000 Binary files a/png/128/emoji_u1f514.png and /dev/null differ diff --git a/png/128/emoji_u1f515.png b/png/128/emoji_u1f515.png deleted file mode 100644 index 225b9cc93..000000000 Binary files a/png/128/emoji_u1f515.png and /dev/null differ diff --git a/png/128/emoji_u1f516.png b/png/128/emoji_u1f516.png deleted file mode 100644 index 2bd0b2928..000000000 Binary files a/png/128/emoji_u1f516.png and /dev/null differ diff --git a/png/128/emoji_u1f517.png b/png/128/emoji_u1f517.png deleted file mode 100644 index 2679abd66..000000000 Binary files a/png/128/emoji_u1f517.png and /dev/null differ diff --git a/png/128/emoji_u1f518.png b/png/128/emoji_u1f518.png deleted file mode 100644 index 026dd90a2..000000000 Binary files a/png/128/emoji_u1f518.png and /dev/null differ diff --git a/png/128/emoji_u1f519.png b/png/128/emoji_u1f519.png deleted file mode 100644 index 62179b783..000000000 Binary files a/png/128/emoji_u1f519.png and /dev/null differ diff --git a/png/128/emoji_u1f51a.png b/png/128/emoji_u1f51a.png deleted file mode 100644 index 88ba6e427..000000000 Binary files a/png/128/emoji_u1f51a.png and /dev/null differ diff --git a/png/128/emoji_u1f51b.png b/png/128/emoji_u1f51b.png deleted file mode 100644 index 85a709298..000000000 Binary files a/png/128/emoji_u1f51b.png and /dev/null differ diff --git a/png/128/emoji_u1f51c.png b/png/128/emoji_u1f51c.png deleted file mode 100644 index 26aeae30f..000000000 Binary files a/png/128/emoji_u1f51c.png and /dev/null differ diff --git a/png/128/emoji_u1f51d.png b/png/128/emoji_u1f51d.png deleted file mode 100644 index 299fd2b26..000000000 Binary files a/png/128/emoji_u1f51d.png and /dev/null differ diff --git a/png/128/emoji_u1f51e.png b/png/128/emoji_u1f51e.png deleted file mode 100644 index f514fff69..000000000 Binary files a/png/128/emoji_u1f51e.png and /dev/null differ diff --git a/png/128/emoji_u1f51f.png b/png/128/emoji_u1f51f.png deleted file mode 100644 index a5f0cda0d..000000000 Binary files a/png/128/emoji_u1f51f.png and /dev/null differ diff --git a/png/128/emoji_u1f520.png b/png/128/emoji_u1f520.png deleted file mode 100644 index 202935856..000000000 Binary files a/png/128/emoji_u1f520.png and /dev/null differ diff --git a/png/128/emoji_u1f521.png b/png/128/emoji_u1f521.png deleted file mode 100644 index 2f873dc51..000000000 Binary files a/png/128/emoji_u1f521.png and /dev/null differ diff --git a/png/128/emoji_u1f522.png b/png/128/emoji_u1f522.png deleted file mode 100644 index 59c0a63f8..000000000 Binary files a/png/128/emoji_u1f522.png and /dev/null differ diff --git a/png/128/emoji_u1f523.png b/png/128/emoji_u1f523.png deleted file mode 100644 index d3f83766c..000000000 Binary files a/png/128/emoji_u1f523.png and /dev/null differ diff --git a/png/128/emoji_u1f524.png b/png/128/emoji_u1f524.png deleted file mode 100644 index 85c71e886..000000000 Binary files a/png/128/emoji_u1f524.png and /dev/null differ diff --git a/png/128/emoji_u1f525.png b/png/128/emoji_u1f525.png deleted file mode 100644 index 93b6d308f..000000000 Binary files a/png/128/emoji_u1f525.png and /dev/null differ diff --git a/png/128/emoji_u1f526.png b/png/128/emoji_u1f526.png deleted file mode 100644 index ccfcbf859..000000000 Binary files a/png/128/emoji_u1f526.png and /dev/null differ diff --git a/png/128/emoji_u1f527.png b/png/128/emoji_u1f527.png deleted file mode 100644 index a430e2f3f..000000000 Binary files a/png/128/emoji_u1f527.png and /dev/null differ diff --git a/png/128/emoji_u1f528.png b/png/128/emoji_u1f528.png deleted file mode 100644 index 7385a5334..000000000 Binary files a/png/128/emoji_u1f528.png and /dev/null differ diff --git a/png/128/emoji_u1f529.png b/png/128/emoji_u1f529.png deleted file mode 100644 index d03922e97..000000000 Binary files a/png/128/emoji_u1f529.png and /dev/null differ diff --git a/png/128/emoji_u1f52a.png b/png/128/emoji_u1f52a.png deleted file mode 100644 index 2d30d6d28..000000000 Binary files a/png/128/emoji_u1f52a.png and /dev/null differ diff --git a/png/128/emoji_u1f52b.png b/png/128/emoji_u1f52b.png deleted file mode 100644 index 157108653..000000000 Binary files a/png/128/emoji_u1f52b.png and /dev/null differ diff --git a/png/128/emoji_u1f52b_200d_1f4a3.png b/png/128/emoji_u1f52b_200d_1f4a3.png deleted file mode 100644 index 2de87be6d..000000000 Binary files a/png/128/emoji_u1f52b_200d_1f4a3.png and /dev/null differ diff --git a/png/128/emoji_u1f52b_200d_2063.png b/png/128/emoji_u1f52b_200d_2063.png deleted file mode 100644 index 116c0e80b..000000000 Binary files a/png/128/emoji_u1f52b_200d_2063.png and /dev/null differ diff --git a/png/128/emoji_u1f52c.png b/png/128/emoji_u1f52c.png deleted file mode 100644 index 68c9bff2e..000000000 Binary files a/png/128/emoji_u1f52c.png and /dev/null differ diff --git a/png/128/emoji_u1f52d.png b/png/128/emoji_u1f52d.png deleted file mode 100644 index 2afa3a704..000000000 Binary files a/png/128/emoji_u1f52d.png and /dev/null differ diff --git a/png/128/emoji_u1f52e.png b/png/128/emoji_u1f52e.png deleted file mode 100644 index 1f9ab946e..000000000 Binary files a/png/128/emoji_u1f52e.png and /dev/null differ diff --git a/png/128/emoji_u1f52f.png b/png/128/emoji_u1f52f.png deleted file mode 100644 index 5b2f00ed9..000000000 Binary files a/png/128/emoji_u1f52f.png and /dev/null differ diff --git a/png/128/emoji_u1f530.png b/png/128/emoji_u1f530.png deleted file mode 100644 index a9b47de13..000000000 Binary files a/png/128/emoji_u1f530.png and /dev/null differ diff --git a/png/128/emoji_u1f531.png b/png/128/emoji_u1f531.png deleted file mode 100644 index 84d07467b..000000000 Binary files a/png/128/emoji_u1f531.png and /dev/null differ diff --git a/png/128/emoji_u1f532.png b/png/128/emoji_u1f532.png deleted file mode 100644 index 678fb0b60..000000000 Binary files a/png/128/emoji_u1f532.png and /dev/null differ diff --git a/png/128/emoji_u1f533.png b/png/128/emoji_u1f533.png deleted file mode 100644 index e9358e019..000000000 Binary files a/png/128/emoji_u1f533.png and /dev/null differ diff --git a/png/128/emoji_u1f534.png b/png/128/emoji_u1f534.png deleted file mode 100644 index 045460232..000000000 Binary files a/png/128/emoji_u1f534.png and /dev/null differ diff --git a/png/128/emoji_u1f535.png b/png/128/emoji_u1f535.png deleted file mode 100644 index 8ce33e722..000000000 Binary files a/png/128/emoji_u1f535.png and /dev/null differ diff --git a/png/128/emoji_u1f536.png b/png/128/emoji_u1f536.png deleted file mode 100644 index 3e4eeda2f..000000000 Binary files a/png/128/emoji_u1f536.png and /dev/null differ diff --git a/png/128/emoji_u1f537.png b/png/128/emoji_u1f537.png deleted file mode 100644 index daca0f62f..000000000 Binary files a/png/128/emoji_u1f537.png and /dev/null differ diff --git a/png/128/emoji_u1f538.png b/png/128/emoji_u1f538.png deleted file mode 100644 index 9f08f31e5..000000000 Binary files a/png/128/emoji_u1f538.png and /dev/null differ diff --git a/png/128/emoji_u1f539.png b/png/128/emoji_u1f539.png deleted file mode 100644 index cbb514b32..000000000 Binary files a/png/128/emoji_u1f539.png and /dev/null differ diff --git a/png/128/emoji_u1f53a.png b/png/128/emoji_u1f53a.png deleted file mode 100644 index 0f317542e..000000000 Binary files a/png/128/emoji_u1f53a.png and /dev/null differ diff --git a/png/128/emoji_u1f53b.png b/png/128/emoji_u1f53b.png deleted file mode 100644 index 490bb0b8b..000000000 Binary files a/png/128/emoji_u1f53b.png and /dev/null differ diff --git a/png/128/emoji_u1f53c.png b/png/128/emoji_u1f53c.png deleted file mode 100644 index 10dc5521a..000000000 Binary files a/png/128/emoji_u1f53c.png and /dev/null differ diff --git a/png/128/emoji_u1f53d.png b/png/128/emoji_u1f53d.png deleted file mode 100644 index 86305540e..000000000 Binary files a/png/128/emoji_u1f53d.png and /dev/null differ diff --git a/png/128/emoji_u1f549.png b/png/128/emoji_u1f549.png deleted file mode 100644 index 26fbe7346..000000000 Binary files a/png/128/emoji_u1f549.png and /dev/null differ diff --git a/png/128/emoji_u1f54a.png b/png/128/emoji_u1f54a.png deleted file mode 100644 index a734c6815..000000000 Binary files a/png/128/emoji_u1f54a.png and /dev/null differ diff --git a/png/128/emoji_u1f54b.png b/png/128/emoji_u1f54b.png deleted file mode 100644 index 1daf37d51..000000000 Binary files a/png/128/emoji_u1f54b.png and /dev/null differ diff --git a/png/128/emoji_u1f54c.png b/png/128/emoji_u1f54c.png deleted file mode 100644 index bf8671dc1..000000000 Binary files a/png/128/emoji_u1f54c.png and /dev/null differ diff --git a/png/128/emoji_u1f54d.png b/png/128/emoji_u1f54d.png deleted file mode 100644 index cd2d4ce0a..000000000 Binary files a/png/128/emoji_u1f54d.png and /dev/null differ diff --git a/png/128/emoji_u1f54e.png b/png/128/emoji_u1f54e.png deleted file mode 100644 index 1e52ebf14..000000000 Binary files a/png/128/emoji_u1f54e.png and /dev/null differ diff --git a/png/128/emoji_u1f550.png b/png/128/emoji_u1f550.png deleted file mode 100644 index 4532ef7de..000000000 Binary files a/png/128/emoji_u1f550.png and /dev/null differ diff --git a/png/128/emoji_u1f551.png b/png/128/emoji_u1f551.png deleted file mode 100644 index d2ae1264b..000000000 Binary files a/png/128/emoji_u1f551.png and /dev/null differ diff --git a/png/128/emoji_u1f552.png b/png/128/emoji_u1f552.png deleted file mode 100644 index f9275b64e..000000000 Binary files a/png/128/emoji_u1f552.png and /dev/null differ diff --git a/png/128/emoji_u1f553.png b/png/128/emoji_u1f553.png deleted file mode 100644 index ba22ff923..000000000 Binary files a/png/128/emoji_u1f553.png and /dev/null differ diff --git a/png/128/emoji_u1f554.png b/png/128/emoji_u1f554.png deleted file mode 100644 index 0eee661ca..000000000 Binary files a/png/128/emoji_u1f554.png and /dev/null differ diff --git a/png/128/emoji_u1f555.png b/png/128/emoji_u1f555.png deleted file mode 100644 index 966548f70..000000000 Binary files a/png/128/emoji_u1f555.png and /dev/null differ diff --git a/png/128/emoji_u1f556.png b/png/128/emoji_u1f556.png deleted file mode 100644 index 17af2466f..000000000 Binary files a/png/128/emoji_u1f556.png and /dev/null differ diff --git a/png/128/emoji_u1f557.png b/png/128/emoji_u1f557.png deleted file mode 100644 index 862d91711..000000000 Binary files a/png/128/emoji_u1f557.png and /dev/null differ diff --git a/png/128/emoji_u1f558.png b/png/128/emoji_u1f558.png deleted file mode 100644 index d40f68608..000000000 Binary files a/png/128/emoji_u1f558.png and /dev/null differ diff --git a/png/128/emoji_u1f559.png b/png/128/emoji_u1f559.png deleted file mode 100644 index 37be746f1..000000000 Binary files a/png/128/emoji_u1f559.png and /dev/null differ diff --git a/png/128/emoji_u1f55a.png b/png/128/emoji_u1f55a.png deleted file mode 100644 index bb8d18e57..000000000 Binary files a/png/128/emoji_u1f55a.png and /dev/null differ diff --git a/png/128/emoji_u1f55b.png b/png/128/emoji_u1f55b.png deleted file mode 100644 index 071143641..000000000 Binary files a/png/128/emoji_u1f55b.png and /dev/null differ diff --git a/png/128/emoji_u1f55c.png b/png/128/emoji_u1f55c.png deleted file mode 100644 index 0ccd40ae5..000000000 Binary files a/png/128/emoji_u1f55c.png and /dev/null differ diff --git a/png/128/emoji_u1f55d.png b/png/128/emoji_u1f55d.png deleted file mode 100644 index 809e2f210..000000000 Binary files a/png/128/emoji_u1f55d.png and /dev/null differ diff --git a/png/128/emoji_u1f55e.png b/png/128/emoji_u1f55e.png deleted file mode 100644 index 8fc56dcf5..000000000 Binary files a/png/128/emoji_u1f55e.png and /dev/null differ diff --git a/png/128/emoji_u1f55f.png b/png/128/emoji_u1f55f.png deleted file mode 100644 index 337ca13a1..000000000 Binary files a/png/128/emoji_u1f55f.png and /dev/null differ diff --git a/png/128/emoji_u1f560.png b/png/128/emoji_u1f560.png deleted file mode 100644 index ae6c585f5..000000000 Binary files a/png/128/emoji_u1f560.png and /dev/null differ diff --git a/png/128/emoji_u1f561.png b/png/128/emoji_u1f561.png deleted file mode 100644 index 5884e1ca9..000000000 Binary files a/png/128/emoji_u1f561.png and /dev/null differ diff --git a/png/128/emoji_u1f562.png b/png/128/emoji_u1f562.png deleted file mode 100644 index 8dd8c7ec2..000000000 Binary files a/png/128/emoji_u1f562.png and /dev/null differ diff --git a/png/128/emoji_u1f563.png b/png/128/emoji_u1f563.png deleted file mode 100644 index 61d9fefc0..000000000 Binary files a/png/128/emoji_u1f563.png and /dev/null differ diff --git a/png/128/emoji_u1f564.png b/png/128/emoji_u1f564.png deleted file mode 100644 index a7096f2b5..000000000 Binary files a/png/128/emoji_u1f564.png and /dev/null differ diff --git a/png/128/emoji_u1f565.png b/png/128/emoji_u1f565.png deleted file mode 100644 index 0103e8c1c..000000000 Binary files a/png/128/emoji_u1f565.png and /dev/null differ diff --git a/png/128/emoji_u1f566.png b/png/128/emoji_u1f566.png deleted file mode 100644 index 520b65e2d..000000000 Binary files a/png/128/emoji_u1f566.png and /dev/null differ diff --git a/png/128/emoji_u1f567.png b/png/128/emoji_u1f567.png deleted file mode 100644 index eccd5db2e..000000000 Binary files a/png/128/emoji_u1f567.png and /dev/null differ diff --git a/png/128/emoji_u1f56f.png b/png/128/emoji_u1f56f.png deleted file mode 100644 index 2cc542972..000000000 Binary files a/png/128/emoji_u1f56f.png and /dev/null differ diff --git a/png/128/emoji_u1f570.png b/png/128/emoji_u1f570.png deleted file mode 100644 index aae82ab48..000000000 Binary files a/png/128/emoji_u1f570.png and /dev/null differ diff --git a/png/128/emoji_u1f573.png b/png/128/emoji_u1f573.png deleted file mode 100644 index 5aef1d972..000000000 Binary files a/png/128/emoji_u1f573.png and /dev/null differ diff --git a/png/128/emoji_u1f574.png b/png/128/emoji_u1f574.png deleted file mode 100644 index b2cc04d59..000000000 Binary files a/png/128/emoji_u1f574.png and /dev/null differ diff --git a/png/128/emoji_u1f574_1f3fb.png b/png/128/emoji_u1f574_1f3fb.png deleted file mode 100644 index 6c1689e54..000000000 Binary files a/png/128/emoji_u1f574_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f574_1f3fc.png b/png/128/emoji_u1f574_1f3fc.png deleted file mode 100644 index f9a122eec..000000000 Binary files a/png/128/emoji_u1f574_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f574_1f3fd.png b/png/128/emoji_u1f574_1f3fd.png deleted file mode 100644 index 1c3f36945..000000000 Binary files a/png/128/emoji_u1f574_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f574_1f3fe.png b/png/128/emoji_u1f574_1f3fe.png deleted file mode 100644 index 63c3e8c16..000000000 Binary files a/png/128/emoji_u1f574_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f574_1f3ff.png b/png/128/emoji_u1f574_1f3ff.png deleted file mode 100644 index b442c3fb9..000000000 Binary files a/png/128/emoji_u1f574_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f575.png b/png/128/emoji_u1f575.png deleted file mode 100644 index da0ca7c82..000000000 Binary files a/png/128/emoji_u1f575.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fb.png b/png/128/emoji_u1f575_1f3fb.png deleted file mode 100644 index 3cb69a484..000000000 Binary files a/png/128/emoji_u1f575_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fb_200d_2640.png b/png/128/emoji_u1f575_1f3fb_200d_2640.png deleted file mode 100644 index e102354d4..000000000 Binary files a/png/128/emoji_u1f575_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fb_200d_2642.png b/png/128/emoji_u1f575_1f3fb_200d_2642.png deleted file mode 100644 index 3cb69a484..000000000 Binary files a/png/128/emoji_u1f575_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fc.png b/png/128/emoji_u1f575_1f3fc.png deleted file mode 100644 index 39c758ed6..000000000 Binary files a/png/128/emoji_u1f575_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fc_200d_2640.png b/png/128/emoji_u1f575_1f3fc_200d_2640.png deleted file mode 100644 index 022031765..000000000 Binary files a/png/128/emoji_u1f575_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fc_200d_2642.png b/png/128/emoji_u1f575_1f3fc_200d_2642.png deleted file mode 100644 index 39c758ed6..000000000 Binary files a/png/128/emoji_u1f575_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fd.png b/png/128/emoji_u1f575_1f3fd.png deleted file mode 100644 index 9aeb845dd..000000000 Binary files a/png/128/emoji_u1f575_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fd_200d_2640.png b/png/128/emoji_u1f575_1f3fd_200d_2640.png deleted file mode 100644 index d7c923f32..000000000 Binary files a/png/128/emoji_u1f575_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fd_200d_2642.png b/png/128/emoji_u1f575_1f3fd_200d_2642.png deleted file mode 100644 index 9aeb845dd..000000000 Binary files a/png/128/emoji_u1f575_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fe.png b/png/128/emoji_u1f575_1f3fe.png deleted file mode 100644 index 4cc115ab7..000000000 Binary files a/png/128/emoji_u1f575_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fe_200d_2640.png b/png/128/emoji_u1f575_1f3fe_200d_2640.png deleted file mode 100644 index 31fce6328..000000000 Binary files a/png/128/emoji_u1f575_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3fe_200d_2642.png b/png/128/emoji_u1f575_1f3fe_200d_2642.png deleted file mode 100644 index 4cc115ab7..000000000 Binary files a/png/128/emoji_u1f575_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3ff.png b/png/128/emoji_u1f575_1f3ff.png deleted file mode 100644 index 28e6aa5d8..000000000 Binary files a/png/128/emoji_u1f575_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3ff_200d_2640.png b/png/128/emoji_u1f575_1f3ff_200d_2640.png deleted file mode 100644 index a8d33b2bb..000000000 Binary files a/png/128/emoji_u1f575_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f3ff_200d_2642.png b/png/128/emoji_u1f575_1f3ff_200d_2642.png deleted file mode 100644 index 28e6aa5d8..000000000 Binary files a/png/128/emoji_u1f575_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f9b0.png b/png/128/emoji_u1f575_1f9b0.png deleted file mode 100644 index 7380a34cb..000000000 Binary files a/png/128/emoji_u1f575_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f9b0_200d_2640.png b/png/128/emoji_u1f575_1f9b0_200d_2640.png deleted file mode 100644 index 1a86eb73e..000000000 Binary files a/png/128/emoji_u1f575_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f9b0_200d_2642.png b/png/128/emoji_u1f575_1f9b0_200d_2642.png deleted file mode 100644 index 7380a34cb..000000000 Binary files a/png/128/emoji_u1f575_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f9b3.png b/png/128/emoji_u1f575_1f9b3.png deleted file mode 100644 index d36c2cae2..000000000 Binary files a/png/128/emoji_u1f575_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f9b3_200d_2640.png b/png/128/emoji_u1f575_1f9b3_200d_2640.png deleted file mode 100644 index 652a5eba9..000000000 Binary files a/png/128/emoji_u1f575_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_1f9b3_200d_2642.png b/png/128/emoji_u1f575_1f9b3_200d_2642.png deleted file mode 100644 index d36c2cae2..000000000 Binary files a/png/128/emoji_u1f575_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f575_200d_2640.png b/png/128/emoji_u1f575_200d_2640.png deleted file mode 100644 index be52ab0dd..000000000 Binary files a/png/128/emoji_u1f575_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f575_200d_2642.png b/png/128/emoji_u1f575_200d_2642.png deleted file mode 100644 index da0ca7c82..000000000 Binary files a/png/128/emoji_u1f575_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f576.png b/png/128/emoji_u1f576.png deleted file mode 100644 index 3ff4db7a3..000000000 Binary files a/png/128/emoji_u1f576.png and /dev/null differ diff --git a/png/128/emoji_u1f577.png b/png/128/emoji_u1f577.png deleted file mode 100644 index 8ce16b475..000000000 Binary files a/png/128/emoji_u1f577.png and /dev/null differ diff --git a/png/128/emoji_u1f578.png b/png/128/emoji_u1f578.png deleted file mode 100644 index b41576560..000000000 Binary files a/png/128/emoji_u1f578.png and /dev/null differ diff --git a/png/128/emoji_u1f579.png b/png/128/emoji_u1f579.png deleted file mode 100644 index e45cb35b0..000000000 Binary files a/png/128/emoji_u1f579.png and /dev/null differ diff --git a/png/128/emoji_u1f57a.png b/png/128/emoji_u1f57a.png deleted file mode 100644 index 613c5da81..000000000 Binary files a/png/128/emoji_u1f57a.png and /dev/null differ diff --git a/png/128/emoji_u1f57a_1f3fb.png b/png/128/emoji_u1f57a_1f3fb.png deleted file mode 100644 index 997a5f8cd..000000000 Binary files a/png/128/emoji_u1f57a_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f57a_1f3fc.png b/png/128/emoji_u1f57a_1f3fc.png deleted file mode 100644 index 420a00d46..000000000 Binary files a/png/128/emoji_u1f57a_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f57a_1f3fd.png b/png/128/emoji_u1f57a_1f3fd.png deleted file mode 100644 index 9dd33cf43..000000000 Binary files a/png/128/emoji_u1f57a_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f57a_1f3fe.png b/png/128/emoji_u1f57a_1f3fe.png deleted file mode 100644 index 4c0c9f74b..000000000 Binary files a/png/128/emoji_u1f57a_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f57a_1f3ff.png b/png/128/emoji_u1f57a_1f3ff.png deleted file mode 100644 index 35e0f1f15..000000000 Binary files a/png/128/emoji_u1f57a_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f57a_1f9b0.png b/png/128/emoji_u1f57a_1f9b0.png deleted file mode 100644 index 57da0b78e..000000000 Binary files a/png/128/emoji_u1f57a_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f57a_1f9b3.png b/png/128/emoji_u1f57a_1f9b3.png deleted file mode 100644 index 336199b16..000000000 Binary files a/png/128/emoji_u1f57a_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f587.png b/png/128/emoji_u1f587.png deleted file mode 100644 index 03ba0af25..000000000 Binary files a/png/128/emoji_u1f587.png and /dev/null differ diff --git a/png/128/emoji_u1f58a.png b/png/128/emoji_u1f58a.png deleted file mode 100644 index 8ecd125c2..000000000 Binary files a/png/128/emoji_u1f58a.png and /dev/null differ diff --git a/png/128/emoji_u1f58b.png b/png/128/emoji_u1f58b.png deleted file mode 100644 index f2d61b745..000000000 Binary files a/png/128/emoji_u1f58b.png and /dev/null differ diff --git a/png/128/emoji_u1f58c.png b/png/128/emoji_u1f58c.png deleted file mode 100644 index aaad48113..000000000 Binary files a/png/128/emoji_u1f58c.png and /dev/null differ diff --git a/png/128/emoji_u1f58d.png b/png/128/emoji_u1f58d.png deleted file mode 100644 index 5e959f95d..000000000 Binary files a/png/128/emoji_u1f58d.png and /dev/null differ diff --git a/png/128/emoji_u1f590.png b/png/128/emoji_u1f590.png deleted file mode 100644 index 1fe874297..000000000 Binary files a/png/128/emoji_u1f590.png and /dev/null differ diff --git a/png/128/emoji_u1f590_1f3fb.png b/png/128/emoji_u1f590_1f3fb.png deleted file mode 100644 index 39b0b7923..000000000 Binary files a/png/128/emoji_u1f590_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f590_1f3fc.png b/png/128/emoji_u1f590_1f3fc.png deleted file mode 100644 index c32e74e4f..000000000 Binary files a/png/128/emoji_u1f590_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f590_1f3fd.png b/png/128/emoji_u1f590_1f3fd.png deleted file mode 100644 index 010ad33e9..000000000 Binary files a/png/128/emoji_u1f590_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f590_1f3fe.png b/png/128/emoji_u1f590_1f3fe.png deleted file mode 100644 index 52c787191..000000000 Binary files a/png/128/emoji_u1f590_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f590_1f3ff.png b/png/128/emoji_u1f590_1f3ff.png deleted file mode 100644 index 751ce1395..000000000 Binary files a/png/128/emoji_u1f590_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f595.png b/png/128/emoji_u1f595.png deleted file mode 100644 index a9deb3c09..000000000 Binary files a/png/128/emoji_u1f595.png and /dev/null differ diff --git a/png/128/emoji_u1f595_1f3fb.png b/png/128/emoji_u1f595_1f3fb.png deleted file mode 100644 index 32875f299..000000000 Binary files a/png/128/emoji_u1f595_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f595_1f3fc.png b/png/128/emoji_u1f595_1f3fc.png deleted file mode 100644 index 7a132eed3..000000000 Binary files a/png/128/emoji_u1f595_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f595_1f3fd.png b/png/128/emoji_u1f595_1f3fd.png deleted file mode 100644 index 2249e6999..000000000 Binary files a/png/128/emoji_u1f595_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f595_1f3fe.png b/png/128/emoji_u1f595_1f3fe.png deleted file mode 100644 index 5d98f997a..000000000 Binary files a/png/128/emoji_u1f595_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f595_1f3ff.png b/png/128/emoji_u1f595_1f3ff.png deleted file mode 100644 index cae779a09..000000000 Binary files a/png/128/emoji_u1f595_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f596.png b/png/128/emoji_u1f596.png deleted file mode 100644 index f1e41668e..000000000 Binary files a/png/128/emoji_u1f596.png and /dev/null differ diff --git a/png/128/emoji_u1f596_1f3fb.png b/png/128/emoji_u1f596_1f3fb.png deleted file mode 100644 index 70cc459b9..000000000 Binary files a/png/128/emoji_u1f596_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f596_1f3fc.png b/png/128/emoji_u1f596_1f3fc.png deleted file mode 100644 index 7c465d791..000000000 Binary files a/png/128/emoji_u1f596_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f596_1f3fd.png b/png/128/emoji_u1f596_1f3fd.png deleted file mode 100644 index 0be4bdfba..000000000 Binary files a/png/128/emoji_u1f596_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f596_1f3fe.png b/png/128/emoji_u1f596_1f3fe.png deleted file mode 100644 index 2a94e67d3..000000000 Binary files a/png/128/emoji_u1f596_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f596_1f3ff.png b/png/128/emoji_u1f596_1f3ff.png deleted file mode 100644 index 8f80ce7ec..000000000 Binary files a/png/128/emoji_u1f596_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f5a4.png b/png/128/emoji_u1f5a4.png deleted file mode 100644 index 8914ae358..000000000 Binary files a/png/128/emoji_u1f5a4.png and /dev/null differ diff --git a/png/128/emoji_u1f5a5.png b/png/128/emoji_u1f5a5.png deleted file mode 100644 index 9d96aefd7..000000000 Binary files a/png/128/emoji_u1f5a5.png and /dev/null differ diff --git a/png/128/emoji_u1f5a8.png b/png/128/emoji_u1f5a8.png deleted file mode 100644 index fbea2b4fb..000000000 Binary files a/png/128/emoji_u1f5a8.png and /dev/null differ diff --git a/png/128/emoji_u1f5b1.png b/png/128/emoji_u1f5b1.png deleted file mode 100644 index 29a8d3c7e..000000000 Binary files a/png/128/emoji_u1f5b1.png and /dev/null differ diff --git a/png/128/emoji_u1f5b2.png b/png/128/emoji_u1f5b2.png deleted file mode 100644 index 0e53ba633..000000000 Binary files a/png/128/emoji_u1f5b2.png and /dev/null differ diff --git a/png/128/emoji_u1f5bc.png b/png/128/emoji_u1f5bc.png deleted file mode 100644 index fc067419f..000000000 Binary files a/png/128/emoji_u1f5bc.png and /dev/null differ diff --git a/png/128/emoji_u1f5c2.png b/png/128/emoji_u1f5c2.png deleted file mode 100644 index c12f235bf..000000000 Binary files a/png/128/emoji_u1f5c2.png and /dev/null differ diff --git a/png/128/emoji_u1f5c3.png b/png/128/emoji_u1f5c3.png deleted file mode 100644 index 92a933607..000000000 Binary files a/png/128/emoji_u1f5c3.png and /dev/null differ diff --git a/png/128/emoji_u1f5c4.png b/png/128/emoji_u1f5c4.png deleted file mode 100644 index 5742d47a6..000000000 Binary files a/png/128/emoji_u1f5c4.png and /dev/null differ diff --git a/png/128/emoji_u1f5d1.png b/png/128/emoji_u1f5d1.png deleted file mode 100644 index 9c0be0f74..000000000 Binary files a/png/128/emoji_u1f5d1.png and /dev/null differ diff --git a/png/128/emoji_u1f5d2.png b/png/128/emoji_u1f5d2.png deleted file mode 100644 index f7e13ab6e..000000000 Binary files a/png/128/emoji_u1f5d2.png and /dev/null differ diff --git a/png/128/emoji_u1f5d3.png b/png/128/emoji_u1f5d3.png deleted file mode 100644 index 2b0bc3266..000000000 Binary files a/png/128/emoji_u1f5d3.png and /dev/null differ diff --git a/png/128/emoji_u1f5dc.png b/png/128/emoji_u1f5dc.png deleted file mode 100644 index 55968097b..000000000 Binary files a/png/128/emoji_u1f5dc.png and /dev/null differ diff --git a/png/128/emoji_u1f5dd.png b/png/128/emoji_u1f5dd.png deleted file mode 100644 index 8ceeb7d25..000000000 Binary files a/png/128/emoji_u1f5dd.png and /dev/null differ diff --git a/png/128/emoji_u1f5de.png b/png/128/emoji_u1f5de.png deleted file mode 100644 index 0901779b9..000000000 Binary files a/png/128/emoji_u1f5de.png and /dev/null differ diff --git a/png/128/emoji_u1f5e1.png b/png/128/emoji_u1f5e1.png deleted file mode 100644 index cea4ac413..000000000 Binary files a/png/128/emoji_u1f5e1.png and /dev/null differ diff --git a/png/128/emoji_u1f5e3.png b/png/128/emoji_u1f5e3.png deleted file mode 100644 index b71d78d81..000000000 Binary files a/png/128/emoji_u1f5e3.png and /dev/null differ diff --git a/png/128/emoji_u1f5e8.png b/png/128/emoji_u1f5e8.png deleted file mode 100644 index 8f6ce15c1..000000000 Binary files a/png/128/emoji_u1f5e8.png and /dev/null differ diff --git a/png/128/emoji_u1f5ef.png b/png/128/emoji_u1f5ef.png deleted file mode 100644 index ed61f08a3..000000000 Binary files a/png/128/emoji_u1f5ef.png and /dev/null differ diff --git a/png/128/emoji_u1f5f3.png b/png/128/emoji_u1f5f3.png deleted file mode 100644 index 145898855..000000000 Binary files a/png/128/emoji_u1f5f3.png and /dev/null differ diff --git a/png/128/emoji_u1f5fa.png b/png/128/emoji_u1f5fa.png deleted file mode 100644 index efe6e47ad..000000000 Binary files a/png/128/emoji_u1f5fa.png and /dev/null differ diff --git a/png/128/emoji_u1f5fb.png b/png/128/emoji_u1f5fb.png deleted file mode 100644 index 9a1b43c60..000000000 Binary files a/png/128/emoji_u1f5fb.png and /dev/null differ diff --git a/png/128/emoji_u1f5fc.png b/png/128/emoji_u1f5fc.png deleted file mode 100644 index b39c499e0..000000000 Binary files a/png/128/emoji_u1f5fc.png and /dev/null differ diff --git a/png/128/emoji_u1f5fd.png b/png/128/emoji_u1f5fd.png deleted file mode 100644 index e8c822c20..000000000 Binary files a/png/128/emoji_u1f5fd.png and /dev/null differ diff --git a/png/128/emoji_u1f5fe.png b/png/128/emoji_u1f5fe.png deleted file mode 100644 index b25aa8a19..000000000 Binary files a/png/128/emoji_u1f5fe.png and /dev/null differ diff --git a/png/128/emoji_u1f5ff.png b/png/128/emoji_u1f5ff.png deleted file mode 100644 index 0fb6064b6..000000000 Binary files a/png/128/emoji_u1f5ff.png and /dev/null differ diff --git a/png/128/emoji_u1f600.png b/png/128/emoji_u1f600.png deleted file mode 100644 index f064dcc31..000000000 Binary files a/png/128/emoji_u1f600.png and /dev/null differ diff --git a/png/128/emoji_u1f601.png b/png/128/emoji_u1f601.png deleted file mode 100644 index 38c3475af..000000000 Binary files a/png/128/emoji_u1f601.png and /dev/null differ diff --git a/png/128/emoji_u1f602.png b/png/128/emoji_u1f602.png deleted file mode 100644 index 805a176ac..000000000 Binary files a/png/128/emoji_u1f602.png and /dev/null differ diff --git a/png/128/emoji_u1f602_200d_2063.png b/png/128/emoji_u1f602_200d_2063.png deleted file mode 100644 index 09d8ce534..000000000 Binary files a/png/128/emoji_u1f602_200d_2063.png and /dev/null differ diff --git a/png/128/emoji_u1f603.png b/png/128/emoji_u1f603.png deleted file mode 100644 index f377d5ae9..000000000 Binary files a/png/128/emoji_u1f603.png and /dev/null differ diff --git a/png/128/emoji_u1f604.png b/png/128/emoji_u1f604.png deleted file mode 100644 index 67c828193..000000000 Binary files a/png/128/emoji_u1f604.png and /dev/null differ diff --git a/png/128/emoji_u1f605.png b/png/128/emoji_u1f605.png deleted file mode 100644 index fcf3c1ad8..000000000 Binary files a/png/128/emoji_u1f605.png and /dev/null differ diff --git a/png/128/emoji_u1f606.png b/png/128/emoji_u1f606.png deleted file mode 100644 index e0f876c9c..000000000 Binary files a/png/128/emoji_u1f606.png and /dev/null differ diff --git a/png/128/emoji_u1f607.png b/png/128/emoji_u1f607.png deleted file mode 100644 index 294b34e25..000000000 Binary files a/png/128/emoji_u1f607.png and /dev/null differ diff --git a/png/128/emoji_u1f608.png b/png/128/emoji_u1f608.png deleted file mode 100644 index a6e7cd53b..000000000 Binary files a/png/128/emoji_u1f608.png and /dev/null differ diff --git a/png/128/emoji_u1f609.png b/png/128/emoji_u1f609.png deleted file mode 100644 index e01d728f5..000000000 Binary files a/png/128/emoji_u1f609.png and /dev/null differ diff --git a/png/128/emoji_u1f60a.png b/png/128/emoji_u1f60a.png deleted file mode 100644 index fb98c8818..000000000 Binary files a/png/128/emoji_u1f60a.png and /dev/null differ diff --git a/png/128/emoji_u1f60b.png b/png/128/emoji_u1f60b.png deleted file mode 100644 index c10e0f9b4..000000000 Binary files a/png/128/emoji_u1f60b.png and /dev/null differ diff --git a/png/128/emoji_u1f60c.png b/png/128/emoji_u1f60c.png deleted file mode 100644 index 60e81a355..000000000 Binary files a/png/128/emoji_u1f60c.png and /dev/null differ diff --git a/png/128/emoji_u1f60d.png b/png/128/emoji_u1f60d.png deleted file mode 100644 index 32d4aa2aa..000000000 Binary files a/png/128/emoji_u1f60d.png and /dev/null differ diff --git a/png/128/emoji_u1f60e.png b/png/128/emoji_u1f60e.png deleted file mode 100644 index cb0d8c2f4..000000000 Binary files a/png/128/emoji_u1f60e.png and /dev/null differ diff --git a/png/128/emoji_u1f60f.png b/png/128/emoji_u1f60f.png deleted file mode 100644 index b2e70cdb9..000000000 Binary files a/png/128/emoji_u1f60f.png and /dev/null differ diff --git a/png/128/emoji_u1f610.png b/png/128/emoji_u1f610.png deleted file mode 100644 index 29e46df40..000000000 Binary files a/png/128/emoji_u1f610.png and /dev/null differ diff --git a/png/128/emoji_u1f611.png b/png/128/emoji_u1f611.png deleted file mode 100644 index 430638dfe..000000000 Binary files a/png/128/emoji_u1f611.png and /dev/null differ diff --git a/png/128/emoji_u1f612.png b/png/128/emoji_u1f612.png deleted file mode 100644 index 6e4ddad26..000000000 Binary files a/png/128/emoji_u1f612.png and /dev/null differ diff --git a/png/128/emoji_u1f613.png b/png/128/emoji_u1f613.png deleted file mode 100644 index 36674333e..000000000 Binary files a/png/128/emoji_u1f613.png and /dev/null differ diff --git a/png/128/emoji_u1f614.png b/png/128/emoji_u1f614.png deleted file mode 100644 index bebd47783..000000000 Binary files a/png/128/emoji_u1f614.png and /dev/null differ diff --git a/png/128/emoji_u1f615.png b/png/128/emoji_u1f615.png deleted file mode 100644 index 47b6f03fd..000000000 Binary files a/png/128/emoji_u1f615.png and /dev/null differ diff --git a/png/128/emoji_u1f616.png b/png/128/emoji_u1f616.png deleted file mode 100644 index 65a9dbcf0..000000000 Binary files a/png/128/emoji_u1f616.png and /dev/null differ diff --git a/png/128/emoji_u1f617.png b/png/128/emoji_u1f617.png deleted file mode 100644 index b8fd8cb73..000000000 Binary files a/png/128/emoji_u1f617.png and /dev/null differ diff --git a/png/128/emoji_u1f618.png b/png/128/emoji_u1f618.png deleted file mode 100644 index d4dd61265..000000000 Binary files a/png/128/emoji_u1f618.png and /dev/null differ diff --git a/png/128/emoji_u1f619.png b/png/128/emoji_u1f619.png deleted file mode 100644 index bd9630955..000000000 Binary files a/png/128/emoji_u1f619.png and /dev/null differ diff --git a/png/128/emoji_u1f61a.png b/png/128/emoji_u1f61a.png deleted file mode 100644 index 0c649ad12..000000000 Binary files a/png/128/emoji_u1f61a.png and /dev/null differ diff --git a/png/128/emoji_u1f61b.png b/png/128/emoji_u1f61b.png deleted file mode 100644 index b188e81d5..000000000 Binary files a/png/128/emoji_u1f61b.png and /dev/null differ diff --git a/png/128/emoji_u1f61c.png b/png/128/emoji_u1f61c.png deleted file mode 100644 index a947336a4..000000000 Binary files a/png/128/emoji_u1f61c.png and /dev/null differ diff --git a/png/128/emoji_u1f61d.png b/png/128/emoji_u1f61d.png deleted file mode 100644 index 24bc63ca4..000000000 Binary files a/png/128/emoji_u1f61d.png and /dev/null differ diff --git a/png/128/emoji_u1f61e.png b/png/128/emoji_u1f61e.png deleted file mode 100644 index e20a7a8da..000000000 Binary files a/png/128/emoji_u1f61e.png and /dev/null differ diff --git a/png/128/emoji_u1f61f.png b/png/128/emoji_u1f61f.png deleted file mode 100644 index c7b8e5557..000000000 Binary files a/png/128/emoji_u1f61f.png and /dev/null differ diff --git a/png/128/emoji_u1f620.png b/png/128/emoji_u1f620.png deleted file mode 100644 index 4a5e8914f..000000000 Binary files a/png/128/emoji_u1f620.png and /dev/null differ diff --git a/png/128/emoji_u1f621.png b/png/128/emoji_u1f621.png deleted file mode 100644 index 1eafbf07f..000000000 Binary files a/png/128/emoji_u1f621.png and /dev/null differ diff --git a/png/128/emoji_u1f622.png b/png/128/emoji_u1f622.png deleted file mode 100644 index 0b9a464ff..000000000 Binary files a/png/128/emoji_u1f622.png and /dev/null differ diff --git a/png/128/emoji_u1f623.png b/png/128/emoji_u1f623.png deleted file mode 100644 index 79fb1ad92..000000000 Binary files a/png/128/emoji_u1f623.png and /dev/null differ diff --git a/png/128/emoji_u1f624.png b/png/128/emoji_u1f624.png deleted file mode 100644 index 44fea21ad..000000000 Binary files a/png/128/emoji_u1f624.png and /dev/null differ diff --git a/png/128/emoji_u1f625.png b/png/128/emoji_u1f625.png deleted file mode 100644 index 832c9044e..000000000 Binary files a/png/128/emoji_u1f625.png and /dev/null differ diff --git a/png/128/emoji_u1f626.png b/png/128/emoji_u1f626.png deleted file mode 100644 index 5c79f5ed5..000000000 Binary files a/png/128/emoji_u1f626.png and /dev/null differ diff --git a/png/128/emoji_u1f627.png b/png/128/emoji_u1f627.png deleted file mode 100644 index f5fc48ed7..000000000 Binary files a/png/128/emoji_u1f627.png and /dev/null differ diff --git a/png/128/emoji_u1f628.png b/png/128/emoji_u1f628.png deleted file mode 100644 index acaba94e9..000000000 Binary files a/png/128/emoji_u1f628.png and /dev/null differ diff --git a/png/128/emoji_u1f629.png b/png/128/emoji_u1f629.png deleted file mode 100644 index b92203fc9..000000000 Binary files a/png/128/emoji_u1f629.png and /dev/null differ diff --git a/png/128/emoji_u1f62a.png b/png/128/emoji_u1f62a.png deleted file mode 100644 index 29ebbb2a7..000000000 Binary files a/png/128/emoji_u1f62a.png and /dev/null differ diff --git a/png/128/emoji_u1f62b.png b/png/128/emoji_u1f62b.png deleted file mode 100644 index 34768fac2..000000000 Binary files a/png/128/emoji_u1f62b.png and /dev/null differ diff --git a/png/128/emoji_u1f62c.png b/png/128/emoji_u1f62c.png deleted file mode 100644 index 48661a0e4..000000000 Binary files a/png/128/emoji_u1f62c.png and /dev/null differ diff --git a/png/128/emoji_u1f62d.png b/png/128/emoji_u1f62d.png deleted file mode 100644 index 3ebd904e8..000000000 Binary files a/png/128/emoji_u1f62d.png and /dev/null differ diff --git a/png/128/emoji_u1f62e.png b/png/128/emoji_u1f62e.png deleted file mode 100644 index 79685c043..000000000 Binary files a/png/128/emoji_u1f62e.png and /dev/null differ diff --git a/png/128/emoji_u1f62f.png b/png/128/emoji_u1f62f.png deleted file mode 100644 index 92187eb1a..000000000 Binary files a/png/128/emoji_u1f62f.png and /dev/null differ diff --git a/png/128/emoji_u1f630.png b/png/128/emoji_u1f630.png deleted file mode 100644 index 70bcafbda..000000000 Binary files a/png/128/emoji_u1f630.png and /dev/null differ diff --git a/png/128/emoji_u1f631.png b/png/128/emoji_u1f631.png deleted file mode 100644 index 8dff8a73d..000000000 Binary files a/png/128/emoji_u1f631.png and /dev/null differ diff --git a/png/128/emoji_u1f632.png b/png/128/emoji_u1f632.png deleted file mode 100644 index 88419fd65..000000000 Binary files a/png/128/emoji_u1f632.png and /dev/null differ diff --git a/png/128/emoji_u1f633.png b/png/128/emoji_u1f633.png deleted file mode 100644 index 97f618746..000000000 Binary files a/png/128/emoji_u1f633.png and /dev/null differ diff --git a/png/128/emoji_u1f634.png b/png/128/emoji_u1f634.png deleted file mode 100644 index 26c346836..000000000 Binary files a/png/128/emoji_u1f634.png and /dev/null differ diff --git a/png/128/emoji_u1f635.png b/png/128/emoji_u1f635.png deleted file mode 100644 index 999217fb0..000000000 Binary files a/png/128/emoji_u1f635.png and /dev/null differ diff --git a/png/128/emoji_u1f636.png b/png/128/emoji_u1f636.png deleted file mode 100644 index 5e59a9a83..000000000 Binary files a/png/128/emoji_u1f636.png and /dev/null differ diff --git a/png/128/emoji_u1f637.png b/png/128/emoji_u1f637.png deleted file mode 100644 index 324da6d3e..000000000 Binary files a/png/128/emoji_u1f637.png and /dev/null differ diff --git a/png/128/emoji_u1f638.png b/png/128/emoji_u1f638.png deleted file mode 100644 index a8b7d214f..000000000 Binary files a/png/128/emoji_u1f638.png and /dev/null differ diff --git a/png/128/emoji_u1f639.png b/png/128/emoji_u1f639.png deleted file mode 100644 index d83918968..000000000 Binary files a/png/128/emoji_u1f639.png and /dev/null differ diff --git a/png/128/emoji_u1f63a.png b/png/128/emoji_u1f63a.png deleted file mode 100644 index b4f7a3143..000000000 Binary files a/png/128/emoji_u1f63a.png and /dev/null differ diff --git a/png/128/emoji_u1f63b.png b/png/128/emoji_u1f63b.png deleted file mode 100644 index eead7fffd..000000000 Binary files a/png/128/emoji_u1f63b.png and /dev/null differ diff --git a/png/128/emoji_u1f63c.png b/png/128/emoji_u1f63c.png deleted file mode 100644 index 9391af674..000000000 Binary files a/png/128/emoji_u1f63c.png and /dev/null differ diff --git a/png/128/emoji_u1f63d.png b/png/128/emoji_u1f63d.png deleted file mode 100644 index be5ae4398..000000000 Binary files a/png/128/emoji_u1f63d.png and /dev/null differ diff --git a/png/128/emoji_u1f63e.png b/png/128/emoji_u1f63e.png deleted file mode 100644 index fc7aa39d5..000000000 Binary files a/png/128/emoji_u1f63e.png and /dev/null differ diff --git a/png/128/emoji_u1f63f.png b/png/128/emoji_u1f63f.png deleted file mode 100644 index 320a411c6..000000000 Binary files a/png/128/emoji_u1f63f.png and /dev/null differ diff --git a/png/128/emoji_u1f640.png b/png/128/emoji_u1f640.png deleted file mode 100644 index 69032bcb5..000000000 Binary files a/png/128/emoji_u1f640.png and /dev/null differ diff --git a/png/128/emoji_u1f641.png b/png/128/emoji_u1f641.png deleted file mode 100644 index 89cda726f..000000000 Binary files a/png/128/emoji_u1f641.png and /dev/null differ diff --git a/png/128/emoji_u1f642.png b/png/128/emoji_u1f642.png deleted file mode 100644 index 72a1788f7..000000000 Binary files a/png/128/emoji_u1f642.png and /dev/null differ diff --git a/png/128/emoji_u1f643.png b/png/128/emoji_u1f643.png deleted file mode 100644 index 4ec5c8015..000000000 Binary files a/png/128/emoji_u1f643.png and /dev/null differ diff --git a/png/128/emoji_u1f644.png b/png/128/emoji_u1f644.png deleted file mode 100644 index 60b1c817a..000000000 Binary files a/png/128/emoji_u1f644.png and /dev/null differ diff --git a/png/128/emoji_u1f644_200d_2063.png b/png/128/emoji_u1f644_200d_2063.png deleted file mode 100644 index e1dec7167..000000000 Binary files a/png/128/emoji_u1f644_200d_2063.png and /dev/null differ diff --git a/png/128/emoji_u1f645.png b/png/128/emoji_u1f645.png deleted file mode 100644 index a1978e0b6..000000000 Binary files a/png/128/emoji_u1f645.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fb.png b/png/128/emoji_u1f645_1f3fb.png deleted file mode 100644 index 6a479b3bb..000000000 Binary files a/png/128/emoji_u1f645_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fb_200d_2640.png b/png/128/emoji_u1f645_1f3fb_200d_2640.png deleted file mode 100644 index 6a479b3bb..000000000 Binary files a/png/128/emoji_u1f645_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fb_200d_2642.png b/png/128/emoji_u1f645_1f3fb_200d_2642.png deleted file mode 100644 index a5a497ee0..000000000 Binary files a/png/128/emoji_u1f645_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fc.png b/png/128/emoji_u1f645_1f3fc.png deleted file mode 100644 index 666765839..000000000 Binary files a/png/128/emoji_u1f645_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fc_200d_2640.png b/png/128/emoji_u1f645_1f3fc_200d_2640.png deleted file mode 100644 index 666765839..000000000 Binary files a/png/128/emoji_u1f645_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fc_200d_2642.png b/png/128/emoji_u1f645_1f3fc_200d_2642.png deleted file mode 100644 index 7f6f4e15d..000000000 Binary files a/png/128/emoji_u1f645_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fd.png b/png/128/emoji_u1f645_1f3fd.png deleted file mode 100644 index 317c5bb9c..000000000 Binary files a/png/128/emoji_u1f645_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fd_200d_2640.png b/png/128/emoji_u1f645_1f3fd_200d_2640.png deleted file mode 100644 index 317c5bb9c..000000000 Binary files a/png/128/emoji_u1f645_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fd_200d_2642.png b/png/128/emoji_u1f645_1f3fd_200d_2642.png deleted file mode 100644 index 459478a18..000000000 Binary files a/png/128/emoji_u1f645_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fe.png b/png/128/emoji_u1f645_1f3fe.png deleted file mode 100644 index 62fce0e1e..000000000 Binary files a/png/128/emoji_u1f645_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fe_200d_2640.png b/png/128/emoji_u1f645_1f3fe_200d_2640.png deleted file mode 100644 index 62fce0e1e..000000000 Binary files a/png/128/emoji_u1f645_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3fe_200d_2642.png b/png/128/emoji_u1f645_1f3fe_200d_2642.png deleted file mode 100644 index a2c1e69b5..000000000 Binary files a/png/128/emoji_u1f645_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3ff.png b/png/128/emoji_u1f645_1f3ff.png deleted file mode 100644 index 472214abf..000000000 Binary files a/png/128/emoji_u1f645_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3ff_200d_2640.png b/png/128/emoji_u1f645_1f3ff_200d_2640.png deleted file mode 100644 index 472214abf..000000000 Binary files a/png/128/emoji_u1f645_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f3ff_200d_2642.png b/png/128/emoji_u1f645_1f3ff_200d_2642.png deleted file mode 100644 index cff06ef57..000000000 Binary files a/png/128/emoji_u1f645_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f9b0.png b/png/128/emoji_u1f645_1f9b0.png deleted file mode 100644 index e082839b2..000000000 Binary files a/png/128/emoji_u1f645_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f9b0_200d_2640.png b/png/128/emoji_u1f645_1f9b0_200d_2640.png deleted file mode 100644 index e082839b2..000000000 Binary files a/png/128/emoji_u1f645_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f9b0_200d_2642.png b/png/128/emoji_u1f645_1f9b0_200d_2642.png deleted file mode 100644 index 14cab20c8..000000000 Binary files a/png/128/emoji_u1f645_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f9b3.png b/png/128/emoji_u1f645_1f9b3.png deleted file mode 100644 index f880401cd..000000000 Binary files a/png/128/emoji_u1f645_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f9b3_200d_2640.png b/png/128/emoji_u1f645_1f9b3_200d_2640.png deleted file mode 100644 index f880401cd..000000000 Binary files a/png/128/emoji_u1f645_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_1f9b3_200d_2642.png b/png/128/emoji_u1f645_1f9b3_200d_2642.png deleted file mode 100644 index dcc35de0e..000000000 Binary files a/png/128/emoji_u1f645_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f645_200d_2640.png b/png/128/emoji_u1f645_200d_2640.png deleted file mode 100644 index a1978e0b6..000000000 Binary files a/png/128/emoji_u1f645_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f645_200d_2642.png b/png/128/emoji_u1f645_200d_2642.png deleted file mode 100644 index e6001e273..000000000 Binary files a/png/128/emoji_u1f645_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646.png b/png/128/emoji_u1f646.png deleted file mode 100644 index a575d936d..000000000 Binary files a/png/128/emoji_u1f646.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fb.png b/png/128/emoji_u1f646_1f3fb.png deleted file mode 100644 index 48f156d8e..000000000 Binary files a/png/128/emoji_u1f646_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fb_200d_2640.png b/png/128/emoji_u1f646_1f3fb_200d_2640.png deleted file mode 100644 index 48f156d8e..000000000 Binary files a/png/128/emoji_u1f646_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fb_200d_2642.png b/png/128/emoji_u1f646_1f3fb_200d_2642.png deleted file mode 100644 index 4c4e03796..000000000 Binary files a/png/128/emoji_u1f646_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fc.png b/png/128/emoji_u1f646_1f3fc.png deleted file mode 100644 index e93571504..000000000 Binary files a/png/128/emoji_u1f646_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fc_200d_2640.png b/png/128/emoji_u1f646_1f3fc_200d_2640.png deleted file mode 100644 index e93571504..000000000 Binary files a/png/128/emoji_u1f646_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fc_200d_2642.png b/png/128/emoji_u1f646_1f3fc_200d_2642.png deleted file mode 100644 index 0592c0f88..000000000 Binary files a/png/128/emoji_u1f646_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fd.png b/png/128/emoji_u1f646_1f3fd.png deleted file mode 100644 index 08b6710cc..000000000 Binary files a/png/128/emoji_u1f646_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fd_200d_2640.png b/png/128/emoji_u1f646_1f3fd_200d_2640.png deleted file mode 100644 index 08b6710cc..000000000 Binary files a/png/128/emoji_u1f646_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fd_200d_2642.png b/png/128/emoji_u1f646_1f3fd_200d_2642.png deleted file mode 100644 index 9a9c3799a..000000000 Binary files a/png/128/emoji_u1f646_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fe.png b/png/128/emoji_u1f646_1f3fe.png deleted file mode 100644 index e990e647d..000000000 Binary files a/png/128/emoji_u1f646_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fe_200d_2640.png b/png/128/emoji_u1f646_1f3fe_200d_2640.png deleted file mode 100644 index e990e647d..000000000 Binary files a/png/128/emoji_u1f646_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3fe_200d_2642.png b/png/128/emoji_u1f646_1f3fe_200d_2642.png deleted file mode 100644 index 37fe89b5a..000000000 Binary files a/png/128/emoji_u1f646_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3ff.png b/png/128/emoji_u1f646_1f3ff.png deleted file mode 100644 index 0971f6aa0..000000000 Binary files a/png/128/emoji_u1f646_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3ff_200d_2640.png b/png/128/emoji_u1f646_1f3ff_200d_2640.png deleted file mode 100644 index 0971f6aa0..000000000 Binary files a/png/128/emoji_u1f646_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f3ff_200d_2642.png b/png/128/emoji_u1f646_1f3ff_200d_2642.png deleted file mode 100644 index 480825f90..000000000 Binary files a/png/128/emoji_u1f646_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f9b0.png b/png/128/emoji_u1f646_1f9b0.png deleted file mode 100644 index 95dc29d19..000000000 Binary files a/png/128/emoji_u1f646_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f9b0_200d_2640.png b/png/128/emoji_u1f646_1f9b0_200d_2640.png deleted file mode 100644 index 95dc29d19..000000000 Binary files a/png/128/emoji_u1f646_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f9b0_200d_2642.png b/png/128/emoji_u1f646_1f9b0_200d_2642.png deleted file mode 100644 index c48f4119d..000000000 Binary files a/png/128/emoji_u1f646_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f9b3.png b/png/128/emoji_u1f646_1f9b3.png deleted file mode 100644 index 436b7b8cb..000000000 Binary files a/png/128/emoji_u1f646_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f9b3_200d_2640.png b/png/128/emoji_u1f646_1f9b3_200d_2640.png deleted file mode 100644 index 436b7b8cb..000000000 Binary files a/png/128/emoji_u1f646_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_1f9b3_200d_2642.png b/png/128/emoji_u1f646_1f9b3_200d_2642.png deleted file mode 100644 index 603f3fc32..000000000 Binary files a/png/128/emoji_u1f646_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f646_200d_2640.png b/png/128/emoji_u1f646_200d_2640.png deleted file mode 100644 index a575d936d..000000000 Binary files a/png/128/emoji_u1f646_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f646_200d_2642.png b/png/128/emoji_u1f646_200d_2642.png deleted file mode 100644 index 0f41fc703..000000000 Binary files a/png/128/emoji_u1f646_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647.png b/png/128/emoji_u1f647.png deleted file mode 100644 index cd3b0fd08..000000000 Binary files a/png/128/emoji_u1f647.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fb.png b/png/128/emoji_u1f647_1f3fb.png deleted file mode 100644 index 69e416bd9..000000000 Binary files a/png/128/emoji_u1f647_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fb_200d_2640.png b/png/128/emoji_u1f647_1f3fb_200d_2640.png deleted file mode 100644 index f2fa136e4..000000000 Binary files a/png/128/emoji_u1f647_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fb_200d_2642.png b/png/128/emoji_u1f647_1f3fb_200d_2642.png deleted file mode 100644 index 69e416bd9..000000000 Binary files a/png/128/emoji_u1f647_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fc.png b/png/128/emoji_u1f647_1f3fc.png deleted file mode 100644 index 4d05ce0bb..000000000 Binary files a/png/128/emoji_u1f647_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fc_200d_2640.png b/png/128/emoji_u1f647_1f3fc_200d_2640.png deleted file mode 100644 index 27469a241..000000000 Binary files a/png/128/emoji_u1f647_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fc_200d_2642.png b/png/128/emoji_u1f647_1f3fc_200d_2642.png deleted file mode 100644 index 4d05ce0bb..000000000 Binary files a/png/128/emoji_u1f647_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fd.png b/png/128/emoji_u1f647_1f3fd.png deleted file mode 100644 index 565457efa..000000000 Binary files a/png/128/emoji_u1f647_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fd_200d_2640.png b/png/128/emoji_u1f647_1f3fd_200d_2640.png deleted file mode 100644 index a662179ce..000000000 Binary files a/png/128/emoji_u1f647_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fd_200d_2642.png b/png/128/emoji_u1f647_1f3fd_200d_2642.png deleted file mode 100644 index 565457efa..000000000 Binary files a/png/128/emoji_u1f647_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fe.png b/png/128/emoji_u1f647_1f3fe.png deleted file mode 100644 index f9e1732b1..000000000 Binary files a/png/128/emoji_u1f647_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fe_200d_2640.png b/png/128/emoji_u1f647_1f3fe_200d_2640.png deleted file mode 100644 index 8209b7537..000000000 Binary files a/png/128/emoji_u1f647_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3fe_200d_2642.png b/png/128/emoji_u1f647_1f3fe_200d_2642.png deleted file mode 100644 index f9e1732b1..000000000 Binary files a/png/128/emoji_u1f647_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3ff.png b/png/128/emoji_u1f647_1f3ff.png deleted file mode 100644 index 888bfd5ce..000000000 Binary files a/png/128/emoji_u1f647_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3ff_200d_2640.png b/png/128/emoji_u1f647_1f3ff_200d_2640.png deleted file mode 100644 index 2ef37a29b..000000000 Binary files a/png/128/emoji_u1f647_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f3ff_200d_2642.png b/png/128/emoji_u1f647_1f3ff_200d_2642.png deleted file mode 100644 index 888bfd5ce..000000000 Binary files a/png/128/emoji_u1f647_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f9b0.png b/png/128/emoji_u1f647_1f9b0.png deleted file mode 100644 index f971a8af0..000000000 Binary files a/png/128/emoji_u1f647_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f9b0_200d_2640.png b/png/128/emoji_u1f647_1f9b0_200d_2640.png deleted file mode 100644 index 5bfcc102b..000000000 Binary files a/png/128/emoji_u1f647_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f9b0_200d_2642.png b/png/128/emoji_u1f647_1f9b0_200d_2642.png deleted file mode 100644 index f971a8af0..000000000 Binary files a/png/128/emoji_u1f647_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f9b3.png b/png/128/emoji_u1f647_1f9b3.png deleted file mode 100644 index ca41e6be9..000000000 Binary files a/png/128/emoji_u1f647_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f9b3_200d_2640.png b/png/128/emoji_u1f647_1f9b3_200d_2640.png deleted file mode 100644 index e7280eb55..000000000 Binary files a/png/128/emoji_u1f647_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_1f9b3_200d_2642.png b/png/128/emoji_u1f647_1f9b3_200d_2642.png deleted file mode 100644 index ca41e6be9..000000000 Binary files a/png/128/emoji_u1f647_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f647_200d_2640.png b/png/128/emoji_u1f647_200d_2640.png deleted file mode 100644 index c7986e3c9..000000000 Binary files a/png/128/emoji_u1f647_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f647_200d_2642.png b/png/128/emoji_u1f647_200d_2642.png deleted file mode 100644 index cd3b0fd08..000000000 Binary files a/png/128/emoji_u1f647_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f648.png b/png/128/emoji_u1f648.png deleted file mode 100644 index 4eb5a7c41..000000000 Binary files a/png/128/emoji_u1f648.png and /dev/null differ diff --git a/png/128/emoji_u1f649.png b/png/128/emoji_u1f649.png deleted file mode 100644 index 55d57fc4c..000000000 Binary files a/png/128/emoji_u1f649.png and /dev/null differ diff --git a/png/128/emoji_u1f64a.png b/png/128/emoji_u1f64a.png deleted file mode 100644 index 4524f3ab9..000000000 Binary files a/png/128/emoji_u1f64a.png and /dev/null differ diff --git a/png/128/emoji_u1f64b.png b/png/128/emoji_u1f64b.png deleted file mode 100644 index 70ac6adff..000000000 Binary files a/png/128/emoji_u1f64b.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fb.png b/png/128/emoji_u1f64b_1f3fb.png deleted file mode 100644 index 879ad3ff8..000000000 Binary files a/png/128/emoji_u1f64b_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fb_200d_2640.png b/png/128/emoji_u1f64b_1f3fb_200d_2640.png deleted file mode 100644 index 879ad3ff8..000000000 Binary files a/png/128/emoji_u1f64b_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fb_200d_2642.png b/png/128/emoji_u1f64b_1f3fb_200d_2642.png deleted file mode 100644 index 9c2f45ba3..000000000 Binary files a/png/128/emoji_u1f64b_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fc.png b/png/128/emoji_u1f64b_1f3fc.png deleted file mode 100644 index 2dfe0d915..000000000 Binary files a/png/128/emoji_u1f64b_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fc_200d_2640.png b/png/128/emoji_u1f64b_1f3fc_200d_2640.png deleted file mode 100644 index 2dfe0d915..000000000 Binary files a/png/128/emoji_u1f64b_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fc_200d_2642.png b/png/128/emoji_u1f64b_1f3fc_200d_2642.png deleted file mode 100644 index cefa5d92a..000000000 Binary files a/png/128/emoji_u1f64b_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fd.png b/png/128/emoji_u1f64b_1f3fd.png deleted file mode 100644 index a2f676f13..000000000 Binary files a/png/128/emoji_u1f64b_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fd_200d_2640.png b/png/128/emoji_u1f64b_1f3fd_200d_2640.png deleted file mode 100644 index a2f676f13..000000000 Binary files a/png/128/emoji_u1f64b_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fd_200d_2642.png b/png/128/emoji_u1f64b_1f3fd_200d_2642.png deleted file mode 100644 index c11b0b958..000000000 Binary files a/png/128/emoji_u1f64b_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fe.png b/png/128/emoji_u1f64b_1f3fe.png deleted file mode 100644 index fbb7634ec..000000000 Binary files a/png/128/emoji_u1f64b_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fe_200d_2640.png b/png/128/emoji_u1f64b_1f3fe_200d_2640.png deleted file mode 100644 index fbb7634ec..000000000 Binary files a/png/128/emoji_u1f64b_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3fe_200d_2642.png b/png/128/emoji_u1f64b_1f3fe_200d_2642.png deleted file mode 100644 index 2155ca374..000000000 Binary files a/png/128/emoji_u1f64b_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3ff.png b/png/128/emoji_u1f64b_1f3ff.png deleted file mode 100644 index 6bd117c55..000000000 Binary files a/png/128/emoji_u1f64b_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3ff_200d_2640.png b/png/128/emoji_u1f64b_1f3ff_200d_2640.png deleted file mode 100644 index 6bd117c55..000000000 Binary files a/png/128/emoji_u1f64b_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f3ff_200d_2642.png b/png/128/emoji_u1f64b_1f3ff_200d_2642.png deleted file mode 100644 index a47bc1cb9..000000000 Binary files a/png/128/emoji_u1f64b_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f9b0.png b/png/128/emoji_u1f64b_1f9b0.png deleted file mode 100644 index afefb240c..000000000 Binary files a/png/128/emoji_u1f64b_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f9b0_200d_2640.png b/png/128/emoji_u1f64b_1f9b0_200d_2640.png deleted file mode 100644 index afefb240c..000000000 Binary files a/png/128/emoji_u1f64b_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f9b0_200d_2642.png b/png/128/emoji_u1f64b_1f9b0_200d_2642.png deleted file mode 100644 index d812bb6d1..000000000 Binary files a/png/128/emoji_u1f64b_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f9b3.png b/png/128/emoji_u1f64b_1f9b3.png deleted file mode 100644 index cbfa22b09..000000000 Binary files a/png/128/emoji_u1f64b_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f9b3_200d_2640.png b/png/128/emoji_u1f64b_1f9b3_200d_2640.png deleted file mode 100644 index cbfa22b09..000000000 Binary files a/png/128/emoji_u1f64b_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_1f9b3_200d_2642.png b/png/128/emoji_u1f64b_1f9b3_200d_2642.png deleted file mode 100644 index 981a0a36c..000000000 Binary files a/png/128/emoji_u1f64b_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_200d_2640.png b/png/128/emoji_u1f64b_200d_2640.png deleted file mode 100644 index 70ac6adff..000000000 Binary files a/png/128/emoji_u1f64b_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64b_200d_2642.png b/png/128/emoji_u1f64b_200d_2642.png deleted file mode 100644 index ae33eda60..000000000 Binary files a/png/128/emoji_u1f64b_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64c.png b/png/128/emoji_u1f64c.png deleted file mode 100644 index 3e6dcca6d..000000000 Binary files a/png/128/emoji_u1f64c.png and /dev/null differ diff --git a/png/128/emoji_u1f64c_1f3fb.png b/png/128/emoji_u1f64c_1f3fb.png deleted file mode 100644 index e35a1c724..000000000 Binary files a/png/128/emoji_u1f64c_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f64c_1f3fc.png b/png/128/emoji_u1f64c_1f3fc.png deleted file mode 100644 index f0c72f39a..000000000 Binary files a/png/128/emoji_u1f64c_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f64c_1f3fd.png b/png/128/emoji_u1f64c_1f3fd.png deleted file mode 100644 index 5070c1453..000000000 Binary files a/png/128/emoji_u1f64c_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f64c_1f3fe.png b/png/128/emoji_u1f64c_1f3fe.png deleted file mode 100644 index 8f9709091..000000000 Binary files a/png/128/emoji_u1f64c_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f64c_1f3ff.png b/png/128/emoji_u1f64c_1f3ff.png deleted file mode 100644 index bd5f8cef5..000000000 Binary files a/png/128/emoji_u1f64c_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f64d.png b/png/128/emoji_u1f64d.png deleted file mode 100644 index 27256b602..000000000 Binary files a/png/128/emoji_u1f64d.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fb.png b/png/128/emoji_u1f64d_1f3fb.png deleted file mode 100644 index d4dd9c470..000000000 Binary files a/png/128/emoji_u1f64d_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fb_200d_2640.png b/png/128/emoji_u1f64d_1f3fb_200d_2640.png deleted file mode 100644 index d4dd9c470..000000000 Binary files a/png/128/emoji_u1f64d_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fb_200d_2642.png b/png/128/emoji_u1f64d_1f3fb_200d_2642.png deleted file mode 100644 index 01f228ba7..000000000 Binary files a/png/128/emoji_u1f64d_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fc.png b/png/128/emoji_u1f64d_1f3fc.png deleted file mode 100644 index 13da6036e..000000000 Binary files a/png/128/emoji_u1f64d_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fc_200d_2640.png b/png/128/emoji_u1f64d_1f3fc_200d_2640.png deleted file mode 100644 index 13da6036e..000000000 Binary files a/png/128/emoji_u1f64d_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fc_200d_2642.png b/png/128/emoji_u1f64d_1f3fc_200d_2642.png deleted file mode 100644 index 064e6d0a3..000000000 Binary files a/png/128/emoji_u1f64d_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fd.png b/png/128/emoji_u1f64d_1f3fd.png deleted file mode 100644 index 3247cd879..000000000 Binary files a/png/128/emoji_u1f64d_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fd_200d_2640.png b/png/128/emoji_u1f64d_1f3fd_200d_2640.png deleted file mode 100644 index 3247cd879..000000000 Binary files a/png/128/emoji_u1f64d_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fd_200d_2642.png b/png/128/emoji_u1f64d_1f3fd_200d_2642.png deleted file mode 100644 index ba83a8d94..000000000 Binary files a/png/128/emoji_u1f64d_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fe.png b/png/128/emoji_u1f64d_1f3fe.png deleted file mode 100644 index 05fb365ac..000000000 Binary files a/png/128/emoji_u1f64d_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fe_200d_2640.png b/png/128/emoji_u1f64d_1f3fe_200d_2640.png deleted file mode 100644 index 05fb365ac..000000000 Binary files a/png/128/emoji_u1f64d_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3fe_200d_2642.png b/png/128/emoji_u1f64d_1f3fe_200d_2642.png deleted file mode 100644 index 2605b3ff2..000000000 Binary files a/png/128/emoji_u1f64d_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3ff.png b/png/128/emoji_u1f64d_1f3ff.png deleted file mode 100644 index 9107239c3..000000000 Binary files a/png/128/emoji_u1f64d_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3ff_200d_2640.png b/png/128/emoji_u1f64d_1f3ff_200d_2640.png deleted file mode 100644 index 9107239c3..000000000 Binary files a/png/128/emoji_u1f64d_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f3ff_200d_2642.png b/png/128/emoji_u1f64d_1f3ff_200d_2642.png deleted file mode 100644 index 31d964639..000000000 Binary files a/png/128/emoji_u1f64d_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f9b0.png b/png/128/emoji_u1f64d_1f9b0.png deleted file mode 100644 index a4a653fde..000000000 Binary files a/png/128/emoji_u1f64d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f9b0_200d_2640.png b/png/128/emoji_u1f64d_1f9b0_200d_2640.png deleted file mode 100644 index a4a653fde..000000000 Binary files a/png/128/emoji_u1f64d_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f9b0_200d_2642.png b/png/128/emoji_u1f64d_1f9b0_200d_2642.png deleted file mode 100644 index b42f1c686..000000000 Binary files a/png/128/emoji_u1f64d_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f9b3.png b/png/128/emoji_u1f64d_1f9b3.png deleted file mode 100644 index e88981dab..000000000 Binary files a/png/128/emoji_u1f64d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f9b3_200d_2640.png b/png/128/emoji_u1f64d_1f9b3_200d_2640.png deleted file mode 100644 index e88981dab..000000000 Binary files a/png/128/emoji_u1f64d_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_1f9b3_200d_2642.png b/png/128/emoji_u1f64d_1f9b3_200d_2642.png deleted file mode 100644 index d34ae3667..000000000 Binary files a/png/128/emoji_u1f64d_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_200d_2640.png b/png/128/emoji_u1f64d_200d_2640.png deleted file mode 100644 index 27256b602..000000000 Binary files a/png/128/emoji_u1f64d_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64d_200d_2642.png b/png/128/emoji_u1f64d_200d_2642.png deleted file mode 100644 index 77a15359b..000000000 Binary files a/png/128/emoji_u1f64d_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e.png b/png/128/emoji_u1f64e.png deleted file mode 100644 index 829b5d471..000000000 Binary files a/png/128/emoji_u1f64e.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fb.png b/png/128/emoji_u1f64e_1f3fb.png deleted file mode 100644 index aa1a14ceb..000000000 Binary files a/png/128/emoji_u1f64e_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fb_200d_2640.png b/png/128/emoji_u1f64e_1f3fb_200d_2640.png deleted file mode 100644 index aa1a14ceb..000000000 Binary files a/png/128/emoji_u1f64e_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fb_200d_2642.png b/png/128/emoji_u1f64e_1f3fb_200d_2642.png deleted file mode 100644 index 5bb117703..000000000 Binary files a/png/128/emoji_u1f64e_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fc.png b/png/128/emoji_u1f64e_1f3fc.png deleted file mode 100644 index e24f3960e..000000000 Binary files a/png/128/emoji_u1f64e_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fc_200d_2640.png b/png/128/emoji_u1f64e_1f3fc_200d_2640.png deleted file mode 100644 index e24f3960e..000000000 Binary files a/png/128/emoji_u1f64e_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fc_200d_2642.png b/png/128/emoji_u1f64e_1f3fc_200d_2642.png deleted file mode 100644 index 8c630e815..000000000 Binary files a/png/128/emoji_u1f64e_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fd.png b/png/128/emoji_u1f64e_1f3fd.png deleted file mode 100644 index b5321a9e1..000000000 Binary files a/png/128/emoji_u1f64e_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fd_200d_2640.png b/png/128/emoji_u1f64e_1f3fd_200d_2640.png deleted file mode 100644 index b5321a9e1..000000000 Binary files a/png/128/emoji_u1f64e_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fd_200d_2642.png b/png/128/emoji_u1f64e_1f3fd_200d_2642.png deleted file mode 100644 index e04bac52a..000000000 Binary files a/png/128/emoji_u1f64e_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fe.png b/png/128/emoji_u1f64e_1f3fe.png deleted file mode 100644 index d87f5cb66..000000000 Binary files a/png/128/emoji_u1f64e_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fe_200d_2640.png b/png/128/emoji_u1f64e_1f3fe_200d_2640.png deleted file mode 100644 index d87f5cb66..000000000 Binary files a/png/128/emoji_u1f64e_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3fe_200d_2642.png b/png/128/emoji_u1f64e_1f3fe_200d_2642.png deleted file mode 100644 index 15702c0cc..000000000 Binary files a/png/128/emoji_u1f64e_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3ff.png b/png/128/emoji_u1f64e_1f3ff.png deleted file mode 100644 index 8789a0da8..000000000 Binary files a/png/128/emoji_u1f64e_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3ff_200d_2640.png b/png/128/emoji_u1f64e_1f3ff_200d_2640.png deleted file mode 100644 index 8789a0da8..000000000 Binary files a/png/128/emoji_u1f64e_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f3ff_200d_2642.png b/png/128/emoji_u1f64e_1f3ff_200d_2642.png deleted file mode 100644 index b78637728..000000000 Binary files a/png/128/emoji_u1f64e_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f9b0.png b/png/128/emoji_u1f64e_1f9b0.png deleted file mode 100644 index c120c3ee9..000000000 Binary files a/png/128/emoji_u1f64e_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f9b0_200d_2640.png b/png/128/emoji_u1f64e_1f9b0_200d_2640.png deleted file mode 100644 index c120c3ee9..000000000 Binary files a/png/128/emoji_u1f64e_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f9b0_200d_2642.png b/png/128/emoji_u1f64e_1f9b0_200d_2642.png deleted file mode 100644 index be16facbf..000000000 Binary files a/png/128/emoji_u1f64e_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f9b3.png b/png/128/emoji_u1f64e_1f9b3.png deleted file mode 100644 index f1bf08e17..000000000 Binary files a/png/128/emoji_u1f64e_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f9b3_200d_2640.png b/png/128/emoji_u1f64e_1f9b3_200d_2640.png deleted file mode 100644 index f1bf08e17..000000000 Binary files a/png/128/emoji_u1f64e_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_1f9b3_200d_2642.png b/png/128/emoji_u1f64e_1f9b3_200d_2642.png deleted file mode 100644 index 27a3543e9..000000000 Binary files a/png/128/emoji_u1f64e_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_200d_2640.png b/png/128/emoji_u1f64e_200d_2640.png deleted file mode 100644 index 829b5d471..000000000 Binary files a/png/128/emoji_u1f64e_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f64e_200d_2642.png b/png/128/emoji_u1f64e_200d_2642.png deleted file mode 100644 index 326753431..000000000 Binary files a/png/128/emoji_u1f64e_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f64f.png b/png/128/emoji_u1f64f.png deleted file mode 100644 index 86745881d..000000000 Binary files a/png/128/emoji_u1f64f.png and /dev/null differ diff --git a/png/128/emoji_u1f64f_1f3fb.png b/png/128/emoji_u1f64f_1f3fb.png deleted file mode 100644 index a3d5e89f2..000000000 Binary files a/png/128/emoji_u1f64f_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f64f_1f3fc.png b/png/128/emoji_u1f64f_1f3fc.png deleted file mode 100644 index cecd0da07..000000000 Binary files a/png/128/emoji_u1f64f_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f64f_1f3fd.png b/png/128/emoji_u1f64f_1f3fd.png deleted file mode 100644 index 5b85e2485..000000000 Binary files a/png/128/emoji_u1f64f_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f64f_1f3fe.png b/png/128/emoji_u1f64f_1f3fe.png deleted file mode 100644 index cf219e47f..000000000 Binary files a/png/128/emoji_u1f64f_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f64f_1f3ff.png b/png/128/emoji_u1f64f_1f3ff.png deleted file mode 100644 index 04554c026..000000000 Binary files a/png/128/emoji_u1f64f_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f680.png b/png/128/emoji_u1f680.png deleted file mode 100644 index 6dbb66bbe..000000000 Binary files a/png/128/emoji_u1f680.png and /dev/null differ diff --git a/png/128/emoji_u1f681.png b/png/128/emoji_u1f681.png deleted file mode 100644 index f41b7863a..000000000 Binary files a/png/128/emoji_u1f681.png and /dev/null differ diff --git a/png/128/emoji_u1f682.png b/png/128/emoji_u1f682.png deleted file mode 100644 index 9cf00f8b2..000000000 Binary files a/png/128/emoji_u1f682.png and /dev/null differ diff --git a/png/128/emoji_u1f683.png b/png/128/emoji_u1f683.png deleted file mode 100644 index 4a78541c4..000000000 Binary files a/png/128/emoji_u1f683.png and /dev/null differ diff --git a/png/128/emoji_u1f684.png b/png/128/emoji_u1f684.png deleted file mode 100644 index b70a830c7..000000000 Binary files a/png/128/emoji_u1f684.png and /dev/null differ diff --git a/png/128/emoji_u1f685.png b/png/128/emoji_u1f685.png deleted file mode 100644 index 9dac56cd3..000000000 Binary files a/png/128/emoji_u1f685.png and /dev/null differ diff --git a/png/128/emoji_u1f686.png b/png/128/emoji_u1f686.png deleted file mode 100644 index 0a5d324ee..000000000 Binary files a/png/128/emoji_u1f686.png and /dev/null differ diff --git a/png/128/emoji_u1f687.png b/png/128/emoji_u1f687.png deleted file mode 100644 index 2533e2830..000000000 Binary files a/png/128/emoji_u1f687.png and /dev/null differ diff --git a/png/128/emoji_u1f688.png b/png/128/emoji_u1f688.png deleted file mode 100644 index b6ee40b6d..000000000 Binary files a/png/128/emoji_u1f688.png and /dev/null differ diff --git a/png/128/emoji_u1f689.png b/png/128/emoji_u1f689.png deleted file mode 100644 index 21fe0caaa..000000000 Binary files a/png/128/emoji_u1f689.png and /dev/null differ diff --git a/png/128/emoji_u1f68a.png b/png/128/emoji_u1f68a.png deleted file mode 100644 index 9006ad126..000000000 Binary files a/png/128/emoji_u1f68a.png and /dev/null differ diff --git a/png/128/emoji_u1f68b.png b/png/128/emoji_u1f68b.png deleted file mode 100644 index fcb553357..000000000 Binary files a/png/128/emoji_u1f68b.png and /dev/null differ diff --git a/png/128/emoji_u1f68c.png b/png/128/emoji_u1f68c.png deleted file mode 100644 index 5b41f38a5..000000000 Binary files a/png/128/emoji_u1f68c.png and /dev/null differ diff --git a/png/128/emoji_u1f68d.png b/png/128/emoji_u1f68d.png deleted file mode 100644 index 732797707..000000000 Binary files a/png/128/emoji_u1f68d.png and /dev/null differ diff --git a/png/128/emoji_u1f68e.png b/png/128/emoji_u1f68e.png deleted file mode 100644 index 4d23295af..000000000 Binary files a/png/128/emoji_u1f68e.png and /dev/null differ diff --git a/png/128/emoji_u1f68f.png b/png/128/emoji_u1f68f.png deleted file mode 100644 index 32c182d97..000000000 Binary files a/png/128/emoji_u1f68f.png and /dev/null differ diff --git a/png/128/emoji_u1f690.png b/png/128/emoji_u1f690.png deleted file mode 100644 index 2ffa2c77c..000000000 Binary files a/png/128/emoji_u1f690.png and /dev/null differ diff --git a/png/128/emoji_u1f691.png b/png/128/emoji_u1f691.png deleted file mode 100644 index b78feb3a0..000000000 Binary files a/png/128/emoji_u1f691.png and /dev/null differ diff --git a/png/128/emoji_u1f692.png b/png/128/emoji_u1f692.png deleted file mode 100644 index 632422a26..000000000 Binary files a/png/128/emoji_u1f692.png and /dev/null differ diff --git a/png/128/emoji_u1f693.png b/png/128/emoji_u1f693.png deleted file mode 100644 index 887231b69..000000000 Binary files a/png/128/emoji_u1f693.png and /dev/null differ diff --git a/png/128/emoji_u1f694.png b/png/128/emoji_u1f694.png deleted file mode 100644 index a4c6f0dc5..000000000 Binary files a/png/128/emoji_u1f694.png and /dev/null differ diff --git a/png/128/emoji_u1f695.png b/png/128/emoji_u1f695.png deleted file mode 100644 index d4fe61d70..000000000 Binary files a/png/128/emoji_u1f695.png and /dev/null differ diff --git a/png/128/emoji_u1f696.png b/png/128/emoji_u1f696.png deleted file mode 100644 index bf6be2f2c..000000000 Binary files a/png/128/emoji_u1f696.png and /dev/null differ diff --git a/png/128/emoji_u1f697.png b/png/128/emoji_u1f697.png deleted file mode 100644 index 55f3f8de8..000000000 Binary files a/png/128/emoji_u1f697.png and /dev/null differ diff --git a/png/128/emoji_u1f698.png b/png/128/emoji_u1f698.png deleted file mode 100644 index 2854bfee9..000000000 Binary files a/png/128/emoji_u1f698.png and /dev/null differ diff --git a/png/128/emoji_u1f699.png b/png/128/emoji_u1f699.png deleted file mode 100644 index 386bb6bd9..000000000 Binary files a/png/128/emoji_u1f699.png and /dev/null differ diff --git a/png/128/emoji_u1f69a.png b/png/128/emoji_u1f69a.png deleted file mode 100644 index 854002cc8..000000000 Binary files a/png/128/emoji_u1f69a.png and /dev/null differ diff --git a/png/128/emoji_u1f69b.png b/png/128/emoji_u1f69b.png deleted file mode 100644 index 3c0227e60..000000000 Binary files a/png/128/emoji_u1f69b.png and /dev/null differ diff --git a/png/128/emoji_u1f69c.png b/png/128/emoji_u1f69c.png deleted file mode 100644 index b36a30d2d..000000000 Binary files a/png/128/emoji_u1f69c.png and /dev/null differ diff --git a/png/128/emoji_u1f69d.png b/png/128/emoji_u1f69d.png deleted file mode 100644 index 3cc0aa96a..000000000 Binary files a/png/128/emoji_u1f69d.png and /dev/null differ diff --git a/png/128/emoji_u1f69e.png b/png/128/emoji_u1f69e.png deleted file mode 100644 index b32ce2d83..000000000 Binary files a/png/128/emoji_u1f69e.png and /dev/null differ diff --git a/png/128/emoji_u1f69f.png b/png/128/emoji_u1f69f.png deleted file mode 100644 index dc9452590..000000000 Binary files a/png/128/emoji_u1f69f.png and /dev/null differ diff --git a/png/128/emoji_u1f6a0.png b/png/128/emoji_u1f6a0.png deleted file mode 100644 index 739c862c7..000000000 Binary files a/png/128/emoji_u1f6a0.png and /dev/null differ diff --git a/png/128/emoji_u1f6a1.png b/png/128/emoji_u1f6a1.png deleted file mode 100644 index dee9e0b34..000000000 Binary files a/png/128/emoji_u1f6a1.png and /dev/null differ diff --git a/png/128/emoji_u1f6a2.png b/png/128/emoji_u1f6a2.png deleted file mode 100644 index 10376add6..000000000 Binary files a/png/128/emoji_u1f6a2.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3.png b/png/128/emoji_u1f6a3.png deleted file mode 100644 index d2aa7046d..000000000 Binary files a/png/128/emoji_u1f6a3.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fb.png b/png/128/emoji_u1f6a3_1f3fb.png deleted file mode 100644 index c4168d72d..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fb_200d_2640.png b/png/128/emoji_u1f6a3_1f3fb_200d_2640.png deleted file mode 100644 index 447af4587..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fb_200d_2642.png b/png/128/emoji_u1f6a3_1f3fb_200d_2642.png deleted file mode 100644 index c4168d72d..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fc.png b/png/128/emoji_u1f6a3_1f3fc.png deleted file mode 100644 index 4450419ba..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fc_200d_2640.png b/png/128/emoji_u1f6a3_1f3fc_200d_2640.png deleted file mode 100644 index a94735b50..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fc_200d_2642.png b/png/128/emoji_u1f6a3_1f3fc_200d_2642.png deleted file mode 100644 index 4450419ba..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fd.png b/png/128/emoji_u1f6a3_1f3fd.png deleted file mode 100644 index 0e0cf8eaf..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fd_200d_2640.png b/png/128/emoji_u1f6a3_1f3fd_200d_2640.png deleted file mode 100644 index c385636ef..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fd_200d_2642.png b/png/128/emoji_u1f6a3_1f3fd_200d_2642.png deleted file mode 100644 index 0e0cf8eaf..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fe.png b/png/128/emoji_u1f6a3_1f3fe.png deleted file mode 100644 index 8eabe03e8..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fe_200d_2640.png b/png/128/emoji_u1f6a3_1f3fe_200d_2640.png deleted file mode 100644 index 5f41d33f7..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3fe_200d_2642.png b/png/128/emoji_u1f6a3_1f3fe_200d_2642.png deleted file mode 100644 index 8eabe03e8..000000000 Binary files a/png/128/emoji_u1f6a3_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3ff.png b/png/128/emoji_u1f6a3_1f3ff.png deleted file mode 100644 index 5341a9dff..000000000 Binary files a/png/128/emoji_u1f6a3_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3ff_200d_2640.png b/png/128/emoji_u1f6a3_1f3ff_200d_2640.png deleted file mode 100644 index 46e9b9aa6..000000000 Binary files a/png/128/emoji_u1f6a3_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f3ff_200d_2642.png b/png/128/emoji_u1f6a3_1f3ff_200d_2642.png deleted file mode 100644 index 5341a9dff..000000000 Binary files a/png/128/emoji_u1f6a3_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f9b0.png b/png/128/emoji_u1f6a3_1f9b0.png deleted file mode 100644 index 777d7b27d..000000000 Binary files a/png/128/emoji_u1f6a3_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f9b0_200d_2640.png b/png/128/emoji_u1f6a3_1f9b0_200d_2640.png deleted file mode 100644 index 7f605cce7..000000000 Binary files a/png/128/emoji_u1f6a3_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f9b0_200d_2642.png b/png/128/emoji_u1f6a3_1f9b0_200d_2642.png deleted file mode 100644 index 777d7b27d..000000000 Binary files a/png/128/emoji_u1f6a3_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f9b3.png b/png/128/emoji_u1f6a3_1f9b3.png deleted file mode 100644 index bf0d2058b..000000000 Binary files a/png/128/emoji_u1f6a3_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f9b3_200d_2640.png b/png/128/emoji_u1f6a3_1f9b3_200d_2640.png deleted file mode 100644 index efe9b6cd3..000000000 Binary files a/png/128/emoji_u1f6a3_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_1f9b3_200d_2642.png b/png/128/emoji_u1f6a3_1f9b3_200d_2642.png deleted file mode 100644 index bf0d2058b..000000000 Binary files a/png/128/emoji_u1f6a3_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_200d_2640.png b/png/128/emoji_u1f6a3_200d_2640.png deleted file mode 100644 index d35b84dfa..000000000 Binary files a/png/128/emoji_u1f6a3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6a3_200d_2642.png b/png/128/emoji_u1f6a3_200d_2642.png deleted file mode 100644 index d2aa7046d..000000000 Binary files a/png/128/emoji_u1f6a3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6a4.png b/png/128/emoji_u1f6a4.png deleted file mode 100644 index 0697f4b41..000000000 Binary files a/png/128/emoji_u1f6a4.png and /dev/null differ diff --git a/png/128/emoji_u1f6a5.png b/png/128/emoji_u1f6a5.png deleted file mode 100644 index de3cc069f..000000000 Binary files a/png/128/emoji_u1f6a5.png and /dev/null differ diff --git a/png/128/emoji_u1f6a6.png b/png/128/emoji_u1f6a6.png deleted file mode 100644 index 77d428c06..000000000 Binary files a/png/128/emoji_u1f6a6.png and /dev/null differ diff --git a/png/128/emoji_u1f6a7.png b/png/128/emoji_u1f6a7.png deleted file mode 100644 index d3b4b6afb..000000000 Binary files a/png/128/emoji_u1f6a7.png and /dev/null differ diff --git a/png/128/emoji_u1f6a8.png b/png/128/emoji_u1f6a8.png deleted file mode 100644 index 0fde18da5..000000000 Binary files a/png/128/emoji_u1f6a8.png and /dev/null differ diff --git a/png/128/emoji_u1f6a9.png b/png/128/emoji_u1f6a9.png deleted file mode 100644 index 547adb8cf..000000000 Binary files a/png/128/emoji_u1f6a9.png and /dev/null differ diff --git a/png/128/emoji_u1f6aa.png b/png/128/emoji_u1f6aa.png deleted file mode 100644 index aac33aa29..000000000 Binary files a/png/128/emoji_u1f6aa.png and /dev/null differ diff --git a/png/128/emoji_u1f6ab.png b/png/128/emoji_u1f6ab.png deleted file mode 100644 index 3a61dcb14..000000000 Binary files a/png/128/emoji_u1f6ab.png and /dev/null differ diff --git a/png/128/emoji_u1f6ac.png b/png/128/emoji_u1f6ac.png deleted file mode 100644 index 3aae59a4a..000000000 Binary files a/png/128/emoji_u1f6ac.png and /dev/null differ diff --git a/png/128/emoji_u1f6ad.png b/png/128/emoji_u1f6ad.png deleted file mode 100644 index 9361298e5..000000000 Binary files a/png/128/emoji_u1f6ad.png and /dev/null differ diff --git a/png/128/emoji_u1f6ae.png b/png/128/emoji_u1f6ae.png deleted file mode 100644 index 5c234787c..000000000 Binary files a/png/128/emoji_u1f6ae.png and /dev/null differ diff --git a/png/128/emoji_u1f6af.png b/png/128/emoji_u1f6af.png deleted file mode 100644 index 9420f3b59..000000000 Binary files a/png/128/emoji_u1f6af.png and /dev/null differ diff --git a/png/128/emoji_u1f6b0.png b/png/128/emoji_u1f6b0.png deleted file mode 100644 index 3972378ce..000000000 Binary files a/png/128/emoji_u1f6b0.png and /dev/null differ diff --git a/png/128/emoji_u1f6b1.png b/png/128/emoji_u1f6b1.png deleted file mode 100644 index 3d8110218..000000000 Binary files a/png/128/emoji_u1f6b1.png and /dev/null differ diff --git a/png/128/emoji_u1f6b2.png b/png/128/emoji_u1f6b2.png deleted file mode 100644 index ffdac300c..000000000 Binary files a/png/128/emoji_u1f6b2.png and /dev/null differ diff --git a/png/128/emoji_u1f6b3.png b/png/128/emoji_u1f6b3.png deleted file mode 100644 index d15b3e38f..000000000 Binary files a/png/128/emoji_u1f6b3.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4.png b/png/128/emoji_u1f6b4.png deleted file mode 100644 index c3ff4dde2..000000000 Binary files a/png/128/emoji_u1f6b4.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fb.png b/png/128/emoji_u1f6b4_1f3fb.png deleted file mode 100644 index d8dca4620..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fb_200d_2640.png b/png/128/emoji_u1f6b4_1f3fb_200d_2640.png deleted file mode 100644 index ea4c4186f..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fb_200d_2642.png b/png/128/emoji_u1f6b4_1f3fb_200d_2642.png deleted file mode 100644 index d8dca4620..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fc.png b/png/128/emoji_u1f6b4_1f3fc.png deleted file mode 100644 index 0a3e2fa4c..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fc_200d_2640.png b/png/128/emoji_u1f6b4_1f3fc_200d_2640.png deleted file mode 100644 index 9b4413256..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fc_200d_2642.png b/png/128/emoji_u1f6b4_1f3fc_200d_2642.png deleted file mode 100644 index 0a3e2fa4c..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fd.png b/png/128/emoji_u1f6b4_1f3fd.png deleted file mode 100644 index 8d74583a7..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fd_200d_2640.png b/png/128/emoji_u1f6b4_1f3fd_200d_2640.png deleted file mode 100644 index 0a451b109..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fd_200d_2642.png b/png/128/emoji_u1f6b4_1f3fd_200d_2642.png deleted file mode 100644 index 8d74583a7..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fe.png b/png/128/emoji_u1f6b4_1f3fe.png deleted file mode 100644 index 3a80d8a8e..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fe_200d_2640.png b/png/128/emoji_u1f6b4_1f3fe_200d_2640.png deleted file mode 100644 index 71b746887..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3fe_200d_2642.png b/png/128/emoji_u1f6b4_1f3fe_200d_2642.png deleted file mode 100644 index 3a80d8a8e..000000000 Binary files a/png/128/emoji_u1f6b4_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3ff.png b/png/128/emoji_u1f6b4_1f3ff.png deleted file mode 100644 index fe1ff08d1..000000000 Binary files a/png/128/emoji_u1f6b4_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3ff_200d_2640.png b/png/128/emoji_u1f6b4_1f3ff_200d_2640.png deleted file mode 100644 index 4f6ff9341..000000000 Binary files a/png/128/emoji_u1f6b4_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f3ff_200d_2642.png b/png/128/emoji_u1f6b4_1f3ff_200d_2642.png deleted file mode 100644 index fe1ff08d1..000000000 Binary files a/png/128/emoji_u1f6b4_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f9b0.png b/png/128/emoji_u1f6b4_1f9b0.png deleted file mode 100644 index 520cd8332..000000000 Binary files a/png/128/emoji_u1f6b4_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f9b0_200d_2640.png b/png/128/emoji_u1f6b4_1f9b0_200d_2640.png deleted file mode 100644 index afc7edca8..000000000 Binary files a/png/128/emoji_u1f6b4_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f9b0_200d_2642.png b/png/128/emoji_u1f6b4_1f9b0_200d_2642.png deleted file mode 100644 index 520cd8332..000000000 Binary files a/png/128/emoji_u1f6b4_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f9b3.png b/png/128/emoji_u1f6b4_1f9b3.png deleted file mode 100644 index 60a70beb8..000000000 Binary files a/png/128/emoji_u1f6b4_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f9b3_200d_2640.png b/png/128/emoji_u1f6b4_1f9b3_200d_2640.png deleted file mode 100644 index 4b3f1e301..000000000 Binary files a/png/128/emoji_u1f6b4_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_1f9b3_200d_2642.png b/png/128/emoji_u1f6b4_1f9b3_200d_2642.png deleted file mode 100644 index 60a70beb8..000000000 Binary files a/png/128/emoji_u1f6b4_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_200d_2640.png b/png/128/emoji_u1f6b4_200d_2640.png deleted file mode 100644 index 227bae382..000000000 Binary files a/png/128/emoji_u1f6b4_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b4_200d_2642.png b/png/128/emoji_u1f6b4_200d_2642.png deleted file mode 100644 index c3ff4dde2..000000000 Binary files a/png/128/emoji_u1f6b4_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5.png b/png/128/emoji_u1f6b5.png deleted file mode 100644 index 9e2d6a65b..000000000 Binary files a/png/128/emoji_u1f6b5.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fb.png b/png/128/emoji_u1f6b5_1f3fb.png deleted file mode 100644 index 486b53820..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fb_200d_2640.png b/png/128/emoji_u1f6b5_1f3fb_200d_2640.png deleted file mode 100644 index ed51ab81a..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fb_200d_2642.png b/png/128/emoji_u1f6b5_1f3fb_200d_2642.png deleted file mode 100644 index 486b53820..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fc.png b/png/128/emoji_u1f6b5_1f3fc.png deleted file mode 100644 index aa7aca682..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fc_200d_2640.png b/png/128/emoji_u1f6b5_1f3fc_200d_2640.png deleted file mode 100644 index aa84dc1c0..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fc_200d_2642.png b/png/128/emoji_u1f6b5_1f3fc_200d_2642.png deleted file mode 100644 index aa7aca682..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fd.png b/png/128/emoji_u1f6b5_1f3fd.png deleted file mode 100644 index fb668cc4a..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fd_200d_2640.png b/png/128/emoji_u1f6b5_1f3fd_200d_2640.png deleted file mode 100644 index 84de52e0a..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fd_200d_2642.png b/png/128/emoji_u1f6b5_1f3fd_200d_2642.png deleted file mode 100644 index fb668cc4a..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fe.png b/png/128/emoji_u1f6b5_1f3fe.png deleted file mode 100644 index b7ea47eae..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fe_200d_2640.png b/png/128/emoji_u1f6b5_1f3fe_200d_2640.png deleted file mode 100644 index 13e103498..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3fe_200d_2642.png b/png/128/emoji_u1f6b5_1f3fe_200d_2642.png deleted file mode 100644 index b7ea47eae..000000000 Binary files a/png/128/emoji_u1f6b5_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3ff.png b/png/128/emoji_u1f6b5_1f3ff.png deleted file mode 100644 index 9a451997d..000000000 Binary files a/png/128/emoji_u1f6b5_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3ff_200d_2640.png b/png/128/emoji_u1f6b5_1f3ff_200d_2640.png deleted file mode 100644 index 8b515b6d4..000000000 Binary files a/png/128/emoji_u1f6b5_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f3ff_200d_2642.png b/png/128/emoji_u1f6b5_1f3ff_200d_2642.png deleted file mode 100644 index 9a451997d..000000000 Binary files a/png/128/emoji_u1f6b5_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f9b0.png b/png/128/emoji_u1f6b5_1f9b0.png deleted file mode 100644 index 1b41e0789..000000000 Binary files a/png/128/emoji_u1f6b5_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f9b0_200d_2640.png b/png/128/emoji_u1f6b5_1f9b0_200d_2640.png deleted file mode 100644 index ef6508895..000000000 Binary files a/png/128/emoji_u1f6b5_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f9b0_200d_2642.png b/png/128/emoji_u1f6b5_1f9b0_200d_2642.png deleted file mode 100644 index 1b41e0789..000000000 Binary files a/png/128/emoji_u1f6b5_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f9b3.png b/png/128/emoji_u1f6b5_1f9b3.png deleted file mode 100644 index 7edad603a..000000000 Binary files a/png/128/emoji_u1f6b5_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f9b3_200d_2640.png b/png/128/emoji_u1f6b5_1f9b3_200d_2640.png deleted file mode 100644 index 946a2302b..000000000 Binary files a/png/128/emoji_u1f6b5_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_1f9b3_200d_2642.png b/png/128/emoji_u1f6b5_1f9b3_200d_2642.png deleted file mode 100644 index 7edad603a..000000000 Binary files a/png/128/emoji_u1f6b5_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_200d_2640.png b/png/128/emoji_u1f6b5_200d_2640.png deleted file mode 100644 index c99e2554c..000000000 Binary files a/png/128/emoji_u1f6b5_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b5_200d_2642.png b/png/128/emoji_u1f6b5_200d_2642.png deleted file mode 100644 index 9e2d6a65b..000000000 Binary files a/png/128/emoji_u1f6b5_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6.png b/png/128/emoji_u1f6b6.png deleted file mode 100644 index ef210f6d0..000000000 Binary files a/png/128/emoji_u1f6b6.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fb.png b/png/128/emoji_u1f6b6_1f3fb.png deleted file mode 100644 index 06e5bd5d5..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fb_200d_2640.png b/png/128/emoji_u1f6b6_1f3fb_200d_2640.png deleted file mode 100644 index 41b60d3de..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fb_200d_2642.png b/png/128/emoji_u1f6b6_1f3fb_200d_2642.png deleted file mode 100644 index 06e5bd5d5..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fc.png b/png/128/emoji_u1f6b6_1f3fc.png deleted file mode 100644 index 6a8208982..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fc_200d_2640.png b/png/128/emoji_u1f6b6_1f3fc_200d_2640.png deleted file mode 100644 index 5ccd02ee8..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fc_200d_2642.png b/png/128/emoji_u1f6b6_1f3fc_200d_2642.png deleted file mode 100644 index 6a8208982..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fd.png b/png/128/emoji_u1f6b6_1f3fd.png deleted file mode 100644 index ac3e97b3e..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fd_200d_2640.png b/png/128/emoji_u1f6b6_1f3fd_200d_2640.png deleted file mode 100644 index fbe29a8b5..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fd_200d_2642.png b/png/128/emoji_u1f6b6_1f3fd_200d_2642.png deleted file mode 100644 index ac3e97b3e..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fe.png b/png/128/emoji_u1f6b6_1f3fe.png deleted file mode 100644 index 843f98d91..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fe_200d_2640.png b/png/128/emoji_u1f6b6_1f3fe_200d_2640.png deleted file mode 100644 index 2798a89b6..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3fe_200d_2642.png b/png/128/emoji_u1f6b6_1f3fe_200d_2642.png deleted file mode 100644 index 843f98d91..000000000 Binary files a/png/128/emoji_u1f6b6_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3ff.png b/png/128/emoji_u1f6b6_1f3ff.png deleted file mode 100644 index 5a0b4faf9..000000000 Binary files a/png/128/emoji_u1f6b6_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3ff_200d_2640.png b/png/128/emoji_u1f6b6_1f3ff_200d_2640.png deleted file mode 100644 index 72d20fecd..000000000 Binary files a/png/128/emoji_u1f6b6_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f3ff_200d_2642.png b/png/128/emoji_u1f6b6_1f3ff_200d_2642.png deleted file mode 100644 index 5a0b4faf9..000000000 Binary files a/png/128/emoji_u1f6b6_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f9b0.png b/png/128/emoji_u1f6b6_1f9b0.png deleted file mode 100644 index b7396930d..000000000 Binary files a/png/128/emoji_u1f6b6_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f9b0_200d_2640.png b/png/128/emoji_u1f6b6_1f9b0_200d_2640.png deleted file mode 100644 index bb293a0c4..000000000 Binary files a/png/128/emoji_u1f6b6_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f9b0_200d_2642.png b/png/128/emoji_u1f6b6_1f9b0_200d_2642.png deleted file mode 100644 index b7396930d..000000000 Binary files a/png/128/emoji_u1f6b6_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f9b3.png b/png/128/emoji_u1f6b6_1f9b3.png deleted file mode 100644 index ca64d51df..000000000 Binary files a/png/128/emoji_u1f6b6_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f9b3_200d_2640.png b/png/128/emoji_u1f6b6_1f9b3_200d_2640.png deleted file mode 100644 index c3afcc975..000000000 Binary files a/png/128/emoji_u1f6b6_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_1f9b3_200d_2642.png b/png/128/emoji_u1f6b6_1f9b3_200d_2642.png deleted file mode 100644 index ca64d51df..000000000 Binary files a/png/128/emoji_u1f6b6_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_200d_2640.png b/png/128/emoji_u1f6b6_200d_2640.png deleted file mode 100644 index 3601d5c15..000000000 Binary files a/png/128/emoji_u1f6b6_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f6b6_200d_2642.png b/png/128/emoji_u1f6b6_200d_2642.png deleted file mode 100644 index ef210f6d0..000000000 Binary files a/png/128/emoji_u1f6b6_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f6b7.png b/png/128/emoji_u1f6b7.png deleted file mode 100644 index 0b033cd04..000000000 Binary files a/png/128/emoji_u1f6b7.png and /dev/null differ diff --git a/png/128/emoji_u1f6b8.png b/png/128/emoji_u1f6b8.png deleted file mode 100644 index d5e9ea0bc..000000000 Binary files a/png/128/emoji_u1f6b8.png and /dev/null differ diff --git a/png/128/emoji_u1f6b9.png b/png/128/emoji_u1f6b9.png deleted file mode 100644 index 0446ef16c..000000000 Binary files a/png/128/emoji_u1f6b9.png and /dev/null differ diff --git a/png/128/emoji_u1f6ba.png b/png/128/emoji_u1f6ba.png deleted file mode 100644 index 7e45f55f3..000000000 Binary files a/png/128/emoji_u1f6ba.png and /dev/null differ diff --git a/png/128/emoji_u1f6bb.png b/png/128/emoji_u1f6bb.png deleted file mode 100644 index 9b30783c4..000000000 Binary files a/png/128/emoji_u1f6bb.png and /dev/null differ diff --git a/png/128/emoji_u1f6bc.png b/png/128/emoji_u1f6bc.png deleted file mode 100644 index 36282260a..000000000 Binary files a/png/128/emoji_u1f6bc.png and /dev/null differ diff --git a/png/128/emoji_u1f6bd.png b/png/128/emoji_u1f6bd.png deleted file mode 100644 index d78c0e998..000000000 Binary files a/png/128/emoji_u1f6bd.png and /dev/null differ diff --git a/png/128/emoji_u1f6be.png b/png/128/emoji_u1f6be.png deleted file mode 100644 index b14c0e089..000000000 Binary files a/png/128/emoji_u1f6be.png and /dev/null differ diff --git a/png/128/emoji_u1f6bf.png b/png/128/emoji_u1f6bf.png deleted file mode 100644 index aecff5b8e..000000000 Binary files a/png/128/emoji_u1f6bf.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0.png b/png/128/emoji_u1f6c0.png deleted file mode 100644 index 30f12c611..000000000 Binary files a/png/128/emoji_u1f6c0.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0_1f3fb.png b/png/128/emoji_u1f6c0_1f3fb.png deleted file mode 100644 index 2d4b951a3..000000000 Binary files a/png/128/emoji_u1f6c0_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0_1f3fc.png b/png/128/emoji_u1f6c0_1f3fc.png deleted file mode 100644 index 353d23c8a..000000000 Binary files a/png/128/emoji_u1f6c0_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0_1f3fd.png b/png/128/emoji_u1f6c0_1f3fd.png deleted file mode 100644 index 1d6cf88d1..000000000 Binary files a/png/128/emoji_u1f6c0_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0_1f3fe.png b/png/128/emoji_u1f6c0_1f3fe.png deleted file mode 100644 index 861a44c5a..000000000 Binary files a/png/128/emoji_u1f6c0_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0_1f3ff.png b/png/128/emoji_u1f6c0_1f3ff.png deleted file mode 100644 index 4bb41b6ae..000000000 Binary files a/png/128/emoji_u1f6c0_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0_1f9b0.png b/png/128/emoji_u1f6c0_1f9b0.png deleted file mode 100644 index 507b929ae..000000000 Binary files a/png/128/emoji_u1f6c0_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f6c0_1f9b3.png b/png/128/emoji_u1f6c0_1f9b3.png deleted file mode 100644 index 42745fd52..000000000 Binary files a/png/128/emoji_u1f6c0_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f6c1.png b/png/128/emoji_u1f6c1.png deleted file mode 100644 index 2677b1bce..000000000 Binary files a/png/128/emoji_u1f6c1.png and /dev/null differ diff --git a/png/128/emoji_u1f6c2.png b/png/128/emoji_u1f6c2.png deleted file mode 100644 index 25a3a6fa6..000000000 Binary files a/png/128/emoji_u1f6c2.png and /dev/null differ diff --git a/png/128/emoji_u1f6c3.png b/png/128/emoji_u1f6c3.png deleted file mode 100644 index 9f241b294..000000000 Binary files a/png/128/emoji_u1f6c3.png and /dev/null differ diff --git a/png/128/emoji_u1f6c4.png b/png/128/emoji_u1f6c4.png deleted file mode 100644 index 163661c1e..000000000 Binary files a/png/128/emoji_u1f6c4.png and /dev/null differ diff --git a/png/128/emoji_u1f6c5.png b/png/128/emoji_u1f6c5.png deleted file mode 100644 index 29c45d750..000000000 Binary files a/png/128/emoji_u1f6c5.png and /dev/null differ diff --git a/png/128/emoji_u1f6cb.png b/png/128/emoji_u1f6cb.png deleted file mode 100644 index 61e13a74b..000000000 Binary files a/png/128/emoji_u1f6cb.png and /dev/null differ diff --git a/png/128/emoji_u1f6cc.png b/png/128/emoji_u1f6cc.png deleted file mode 100644 index e002a2629..000000000 Binary files a/png/128/emoji_u1f6cc.png and /dev/null differ diff --git a/png/128/emoji_u1f6cc_1f3fb.png b/png/128/emoji_u1f6cc_1f3fb.png deleted file mode 100644 index d98a7681f..000000000 Binary files a/png/128/emoji_u1f6cc_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f6cc_1f3fc.png b/png/128/emoji_u1f6cc_1f3fc.png deleted file mode 100644 index a501bcb3f..000000000 Binary files a/png/128/emoji_u1f6cc_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f6cc_1f3fd.png b/png/128/emoji_u1f6cc_1f3fd.png deleted file mode 100644 index d862e06d3..000000000 Binary files a/png/128/emoji_u1f6cc_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f6cc_1f3fe.png b/png/128/emoji_u1f6cc_1f3fe.png deleted file mode 100644 index 5599a1fc0..000000000 Binary files a/png/128/emoji_u1f6cc_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f6cc_1f3ff.png b/png/128/emoji_u1f6cc_1f3ff.png deleted file mode 100644 index c97326379..000000000 Binary files a/png/128/emoji_u1f6cc_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f6cd.png b/png/128/emoji_u1f6cd.png deleted file mode 100644 index 617893c70..000000000 Binary files a/png/128/emoji_u1f6cd.png and /dev/null differ diff --git a/png/128/emoji_u1f6ce.png b/png/128/emoji_u1f6ce.png deleted file mode 100644 index 709a887d4..000000000 Binary files a/png/128/emoji_u1f6ce.png and /dev/null differ diff --git a/png/128/emoji_u1f6cf.png b/png/128/emoji_u1f6cf.png deleted file mode 100644 index aef3c2615..000000000 Binary files a/png/128/emoji_u1f6cf.png and /dev/null differ diff --git a/png/128/emoji_u1f6d0.png b/png/128/emoji_u1f6d0.png deleted file mode 100644 index d791ed143..000000000 Binary files a/png/128/emoji_u1f6d0.png and /dev/null differ diff --git a/png/128/emoji_u1f6d1.png b/png/128/emoji_u1f6d1.png deleted file mode 100644 index fa314ca3b..000000000 Binary files a/png/128/emoji_u1f6d1.png and /dev/null differ diff --git a/png/128/emoji_u1f6d2.png b/png/128/emoji_u1f6d2.png deleted file mode 100644 index 3e1494373..000000000 Binary files a/png/128/emoji_u1f6d2.png and /dev/null differ diff --git a/png/128/emoji_u1f6d5.png b/png/128/emoji_u1f6d5.png deleted file mode 100644 index 324277c3f..000000000 Binary files a/png/128/emoji_u1f6d5.png and /dev/null differ diff --git a/png/128/emoji_u1f6e0.png b/png/128/emoji_u1f6e0.png deleted file mode 100644 index 61bb97aa0..000000000 Binary files a/png/128/emoji_u1f6e0.png and /dev/null differ diff --git a/png/128/emoji_u1f6e1.png b/png/128/emoji_u1f6e1.png deleted file mode 100644 index 447b1d867..000000000 Binary files a/png/128/emoji_u1f6e1.png and /dev/null differ diff --git a/png/128/emoji_u1f6e2.png b/png/128/emoji_u1f6e2.png deleted file mode 100644 index 6f4bffbf5..000000000 Binary files a/png/128/emoji_u1f6e2.png and /dev/null differ diff --git a/png/128/emoji_u1f6e3.png b/png/128/emoji_u1f6e3.png deleted file mode 100644 index 9320f11bf..000000000 Binary files a/png/128/emoji_u1f6e3.png and /dev/null differ diff --git a/png/128/emoji_u1f6e4.png b/png/128/emoji_u1f6e4.png deleted file mode 100644 index ed8c2165b..000000000 Binary files a/png/128/emoji_u1f6e4.png and /dev/null differ diff --git a/png/128/emoji_u1f6e5.png b/png/128/emoji_u1f6e5.png deleted file mode 100644 index 36a017450..000000000 Binary files a/png/128/emoji_u1f6e5.png and /dev/null differ diff --git a/png/128/emoji_u1f6e9.png b/png/128/emoji_u1f6e9.png deleted file mode 100644 index bbb445583..000000000 Binary files a/png/128/emoji_u1f6e9.png and /dev/null differ diff --git a/png/128/emoji_u1f6eb.png b/png/128/emoji_u1f6eb.png deleted file mode 100644 index 4f43ea41e..000000000 Binary files a/png/128/emoji_u1f6eb.png and /dev/null differ diff --git a/png/128/emoji_u1f6ec.png b/png/128/emoji_u1f6ec.png deleted file mode 100644 index deceda9af..000000000 Binary files a/png/128/emoji_u1f6ec.png and /dev/null differ diff --git a/png/128/emoji_u1f6f0.png b/png/128/emoji_u1f6f0.png deleted file mode 100644 index 892b75a75..000000000 Binary files a/png/128/emoji_u1f6f0.png and /dev/null differ diff --git a/png/128/emoji_u1f6f3.png b/png/128/emoji_u1f6f3.png deleted file mode 100644 index 24005bf38..000000000 Binary files a/png/128/emoji_u1f6f3.png and /dev/null differ diff --git a/png/128/emoji_u1f6f4.png b/png/128/emoji_u1f6f4.png deleted file mode 100644 index d4acff29d..000000000 Binary files a/png/128/emoji_u1f6f4.png and /dev/null differ diff --git a/png/128/emoji_u1f6f5.png b/png/128/emoji_u1f6f5.png deleted file mode 100644 index 7c488f64c..000000000 Binary files a/png/128/emoji_u1f6f5.png and /dev/null differ diff --git a/png/128/emoji_u1f6f6.png b/png/128/emoji_u1f6f6.png deleted file mode 100644 index 459b577f5..000000000 Binary files a/png/128/emoji_u1f6f6.png and /dev/null differ diff --git a/png/128/emoji_u1f6f7.png b/png/128/emoji_u1f6f7.png deleted file mode 100644 index baec8f88e..000000000 Binary files a/png/128/emoji_u1f6f7.png and /dev/null differ diff --git a/png/128/emoji_u1f6f8.png b/png/128/emoji_u1f6f8.png deleted file mode 100644 index 909d3e4dc..000000000 Binary files a/png/128/emoji_u1f6f8.png and /dev/null differ diff --git a/png/128/emoji_u1f6f9.png b/png/128/emoji_u1f6f9.png deleted file mode 100644 index 7f973dd9f..000000000 Binary files a/png/128/emoji_u1f6f9.png and /dev/null differ diff --git a/png/128/emoji_u1f6fa.png b/png/128/emoji_u1f6fa.png deleted file mode 100644 index a922ecf20..000000000 Binary files a/png/128/emoji_u1f6fa.png and /dev/null differ diff --git a/png/128/emoji_u1f7e0.png b/png/128/emoji_u1f7e0.png deleted file mode 100644 index 463c8a456..000000000 Binary files a/png/128/emoji_u1f7e0.png and /dev/null differ diff --git a/png/128/emoji_u1f7e1.png b/png/128/emoji_u1f7e1.png deleted file mode 100644 index 259597f4c..000000000 Binary files a/png/128/emoji_u1f7e1.png and /dev/null differ diff --git a/png/128/emoji_u1f7e2.png b/png/128/emoji_u1f7e2.png deleted file mode 100644 index 935892843..000000000 Binary files a/png/128/emoji_u1f7e2.png and /dev/null differ diff --git a/png/128/emoji_u1f7e3.png b/png/128/emoji_u1f7e3.png deleted file mode 100644 index e79a0cf5b..000000000 Binary files a/png/128/emoji_u1f7e3.png and /dev/null differ diff --git a/png/128/emoji_u1f7e4.png b/png/128/emoji_u1f7e4.png deleted file mode 100644 index 8fb5ae7ab..000000000 Binary files a/png/128/emoji_u1f7e4.png and /dev/null differ diff --git a/png/128/emoji_u1f7e5.png b/png/128/emoji_u1f7e5.png deleted file mode 100644 index 7b0c6fd8a..000000000 Binary files a/png/128/emoji_u1f7e5.png and /dev/null differ diff --git a/png/128/emoji_u1f7e6.png b/png/128/emoji_u1f7e6.png deleted file mode 100644 index 9d67c78cb..000000000 Binary files a/png/128/emoji_u1f7e6.png and /dev/null differ diff --git a/png/128/emoji_u1f7e7.png b/png/128/emoji_u1f7e7.png deleted file mode 100644 index 1e0fc7166..000000000 Binary files a/png/128/emoji_u1f7e7.png and /dev/null differ diff --git a/png/128/emoji_u1f7e8.png b/png/128/emoji_u1f7e8.png deleted file mode 100644 index a95faf414..000000000 Binary files a/png/128/emoji_u1f7e8.png and /dev/null differ diff --git a/png/128/emoji_u1f7e9.png b/png/128/emoji_u1f7e9.png deleted file mode 100644 index af234c2c1..000000000 Binary files a/png/128/emoji_u1f7e9.png and /dev/null differ diff --git a/png/128/emoji_u1f7ea.png b/png/128/emoji_u1f7ea.png deleted file mode 100644 index c3d6b3388..000000000 Binary files a/png/128/emoji_u1f7ea.png and /dev/null differ diff --git a/png/128/emoji_u1f7eb.png b/png/128/emoji_u1f7eb.png deleted file mode 100644 index d7a2b7317..000000000 Binary files a/png/128/emoji_u1f7eb.png and /dev/null differ diff --git a/png/128/emoji_u1f90d.png b/png/128/emoji_u1f90d.png deleted file mode 100644 index a65d7e7db..000000000 Binary files a/png/128/emoji_u1f90d.png and /dev/null differ diff --git a/png/128/emoji_u1f90e.png b/png/128/emoji_u1f90e.png deleted file mode 100644 index 66a06bb5d..000000000 Binary files a/png/128/emoji_u1f90e.png and /dev/null differ diff --git a/png/128/emoji_u1f90f.png b/png/128/emoji_u1f90f.png deleted file mode 100644 index 100a6ce2e..000000000 Binary files a/png/128/emoji_u1f90f.png and /dev/null differ diff --git a/png/128/emoji_u1f90f_1f3fb.png b/png/128/emoji_u1f90f_1f3fb.png deleted file mode 100644 index 69df8e4b7..000000000 Binary files a/png/128/emoji_u1f90f_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f90f_1f3fc.png b/png/128/emoji_u1f90f_1f3fc.png deleted file mode 100644 index 1ddb0cd81..000000000 Binary files a/png/128/emoji_u1f90f_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f90f_1f3fd.png b/png/128/emoji_u1f90f_1f3fd.png deleted file mode 100644 index b7b97717f..000000000 Binary files a/png/128/emoji_u1f90f_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f90f_1f3fe.png b/png/128/emoji_u1f90f_1f3fe.png deleted file mode 100644 index d937906cd..000000000 Binary files a/png/128/emoji_u1f90f_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f90f_1f3ff.png b/png/128/emoji_u1f90f_1f3ff.png deleted file mode 100644 index 48db6105d..000000000 Binary files a/png/128/emoji_u1f90f_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f910.png b/png/128/emoji_u1f910.png deleted file mode 100644 index 7b4216ad1..000000000 Binary files a/png/128/emoji_u1f910.png and /dev/null differ diff --git a/png/128/emoji_u1f911.png b/png/128/emoji_u1f911.png deleted file mode 100644 index a3cc29fc8..000000000 Binary files a/png/128/emoji_u1f911.png and /dev/null differ diff --git a/png/128/emoji_u1f912.png b/png/128/emoji_u1f912.png deleted file mode 100644 index f48a7454d..000000000 Binary files a/png/128/emoji_u1f912.png and /dev/null differ diff --git a/png/128/emoji_u1f913.png b/png/128/emoji_u1f913.png deleted file mode 100644 index 478097244..000000000 Binary files a/png/128/emoji_u1f913.png and /dev/null differ diff --git a/png/128/emoji_u1f914.png b/png/128/emoji_u1f914.png deleted file mode 100644 index aa723bb00..000000000 Binary files a/png/128/emoji_u1f914.png and /dev/null differ diff --git a/png/128/emoji_u1f915.png b/png/128/emoji_u1f915.png deleted file mode 100644 index 1fcb7dbcd..000000000 Binary files a/png/128/emoji_u1f915.png and /dev/null differ diff --git a/png/128/emoji_u1f916.png b/png/128/emoji_u1f916.png deleted file mode 100644 index 603af8532..000000000 Binary files a/png/128/emoji_u1f916.png and /dev/null differ diff --git a/png/128/emoji_u1f917.png b/png/128/emoji_u1f917.png deleted file mode 100644 index 54ee4cc70..000000000 Binary files a/png/128/emoji_u1f917.png and /dev/null differ diff --git a/png/128/emoji_u1f918.png b/png/128/emoji_u1f918.png deleted file mode 100644 index 87d2e3cb7..000000000 Binary files a/png/128/emoji_u1f918.png and /dev/null differ diff --git a/png/128/emoji_u1f918_1f3fb.png b/png/128/emoji_u1f918_1f3fb.png deleted file mode 100644 index 626e3aba3..000000000 Binary files a/png/128/emoji_u1f918_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f918_1f3fc.png b/png/128/emoji_u1f918_1f3fc.png deleted file mode 100644 index 84fb0dfc5..000000000 Binary files a/png/128/emoji_u1f918_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f918_1f3fd.png b/png/128/emoji_u1f918_1f3fd.png deleted file mode 100644 index 68c6d6b06..000000000 Binary files a/png/128/emoji_u1f918_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f918_1f3fe.png b/png/128/emoji_u1f918_1f3fe.png deleted file mode 100644 index 0c5ed1cd4..000000000 Binary files a/png/128/emoji_u1f918_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f918_1f3ff.png b/png/128/emoji_u1f918_1f3ff.png deleted file mode 100644 index e0ea06ddb..000000000 Binary files a/png/128/emoji_u1f918_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f919.png b/png/128/emoji_u1f919.png deleted file mode 100644 index 492010bce..000000000 Binary files a/png/128/emoji_u1f919.png and /dev/null differ diff --git a/png/128/emoji_u1f919_1f3fb.png b/png/128/emoji_u1f919_1f3fb.png deleted file mode 100644 index 81a4e5152..000000000 Binary files a/png/128/emoji_u1f919_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f919_1f3fc.png b/png/128/emoji_u1f919_1f3fc.png deleted file mode 100644 index a27bbe3bc..000000000 Binary files a/png/128/emoji_u1f919_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f919_1f3fd.png b/png/128/emoji_u1f919_1f3fd.png deleted file mode 100644 index bb021ee21..000000000 Binary files a/png/128/emoji_u1f919_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f919_1f3fe.png b/png/128/emoji_u1f919_1f3fe.png deleted file mode 100644 index 2840ff409..000000000 Binary files a/png/128/emoji_u1f919_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f919_1f3ff.png b/png/128/emoji_u1f919_1f3ff.png deleted file mode 100644 index b41455337..000000000 Binary files a/png/128/emoji_u1f919_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f91a.png b/png/128/emoji_u1f91a.png deleted file mode 100644 index b84ed4672..000000000 Binary files a/png/128/emoji_u1f91a.png and /dev/null differ diff --git a/png/128/emoji_u1f91a_1f3fb.png b/png/128/emoji_u1f91a_1f3fb.png deleted file mode 100644 index e5986474e..000000000 Binary files a/png/128/emoji_u1f91a_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f91a_1f3fc.png b/png/128/emoji_u1f91a_1f3fc.png deleted file mode 100644 index 98e7304ad..000000000 Binary files a/png/128/emoji_u1f91a_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f91a_1f3fd.png b/png/128/emoji_u1f91a_1f3fd.png deleted file mode 100644 index 7c475b844..000000000 Binary files a/png/128/emoji_u1f91a_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f91a_1f3fe.png b/png/128/emoji_u1f91a_1f3fe.png deleted file mode 100644 index 10465e3ec..000000000 Binary files a/png/128/emoji_u1f91a_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f91a_1f3ff.png b/png/128/emoji_u1f91a_1f3ff.png deleted file mode 100644 index 171f4ced1..000000000 Binary files a/png/128/emoji_u1f91a_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f91b.png b/png/128/emoji_u1f91b.png deleted file mode 100644 index 408ab0bd9..000000000 Binary files a/png/128/emoji_u1f91b.png and /dev/null differ diff --git a/png/128/emoji_u1f91b_1f3fb.png b/png/128/emoji_u1f91b_1f3fb.png deleted file mode 100644 index a2ebe56be..000000000 Binary files a/png/128/emoji_u1f91b_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f91b_1f3fc.png b/png/128/emoji_u1f91b_1f3fc.png deleted file mode 100644 index 383a8f530..000000000 Binary files a/png/128/emoji_u1f91b_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f91b_1f3fd.png b/png/128/emoji_u1f91b_1f3fd.png deleted file mode 100644 index d0930141d..000000000 Binary files a/png/128/emoji_u1f91b_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f91b_1f3fe.png b/png/128/emoji_u1f91b_1f3fe.png deleted file mode 100644 index 58a00127d..000000000 Binary files a/png/128/emoji_u1f91b_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f91b_1f3ff.png b/png/128/emoji_u1f91b_1f3ff.png deleted file mode 100644 index b817312a5..000000000 Binary files a/png/128/emoji_u1f91b_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f91c.png b/png/128/emoji_u1f91c.png deleted file mode 100644 index 0d362a6fb..000000000 Binary files a/png/128/emoji_u1f91c.png and /dev/null differ diff --git a/png/128/emoji_u1f91c_1f3fb.png b/png/128/emoji_u1f91c_1f3fb.png deleted file mode 100644 index b9e442b20..000000000 Binary files a/png/128/emoji_u1f91c_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f91c_1f3fc.png b/png/128/emoji_u1f91c_1f3fc.png deleted file mode 100644 index ce8966de7..000000000 Binary files a/png/128/emoji_u1f91c_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f91c_1f3fd.png b/png/128/emoji_u1f91c_1f3fd.png deleted file mode 100644 index 8f7ace0d6..000000000 Binary files a/png/128/emoji_u1f91c_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f91c_1f3fe.png b/png/128/emoji_u1f91c_1f3fe.png deleted file mode 100644 index 7d373853a..000000000 Binary files a/png/128/emoji_u1f91c_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f91c_1f3ff.png b/png/128/emoji_u1f91c_1f3ff.png deleted file mode 100644 index c0d4a4289..000000000 Binary files a/png/128/emoji_u1f91c_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f91d.png b/png/128/emoji_u1f91d.png deleted file mode 100644 index 232c53efb..000000000 Binary files a/png/128/emoji_u1f91d.png and /dev/null differ diff --git a/png/128/emoji_u1f91d_1f3fb.png b/png/128/emoji_u1f91d_1f3fb.png deleted file mode 100644 index b11958040..000000000 Binary files a/png/128/emoji_u1f91d_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f91d_1f3fc.png b/png/128/emoji_u1f91d_1f3fc.png deleted file mode 100644 index 1ad3aeee3..000000000 Binary files a/png/128/emoji_u1f91d_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f91d_1f3fd.png b/png/128/emoji_u1f91d_1f3fd.png deleted file mode 100644 index b55cc056b..000000000 Binary files a/png/128/emoji_u1f91d_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f91d_1f3fe.png b/png/128/emoji_u1f91d_1f3fe.png deleted file mode 100644 index aa2be0f8d..000000000 Binary files a/png/128/emoji_u1f91d_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f91d_1f3ff.png b/png/128/emoji_u1f91d_1f3ff.png deleted file mode 100644 index 4fea6b8ba..000000000 Binary files a/png/128/emoji_u1f91d_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f91e.png b/png/128/emoji_u1f91e.png deleted file mode 100644 index a3801d159..000000000 Binary files a/png/128/emoji_u1f91e.png and /dev/null differ diff --git a/png/128/emoji_u1f91e_1f3fb.png b/png/128/emoji_u1f91e_1f3fb.png deleted file mode 100644 index 3c693e1c6..000000000 Binary files a/png/128/emoji_u1f91e_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f91e_1f3fc.png b/png/128/emoji_u1f91e_1f3fc.png deleted file mode 100644 index f29705b56..000000000 Binary files a/png/128/emoji_u1f91e_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f91e_1f3fd.png b/png/128/emoji_u1f91e_1f3fd.png deleted file mode 100644 index 7f77f095f..000000000 Binary files a/png/128/emoji_u1f91e_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f91e_1f3fe.png b/png/128/emoji_u1f91e_1f3fe.png deleted file mode 100644 index 7e3e30814..000000000 Binary files a/png/128/emoji_u1f91e_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f91e_1f3ff.png b/png/128/emoji_u1f91e_1f3ff.png deleted file mode 100644 index 5fb13c2cb..000000000 Binary files a/png/128/emoji_u1f91e_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f91f.png b/png/128/emoji_u1f91f.png deleted file mode 100644 index f5331221c..000000000 Binary files a/png/128/emoji_u1f91f.png and /dev/null differ diff --git a/png/128/emoji_u1f91f_1f3fb.png b/png/128/emoji_u1f91f_1f3fb.png deleted file mode 100644 index 36d7122ed..000000000 Binary files a/png/128/emoji_u1f91f_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f91f_1f3fc.png b/png/128/emoji_u1f91f_1f3fc.png deleted file mode 100644 index eb39db9b2..000000000 Binary files a/png/128/emoji_u1f91f_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f91f_1f3fd.png b/png/128/emoji_u1f91f_1f3fd.png deleted file mode 100644 index 416d10504..000000000 Binary files a/png/128/emoji_u1f91f_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f91f_1f3fe.png b/png/128/emoji_u1f91f_1f3fe.png deleted file mode 100644 index 85bebe285..000000000 Binary files a/png/128/emoji_u1f91f_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f91f_1f3ff.png b/png/128/emoji_u1f91f_1f3ff.png deleted file mode 100644 index 1c61e2308..000000000 Binary files a/png/128/emoji_u1f91f_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f920.png b/png/128/emoji_u1f920.png deleted file mode 100644 index 48834e985..000000000 Binary files a/png/128/emoji_u1f920.png and /dev/null differ diff --git a/png/128/emoji_u1f921.png b/png/128/emoji_u1f921.png deleted file mode 100644 index 35efb611e..000000000 Binary files a/png/128/emoji_u1f921.png and /dev/null differ diff --git a/png/128/emoji_u1f922.png b/png/128/emoji_u1f922.png deleted file mode 100644 index 855e37b02..000000000 Binary files a/png/128/emoji_u1f922.png and /dev/null differ diff --git a/png/128/emoji_u1f923.png b/png/128/emoji_u1f923.png deleted file mode 100644 index b0e097c42..000000000 Binary files a/png/128/emoji_u1f923.png and /dev/null differ diff --git a/png/128/emoji_u1f924.png b/png/128/emoji_u1f924.png deleted file mode 100644 index 797784d36..000000000 Binary files a/png/128/emoji_u1f924.png and /dev/null differ diff --git a/png/128/emoji_u1f924_200d_2063.png b/png/128/emoji_u1f924_200d_2063.png deleted file mode 100644 index a90440be9..000000000 Binary files a/png/128/emoji_u1f924_200d_2063.png and /dev/null differ diff --git a/png/128/emoji_u1f925.png b/png/128/emoji_u1f925.png deleted file mode 100644 index 74efe18c4..000000000 Binary files a/png/128/emoji_u1f925.png and /dev/null differ diff --git a/png/128/emoji_u1f926.png b/png/128/emoji_u1f926.png deleted file mode 100644 index 85ed3da46..000000000 Binary files a/png/128/emoji_u1f926.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fb.png b/png/128/emoji_u1f926_1f3fb.png deleted file mode 100644 index 9863a268b..000000000 Binary files a/png/128/emoji_u1f926_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fb_200d_2640.png b/png/128/emoji_u1f926_1f3fb_200d_2640.png deleted file mode 100644 index 9863a268b..000000000 Binary files a/png/128/emoji_u1f926_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fb_200d_2642.png b/png/128/emoji_u1f926_1f3fb_200d_2642.png deleted file mode 100644 index 34ddff952..000000000 Binary files a/png/128/emoji_u1f926_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fc.png b/png/128/emoji_u1f926_1f3fc.png deleted file mode 100644 index c8f8af1ca..000000000 Binary files a/png/128/emoji_u1f926_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fc_200d_2640.png b/png/128/emoji_u1f926_1f3fc_200d_2640.png deleted file mode 100644 index c8f8af1ca..000000000 Binary files a/png/128/emoji_u1f926_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fc_200d_2642.png b/png/128/emoji_u1f926_1f3fc_200d_2642.png deleted file mode 100644 index f1a955a6c..000000000 Binary files a/png/128/emoji_u1f926_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fd.png b/png/128/emoji_u1f926_1f3fd.png deleted file mode 100644 index 7f7a9e092..000000000 Binary files a/png/128/emoji_u1f926_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fd_200d_2640.png b/png/128/emoji_u1f926_1f3fd_200d_2640.png deleted file mode 100644 index 7f7a9e092..000000000 Binary files a/png/128/emoji_u1f926_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fd_200d_2642.png b/png/128/emoji_u1f926_1f3fd_200d_2642.png deleted file mode 100644 index 406bee64c..000000000 Binary files a/png/128/emoji_u1f926_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fe.png b/png/128/emoji_u1f926_1f3fe.png deleted file mode 100644 index a03ebba0a..000000000 Binary files a/png/128/emoji_u1f926_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fe_200d_2640.png b/png/128/emoji_u1f926_1f3fe_200d_2640.png deleted file mode 100644 index a03ebba0a..000000000 Binary files a/png/128/emoji_u1f926_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3fe_200d_2642.png b/png/128/emoji_u1f926_1f3fe_200d_2642.png deleted file mode 100644 index 81e86468d..000000000 Binary files a/png/128/emoji_u1f926_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3ff.png b/png/128/emoji_u1f926_1f3ff.png deleted file mode 100644 index 611078b8b..000000000 Binary files a/png/128/emoji_u1f926_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3ff_200d_2640.png b/png/128/emoji_u1f926_1f3ff_200d_2640.png deleted file mode 100644 index 611078b8b..000000000 Binary files a/png/128/emoji_u1f926_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f3ff_200d_2642.png b/png/128/emoji_u1f926_1f3ff_200d_2642.png deleted file mode 100644 index abe15d303..000000000 Binary files a/png/128/emoji_u1f926_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f9b0.png b/png/128/emoji_u1f926_1f9b0.png deleted file mode 100644 index 8896b66d9..000000000 Binary files a/png/128/emoji_u1f926_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f9b0_200d_2640.png b/png/128/emoji_u1f926_1f9b0_200d_2640.png deleted file mode 100644 index 8896b66d9..000000000 Binary files a/png/128/emoji_u1f926_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f9b0_200d_2642.png b/png/128/emoji_u1f926_1f9b0_200d_2642.png deleted file mode 100644 index 5615f12bf..000000000 Binary files a/png/128/emoji_u1f926_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f9b3.png b/png/128/emoji_u1f926_1f9b3.png deleted file mode 100644 index e72eb4830..000000000 Binary files a/png/128/emoji_u1f926_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f9b3_200d_2640.png b/png/128/emoji_u1f926_1f9b3_200d_2640.png deleted file mode 100644 index e72eb4830..000000000 Binary files a/png/128/emoji_u1f926_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_1f9b3_200d_2642.png b/png/128/emoji_u1f926_1f9b3_200d_2642.png deleted file mode 100644 index 7cd6b2739..000000000 Binary files a/png/128/emoji_u1f926_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f926_200d_2640.png b/png/128/emoji_u1f926_200d_2640.png deleted file mode 100644 index 85ed3da46..000000000 Binary files a/png/128/emoji_u1f926_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f926_200d_2642.png b/png/128/emoji_u1f926_200d_2642.png deleted file mode 100644 index 36d1dff85..000000000 Binary files a/png/128/emoji_u1f926_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f927.png b/png/128/emoji_u1f927.png deleted file mode 100644 index 9d081db23..000000000 Binary files a/png/128/emoji_u1f927.png and /dev/null differ diff --git a/png/128/emoji_u1f928.png b/png/128/emoji_u1f928.png deleted file mode 100644 index 0d7b6f1a6..000000000 Binary files a/png/128/emoji_u1f928.png and /dev/null differ diff --git a/png/128/emoji_u1f928_200d_1f922.png b/png/128/emoji_u1f928_200d_1f922.png deleted file mode 100644 index ba8f542f6..000000000 Binary files a/png/128/emoji_u1f928_200d_1f922.png and /dev/null differ diff --git a/png/128/emoji_u1f929.png b/png/128/emoji_u1f929.png deleted file mode 100644 index f60273c2d..000000000 Binary files a/png/128/emoji_u1f929.png and /dev/null differ diff --git a/png/128/emoji_u1f92a.png b/png/128/emoji_u1f92a.png deleted file mode 100644 index 4aef3c57e..000000000 Binary files a/png/128/emoji_u1f92a.png and /dev/null differ diff --git a/png/128/emoji_u1f92a_200d_2063.png b/png/128/emoji_u1f92a_200d_2063.png deleted file mode 100644 index 3c38e6dd6..000000000 Binary files a/png/128/emoji_u1f92a_200d_2063.png and /dev/null differ diff --git a/png/128/emoji_u1f92b.png b/png/128/emoji_u1f92b.png deleted file mode 100644 index 38d59f75f..000000000 Binary files a/png/128/emoji_u1f92b.png and /dev/null differ diff --git a/png/128/emoji_u1f92c.png b/png/128/emoji_u1f92c.png deleted file mode 100644 index 89c3bff8a..000000000 Binary files a/png/128/emoji_u1f92c.png and /dev/null differ diff --git a/png/128/emoji_u1f92d.png b/png/128/emoji_u1f92d.png deleted file mode 100644 index cd586f598..000000000 Binary files a/png/128/emoji_u1f92d.png and /dev/null differ diff --git a/png/128/emoji_u1f92e.png b/png/128/emoji_u1f92e.png deleted file mode 100644 index 9315d6988..000000000 Binary files a/png/128/emoji_u1f92e.png and /dev/null differ diff --git a/png/128/emoji_u1f92f.png b/png/128/emoji_u1f92f.png deleted file mode 100644 index d3ecdb9cd..000000000 Binary files a/png/128/emoji_u1f92f.png and /dev/null differ diff --git a/png/128/emoji_u1f930.png b/png/128/emoji_u1f930.png deleted file mode 100644 index 52f74e0a4..000000000 Binary files a/png/128/emoji_u1f930.png and /dev/null differ diff --git a/png/128/emoji_u1f930_1f3fb.png b/png/128/emoji_u1f930_1f3fb.png deleted file mode 100644 index 8b3441a6e..000000000 Binary files a/png/128/emoji_u1f930_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f930_1f3fc.png b/png/128/emoji_u1f930_1f3fc.png deleted file mode 100644 index 40b65d8d6..000000000 Binary files a/png/128/emoji_u1f930_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f930_1f3fd.png b/png/128/emoji_u1f930_1f3fd.png deleted file mode 100644 index 16b8875a5..000000000 Binary files a/png/128/emoji_u1f930_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f930_1f3fe.png b/png/128/emoji_u1f930_1f3fe.png deleted file mode 100644 index b0635efa9..000000000 Binary files a/png/128/emoji_u1f930_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f930_1f3ff.png b/png/128/emoji_u1f930_1f3ff.png deleted file mode 100644 index 4546f0591..000000000 Binary files a/png/128/emoji_u1f930_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f930_1f9b0.png b/png/128/emoji_u1f930_1f9b0.png deleted file mode 100644 index 39b4deb5d..000000000 Binary files a/png/128/emoji_u1f930_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f930_1f9b3.png b/png/128/emoji_u1f930_1f9b3.png deleted file mode 100644 index 92272fcea..000000000 Binary files a/png/128/emoji_u1f930_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f931.png b/png/128/emoji_u1f931.png deleted file mode 100644 index 61d79fce9..000000000 Binary files a/png/128/emoji_u1f931.png and /dev/null differ diff --git a/png/128/emoji_u1f931_1f3fb.png b/png/128/emoji_u1f931_1f3fb.png deleted file mode 100644 index a4be4fba2..000000000 Binary files a/png/128/emoji_u1f931_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f931_1f3fc.png b/png/128/emoji_u1f931_1f3fc.png deleted file mode 100644 index 01e454fc7..000000000 Binary files a/png/128/emoji_u1f931_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f931_1f3fd.png b/png/128/emoji_u1f931_1f3fd.png deleted file mode 100644 index 2777eff92..000000000 Binary files a/png/128/emoji_u1f931_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f931_1f3fe.png b/png/128/emoji_u1f931_1f3fe.png deleted file mode 100644 index 5996cba35..000000000 Binary files a/png/128/emoji_u1f931_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f931_1f3ff.png b/png/128/emoji_u1f931_1f3ff.png deleted file mode 100644 index 450fa8a10..000000000 Binary files a/png/128/emoji_u1f931_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f931_1f9b0.png b/png/128/emoji_u1f931_1f9b0.png deleted file mode 100644 index 674057b02..000000000 Binary files a/png/128/emoji_u1f931_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f931_1f9b3.png b/png/128/emoji_u1f931_1f9b3.png deleted file mode 100644 index dc147f46f..000000000 Binary files a/png/128/emoji_u1f931_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f932.png b/png/128/emoji_u1f932.png deleted file mode 100644 index b7d51a75a..000000000 Binary files a/png/128/emoji_u1f932.png and /dev/null differ diff --git a/png/128/emoji_u1f932_1f3fb.png b/png/128/emoji_u1f932_1f3fb.png deleted file mode 100644 index d565b9513..000000000 Binary files a/png/128/emoji_u1f932_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f932_1f3fc.png b/png/128/emoji_u1f932_1f3fc.png deleted file mode 100644 index 7f8f3e5a0..000000000 Binary files a/png/128/emoji_u1f932_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f932_1f3fd.png b/png/128/emoji_u1f932_1f3fd.png deleted file mode 100644 index 10da3e025..000000000 Binary files a/png/128/emoji_u1f932_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f932_1f3fe.png b/png/128/emoji_u1f932_1f3fe.png deleted file mode 100644 index 3a695584d..000000000 Binary files a/png/128/emoji_u1f932_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f932_1f3ff.png b/png/128/emoji_u1f932_1f3ff.png deleted file mode 100644 index 7a1050841..000000000 Binary files a/png/128/emoji_u1f932_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f933.png b/png/128/emoji_u1f933.png deleted file mode 100644 index 2b7e11d37..000000000 Binary files a/png/128/emoji_u1f933.png and /dev/null differ diff --git a/png/128/emoji_u1f933_1f3fb.png b/png/128/emoji_u1f933_1f3fb.png deleted file mode 100644 index d3b01be0e..000000000 Binary files a/png/128/emoji_u1f933_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f933_1f3fc.png b/png/128/emoji_u1f933_1f3fc.png deleted file mode 100644 index 8594de353..000000000 Binary files a/png/128/emoji_u1f933_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f933_1f3fd.png b/png/128/emoji_u1f933_1f3fd.png deleted file mode 100644 index aa9cbaab8..000000000 Binary files a/png/128/emoji_u1f933_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f933_1f3fe.png b/png/128/emoji_u1f933_1f3fe.png deleted file mode 100644 index a60c3a24b..000000000 Binary files a/png/128/emoji_u1f933_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f933_1f3ff.png b/png/128/emoji_u1f933_1f3ff.png deleted file mode 100644 index e3019297a..000000000 Binary files a/png/128/emoji_u1f933_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f934.png b/png/128/emoji_u1f934.png deleted file mode 100644 index 48723379f..000000000 Binary files a/png/128/emoji_u1f934.png and /dev/null differ diff --git a/png/128/emoji_u1f934_1f3fb.png b/png/128/emoji_u1f934_1f3fb.png deleted file mode 100644 index c376185b5..000000000 Binary files a/png/128/emoji_u1f934_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f934_1f3fc.png b/png/128/emoji_u1f934_1f3fc.png deleted file mode 100644 index c5ad89db9..000000000 Binary files a/png/128/emoji_u1f934_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f934_1f3fd.png b/png/128/emoji_u1f934_1f3fd.png deleted file mode 100644 index 5fcff9fac..000000000 Binary files a/png/128/emoji_u1f934_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f934_1f3fe.png b/png/128/emoji_u1f934_1f3fe.png deleted file mode 100644 index 75a8dccad..000000000 Binary files a/png/128/emoji_u1f934_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f934_1f3ff.png b/png/128/emoji_u1f934_1f3ff.png deleted file mode 100644 index 30237671e..000000000 Binary files a/png/128/emoji_u1f934_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f934_1f9b0.png b/png/128/emoji_u1f934_1f9b0.png deleted file mode 100644 index 90d15ff51..000000000 Binary files a/png/128/emoji_u1f934_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f934_1f9b3.png b/png/128/emoji_u1f934_1f9b3.png deleted file mode 100644 index aa1167048..000000000 Binary files a/png/128/emoji_u1f934_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f935.png b/png/128/emoji_u1f935.png deleted file mode 100644 index 99fd9bf8b..000000000 Binary files a/png/128/emoji_u1f935.png and /dev/null differ diff --git a/png/128/emoji_u1f935_1f3fb.png b/png/128/emoji_u1f935_1f3fb.png deleted file mode 100644 index 9a41c53df..000000000 Binary files a/png/128/emoji_u1f935_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f935_1f3fc.png b/png/128/emoji_u1f935_1f3fc.png deleted file mode 100644 index 54bf3f166..000000000 Binary files a/png/128/emoji_u1f935_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f935_1f3fd.png b/png/128/emoji_u1f935_1f3fd.png deleted file mode 100644 index 28f5484ee..000000000 Binary files a/png/128/emoji_u1f935_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f935_1f3fe.png b/png/128/emoji_u1f935_1f3fe.png deleted file mode 100644 index d4fd7ab1b..000000000 Binary files a/png/128/emoji_u1f935_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f935_1f3ff.png b/png/128/emoji_u1f935_1f3ff.png deleted file mode 100644 index 6126d99c2..000000000 Binary files a/png/128/emoji_u1f935_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f935_1f9b0.png b/png/128/emoji_u1f935_1f9b0.png deleted file mode 100644 index 077c781d7..000000000 Binary files a/png/128/emoji_u1f935_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f935_1f9b3.png b/png/128/emoji_u1f935_1f9b3.png deleted file mode 100644 index 9f8c1c5b5..000000000 Binary files a/png/128/emoji_u1f935_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f936.png b/png/128/emoji_u1f936.png deleted file mode 100644 index 5825f66ad..000000000 Binary files a/png/128/emoji_u1f936.png and /dev/null differ diff --git a/png/128/emoji_u1f936_1f3fb.png b/png/128/emoji_u1f936_1f3fb.png deleted file mode 100644 index f313c8102..000000000 Binary files a/png/128/emoji_u1f936_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f936_1f3fc.png b/png/128/emoji_u1f936_1f3fc.png deleted file mode 100644 index e0f99d5ab..000000000 Binary files a/png/128/emoji_u1f936_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f936_1f3fd.png b/png/128/emoji_u1f936_1f3fd.png deleted file mode 100644 index a552c448a..000000000 Binary files a/png/128/emoji_u1f936_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f936_1f3fe.png b/png/128/emoji_u1f936_1f3fe.png deleted file mode 100644 index ab16a0ac6..000000000 Binary files a/png/128/emoji_u1f936_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f936_1f3ff.png b/png/128/emoji_u1f936_1f3ff.png deleted file mode 100644 index 497cfbe12..000000000 Binary files a/png/128/emoji_u1f936_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f937.png b/png/128/emoji_u1f937.png deleted file mode 100644 index e4dd53520..000000000 Binary files a/png/128/emoji_u1f937.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fb.png b/png/128/emoji_u1f937_1f3fb.png deleted file mode 100644 index 1074ff0dd..000000000 Binary files a/png/128/emoji_u1f937_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fb_200d_2640.png b/png/128/emoji_u1f937_1f3fb_200d_2640.png deleted file mode 100644 index 1074ff0dd..000000000 Binary files a/png/128/emoji_u1f937_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fb_200d_2642.png b/png/128/emoji_u1f937_1f3fb_200d_2642.png deleted file mode 100644 index ee4ebffbf..000000000 Binary files a/png/128/emoji_u1f937_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fc.png b/png/128/emoji_u1f937_1f3fc.png deleted file mode 100644 index f36f8e0aa..000000000 Binary files a/png/128/emoji_u1f937_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fc_200d_2640.png b/png/128/emoji_u1f937_1f3fc_200d_2640.png deleted file mode 100644 index f36f8e0aa..000000000 Binary files a/png/128/emoji_u1f937_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fc_200d_2642.png b/png/128/emoji_u1f937_1f3fc_200d_2642.png deleted file mode 100644 index 47f517c10..000000000 Binary files a/png/128/emoji_u1f937_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fd.png b/png/128/emoji_u1f937_1f3fd.png deleted file mode 100644 index b4907b454..000000000 Binary files a/png/128/emoji_u1f937_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fd_200d_2640.png b/png/128/emoji_u1f937_1f3fd_200d_2640.png deleted file mode 100644 index b4907b454..000000000 Binary files a/png/128/emoji_u1f937_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fd_200d_2642.png b/png/128/emoji_u1f937_1f3fd_200d_2642.png deleted file mode 100644 index 99a5999a4..000000000 Binary files a/png/128/emoji_u1f937_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fe.png b/png/128/emoji_u1f937_1f3fe.png deleted file mode 100644 index 3e5374660..000000000 Binary files a/png/128/emoji_u1f937_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fe_200d_2640.png b/png/128/emoji_u1f937_1f3fe_200d_2640.png deleted file mode 100644 index 3e5374660..000000000 Binary files a/png/128/emoji_u1f937_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3fe_200d_2642.png b/png/128/emoji_u1f937_1f3fe_200d_2642.png deleted file mode 100644 index 72bc7a0d0..000000000 Binary files a/png/128/emoji_u1f937_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3ff.png b/png/128/emoji_u1f937_1f3ff.png deleted file mode 100644 index a3ac5d325..000000000 Binary files a/png/128/emoji_u1f937_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3ff_200d_2640.png b/png/128/emoji_u1f937_1f3ff_200d_2640.png deleted file mode 100644 index a3ac5d325..000000000 Binary files a/png/128/emoji_u1f937_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f3ff_200d_2642.png b/png/128/emoji_u1f937_1f3ff_200d_2642.png deleted file mode 100644 index 06119c80a..000000000 Binary files a/png/128/emoji_u1f937_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f9b0.png b/png/128/emoji_u1f937_1f9b0.png deleted file mode 100644 index 3c0b488f9..000000000 Binary files a/png/128/emoji_u1f937_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f9b0_200d_2640.png b/png/128/emoji_u1f937_1f9b0_200d_2640.png deleted file mode 100644 index 3c0b488f9..000000000 Binary files a/png/128/emoji_u1f937_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f9b0_200d_2642.png b/png/128/emoji_u1f937_1f9b0_200d_2642.png deleted file mode 100644 index 496125379..000000000 Binary files a/png/128/emoji_u1f937_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f9b3.png b/png/128/emoji_u1f937_1f9b3.png deleted file mode 100644 index 6174c4c96..000000000 Binary files a/png/128/emoji_u1f937_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f9b3_200d_2640.png b/png/128/emoji_u1f937_1f9b3_200d_2640.png deleted file mode 100644 index 6174c4c96..000000000 Binary files a/png/128/emoji_u1f937_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_1f9b3_200d_2642.png b/png/128/emoji_u1f937_1f9b3_200d_2642.png deleted file mode 100644 index 2b4349298..000000000 Binary files a/png/128/emoji_u1f937_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f937_200d_2640.png b/png/128/emoji_u1f937_200d_2640.png deleted file mode 100644 index e4dd53520..000000000 Binary files a/png/128/emoji_u1f937_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f937_200d_2642.png b/png/128/emoji_u1f937_200d_2642.png deleted file mode 100644 index fefdaee76..000000000 Binary files a/png/128/emoji_u1f937_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938.png b/png/128/emoji_u1f938.png deleted file mode 100644 index e29572c30..000000000 Binary files a/png/128/emoji_u1f938.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fb.png b/png/128/emoji_u1f938_1f3fb.png deleted file mode 100644 index 6c036ed3e..000000000 Binary files a/png/128/emoji_u1f938_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fb_200d_2640.png b/png/128/emoji_u1f938_1f3fb_200d_2640.png deleted file mode 100644 index 01b99205f..000000000 Binary files a/png/128/emoji_u1f938_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fb_200d_2642.png b/png/128/emoji_u1f938_1f3fb_200d_2642.png deleted file mode 100644 index 6c036ed3e..000000000 Binary files a/png/128/emoji_u1f938_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fc.png b/png/128/emoji_u1f938_1f3fc.png deleted file mode 100644 index 81e6f23cc..000000000 Binary files a/png/128/emoji_u1f938_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fc_200d_2640.png b/png/128/emoji_u1f938_1f3fc_200d_2640.png deleted file mode 100644 index 2fe45eec9..000000000 Binary files a/png/128/emoji_u1f938_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fc_200d_2642.png b/png/128/emoji_u1f938_1f3fc_200d_2642.png deleted file mode 100644 index 81e6f23cc..000000000 Binary files a/png/128/emoji_u1f938_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fd.png b/png/128/emoji_u1f938_1f3fd.png deleted file mode 100644 index dd2ab1aaa..000000000 Binary files a/png/128/emoji_u1f938_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fd_200d_2640.png b/png/128/emoji_u1f938_1f3fd_200d_2640.png deleted file mode 100644 index 5e2193918..000000000 Binary files a/png/128/emoji_u1f938_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fd_200d_2642.png b/png/128/emoji_u1f938_1f3fd_200d_2642.png deleted file mode 100644 index dd2ab1aaa..000000000 Binary files a/png/128/emoji_u1f938_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fe.png b/png/128/emoji_u1f938_1f3fe.png deleted file mode 100644 index a035fb053..000000000 Binary files a/png/128/emoji_u1f938_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fe_200d_2640.png b/png/128/emoji_u1f938_1f3fe_200d_2640.png deleted file mode 100644 index 2217a1950..000000000 Binary files a/png/128/emoji_u1f938_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3fe_200d_2642.png b/png/128/emoji_u1f938_1f3fe_200d_2642.png deleted file mode 100644 index a035fb053..000000000 Binary files a/png/128/emoji_u1f938_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3ff.png b/png/128/emoji_u1f938_1f3ff.png deleted file mode 100644 index c0ddf5413..000000000 Binary files a/png/128/emoji_u1f938_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3ff_200d_2640.png b/png/128/emoji_u1f938_1f3ff_200d_2640.png deleted file mode 100644 index 40169a791..000000000 Binary files a/png/128/emoji_u1f938_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f3ff_200d_2642.png b/png/128/emoji_u1f938_1f3ff_200d_2642.png deleted file mode 100644 index c0ddf5413..000000000 Binary files a/png/128/emoji_u1f938_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f9b0.png b/png/128/emoji_u1f938_1f9b0.png deleted file mode 100644 index c90ddbbbd..000000000 Binary files a/png/128/emoji_u1f938_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f9b0_200d_2640.png b/png/128/emoji_u1f938_1f9b0_200d_2640.png deleted file mode 100644 index 1cc7708ec..000000000 Binary files a/png/128/emoji_u1f938_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f9b0_200d_2642.png b/png/128/emoji_u1f938_1f9b0_200d_2642.png deleted file mode 100644 index c90ddbbbd..000000000 Binary files a/png/128/emoji_u1f938_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f9b3.png b/png/128/emoji_u1f938_1f9b3.png deleted file mode 100644 index 7a17a1261..000000000 Binary files a/png/128/emoji_u1f938_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f9b3_200d_2640.png b/png/128/emoji_u1f938_1f9b3_200d_2640.png deleted file mode 100644 index 716fbfa76..000000000 Binary files a/png/128/emoji_u1f938_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_1f9b3_200d_2642.png b/png/128/emoji_u1f938_1f9b3_200d_2642.png deleted file mode 100644 index 7a17a1261..000000000 Binary files a/png/128/emoji_u1f938_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f938_200d_2640.png b/png/128/emoji_u1f938_200d_2640.png deleted file mode 100644 index d1d8e0bf3..000000000 Binary files a/png/128/emoji_u1f938_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f938_200d_2642.png b/png/128/emoji_u1f938_200d_2642.png deleted file mode 100644 index e29572c30..000000000 Binary files a/png/128/emoji_u1f938_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939.png b/png/128/emoji_u1f939.png deleted file mode 100644 index dd04d29e0..000000000 Binary files a/png/128/emoji_u1f939.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fb.png b/png/128/emoji_u1f939_1f3fb.png deleted file mode 100644 index d9756c5e6..000000000 Binary files a/png/128/emoji_u1f939_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fb_200d_2640.png b/png/128/emoji_u1f939_1f3fb_200d_2640.png deleted file mode 100644 index d08bd14f9..000000000 Binary files a/png/128/emoji_u1f939_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fb_200d_2642.png b/png/128/emoji_u1f939_1f3fb_200d_2642.png deleted file mode 100644 index a806bdf90..000000000 Binary files a/png/128/emoji_u1f939_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fc.png b/png/128/emoji_u1f939_1f3fc.png deleted file mode 100644 index b2d7caabb..000000000 Binary files a/png/128/emoji_u1f939_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fc_200d_2640.png b/png/128/emoji_u1f939_1f3fc_200d_2640.png deleted file mode 100644 index d6a96c744..000000000 Binary files a/png/128/emoji_u1f939_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fc_200d_2642.png b/png/128/emoji_u1f939_1f3fc_200d_2642.png deleted file mode 100644 index af1a2bf63..000000000 Binary files a/png/128/emoji_u1f939_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fd.png b/png/128/emoji_u1f939_1f3fd.png deleted file mode 100644 index 4fb22b861..000000000 Binary files a/png/128/emoji_u1f939_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fd_200d_2640.png b/png/128/emoji_u1f939_1f3fd_200d_2640.png deleted file mode 100644 index d079fef0b..000000000 Binary files a/png/128/emoji_u1f939_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fd_200d_2642.png b/png/128/emoji_u1f939_1f3fd_200d_2642.png deleted file mode 100644 index 992c2fdfe..000000000 Binary files a/png/128/emoji_u1f939_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fe.png b/png/128/emoji_u1f939_1f3fe.png deleted file mode 100644 index 6d0adc648..000000000 Binary files a/png/128/emoji_u1f939_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fe_200d_2640.png b/png/128/emoji_u1f939_1f3fe_200d_2640.png deleted file mode 100644 index 89fc9537e..000000000 Binary files a/png/128/emoji_u1f939_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3fe_200d_2642.png b/png/128/emoji_u1f939_1f3fe_200d_2642.png deleted file mode 100644 index 3f7094805..000000000 Binary files a/png/128/emoji_u1f939_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3ff.png b/png/128/emoji_u1f939_1f3ff.png deleted file mode 100644 index c1ef3b755..000000000 Binary files a/png/128/emoji_u1f939_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3ff_200d_2640.png b/png/128/emoji_u1f939_1f3ff_200d_2640.png deleted file mode 100644 index 11e0efb9d..000000000 Binary files a/png/128/emoji_u1f939_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f3ff_200d_2642.png b/png/128/emoji_u1f939_1f3ff_200d_2642.png deleted file mode 100644 index b35737f2c..000000000 Binary files a/png/128/emoji_u1f939_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f9b0.png b/png/128/emoji_u1f939_1f9b0.png deleted file mode 100644 index 29ab72f39..000000000 Binary files a/png/128/emoji_u1f939_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f9b0_200d_2640.png b/png/128/emoji_u1f939_1f9b0_200d_2640.png deleted file mode 100644 index 3288cba3f..000000000 Binary files a/png/128/emoji_u1f939_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f9b0_200d_2642.png b/png/128/emoji_u1f939_1f9b0_200d_2642.png deleted file mode 100644 index 29ab72f39..000000000 Binary files a/png/128/emoji_u1f939_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f9b3.png b/png/128/emoji_u1f939_1f9b3.png deleted file mode 100644 index 98440082b..000000000 Binary files a/png/128/emoji_u1f939_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f9b3_200d_2640.png b/png/128/emoji_u1f939_1f9b3_200d_2640.png deleted file mode 100644 index 03bcf85c6..000000000 Binary files a/png/128/emoji_u1f939_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_1f9b3_200d_2642.png b/png/128/emoji_u1f939_1f9b3_200d_2642.png deleted file mode 100644 index 98440082b..000000000 Binary files a/png/128/emoji_u1f939_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f939_200d_2640.png b/png/128/emoji_u1f939_200d_2640.png deleted file mode 100644 index 743ccfde5..000000000 Binary files a/png/128/emoji_u1f939_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f939_200d_2642.png b/png/128/emoji_u1f939_200d_2642.png deleted file mode 100644 index dd04d29e0..000000000 Binary files a/png/128/emoji_u1f939_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93a.png b/png/128/emoji_u1f93a.png deleted file mode 100644 index bb43b6030..000000000 Binary files a/png/128/emoji_u1f93a.png and /dev/null differ diff --git a/png/128/emoji_u1f93c.png b/png/128/emoji_u1f93c.png deleted file mode 100644 index a2b9679f7..000000000 Binary files a/png/128/emoji_u1f93c.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fb.png b/png/128/emoji_u1f93c_1f3fb.png deleted file mode 100644 index 1fed0ddef..000000000 Binary files a/png/128/emoji_u1f93c_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fb_200d_2640.png b/png/128/emoji_u1f93c_1f3fb_200d_2640.png deleted file mode 100644 index 0d1931300..000000000 Binary files a/png/128/emoji_u1f93c_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fb_200d_2642.png b/png/128/emoji_u1f93c_1f3fb_200d_2642.png deleted file mode 100644 index 1fed0ddef..000000000 Binary files a/png/128/emoji_u1f93c_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fc.png b/png/128/emoji_u1f93c_1f3fc.png deleted file mode 100644 index 2aded2e19..000000000 Binary files a/png/128/emoji_u1f93c_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fc_200d_2640.png b/png/128/emoji_u1f93c_1f3fc_200d_2640.png deleted file mode 100644 index e9cfda134..000000000 Binary files a/png/128/emoji_u1f93c_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fc_200d_2642.png b/png/128/emoji_u1f93c_1f3fc_200d_2642.png deleted file mode 100644 index 2aded2e19..000000000 Binary files a/png/128/emoji_u1f93c_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fd.png b/png/128/emoji_u1f93c_1f3fd.png deleted file mode 100644 index 125db284c..000000000 Binary files a/png/128/emoji_u1f93c_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fd_200d_2640.png b/png/128/emoji_u1f93c_1f3fd_200d_2640.png deleted file mode 100644 index b5d6d6602..000000000 Binary files a/png/128/emoji_u1f93c_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fd_200d_2642.png b/png/128/emoji_u1f93c_1f3fd_200d_2642.png deleted file mode 100644 index 125db284c..000000000 Binary files a/png/128/emoji_u1f93c_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fe.png b/png/128/emoji_u1f93c_1f3fe.png deleted file mode 100644 index da1d51695..000000000 Binary files a/png/128/emoji_u1f93c_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fe_200d_2640.png b/png/128/emoji_u1f93c_1f3fe_200d_2640.png deleted file mode 100644 index b2d4d2c59..000000000 Binary files a/png/128/emoji_u1f93c_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3fe_200d_2642.png b/png/128/emoji_u1f93c_1f3fe_200d_2642.png deleted file mode 100644 index da1d51695..000000000 Binary files a/png/128/emoji_u1f93c_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3ff.png b/png/128/emoji_u1f93c_1f3ff.png deleted file mode 100644 index 55dc8b3e8..000000000 Binary files a/png/128/emoji_u1f93c_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3ff_200d_2640.png b/png/128/emoji_u1f93c_1f3ff_200d_2640.png deleted file mode 100644 index ad89889ae..000000000 Binary files a/png/128/emoji_u1f93c_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f3ff_200d_2642.png b/png/128/emoji_u1f93c_1f3ff_200d_2642.png deleted file mode 100644 index 55dc8b3e8..000000000 Binary files a/png/128/emoji_u1f93c_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f9b0.png b/png/128/emoji_u1f93c_1f9b0.png deleted file mode 100644 index 3075465f9..000000000 Binary files a/png/128/emoji_u1f93c_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f9b0_200d_2640.png b/png/128/emoji_u1f93c_1f9b0_200d_2640.png deleted file mode 100644 index 630fc9e06..000000000 Binary files a/png/128/emoji_u1f93c_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f9b0_200d_2642.png b/png/128/emoji_u1f93c_1f9b0_200d_2642.png deleted file mode 100644 index 3075465f9..000000000 Binary files a/png/128/emoji_u1f93c_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f9b3.png b/png/128/emoji_u1f93c_1f9b3.png deleted file mode 100644 index 341d47643..000000000 Binary files a/png/128/emoji_u1f93c_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f9b3_200d_2640.png b/png/128/emoji_u1f93c_1f9b3_200d_2640.png deleted file mode 100644 index 1cc703da3..000000000 Binary files a/png/128/emoji_u1f93c_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_1f9b3_200d_2642.png b/png/128/emoji_u1f93c_1f9b3_200d_2642.png deleted file mode 100644 index 341d47643..000000000 Binary files a/png/128/emoji_u1f93c_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_200d_2640.png b/png/128/emoji_u1f93c_200d_2640.png deleted file mode 100644 index ea62b492f..000000000 Binary files a/png/128/emoji_u1f93c_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93c_200d_2642.png b/png/128/emoji_u1f93c_200d_2642.png deleted file mode 100644 index a2b9679f7..000000000 Binary files a/png/128/emoji_u1f93c_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d.png b/png/128/emoji_u1f93d.png deleted file mode 100644 index d67961375..000000000 Binary files a/png/128/emoji_u1f93d.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fb.png b/png/128/emoji_u1f93d_1f3fb.png deleted file mode 100644 index 2cabd1a18..000000000 Binary files a/png/128/emoji_u1f93d_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fb_200d_2640.png b/png/128/emoji_u1f93d_1f3fb_200d_2640.png deleted file mode 100644 index e89ea3013..000000000 Binary files a/png/128/emoji_u1f93d_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fb_200d_2642.png b/png/128/emoji_u1f93d_1f3fb_200d_2642.png deleted file mode 100644 index 2cabd1a18..000000000 Binary files a/png/128/emoji_u1f93d_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fc.png b/png/128/emoji_u1f93d_1f3fc.png deleted file mode 100644 index 3d71499c6..000000000 Binary files a/png/128/emoji_u1f93d_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fc_200d_2640.png b/png/128/emoji_u1f93d_1f3fc_200d_2640.png deleted file mode 100644 index b01efcc61..000000000 Binary files a/png/128/emoji_u1f93d_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fc_200d_2642.png b/png/128/emoji_u1f93d_1f3fc_200d_2642.png deleted file mode 100644 index 3d71499c6..000000000 Binary files a/png/128/emoji_u1f93d_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fd.png b/png/128/emoji_u1f93d_1f3fd.png deleted file mode 100644 index c5d19d933..000000000 Binary files a/png/128/emoji_u1f93d_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fd_200d_2640.png b/png/128/emoji_u1f93d_1f3fd_200d_2640.png deleted file mode 100644 index e76de7aed..000000000 Binary files a/png/128/emoji_u1f93d_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fd_200d_2642.png b/png/128/emoji_u1f93d_1f3fd_200d_2642.png deleted file mode 100644 index c5d19d933..000000000 Binary files a/png/128/emoji_u1f93d_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fe.png b/png/128/emoji_u1f93d_1f3fe.png deleted file mode 100644 index c5960784a..000000000 Binary files a/png/128/emoji_u1f93d_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fe_200d_2640.png b/png/128/emoji_u1f93d_1f3fe_200d_2640.png deleted file mode 100644 index 9cf918bc5..000000000 Binary files a/png/128/emoji_u1f93d_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3fe_200d_2642.png b/png/128/emoji_u1f93d_1f3fe_200d_2642.png deleted file mode 100644 index c5960784a..000000000 Binary files a/png/128/emoji_u1f93d_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3ff.png b/png/128/emoji_u1f93d_1f3ff.png deleted file mode 100644 index f2ed021af..000000000 Binary files a/png/128/emoji_u1f93d_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3ff_200d_2640.png b/png/128/emoji_u1f93d_1f3ff_200d_2640.png deleted file mode 100644 index a9efddd7c..000000000 Binary files a/png/128/emoji_u1f93d_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f3ff_200d_2642.png b/png/128/emoji_u1f93d_1f3ff_200d_2642.png deleted file mode 100644 index f2ed021af..000000000 Binary files a/png/128/emoji_u1f93d_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f9b0.png b/png/128/emoji_u1f93d_1f9b0.png deleted file mode 100644 index 8bfac4c69..000000000 Binary files a/png/128/emoji_u1f93d_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f9b0_200d_2640.png b/png/128/emoji_u1f93d_1f9b0_200d_2640.png deleted file mode 100644 index 39bc9b760..000000000 Binary files a/png/128/emoji_u1f93d_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f9b0_200d_2642.png b/png/128/emoji_u1f93d_1f9b0_200d_2642.png deleted file mode 100644 index 8bfac4c69..000000000 Binary files a/png/128/emoji_u1f93d_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f9b3.png b/png/128/emoji_u1f93d_1f9b3.png deleted file mode 100644 index 5879c7f09..000000000 Binary files a/png/128/emoji_u1f93d_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f9b3_200d_2640.png b/png/128/emoji_u1f93d_1f9b3_200d_2640.png deleted file mode 100644 index 1d095ae14..000000000 Binary files a/png/128/emoji_u1f93d_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_1f9b3_200d_2642.png b/png/128/emoji_u1f93d_1f9b3_200d_2642.png deleted file mode 100644 index 5879c7f09..000000000 Binary files a/png/128/emoji_u1f93d_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_200d_2640.png b/png/128/emoji_u1f93d_200d_2640.png deleted file mode 100644 index 4f98b1fce..000000000 Binary files a/png/128/emoji_u1f93d_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93d_200d_2642.png b/png/128/emoji_u1f93d_200d_2642.png deleted file mode 100644 index d67961375..000000000 Binary files a/png/128/emoji_u1f93d_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e.png b/png/128/emoji_u1f93e.png deleted file mode 100644 index 28c2e9d5c..000000000 Binary files a/png/128/emoji_u1f93e.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fb.png b/png/128/emoji_u1f93e_1f3fb.png deleted file mode 100644 index 44c910f1c..000000000 Binary files a/png/128/emoji_u1f93e_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fb_200d_2640.png b/png/128/emoji_u1f93e_1f3fb_200d_2640.png deleted file mode 100644 index 43de66d31..000000000 Binary files a/png/128/emoji_u1f93e_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fb_200d_2642.png b/png/128/emoji_u1f93e_1f3fb_200d_2642.png deleted file mode 100644 index 44c910f1c..000000000 Binary files a/png/128/emoji_u1f93e_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fc.png b/png/128/emoji_u1f93e_1f3fc.png deleted file mode 100644 index c48c0b74b..000000000 Binary files a/png/128/emoji_u1f93e_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fc_200d_2640.png b/png/128/emoji_u1f93e_1f3fc_200d_2640.png deleted file mode 100644 index 20e0b00a9..000000000 Binary files a/png/128/emoji_u1f93e_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fc_200d_2642.png b/png/128/emoji_u1f93e_1f3fc_200d_2642.png deleted file mode 100644 index c48c0b74b..000000000 Binary files a/png/128/emoji_u1f93e_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fd.png b/png/128/emoji_u1f93e_1f3fd.png deleted file mode 100644 index a3bca795e..000000000 Binary files a/png/128/emoji_u1f93e_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fd_200d_2640.png b/png/128/emoji_u1f93e_1f3fd_200d_2640.png deleted file mode 100644 index 4cedca4bf..000000000 Binary files a/png/128/emoji_u1f93e_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fd_200d_2642.png b/png/128/emoji_u1f93e_1f3fd_200d_2642.png deleted file mode 100644 index a3bca795e..000000000 Binary files a/png/128/emoji_u1f93e_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fe.png b/png/128/emoji_u1f93e_1f3fe.png deleted file mode 100644 index 2e8bf9853..000000000 Binary files a/png/128/emoji_u1f93e_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fe_200d_2640.png b/png/128/emoji_u1f93e_1f3fe_200d_2640.png deleted file mode 100644 index e8332f5e9..000000000 Binary files a/png/128/emoji_u1f93e_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3fe_200d_2642.png b/png/128/emoji_u1f93e_1f3fe_200d_2642.png deleted file mode 100644 index 2e8bf9853..000000000 Binary files a/png/128/emoji_u1f93e_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3ff.png b/png/128/emoji_u1f93e_1f3ff.png deleted file mode 100644 index e1343a045..000000000 Binary files a/png/128/emoji_u1f93e_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3ff_200d_2640.png b/png/128/emoji_u1f93e_1f3ff_200d_2640.png deleted file mode 100644 index d6ccca911..000000000 Binary files a/png/128/emoji_u1f93e_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f3ff_200d_2642.png b/png/128/emoji_u1f93e_1f3ff_200d_2642.png deleted file mode 100644 index e1343a045..000000000 Binary files a/png/128/emoji_u1f93e_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f9b0.png b/png/128/emoji_u1f93e_1f9b0.png deleted file mode 100644 index 78148fa50..000000000 Binary files a/png/128/emoji_u1f93e_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f9b0_200d_2640.png b/png/128/emoji_u1f93e_1f9b0_200d_2640.png deleted file mode 100644 index 725cae41d..000000000 Binary files a/png/128/emoji_u1f93e_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f9b0_200d_2642.png b/png/128/emoji_u1f93e_1f9b0_200d_2642.png deleted file mode 100644 index 78148fa50..000000000 Binary files a/png/128/emoji_u1f93e_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f9b3.png b/png/128/emoji_u1f93e_1f9b3.png deleted file mode 100644 index 215072ad2..000000000 Binary files a/png/128/emoji_u1f93e_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f9b3_200d_2640.png b/png/128/emoji_u1f93e_1f9b3_200d_2640.png deleted file mode 100644 index c357a204b..000000000 Binary files a/png/128/emoji_u1f93e_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_1f9b3_200d_2642.png b/png/128/emoji_u1f93e_1f9b3_200d_2642.png deleted file mode 100644 index 215072ad2..000000000 Binary files a/png/128/emoji_u1f93e_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_200d_2640.png b/png/128/emoji_u1f93e_200d_2640.png deleted file mode 100644 index 45f178cd5..000000000 Binary files a/png/128/emoji_u1f93e_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f93e_200d_2642.png b/png/128/emoji_u1f93e_200d_2642.png deleted file mode 100644 index 28c2e9d5c..000000000 Binary files a/png/128/emoji_u1f93e_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f93f.png b/png/128/emoji_u1f93f.png deleted file mode 100644 index 6dff6b79b..000000000 Binary files a/png/128/emoji_u1f93f.png and /dev/null differ diff --git a/png/128/emoji_u1f940.png b/png/128/emoji_u1f940.png deleted file mode 100644 index 3513d0a00..000000000 Binary files a/png/128/emoji_u1f940.png and /dev/null differ diff --git a/png/128/emoji_u1f941.png b/png/128/emoji_u1f941.png deleted file mode 100644 index 42ec2eb60..000000000 Binary files a/png/128/emoji_u1f941.png and /dev/null differ diff --git a/png/128/emoji_u1f942.png b/png/128/emoji_u1f942.png deleted file mode 100644 index e1b471bd8..000000000 Binary files a/png/128/emoji_u1f942.png and /dev/null differ diff --git a/png/128/emoji_u1f943.png b/png/128/emoji_u1f943.png deleted file mode 100644 index acbf75a64..000000000 Binary files a/png/128/emoji_u1f943.png and /dev/null differ diff --git a/png/128/emoji_u1f944.png b/png/128/emoji_u1f944.png deleted file mode 100644 index 9fecea7c6..000000000 Binary files a/png/128/emoji_u1f944.png and /dev/null differ diff --git a/png/128/emoji_u1f945.png b/png/128/emoji_u1f945.png deleted file mode 100644 index a765cf2a9..000000000 Binary files a/png/128/emoji_u1f945.png and /dev/null differ diff --git a/png/128/emoji_u1f947.png b/png/128/emoji_u1f947.png deleted file mode 100644 index 1f3579426..000000000 Binary files a/png/128/emoji_u1f947.png and /dev/null differ diff --git a/png/128/emoji_u1f948.png b/png/128/emoji_u1f948.png deleted file mode 100644 index 423134e20..000000000 Binary files a/png/128/emoji_u1f948.png and /dev/null differ diff --git a/png/128/emoji_u1f949.png b/png/128/emoji_u1f949.png deleted file mode 100644 index 081c3a383..000000000 Binary files a/png/128/emoji_u1f949.png and /dev/null differ diff --git a/png/128/emoji_u1f94a.png b/png/128/emoji_u1f94a.png deleted file mode 100644 index fac422eff..000000000 Binary files a/png/128/emoji_u1f94a.png and /dev/null differ diff --git a/png/128/emoji_u1f94b.png b/png/128/emoji_u1f94b.png deleted file mode 100644 index 1f41f28cf..000000000 Binary files a/png/128/emoji_u1f94b.png and /dev/null differ diff --git a/png/128/emoji_u1f94c.png b/png/128/emoji_u1f94c.png deleted file mode 100644 index 1ab232157..000000000 Binary files a/png/128/emoji_u1f94c.png and /dev/null differ diff --git a/png/128/emoji_u1f94d.png b/png/128/emoji_u1f94d.png deleted file mode 100644 index ac263c724..000000000 Binary files a/png/128/emoji_u1f94d.png and /dev/null differ diff --git a/png/128/emoji_u1f94e.png b/png/128/emoji_u1f94e.png deleted file mode 100644 index 639acb75d..000000000 Binary files a/png/128/emoji_u1f94e.png and /dev/null differ diff --git a/png/128/emoji_u1f94f.png b/png/128/emoji_u1f94f.png deleted file mode 100644 index 3aff49117..000000000 Binary files a/png/128/emoji_u1f94f.png and /dev/null differ diff --git a/png/128/emoji_u1f950.png b/png/128/emoji_u1f950.png deleted file mode 100644 index 5d94d10e2..000000000 Binary files a/png/128/emoji_u1f950.png and /dev/null differ diff --git a/png/128/emoji_u1f951.png b/png/128/emoji_u1f951.png deleted file mode 100644 index 6675e9f02..000000000 Binary files a/png/128/emoji_u1f951.png and /dev/null differ diff --git a/png/128/emoji_u1f952.png b/png/128/emoji_u1f952.png deleted file mode 100644 index de4666f18..000000000 Binary files a/png/128/emoji_u1f952.png and /dev/null differ diff --git a/png/128/emoji_u1f953.png b/png/128/emoji_u1f953.png deleted file mode 100644 index 09dde6017..000000000 Binary files a/png/128/emoji_u1f953.png and /dev/null differ diff --git a/png/128/emoji_u1f954.png b/png/128/emoji_u1f954.png deleted file mode 100644 index c0025150f..000000000 Binary files a/png/128/emoji_u1f954.png and /dev/null differ diff --git a/png/128/emoji_u1f955.png b/png/128/emoji_u1f955.png deleted file mode 100644 index 0711c5e75..000000000 Binary files a/png/128/emoji_u1f955.png and /dev/null differ diff --git a/png/128/emoji_u1f956.png b/png/128/emoji_u1f956.png deleted file mode 100644 index f030816d3..000000000 Binary files a/png/128/emoji_u1f956.png and /dev/null differ diff --git a/png/128/emoji_u1f957.png b/png/128/emoji_u1f957.png deleted file mode 100644 index 24ec57d41..000000000 Binary files a/png/128/emoji_u1f957.png and /dev/null differ diff --git a/png/128/emoji_u1f958.png b/png/128/emoji_u1f958.png deleted file mode 100644 index 2117da5b9..000000000 Binary files a/png/128/emoji_u1f958.png and /dev/null differ diff --git a/png/128/emoji_u1f959.png b/png/128/emoji_u1f959.png deleted file mode 100644 index c070764f1..000000000 Binary files a/png/128/emoji_u1f959.png and /dev/null differ diff --git a/png/128/emoji_u1f95a.png b/png/128/emoji_u1f95a.png deleted file mode 100644 index f1dfafa93..000000000 Binary files a/png/128/emoji_u1f95a.png and /dev/null differ diff --git a/png/128/emoji_u1f95a_200d_1f3a8.png b/png/128/emoji_u1f95a_200d_1f3a8.png deleted file mode 100644 index a390bcfdd..000000000 Binary files a/png/128/emoji_u1f95a_200d_1f3a8.png and /dev/null differ diff --git a/png/128/emoji_u1f95b.png b/png/128/emoji_u1f95b.png deleted file mode 100644 index d1f2bc876..000000000 Binary files a/png/128/emoji_u1f95b.png and /dev/null differ diff --git a/png/128/emoji_u1f95c.png b/png/128/emoji_u1f95c.png deleted file mode 100644 index 0598c4782..000000000 Binary files a/png/128/emoji_u1f95c.png and /dev/null differ diff --git a/png/128/emoji_u1f95d.png b/png/128/emoji_u1f95d.png deleted file mode 100644 index ea553475e..000000000 Binary files a/png/128/emoji_u1f95d.png and /dev/null differ diff --git a/png/128/emoji_u1f95e.png b/png/128/emoji_u1f95e.png deleted file mode 100644 index ba4046df2..000000000 Binary files a/png/128/emoji_u1f95e.png and /dev/null differ diff --git a/png/128/emoji_u1f95f.png b/png/128/emoji_u1f95f.png deleted file mode 100644 index 26dcf25b5..000000000 Binary files a/png/128/emoji_u1f95f.png and /dev/null differ diff --git a/png/128/emoji_u1f960.png b/png/128/emoji_u1f960.png deleted file mode 100644 index 09f82283a..000000000 Binary files a/png/128/emoji_u1f960.png and /dev/null differ diff --git a/png/128/emoji_u1f961.png b/png/128/emoji_u1f961.png deleted file mode 100644 index f5a9fca20..000000000 Binary files a/png/128/emoji_u1f961.png and /dev/null differ diff --git a/png/128/emoji_u1f962.png b/png/128/emoji_u1f962.png deleted file mode 100644 index ab06da20f..000000000 Binary files a/png/128/emoji_u1f962.png and /dev/null differ diff --git a/png/128/emoji_u1f963.png b/png/128/emoji_u1f963.png deleted file mode 100644 index b96de9816..000000000 Binary files a/png/128/emoji_u1f963.png and /dev/null differ diff --git a/png/128/emoji_u1f964.png b/png/128/emoji_u1f964.png deleted file mode 100644 index 53d0f4e1c..000000000 Binary files a/png/128/emoji_u1f964.png and /dev/null differ diff --git a/png/128/emoji_u1f965.png b/png/128/emoji_u1f965.png deleted file mode 100644 index 043776d0b..000000000 Binary files a/png/128/emoji_u1f965.png and /dev/null differ diff --git a/png/128/emoji_u1f966.png b/png/128/emoji_u1f966.png deleted file mode 100644 index d012fb7dd..000000000 Binary files a/png/128/emoji_u1f966.png and /dev/null differ diff --git a/png/128/emoji_u1f967.png b/png/128/emoji_u1f967.png deleted file mode 100644 index cacc15d95..000000000 Binary files a/png/128/emoji_u1f967.png and /dev/null differ diff --git a/png/128/emoji_u1f968.png b/png/128/emoji_u1f968.png deleted file mode 100644 index 825c9d1cc..000000000 Binary files a/png/128/emoji_u1f968.png and /dev/null differ diff --git a/png/128/emoji_u1f969.png b/png/128/emoji_u1f969.png deleted file mode 100644 index 438642526..000000000 Binary files a/png/128/emoji_u1f969.png and /dev/null differ diff --git a/png/128/emoji_u1f96a.png b/png/128/emoji_u1f96a.png deleted file mode 100644 index 287fa9c0b..000000000 Binary files a/png/128/emoji_u1f96a.png and /dev/null differ diff --git a/png/128/emoji_u1f96b.png b/png/128/emoji_u1f96b.png deleted file mode 100644 index 15889d386..000000000 Binary files a/png/128/emoji_u1f96b.png and /dev/null differ diff --git a/png/128/emoji_u1f96c.png b/png/128/emoji_u1f96c.png deleted file mode 100644 index 7b3afde9e..000000000 Binary files a/png/128/emoji_u1f96c.png and /dev/null differ diff --git a/png/128/emoji_u1f96d.png b/png/128/emoji_u1f96d.png deleted file mode 100644 index 2df987b88..000000000 Binary files a/png/128/emoji_u1f96d.png and /dev/null differ diff --git a/png/128/emoji_u1f96e.png b/png/128/emoji_u1f96e.png deleted file mode 100644 index a0e86a044..000000000 Binary files a/png/128/emoji_u1f96e.png and /dev/null differ diff --git a/png/128/emoji_u1f96f.png b/png/128/emoji_u1f96f.png deleted file mode 100644 index 0487dca9a..000000000 Binary files a/png/128/emoji_u1f96f.png and /dev/null differ diff --git a/png/128/emoji_u1f970.png b/png/128/emoji_u1f970.png deleted file mode 100644 index ca535e691..000000000 Binary files a/png/128/emoji_u1f970.png and /dev/null differ diff --git a/png/128/emoji_u1f971.png b/png/128/emoji_u1f971.png deleted file mode 100644 index 52080f298..000000000 Binary files a/png/128/emoji_u1f971.png and /dev/null differ diff --git a/png/128/emoji_u1f973.png b/png/128/emoji_u1f973.png deleted file mode 100644 index 88a802294..000000000 Binary files a/png/128/emoji_u1f973.png and /dev/null differ diff --git a/png/128/emoji_u1f974.png b/png/128/emoji_u1f974.png deleted file mode 100644 index 16dd16823..000000000 Binary files a/png/128/emoji_u1f974.png and /dev/null differ diff --git a/png/128/emoji_u1f975.png b/png/128/emoji_u1f975.png deleted file mode 100644 index 5c030bc14..000000000 Binary files a/png/128/emoji_u1f975.png and /dev/null differ diff --git a/png/128/emoji_u1f976.png b/png/128/emoji_u1f976.png deleted file mode 100644 index fff5210b3..000000000 Binary files a/png/128/emoji_u1f976.png and /dev/null differ diff --git a/png/128/emoji_u1f97a.png b/png/128/emoji_u1f97a.png deleted file mode 100644 index 54ead9726..000000000 Binary files a/png/128/emoji_u1f97a.png and /dev/null differ diff --git a/png/128/emoji_u1f97b.png b/png/128/emoji_u1f97b.png deleted file mode 100644 index a04ca66dd..000000000 Binary files a/png/128/emoji_u1f97b.png and /dev/null differ diff --git a/png/128/emoji_u1f97c.png b/png/128/emoji_u1f97c.png deleted file mode 100644 index 790c15fdc..000000000 Binary files a/png/128/emoji_u1f97c.png and /dev/null differ diff --git a/png/128/emoji_u1f97d.png b/png/128/emoji_u1f97d.png deleted file mode 100644 index d27c978d2..000000000 Binary files a/png/128/emoji_u1f97d.png and /dev/null differ diff --git a/png/128/emoji_u1f97e.png b/png/128/emoji_u1f97e.png deleted file mode 100644 index b241202ee..000000000 Binary files a/png/128/emoji_u1f97e.png and /dev/null differ diff --git a/png/128/emoji_u1f97f.png b/png/128/emoji_u1f97f.png deleted file mode 100644 index 063d5e5c8..000000000 Binary files a/png/128/emoji_u1f97f.png and /dev/null differ diff --git a/png/128/emoji_u1f980.png b/png/128/emoji_u1f980.png deleted file mode 100644 index c9e29026a..000000000 Binary files a/png/128/emoji_u1f980.png and /dev/null differ diff --git a/png/128/emoji_u1f981.png b/png/128/emoji_u1f981.png deleted file mode 100644 index d328dde36..000000000 Binary files a/png/128/emoji_u1f981.png and /dev/null differ diff --git a/png/128/emoji_u1f982.png b/png/128/emoji_u1f982.png deleted file mode 100644 index 78d7ff750..000000000 Binary files a/png/128/emoji_u1f982.png and /dev/null differ diff --git a/png/128/emoji_u1f983.png b/png/128/emoji_u1f983.png deleted file mode 100644 index 56f92d09c..000000000 Binary files a/png/128/emoji_u1f983.png and /dev/null differ diff --git a/png/128/emoji_u1f984.png b/png/128/emoji_u1f984.png deleted file mode 100644 index 4f59118e1..000000000 Binary files a/png/128/emoji_u1f984.png and /dev/null differ diff --git a/png/128/emoji_u1f985.png b/png/128/emoji_u1f985.png deleted file mode 100644 index 9c7f1fb78..000000000 Binary files a/png/128/emoji_u1f985.png and /dev/null differ diff --git a/png/128/emoji_u1f986.png b/png/128/emoji_u1f986.png deleted file mode 100644 index 16f85509b..000000000 Binary files a/png/128/emoji_u1f986.png and /dev/null differ diff --git a/png/128/emoji_u1f987.png b/png/128/emoji_u1f987.png deleted file mode 100644 index aa8e13f4f..000000000 Binary files a/png/128/emoji_u1f987.png and /dev/null differ diff --git a/png/128/emoji_u1f988.png b/png/128/emoji_u1f988.png deleted file mode 100644 index 1eecbb119..000000000 Binary files a/png/128/emoji_u1f988.png and /dev/null differ diff --git a/png/128/emoji_u1f989.png b/png/128/emoji_u1f989.png deleted file mode 100644 index 743c404b0..000000000 Binary files a/png/128/emoji_u1f989.png and /dev/null differ diff --git a/png/128/emoji_u1f98a.png b/png/128/emoji_u1f98a.png deleted file mode 100644 index d97e2b935..000000000 Binary files a/png/128/emoji_u1f98a.png and /dev/null differ diff --git a/png/128/emoji_u1f98b.png b/png/128/emoji_u1f98b.png deleted file mode 100644 index 69adf71b6..000000000 Binary files a/png/128/emoji_u1f98b.png and /dev/null differ diff --git a/png/128/emoji_u1f98c.png b/png/128/emoji_u1f98c.png deleted file mode 100644 index 97e8cf00b..000000000 Binary files a/png/128/emoji_u1f98c.png and /dev/null differ diff --git a/png/128/emoji_u1f98d.png b/png/128/emoji_u1f98d.png deleted file mode 100644 index 3dd4b0b6f..000000000 Binary files a/png/128/emoji_u1f98d.png and /dev/null differ diff --git a/png/128/emoji_u1f98e.png b/png/128/emoji_u1f98e.png deleted file mode 100644 index 27bbba4c8..000000000 Binary files a/png/128/emoji_u1f98e.png and /dev/null differ diff --git a/png/128/emoji_u1f98f.png b/png/128/emoji_u1f98f.png deleted file mode 100644 index 8e615e3a6..000000000 Binary files a/png/128/emoji_u1f98f.png and /dev/null differ diff --git a/png/128/emoji_u1f990.png b/png/128/emoji_u1f990.png deleted file mode 100644 index e92603b3c..000000000 Binary files a/png/128/emoji_u1f990.png and /dev/null differ diff --git a/png/128/emoji_u1f991.png b/png/128/emoji_u1f991.png deleted file mode 100644 index 2b6fe57eb..000000000 Binary files a/png/128/emoji_u1f991.png and /dev/null differ diff --git a/png/128/emoji_u1f992.png b/png/128/emoji_u1f992.png deleted file mode 100644 index 2d168619e..000000000 Binary files a/png/128/emoji_u1f992.png and /dev/null differ diff --git a/png/128/emoji_u1f993.png b/png/128/emoji_u1f993.png deleted file mode 100644 index a1502e004..000000000 Binary files a/png/128/emoji_u1f993.png and /dev/null differ diff --git a/png/128/emoji_u1f994.png b/png/128/emoji_u1f994.png deleted file mode 100644 index 3befd2eaa..000000000 Binary files a/png/128/emoji_u1f994.png and /dev/null differ diff --git a/png/128/emoji_u1f995.png b/png/128/emoji_u1f995.png deleted file mode 100644 index 4c7ea9b21..000000000 Binary files a/png/128/emoji_u1f995.png and /dev/null differ diff --git a/png/128/emoji_u1f996.png b/png/128/emoji_u1f996.png deleted file mode 100644 index 18d24bea6..000000000 Binary files a/png/128/emoji_u1f996.png and /dev/null differ diff --git a/png/128/emoji_u1f997.png b/png/128/emoji_u1f997.png deleted file mode 100644 index 366b3147a..000000000 Binary files a/png/128/emoji_u1f997.png and /dev/null differ diff --git a/png/128/emoji_u1f998.png b/png/128/emoji_u1f998.png deleted file mode 100644 index d154183bd..000000000 Binary files a/png/128/emoji_u1f998.png and /dev/null differ diff --git a/png/128/emoji_u1f999.png b/png/128/emoji_u1f999.png deleted file mode 100644 index f57e98417..000000000 Binary files a/png/128/emoji_u1f999.png and /dev/null differ diff --git a/png/128/emoji_u1f99a.png b/png/128/emoji_u1f99a.png deleted file mode 100644 index 77b27a22f..000000000 Binary files a/png/128/emoji_u1f99a.png and /dev/null differ diff --git a/png/128/emoji_u1f99b.png b/png/128/emoji_u1f99b.png deleted file mode 100644 index 3319f52eb..000000000 Binary files a/png/128/emoji_u1f99b.png and /dev/null differ diff --git a/png/128/emoji_u1f99c.png b/png/128/emoji_u1f99c.png deleted file mode 100644 index a0b3d567d..000000000 Binary files a/png/128/emoji_u1f99c.png and /dev/null differ diff --git a/png/128/emoji_u1f99d.png b/png/128/emoji_u1f99d.png deleted file mode 100644 index 646afda51..000000000 Binary files a/png/128/emoji_u1f99d.png and /dev/null differ diff --git a/png/128/emoji_u1f99e.png b/png/128/emoji_u1f99e.png deleted file mode 100644 index 8ab291c02..000000000 Binary files a/png/128/emoji_u1f99e.png and /dev/null differ diff --git a/png/128/emoji_u1f99f.png b/png/128/emoji_u1f99f.png deleted file mode 100644 index d10e06eaa..000000000 Binary files a/png/128/emoji_u1f99f.png and /dev/null differ diff --git a/png/128/emoji_u1f9a0.png b/png/128/emoji_u1f9a0.png deleted file mode 100644 index 475302868..000000000 Binary files a/png/128/emoji_u1f9a0.png and /dev/null differ diff --git a/png/128/emoji_u1f9a1.png b/png/128/emoji_u1f9a1.png deleted file mode 100644 index 1674b5c5d..000000000 Binary files a/png/128/emoji_u1f9a1.png and /dev/null differ diff --git a/png/128/emoji_u1f9a2.png b/png/128/emoji_u1f9a2.png deleted file mode 100644 index 9049552e5..000000000 Binary files a/png/128/emoji_u1f9a2.png and /dev/null differ diff --git a/png/128/emoji_u1f9a5.png b/png/128/emoji_u1f9a5.png deleted file mode 100644 index 60ac3a5f5..000000000 Binary files a/png/128/emoji_u1f9a5.png and /dev/null differ diff --git a/png/128/emoji_u1f9a6.png b/png/128/emoji_u1f9a6.png deleted file mode 100644 index 950095c34..000000000 Binary files a/png/128/emoji_u1f9a6.png and /dev/null differ diff --git a/png/128/emoji_u1f9a7.png b/png/128/emoji_u1f9a7.png deleted file mode 100644 index c40273b9d..000000000 Binary files a/png/128/emoji_u1f9a7.png and /dev/null differ diff --git a/png/128/emoji_u1f9a8.png b/png/128/emoji_u1f9a8.png deleted file mode 100644 index 880cdb4a7..000000000 Binary files a/png/128/emoji_u1f9a8.png and /dev/null differ diff --git a/png/128/emoji_u1f9a9.png b/png/128/emoji_u1f9a9.png deleted file mode 100644 index 16a125c67..000000000 Binary files a/png/128/emoji_u1f9a9.png and /dev/null differ diff --git a/png/128/emoji_u1f9aa.png b/png/128/emoji_u1f9aa.png deleted file mode 100644 index 52c2b54c8..000000000 Binary files a/png/128/emoji_u1f9aa.png and /dev/null differ diff --git a/png/128/emoji_u1f9ae.png b/png/128/emoji_u1f9ae.png deleted file mode 100644 index c8d38c409..000000000 Binary files a/png/128/emoji_u1f9ae.png and /dev/null differ diff --git a/png/128/emoji_u1f9af.png b/png/128/emoji_u1f9af.png deleted file mode 100644 index 629fcaa1c..000000000 Binary files a/png/128/emoji_u1f9af.png and /dev/null differ diff --git a/png/128/emoji_u1f9b0.png b/png/128/emoji_u1f9b0.png deleted file mode 100644 index ffbb79f9d..000000000 Binary files a/png/128/emoji_u1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9b1.png b/png/128/emoji_u1f9b1.png deleted file mode 100644 index 7957c5a5b..000000000 Binary files a/png/128/emoji_u1f9b1.png and /dev/null differ diff --git a/png/128/emoji_u1f9b2.png b/png/128/emoji_u1f9b2.png deleted file mode 100644 index 7312347af..000000000 Binary files a/png/128/emoji_u1f9b2.png and /dev/null differ diff --git a/png/128/emoji_u1f9b3.png b/png/128/emoji_u1f9b3.png deleted file mode 100644 index 63205ab21..000000000 Binary files a/png/128/emoji_u1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9b4.png b/png/128/emoji_u1f9b4.png deleted file mode 100644 index 05f618cad..000000000 Binary files a/png/128/emoji_u1f9b4.png and /dev/null differ diff --git a/png/128/emoji_u1f9b5.png b/png/128/emoji_u1f9b5.png deleted file mode 100644 index e854978cb..000000000 Binary files a/png/128/emoji_u1f9b5.png and /dev/null differ diff --git a/png/128/emoji_u1f9b5_1f3fb.png b/png/128/emoji_u1f9b5_1f3fb.png deleted file mode 100644 index ef8519513..000000000 Binary files a/png/128/emoji_u1f9b5_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9b5_1f3fc.png b/png/128/emoji_u1f9b5_1f3fc.png deleted file mode 100644 index 476273786..000000000 Binary files a/png/128/emoji_u1f9b5_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9b5_1f3fd.png b/png/128/emoji_u1f9b5_1f3fd.png deleted file mode 100644 index 67cdb1f85..000000000 Binary files a/png/128/emoji_u1f9b5_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9b5_1f3fe.png b/png/128/emoji_u1f9b5_1f3fe.png deleted file mode 100644 index d04e1cfd8..000000000 Binary files a/png/128/emoji_u1f9b5_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9b5_1f3ff.png b/png/128/emoji_u1f9b5_1f3ff.png deleted file mode 100644 index 1ad770cb6..000000000 Binary files a/png/128/emoji_u1f9b5_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9b6.png b/png/128/emoji_u1f9b6.png deleted file mode 100644 index cc9b2c8c9..000000000 Binary files a/png/128/emoji_u1f9b6.png and /dev/null differ diff --git a/png/128/emoji_u1f9b6_1f3fb.png b/png/128/emoji_u1f9b6_1f3fb.png deleted file mode 100644 index 3cd6b39eb..000000000 Binary files a/png/128/emoji_u1f9b6_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9b6_1f3fc.png b/png/128/emoji_u1f9b6_1f3fc.png deleted file mode 100644 index d2ca0aa77..000000000 Binary files a/png/128/emoji_u1f9b6_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9b6_1f3fd.png b/png/128/emoji_u1f9b6_1f3fd.png deleted file mode 100644 index ed2a9872d..000000000 Binary files a/png/128/emoji_u1f9b6_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9b6_1f3fe.png b/png/128/emoji_u1f9b6_1f3fe.png deleted file mode 100644 index 69b291e1e..000000000 Binary files a/png/128/emoji_u1f9b6_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9b6_1f3ff.png b/png/128/emoji_u1f9b6_1f3ff.png deleted file mode 100644 index 1e67cdf37..000000000 Binary files a/png/128/emoji_u1f9b6_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9b7.png b/png/128/emoji_u1f9b7.png deleted file mode 100644 index 348453ff9..000000000 Binary files a/png/128/emoji_u1f9b7.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8.png b/png/128/emoji_u1f9b8.png deleted file mode 100644 index 6438f777a..000000000 Binary files a/png/128/emoji_u1f9b8.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fb.png b/png/128/emoji_u1f9b8_1f3fb.png deleted file mode 100644 index d4f8660f8..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fb_200d_2640.png b/png/128/emoji_u1f9b8_1f3fb_200d_2640.png deleted file mode 100644 index 9aca96dc6..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fb_200d_2642.png b/png/128/emoji_u1f9b8_1f3fb_200d_2642.png deleted file mode 100644 index 35ad8291d..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fc.png b/png/128/emoji_u1f9b8_1f3fc.png deleted file mode 100644 index 2afbe15a1..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fc_200d_2640.png b/png/128/emoji_u1f9b8_1f3fc_200d_2640.png deleted file mode 100644 index bd68ebba5..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fc_200d_2642.png b/png/128/emoji_u1f9b8_1f3fc_200d_2642.png deleted file mode 100644 index 335a252f3..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fd.png b/png/128/emoji_u1f9b8_1f3fd.png deleted file mode 100644 index 9cd08be80..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fd_200d_2640.png b/png/128/emoji_u1f9b8_1f3fd_200d_2640.png deleted file mode 100644 index c1fabb18e..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fd_200d_2642.png b/png/128/emoji_u1f9b8_1f3fd_200d_2642.png deleted file mode 100644 index 7862293c2..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fe.png b/png/128/emoji_u1f9b8_1f3fe.png deleted file mode 100644 index ecda40882..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fe_200d_2640.png b/png/128/emoji_u1f9b8_1f3fe_200d_2640.png deleted file mode 100644 index cddf8b211..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3fe_200d_2642.png b/png/128/emoji_u1f9b8_1f3fe_200d_2642.png deleted file mode 100644 index f55203815..000000000 Binary files a/png/128/emoji_u1f9b8_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3ff.png b/png/128/emoji_u1f9b8_1f3ff.png deleted file mode 100644 index 61bb95d71..000000000 Binary files a/png/128/emoji_u1f9b8_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3ff_200d_2640.png b/png/128/emoji_u1f9b8_1f3ff_200d_2640.png deleted file mode 100644 index 6707380cf..000000000 Binary files a/png/128/emoji_u1f9b8_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f3ff_200d_2642.png b/png/128/emoji_u1f9b8_1f3ff_200d_2642.png deleted file mode 100644 index 8b11860f2..000000000 Binary files a/png/128/emoji_u1f9b8_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f9b0.png b/png/128/emoji_u1f9b8_1f9b0.png deleted file mode 100644 index 31fa7354f..000000000 Binary files a/png/128/emoji_u1f9b8_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f9b0_200d_2640.png b/png/128/emoji_u1f9b8_1f9b0_200d_2640.png deleted file mode 100644 index 4bde3a741..000000000 Binary files a/png/128/emoji_u1f9b8_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f9b0_200d_2642.png b/png/128/emoji_u1f9b8_1f9b0_200d_2642.png deleted file mode 100644 index 672c0f4c7..000000000 Binary files a/png/128/emoji_u1f9b8_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f9b3.png b/png/128/emoji_u1f9b8_1f9b3.png deleted file mode 100644 index 8c50bed81..000000000 Binary files a/png/128/emoji_u1f9b8_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f9b3_200d_2640.png b/png/128/emoji_u1f9b8_1f9b3_200d_2640.png deleted file mode 100644 index 54eb25afd..000000000 Binary files a/png/128/emoji_u1f9b8_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_1f9b3_200d_2642.png b/png/128/emoji_u1f9b8_1f9b3_200d_2642.png deleted file mode 100644 index 571c13021..000000000 Binary files a/png/128/emoji_u1f9b8_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_200d_2063.png b/png/128/emoji_u1f9b8_200d_2063.png deleted file mode 100644 index 09a3c370a..000000000 Binary files a/png/128/emoji_u1f9b8_200d_2063.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_200d_2640.png b/png/128/emoji_u1f9b8_200d_2640.png deleted file mode 100644 index 2dcf01c0d..000000000 Binary files a/png/128/emoji_u1f9b8_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b8_200d_2642.png b/png/128/emoji_u1f9b8_200d_2642.png deleted file mode 100644 index 6c08fef87..000000000 Binary files a/png/128/emoji_u1f9b8_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9.png b/png/128/emoji_u1f9b9.png deleted file mode 100644 index 0c6fbe665..000000000 Binary files a/png/128/emoji_u1f9b9.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fb.png b/png/128/emoji_u1f9b9_1f3fb.png deleted file mode 100644 index 5e564a4db..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fb_200d_2640.png b/png/128/emoji_u1f9b9_1f3fb_200d_2640.png deleted file mode 100644 index c19467482..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fb_200d_2642.png b/png/128/emoji_u1f9b9_1f3fb_200d_2642.png deleted file mode 100644 index 066ce68a7..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fc.png b/png/128/emoji_u1f9b9_1f3fc.png deleted file mode 100644 index 6d9d82de6..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fc_200d_2640.png b/png/128/emoji_u1f9b9_1f3fc_200d_2640.png deleted file mode 100644 index 0d1b27567..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fc_200d_2642.png b/png/128/emoji_u1f9b9_1f3fc_200d_2642.png deleted file mode 100644 index 41fc2566e..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fd.png b/png/128/emoji_u1f9b9_1f3fd.png deleted file mode 100644 index 5e06e4ac1..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fd_200d_2640.png b/png/128/emoji_u1f9b9_1f3fd_200d_2640.png deleted file mode 100644 index ce988c228..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fd_200d_2642.png b/png/128/emoji_u1f9b9_1f3fd_200d_2642.png deleted file mode 100644 index baa4da8c1..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fe.png b/png/128/emoji_u1f9b9_1f3fe.png deleted file mode 100644 index 7c03d6c52..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fe_200d_2640.png b/png/128/emoji_u1f9b9_1f3fe_200d_2640.png deleted file mode 100644 index 2845d2c39..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3fe_200d_2642.png b/png/128/emoji_u1f9b9_1f3fe_200d_2642.png deleted file mode 100644 index a52444d3c..000000000 Binary files a/png/128/emoji_u1f9b9_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3ff.png b/png/128/emoji_u1f9b9_1f3ff.png deleted file mode 100644 index f54bafd9a..000000000 Binary files a/png/128/emoji_u1f9b9_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3ff_200d_2640.png b/png/128/emoji_u1f9b9_1f3ff_200d_2640.png deleted file mode 100644 index 0cb231391..000000000 Binary files a/png/128/emoji_u1f9b9_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f3ff_200d_2642.png b/png/128/emoji_u1f9b9_1f3ff_200d_2642.png deleted file mode 100644 index 172994ba0..000000000 Binary files a/png/128/emoji_u1f9b9_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f9b0.png b/png/128/emoji_u1f9b9_1f9b0.png deleted file mode 100644 index 78ca25290..000000000 Binary files a/png/128/emoji_u1f9b9_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f9b0_200d_2640.png b/png/128/emoji_u1f9b9_1f9b0_200d_2640.png deleted file mode 100644 index 869b8bd13..000000000 Binary files a/png/128/emoji_u1f9b9_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f9b0_200d_2642.png b/png/128/emoji_u1f9b9_1f9b0_200d_2642.png deleted file mode 100644 index 98a5f855b..000000000 Binary files a/png/128/emoji_u1f9b9_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f9b3.png b/png/128/emoji_u1f9b9_1f9b3.png deleted file mode 100644 index 3e472e866..000000000 Binary files a/png/128/emoji_u1f9b9_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f9b3_200d_2640.png b/png/128/emoji_u1f9b9_1f9b3_200d_2640.png deleted file mode 100644 index cbf8b354f..000000000 Binary files a/png/128/emoji_u1f9b9_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_1f9b3_200d_2642.png b/png/128/emoji_u1f9b9_1f9b3_200d_2642.png deleted file mode 100644 index 3c4a56d40..000000000 Binary files a/png/128/emoji_u1f9b9_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_200d_2063.png b/png/128/emoji_u1f9b9_200d_2063.png deleted file mode 100644 index b8c4e8ae6..000000000 Binary files a/png/128/emoji_u1f9b9_200d_2063.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_200d_2640.png b/png/128/emoji_u1f9b9_200d_2640.png deleted file mode 100644 index 76c29cc28..000000000 Binary files a/png/128/emoji_u1f9b9_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9b9_200d_2642.png b/png/128/emoji_u1f9b9_200d_2642.png deleted file mode 100644 index 222c97af2..000000000 Binary files a/png/128/emoji_u1f9b9_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ba.png b/png/128/emoji_u1f9ba.png deleted file mode 100644 index 66449b1de..000000000 Binary files a/png/128/emoji_u1f9ba.png and /dev/null differ diff --git a/png/128/emoji_u1f9bb.png b/png/128/emoji_u1f9bb.png deleted file mode 100644 index 0dd291f5c..000000000 Binary files a/png/128/emoji_u1f9bb.png and /dev/null differ diff --git a/png/128/emoji_u1f9bb_1f3fb.png b/png/128/emoji_u1f9bb_1f3fb.png deleted file mode 100644 index 5f5b33f7d..000000000 Binary files a/png/128/emoji_u1f9bb_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9bb_1f3fc.png b/png/128/emoji_u1f9bb_1f3fc.png deleted file mode 100644 index 69baaac6e..000000000 Binary files a/png/128/emoji_u1f9bb_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9bb_1f3fd.png b/png/128/emoji_u1f9bb_1f3fd.png deleted file mode 100644 index 7c84c5386..000000000 Binary files a/png/128/emoji_u1f9bb_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9bb_1f3fe.png b/png/128/emoji_u1f9bb_1f3fe.png deleted file mode 100644 index 22e6b0fcf..000000000 Binary files a/png/128/emoji_u1f9bb_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9bb_1f3ff.png b/png/128/emoji_u1f9bb_1f3ff.png deleted file mode 100644 index 52ec4a41e..000000000 Binary files a/png/128/emoji_u1f9bb_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9bc.png b/png/128/emoji_u1f9bc.png deleted file mode 100644 index 6aeda8bbd..000000000 Binary files a/png/128/emoji_u1f9bc.png and /dev/null differ diff --git a/png/128/emoji_u1f9bd.png b/png/128/emoji_u1f9bd.png deleted file mode 100644 index 6d49f1f00..000000000 Binary files a/png/128/emoji_u1f9bd.png and /dev/null differ diff --git a/png/128/emoji_u1f9be.png b/png/128/emoji_u1f9be.png deleted file mode 100644 index 7e5ee5474..000000000 Binary files a/png/128/emoji_u1f9be.png and /dev/null differ diff --git a/png/128/emoji_u1f9bf.png b/png/128/emoji_u1f9bf.png deleted file mode 100644 index a6b972841..000000000 Binary files a/png/128/emoji_u1f9bf.png and /dev/null differ diff --git a/png/128/emoji_u1f9c0.png b/png/128/emoji_u1f9c0.png deleted file mode 100644 index 395803102..000000000 Binary files a/png/128/emoji_u1f9c0.png and /dev/null differ diff --git a/png/128/emoji_u1f9c1.png b/png/128/emoji_u1f9c1.png deleted file mode 100644 index beb51b1de..000000000 Binary files a/png/128/emoji_u1f9c1.png and /dev/null differ diff --git a/png/128/emoji_u1f9c2.png b/png/128/emoji_u1f9c2.png deleted file mode 100644 index 110003855..000000000 Binary files a/png/128/emoji_u1f9c2.png and /dev/null differ diff --git a/png/128/emoji_u1f9c3.png b/png/128/emoji_u1f9c3.png deleted file mode 100644 index 639cc682e..000000000 Binary files a/png/128/emoji_u1f9c3.png and /dev/null differ diff --git a/png/128/emoji_u1f9c4.png b/png/128/emoji_u1f9c4.png deleted file mode 100644 index f31c53991..000000000 Binary files a/png/128/emoji_u1f9c4.png and /dev/null differ diff --git a/png/128/emoji_u1f9c5.png b/png/128/emoji_u1f9c5.png deleted file mode 100644 index f8d5ff051..000000000 Binary files a/png/128/emoji_u1f9c5.png and /dev/null differ diff --git a/png/128/emoji_u1f9c6.png b/png/128/emoji_u1f9c6.png deleted file mode 100644 index dd50e19a9..000000000 Binary files a/png/128/emoji_u1f9c6.png and /dev/null differ diff --git a/png/128/emoji_u1f9c7.png b/png/128/emoji_u1f9c7.png deleted file mode 100644 index d4f6b911b..000000000 Binary files a/png/128/emoji_u1f9c7.png and /dev/null differ diff --git a/png/128/emoji_u1f9c8.png b/png/128/emoji_u1f9c8.png deleted file mode 100644 index b728d2a3a..000000000 Binary files a/png/128/emoji_u1f9c8.png and /dev/null differ diff --git a/png/128/emoji_u1f9c9.png b/png/128/emoji_u1f9c9.png deleted file mode 100644 index da169a6bb..000000000 Binary files a/png/128/emoji_u1f9c9.png and /dev/null differ diff --git a/png/128/emoji_u1f9ca.png b/png/128/emoji_u1f9ca.png deleted file mode 100644 index 77c5517fe..000000000 Binary files a/png/128/emoji_u1f9ca.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd.png b/png/128/emoji_u1f9cd.png deleted file mode 100644 index 9c3536401..000000000 Binary files a/png/128/emoji_u1f9cd.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fb.png b/png/128/emoji_u1f9cd_1f3fb.png deleted file mode 100644 index 720475c8b..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fb_200d_2640.png b/png/128/emoji_u1f9cd_1f3fb_200d_2640.png deleted file mode 100644 index f2d01addb..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fb_200d_2642.png b/png/128/emoji_u1f9cd_1f3fb_200d_2642.png deleted file mode 100644 index 92aab5def..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fc.png b/png/128/emoji_u1f9cd_1f3fc.png deleted file mode 100644 index a82e123e8..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fc_200d_2640.png b/png/128/emoji_u1f9cd_1f3fc_200d_2640.png deleted file mode 100644 index 07a060ac2..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fc_200d_2642.png b/png/128/emoji_u1f9cd_1f3fc_200d_2642.png deleted file mode 100644 index cb77caee5..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fd.png b/png/128/emoji_u1f9cd_1f3fd.png deleted file mode 100644 index 23bd561d5..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fd_200d_2640.png b/png/128/emoji_u1f9cd_1f3fd_200d_2640.png deleted file mode 100644 index 0f76d8348..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fd_200d_2642.png b/png/128/emoji_u1f9cd_1f3fd_200d_2642.png deleted file mode 100644 index 4323cfdc7..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fe.png b/png/128/emoji_u1f9cd_1f3fe.png deleted file mode 100644 index e54d84c62..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fe_200d_2640.png b/png/128/emoji_u1f9cd_1f3fe_200d_2640.png deleted file mode 100644 index 59b79b47d..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3fe_200d_2642.png b/png/128/emoji_u1f9cd_1f3fe_200d_2642.png deleted file mode 100644 index 9bd204869..000000000 Binary files a/png/128/emoji_u1f9cd_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3ff.png b/png/128/emoji_u1f9cd_1f3ff.png deleted file mode 100644 index 5e103623a..000000000 Binary files a/png/128/emoji_u1f9cd_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3ff_200d_2640.png b/png/128/emoji_u1f9cd_1f3ff_200d_2640.png deleted file mode 100644 index 9c7400260..000000000 Binary files a/png/128/emoji_u1f9cd_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f3ff_200d_2642.png b/png/128/emoji_u1f9cd_1f3ff_200d_2642.png deleted file mode 100644 index ef302027b..000000000 Binary files a/png/128/emoji_u1f9cd_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f9b0.png b/png/128/emoji_u1f9cd_1f9b0.png deleted file mode 100644 index ab8f5565d..000000000 Binary files a/png/128/emoji_u1f9cd_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f9b0_200d_2640.png b/png/128/emoji_u1f9cd_1f9b0_200d_2640.png deleted file mode 100644 index 13378b900..000000000 Binary files a/png/128/emoji_u1f9cd_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f9b0_200d_2642.png b/png/128/emoji_u1f9cd_1f9b0_200d_2642.png deleted file mode 100644 index 56f3a5bba..000000000 Binary files a/png/128/emoji_u1f9cd_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f9b3.png b/png/128/emoji_u1f9cd_1f9b3.png deleted file mode 100644 index 8608d24e6..000000000 Binary files a/png/128/emoji_u1f9cd_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f9b3_200d_2640.png b/png/128/emoji_u1f9cd_1f9b3_200d_2640.png deleted file mode 100644 index e8c9be770..000000000 Binary files a/png/128/emoji_u1f9cd_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_1f9b3_200d_2642.png b/png/128/emoji_u1f9cd_1f9b3_200d_2642.png deleted file mode 100644 index f0e810479..000000000 Binary files a/png/128/emoji_u1f9cd_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_200d_2640.png b/png/128/emoji_u1f9cd_200d_2640.png deleted file mode 100644 index 823be889e..000000000 Binary files a/png/128/emoji_u1f9cd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cd_200d_2642.png b/png/128/emoji_u1f9cd_200d_2642.png deleted file mode 100644 index 9c608954b..000000000 Binary files a/png/128/emoji_u1f9cd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce.png b/png/128/emoji_u1f9ce.png deleted file mode 100644 index 8e2d25a25..000000000 Binary files a/png/128/emoji_u1f9ce.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fb.png b/png/128/emoji_u1f9ce_1f3fb.png deleted file mode 100644 index 56f8bdd60..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fb_200d_2640.png b/png/128/emoji_u1f9ce_1f3fb_200d_2640.png deleted file mode 100644 index 8909e3a58..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fb_200d_2642.png b/png/128/emoji_u1f9ce_1f3fb_200d_2642.png deleted file mode 100644 index 9da2a5038..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fc.png b/png/128/emoji_u1f9ce_1f3fc.png deleted file mode 100644 index e7c2c3374..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fc_200d_2640.png b/png/128/emoji_u1f9ce_1f3fc_200d_2640.png deleted file mode 100644 index 2c78bbb56..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fc_200d_2642.png b/png/128/emoji_u1f9ce_1f3fc_200d_2642.png deleted file mode 100644 index 5450e5399..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fd.png b/png/128/emoji_u1f9ce_1f3fd.png deleted file mode 100644 index 2dc9e49ca..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fd_200d_2640.png b/png/128/emoji_u1f9ce_1f3fd_200d_2640.png deleted file mode 100644 index e5941f7bf..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fd_200d_2642.png b/png/128/emoji_u1f9ce_1f3fd_200d_2642.png deleted file mode 100644 index b789f77fe..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fe.png b/png/128/emoji_u1f9ce_1f3fe.png deleted file mode 100644 index 6c5f308fa..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fe_200d_2640.png b/png/128/emoji_u1f9ce_1f3fe_200d_2640.png deleted file mode 100644 index ab305aa87..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3fe_200d_2642.png b/png/128/emoji_u1f9ce_1f3fe_200d_2642.png deleted file mode 100644 index 537f9f045..000000000 Binary files a/png/128/emoji_u1f9ce_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3ff.png b/png/128/emoji_u1f9ce_1f3ff.png deleted file mode 100644 index c4b6f8d29..000000000 Binary files a/png/128/emoji_u1f9ce_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3ff_200d_2640.png b/png/128/emoji_u1f9ce_1f3ff_200d_2640.png deleted file mode 100644 index f3f627fe5..000000000 Binary files a/png/128/emoji_u1f9ce_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f3ff_200d_2642.png b/png/128/emoji_u1f9ce_1f3ff_200d_2642.png deleted file mode 100644 index 62af3e5a5..000000000 Binary files a/png/128/emoji_u1f9ce_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f9b0.png b/png/128/emoji_u1f9ce_1f9b0.png deleted file mode 100644 index 9d98ee81a..000000000 Binary files a/png/128/emoji_u1f9ce_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f9b0_200d_2640.png b/png/128/emoji_u1f9ce_1f9b0_200d_2640.png deleted file mode 100644 index 3f57ffd7d..000000000 Binary files a/png/128/emoji_u1f9ce_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f9b0_200d_2642.png b/png/128/emoji_u1f9ce_1f9b0_200d_2642.png deleted file mode 100644 index 135f511c4..000000000 Binary files a/png/128/emoji_u1f9ce_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f9b3.png b/png/128/emoji_u1f9ce_1f9b3.png deleted file mode 100644 index dab84147b..000000000 Binary files a/png/128/emoji_u1f9ce_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f9b3_200d_2640.png b/png/128/emoji_u1f9ce_1f9b3_200d_2640.png deleted file mode 100644 index d79e33474..000000000 Binary files a/png/128/emoji_u1f9ce_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_1f9b3_200d_2642.png b/png/128/emoji_u1f9ce_1f9b3_200d_2642.png deleted file mode 100644 index 32faff396..000000000 Binary files a/png/128/emoji_u1f9ce_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_200d_2640.png b/png/128/emoji_u1f9ce_200d_2640.png deleted file mode 100644 index 3d3335839..000000000 Binary files a/png/128/emoji_u1f9ce_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9ce_200d_2642.png b/png/128/emoji_u1f9ce_200d_2642.png deleted file mode 100644 index d5807d93f..000000000 Binary files a/png/128/emoji_u1f9ce_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf.png b/png/128/emoji_u1f9cf.png deleted file mode 100644 index 31567f4b1..000000000 Binary files a/png/128/emoji_u1f9cf.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fb.png b/png/128/emoji_u1f9cf_1f3fb.png deleted file mode 100644 index bcb369e3d..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fb_200d_2640.png b/png/128/emoji_u1f9cf_1f3fb_200d_2640.png deleted file mode 100644 index e4e1bd65f..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fb_200d_2642.png b/png/128/emoji_u1f9cf_1f3fb_200d_2642.png deleted file mode 100644 index 241e13a04..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fc.png b/png/128/emoji_u1f9cf_1f3fc.png deleted file mode 100644 index e2dadd86f..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fc_200d_2640.png b/png/128/emoji_u1f9cf_1f3fc_200d_2640.png deleted file mode 100644 index 39fe7387b..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fc_200d_2642.png b/png/128/emoji_u1f9cf_1f3fc_200d_2642.png deleted file mode 100644 index 592c3c685..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fd.png b/png/128/emoji_u1f9cf_1f3fd.png deleted file mode 100644 index 1f9d21a6e..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fd_200d_2640.png b/png/128/emoji_u1f9cf_1f3fd_200d_2640.png deleted file mode 100644 index 8216262e3..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fd_200d_2642.png b/png/128/emoji_u1f9cf_1f3fd_200d_2642.png deleted file mode 100644 index f60109f5e..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fe.png b/png/128/emoji_u1f9cf_1f3fe.png deleted file mode 100644 index 8de4655f5..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fe_200d_2640.png b/png/128/emoji_u1f9cf_1f3fe_200d_2640.png deleted file mode 100644 index 6c4b788e5..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3fe_200d_2642.png b/png/128/emoji_u1f9cf_1f3fe_200d_2642.png deleted file mode 100644 index a24ebd109..000000000 Binary files a/png/128/emoji_u1f9cf_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3ff.png b/png/128/emoji_u1f9cf_1f3ff.png deleted file mode 100644 index 8e38a4ec0..000000000 Binary files a/png/128/emoji_u1f9cf_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3ff_200d_2640.png b/png/128/emoji_u1f9cf_1f3ff_200d_2640.png deleted file mode 100644 index eae7f2d0e..000000000 Binary files a/png/128/emoji_u1f9cf_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f3ff_200d_2642.png b/png/128/emoji_u1f9cf_1f3ff_200d_2642.png deleted file mode 100644 index 5fd6d463d..000000000 Binary files a/png/128/emoji_u1f9cf_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f9b0.png b/png/128/emoji_u1f9cf_1f9b0.png deleted file mode 100644 index d3ce5b2f6..000000000 Binary files a/png/128/emoji_u1f9cf_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f9b0_200d_2640.png b/png/128/emoji_u1f9cf_1f9b0_200d_2640.png deleted file mode 100644 index c8b466d13..000000000 Binary files a/png/128/emoji_u1f9cf_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f9b0_200d_2642.png b/png/128/emoji_u1f9cf_1f9b0_200d_2642.png deleted file mode 100644 index f0efe701c..000000000 Binary files a/png/128/emoji_u1f9cf_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f9b3.png b/png/128/emoji_u1f9cf_1f9b3.png deleted file mode 100644 index 7c94a50ac..000000000 Binary files a/png/128/emoji_u1f9cf_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f9b3_200d_2640.png b/png/128/emoji_u1f9cf_1f9b3_200d_2640.png deleted file mode 100644 index 225e25944..000000000 Binary files a/png/128/emoji_u1f9cf_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_1f9b3_200d_2642.png b/png/128/emoji_u1f9cf_1f9b3_200d_2642.png deleted file mode 100644 index 5f5cbb374..000000000 Binary files a/png/128/emoji_u1f9cf_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_200d_2640.png b/png/128/emoji_u1f9cf_200d_2640.png deleted file mode 100644 index 5095f7abd..000000000 Binary files a/png/128/emoji_u1f9cf_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9cf_200d_2642.png b/png/128/emoji_u1f9cf_200d_2642.png deleted file mode 100644 index cb4d20a70..000000000 Binary files a/png/128/emoji_u1f9cf_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d0.png b/png/128/emoji_u1f9d0.png deleted file mode 100644 index 6374e66ef..000000000 Binary files a/png/128/emoji_u1f9d0.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1.png b/png/128/emoji_u1f9d1.png deleted file mode 100644 index 1b2c9f8ad..000000000 Binary files a/png/128/emoji_u1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fb.png b/png/128/emoji_u1f9d1_1f3fb.png deleted file mode 100644 index 891f51954..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fb_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_1f3fb_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index 4c265cfed..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fb_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fb_200d_1f91d_200d_1f9d1_1f3fb.png b/png/128/emoji_u1f9d1_1f3fb_200d_1f91d_200d_1f9d1_1f3fb.png deleted file mode 100644 index 4c265cfed..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fb_200d_1f91d_200d_1f9d1_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fc.png b/png/128/emoji_u1f9d1_1f3fc.png deleted file mode 100644 index 60e086bfa..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index e9a0b2067..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1_1f3fb.png b/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1_1f3fb.png deleted file mode 100644 index e4ee99b4f..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1_1f3fc.png b/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1_1f3fc.png deleted file mode 100644 index e9a0b2067..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fc_200d_1f91d_200d_1f9d1_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fd.png b/png/128/emoji_u1f9d1_1f3fd.png deleted file mode 100644 index 069418259..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index c33f11406..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fb.png b/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fb.png deleted file mode 100644 index f7c39106a..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fc.png b/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fc.png deleted file mode 100644 index 55c50a8c0..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fd.png b/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fd.png deleted file mode 100644 index c33f11406..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fd_200d_1f91d_200d_1f9d1_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fe.png b/png/128/emoji_u1f9d1_1f3fe.png deleted file mode 100644 index bb7d7c889..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index 3f6311fd9..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fb.png b/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fb.png deleted file mode 100644 index 20ecfbcc2..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fc.png b/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fc.png deleted file mode 100644 index c367ef2ad..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fd.png b/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fd.png deleted file mode 100644 index fc0d88ee1..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fe.png b/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fe.png deleted file mode 100644 index 3f6311fd9..000000000 Binary files a/png/128/emoji_u1f9d1_1f3fe_200d_1f91d_200d_1f9d1_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3ff.png b/png/128/emoji_u1f9d1_1f3ff.png deleted file mode 100644 index 8ad5c87c0..000000000 Binary files a/png/128/emoji_u1f9d1_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index ae35783ab..000000000 Binary files a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fb.png b/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fb.png deleted file mode 100644 index e129fecea..000000000 Binary files a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fc.png b/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fc.png deleted file mode 100644 index e0e03ad13..000000000 Binary files a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fd.png b/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fd.png deleted file mode 100644 index 93d2be2c8..000000000 Binary files a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fe.png b/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fe.png deleted file mode 100644 index c318d0574..000000000 Binary files a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3ff.png b/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3ff.png deleted file mode 100644 index ae35783ab..000000000 Binary files a/png/128/emoji_u1f9d1_1f3ff_200d_1f91d_200d_1f9d1_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f9b0.png b/png/128/emoji_u1f9d1_1f9b0.png deleted file mode 100644 index 95e21277e..000000000 Binary files a/png/128/emoji_u1f9d1_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f9b0_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_1f9b0_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index db34bde96..000000000 Binary files a/png/128/emoji_u1f9d1_1f9b0_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f9b0_200d_1f91d_200d_1f9d1_1f9b0.png b/png/128/emoji_u1f9d1_1f9b0_200d_1f91d_200d_1f9d1_1f9b0.png deleted file mode 100644 index db34bde96..000000000 Binary files a/png/128/emoji_u1f9d1_1f9b0_200d_1f91d_200d_1f9d1_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f9b3.png b/png/128/emoji_u1f9d1_1f9b3.png deleted file mode 100644 index 81afbf07e..000000000 Binary files a/png/128/emoji_u1f9d1_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f9b3_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_1f9b3_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index 15a8c8d16..000000000 Binary files a/png/128/emoji_u1f9d1_1f9b3_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_1f9b3_200d_1f91d_200d_1f9d1_1f9b3.png b/png/128/emoji_u1f9d1_1f9b3_200d_1f91d_200d_1f9d1_1f9b3.png deleted file mode 100644 index 15a8c8d16..000000000 Binary files a/png/128/emoji_u1f9d1_1f9b3_200d_1f91d_200d_1f9d1_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9d1_200d_1f91d_200d_1f9d1.png b/png/128/emoji_u1f9d1_200d_1f91d_200d_1f9d1.png deleted file mode 100644 index bfaa29b84..000000000 Binary files a/png/128/emoji_u1f9d1_200d_1f91d_200d_1f9d1.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2.png b/png/128/emoji_u1f9d2.png deleted file mode 100644 index d5e700ee8..000000000 Binary files a/png/128/emoji_u1f9d2.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2_1f3fb.png b/png/128/emoji_u1f9d2_1f3fb.png deleted file mode 100644 index afd8ddf3c..000000000 Binary files a/png/128/emoji_u1f9d2_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2_1f3fc.png b/png/128/emoji_u1f9d2_1f3fc.png deleted file mode 100644 index 6f112933a..000000000 Binary files a/png/128/emoji_u1f9d2_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2_1f3fd.png b/png/128/emoji_u1f9d2_1f3fd.png deleted file mode 100644 index 778e9d8d9..000000000 Binary files a/png/128/emoji_u1f9d2_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2_1f3fe.png b/png/128/emoji_u1f9d2_1f3fe.png deleted file mode 100644 index 2f1bd37be..000000000 Binary files a/png/128/emoji_u1f9d2_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2_1f3ff.png b/png/128/emoji_u1f9d2_1f3ff.png deleted file mode 100644 index e05b4f49b..000000000 Binary files a/png/128/emoji_u1f9d2_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2_1f9b0.png b/png/128/emoji_u1f9d2_1f9b0.png deleted file mode 100644 index 2f58dab7b..000000000 Binary files a/png/128/emoji_u1f9d2_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9d2_1f9b3.png b/png/128/emoji_u1f9d2_1f9b3.png deleted file mode 100644 index 3b648d1b9..000000000 Binary files a/png/128/emoji_u1f9d2_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9d3.png b/png/128/emoji_u1f9d3.png deleted file mode 100644 index 203584583..000000000 Binary files a/png/128/emoji_u1f9d3.png and /dev/null differ diff --git a/png/128/emoji_u1f9d3_1f3fb.png b/png/128/emoji_u1f9d3_1f3fb.png deleted file mode 100644 index 1852c4fd9..000000000 Binary files a/png/128/emoji_u1f9d3_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d3_1f3fc.png b/png/128/emoji_u1f9d3_1f3fc.png deleted file mode 100644 index 212aeca82..000000000 Binary files a/png/128/emoji_u1f9d3_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d3_1f3fd.png b/png/128/emoji_u1f9d3_1f3fd.png deleted file mode 100644 index 0590dde00..000000000 Binary files a/png/128/emoji_u1f9d3_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d3_1f3fe.png b/png/128/emoji_u1f9d3_1f3fe.png deleted file mode 100644 index 216500f6f..000000000 Binary files a/png/128/emoji_u1f9d3_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9d3_1f3ff.png b/png/128/emoji_u1f9d3_1f3ff.png deleted file mode 100644 index 08be07b9e..000000000 Binary files a/png/128/emoji_u1f9d3_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4.png b/png/128/emoji_u1f9d4.png deleted file mode 100644 index b946995b8..000000000 Binary files a/png/128/emoji_u1f9d4.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fb.png b/png/128/emoji_u1f9d4_1f3fb.png deleted file mode 100644 index 8a7ba1d41..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fb_2640.png b/png/128/emoji_u1f9d4_1f3fb_2640.png deleted file mode 100644 index e8e9d0b55..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fb_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fb_2642.png b/png/128/emoji_u1f9d4_1f3fb_2642.png deleted file mode 100644 index afec26ca4..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fb_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fc.png b/png/128/emoji_u1f9d4_1f3fc.png deleted file mode 100644 index 250041b62..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fc_2640.png b/png/128/emoji_u1f9d4_1f3fc_2640.png deleted file mode 100644 index 096e1f028..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fc_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fc_2642.png b/png/128/emoji_u1f9d4_1f3fc_2642.png deleted file mode 100644 index 16eda2d91..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fc_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fd.png b/png/128/emoji_u1f9d4_1f3fd.png deleted file mode 100644 index 43f3cf943..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fd_2640.png b/png/128/emoji_u1f9d4_1f3fd_2640.png deleted file mode 100644 index cdcb05878..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fd_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fd_2642.png b/png/128/emoji_u1f9d4_1f3fd_2642.png deleted file mode 100644 index 081e17caa..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fd_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fe.png b/png/128/emoji_u1f9d4_1f3fe.png deleted file mode 100644 index d93f708fe..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fe_2640.png b/png/128/emoji_u1f9d4_1f3fe_2640.png deleted file mode 100644 index e6dc6ab71..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fe_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3fe_2642.png b/png/128/emoji_u1f9d4_1f3fe_2642.png deleted file mode 100644 index 4340d6731..000000000 Binary files a/png/128/emoji_u1f9d4_1f3fe_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3ff.png b/png/128/emoji_u1f9d4_1f3ff.png deleted file mode 100644 index f7ba31a9b..000000000 Binary files a/png/128/emoji_u1f9d4_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3ff_2640.png b/png/128/emoji_u1f9d4_1f3ff_2640.png deleted file mode 100644 index 38a0d83b8..000000000 Binary files a/png/128/emoji_u1f9d4_1f3ff_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f3ff_2642.png b/png/128/emoji_u1f9d4_1f3ff_2642.png deleted file mode 100644 index 2d45b0f76..000000000 Binary files a/png/128/emoji_u1f9d4_1f3ff_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f9b0.png b/png/128/emoji_u1f9d4_1f9b0.png deleted file mode 100644 index 32ae718a1..000000000 Binary files a/png/128/emoji_u1f9d4_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f9b0_2640.png b/png/128/emoji_u1f9d4_1f9b0_2640.png deleted file mode 100644 index 49ff00625..000000000 Binary files a/png/128/emoji_u1f9d4_1f9b0_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f9b0_2642.png b/png/128/emoji_u1f9d4_1f9b0_2642.png deleted file mode 100644 index 32ae718a1..000000000 Binary files a/png/128/emoji_u1f9d4_1f9b0_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f9b3.png b/png/128/emoji_u1f9d4_1f9b3.png deleted file mode 100644 index 5b7ca734a..000000000 Binary files a/png/128/emoji_u1f9d4_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f9b3_2640.png b/png/128/emoji_u1f9d4_1f9b3_2640.png deleted file mode 100644 index 23348ff75..000000000 Binary files a/png/128/emoji_u1f9d4_1f9b3_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_1f9b3_2642.png b/png/128/emoji_u1f9d4_1f9b3_2642.png deleted file mode 100644 index 5b7ca734a..000000000 Binary files a/png/128/emoji_u1f9d4_1f9b3_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_2640.png b/png/128/emoji_u1f9d4_2640.png deleted file mode 100644 index 627e5cd72..000000000 Binary files a/png/128/emoji_u1f9d4_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d4_2642.png b/png/128/emoji_u1f9d4_2642.png deleted file mode 100644 index b946995b8..000000000 Binary files a/png/128/emoji_u1f9d4_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d5.png b/png/128/emoji_u1f9d5.png deleted file mode 100644 index 4b5113427..000000000 Binary files a/png/128/emoji_u1f9d5.png and /dev/null differ diff --git a/png/128/emoji_u1f9d5_1f3fb.png b/png/128/emoji_u1f9d5_1f3fb.png deleted file mode 100644 index d2f6c802f..000000000 Binary files a/png/128/emoji_u1f9d5_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9d5_1f3fc.png b/png/128/emoji_u1f9d5_1f3fc.png deleted file mode 100644 index 2a8c74063..000000000 Binary files a/png/128/emoji_u1f9d5_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9d5_1f3fd.png b/png/128/emoji_u1f9d5_1f3fd.png deleted file mode 100644 index e90dcd170..000000000 Binary files a/png/128/emoji_u1f9d5_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9d5_1f3fe.png b/png/128/emoji_u1f9d5_1f3fe.png deleted file mode 100644 index 93daabc86..000000000 Binary files a/png/128/emoji_u1f9d5_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9d5_1f3ff.png b/png/128/emoji_u1f9d5_1f3ff.png deleted file mode 100644 index c7a119348..000000000 Binary files a/png/128/emoji_u1f9d5_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fb_200d_2640.png b/png/128/emoji_u1f9d6_1f3fb_200d_2640.png deleted file mode 100644 index 7525e4722..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fb_200d_2642.png b/png/128/emoji_u1f9d6_1f3fb_200d_2642.png deleted file mode 100644 index 20808d827..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fc_200d_2640.png b/png/128/emoji_u1f9d6_1f3fc_200d_2640.png deleted file mode 100644 index 531aaa3c3..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fc_200d_2642.png b/png/128/emoji_u1f9d6_1f3fc_200d_2642.png deleted file mode 100644 index df10d9138..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fd_200d_2640.png b/png/128/emoji_u1f9d6_1f3fd_200d_2640.png deleted file mode 100644 index b587c57d9..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fd_200d_2642.png b/png/128/emoji_u1f9d6_1f3fd_200d_2642.png deleted file mode 100644 index 609afca6a..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fe_200d_2640.png b/png/128/emoji_u1f9d6_1f3fe_200d_2640.png deleted file mode 100644 index 86727ba91..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3fe_200d_2642.png b/png/128/emoji_u1f9d6_1f3fe_200d_2642.png deleted file mode 100644 index 0b2bb2ac3..000000000 Binary files a/png/128/emoji_u1f9d6_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3ff_200d_2640.png b/png/128/emoji_u1f9d6_1f3ff_200d_2640.png deleted file mode 100644 index 05614596e..000000000 Binary files a/png/128/emoji_u1f9d6_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f3ff_200d_2642.png b/png/128/emoji_u1f9d6_1f3ff_200d_2642.png deleted file mode 100644 index 9ba9cad45..000000000 Binary files a/png/128/emoji_u1f9d6_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f9b0_200d_2640.png b/png/128/emoji_u1f9d6_1f9b0_200d_2640.png deleted file mode 100644 index a3af595a0..000000000 Binary files a/png/128/emoji_u1f9d6_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f9b0_200d_2642.png b/png/128/emoji_u1f9d6_1f9b0_200d_2642.png deleted file mode 100644 index 6a7b308f3..000000000 Binary files a/png/128/emoji_u1f9d6_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f9b3_200d_2640.png b/png/128/emoji_u1f9d6_1f9b3_200d_2640.png deleted file mode 100644 index 592f431f1..000000000 Binary files a/png/128/emoji_u1f9d6_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_1f9b3_200d_2642.png b/png/128/emoji_u1f9d6_1f9b3_200d_2642.png deleted file mode 100644 index d390fe626..000000000 Binary files a/png/128/emoji_u1f9d6_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_200d_2640.png b/png/128/emoji_u1f9d6_200d_2640.png deleted file mode 100644 index 3643b9e1e..000000000 Binary files a/png/128/emoji_u1f9d6_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d6_200d_2642.png b/png/128/emoji_u1f9d6_200d_2642.png deleted file mode 100644 index f3dda762f..000000000 Binary files a/png/128/emoji_u1f9d6_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fb_200d_2640.png b/png/128/emoji_u1f9d7_1f3fb_200d_2640.png deleted file mode 100644 index 10addbd88..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fb_200d_2642.png b/png/128/emoji_u1f9d7_1f3fb_200d_2642.png deleted file mode 100644 index 71a38ede9..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fc_200d_2640.png b/png/128/emoji_u1f9d7_1f3fc_200d_2640.png deleted file mode 100644 index bd6560c0d..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fc_200d_2642.png b/png/128/emoji_u1f9d7_1f3fc_200d_2642.png deleted file mode 100644 index 118f52102..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fd_200d_2640.png b/png/128/emoji_u1f9d7_1f3fd_200d_2640.png deleted file mode 100644 index 7e0416a87..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fd_200d_2642.png b/png/128/emoji_u1f9d7_1f3fd_200d_2642.png deleted file mode 100644 index a54f83146..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fe_200d_2640.png b/png/128/emoji_u1f9d7_1f3fe_200d_2640.png deleted file mode 100644 index e62c85fd7..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3fe_200d_2642.png b/png/128/emoji_u1f9d7_1f3fe_200d_2642.png deleted file mode 100644 index f256ffe8b..000000000 Binary files a/png/128/emoji_u1f9d7_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3ff_200d_2640.png b/png/128/emoji_u1f9d7_1f3ff_200d_2640.png deleted file mode 100644 index f90ebaefb..000000000 Binary files a/png/128/emoji_u1f9d7_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_1f3ff_200d_2642.png b/png/128/emoji_u1f9d7_1f3ff_200d_2642.png deleted file mode 100644 index 9569acbf3..000000000 Binary files a/png/128/emoji_u1f9d7_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_200d_2640.png b/png/128/emoji_u1f9d7_200d_2640.png deleted file mode 100644 index 846247ad7..000000000 Binary files a/png/128/emoji_u1f9d7_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d7_200d_2642.png b/png/128/emoji_u1f9d7_200d_2642.png deleted file mode 100644 index 0a55feb98..000000000 Binary files a/png/128/emoji_u1f9d7_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fb_200d_2640.png b/png/128/emoji_u1f9d8_1f3fb_200d_2640.png deleted file mode 100644 index e944021d3..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fb_200d_2642.png b/png/128/emoji_u1f9d8_1f3fb_200d_2642.png deleted file mode 100644 index 4ec252ac0..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fc_200d_2640.png b/png/128/emoji_u1f9d8_1f3fc_200d_2640.png deleted file mode 100644 index 5c087cfb8..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fc_200d_2642.png b/png/128/emoji_u1f9d8_1f3fc_200d_2642.png deleted file mode 100644 index 4f4c3a11b..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fd_200d_2640.png b/png/128/emoji_u1f9d8_1f3fd_200d_2640.png deleted file mode 100644 index f7c819667..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fd_200d_2642.png b/png/128/emoji_u1f9d8_1f3fd_200d_2642.png deleted file mode 100644 index 905a8b9cf..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fe_200d_2640.png b/png/128/emoji_u1f9d8_1f3fe_200d_2640.png deleted file mode 100644 index a45fbae5c..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3fe_200d_2642.png b/png/128/emoji_u1f9d8_1f3fe_200d_2642.png deleted file mode 100644 index 9927c4c85..000000000 Binary files a/png/128/emoji_u1f9d8_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3ff_200d_2640.png b/png/128/emoji_u1f9d8_1f3ff_200d_2640.png deleted file mode 100644 index eef31439b..000000000 Binary files a/png/128/emoji_u1f9d8_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f3ff_200d_2642.png b/png/128/emoji_u1f9d8_1f3ff_200d_2642.png deleted file mode 100644 index c0f87c163..000000000 Binary files a/png/128/emoji_u1f9d8_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f9b0_200d_2640.png b/png/128/emoji_u1f9d8_1f9b0_200d_2640.png deleted file mode 100644 index a21418cb4..000000000 Binary files a/png/128/emoji_u1f9d8_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f9b0_200d_2642.png b/png/128/emoji_u1f9d8_1f9b0_200d_2642.png deleted file mode 100644 index 7402822a2..000000000 Binary files a/png/128/emoji_u1f9d8_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f9b3_200d_2640.png b/png/128/emoji_u1f9d8_1f9b3_200d_2640.png deleted file mode 100644 index 341aa9785..000000000 Binary files a/png/128/emoji_u1f9d8_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_1f9b3_200d_2642.png b/png/128/emoji_u1f9d8_1f9b3_200d_2642.png deleted file mode 100644 index 76015a520..000000000 Binary files a/png/128/emoji_u1f9d8_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_200d_2640.png b/png/128/emoji_u1f9d8_200d_2640.png deleted file mode 100644 index 6fc1c0e70..000000000 Binary files a/png/128/emoji_u1f9d8_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d8_200d_2642.png b/png/128/emoji_u1f9d8_200d_2642.png deleted file mode 100644 index aa4d21fd3..000000000 Binary files a/png/128/emoji_u1f9d8_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fb_200d_2640.png b/png/128/emoji_u1f9d9_1f3fb_200d_2640.png deleted file mode 100644 index d651a5d79..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fb_200d_2642.png b/png/128/emoji_u1f9d9_1f3fb_200d_2642.png deleted file mode 100644 index c6e2af3a2..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fc_200d_2640.png b/png/128/emoji_u1f9d9_1f3fc_200d_2640.png deleted file mode 100644 index 7a6f61f43..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fc_200d_2642.png b/png/128/emoji_u1f9d9_1f3fc_200d_2642.png deleted file mode 100644 index 8a1ac5e05..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fd_200d_2640.png b/png/128/emoji_u1f9d9_1f3fd_200d_2640.png deleted file mode 100644 index db5cf817c..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fd_200d_2642.png b/png/128/emoji_u1f9d9_1f3fd_200d_2642.png deleted file mode 100644 index 744b8d599..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fe_200d_2640.png b/png/128/emoji_u1f9d9_1f3fe_200d_2640.png deleted file mode 100644 index 06511a88c..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3fe_200d_2642.png b/png/128/emoji_u1f9d9_1f3fe_200d_2642.png deleted file mode 100644 index d7b18c6b3..000000000 Binary files a/png/128/emoji_u1f9d9_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3ff_200d_2640.png b/png/128/emoji_u1f9d9_1f3ff_200d_2640.png deleted file mode 100644 index a6381413e..000000000 Binary files a/png/128/emoji_u1f9d9_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_1f3ff_200d_2642.png b/png/128/emoji_u1f9d9_1f3ff_200d_2642.png deleted file mode 100644 index f12afb153..000000000 Binary files a/png/128/emoji_u1f9d9_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_200d_2640.png b/png/128/emoji_u1f9d9_200d_2640.png deleted file mode 100644 index 4c311fcb3..000000000 Binary files a/png/128/emoji_u1f9d9_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9d9_200d_2642.png b/png/128/emoji_u1f9d9_200d_2642.png deleted file mode 100644 index c3a9ab19d..000000000 Binary files a/png/128/emoji_u1f9d9_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fb_200d_2640.png b/png/128/emoji_u1f9da_1f3fb_200d_2640.png deleted file mode 100644 index ce009a32a..000000000 Binary files a/png/128/emoji_u1f9da_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fb_200d_2642.png b/png/128/emoji_u1f9da_1f3fb_200d_2642.png deleted file mode 100644 index d407c95c5..000000000 Binary files a/png/128/emoji_u1f9da_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fc_200d_2640.png b/png/128/emoji_u1f9da_1f3fc_200d_2640.png deleted file mode 100644 index 704fe74e0..000000000 Binary files a/png/128/emoji_u1f9da_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fc_200d_2642.png b/png/128/emoji_u1f9da_1f3fc_200d_2642.png deleted file mode 100644 index 4f7ef4df3..000000000 Binary files a/png/128/emoji_u1f9da_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fd_200d_2640.png b/png/128/emoji_u1f9da_1f3fd_200d_2640.png deleted file mode 100644 index 87e96629d..000000000 Binary files a/png/128/emoji_u1f9da_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fd_200d_2642.png b/png/128/emoji_u1f9da_1f3fd_200d_2642.png deleted file mode 100644 index 715b48165..000000000 Binary files a/png/128/emoji_u1f9da_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fe_200d_2640.png b/png/128/emoji_u1f9da_1f3fe_200d_2640.png deleted file mode 100644 index 43d0d8b1e..000000000 Binary files a/png/128/emoji_u1f9da_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3fe_200d_2642.png b/png/128/emoji_u1f9da_1f3fe_200d_2642.png deleted file mode 100644 index 9c83f4231..000000000 Binary files a/png/128/emoji_u1f9da_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3ff_200d_2640.png b/png/128/emoji_u1f9da_1f3ff_200d_2640.png deleted file mode 100644 index 787825758..000000000 Binary files a/png/128/emoji_u1f9da_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_1f3ff_200d_2642.png b/png/128/emoji_u1f9da_1f3ff_200d_2642.png deleted file mode 100644 index f0e4914f6..000000000 Binary files a/png/128/emoji_u1f9da_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_200d_2640.png b/png/128/emoji_u1f9da_200d_2640.png deleted file mode 100644 index 9870268d6..000000000 Binary files a/png/128/emoji_u1f9da_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9da_200d_2642.png b/png/128/emoji_u1f9da_200d_2642.png deleted file mode 100644 index b3df84c7f..000000000 Binary files a/png/128/emoji_u1f9da_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fb_200d_2640.png b/png/128/emoji_u1f9db_1f3fb_200d_2640.png deleted file mode 100644 index 51ee8e045..000000000 Binary files a/png/128/emoji_u1f9db_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fb_200d_2642.png b/png/128/emoji_u1f9db_1f3fb_200d_2642.png deleted file mode 100644 index b7a419fd6..000000000 Binary files a/png/128/emoji_u1f9db_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fc_200d_2640.png b/png/128/emoji_u1f9db_1f3fc_200d_2640.png deleted file mode 100644 index e5758e0a7..000000000 Binary files a/png/128/emoji_u1f9db_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fc_200d_2642.png b/png/128/emoji_u1f9db_1f3fc_200d_2642.png deleted file mode 100644 index f0474261e..000000000 Binary files a/png/128/emoji_u1f9db_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fd_200d_2640.png b/png/128/emoji_u1f9db_1f3fd_200d_2640.png deleted file mode 100644 index 0559d9e5f..000000000 Binary files a/png/128/emoji_u1f9db_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fd_200d_2642.png b/png/128/emoji_u1f9db_1f3fd_200d_2642.png deleted file mode 100644 index b0423695a..000000000 Binary files a/png/128/emoji_u1f9db_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fe_200d_2640.png b/png/128/emoji_u1f9db_1f3fe_200d_2640.png deleted file mode 100644 index 1f966728b..000000000 Binary files a/png/128/emoji_u1f9db_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3fe_200d_2642.png b/png/128/emoji_u1f9db_1f3fe_200d_2642.png deleted file mode 100644 index be182a1eb..000000000 Binary files a/png/128/emoji_u1f9db_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3ff_200d_2640.png b/png/128/emoji_u1f9db_1f3ff_200d_2640.png deleted file mode 100644 index 8f0847d70..000000000 Binary files a/png/128/emoji_u1f9db_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_1f3ff_200d_2642.png b/png/128/emoji_u1f9db_1f3ff_200d_2642.png deleted file mode 100644 index 8c1787547..000000000 Binary files a/png/128/emoji_u1f9db_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_200d_2640.png b/png/128/emoji_u1f9db_200d_2640.png deleted file mode 100644 index 333ecd408..000000000 Binary files a/png/128/emoji_u1f9db_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9db_200d_2642.png b/png/128/emoji_u1f9db_200d_2642.png deleted file mode 100644 index d1db4a0b6..000000000 Binary files a/png/128/emoji_u1f9db_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fb_200d_2640.png b/png/128/emoji_u1f9dc_1f3fb_200d_2640.png deleted file mode 100644 index 3e5625ac0..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fb_200d_2642.png b/png/128/emoji_u1f9dc_1f3fb_200d_2642.png deleted file mode 100644 index ecd1361b0..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fc_200d_2640.png b/png/128/emoji_u1f9dc_1f3fc_200d_2640.png deleted file mode 100644 index 1c5498edb..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fc_200d_2642.png b/png/128/emoji_u1f9dc_1f3fc_200d_2642.png deleted file mode 100644 index e9cf44a1d..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fd_200d_2640.png b/png/128/emoji_u1f9dc_1f3fd_200d_2640.png deleted file mode 100644 index 9bd5ce018..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fd_200d_2642.png b/png/128/emoji_u1f9dc_1f3fd_200d_2642.png deleted file mode 100644 index 29ee1947a..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fe_200d_2640.png b/png/128/emoji_u1f9dc_1f3fe_200d_2640.png deleted file mode 100644 index da3ac525f..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3fe_200d_2642.png b/png/128/emoji_u1f9dc_1f3fe_200d_2642.png deleted file mode 100644 index dabacfcdf..000000000 Binary files a/png/128/emoji_u1f9dc_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3ff_200d_2640.png b/png/128/emoji_u1f9dc_1f3ff_200d_2640.png deleted file mode 100644 index e45f03691..000000000 Binary files a/png/128/emoji_u1f9dc_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_1f3ff_200d_2642.png b/png/128/emoji_u1f9dc_1f3ff_200d_2642.png deleted file mode 100644 index 41d4c85c8..000000000 Binary files a/png/128/emoji_u1f9dc_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_200d_2640.png b/png/128/emoji_u1f9dc_200d_2640.png deleted file mode 100644 index eac9a546e..000000000 Binary files a/png/128/emoji_u1f9dc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dc_200d_2642.png b/png/128/emoji_u1f9dc_200d_2642.png deleted file mode 100644 index 803f66948..000000000 Binary files a/png/128/emoji_u1f9dc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fb_200d_2640.png b/png/128/emoji_u1f9dd_1f3fb_200d_2640.png deleted file mode 100644 index a6d44dc22..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fb_200d_2642.png b/png/128/emoji_u1f9dd_1f3fb_200d_2642.png deleted file mode 100644 index 1846c227e..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fc_200d_2640.png b/png/128/emoji_u1f9dd_1f3fc_200d_2640.png deleted file mode 100644 index 104401fd0..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fc_200d_2642.png b/png/128/emoji_u1f9dd_1f3fc_200d_2642.png deleted file mode 100644 index cdc5f91c4..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fd_200d_2640.png b/png/128/emoji_u1f9dd_1f3fd_200d_2640.png deleted file mode 100644 index 34ce2f88f..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fd_200d_2642.png b/png/128/emoji_u1f9dd_1f3fd_200d_2642.png deleted file mode 100644 index 7c10272ae..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fe_200d_2640.png b/png/128/emoji_u1f9dd_1f3fe_200d_2640.png deleted file mode 100644 index dc7cc30f0..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3fe_200d_2642.png b/png/128/emoji_u1f9dd_1f3fe_200d_2642.png deleted file mode 100644 index 554b7eac3..000000000 Binary files a/png/128/emoji_u1f9dd_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3ff_200d_2640.png b/png/128/emoji_u1f9dd_1f3ff_200d_2640.png deleted file mode 100644 index cbf2a515f..000000000 Binary files a/png/128/emoji_u1f9dd_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_1f3ff_200d_2642.png b/png/128/emoji_u1f9dd_1f3ff_200d_2642.png deleted file mode 100644 index d92a507e2..000000000 Binary files a/png/128/emoji_u1f9dd_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_200d_2640.png b/png/128/emoji_u1f9dd_200d_2640.png deleted file mode 100644 index 12232fb1a..000000000 Binary files a/png/128/emoji_u1f9dd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9dd_200d_2642.png b/png/128/emoji_u1f9dd_200d_2642.png deleted file mode 100644 index 191565b9b..000000000 Binary files a/png/128/emoji_u1f9dd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9de_200d_2640.png b/png/128/emoji_u1f9de_200d_2640.png deleted file mode 100644 index 0bf9663de..000000000 Binary files a/png/128/emoji_u1f9de_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9de_200d_2642.png b/png/128/emoji_u1f9de_200d_2642.png deleted file mode 100644 index bf988696b..000000000 Binary files a/png/128/emoji_u1f9de_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9df.png b/png/128/emoji_u1f9df.png deleted file mode 100644 index 47dc8f024..000000000 Binary files a/png/128/emoji_u1f9df.png and /dev/null differ diff --git a/png/128/emoji_u1f9df_200d_2640.png b/png/128/emoji_u1f9df_200d_2640.png deleted file mode 100644 index 1b5ce0c49..000000000 Binary files a/png/128/emoji_u1f9df_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u1f9df_200d_2642.png b/png/128/emoji_u1f9df_200d_2642.png deleted file mode 100644 index a1515e916..000000000 Binary files a/png/128/emoji_u1f9df_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u1f9e0.png b/png/128/emoji_u1f9e0.png deleted file mode 100644 index 3b9977f82..000000000 Binary files a/png/128/emoji_u1f9e0.png and /dev/null differ diff --git a/png/128/emoji_u1f9e1.png b/png/128/emoji_u1f9e1.png deleted file mode 100644 index 015731aee..000000000 Binary files a/png/128/emoji_u1f9e1.png and /dev/null differ diff --git a/png/128/emoji_u1f9e2.png b/png/128/emoji_u1f9e2.png deleted file mode 100644 index 9b4c8a433..000000000 Binary files a/png/128/emoji_u1f9e2.png and /dev/null differ diff --git a/png/128/emoji_u1f9e3.png b/png/128/emoji_u1f9e3.png deleted file mode 100644 index 608ce638e..000000000 Binary files a/png/128/emoji_u1f9e3.png and /dev/null differ diff --git a/png/128/emoji_u1f9e4.png b/png/128/emoji_u1f9e4.png deleted file mode 100644 index 2e8bd622e..000000000 Binary files a/png/128/emoji_u1f9e4.png and /dev/null differ diff --git a/png/128/emoji_u1f9e5.png b/png/128/emoji_u1f9e5.png deleted file mode 100644 index ae5823321..000000000 Binary files a/png/128/emoji_u1f9e5.png and /dev/null differ diff --git a/png/128/emoji_u1f9e6.png b/png/128/emoji_u1f9e6.png deleted file mode 100644 index ac0663b31..000000000 Binary files a/png/128/emoji_u1f9e6.png and /dev/null differ diff --git a/png/128/emoji_u1f9e7.png b/png/128/emoji_u1f9e7.png deleted file mode 100644 index 95c06d799..000000000 Binary files a/png/128/emoji_u1f9e7.png and /dev/null differ diff --git a/png/128/emoji_u1f9e8.png b/png/128/emoji_u1f9e8.png deleted file mode 100644 index e166f8805..000000000 Binary files a/png/128/emoji_u1f9e8.png and /dev/null differ diff --git a/png/128/emoji_u1f9e9.png b/png/128/emoji_u1f9e9.png deleted file mode 100644 index b41747576..000000000 Binary files a/png/128/emoji_u1f9e9.png and /dev/null differ diff --git a/png/128/emoji_u1f9ea.png b/png/128/emoji_u1f9ea.png deleted file mode 100644 index bf1301d7b..000000000 Binary files a/png/128/emoji_u1f9ea.png and /dev/null differ diff --git a/png/128/emoji_u1f9eb.png b/png/128/emoji_u1f9eb.png deleted file mode 100644 index 17ae70401..000000000 Binary files a/png/128/emoji_u1f9eb.png and /dev/null differ diff --git a/png/128/emoji_u1f9ec.png b/png/128/emoji_u1f9ec.png deleted file mode 100644 index 0d26861c9..000000000 Binary files a/png/128/emoji_u1f9ec.png and /dev/null differ diff --git a/png/128/emoji_u1f9ed.png b/png/128/emoji_u1f9ed.png deleted file mode 100644 index d11199d70..000000000 Binary files a/png/128/emoji_u1f9ed.png and /dev/null differ diff --git a/png/128/emoji_u1f9ee.png b/png/128/emoji_u1f9ee.png deleted file mode 100644 index 753992a34..000000000 Binary files a/png/128/emoji_u1f9ee.png and /dev/null differ diff --git a/png/128/emoji_u1f9ef.png b/png/128/emoji_u1f9ef.png deleted file mode 100644 index 7e16b4ffb..000000000 Binary files a/png/128/emoji_u1f9ef.png and /dev/null differ diff --git a/png/128/emoji_u1f9f0.png b/png/128/emoji_u1f9f0.png deleted file mode 100644 index 394395d4c..000000000 Binary files a/png/128/emoji_u1f9f0.png and /dev/null differ diff --git a/png/128/emoji_u1f9f1.png b/png/128/emoji_u1f9f1.png deleted file mode 100644 index 9046ef41e..000000000 Binary files a/png/128/emoji_u1f9f1.png and /dev/null differ diff --git a/png/128/emoji_u1f9f2.png b/png/128/emoji_u1f9f2.png deleted file mode 100644 index 963094cfd..000000000 Binary files a/png/128/emoji_u1f9f2.png and /dev/null differ diff --git a/png/128/emoji_u1f9f3.png b/png/128/emoji_u1f9f3.png deleted file mode 100644 index f35a86cd2..000000000 Binary files a/png/128/emoji_u1f9f3.png and /dev/null differ diff --git a/png/128/emoji_u1f9f4.png b/png/128/emoji_u1f9f4.png deleted file mode 100644 index f3f1c50e7..000000000 Binary files a/png/128/emoji_u1f9f4.png and /dev/null differ diff --git a/png/128/emoji_u1f9f5.png b/png/128/emoji_u1f9f5.png deleted file mode 100644 index b7b788bb0..000000000 Binary files a/png/128/emoji_u1f9f5.png and /dev/null differ diff --git a/png/128/emoji_u1f9f6.png b/png/128/emoji_u1f9f6.png deleted file mode 100644 index fd345aad0..000000000 Binary files a/png/128/emoji_u1f9f6.png and /dev/null differ diff --git a/png/128/emoji_u1f9f7.png b/png/128/emoji_u1f9f7.png deleted file mode 100644 index c08ede031..000000000 Binary files a/png/128/emoji_u1f9f7.png and /dev/null differ diff --git a/png/128/emoji_u1f9f8.png b/png/128/emoji_u1f9f8.png deleted file mode 100644 index e3520f62a..000000000 Binary files a/png/128/emoji_u1f9f8.png and /dev/null differ diff --git a/png/128/emoji_u1f9f9.png b/png/128/emoji_u1f9f9.png deleted file mode 100644 index 926c872a0..000000000 Binary files a/png/128/emoji_u1f9f9.png and /dev/null differ diff --git a/png/128/emoji_u1f9fa.png b/png/128/emoji_u1f9fa.png deleted file mode 100644 index 94ceaf60b..000000000 Binary files a/png/128/emoji_u1f9fa.png and /dev/null differ diff --git a/png/128/emoji_u1f9fb.png b/png/128/emoji_u1f9fb.png deleted file mode 100644 index f6246a4bd..000000000 Binary files a/png/128/emoji_u1f9fb.png and /dev/null differ diff --git a/png/128/emoji_u1f9fc.png b/png/128/emoji_u1f9fc.png deleted file mode 100644 index cc348b6e4..000000000 Binary files a/png/128/emoji_u1f9fc.png and /dev/null differ diff --git a/png/128/emoji_u1f9fd.png b/png/128/emoji_u1f9fd.png deleted file mode 100644 index 3632efdd4..000000000 Binary files a/png/128/emoji_u1f9fd.png and /dev/null differ diff --git a/png/128/emoji_u1f9fe.png b/png/128/emoji_u1f9fe.png deleted file mode 100644 index dd115058b..000000000 Binary files a/png/128/emoji_u1f9fe.png and /dev/null differ diff --git a/png/128/emoji_u1f9ff.png b/png/128/emoji_u1f9ff.png deleted file mode 100644 index b92619f6b..000000000 Binary files a/png/128/emoji_u1f9ff.png and /dev/null differ diff --git a/png/128/emoji_u1fa70.png b/png/128/emoji_u1fa70.png deleted file mode 100644 index 9198e21ba..000000000 Binary files a/png/128/emoji_u1fa70.png and /dev/null differ diff --git a/png/128/emoji_u1fa71.png b/png/128/emoji_u1fa71.png deleted file mode 100644 index 0e267ab58..000000000 Binary files a/png/128/emoji_u1fa71.png and /dev/null differ diff --git a/png/128/emoji_u1fa72.png b/png/128/emoji_u1fa72.png deleted file mode 100644 index edaa203a5..000000000 Binary files a/png/128/emoji_u1fa72.png and /dev/null differ diff --git a/png/128/emoji_u1fa73.png b/png/128/emoji_u1fa73.png deleted file mode 100644 index 119aa6ebc..000000000 Binary files a/png/128/emoji_u1fa73.png and /dev/null differ diff --git a/png/128/emoji_u1fa78.png b/png/128/emoji_u1fa78.png deleted file mode 100644 index 1272b2650..000000000 Binary files a/png/128/emoji_u1fa78.png and /dev/null differ diff --git a/png/128/emoji_u1fa79.png b/png/128/emoji_u1fa79.png deleted file mode 100644 index 57a7d3e75..000000000 Binary files a/png/128/emoji_u1fa79.png and /dev/null differ diff --git a/png/128/emoji_u1fa7a.png b/png/128/emoji_u1fa7a.png deleted file mode 100644 index aa80473c7..000000000 Binary files a/png/128/emoji_u1fa7a.png and /dev/null differ diff --git a/png/128/emoji_u1fa80.png b/png/128/emoji_u1fa80.png deleted file mode 100644 index 965688244..000000000 Binary files a/png/128/emoji_u1fa80.png and /dev/null differ diff --git a/png/128/emoji_u1fa81.png b/png/128/emoji_u1fa81.png deleted file mode 100644 index 30617bc1c..000000000 Binary files a/png/128/emoji_u1fa81.png and /dev/null differ diff --git a/png/128/emoji_u1fa82.png b/png/128/emoji_u1fa82.png deleted file mode 100644 index d45eaf25c..000000000 Binary files a/png/128/emoji_u1fa82.png and /dev/null differ diff --git a/png/128/emoji_u1fa90.png b/png/128/emoji_u1fa90.png deleted file mode 100644 index 295898fb3..000000000 Binary files a/png/128/emoji_u1fa90.png and /dev/null differ diff --git a/png/128/emoji_u1fa91.png b/png/128/emoji_u1fa91.png deleted file mode 100644 index 0281f377c..000000000 Binary files a/png/128/emoji_u1fa91.png and /dev/null differ diff --git a/png/128/emoji_u1fa92.png b/png/128/emoji_u1fa92.png deleted file mode 100644 index a99a97696..000000000 Binary files a/png/128/emoji_u1fa92.png and /dev/null differ diff --git a/png/128/emoji_u1fa93.png b/png/128/emoji_u1fa93.png deleted file mode 100644 index 14b42c254..000000000 Binary files a/png/128/emoji_u1fa93.png and /dev/null differ diff --git a/png/128/emoji_u1fa94.png b/png/128/emoji_u1fa94.png deleted file mode 100644 index 6c2f521e6..000000000 Binary files a/png/128/emoji_u1fa94.png and /dev/null differ diff --git a/png/128/emoji_u1fa95.png b/png/128/emoji_u1fa95.png deleted file mode 100644 index c9cd67925..000000000 Binary files a/png/128/emoji_u1fa95.png and /dev/null differ diff --git a/png/128/emoji_u203c.png b/png/128/emoji_u203c.png deleted file mode 100644 index 4ead8bd49..000000000 Binary files a/png/128/emoji_u203c.png and /dev/null differ diff --git a/png/128/emoji_u2049.png b/png/128/emoji_u2049.png deleted file mode 100644 index 0927be2b6..000000000 Binary files a/png/128/emoji_u2049.png and /dev/null differ diff --git a/png/128/emoji_u20e3.png b/png/128/emoji_u20e3.png deleted file mode 100644 index b56f58ba0..000000000 Binary files a/png/128/emoji_u20e3.png and /dev/null differ diff --git a/png/128/emoji_u2122.png b/png/128/emoji_u2122.png deleted file mode 100644 index e90e8cc09..000000000 Binary files a/png/128/emoji_u2122.png and /dev/null differ diff --git a/png/128/emoji_u2139.png b/png/128/emoji_u2139.png deleted file mode 100644 index 80c72a047..000000000 Binary files a/png/128/emoji_u2139.png and /dev/null differ diff --git a/png/128/emoji_u2194.png b/png/128/emoji_u2194.png deleted file mode 100644 index 2c37034bb..000000000 Binary files a/png/128/emoji_u2194.png and /dev/null differ diff --git a/png/128/emoji_u2195.png b/png/128/emoji_u2195.png deleted file mode 100644 index fe6c49035..000000000 Binary files a/png/128/emoji_u2195.png and /dev/null differ diff --git a/png/128/emoji_u2196.png b/png/128/emoji_u2196.png deleted file mode 100644 index 4b6a38200..000000000 Binary files a/png/128/emoji_u2196.png and /dev/null differ diff --git a/png/128/emoji_u2197.png b/png/128/emoji_u2197.png deleted file mode 100644 index f14c4e4af..000000000 Binary files a/png/128/emoji_u2197.png and /dev/null differ diff --git a/png/128/emoji_u2198.png b/png/128/emoji_u2198.png deleted file mode 100644 index 60e1bc0ce..000000000 Binary files a/png/128/emoji_u2198.png and /dev/null differ diff --git a/png/128/emoji_u2199.png b/png/128/emoji_u2199.png deleted file mode 100644 index 1afe52f78..000000000 Binary files a/png/128/emoji_u2199.png and /dev/null differ diff --git a/png/128/emoji_u21a9.png b/png/128/emoji_u21a9.png deleted file mode 100644 index 01e0dd9e7..000000000 Binary files a/png/128/emoji_u21a9.png and /dev/null differ diff --git a/png/128/emoji_u21aa.png b/png/128/emoji_u21aa.png deleted file mode 100644 index 21cef5dc2..000000000 Binary files a/png/128/emoji_u21aa.png and /dev/null differ diff --git a/png/128/emoji_u231a.png b/png/128/emoji_u231a.png deleted file mode 100644 index 4860bede6..000000000 Binary files a/png/128/emoji_u231a.png and /dev/null differ diff --git a/png/128/emoji_u231b.png b/png/128/emoji_u231b.png deleted file mode 100644 index dff7bcf00..000000000 Binary files a/png/128/emoji_u231b.png and /dev/null differ diff --git a/png/128/emoji_u2328.png b/png/128/emoji_u2328.png deleted file mode 100644 index f44975607..000000000 Binary files a/png/128/emoji_u2328.png and /dev/null differ diff --git a/png/128/emoji_u23cf.png b/png/128/emoji_u23cf.png deleted file mode 100644 index eb34a580a..000000000 Binary files a/png/128/emoji_u23cf.png and /dev/null differ diff --git a/png/128/emoji_u23e9.png b/png/128/emoji_u23e9.png deleted file mode 100644 index 509259e7c..000000000 Binary files a/png/128/emoji_u23e9.png and /dev/null differ diff --git a/png/128/emoji_u23ea.png b/png/128/emoji_u23ea.png deleted file mode 100644 index c134bc511..000000000 Binary files a/png/128/emoji_u23ea.png and /dev/null differ diff --git a/png/128/emoji_u23eb.png b/png/128/emoji_u23eb.png deleted file mode 100644 index 5e7ae9b24..000000000 Binary files a/png/128/emoji_u23eb.png and /dev/null differ diff --git a/png/128/emoji_u23ec.png b/png/128/emoji_u23ec.png deleted file mode 100644 index 1388c52a0..000000000 Binary files a/png/128/emoji_u23ec.png and /dev/null differ diff --git a/png/128/emoji_u23ed.png b/png/128/emoji_u23ed.png deleted file mode 100644 index 88dbab354..000000000 Binary files a/png/128/emoji_u23ed.png and /dev/null differ diff --git a/png/128/emoji_u23ee.png b/png/128/emoji_u23ee.png deleted file mode 100644 index a2235d3d3..000000000 Binary files a/png/128/emoji_u23ee.png and /dev/null differ diff --git a/png/128/emoji_u23ef.png b/png/128/emoji_u23ef.png deleted file mode 100644 index d91335118..000000000 Binary files a/png/128/emoji_u23ef.png and /dev/null differ diff --git a/png/128/emoji_u23f0.png b/png/128/emoji_u23f0.png deleted file mode 100644 index e09260ae9..000000000 Binary files a/png/128/emoji_u23f0.png and /dev/null differ diff --git a/png/128/emoji_u23f1.png b/png/128/emoji_u23f1.png deleted file mode 100644 index a8885bf67..000000000 Binary files a/png/128/emoji_u23f1.png and /dev/null differ diff --git a/png/128/emoji_u23f2.png b/png/128/emoji_u23f2.png deleted file mode 100644 index d43d4283b..000000000 Binary files a/png/128/emoji_u23f2.png and /dev/null differ diff --git a/png/128/emoji_u23f3.png b/png/128/emoji_u23f3.png deleted file mode 100644 index 28f7408f5..000000000 Binary files a/png/128/emoji_u23f3.png and /dev/null differ diff --git a/png/128/emoji_u23f8.png b/png/128/emoji_u23f8.png deleted file mode 100644 index 0198bbf86..000000000 Binary files a/png/128/emoji_u23f8.png and /dev/null differ diff --git a/png/128/emoji_u23f9.png b/png/128/emoji_u23f9.png deleted file mode 100644 index 29b10ac17..000000000 Binary files a/png/128/emoji_u23f9.png and /dev/null differ diff --git a/png/128/emoji_u23fa.png b/png/128/emoji_u23fa.png deleted file mode 100644 index 2d0011855..000000000 Binary files a/png/128/emoji_u23fa.png and /dev/null differ diff --git a/png/128/emoji_u24c2.png b/png/128/emoji_u24c2.png deleted file mode 100644 index 8f927b372..000000000 Binary files a/png/128/emoji_u24c2.png and /dev/null differ diff --git a/png/128/emoji_u25aa.png b/png/128/emoji_u25aa.png deleted file mode 100644 index 6d4719c8b..000000000 Binary files a/png/128/emoji_u25aa.png and /dev/null differ diff --git a/png/128/emoji_u25ab.png b/png/128/emoji_u25ab.png deleted file mode 100644 index 0854aa9f9..000000000 Binary files a/png/128/emoji_u25ab.png and /dev/null differ diff --git a/png/128/emoji_u25b6.png b/png/128/emoji_u25b6.png deleted file mode 100644 index 02bb5a7f9..000000000 Binary files a/png/128/emoji_u25b6.png and /dev/null differ diff --git a/png/128/emoji_u25c0.png b/png/128/emoji_u25c0.png deleted file mode 100644 index 84ed0928d..000000000 Binary files a/png/128/emoji_u25c0.png and /dev/null differ diff --git a/png/128/emoji_u25fb.png b/png/128/emoji_u25fb.png deleted file mode 100644 index d071b5815..000000000 Binary files a/png/128/emoji_u25fb.png and /dev/null differ diff --git a/png/128/emoji_u25fc.png b/png/128/emoji_u25fc.png deleted file mode 100644 index 7d40874c3..000000000 Binary files a/png/128/emoji_u25fc.png and /dev/null differ diff --git a/png/128/emoji_u25fd.png b/png/128/emoji_u25fd.png deleted file mode 100644 index a79909135..000000000 Binary files a/png/128/emoji_u25fd.png and /dev/null differ diff --git a/png/128/emoji_u25fe.png b/png/128/emoji_u25fe.png deleted file mode 100644 index bfa696f10..000000000 Binary files a/png/128/emoji_u25fe.png and /dev/null differ diff --git a/png/128/emoji_u2600.png b/png/128/emoji_u2600.png deleted file mode 100644 index ed627d059..000000000 Binary files a/png/128/emoji_u2600.png and /dev/null differ diff --git a/png/128/emoji_u2601.png b/png/128/emoji_u2601.png deleted file mode 100644 index a0989b5ab..000000000 Binary files a/png/128/emoji_u2601.png and /dev/null differ diff --git a/png/128/emoji_u2602.png b/png/128/emoji_u2602.png deleted file mode 100644 index 5b6b11df0..000000000 Binary files a/png/128/emoji_u2602.png and /dev/null differ diff --git a/png/128/emoji_u2603.png b/png/128/emoji_u2603.png deleted file mode 100644 index 81076cd43..000000000 Binary files a/png/128/emoji_u2603.png and /dev/null differ diff --git a/png/128/emoji_u2604.png b/png/128/emoji_u2604.png deleted file mode 100644 index 7c6ee3da6..000000000 Binary files a/png/128/emoji_u2604.png and /dev/null differ diff --git a/png/128/emoji_u260e.png b/png/128/emoji_u260e.png deleted file mode 100644 index ed09adb14..000000000 Binary files a/png/128/emoji_u260e.png and /dev/null differ diff --git a/png/128/emoji_u2611.png b/png/128/emoji_u2611.png deleted file mode 100644 index 7c2fde8d4..000000000 Binary files a/png/128/emoji_u2611.png and /dev/null differ diff --git a/png/128/emoji_u2614.png b/png/128/emoji_u2614.png deleted file mode 100644 index ee0bfef0b..000000000 Binary files a/png/128/emoji_u2614.png and /dev/null differ diff --git a/png/128/emoji_u2615.png b/png/128/emoji_u2615.png deleted file mode 100644 index b5f80b696..000000000 Binary files a/png/128/emoji_u2615.png and /dev/null differ diff --git a/png/128/emoji_u2618.png b/png/128/emoji_u2618.png deleted file mode 100644 index b50cadcfd..000000000 Binary files a/png/128/emoji_u2618.png and /dev/null differ diff --git a/png/128/emoji_u261d.png b/png/128/emoji_u261d.png deleted file mode 100644 index 22ea82bd8..000000000 Binary files a/png/128/emoji_u261d.png and /dev/null differ diff --git a/png/128/emoji_u261d_1f3fb.png b/png/128/emoji_u261d_1f3fb.png deleted file mode 100644 index 6f31de67b..000000000 Binary files a/png/128/emoji_u261d_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u261d_1f3fc.png b/png/128/emoji_u261d_1f3fc.png deleted file mode 100644 index 0c8b59609..000000000 Binary files a/png/128/emoji_u261d_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u261d_1f3fd.png b/png/128/emoji_u261d_1f3fd.png deleted file mode 100644 index a80f45c45..000000000 Binary files a/png/128/emoji_u261d_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u261d_1f3fe.png b/png/128/emoji_u261d_1f3fe.png deleted file mode 100644 index 32f97c8d7..000000000 Binary files a/png/128/emoji_u261d_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u261d_1f3ff.png b/png/128/emoji_u261d_1f3ff.png deleted file mode 100644 index f49d38404..000000000 Binary files a/png/128/emoji_u261d_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u2620.png b/png/128/emoji_u2620.png deleted file mode 100644 index 095bc0429..000000000 Binary files a/png/128/emoji_u2620.png and /dev/null differ diff --git a/png/128/emoji_u2622.png b/png/128/emoji_u2622.png deleted file mode 100644 index d7acbba1d..000000000 Binary files a/png/128/emoji_u2622.png and /dev/null differ diff --git a/png/128/emoji_u2623.png b/png/128/emoji_u2623.png deleted file mode 100644 index 2eec2030e..000000000 Binary files a/png/128/emoji_u2623.png and /dev/null differ diff --git a/png/128/emoji_u2626.png b/png/128/emoji_u2626.png deleted file mode 100644 index d1bbfb296..000000000 Binary files a/png/128/emoji_u2626.png and /dev/null differ diff --git a/png/128/emoji_u262a.png b/png/128/emoji_u262a.png deleted file mode 100644 index 6b10b6ddc..000000000 Binary files a/png/128/emoji_u262a.png and /dev/null differ diff --git a/png/128/emoji_u262e.png b/png/128/emoji_u262e.png deleted file mode 100644 index 2ffee80d1..000000000 Binary files a/png/128/emoji_u262e.png and /dev/null differ diff --git a/png/128/emoji_u262f.png b/png/128/emoji_u262f.png deleted file mode 100644 index 93a9c7fa8..000000000 Binary files a/png/128/emoji_u262f.png and /dev/null differ diff --git a/png/128/emoji_u2638.png b/png/128/emoji_u2638.png deleted file mode 100644 index 7728c1535..000000000 Binary files a/png/128/emoji_u2638.png and /dev/null differ diff --git a/png/128/emoji_u2639.png b/png/128/emoji_u2639.png deleted file mode 100644 index 84bed5f2c..000000000 Binary files a/png/128/emoji_u2639.png and /dev/null differ diff --git a/png/128/emoji_u263a.png b/png/128/emoji_u263a.png deleted file mode 100644 index 495aa5d0c..000000000 Binary files a/png/128/emoji_u263a.png and /dev/null differ diff --git a/png/128/emoji_u2640.png b/png/128/emoji_u2640.png deleted file mode 100644 index af7581b88..000000000 Binary files a/png/128/emoji_u2640.png and /dev/null differ diff --git a/png/128/emoji_u2642.png b/png/128/emoji_u2642.png deleted file mode 100644 index 422c5c1eb..000000000 Binary files a/png/128/emoji_u2642.png and /dev/null differ diff --git a/png/128/emoji_u2648.png b/png/128/emoji_u2648.png deleted file mode 100644 index ceb7afe29..000000000 Binary files a/png/128/emoji_u2648.png and /dev/null differ diff --git a/png/128/emoji_u2649.png b/png/128/emoji_u2649.png deleted file mode 100644 index 58bb1aed8..000000000 Binary files a/png/128/emoji_u2649.png and /dev/null differ diff --git a/png/128/emoji_u264a.png b/png/128/emoji_u264a.png deleted file mode 100644 index db22fc5a1..000000000 Binary files a/png/128/emoji_u264a.png and /dev/null differ diff --git a/png/128/emoji_u264b.png b/png/128/emoji_u264b.png deleted file mode 100644 index 0ec416b3d..000000000 Binary files a/png/128/emoji_u264b.png and /dev/null differ diff --git a/png/128/emoji_u264c.png b/png/128/emoji_u264c.png deleted file mode 100644 index b3157cac1..000000000 Binary files a/png/128/emoji_u264c.png and /dev/null differ diff --git a/png/128/emoji_u264d.png b/png/128/emoji_u264d.png deleted file mode 100644 index cd811ba3a..000000000 Binary files a/png/128/emoji_u264d.png and /dev/null differ diff --git a/png/128/emoji_u264e.png b/png/128/emoji_u264e.png deleted file mode 100644 index 9a2b0e4b3..000000000 Binary files a/png/128/emoji_u264e.png and /dev/null differ diff --git a/png/128/emoji_u264f.png b/png/128/emoji_u264f.png deleted file mode 100644 index 1ee288af4..000000000 Binary files a/png/128/emoji_u264f.png and /dev/null differ diff --git a/png/128/emoji_u2650.png b/png/128/emoji_u2650.png deleted file mode 100644 index b1ba9396f..000000000 Binary files a/png/128/emoji_u2650.png and /dev/null differ diff --git a/png/128/emoji_u2651.png b/png/128/emoji_u2651.png deleted file mode 100644 index 6b979959b..000000000 Binary files a/png/128/emoji_u2651.png and /dev/null differ diff --git a/png/128/emoji_u2652.png b/png/128/emoji_u2652.png deleted file mode 100644 index 771ec123b..000000000 Binary files a/png/128/emoji_u2652.png and /dev/null differ diff --git a/png/128/emoji_u2653.png b/png/128/emoji_u2653.png deleted file mode 100644 index e097900ed..000000000 Binary files a/png/128/emoji_u2653.png and /dev/null differ diff --git a/png/128/emoji_u265f_fe0f.png b/png/128/emoji_u265f_fe0f.png deleted file mode 100644 index 3d363b929..000000000 Binary files a/png/128/emoji_u265f_fe0f.png and /dev/null differ diff --git a/png/128/emoji_u2660.png b/png/128/emoji_u2660.png deleted file mode 100644 index 53464b9d4..000000000 Binary files a/png/128/emoji_u2660.png and /dev/null differ diff --git a/png/128/emoji_u2663.png b/png/128/emoji_u2663.png deleted file mode 100644 index 1859f82fa..000000000 Binary files a/png/128/emoji_u2663.png and /dev/null differ diff --git a/png/128/emoji_u2665.png b/png/128/emoji_u2665.png deleted file mode 100644 index f32134a04..000000000 Binary files a/png/128/emoji_u2665.png and /dev/null differ diff --git a/png/128/emoji_u2666.png b/png/128/emoji_u2666.png deleted file mode 100644 index 1f6eed5ea..000000000 Binary files a/png/128/emoji_u2666.png and /dev/null differ diff --git a/png/128/emoji_u2668.png b/png/128/emoji_u2668.png deleted file mode 100644 index 3309b2250..000000000 Binary files a/png/128/emoji_u2668.png and /dev/null differ diff --git a/png/128/emoji_u267b.png b/png/128/emoji_u267b.png deleted file mode 100644 index c973c3fa9..000000000 Binary files a/png/128/emoji_u267b.png and /dev/null differ diff --git a/png/128/emoji_u267e_fe0f.png b/png/128/emoji_u267e_fe0f.png deleted file mode 100644 index f6bc22782..000000000 Binary files a/png/128/emoji_u267e_fe0f.png and /dev/null differ diff --git a/png/128/emoji_u267f.png b/png/128/emoji_u267f.png deleted file mode 100644 index 025a83eef..000000000 Binary files a/png/128/emoji_u267f.png and /dev/null differ diff --git a/png/128/emoji_u2692.png b/png/128/emoji_u2692.png deleted file mode 100644 index 636cdbef6..000000000 Binary files a/png/128/emoji_u2692.png and /dev/null differ diff --git a/png/128/emoji_u2693.png b/png/128/emoji_u2693.png deleted file mode 100644 index 59faec57d..000000000 Binary files a/png/128/emoji_u2693.png and /dev/null differ diff --git a/png/128/emoji_u2694.png b/png/128/emoji_u2694.png deleted file mode 100644 index cfa9e749c..000000000 Binary files a/png/128/emoji_u2694.png and /dev/null differ diff --git a/png/128/emoji_u2695.png b/png/128/emoji_u2695.png deleted file mode 100644 index 045f9de87..000000000 Binary files a/png/128/emoji_u2695.png and /dev/null differ diff --git a/png/128/emoji_u2696.png b/png/128/emoji_u2696.png deleted file mode 100644 index 78d0abb66..000000000 Binary files a/png/128/emoji_u2696.png and /dev/null differ diff --git a/png/128/emoji_u2697.png b/png/128/emoji_u2697.png deleted file mode 100644 index 2ac094abc..000000000 Binary files a/png/128/emoji_u2697.png and /dev/null differ diff --git a/png/128/emoji_u2699.png b/png/128/emoji_u2699.png deleted file mode 100644 index 3a2415311..000000000 Binary files a/png/128/emoji_u2699.png and /dev/null differ diff --git a/png/128/emoji_u269b.png b/png/128/emoji_u269b.png deleted file mode 100644 index 788b4e08d..000000000 Binary files a/png/128/emoji_u269b.png and /dev/null differ diff --git a/png/128/emoji_u269c.png b/png/128/emoji_u269c.png deleted file mode 100644 index c4ee99a50..000000000 Binary files a/png/128/emoji_u269c.png and /dev/null differ diff --git a/png/128/emoji_u26a0.png b/png/128/emoji_u26a0.png deleted file mode 100644 index ddacc6d62..000000000 Binary files a/png/128/emoji_u26a0.png and /dev/null differ diff --git a/png/128/emoji_u26a1.png b/png/128/emoji_u26a1.png deleted file mode 100644 index 27a4f4d30..000000000 Binary files a/png/128/emoji_u26a1.png and /dev/null differ diff --git a/png/128/emoji_u26aa.png b/png/128/emoji_u26aa.png deleted file mode 100644 index 5bb1f6f17..000000000 Binary files a/png/128/emoji_u26aa.png and /dev/null differ diff --git a/png/128/emoji_u26ab.png b/png/128/emoji_u26ab.png deleted file mode 100644 index 0a6ffeee5..000000000 Binary files a/png/128/emoji_u26ab.png and /dev/null differ diff --git a/png/128/emoji_u26b0.png b/png/128/emoji_u26b0.png deleted file mode 100644 index feb38f581..000000000 Binary files a/png/128/emoji_u26b0.png and /dev/null differ diff --git a/png/128/emoji_u26b1.png b/png/128/emoji_u26b1.png deleted file mode 100644 index 1a1afee19..000000000 Binary files a/png/128/emoji_u26b1.png and /dev/null differ diff --git a/png/128/emoji_u26bd.png b/png/128/emoji_u26bd.png deleted file mode 100644 index 609974c18..000000000 Binary files a/png/128/emoji_u26bd.png and /dev/null differ diff --git a/png/128/emoji_u26be.png b/png/128/emoji_u26be.png deleted file mode 100644 index 2b8501212..000000000 Binary files a/png/128/emoji_u26be.png and /dev/null differ diff --git a/png/128/emoji_u26c4.png b/png/128/emoji_u26c4.png deleted file mode 100644 index c974a1da3..000000000 Binary files a/png/128/emoji_u26c4.png and /dev/null differ diff --git a/png/128/emoji_u26c5.png b/png/128/emoji_u26c5.png deleted file mode 100644 index f03de8218..000000000 Binary files a/png/128/emoji_u26c5.png and /dev/null differ diff --git a/png/128/emoji_u26c8.png b/png/128/emoji_u26c8.png deleted file mode 100644 index 620bffe38..000000000 Binary files a/png/128/emoji_u26c8.png and /dev/null differ diff --git a/png/128/emoji_u26ce.png b/png/128/emoji_u26ce.png deleted file mode 100644 index 9835a2575..000000000 Binary files a/png/128/emoji_u26ce.png and /dev/null differ diff --git a/png/128/emoji_u26cf.png b/png/128/emoji_u26cf.png deleted file mode 100644 index 1929a442d..000000000 Binary files a/png/128/emoji_u26cf.png and /dev/null differ diff --git a/png/128/emoji_u26d1.png b/png/128/emoji_u26d1.png deleted file mode 100644 index 4d0b4b950..000000000 Binary files a/png/128/emoji_u26d1.png and /dev/null differ diff --git a/png/128/emoji_u26d3.png b/png/128/emoji_u26d3.png deleted file mode 100644 index 73bf7372e..000000000 Binary files a/png/128/emoji_u26d3.png and /dev/null differ diff --git a/png/128/emoji_u26d4.png b/png/128/emoji_u26d4.png deleted file mode 100644 index db1bb6500..000000000 Binary files a/png/128/emoji_u26d4.png and /dev/null differ diff --git a/png/128/emoji_u26e9.png b/png/128/emoji_u26e9.png deleted file mode 100644 index 648c576da..000000000 Binary files a/png/128/emoji_u26e9.png and /dev/null differ diff --git a/png/128/emoji_u26ea.png b/png/128/emoji_u26ea.png deleted file mode 100644 index baaea2543..000000000 Binary files a/png/128/emoji_u26ea.png and /dev/null differ diff --git a/png/128/emoji_u26f0.png b/png/128/emoji_u26f0.png deleted file mode 100644 index ae2f5976e..000000000 Binary files a/png/128/emoji_u26f0.png and /dev/null differ diff --git a/png/128/emoji_u26f1.png b/png/128/emoji_u26f1.png deleted file mode 100644 index 392cc8e9d..000000000 Binary files a/png/128/emoji_u26f1.png and /dev/null differ diff --git a/png/128/emoji_u26f2.png b/png/128/emoji_u26f2.png deleted file mode 100644 index 0b0de1980..000000000 Binary files a/png/128/emoji_u26f2.png and /dev/null differ diff --git a/png/128/emoji_u26f3.png b/png/128/emoji_u26f3.png deleted file mode 100644 index a6354ec3c..000000000 Binary files a/png/128/emoji_u26f3.png and /dev/null differ diff --git a/png/128/emoji_u26f4.png b/png/128/emoji_u26f4.png deleted file mode 100644 index 60e652db1..000000000 Binary files a/png/128/emoji_u26f4.png and /dev/null differ diff --git a/png/128/emoji_u26f5.png b/png/128/emoji_u26f5.png deleted file mode 100644 index 8d74446d0..000000000 Binary files a/png/128/emoji_u26f5.png and /dev/null differ diff --git a/png/128/emoji_u26f7.png b/png/128/emoji_u26f7.png deleted file mode 100644 index 00855d82a..000000000 Binary files a/png/128/emoji_u26f7.png and /dev/null differ diff --git a/png/128/emoji_u26f8.png b/png/128/emoji_u26f8.png deleted file mode 100644 index 914aa8693..000000000 Binary files a/png/128/emoji_u26f8.png and /dev/null differ diff --git a/png/128/emoji_u26f9.png b/png/128/emoji_u26f9.png deleted file mode 100644 index b2d5bcf0d..000000000 Binary files a/png/128/emoji_u26f9.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fb.png b/png/128/emoji_u26f9_1f3fb.png deleted file mode 100644 index e521cd2bf..000000000 Binary files a/png/128/emoji_u26f9_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fb_200d_2640.png b/png/128/emoji_u26f9_1f3fb_200d_2640.png deleted file mode 100644 index 4b67c78e5..000000000 Binary files a/png/128/emoji_u26f9_1f3fb_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fb_200d_2642.png b/png/128/emoji_u26f9_1f3fb_200d_2642.png deleted file mode 100644 index e521cd2bf..000000000 Binary files a/png/128/emoji_u26f9_1f3fb_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fc.png b/png/128/emoji_u26f9_1f3fc.png deleted file mode 100644 index a4a7dc32f..000000000 Binary files a/png/128/emoji_u26f9_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fc_200d_2640.png b/png/128/emoji_u26f9_1f3fc_200d_2640.png deleted file mode 100644 index d00648c1d..000000000 Binary files a/png/128/emoji_u26f9_1f3fc_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fc_200d_2642.png b/png/128/emoji_u26f9_1f3fc_200d_2642.png deleted file mode 100644 index a4a7dc32f..000000000 Binary files a/png/128/emoji_u26f9_1f3fc_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fd.png b/png/128/emoji_u26f9_1f3fd.png deleted file mode 100644 index 98f10dfde..000000000 Binary files a/png/128/emoji_u26f9_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fd_200d_2640.png b/png/128/emoji_u26f9_1f3fd_200d_2640.png deleted file mode 100644 index 889d1ab4c..000000000 Binary files a/png/128/emoji_u26f9_1f3fd_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fd_200d_2642.png b/png/128/emoji_u26f9_1f3fd_200d_2642.png deleted file mode 100644 index 98f10dfde..000000000 Binary files a/png/128/emoji_u26f9_1f3fd_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fe.png b/png/128/emoji_u26f9_1f3fe.png deleted file mode 100644 index b826a8f4a..000000000 Binary files a/png/128/emoji_u26f9_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fe_200d_2640.png b/png/128/emoji_u26f9_1f3fe_200d_2640.png deleted file mode 100644 index 28b7cb8df..000000000 Binary files a/png/128/emoji_u26f9_1f3fe_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3fe_200d_2642.png b/png/128/emoji_u26f9_1f3fe_200d_2642.png deleted file mode 100644 index b826a8f4a..000000000 Binary files a/png/128/emoji_u26f9_1f3fe_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3ff.png b/png/128/emoji_u26f9_1f3ff.png deleted file mode 100644 index f31ba60ee..000000000 Binary files a/png/128/emoji_u26f9_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3ff_200d_2640.png b/png/128/emoji_u26f9_1f3ff_200d_2640.png deleted file mode 100644 index 163dc0ada..000000000 Binary files a/png/128/emoji_u26f9_1f3ff_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f3ff_200d_2642.png b/png/128/emoji_u26f9_1f3ff_200d_2642.png deleted file mode 100644 index f31ba60ee..000000000 Binary files a/png/128/emoji_u26f9_1f3ff_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f9b0.png b/png/128/emoji_u26f9_1f9b0.png deleted file mode 100644 index f99d9f9f6..000000000 Binary files a/png/128/emoji_u26f9_1f9b0.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f9b0_200d_2640.png b/png/128/emoji_u26f9_1f9b0_200d_2640.png deleted file mode 100644 index ac066806b..000000000 Binary files a/png/128/emoji_u26f9_1f9b0_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f9b0_200d_2642.png b/png/128/emoji_u26f9_1f9b0_200d_2642.png deleted file mode 100644 index f99d9f9f6..000000000 Binary files a/png/128/emoji_u26f9_1f9b0_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f9b3.png b/png/128/emoji_u26f9_1f9b3.png deleted file mode 100644 index 56e6e5e94..000000000 Binary files a/png/128/emoji_u26f9_1f9b3.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f9b3_200d_2640.png b/png/128/emoji_u26f9_1f9b3_200d_2640.png deleted file mode 100644 index 5fec1b19a..000000000 Binary files a/png/128/emoji_u26f9_1f9b3_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_1f9b3_200d_2642.png b/png/128/emoji_u26f9_1f9b3_200d_2642.png deleted file mode 100644 index 56e6e5e94..000000000 Binary files a/png/128/emoji_u26f9_1f9b3_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26f9_200d_2640.png b/png/128/emoji_u26f9_200d_2640.png deleted file mode 100644 index 127b7400d..000000000 Binary files a/png/128/emoji_u26f9_200d_2640.png and /dev/null differ diff --git a/png/128/emoji_u26f9_200d_2642.png b/png/128/emoji_u26f9_200d_2642.png deleted file mode 100644 index b2d5bcf0d..000000000 Binary files a/png/128/emoji_u26f9_200d_2642.png and /dev/null differ diff --git a/png/128/emoji_u26fa.png b/png/128/emoji_u26fa.png deleted file mode 100644 index a85b0ba23..000000000 Binary files a/png/128/emoji_u26fa.png and /dev/null differ diff --git a/png/128/emoji_u26fd.png b/png/128/emoji_u26fd.png deleted file mode 100644 index a23ad46fc..000000000 Binary files a/png/128/emoji_u26fd.png and /dev/null differ diff --git a/png/128/emoji_u2702.png b/png/128/emoji_u2702.png deleted file mode 100644 index 3679f6bbe..000000000 Binary files a/png/128/emoji_u2702.png and /dev/null differ diff --git a/png/128/emoji_u2705.png b/png/128/emoji_u2705.png deleted file mode 100644 index 7e5b2d1b2..000000000 Binary files a/png/128/emoji_u2705.png and /dev/null differ diff --git a/png/128/emoji_u2708.png b/png/128/emoji_u2708.png deleted file mode 100644 index 7744d8803..000000000 Binary files a/png/128/emoji_u2708.png and /dev/null differ diff --git a/png/128/emoji_u2709.png b/png/128/emoji_u2709.png deleted file mode 100644 index 3379bfa6f..000000000 Binary files a/png/128/emoji_u2709.png and /dev/null differ diff --git a/png/128/emoji_u270a.png b/png/128/emoji_u270a.png deleted file mode 100644 index 59dea6e8c..000000000 Binary files a/png/128/emoji_u270a.png and /dev/null differ diff --git a/png/128/emoji_u270a_1f3fb.png b/png/128/emoji_u270a_1f3fb.png deleted file mode 100644 index 50aaddd8b..000000000 Binary files a/png/128/emoji_u270a_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u270a_1f3fc.png b/png/128/emoji_u270a_1f3fc.png deleted file mode 100644 index bba8f9d96..000000000 Binary files a/png/128/emoji_u270a_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u270a_1f3fd.png b/png/128/emoji_u270a_1f3fd.png deleted file mode 100644 index 993dd5071..000000000 Binary files a/png/128/emoji_u270a_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u270a_1f3fe.png b/png/128/emoji_u270a_1f3fe.png deleted file mode 100644 index 651eb2504..000000000 Binary files a/png/128/emoji_u270a_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u270a_1f3ff.png b/png/128/emoji_u270a_1f3ff.png deleted file mode 100644 index f469c3ab6..000000000 Binary files a/png/128/emoji_u270a_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u270b.png b/png/128/emoji_u270b.png deleted file mode 100644 index 0e1a60fe4..000000000 Binary files a/png/128/emoji_u270b.png and /dev/null differ diff --git a/png/128/emoji_u270b_1f3fb.png b/png/128/emoji_u270b_1f3fb.png deleted file mode 100644 index 00b81ff23..000000000 Binary files a/png/128/emoji_u270b_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u270b_1f3fc.png b/png/128/emoji_u270b_1f3fc.png deleted file mode 100644 index c283d4fbc..000000000 Binary files a/png/128/emoji_u270b_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u270b_1f3fd.png b/png/128/emoji_u270b_1f3fd.png deleted file mode 100644 index e5bcc9afe..000000000 Binary files a/png/128/emoji_u270b_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u270b_1f3fe.png b/png/128/emoji_u270b_1f3fe.png deleted file mode 100644 index f125ab823..000000000 Binary files a/png/128/emoji_u270b_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u270b_1f3ff.png b/png/128/emoji_u270b_1f3ff.png deleted file mode 100644 index 2afbb5fd8..000000000 Binary files a/png/128/emoji_u270b_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u270c.png b/png/128/emoji_u270c.png deleted file mode 100644 index 91f662a69..000000000 Binary files a/png/128/emoji_u270c.png and /dev/null differ diff --git a/png/128/emoji_u270c_1f3fb.png b/png/128/emoji_u270c_1f3fb.png deleted file mode 100644 index 2ba9a701b..000000000 Binary files a/png/128/emoji_u270c_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u270c_1f3fc.png b/png/128/emoji_u270c_1f3fc.png deleted file mode 100644 index a1a8c1841..000000000 Binary files a/png/128/emoji_u270c_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u270c_1f3fd.png b/png/128/emoji_u270c_1f3fd.png deleted file mode 100644 index e71cc4feb..000000000 Binary files a/png/128/emoji_u270c_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u270c_1f3fe.png b/png/128/emoji_u270c_1f3fe.png deleted file mode 100644 index 57a6ef966..000000000 Binary files a/png/128/emoji_u270c_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u270c_1f3ff.png b/png/128/emoji_u270c_1f3ff.png deleted file mode 100644 index 18a60120c..000000000 Binary files a/png/128/emoji_u270c_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u270d.png b/png/128/emoji_u270d.png deleted file mode 100644 index 5ff1494e1..000000000 Binary files a/png/128/emoji_u270d.png and /dev/null differ diff --git a/png/128/emoji_u270d_1f3fb.png b/png/128/emoji_u270d_1f3fb.png deleted file mode 100644 index 94587524a..000000000 Binary files a/png/128/emoji_u270d_1f3fb.png and /dev/null differ diff --git a/png/128/emoji_u270d_1f3fc.png b/png/128/emoji_u270d_1f3fc.png deleted file mode 100644 index 8cb5181cc..000000000 Binary files a/png/128/emoji_u270d_1f3fc.png and /dev/null differ diff --git a/png/128/emoji_u270d_1f3fd.png b/png/128/emoji_u270d_1f3fd.png deleted file mode 100644 index e0e54e2dd..000000000 Binary files a/png/128/emoji_u270d_1f3fd.png and /dev/null differ diff --git a/png/128/emoji_u270d_1f3fe.png b/png/128/emoji_u270d_1f3fe.png deleted file mode 100644 index 8575fa619..000000000 Binary files a/png/128/emoji_u270d_1f3fe.png and /dev/null differ diff --git a/png/128/emoji_u270d_1f3ff.png b/png/128/emoji_u270d_1f3ff.png deleted file mode 100644 index 69482a8d3..000000000 Binary files a/png/128/emoji_u270d_1f3ff.png and /dev/null differ diff --git a/png/128/emoji_u270f.png b/png/128/emoji_u270f.png deleted file mode 100644 index a7cd12e28..000000000 Binary files a/png/128/emoji_u270f.png and /dev/null differ diff --git a/png/128/emoji_u2712.png b/png/128/emoji_u2712.png deleted file mode 100644 index 3e0f9d5c1..000000000 Binary files a/png/128/emoji_u2712.png and /dev/null differ diff --git a/png/128/emoji_u2714.png b/png/128/emoji_u2714.png deleted file mode 100644 index 546e31641..000000000 Binary files a/png/128/emoji_u2714.png and /dev/null differ diff --git a/png/128/emoji_u2716.png b/png/128/emoji_u2716.png deleted file mode 100644 index dc0b7ac29..000000000 Binary files a/png/128/emoji_u2716.png and /dev/null differ diff --git a/png/128/emoji_u271d.png b/png/128/emoji_u271d.png deleted file mode 100644 index 6430ab83b..000000000 Binary files a/png/128/emoji_u271d.png and /dev/null differ diff --git a/png/128/emoji_u2721.png b/png/128/emoji_u2721.png deleted file mode 100644 index d01bd7072..000000000 Binary files a/png/128/emoji_u2721.png and /dev/null differ diff --git a/png/128/emoji_u2728.png b/png/128/emoji_u2728.png deleted file mode 100644 index 7506b67eb..000000000 Binary files a/png/128/emoji_u2728.png and /dev/null differ diff --git a/png/128/emoji_u2733.png b/png/128/emoji_u2733.png deleted file mode 100644 index 93c77a39e..000000000 Binary files a/png/128/emoji_u2733.png and /dev/null differ diff --git a/png/128/emoji_u2734.png b/png/128/emoji_u2734.png deleted file mode 100644 index a4a89e696..000000000 Binary files a/png/128/emoji_u2734.png and /dev/null differ diff --git a/png/128/emoji_u2744.png b/png/128/emoji_u2744.png deleted file mode 100644 index 509756535..000000000 Binary files a/png/128/emoji_u2744.png and /dev/null differ diff --git a/png/128/emoji_u2747.png b/png/128/emoji_u2747.png deleted file mode 100644 index a46e1e30c..000000000 Binary files a/png/128/emoji_u2747.png and /dev/null differ diff --git a/png/128/emoji_u274c.png b/png/128/emoji_u274c.png deleted file mode 100644 index 3205e5812..000000000 Binary files a/png/128/emoji_u274c.png and /dev/null differ diff --git a/png/128/emoji_u274e.png b/png/128/emoji_u274e.png deleted file mode 100644 index ea5618c9d..000000000 Binary files a/png/128/emoji_u274e.png and /dev/null differ diff --git a/png/128/emoji_u2753.png b/png/128/emoji_u2753.png deleted file mode 100644 index f1159677b..000000000 Binary files a/png/128/emoji_u2753.png and /dev/null differ diff --git a/png/128/emoji_u2754.png b/png/128/emoji_u2754.png deleted file mode 100644 index d767f1a5b..000000000 Binary files a/png/128/emoji_u2754.png and /dev/null differ diff --git a/png/128/emoji_u2755.png b/png/128/emoji_u2755.png deleted file mode 100644 index 2a0fda918..000000000 Binary files a/png/128/emoji_u2755.png and /dev/null differ diff --git a/png/128/emoji_u2757.png b/png/128/emoji_u2757.png deleted file mode 100644 index 786b08b41..000000000 Binary files a/png/128/emoji_u2757.png and /dev/null differ diff --git a/png/128/emoji_u2763.png b/png/128/emoji_u2763.png deleted file mode 100644 index 2b4452859..000000000 Binary files a/png/128/emoji_u2763.png and /dev/null differ diff --git a/png/128/emoji_u2764.png b/png/128/emoji_u2764.png deleted file mode 100644 index 1db177f5c..000000000 Binary files a/png/128/emoji_u2764.png and /dev/null differ diff --git a/png/128/emoji_u2795.png b/png/128/emoji_u2795.png deleted file mode 100644 index d00f0300f..000000000 Binary files a/png/128/emoji_u2795.png and /dev/null differ diff --git a/png/128/emoji_u2796.png b/png/128/emoji_u2796.png deleted file mode 100644 index 5ba233560..000000000 Binary files a/png/128/emoji_u2796.png and /dev/null differ diff --git a/png/128/emoji_u2797.png b/png/128/emoji_u2797.png deleted file mode 100644 index e53454447..000000000 Binary files a/png/128/emoji_u2797.png and /dev/null differ diff --git a/png/128/emoji_u27a1.png b/png/128/emoji_u27a1.png deleted file mode 100644 index c452e4344..000000000 Binary files a/png/128/emoji_u27a1.png and /dev/null differ diff --git a/png/128/emoji_u27b0.png b/png/128/emoji_u27b0.png deleted file mode 100644 index c56d958ed..000000000 Binary files a/png/128/emoji_u27b0.png and /dev/null differ diff --git a/png/128/emoji_u27bf.png b/png/128/emoji_u27bf.png deleted file mode 100644 index 8fe4da3ea..000000000 Binary files a/png/128/emoji_u27bf.png and /dev/null differ diff --git a/png/128/emoji_u2934.png b/png/128/emoji_u2934.png deleted file mode 100644 index d8c110cad..000000000 Binary files a/png/128/emoji_u2934.png and /dev/null differ diff --git a/png/128/emoji_u2935.png b/png/128/emoji_u2935.png deleted file mode 100644 index f2875f02f..000000000 Binary files a/png/128/emoji_u2935.png and /dev/null differ diff --git a/png/128/emoji_u2b05.png b/png/128/emoji_u2b05.png deleted file mode 100644 index adc8ffaf2..000000000 Binary files a/png/128/emoji_u2b05.png and /dev/null differ diff --git a/png/128/emoji_u2b06.png b/png/128/emoji_u2b06.png deleted file mode 100644 index 9fe6eee55..000000000 Binary files a/png/128/emoji_u2b06.png and /dev/null differ diff --git a/png/128/emoji_u2b07.png b/png/128/emoji_u2b07.png deleted file mode 100644 index f857477a6..000000000 Binary files a/png/128/emoji_u2b07.png and /dev/null differ diff --git a/png/128/emoji_u2b1b.png b/png/128/emoji_u2b1b.png deleted file mode 100644 index 47366603a..000000000 Binary files a/png/128/emoji_u2b1b.png and /dev/null differ diff --git a/png/128/emoji_u2b1c.png b/png/128/emoji_u2b1c.png deleted file mode 100644 index 45c1fd1d5..000000000 Binary files a/png/128/emoji_u2b1c.png and /dev/null differ diff --git a/png/128/emoji_u2b50.png b/png/128/emoji_u2b50.png deleted file mode 100644 index f8b288b96..000000000 Binary files a/png/128/emoji_u2b50.png and /dev/null differ diff --git a/png/128/emoji_u2b55.png b/png/128/emoji_u2b55.png deleted file mode 100644 index 4e6d86a95..000000000 Binary files a/png/128/emoji_u2b55.png and /dev/null differ diff --git a/png/128/emoji_u3030.png b/png/128/emoji_u3030.png deleted file mode 100644 index 5056da17f..000000000 Binary files a/png/128/emoji_u3030.png and /dev/null differ diff --git a/png/128/emoji_u303d.png b/png/128/emoji_u303d.png deleted file mode 100644 index 43b8560ef..000000000 Binary files a/png/128/emoji_u303d.png and /dev/null differ diff --git a/png/128/emoji_u3297.png b/png/128/emoji_u3297.png deleted file mode 100644 index 5d5b56e74..000000000 Binary files a/png/128/emoji_u3297.png and /dev/null differ diff --git a/png/128/emoji_u3299.png b/png/128/emoji_u3299.png deleted file mode 100644 index e637c5309..000000000 Binary files a/png/128/emoji_u3299.png and /dev/null differ diff --git a/png/128/emoji_ufe82b.png b/png/128/emoji_ufe82b.png deleted file mode 100644 index 8c32e9d3d..000000000 Binary files a/png/128/emoji_ufe82b.png and /dev/null differ diff --git a/strip_vs_from_filenames.py b/strip_vs_from_filenames.py deleted file mode 100755 index 61dffd3b5..000000000 --- a/strip_vs_from_filenames.py +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env python3 -# -# Copyright 2017 Google Inc. All rights reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from __future__ import print_function -import argparse -import glob -import os -from os import path -import sys - -"""Rename image files based on codepoints to remove the emoji variation -selector from the name. For our emoji image data, this codepoint is not -relevant.""" - -EMOJI_VS = 0xfe0f - - -def str_to_seq(seq_str): - return tuple([int(s, 16) for s in seq_str.split('_')]) - - -def seq_to_str(seq): - return '_'.join('%04x' % cp for cp in seq) - - -def strip_vs(seq): - return tuple([cp for cp in seq if cp != EMOJI_VS]) - - -def strip_vs_from_filenames(imagedir, prefix, ext, dry_run=False): - prefix_len = len(prefix) - suffix_len = len(ext) + 1 - names = [path.basename(f) - for f in glob.glob( - path.join(imagedir, '%s*.%s' % (prefix, ext)))] - renames = {} - for name in names: - seq = str_to_seq(name[prefix_len:-suffix_len]) - if seq and EMOJI_VS in seq: - newname = '%s%s.%s' % (prefix, seq_to_str(strip_vs(seq)), ext) - if newname in names: - print('%s non-vs name %s already exists.' % ( - name, newname), file=sys.stderr) - return - renames[name] = newname - - for k, v in renames.iteritems(): - if dry_run: - print('%s -> %s' % (k, v)) - else: - os.rename(path.join(imagedir, k), path.join(imagedir, v)) - print('renamed %d files in %s' % (len(renames), imagedir)) - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - '-d', '--imagedir', help='directory containing images to rename', - metavar='dir', required=True) - parser.add_argument( - '-e', '--ext', help='image filename extension (default png)', - choices=['ai', 'png', 'svg'], default='png') - parser.add_argument( - '-p', '--prefix', help='image filename prefix (default emoji_u)', - default='emoji_u', metavar='pfx') - parser.add_argument( - '-n', '--dry_run', help='compute renames and list only', - action='store_true') - - args = parser.parse_args() - strip_vs_from_filenames(args.imagedir, args.prefix, args.ext, args.dry_run) - - -if __name__ == '__main__': - main() diff --git a/svg_builder.py b/svg_builder.py deleted file mode 100755 index d722c57d5..000000000 --- a/svg_builder.py +++ /dev/null @@ -1,198 +0,0 @@ -# Copyright 2015 Google, Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Google Author(s): Doug Felt - -import math -import random -import re -import string - -import svg_cleaner - -class SvgBuilder(object): - """Modifies a font to add SVG glyphs from a document or string. Once built you - can call add_from_filename or add_from_doc multiple times to add SVG - documents, which should contain a single root svg element representing the glyph. - This element must have width and height attributes (in px), these are used to - determine how to scale the glyph. The svg should be designed to fit inside - this bounds and have its origin at the top left. Adding the svg generates a - transform to scale and position the glyph, so the svg element should not have - a transform attribute since it will be overwritten. Any id attribute on the - glyph is also overwritten. - - Adding a glyph can generate additional default glyphs for components of a - ligature that are not already present. - - It is possible to add SVG images to a font that already has corresponding - glyphs. If a glyph exists already, then its hmtx advance is assumed valid. - Otherwise we will generate an advance based on the image's width and scale - factor. Callers should ensure that glyphs for components of ligatures are - added before the ligatures themselves, otherwise glyphs generated for missing - ligature components will be assigned zero metrics metrics that will not be - overridden later.""" - - def __init__(self, font_builder): - font_builder.init_svg() - - self.font_builder = font_builder - self.cleaner = svg_cleaner.SvgCleaner() - - font = font_builder.font - self.font_ascent = font['hhea'].ascent - self.font_height = self.font_ascent - font['hhea'].descent - self.font_upem = font['head'].unitsPerEm - - def add_from_filename(self, ustr, filename): - with open(filename, "r") as fp: - return self.add_from_doc(ustr, fp.read(), filename=filename) - - def _strip_px(self, val): - return float(val[:-2] if val.endswith('px') else val) - - def add_from_doc(self, ustr, svgdoc, filename=None): - """Cleans the svg doc, tweaks the root svg element's - attributes, then updates the font. ustr is the character or ligature - string, svgdoc is the svg document xml. The doc must have a single - svg root element.""" - - # The svg element must have an id attribute of the form 'glyphNNN' where NNN - # is the glyph id. We capture the index of the glyph we're adding and write - # it into the svg. - # - # We generate a transform that places the origin at the top left of the - # ascent and uniformly scales it to fit both the font height (ascent - - # descent) and glyph advance if it is already present. The initial viewport - # is 1000x1000. When present, viewBox scales to fit this and uses default - # values for preserveAspectRatio that center the viewBox in this viewport - # ('xMidyMid meet'), and ignores the width and height. If viewBox is not - # present, width and height cause a (possibly non-uniform) scale to be - # applied that map the extent to the viewport. This is unfortunate for us, - # since we want to preserve the aspect ratio, and the image is likely - # designed for a viewport with the width and height it requested. - # - # If we have an advance, we want to replicate the behavior of viewBox, - # except using a 'viewport' of advance, ascent+descent. If we don't have - # an advance, we scale the height and compute the advance from the scaled - # width. - # - # Lengths using percentage units map 100% to the width/height/diagonal - # of the viewBox, or if it is not defined, the viewport. Since we can't - # define the viewport, we must always have a viewBox. - - cleaner = self.cleaner - fbuilder = self.font_builder - - tree = cleaner.tree_from_text(svgdoc) - - name, index, exists = fbuilder.add_components_and_ligature(ustr) - - advance = 0 - if exists: - advance = fbuilder.hmtx[name][0] - - vb = tree.attrs.get('viewBox') - if vb: - x, y, w, h = map(self._strip_px, re.split('\s*,\s*|\s+', vb)) - else: - wid = tree.attrs.get('width') - ht = tree.attrs.get('height') - if not (wid and ht): - raise ValueError( - 'missing viewBox and width or height attrs (%s)' % filename) - x, y, w, h = 0, 0, self._strip_px(wid), self._strip_px(ht) - - # We're going to assume default values for preserveAspectRatio for now, - # this preserves aspect ratio and centers in the viewport. - # - # The viewport is 0,0 1000x1000. First compute the scaled extent and - # translations that center the image rect in the viewport, then scale and - # translate the result to fit our true 'viewport', which has an origin at - # 0,-ascent and an extent of advance (if defined) x font_height. We won't - # try to optimize this, it's clearer what we're doing this way. - - # Since the viewport is square, we can just compare w and h to determine - # which to fit to the viewport extent. Get our position and extent in - # the viewport. - if w > h: - scale_to_viewport = 1000.0 / w - h_in_viewport = scale_to_viewport * h - y_in_viewport = (1000 - h_in_viewport) / 2 - w_in_viewport = 1000.0 - x_in_viewport = 0.0 - else: - scale_to_viewport = 1000.0 / h - h_in_viewport = 1000.0 - y_in_viewport = 0.0 - w_in_viewport = scale_to_viewport * w - x_in_viewport = (1000 - w_in_viewport) / 2 - - # Now, compute the scale and translations that fit this rectangle to our - # true 'viewport'. The true viewport is not square so we need to choose the - # smaller of the scales that fit its height or width. We start with height, - # if there's no advance then we're done, otherwise we might have to fit the - # advance. - scale = self.font_height / h_in_viewport - fit_height = True - if advance and scale * w_in_viewport > advance: - scale = advance / w_in_viewport - fit_height = False - - # Compute transforms that put the top left of the image where we want it. - ty = -self.font_ascent - scale * y_in_viewport - tx = -scale * x_in_viewport - - # Adjust them to center the image horizontally if we fit the full height, - # vertically otherwise. - if fit_height and advance: - tx += (advance - scale * w_in_viewport) / 2 - else: - ty += (self.font_height - scale * h_in_viewport) / 2 - - cleaner.clean_tree(tree) - - tree.attrs['id'] = 'glyph%s' % index - - transform = 'translate(%g, %g) scale(%g)' % (tx, ty, scale) - tree.attrs['transform'] = transform - - tree.attrs['viewBox'] = '%g %g %g %g' % (x, y, w, h) - - # In order to clip, we need to create a path and reference it. You'd think - # establishing a rectangular clip would be simpler... Aaaaand... as it - # turns out, in FF the clip on the outer svg element is only relative to the - # initial viewport, and is not affected by the viewBox or transform on the - # svg element. Unlike chrome. So either we apply an inverse transform, or - # insert a group with the clip between the svg and its children. The latter - # seems cleaner, ultimately. - clip_id = 'clip_' + ''.join( - random.choice(string.ascii_lowercase) for i in range(8)) - clip_text = ('' - '' % ( - clip_id, clip_id, x, y, w, h, -w)) - clip_tree = cleaner.tree_from_text(clip_text) - clip_tree.contents.extend(tree.contents) - tree.contents = [clip_tree] - - svgdoc = cleaner.tree_to_text(tree) - - hmetrics = None - if not exists: - # There was no advance to fit, so no horizontal centering. The image advance is - # all there is. - # hmetrics is horiz advance and lsb - advance = scale * w_in_viewport - hmetrics = [int(round(advance)), 0] - - fbuilder.add_svg(svgdoc, hmetrics, name, index) diff --git a/svg_cleaner.py b/svg_cleaner.py deleted file mode 100755 index a2a86e5d4..000000000 --- a/svg_cleaner.py +++ /dev/null @@ -1,357 +0,0 @@ -#!/usr/bin/env python3 -# Copyright 2015 Google, Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Google Author(s): Doug Felt - -"""Clean SVG. - -svgo could do this, but we're fussy. Also, emacs doesn't understand -that 'style' defaults to 'text/css' and svgo strips this out by -default. - -The files we're getting that are exported from AI contain lots of extra -data so that it can reimport the svg, and we don't need it.""" - - -import argparse -import codecs -import logging -import os -from os import path -import re -import sys - -from nototools import tool_utils - -from xml.parsers import expat -from xml.sax import saxutils - -# Expat doesn't allow me to identify empty tags (in particular, with an -# empty tag the parse location for the start and end is not the same) so I -# have to take a dom-like approach if I want to identify them. There are a -# lot of empty tags in svg. This way I can do some other kinds of cleanup -# as well (remove unnecessary 'g' elements, for instance). - -# Use nodes instead of tuples and strings because it's easier to mutate -# a tree of these, and cleaner will want to do this. - -class _Elem_Node(object): - def __init__(self, name, attrs, contents): - self.name = name - self.attrs = attrs - self.contents = contents - - def __repr__(self): - line = ["elem(name: '%s'" % self.name] - if self.attrs: - line.append(" attrs: '%s'" % self.attrs) - if self.contents: - line.append(" contents[%s]: '%s'" % (len(self.contents), self.contents)) - line.append(')') - return ''.join(line) - -class _Text_Node(object): - def __init__(self, text): - self.text = text - - def __repr__(self): - return "text('%s')" % self.text - -class SvgCleaner(object): - """Strip out unwanted parts of an svg file, primarily the xml declaration and - doctype lines, comments, and some attributes of the outermost element. - The id will be replaced when it is inserted into the font. (viewBox causes - unwanted scaling when used in a font and its effect is difficult to - predict, but for outside a font we need to keep it sometimes so we keep it). - version is unneeded, xml:space is ignored (we're processing spaces - so a request to maintain them has no effect). enable-background appears to - have no effect. x and y on the outermost svg element have no effect. We - keep width and height, and will elsewhere assume these are the dimensions - used for the character box.""" - - def __init__(self, strip=False): - self.reader = SvgCleaner._Reader() - self.cleaner = SvgCleaner._Cleaner() - self.writer = SvgCleaner._Writer(strip) - - class _Reader(object): - """Loosely based on fonttools's XMLReader. This generates a tree of nodes, - either element nodes or text nodes. Successive text content is merged - into one node, so contents will never contain more than one _Text_Node in - a row. This drops comments, xml declarations, and doctypes.""" - - def _reset(self, parser): - self._stack = [] - self._textbuf = [] - - def _start_element(self, name, attrs): - self._flush_textbuf() - node = _Elem_Node(name, attrs, []) - if len(self._stack): - self._stack[-1].contents.append(node) - self._stack.append(node) - - def _end_element(self, name): - self._flush_textbuf() - if len(self._stack) > 1: - self._stack = self._stack[:-1] - - def _character_data(self, data): - if len(self._stack): - self._textbuf.append(data) - - def _flush_textbuf(self): - if self._textbuf: - node = _Text_Node(''.join(self._textbuf)) - self._stack[-1].contents.append(node) - self._textbuf = [] - - def from_text(self, data): - """Return the root node of a tree representing the svg data.""" - - parser = expat.ParserCreate() - parser.StartElementHandler = self._start_element - parser.EndElementHandler = self._end_element - parser.CharacterDataHandler = self._character_data - self._reset(parser) - parser.Parse(data) - return self._stack[0] - - class _Cleaner(object): - def _clean_elem(self, node): - viewBox, x, y, width, height = None, None, None, None, None - nattrs = {} - for k, v in node.attrs.items(): - if node.name == 'svg' and k in [ - 'x', 'y', 'id', 'version', 'viewBox', 'width', 'height', - 'enable-background', 'xml:space', 'xmlns:graph', 'xmlns:i', - 'xmlns:x']: - if k == 'viewBox': - viewBox = v - elif k == 'width': - width = v - elif k == 'height': - height = v - elif k.startswith('xmlns:') and 'ns.adobe.com' not in v: - # keep if not an adobe namespace - logging.debug('keep "%s" = "%s"' % (k, v)) - nattrs[k] = v - logging.debug('removing %s=%s' % (k, v)) - continue - v = re.sub('\s+', ' ', v) - nattrs[k] = v - - if node.name == 'svg': - if viewBox: - x, y, width, height = viewBox.split() - if not width or not height: - if not viewBox: - raise ValueError('no viewBox, width, or height') - nattrs['width'] = width - nattrs['height'] = height - # keep for svg use outside of font - if viewBox and (int(x) != 0 or int(y) != 0): - logging.warn('viewbox "%s" x: %s y: %s' % (viewBox, x, y)); - nattrs['viewBox'] = viewBox - node.attrs = nattrs - - # if display:none, skip this and its children - style = node.attrs.get('style') - if (style and 'display:none' in style) or node.attrs.get('display') == 'none': - node.contents = [] - return - - # scan contents. remove any empty text nodes, or empty 'g' element nodes. - # if a 'g' element has no attrs and only one subnode, replace it with the - # subnode. - wpos = 0 - for n in node.contents: - if isinstance(n, _Text_Node): - if not n.text: - continue - elif n.name == 'g': - if not n.contents: - continue - if 'i:extraneous' in n.attrs: - del n.attrs['i:extraneous'] - if not n.attrs and len(n.contents) == 1: - n = n.contents[0] - elif n.name == 'i:pgf' or n.name == 'foreignObject': - continue - elif n.name =='switch' and len(n.contents) == 1: - n = n.contents[0] - elif n.name == 'style': - # some emacsen don't default 'style' properly, so leave this in. - if False and n.attrs.get('type') == 'text/css': - del n.attrs['type'] - - node.contents[wpos] = n - wpos += 1 - if wpos < len(node.contents): - node.contents = node.contents[:wpos] - - def _clean_text(self, node): - text = node.text.strip() - # common case is text is empty (line endings between elements) - if text: - # main goal here is to leave linefeeds in for style elements - text = re.sub(r'[ \t]*\n+[ \t]*', '\n', text) - text = re.sub(r'[ \t]+', ' ', text) - node.text = text - - def clean(self, node): - if isinstance(node, _Text_Node): - self._clean_text(node) - else: - # do contents first, so we can check for empty subnodes after - for n in node.contents: - self.clean(n) - self._clean_elem(node) - - class _Writer(object): - """For text nodes, replaces sequences of whitespace with a single space. - For elements, replaces sequences of whitespace in attributes, and - removes unwanted attributes from elements.""" - def __init__(self, strip): - logging.warning('writer strip: %s' % strip); - self._strip = strip - - def _write_node(self, node, lines, indent): - """Node is a node generated by _Reader, either a TextNode or an - ElementNode. Lines is a list to collect the lines of output. Indent is - the indentation level for this node.""" - - if isinstance(node, _Text_Node): - if node.text: - lines.append(node.text) - else: - margin = '' if self._strip else ' ' * indent - line = [margin] - line.append('<%s' % node.name) - # custom sort attributes of svg, yes this is a hack - if node.name == 'svg': - def svgsort(k): - if k == 'width': return (0, None) - elif k == 'height': return (1, None) - else: return (2, k) - ks = sorted(node.attrs.keys(), key=svgsort) - else: - def defsort(k): - if k == 'id': return (0, None) - elif k == 'class': return (1, None) - else: return (2, k) - ks = sorted(node.attrs.keys(), key=defsort) - for k in ks: - v = node.attrs[k] - line.append(' %s=%s' % (k, saxutils.quoteattr(v))) - if node.contents: - line.append('>') - lines.append(''.join(line)) - for elem in node.contents: - self._write_node(elem, lines, indent + 1) - line = [margin] - line.append('' % node.name) - lines.append(''.join(line)) - else: - line.append('/>') - lines.append(''.join(line)) - - def to_text(self, root): - # set up lines for recursive calls, let them append lines, then return - # the result. - lines = [] - self._write_node(root, lines, 0) - return ''.join(lines) if self._strip else '\n'.join(lines) - - def tree_from_text(self, svg_text): - return self.reader.from_text(svg_text) - - def clean_tree(self, svg_tree): - self.cleaner.clean(svg_tree) - - def tree_to_text(self, svg_tree): - return self.writer.to_text(svg_tree) - - def clean_svg(self, svg_text): - """Return the cleaned svg_text.""" - tree = self.tree_from_text(svg_text) - self.clean_tree(tree) - return self.tree_to_text(tree) - - -def clean_svg_files(in_dir, out_dir, match_pat=None, clean=False, strip=False): - regex = re.compile(match_pat) if match_pat else None - count = 0 - - if clean and path.samefile(in_dir, out_dir): - logging.error('Cannot clean %s (same as in_dir)', out_dir) - return - - out_dir = tool_utils.ensure_dir_exists(out_dir, clean=clean) - - cleaner = SvgCleaner(strip) - for file_name in os.listdir(in_dir): - if regex and not regex.match(file_name): - continue - in_path = os.path.join(in_dir, file_name) - logging.debug('read: %s', in_path) - with open(in_path) as in_fp: - result = cleaner.clean_svg(in_fp.read()) - out_path = os.path.join(out_dir, file_name) - with codecs.open(out_path, 'w', 'utf-8') as out_fp: - logging.debug('write: %s', out_path) - out_fp.write(result) - count += 1 - if not count: - logging.warning('Failed to match any files') - else: - logging.info('Wrote %s files to %s', count, out_dir) - - -def main(): - parser = argparse.ArgumentParser( - description="Generate 'cleaned' svg files.") - parser.add_argument( - 'in_dir', help='Input directory.', metavar='dir') - parser.add_argument( - '-o', '--out_dir', help='Output directory, defaults to sibling of in_dir', - metavar='dir') - parser.add_argument( - '-c', '--clean', help='Clean output directory', action='store_true') - parser.add_argument( - '-r', '--regex', help='Regex to select files, default matches all files.', - metavar='regex', default=None) - parser.add_argument( - '-l', '--loglevel', help='log level name/value', default='warning') - parser.add_argument( - '-w', '--strip_whitespace', help='remove newlines and indentation', - action='store_true') - args = parser.parse_args() - - tool_utils.setup_logging(args.loglevel) - - if not args.out_dir: - if args.in_dir.endswith('/'): - args.in_dir = args.in_dir[:-1] - args.out_dir = args.in_dir + '_clean' - logging.info('Writing output to %s', args.out_dir) - - clean_svg_files( - args.in_dir, args.out_dir, match_pat=args.regex, clean=args.clean, - strip=args.strip_whitespace) - - -if __name__ == '__main__': - main() diff --git a/third_party/color_emoji/LICENSE b/third_party/color_emoji/LICENSE deleted file mode 100644 index 218fa2c63..000000000 --- a/third_party/color_emoji/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2013 Google, Inc. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/third_party/color_emoji/README b/third_party/color_emoji/README deleted file mode 100644 index 387e6edb4..000000000 --- a/third_party/color_emoji/README +++ /dev/null @@ -1,13 +0,0 @@ -This project consists of the following bits and pieces: - - * A proposed specification to add support for embedded color image - glyphs in OpenType fonts, - - * A tool called emoji_builder.py, to embed a set of PNG images into - an existing font, - - * Two sets of sample PNG images for ASCII characters and sample - scripts to build them into test fonts: FruityGirl and Funkster. - - * Scripts to build a real color emoji font out of the Open Source - PhantomOpenEmoji images. diff --git a/third_party/color_emoji/README.third_party b/third_party/color_emoji/README.third_party deleted file mode 100644 index d3e767fe4..000000000 --- a/third_party/color_emoji/README.third_party +++ /dev/null @@ -1,11 +0,0 @@ -URL: http://color-emoji.googlecode.com/archive/dce2d8ad953a7b03200723f9f1d25121cb45150a.zip -Version: dce2d8ad953a7b03200723f9f1d25121cb45150a -License: BSD -License File: LICENSE - -Description: -Color Emoji font creation tools - -Local Modifications: -COPYING file was renamed to LICENSE. The samples font sources and the -specification are not included. diff --git a/third_party/color_emoji/emoji_builder.py b/third_party/color_emoji/emoji_builder.py deleted file mode 100644 index 66940502b..000000000 --- a/third_party/color_emoji/emoji_builder.py +++ /dev/null @@ -1,576 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2013 Google, Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Google Author(s): Behdad Esfahbod, Stuart Gill, Roozbeh Pournader -# - - -from __future__ import print_function -import sys, struct -from png import PNG -import os -from os import path - -from nototools import font_data - - -try: - unichr # py2 -except NameError: - unichr = chr # py3 - -def get_glyph_name_from_gsub (string, font, cmap_dict): - ligatures = font['GSUB'].table.LookupList.Lookup[0].SubTable[0].ligatures - first_glyph = cmap_dict[ord (string[0])] - rest_of_glyphs = [cmap_dict[ord (ch)] for ch in string[1:]] - for ligature in ligatures[first_glyph]: - if ligature.Component == rest_of_glyphs: - return ligature.LigGlyph - - -def div (a, b): - return int (round (a / float (b))) - -class FontMetrics: - def __init__ (self, upem, ascent, descent): - self.upem = upem - self.ascent = ascent - self.descent = descent - -class StrikeMetrics: - def __init__ (self, font_metrics, advance, bitmap_width, bitmap_height): - self.width = bitmap_width # in pixels - self.height = bitmap_height # in pixels - self.advance = advance # in font units - self.x_ppem = self.y_ppem = div (bitmap_width * font_metrics.upem, advance) - -class GlyphMap: - def __init__ (self, glyph, offset, image_format): - self.glyph = glyph - self.offset = offset - self.image_format = image_format - - -# Based on http://www.microsoft.com/typography/otspec/ebdt.htm -class CBDT: - - def __init__ (self, font_metrics, options = (), stream = None): - self.stream = stream if stream != None else bytearray () - self.options = options - self.font_metrics = font_metrics - self.base_offset = 0 - self.base_offset = self.tell () - - def tell (self): - return len (self.stream) - self.base_offset - def write (self, data): - self.stream.extend (data) - def data (self): - return self.stream - - def write_header (self): - self.write (struct.pack (">L", 0x00030000)) # FIXED version - - def start_strike (self, strike_metrics): - self.strike_metrics = strike_metrics - self.glyph_maps = [] - - def write_glyphs (self, glyphs, glyph_filenames, image_format): - - write_func = self.image_write_func (image_format) - for glyph in glyphs: - img_file = glyph_filenames[glyph] - # print 'writing data for glyph %s' % path.basename(img_file) - offset = self.tell () - write_func (PNG (img_file)) - self.glyph_maps.append (GlyphMap (glyph, offset, image_format)) - - def end_strike (self): - - self.glyph_maps.append (GlyphMap (None, self.tell (), None)) - glyph_maps = self.glyph_maps - del self.glyph_maps - del self.strike_metrics - return glyph_maps - - def write_glyphMetrics (self, width, height, big_metrics): - - ascent = self.font_metrics.ascent - descent = self.font_metrics.descent - upem = self.font_metrics.upem - y_ppem = self.strike_metrics.y_ppem - - x_bearing = 0 - # center vertically - line_height = (ascent + descent) * y_ppem / float (upem) - line_ascent = ascent * y_ppem / float (upem) - y_bearing = int (round (line_ascent - .5 * (line_height - height))) - # fudge y_bearing if calculations are a bit off - if y_bearing == 128: - y_bearing = 127 - advance = width - - vert_x_bearing = - width / 2 - vert_y_bearing = 0 - vert_advance = height - - # print "big glyph metrics h: %d w: %d" % (height, width) - # smallGlyphMetrics - # Type Name - # BYTE height - # BYTE width - # CHAR horiBearingX - # CHAR horiBearingY - # BYTE horiAdvance - # add for bigGlyphMetrics: - # CHAR vertBearingX - # CHAR vertBearingY - # BYTE vertAdvance - try: - if big_metrics: - self.write (struct.pack ("BBbbBbbB", - height, width, - x_bearing, y_bearing, - advance, - vert_x_bearing, vert_y_bearing, - vert_advance)) - else: - self.write (struct.pack ("BBbbB", - height, width, - x_bearing, y_bearing, - advance)) - except Exception as e: - raise ValueError("%s, h: %d w: %d x: %d y: %d %d a:" % ( - e, height, width, x_bearing, y_bearing, advance)) - - def write_format1 (self, png): - - import cairo - img = cairo.ImageSurface.create_from_png (png.stream ()) - if img.get_format () != cairo.FORMAT_ARGB32: - raise Exception ("Expected FORMAT_ARGB32, but image has format %d" % img.get_format ()) - - width = img.get_width () - height = img.get_height () - stride = img.get_stride () - data = img.get_data () - - self.write_smallGlyphMetrics (width, height) - - if sys.byteorder == "little" and stride == width * 4: - # Sweet. Data is in desired format, ship it! - self.write (data) - return - - # Unexpected stride or endianness, do it the slow way - offset = 0 - for y in range (height): - for x in range (width): - pixel = data[offset + 4 * x: offset + 4 * (x + 1)] - # Convert to little endian - pixel = struct.pack ("L", len (png_data))) - self.write (png_data) - - def image_write_func (self, image_format): - if image_format == 1: return self.write_format1 - if image_format == 17: return self.write_format17 - if image_format == 18: return self.write_format18 - return None - - -# Based on http://www.microsoft.com/typography/otspec/eblc.htm -class CBLC: - - def __init__ (self, font_metrics, options = (), stream = None): - self.stream = stream if stream != None else bytearray () - self.streams = [] - self.options = options - self.font_metrics = font_metrics - self.base_offset = 0 - self.base_offset = self.tell () - - def tell (self): - return len (self.stream) - self.base_offset - def write (self, data): - self.stream.extend (data) - def data (self): - return self.stream - def push_stream (self, stream): - self.streams.append (self.stream) - self.stream = stream - def pop_stream (self): - stream = self.stream - self.stream = self.streams.pop () - return stream - - def write_header (self): - self.write (struct.pack (">L", 0x00030000)) # FIXED version - - def start_strikes (self, num_strikes): - self.num_strikes = num_strikes - self.write (struct.pack (">L", self.num_strikes)) # ULONG numSizes - self.bitmapSizeTables = bytearray () - self.otherTables = bytearray () - - def write_strike (self, strike_metrics, glyph_maps): - self.strike_metrics = strike_metrics - self.write_bitmapSizeTable (glyph_maps) - del self.strike_metrics - - def end_strikes (self): - self.write (self.bitmapSizeTables) - self.write (self.otherTables) - del self.bitmapSizeTables - del self.otherTables - - def write_sbitLineMetrics_hori (self): - - ascent = self.font_metrics.ascent - descent = self.font_metrics.descent - upem = self.font_metrics.upem - y_ppem = self.strike_metrics.y_ppem - - # sbitLineMetrics - # Type Name - # CHAR ascender - # CHAR descender - # BYTE widthMax - # CHAR caretSlopeNumerator - # CHAR caretSlopeDenominator - # CHAR caretOffset - # CHAR minOriginSB - # CHAR minAdvanceSB - # CHAR maxBeforeBL - # CHAR minAfterBL - # CHAR pad1 - # CHAR pad2 - line_height = div ((ascent + descent) * y_ppem, upem) - ascent = div (ascent * y_ppem, upem) - descent = - (line_height - ascent) - self.write (struct.pack ("bbBbbbbbbbbb", - ascent, descent, - self.strike_metrics.width, - 0, 0, 0, - 0, 0, 0, 0, # TODO - 0, 0)) - - def write_sbitLineMetrics_vert (self): - self.write_sbitLineMetrics_hori () # XXX - - def write_indexSubTable1 (self, glyph_maps): - - image_format = glyph_maps[0].image_format - - self.write (struct.pack(">H", 1)) # USHORT indexFormat - self.write (struct.pack(">H", image_format)) # USHORT imageFormat - imageDataOffset = glyph_maps[0].offset - self.write (struct.pack(">L", imageDataOffset)) # ULONG imageDataOffset - for gmap in glyph_maps[:-1]: - self.write (struct.pack(">L", gmap.offset - imageDataOffset)) # ULONG offsetArray - assert gmap.image_format == image_format - self.write (struct.pack(">L", glyph_maps[-1].offset - imageDataOffset)) - - def write_bitmapSizeTable (self, glyph_maps): - - # count number of ranges - count = 1 - start = glyph_maps[0].glyph - last_glyph = start - last_image_format = glyph_maps[0].image_format - for gmap in glyph_maps[1:-1]: - if last_glyph + 1 != gmap.glyph or last_image_format != gmap.image_format: - count += 1 - last_glyph = gmap.glyph - last_image_format = gmap.image_format - headersLen = count * 8 - - headers = bytearray () - subtables = bytearray () - start = glyph_maps[0].glyph - start_id = 0 - last_glyph = start - last_image_format = glyph_maps[0].image_format - last_id = 0 - for gmap in glyph_maps[1:-1]: - if last_glyph + 1 != gmap.glyph or last_image_format != gmap.image_format: - headers.extend (struct.pack(">HHL", start, last_glyph, headersLen + len (subtables))) - self.push_stream (subtables) - self.write_indexSubTable1 (glyph_maps[start_id:last_id+2]) - self.pop_stream () - - start = gmap.glyph - start_id = last_id + 1 - last_glyph = gmap.glyph - last_image_format = gmap.image_format - last_id += 1 - headers.extend (struct.pack(">HHL", start, last_glyph, headersLen + len (subtables))) - self.push_stream (subtables) - self.write_indexSubTable1 (glyph_maps[start_id:last_id+2]) - self.pop_stream () - - indexTablesSize = len (headers) + len (subtables) - numberOfIndexSubTables = count - bitmapSizeTableSize = 48 * self.num_strikes - - indexSubTableArrayOffset = 8 + bitmapSizeTableSize + len (self.otherTables) - - self.push_stream (self.bitmapSizeTables) - # bitmapSizeTable - # Type Name Description - # ULONG indexSubTableArrayOffset offset to index subtable from beginning of CBLC. - self.write (struct.pack(">L", indexSubTableArrayOffset)) - # ULONG indexTablesSize number of bytes in corresponding index subtables and array - self.write (struct.pack(">L", indexTablesSize)) - # ULONG numberOfIndexSubTables an index subtable for each range or format change - self.write (struct.pack(">L", numberOfIndexSubTables)) - # ULONG colorRef not used; set to 0. - self.write (struct.pack(">L", 0)) - # sbitLineMetrics hori line metrics for text rendered horizontally - self.write_sbitLineMetrics_hori () - self.write_sbitLineMetrics_vert () - # sbitLineMetrics vert line metrics for text rendered vertically - # USHORT startGlyphIndex lowest glyph index for this size - self.write (struct.pack(">H", glyph_maps[0].glyph)) - # USHORT endGlyphIndex highest glyph index for this size - self.write (struct.pack(">H", glyph_maps[-2].glyph)) - # BYTE ppemX horizontal pixels per Em - self.write (struct.pack(">B", self.strike_metrics.x_ppem)) - # BYTE ppemY vertical pixels per Em - self.write (struct.pack(">B", self.strike_metrics.y_ppem)) - # BYTE bitDepth the Microsoft rasterizer v.1.7 or greater supports the - # following bitDepth values, as described below: 1, 2, 4, and 8. - self.write (struct.pack(">B", 32)) - # CHAR flags vertical or horizontal (see bitmapFlags) - self.write (struct.pack(">b", 0x01)) - self.pop_stream () - - self.push_stream (self.otherTables) - self.write (headers) - self.write (subtables) - self.pop_stream () - - -def main (argv): - import glob - from fontTools import ttx, ttLib - - options = [] - - option_map = { - "-V": "verbose", - "-O": "keep_outlines", - "-U": "uncompressed", - "-S": "small_glyph_metrics", - "-C": "keep_chunks", - } - - for key, value in option_map.items (): - if key in argv: - options.append (value) - argv.remove (key) - - if len (argv) < 4: - print(""" -Usage: - -emoji_builder.py [-V] [-O] [-U] [-S] [-A] font.ttf out-font.ttf strike-prefix... - -This will search for files that have strike-prefix followed -by a hex number, and end in ".png". For example, if strike-prefix -is "icons/uni", then files with names like "icons/uni1f4A9.png" will -be loaded. All images for the same strike should have the same size -for best results. - -If multiple strike-prefix parameters are provided, multiple -strikes will be embedded, in the order provided. - -The script then embeds color bitmaps in the font, for characters -that the font already supports, and writes the new font out. - -If -V is given, verbose mode is enabled. - -If -U is given, uncompressed images are stored (imageFormat=1). - -If -S is given, PNG images are stored with small glyph metrics (imageFormat=17). - -By default, PNG images are stored with big glyph metrics (imageFormat=18). - -If -O is given, the outline tables ('glyf', 'CFF ') and -related tables are NOT dropped from the font. -By default they are dropped. - -If -C is given, unused chunks (color profile, etc) are NOT -dropped from the PNG images when embedding. -By default they are dropped. -""", file=sys.stderr) - sys.exit (1) - - font_file = argv[1] - out_file = argv[2] - img_prefixes = argv[3:] - del argv - - def add_font_table (font, tag, data): - tab = ttLib.tables.DefaultTable.DefaultTable (tag) - tab.data = data - font[tag] = tab - - def drop_outline_tables (font): - for tag in ['cvt ', 'fpgm', 'glyf', 'loca', 'prep', 'CFF ', 'VORG']: - try: - del font[tag] - except KeyError: - pass - - - print() - - font = ttx.TTFont (font_file) - print("Loaded font '%s'." % font_file) - - font_metrics = FontMetrics (font['head'].unitsPerEm, - font['hhea'].ascent, - -font['hhea'].descent) - print("Font metrics: upem=%d ascent=%d descent=%d." % \ - (font_metrics.upem, font_metrics.ascent, font_metrics.descent)) - glyph_metrics = font['hmtx'].metrics - unicode_cmap = font['cmap'].getcmap (3, 10) - if not unicode_cmap: - unicode_cmap = font['cmap'].getcmap (3, 1) - if not unicode_cmap: - raise Exception ("Failed to find a Unicode cmap.") - - image_format = 1 if 'uncompressed' in options else (17 - if 'small_glyph_metrics' in options else 18) - - ebdt = CBDT (font_metrics, options) - ebdt.write_header () - eblc = CBLC (font_metrics, options) - eblc.write_header () - eblc.start_strikes (len (img_prefixes)) - - def is_vs(cp): - return cp >= 0xfe00 and cp <= 0xfe0f - - for img_prefix in img_prefixes: - print() - - img_files = {} - glb = "%s*.png" % img_prefix - print("Looking for images matching '%s'." % glb) - for img_file in glob.glob (glb): - codes = img_file[len (img_prefix):-4] - if "_" in codes: - pieces = codes.split ("_") - cps = [int(code, 16) for code in pieces] - uchars = "".join (unichr(cp) for cp in cps if not is_vs(cp)) - else: - cp = int(codes, 16) - if is_vs(cp): - print("ignoring unexpected vs input %04x" % cp) - continue - uchars = unichr(cp) - img_files[uchars] = img_file - if not img_files: - raise Exception ("No image files found in '%s'." % glb) - print("Found images for %d characters in '%s'." % (len (img_files), glb)) - - glyph_imgs = {} - advance = width = height = 0 - for uchars, img_file in img_files.items (): - if len (uchars) == 1: - try: - glyph_name = unicode_cmap.cmap[ord (uchars)] - except: - print("no cmap entry for %x" % ord(uchars)) - raise ValueError("%x" % ord(uchars)) - else: - glyph_name = get_glyph_name_from_gsub (uchars, font, unicode_cmap.cmap) - glyph_id = font.getGlyphID (glyph_name) - glyph_imgs[glyph_id] = img_file - if "verbose" in options: - uchars_name = ",".join (["%04X" % ord (char) for char in uchars]) - # print "Matched U+%s: id=%d name=%s image=%s" % ( - # uchars_name, glyph_id, glyph_name, img_file) - - advance += glyph_metrics[glyph_name][0] - w, h = PNG (img_file).get_size () - width += w - height += h - - glyphs = sorted (glyph_imgs.keys ()) - if not glyphs: - raise Exception ("No common characters found between font and '%s'." % glb) - print("Embedding images for %d glyphs for this strike." % len (glyphs)) - - advance, width, height = (div (x, len (glyphs)) for x in (advance, width, height)) - strike_metrics = StrikeMetrics (font_metrics, advance, width, height) - print("Strike ppem set to %d." % (strike_metrics.y_ppem)) - - ebdt.start_strike (strike_metrics) - ebdt.write_glyphs (glyphs, glyph_imgs, image_format) - glyph_maps = ebdt.end_strike () - - eblc.write_strike (strike_metrics, glyph_maps) - - print() - - ebdt = ebdt.data () - add_font_table (font, 'CBDT', ebdt) - print("CBDT table synthesized: %d bytes." % len (ebdt)) - eblc.end_strikes () - eblc = eblc.data () - add_font_table (font, 'CBLC', eblc) - print("CBLC table synthesized: %d bytes." % len (eblc)) - - print() - - if 'keep_outlines' not in options: - drop_outline_tables (font) - print("Dropped outline ('glyf', 'CFF ') and related tables.") - - # hack removal of cmap pua entry for unknown flag glyph. If we try to - # remove it earlier, getGlyphID dies. Need to restructure all of this - # code. - font_data.delete_from_cmap(font, [0xfe82b]) - font.save (out_file) - print("Output font '%s' generated." % out_file) - - -if __name__ == '__main__': - main (sys.argv) diff --git a/third_party/color_emoji/png.py b/third_party/color_emoji/png.py deleted file mode 100644 index 2c7646e7a..000000000 --- a/third_party/color_emoji/png.py +++ /dev/null @@ -1,116 +0,0 @@ -#!/usr/bin/env python -# -# Copyright 2013 Google, Inc. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# Google Author(s): Behdad Esfahbod -# - -import struct -import sys -from io import BytesIO - - -try: - basestring # py2 -except NameError: - basestring = str # py3 - - -class PNG: - - signature = bytearray ((137,80,78,71,13,10,26,10)) - - def __init__ (self, f): - - if isinstance(f, basestring): - f = open (f, 'rb') - - self.f = f - self.IHDR = None - - def tell (self): - return self.f.tell () - - def seek (self, pos): - self.f.seek (pos) - - def stream (self): - return self.f - - def data (self): - self.seek (0) - return bytearray (self.f.read ()) - - class BadSignature (Exception): pass - class BadChunk (Exception): pass - - def read_signature (self): - header = bytearray (self.f.read (8)) - if header != PNG.signature: - raise PNG.BadSignature - return PNG.signature - - def read_chunk (self): - buf = self.f.read (4) - length = struct.unpack (">I", buf)[0] - chunk_type = self.f.read (4) - chunk_data = self.f.read (length) - if len (chunk_data) != length: - raise PNG.BadChunk - crc = self.f.read (4) - if len (crc) != 4: - raise PNG.BadChunk - return (chunk_type, chunk_data, crc) - - def read_IHDR (self): - (chunk_type, chunk_data, crc) = self.read_chunk () - if chunk_type != b"IHDR": - raise PNG.BadChunk - # Width: 4 bytes - # Height: 4 bytes - # Bit depth: 1 byte - # Color type: 1 byte - # Compression method: 1 byte - # Filter method: 1 byte - # Interlace method: 1 byte - return struct.unpack (">IIBBBBB", chunk_data) - - def read_header (self): - self.read_signature () - self.IHDR = self.read_IHDR () - return self.IHDR - - def get_size (self): - if not self.IHDR: - pos = self.tell () - self.seek (0) - self.read_header () - self.seek (pos) - return self.IHDR[0:2] - - def filter_chunks (self, chunks): - self.seek (0); - out = BytesIO () - out.write (self.read_signature ()) - while True: - chunk_type, chunk_data, crc = self.read_chunk () - if chunk_type in chunks: - out.write (struct.pack (">I", len (chunk_data))) - out.write (chunk_type) - out.write (chunk_data) - out.write (crc) - if chunk_type == b"IEND": - break - return PNG (out) diff --git a/third_party/pngquant/.gitignore b/third_party/pngquant/.gitignore deleted file mode 100644 index 9fbb66d62..000000000 --- a/third_party/pngquant/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -*.dylib -*.mode1v3 -*.o -*.pbxproj -*.pbxuser -build -DerivedData -pngquant -build_configuration -lib/libimagequant.a -config.mk \ No newline at end of file diff --git a/third_party/pngquant/CHANGELOG b/third_party/pngquant/CHANGELOG deleted file mode 100644 index bd85bc836..000000000 --- a/third_party/pngquant/CHANGELOG +++ /dev/null @@ -1,116 +0,0 @@ -version 2.3 ------------ - - added ./configure script for better support of Intel C compiler and dependencies [thanks to pdknsk] - - tweaked quality metric to better estimate quality of images with large solid backgrounds [thanks to Rolf Timmermans] - -version 2.2 ------------ - - preserving of unknown PNG chunks (enables optimized Android 9-patch images) - - improved color profile support: cHRM & gAMA as alternative to ICC profiles, OpenMP acceleration - - improved support for Intel C Compiler, speedup in 32-bit GCC, and some workarounds for Visual Studio's incomplete C support - -version 2.1 ------------ - - option to save files only if they're compressed better than the original - - option to generate posterized output (for use with 16-bit textures) - - support for ICC profiles via Little CMS library - -version 2.0 ------------ - - refactored codebase into pngquant and standalone libimagequant - - reduced memory usage by further 30% (and more for very large images) - - less precise remapping improving speed by 25% in higher speed settings - - --output option for writing converted file under the given path - - light dithering with --floyd=0.5 - - fixed regression in dithering of alpha channel - -version 1.8 ------------ - - min/max quality option (number of colors is automatically adjusted for desired quality level) - - switched option parsing to getopt_long (syntax such as -s1 and --ext=ext is supported) - - significantly improved performance thanks to custom partial sorting - - optional Cocoa (Mac OS X) image reader for color profile support - - reduced memory usage by 20% - - remapping improved for very low number of colors - -version 1.7 ------------ - - new, accurate RGBA color similarity algorithm - - change of optional SSE3 code to SSE2 that is always enabled on x86-64 - - optional OpenMP-based parallelisation of remapping - - changed long options to use double hyphen (-force to --force) [thanks to Jari Aalto] - -version 1.6 ------------ - - novel dithering algorithm that doesn't add noise unless necessary - - perceptual weighting of colors taking into account edges and noise - - much faster remapping - - improved portability, makefiles and man page - -version 1.5 ------------ - - palettes postprocessed with Voronoi iteration - - better RGBA color similarity algorithm and Floyd-Steinberg remapping - - SSE optimisations - -version 1.4 ------------ - - median cut is applied many times in a feedback loop - - speed/quality trade-off option - - faster remap of transparent areas - -version 1.3 ------------ - - significant changes to the algorithm: use of variance - to find largest dimensioin and to split most varying boxes - - use of premultiplied alpha for color blending - - conversion of output to gamma 2.2 - -version 1.2 ------------ - - color computation done in floating point - - gamma correction applied - - dropped support for very old systems & compilers - -version 1.1 ------------ - - alpha-sensitive color reduction and dithering - - support -- and - arguments in command line - - number of colors optional (defaults to 256) - - increased maximum number of colors in histogram - -version 1.0 ------------ - - cleaned up Makefile.unx (better gcc optimizations, "clean" target) - - recompiled binaries with zlib 1.1.4 - -version 0.95 ------------- - - fixed Win32 filter bug (binary mode for stdin/stdout) - - fixed cosmetic "choosing colors" verbosity buglet - - fixed palette-size bug when number of colors in image < number requested - - fixed sample-depth bug (png_set_packing() not retroactively smart) - -version 0.91 ------------- - - fixed some verbose/non-verbose oopers - - fixed Win32 (MSVC) portability issues (getpid(), random(), srandom()) - - added Makefile.w32 for MSVC (tested with 5.0) - -version 0.90 ------------- - - added support for multiple files on command line - - changed stdin support to write PNG stream to stdout (not "stdin-fs8.png") - -version 0.75 ------------- - - added support for any type of input file [Glenn Randers-Pehrson] - - fixed palette-(re)scaling bug - - added -verbose and -quiet options (default now is -quiet) - - added palette-remapping to minimize size of tRNS chunk - - made Floyd-Steinberg dithering default - - changed output naming scheme to -fs8.png and -or8.png (FS or ordered dither) - -version 0.70 ------------- - - first public release diff --git a/third_party/pngquant/INSTALL b/third_party/pngquant/INSTALL deleted file mode 100644 index d18e47b3f..000000000 --- a/third_party/pngquant/INSTALL +++ /dev/null @@ -1,55 +0,0 @@ -To build pngquant from source on Mac OS X and most Linux distributions, -simply run: - - $ make - -It will create pngquant executable in the current directory. If you'd like -to install it system-wide: - - $ sudo make install - -By default it will be installed in /usr/local/bin. To install it in another -directory run `./configure --prefix=dir && make`. - -pngquant uses GNU Makefile. To compile on FreeBSD you will need to use gmake, -and on Windows the MinGW compiler (MSVC does not support C99). - -pngquant will compile with libpng 1.2, but you should use 1.5 or later. - - -##Compilation with OpenMP - - $ ./configure --with-openmp && make - -This makes pngquant faster in wall-clock time on multicore machines when one -image at a time is processed. - -However, it increases total CPU time used, and thus it's not most optimal -for server-side and parallelized batch jobs which run many pngquant -instances at a time. - -On OS X you may need to install gcc and add `CC=gcc-4.9` to `./configure`, -because clang doesn't support OpenMP (yet). - - -##Compilation without Cocoa image reader - -Mac OS X version uses Cocoa to read images. This adds support for color profiles -and other image formats as input. `./configure --without-cocoa` switches back -to libpng. - - -##Compilation with Little CMS 2 - - $ ./configure --with-lcms2 && make - -Enables support for ICC v2/v4 color profiles when reading images. -Requires Little CMS library available via `pgk-config` (e.g. install `liblcms2-dev`). - - -##Compilation of `libimagequant.a` only - -If you want to use pngquant's conversion algorithm without loading/saving PNG -files, then you can run `make` in the `lib/` directory. -The library doesn't need libpng or zlib. - diff --git a/third_party/pngquant/LICENSE b/third_party/pngquant/LICENSE deleted file mode 100644 index 120c0e92d..000000000 --- a/third_party/pngquant/LICENSE +++ /dev/null @@ -1,56 +0,0 @@ -The quantization and dithering code in pngquant is lifted from Jef Poskanzer's -'ppmquant', part of his wonderful PBMPLUS tool suite. - -Greg Roelofs hacked it into a (in his words) "slightly cheesy" 'pamquant' back -in 1997 (see http://pobox.com/~newt/greg_rgba.html) and finally he ripped out -the cheesy file-I/O parts and replaced them with nice PNG code in December -2000. The PNG reading and writing code is a merged and slightly simplified -version of readpng, readpng2, and writepng from his book "PNG: The Definitive -Guide." -In 2014 Greg has relicensed the code under the simplified BSD license. - -Note that both licenses are basically BSD-like; that is, use the code however -you like, as long as you acknowledge its origins. - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -pngquant.c: - - © 1989, 1991 by Jef Poskanzer. - - Permission to use, copy, modify, and distribute this software and its - documentation for any purpose and without fee is hereby granted, provided - that the above copyright notice appear in all copies and that both that - copyright notice and this permission notice appear in supporting - documentation. This software is provided "as is" without express or - implied warranty. - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -pngquant.c and rwpng.c/h: - - © 1997-2002 by Greg Roelofs; based on an idea by Stefan Schneider. - © 2009-2014 by Kornel Lesiński. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/third_party/pngquant/Makefile b/third_party/pngquant/Makefile deleted file mode 100644 index 14be22ee3..000000000 --- a/third_party/pngquant/Makefile +++ /dev/null @@ -1,67 +0,0 @@ --include config.mk - -BIN ?= pngquant -BINPREFIX = $(PREFIX)/bin - -OBJS = pngquant.o rwpng.o -COCOA_OBJS = rwpng_cocoa.o - -ifeq (1, $(COCOA_READER)) -OBJS += $(COCOA_OBJS) -endif - -STATICLIB = lib/libimagequant.a - -DISTFILES = *.[chm] pngquant.1 Makefile configure README.md INSTALL CHANGELOG COPYRIGHT -TARNAME = pngquant-$(VERSION) -TARFILE = $(TARNAME)-src.tar.bz2 - -LIBDISTFILES = lib/*.[ch] lib/COPYRIGHT lib/MANUAL.md lib/configure lib/Makefile - -DLL=libimagequant.dll -DLLIMP=libimagequant_dll.a -DLLDEF=libimagequant_dll.def - -all: $(BIN) - -$(STATICLIB):: config.mk - $(MAKE) -C lib static - -$(OBJS): $(wildcard *.h) config.mk - -rwpng_cocoa.o: rwpng_cocoa.m - $(CC) -Wno-enum-conversion -c $(CFLAGS) -o $@ $< || clang -Wno-enum-conversion -c -O3 -o $@ $< - -$(BIN): $(STATICLIB) $(OBJS) - $(CC) $(OBJS) $(LDFLAGS) -o $@ - -dist: $(TARFILE) - -$(TARFILE): $(DISTFILES) - rm -rf $(TARFILE) $(TARNAME) - mkdir -p $(TARNAME)/lib - cp $(DISTFILES) $(TARNAME) - cp $(LIBDISTFILES) $(TARNAME)/lib - tar -cjf $(TARFILE) --numeric-owner --exclude='._*' $(TARNAME) - rm -rf $(TARNAME) - -shasum $(TARFILE) - -install: $(BIN) - install -m 0755 -p $(BIN) $(BINPREFIX)/$(BIN) - -uninstall: - rm -f $(BINPREFIX)/$(BIN) - -clean: - rm -f $(BIN) $(OBJS) $(COCOA_OBJS) $(STATICLIB) $(TARFILE) - -distclean: clean - rm -f config.mk - -ifeq ($(filter %clean %distclean, $(MAKECMDGOALS)), ) -config.mk: - ./configure -endif - -.PHONY: all clean dist distclean dll install uninstall -.DELETE_ON_ERROR: diff --git a/third_party/pngquant/README.md b/third_party/pngquant/README.md deleted file mode 100644 index 81b33f291..000000000 --- a/third_party/pngquant/README.md +++ /dev/null @@ -1,93 +0,0 @@ -#pngquant 2 - -This is the official `pngquant` and `libimagequant`. - -[pngquant](http://pngquant.org) converts 24/32-bit RGBA PNGs to 8-bit palette with *alpha channel preserved*. -Such images are compatible with all modern browsers, and a special compatibility setting exists which helps transparency degrade well in Internet Explorer 6. - -Quantized files are often 40-70% smaller than their 24/32-bit version. - -This utility works on Linux, Mac OS X and Windows. - -##Usage - -- batch conversion of multiple files: `pngquant *.png` -- Unix-style stdin/stdout chaining: `… | pngquant - | …` - -To further reduce file size, try [optipng](http://optipng.sourceforge.net) or [ImageOptim](http://imageoptim.pornel.net). - -##Improvements since 1.0 - -Generated files are both smaller and look much better. - -* Significantly better quality of quantisation - - - more accurate remapping of semitransparent colors - - special dithering algorithm that does not add noise in well-quantized areas of the image - - uses variance instead of popularity for box selection (improvement suggested in the original median cut paper) - - feedback loop that repeats median cut for poorly quantized colors - - additional colormap improvement using Voronoi iteration - - supports much larger number of colors in input images without degradation of quality - - gamma correction (output is always generated with gamma 2.2 for web compatibility) - -* More flexible commandline usage - - - number of colors defaults to 256 - - long options and standard switches like `--` and `-` are allowed - -* Refactored and modernised code - - - C99 with no workarounds for old systems - - floating-point math used throughout - - Intel SSE optimisations - - multicore support via OpenMP - - quantization moved to standalone libimagequant - -##Options - -See `pngquant -h` for full list. - -###`--quality min-max` - -`min` and `max` are numbers in range 0 (worst) to 100 (perfect), similar to JPEG. pngquant will use the least amount of colors required to meet or exceed the `max` quality. If conversion results in quality below the `min` quality the image won't be saved (if outputting to stdin, 24-bit original will be output) and pngquant will exit with status code 99. - - pngquant --quality=65-80 image.png - -###`--ext new.png` - -Set custom extension (suffix) for output filename. By default `-or8.png` or `-fs8.png` is used. If you use `--ext=.png --force` options pngquant will overwrite input files in place (use with caution). - -###`--skip-if-larger` - -Don't write converted files if the conversion isn't worth it. - -###`--speed N` - -Speed/quality trade-off from 1 (brute-force) to 11 (fastest). The default is 3. Speed 10 has 5% lower quality, but is 8 times faster than the default. Speed 11 disables dithering and lowers compression level. - -###`--nofs` - -Disables Floyd-Steinberg dithering. - -###`--floyd=0.5` - -Controls level of dithering (0 = none, 1 = full). - -###`--posterize bits` - -Reduce precision of the palette by number of bits. Use when the image will be displayed on low-depth screens (e.g. 16-bit displays or compressed textures). - -###`--version` - -Print version information to stdout. - -###`-` - -Read image from stdin and send result to stdout. - -###`--` - -Stops processing of arguments. This allows use of file names that start with `-`. If you're using pngquant in a script, it's advisable to put this before file names: - - pngquant $OPTIONS -- "$FILE" - diff --git a/third_party/pngquant/README.third_party b/third_party/pngquant/README.third_party deleted file mode 100644 index e66fc7344..000000000 --- a/third_party/pngquant/README.third_party +++ /dev/null @@ -1,10 +0,0 @@ -URL: https://github.com/pornel/pngquant/archive/2.3.0.tar.gz -Version: 2.3.0 -License: BSD -License File: LICENSE - -Description: -A lossy PNG compressor. - -Local Modifications: -The COPYIRIGHT file is renamed LICENSE. diff --git a/third_party/pngquant/configure b/third_party/pngquant/configure deleted file mode 100755 index 5912ef082..000000000 --- a/third_party/pngquant/configure +++ /dev/null @@ -1,420 +0,0 @@ -#!/usr/bin/env bash - -CONFIG="config.mk" -PREFIX="/usr/local" -VERSION=$(grep "define PNGQUANT_VERSION" pngquant.c | grep -Eo "[12]\.[0-9.]+") - -DEBUG= -SSE=auto -OPENMP= -if [[ "$OSTYPE" =~ "darwin" ]]; then - COCOA_READER=auto - LCMS2=0 -else - COCOA_READER=0 - LCMS2=auto -fi -EXTRA_CFLAGS= -EXTRA_LDFLAGS= - -# make gcc default compiler unless CC is already set -CC=${CC:-gcc} - -help() { - printf "%4s %s\n" "" "$1" -} - -for i in "$@"; do - case $i in - --help) - echo - help "--prefix= installation directory [$PREFIX]" - help "--extra-cflags= append to CFLAGS" - help "--extra-ldflags= append to LDFLAGS" - echo - help "--enable-debug" - help "--enable-sse/--disable-sse enable/disable SSE instructions" - echo - help "--with-openmp compile with multicore support" - help "--with-lcms2/--without-lcms2 compile with color profile support" -if [[ "$OSTYPE" =~ "darwin" ]]; then - help "--with-cocoa/--without-cocoa use Cocoa framework to read images" -fi - echo - help "CC= use given compiler command" - help "CFLAGS= pass options to the compiler" - help "LDFLAGS= pass options to the linker" - echo - exit 0 - ;; - # Can be set before or after configure. Latter overrides former. - CC=*) - CC=${i#*=} - ;; - CFLAGS=*) - CFLAGS=${i#*=} - ;; - LDFLAGS=*) - LDFLAGS=${i#*=} - ;; - --enable-debug) - DEBUG=1 - ;; - --enable-sse) - SSE=1 - ;; - --disable-sse) - SSE=0 - ;; - --with-openmp) - OPENMP=1 - ;; - --with-lcms2) - LCMS2=1 - COCOA_READER=0 - ;; - --without-lcms2) - LCMS2=0 - ;; - --with-cocoa) - COCOA_READER=1 - LCMS2=0 - ;; - --without-cocoa) - COCOA_READER=0 - ;; - --prefix=*) - PREFIX=${i#*=} - ;; - # can be used multiple times or in quotes to set multiple flags - --extra-cflags=*) - EXTRA_CFLAGS="$EXTRA_CFLAGS ${i#*=}" - ;; - --extra-ldflags=*) - EXTRA_LDFLAGS="$EXTRA_LDFLAGS ${i#*=}" - ;; - *) - echo "error: unknown switch ${i%%=*} (see $0 --help for the list)" - exit 1 - ;; - esac -done - -# If someone runs sudo make install as very first command, and configure later, -# $CONFIG cannot be overwritten, and must be deleted before continuing. -if [[ -f "$CONFIG" && ! -w "$CONFIG" ]]; then - echo "Cannot overwrite file $CONFIG! Please delete it." - exit 1 -fi - -cflags() { - CFLAGS="$CFLAGS $1" -} - -lflags() { - LDFLAGS="$LDFLAGS $1" -} - -status() { - printf "%10s: %s\n" "$1" "$2" -} - -# Append to CFLAGS if compiler supports flag, with optional prerequisite. -# Fails on errors and warnings. -conditional_cflags() { - if [ -z "$("$CC" -xc -S -o /dev/null $2 $1 <(echo) 2>&1)" ]; then - cflags "$1" - fi -} - -# returns first matching file in directory -find_f() { - echo $(find "$1" -not -type d -name "$2" -print -quit 2> /dev/null) -} - -# returns first matching file in directory (no symlinks) -find_h() { - echo $(find "$1" -type f -name "$2" -print -quit 2> /dev/null) -} - -find_pkgconfig() { - LIBNAME=$1 - if pkg-config --exists "$LIBNAME" &> /dev/null; then - cflags "$(pkg-config --cflags "$LIBNAME")" - lflags "$(pkg-config --libs "$LIBNAME")" - status "$LIBNAME" "shared ($(pkg-config --modversion "$LIBNAME"))" - return 0 - fi - return 1 -} - -find_static() { - LIBNAME=$1 - HEADERPATTERN=$2 - STATICPATTERN=$3 - - HPATH=$(find_h . "$HEADERPATTERN") - if [ -n "$HPATH" ]; then - APATH=$(find_f . "$STATICPATTERN") - if [ -n "$APATH" ]; then - cflags "-I${HPATH%/*}" - lflags "${APATH}" - status "$LIBNAME" "static" - return 0 - fi - fi - return 1 -} - -find_library() { - LIBNAME=$1 - DYNAMICLIBNAME=$2 - HEADERPATTERN=$3 - STATICPATTERN=$4 - DYNAMICPATTERN=$5 - - # try static in current directory first - if find_static "$LIBNAME" "$HEADERPATTERN" "$STATICPATTERN"; then - return 0; - fi - - # try shared - if find_pkgconfig "$LIBNAME"; then - return 0 - fi - - for i in "${DIRS[@]}"; do - DIR=($i) - HPATH=$(find_h "${DIR[0]}" "$HEADERPATTERN") - if [ -n "$HPATH" ]; then - SOPATH=$(find_f "${DIR[1]}" "$DYNAMICPATTERN") - if [ -n "$SOPATH" ]; then - cflags "-I${HPATH%/*}" - lflags "-L${SOPATH%/*} -l$DYNAMICLIBNAME" - status "$LIBNAME" "shared ... $SOPATH" - return 0 - fi - fi - done - return 1 -} - -# returns full png.h version string -pngh_string() { - echo "$(grep -m1 "define PNG_LIBPNG_VER_STRING" "$1" | \ - grep -Eo '"[^"]+"' | grep -Eo '[^"]+')" -} - -# returns major minor version numbers from png.h -pngh_majmin() { - local MAJ=$(grep -m1 "define PNG_LIBPNG_VER_MAJOR" "$1" | grep -Eo "[0-9]+") - local MIN=$(grep -m1 "define PNG_LIBPNG_VER_MINOR" "$1" | grep -Eo "[0-9]+") - echo "${MAJ}${MIN}" -} - -error() { - status "$1" "error ... $2" - echo - exit 1 -} - -echo - -# basic check -if ! "$CC" -xc -std=c99 <(echo "int main(){}") -o /dev/null &> /dev/null; then - error "Compiler" "$CC is no C compiler" -fi - -status "Compiler" "$CC" - -# init flags -CFLAGS=${CFLAGS:--O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall} -cflags "-std=c99 -I." -lflags "-lm lib/libimagequant.a" - -# DEBUG -if [ -z "$DEBUG" ]; then - cflags "-DNDEBUG" - status "Debug" "no" -else - cflags "-g" - status "Debug" "yes" -fi - -# SSE -if [ "$SSE" = 'auto' ]; then - if [[ "$(uname -m)" =~ (amd|x86_)64 || - "$(grep -E -m1 "^flags" /proc/cpuinfo)" =~ "sse" ]]; then - SSE=1 - fi -fi - -if [ "$SSE" -eq 1 ]; then - status "SSE" "yes" - cflags "-DUSE_SSE=1" - cflags "-msse" - # Silence a later ICC warning due to -msse working slightly different. - conditional_cflags "-wd10121" - # Must be set explicitly for GCC on x86_32. Other compilers imply it. - conditional_cflags "-mfpmath=sse" "-msse" -elif [ "$SSE" -eq 0 ]; then - status "SSE" "no" - cflags "-DUSE_SSE=0" -fi - -# OpenMP -if [ -n "$OPENMP" ]; then - if [[ "$("$CC" -xc -E -fopenmp <(echo -e \ - "#ifdef _OPENMP - #include - #endif") 2>&1)" =~ "omp_get_thread_num" ]]; then - cflags "-fopenmp" - lflags "-fopenmp" - status "OpenMP" "yes" - else - error "OpenMP" "not supported by compiler (please install a compiler that supports OpenMP (e.g. gcc) and specify it with the CC= argument)" - fi -else - # silence warnings about omp pragmas - cflags "-Wno-unknown-pragmas" - conditional_cflags "-wd3180" # ICC - status "OpenMP" "no" -fi - -# Cocoa -if [[ "$OSTYPE" =~ "darwin" ]]; then - cflags "-mmacosx-version-min=10.6" - lflags "-mmacosx-version-min=10.6" - - if [ "$COCOA_READER" != 0 ]; then - COCOA_READER=1 - cflags "-DUSE_COCOA=1" - lflags "-framework Cocoa" - status "Cocoa" "yes" - else - status "Cocoa" "no" - fi -fi - -if [[ "$OSTYPE" =~ "darwin" ]]; then - SOLIBSUFFIX=dylib -else - SOLIBSUFFIX=so -fi - -# pairs of possible *.h and lib*.so locations -DIRS=("/usr/local/include /usr/local/lib" - "/usr/include /usr/lib") - -# libpng -SUCCESS=0 -# try static in current directory first -PNGH=$(find_h . "png.h") -if [ -n "$PNGH" ]; then - PNGH_STRING=$(pngh_string "$PNGH") - PNGH_MAJMIN=$(pngh_majmin "$PNGH") - if [[ -n "$PNGH_STRING" && -n "$PNGH_MAJMIN" ]]; then - LIBPNGA=$(find_f . "libpng${PNGH_MAJMIN}.a") - if [ -n "$LIBPNGA" ]; then - cflags "-I${PNGH%/*}" - lflags "${LIBPNGA}" - status "libpng" "static (${PNGH_STRING})" - SUCCESS=1 - fi - fi -fi -# try shared -if [ "$SUCCESS" -eq 0 ]; then - if find_pkgconfig libpng; then - SUCCESS=1 - else - for i in "${DIRS[@]}"; do - DIR=($i) - PNGH=$(find_h "${DIR[0]}" "png.h") - if [ -n "$PNGH" ]; then - PNGH_STRING=$(pngh_string "$PNGH") - PNGH_MAJMIN=$(pngh_majmin "$PNGH") - if [[ -n "$PNGH_STRING" && -n "$PNGH_MAJMIN" ]]; then - LIBPNGSO=$(find_f "${DIR[1]}" "libpng${PNGH_MAJMIN}.$SOLIBSUFFIX*") - if [ -n "$LIBPNGSO" ]; then - cflags "-I${PNGH%/*}" - lflags "-L${LIBPNGSO%/*} -lpng${PNGH_MAJMIN}" - status "libpng" "shared (${PNGH_STRING})" - SUCCESS=1 - break - fi - fi - fi - done - fi -fi -if [ "$SUCCESS" -eq 0 ]; then - if [[ "$OSTYPE" =~ "darwin" ]]; then - LIBPNGCOMMAND='`brew install libpng`' - else - LIBPNGCOMMAND='`apt-get install libpng-dev` or `yum install libpng-devel`' - fi - error "libpng" "not found (try: $LIBPNGCOMMAND)" -fi - -# zlib -if ! find_library "zlib" "z" "zlib.h" "libz.a" "libz.$SOLIBSUFFIX*"; then - error "zlib" "not found (please install zlib-devel package)" -fi - -# lcms2 -if [ "$LCMS2" != 0 ]; then - if find_library "lcms2" "lcms2" "lcms2.h" "liblcms2.a" "liblcms2.$SOLIBSUFFIX*"; then - cflags "-DUSE_LCMS=1" - else - if [ "$LCMS2" = 'auto' ]; then - status "lcms2" "no" - else - error "lcms2" "not found (please install libcms2-devel package)" - fi - fi -else - status "lcms2" "no" -fi - -echo - -# As of GCC 4.5, 387 fp math is significantly slower in C99 mode without this. -# Note: CPUs without SSE2 use 387 for doubles, even when SSE fp math is set. -conditional_cflags "-fexcess-precision=fast" - -# Intel C++ Compiler - -# ICC does usually only produce fast(er) code when it can optimize to the full -# capabilites of the (Intel) CPU. This is equivalent to -march=native for GCC. -conditional_cflags "-xHOST" - -# Disable unsafe fp optimizations and enforce fp precision as set in the source. -conditional_cflags "-fp-model source" - -# Silence a gold linker warning about string misalignment. -conditional_cflags "-falign-stack=maintain-16-byte" - -lflags "-lm" # Ubuntu requires this library last, issue #38 - -if [ -n "$EXTRA_CFLAGS" ]; then - cflags "$EXTRA_CFLAGS" -fi - -if [ -n "$EXTRA_LDFLAGS" ]; then - lflags "$EXTRA_LDFLAGS" -fi - -# Overwrite previous configuration. -echo " -# auto-generated by configure -PREFIX = $PREFIX -VERSION = $VERSION -CC = $CC -CFLAGS = $CFLAGS -LDFLAGS = $LDFLAGS -COCOA_READER = $COCOA_READER -" > "$CONFIG" - -# Configure static library the same way -cp "$CONFIG" lib/ diff --git a/third_party/pngquant/lib/COPYRIGHT b/third_party/pngquant/lib/COPYRIGHT deleted file mode 100644 index 98de36b4d..000000000 --- a/third_party/pngquant/lib/COPYRIGHT +++ /dev/null @@ -1,36 +0,0 @@ -© 1997-2002 by Greg Roelofs; based on an idea by Stefan Schneider. -© 2009-2014 by Kornel Lesiński. - -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -© 1989, 1991 by Jef Poskanzer. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. This software is provided "as is" without express or -implied warranty. diff --git a/third_party/pngquant/lib/MANUAL.md b/third_party/pngquant/lib/MANUAL.md deleted file mode 100644 index 0a93ab63e..000000000 --- a/third_party/pngquant/lib/MANUAL.md +++ /dev/null @@ -1,466 +0,0 @@ -# libimagequant—Image Quantization Library - -Small, portable C library for high-quality conversion of RGBA images to 8-bit indexed-color (palette) images. -It's powering [pngquant2](http://pngquant.org). - -## License - -[BSD](https://raw.github.com/pornel/improved-pngquant/master/lib/COPYRIGHT). -It can be linked with both free and closed-source software. - -## Download - -The [library](http://pngquant.org/lib) is currently a part of the [pngquant2 project](https://github.com/pornel/improved-pngquant/tree/lib/lib). - -Files needed for the library are only in the `lib/` directory inside the repository (and you can ignore the rest). - -## Compiling and Linking - -The library can be linked with ANSI C and C++ programs. It has no external dependencies. - -To build on Unix-like systems run: - - make -C lib - -it will create `lib/libimagequant.a` which you can link with your program. - - gcc yourprogram.c /path/to/lib/libimagequant.a - -On BSD, use `gmake` (GNU make) rather than the native `make`. - -Alternatively you can compile the library with your program simply by including all `.c` files (and define `NDEBUG` to get a fast version): - - gcc -std=c99 -O3 -DNDEBUG lib/*.c yourprogram.c - -### Compiling on Windows/Visual Studio - -The library can be compiled with any C compiler that has at least basic support for C99 (GCC, clang, ICC, C++ Builder, even Tiny C Compiler), but Visual Studio 2012 and older are not up to date with the 1999 C standard. There are 2 options for using `libimagequant` on Windows: - - * Use Visual Studio **2013** (MSVC 18) and an [MSVC-compatible branch of the library](https://github.com/pornel/pngquant/tree/msvc/lib) - * Or use GCC from [MinGW](http://www.mingw.org). Use GCC to build `libimagequant.a` (using the instructions above for Unix) and add it along with `libgcc.a` (shipped with the MinGW compiler) to your VC project. - -## Overview - -The basic flow is: - -1. Create attributes object and configure the library. -2. Create image object from RGBA bitmap or data source. -3. Perform quantization (generate palette). -4. Store remapped image and final palette. -5. Free memory. - -

- - #include "lib/libimagequant.h" - - liq_attr *attr = liq_attr_create(); - liq_image *image = liq_image_create_rgba(attr, bitmap, width, height, 0); - liq_result *res = liq_quantize_image(attr, image); - - liq_write_remapped_image(res, image, bitmap, bitmap_size); - const liq_palette *pal = liq_get_palette(res); - - // use image and palette here - - liq_attr_destroy(attr); - liq_image_destroy(image); - liq_result_destroy(res); - -Functions returning `liq_error` return `LIQ_OK` (`0`) on success and non-zero on error. - -It's safe to pass `NULL` to any function accepting `liq_attr`, `liq_image`, `liq_result` (in that case the error code `LIQ_INVALID_POINTER` will be returned). These objects can be reused multiple times. - -There are 3 ways to create image object for quantization: - - * `liq_image_create_rgba()` for simple, contiguous RGBA bitmaps (width×height×4 bytes large array). - * `liq_image_create_rgba_rows()` for non-contiguous RGBA bitmaps (that have padding between rows or reverse order, e.g. BMP). - * `liq_image_create_custom()` for RGB, ABGR, YUV and all other formats that can be converted on-the-fly to RGBA (you have to supply the conversion function). - -## Functions - ----- - - liq_attr* liq_attr_create(void); - -Returns object that will hold initial settings (attributes) for the library. The object should be freed using `liq_attr_destroy()` after it's no longer needed. - -Returns `NULL` in the unlikely case that the library cannot run on the current machine (e.g. the library has been compiled for SSE-capable x86 CPU and run on VIA C3 CPU). - ----- - - liq_error liq_set_max_colors(liq_attr* attr, int colors); - -Specifies maximum number of colors to use. The default is 256. Instead of setting a fixed limit it's better to use `liq_set_quality()`. - -Returns `LIQ_VALUE_OUT_OF_RANGE` if number of colors is outside the range 2-256. - ----- - - int liq_get_max_colors(liq_attr* attr); - -Returns the value set by `liq_set_max_colors()`. - ----- - - liq_error liq_set_quality(liq_attr* attr, int minimum, int maximum); - -Quality is in range `0` (worst) to `100` (best) and values are analoguous to JPEG quality (i.e. `80` is usually good enough). - -Quantization will attempt to use the lowest number of colors needed to achieve `maximum` quality. `maximum` value of `100` is the default and means conversion as good as possible. - -If it's not possible to convert the image with at least `minimum` quality (i.e. 256 colors is not enough to meet the minimum quality), then `liq_quantize_image()` will fail. The default minumum is `0` (proceeds regardless of quality). - -Quality measures how well the generated palette fits image given to `liq_quantize_image()`. If a different image is remapped with `liq_write_remapped_image()` then actual quality may be different. - -Regardless of the quality settings the number of colors won't exceed the maximum (see `liq_set_max_colors()`). - -Returns `LIQ_VALUE_OUT_OF_RANGE` if target is lower than minimum or any of them is outside the 0-100 range. -Returns `LIQ_INVALID_POINTER` if `attr` appears to be invalid. - - liq_attr *attr = liq_attr_create(); - liq_set_quality(attr, 50, 80); // use quality 80 if possible. Give up if quality drops below 50. - ----- - - int liq_get_min_quality(liq_attr* attr); - -Returns the lower bound set by `liq_set_quality()`. - ----- - - int liq_get_max_quality(liq_attr* attr); - -Returns the upper bound set by `liq_set_quality()`. - ----- - - liq_image *liq_image_create_rgba(liq_attr *attr, void* bitmap, int width, int height, double gamma); - -Creates image object that represents a bitmap later used for quantization and remapping. The bitmap must be contiguous run of RGBA pixels (alpha is the last component, 0 = transparent, 255 = opaque). - -The bitmap must not be modified or freed until this object is freed with `liq_image_destroy()`. See also `liq_image_set_memory_ownership()`. - -`width` and `height` are dimensions in pixels. An image 10x10 pixel large will need 400-byte bitmap. - -`gamma` can be `0` for images with the typical 1/2.2 [gamma](http://en.wikipedia.org/wiki/Gamma_correction). -Otherwise `gamma` must be > 0 and < 1, e.g. `0.45455` (1/2.2) or `0.55555` (1/1.8). Generated palette will use the same gamma unless `liq_set_output_gamma()` is used. If `liq_set_output_gamma` is not used, then it only affects whether brighter or darker areas of the image will get more palette colors allocated. - -Returns `NULL` on failure, e.g. if `bitmap` is `NULL` or `width`/`height` is <= 0. - ----- - - liq_image *liq_image_create_rgba_rows(liq_attr *attr, void* rows[], int width, int height, double gamma); - -Same as `liq_image_create_rgba()`, but takes array of pointers to rows in the bitmap. This allows defining bitmaps with reversed rows (like in BMP), "stride" different than width or using only fragment of a larger bitmap, etc. - -`rows` array must have at least `height` elements and each row must be at least `width` RGBA pixels wide. - - unsigned char *bitmap = …; - void *rows = malloc(height * sizeof(void*)); - int bytes_per_row = width * 4 + padding; // stride - for(int i=0; i < height; i++) { - rows[i] = bitmap + i * bytes_per_row; - } - liq_image *img = liq_image_create_rgba_rows(attr, rows, width, height, 0); - // … - liq_image_destroy(img); - free(rows); - -The row pointers and bitmap must not be modified or freed until this object is freed with `liq_image_destroy()` (you can change that with `liq_image_set_memory_ownership()`). - -See also `liq_image_create_rgba()` and `liq_image_create_custom()`. - ----- - - liq_result *liq_quantize_image(liq_attr *attr, liq_image *input_image); - -Performs quantization (palette generation) based on settings in `attr` and pixels of the image. - -Returns `NULL` if quantization fails, e.g. due to limit set in `liq_set_quality()`. - -See `liq_write_remapped_image()`. - ----- - - liq_error liq_set_dithering_level(liq_result *res, float dither_level); - -Enables/disables dithering in `liq_write_remapped_image()`. Dithering level must be between `0` and `1` (inclusive). Dithering level `0` enables fast non-dithered remapping. Otherwise a variation of Floyd-Steinberg error diffusion is used. - -Precision of the dithering algorithm depends on the speed setting, see `liq_set_speed()`. - -Returns `LIQ_VALUE_OUT_OF_RANGE` if the dithering level is outside the 0-1 range. - ----- - - liq_error liq_write_remapped_image(liq_result *result, liq_image *input_image, void *buffer, size_t buffer_size); - -Remaps the image to palette and writes its pixels to the given buffer, 1 pixel per byte. Buffer must be large enough to fit the entire image, i.e. width×height bytes large. For safety, pass size of the buffer as `buffer_size`. - -For best performance call `liq_get_palette()` *after* this function, as palette is improved during remapping. - -Returns `LIQ_BUFFER_TOO_SMALL` if given size of the buffer is not enough to fit the entire image. - - int buffer_size = width*height; - char *buffer = malloc(buffer_size); - if (LIQ_OK == liq_write_remapped_image(result, input_image, buffer, buffer_size)) { - liq_palette *pal = liq_get_palette(result); - // save image - } - -See `liq_get_palette()` and `liq_write_remapped_image_rows()`. - ----- - - const liq_palette *liq_get_palette(liq_result *result); - -Returns pointer to palette optimized for image that has been quantized or remapped (final refinements are applied to the palette during remapping). - -It's valid to call this method before remapping, if you don't plan to remap any images or want to use same palette for multiple images. - -`liq_palette->count` contains number of colors (up to 256), `liq_palette->entries[n]` contains RGBA value for nth palette color. - -The palette is **temporary and read-only**. You must copy the palette elsewhere *before* calling `liq_result_destroy()`. - -Returns `NULL` on error. - ----- - - void liq_attr_destroy(liq_attr *); - void liq_image_destroy(liq_image *); - void liq_result_destroy(liq_result *); - -Releases memory owned by the given object. Object must not be used any more after it has been freed. - -Freeing `liq_result` also frees any `liq_palette` obtained from it. - -## Advanced Functions - ----- - - liq_error liq_set_speed(liq_attr* attr, int speed); - -Higher speed levels disable expensive algorithms and reduce quantization precision. The default speed is `3`. Speed `1` gives marginally better quality at significant CPU cost. Speed `10` has usually 5% lower quality, but is 8 times faster than the default. - -High speeds combined with `liq_set_quality()` will use more colors than necessary and will be less likely to meet minimum required quality. - - - - - - -
Features dependent on speed
Noise-sensitive ditheringspeed 1 to 5
Forced posterization8-10 or if image has more than million colors
Quantization error known1-7 or if minimum quality is set
Additional quantization techniques1-6
- -Returns `LIQ_VALUE_OUT_OF_RANGE` if the speed is outside the 1-10 range. - ----- - - int liq_get_speed(liq_attr* attr); - -Returns the value set by `liq_set_speed()`. - ----- - - liq_error liq_set_min_opacity(liq_attr* attr, int min); - -Alpha values higher than this will be rounded to opaque. This is a workaround for Internet Explorer 6 that truncates semitransparent values to completely transparent. The default is `255` (no change). 238 is a suggested value. - -Returns `LIQ_VALUE_OUT_OF_RANGE` if the value is outside the 0-255 range. - ----- - - int liq_get_min_opacity(liq_attr* attr); - -Returns the value set by `liq_set_min_opacity()`. - ----- - - liq_set_min_posterization(liq_attr* attr, int bits); - -Ignores given number of least significant bits in all channels, posterizing image to `2^bits` levels. `0` gives full quality. Use `2` for VGA or 16-bit RGB565 displays, `4` if image is going to be output on a RGB444/RGBA4444 display (e.g. low-quality textures on Android). - -Returns `LIQ_VALUE_OUT_OF_RANGE` if the value is outside the 0-4 range. - ----- - - int liq_get_min_posterization(liq_attr* attr); - -Returns the value set by `liq_set_min_posterization()`. - ----- - - liq_set_last_index_transparent(liq_attr* attr, int is_last); - -`0` (default) makes alpha colors sorted before opaque colors. Non-`0` mixes colors together except completely transparent color, which is moved to the end of the palette. This is a workaround for programs that blindly assume the last palette entry is transparent. - ----- - - liq_image *liq_image_create_custom(liq_attr *attr, liq_image_get_rgba_row_callback *row_callback, void *user_info, int width, int height, double gamma); - -

- - void image_get_rgba_row_callback(liq_color row_out[], int row_index, int width, void *user_info) { - for(int column_index=0; column_index < width; column_index++) { - row_out[column_index] = /* generate pixel at (row_index, column_index) */; - } - } - -Creates image object that will use callback to read image data. This allows on-the-fly conversion of images that are not in the RGBA color space. - -`user_info` value will be passed to the callback. It may be useful for storing pointer to program's internal representation of the image. - -The callback must read/generate `row_index`-th row and write its RGBA pixels to the `row_out` array. Row `width` is given for convenience and will always equal to image width. - -The callback will be called multiple times for each row. Quantization and remapping require at least two full passes over image data, so caching of callback's work makes no sense — in such case it's better to convert entire image and use `liq_image_create_rgba()` instead. - -To use RGB image: - - void rgb_to_rgba_callback(liq_color row_out[], int row_index, int width, void *user_info) { - unsigned char *rgb_row = ((unsigned char *)user_info) + 3*width*row_index; - - for(int i=0; i < width; i++) { - row_out[i].r = rgb_row[i*3]; - row_out[i].g = rgb_row[i*3+1]; - row_out[i].b = rgb_row[i*3+2]; - row_out[i].a = 255; - } - } - liq_image *img = liq_image_create_custom(attr, rgb_to_rgba_callback, rgb_bitmap, width, height, 0); - -The library doesn't support RGB bitmaps "natively", because supporting only single format allows compiler to inline more code, 4-byte pixel alignment is faster, and SSE instructions operate on 4 values at once, so alpha support is almost free. - ----- - - liq_error liq_image_set_memory_ownership(liq_image *image, int ownership_flags); - -Passes ownership of bitmap and/or rows memory to the `liq_image` object, so you don't have to free it yourself. Memory owned by the object will be freed at its discretion with `free` function specified in `liq_attr_create_with_allocator()` (by default it's stdlib's `free()`). - -* `LIQ_OWN_PIXELS` makes bitmap owned by the object. The bitmap will be freed automatically at any point when it's no longer needed. If you set this flag you must **not** free the bitmap yourself. If the image has been created with `liq_image_create_rgba_rows()` then the bitmap address is assumed to be the lowest address of any row. - -* `LIQ_OWN_ROWS` makes array of row pointers (but not bitmap pointed by these rows) owned by the object. Rows will be freed when object is deallocated. If you set this flag you must **not** free the rows array yourself. This flag is valid only if the object has been created with `liq_image_create_rgba_rows()`. - -These flags can be combined with binary *or*, i.e. `LIQ_OWN_PIXELS | LIQ_OWN_ROWS`. - -This function must not be used if the image has been created with `liq_image_create_custom()`. - -Returns `LIQ_VALUE_OUT_OF_RANGE` if invalid flags are specified or image is not backed by a bitmap. - ----- - - liq_error liq_write_remapped_image_rows(liq_result *result, liq_image *input_image, unsigned char **row_pointers); - -Similar to `liq_write_remapped_image()`. Writes remapped image, at 1 byte per pixel, to each row pointed by `row_pointers` array. The array must have at least as many elements as height of the image, and each row must have at least as many bytes as width of the image. Rows must not overlap. - -For best performance call `liq_get_palette()` *after* this function, as remapping may change the palette. - -Returns `LIQ_INVALID_POINTER` if `result` or `input_image` is `NULL`. - ----- - - double liq_get_quantization_error(liq_result *result); - -Returns mean square error of quantization (square of difference between pixel values in the original image and remapped image). Alpha channel and gamma correction are taken into account, so the result isn't exactly the mean square error of all channels. - -For most images MSE 1-5 is excellent. 7-10 is OK. 20-30 will have noticeable errors. 100 is awful. - -This function should be called *after* `liq_write_remapped_image()`. It may return `-1` if the value is not available (this is affected by `liq_set_speed()` and `liq_set_quality()`). - ----- - - double liq_get_quantization_quality(liq_result *result); - -Analoguous to `liq_get_quantization_error()`, but returns quantization error as quality value in the same 0-100 range that is used by `liq_set_quality()`. - -This function should be called *after* `liq_write_remapped_image()`. It may return `-1` if the value is not available (this is affected by `liq_set_speed()` and `liq_set_quality()`). - -This function can be used to add upper limit to quality options presented to the user, e.g. - - liq_attr *attr = liq_attr_create(); - liq_image *img = liq_image_create_rgba(…); - liq_result *res = liq_quantize_image(attr, img); - int max_attainable_quality = liq_get_quantization_quality(res); - printf("Please select quality between 0 and %d: ", max_attainable_quality); - int user_selected_quality = prompt(); - if (user_selected_quality < max_attainable_quality) { - liq_set_quality(user_selected_quality, 0); - liq_result_destroy(res); - res = liq_quantize_image(attr, img); - } - liq_write_remapped_image(…); - ----- - - void liq_set_log_callback(liq_attr*, liq_log_callback_function*, void *user_info); - -

- - void log_callback_function(const liq_attr*, const char *message, void *user_info) {} - ----- - - void liq_set_log_flush_callback(liq_attr*, liq_log_flush_callback_function*, void *user_info); -

- - void log_flush_callback_function(const liq_attr*, void *user_info) {} - -Sets up callback function to be called when the library reports work progress or errors. The callback must not call any library functions. - -`user_info` value will be passed to the callback. - -`NULL` callback clears the current callback. - -In the log callback the `message` is a zero-terminated string containing informative message to output. It is valid only until the callback returns. - -`liq_set_log_flush_callback()` sets up callback function that will be called after the last log callback, which can be used to flush buffers and free resources used by the log callback. - ----- - - liq_attr* liq_attr_create_with_allocator(void* (*malloc)(size_t), void (*free)(void*)); - -Same as `liq_attr_create`, but uses given `malloc` and `free` replacements to allocate all memory used by the library. - -The `malloc` function must return 16-byte aligned memory on x86 (and on other architectures memory aligned for `double` and pointers). Conversely, if your stdlib's `malloc` doesn't return appropriately aligned memory, you should use this function to provide aligned replacements. - ----- - - liq_attr* liq_attr_copy(liq_attr *orig); - -Creates an independent copy of `liq_attr`. The copy should also be freed using `liq_attr_destroy()`. - ---- - - liq_error liq_set_output_gamma(liq_result* res, double gamma); - -Sets gamma correction for generated palette and remapped image. Must be > 0 and < 1, e.g. `0.45455` for gamma 1/2.2 in PNG images. By default output gamma is same as gamma of the input image. - ----- - - int liq_image_get_width(const liq_image *img); - int liq_image_get_height(const liq_image *img); - double liq_get_output_gamma(const liq_result *result); - -Getters for `width`, `height` and `gamma` of the input image. - -If the input is invalid, these all return -1. - -## Multithreading - -The library is stateless and doesn't use any global or thread-local storage. It doesn't use any locks. - -* Different threads can perform unrelated quantizations/remappings at the same time (e.g. each thread working on a different image). -* The same `liq_attr`, `liq_result`, etc. can be accessed from different threads, but not at the same time (e.g. you can create `liq_attr` in one thread and free it in another). - -The library needs to sort unique colors present in the image. Although the sorting algorithm does few things to make stack usage minimal in typical cases, there is no guarantee against extremely degenerate cases, so threads should have automatically growing stack. - -### OpenMP - -The library will parallelize some operations if compiled with OpenMP. - -You must not increase number of maximum threads after `liq_image` has been created, as it allocates some per-thread buffers. - -Callback of `liq_image_create_custom()` may be called from different threads at the same time. - -## Acknowledgements - -Thanks to Irfan Skiljan for helping test the first version of the library. - -The library is developed by [Kornel Lesiński](mailto:%20kornel@pngquant.org). diff --git a/third_party/pngquant/lib/Makefile b/third_party/pngquant/lib/Makefile deleted file mode 100644 index 2924784d2..000000000 --- a/third_party/pngquant/lib/Makefile +++ /dev/null @@ -1,55 +0,0 @@ --include config.mk - -STATICLIB=libimagequant.a - -DLL=libimagequant.dll -DLLIMP=libimagequant_dll.a -DLLDEF=libimagequant_dll.def - -OBJS = pam.o mediancut.o blur.o mempool.o viter.o nearest.o libimagequant.o - -BUILD_CONFIGURATION="$(CC) $(CFLAGS) $(LDFLAGS)" - -DISTFILES = $(OBJS:.o=.c) *.h MANUAL.md COPYRIGHT Makefile configure -TARNAME = libimagequant-$(VERSION) -TARFILE = $(TARNAME)-src.tar.bz2 - -all: static - -static: $(STATICLIB) - -dll: - $(MAKE) CFLAGSADD="-DLIQ_EXPORT='__declspec(dllexport)'" $(DLL) - - -$(DLL) $(DLLIMP): $(OBJS) - $(CC) -fPIC -shared -o $(DLL) $(OBJS) $(LDFLAGS) -Wl,--out-implib,$(DLLIMP),--output-def,$(DLLDEF) - -$(STATICLIB): $(OBJS) - $(AR) $(ARFLAGS) $@ $^ - -$(OBJS): $(wildcard *.h) config.mk - -dist: $(TARFILE) - -$(TARFILE): $(DISTFILES) - rm -rf $(TARFILE) $(TARNAME) - mkdir $(TARNAME) - cp $(DISTFILES) $(TARNAME) - tar -cjf $(TARFILE) --numeric-owner --exclude='._*' $(TARNAME) - rm -rf $(TARNAME) - -shasum $(TARFILE) - -clean: - rm -f $(OBJS) $(STATICLIB) $(TARFILE) $(DLL) $(DLLIMP) $(DLLDEF) - -distclean: clean - rm -f config.mk - -ifeq ($(filter %clean %distclean, $(MAKECMDGOALS)), ) -config.mk: - ./configure -endif - -.PHONY: all static clean dist distclean dll -.DELETE_ON_ERROR: diff --git a/third_party/pngquant/lib/blur.c b/third_party/pngquant/lib/blur.c deleted file mode 100644 index 9158ad49b..000000000 --- a/third_party/pngquant/lib/blur.c +++ /dev/null @@ -1,112 +0,0 @@ - -#include "libimagequant.h" -#include "pam.h" -#include "blur.h" - -/* - Blurs image horizontally (width 2*size+1) and writes it transposed to dst (called twice gives 2d blur) - */ -static void transposing_1d_blur(unsigned char *restrict src, unsigned char *restrict dst, unsigned int width, unsigned int height, const unsigned int size) -{ - for(unsigned int j=0; j < height; j++) { - unsigned char *restrict row = src + j*width; - - // accumulate sum for pixels outside line - unsigned int sum; - sum = row[0]*size; - for(unsigned int i=0; i < size; i++) { - sum += row[i]; - } - - // blur with left side outside line - for(unsigned int i=0; i < size; i++) { - sum -= row[0]; - sum += row[i+size]; - - dst[i*height + j] = sum / (size*2); - } - - for(unsigned int i=size; i < width-size; i++) { - sum -= row[i-size]; - sum += row[i+size]; - - dst[i*height + j] = sum / (size*2); - } - - // blur with right side outside line - for(unsigned int i=width-size; i < width; i++) { - sum -= row[i-size]; - sum += row[width-1]; - - dst[i*height + j] = sum / (size*2); - } - } -} - -/** - * Picks maximum of neighboring pixels (blur + lighten) - */ -LIQ_PRIVATE void liq_max3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height) -{ - for(unsigned int j=0; j < height; j++) { - const unsigned char *row = src + j*width, - *prevrow = src + (j > 1 ? j-1 : 0)*width, - *nextrow = src + MIN(height-1,j+1)*width; - - unsigned char prev,curr=row[0],next=row[0]; - - for(unsigned int i=0; i < width-1; i++) { - prev=curr; - curr=next; - next=row[i+1]; - - unsigned char t1 = MAX(prev,next); - unsigned char t2 = MAX(nextrow[i],prevrow[i]); - *dst++ = MAX(curr,MAX(t1,t2)); - } - unsigned char t1 = MAX(curr,next); - unsigned char t2 = MAX(nextrow[width-1],prevrow[width-1]); - *dst++ = MAX(t1,t2); - } -} - -/** - * Picks minimum of neighboring pixels (blur + darken) - */ -LIQ_PRIVATE void liq_min3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height) -{ - for(unsigned int j=0; j < height; j++) { - const unsigned char *row = src + j*width, - *prevrow = src + (j > 1 ? j-1 : 0)*width, - *nextrow = src + MIN(height-1,j+1)*width; - - unsigned char prev,curr=row[0],next=row[0]; - - for(unsigned int i=0; i < width-1; i++) { - prev=curr; - curr=next; - next=row[i+1]; - - unsigned char t1 = MIN(prev,next); - unsigned char t2 = MIN(nextrow[i],prevrow[i]); - *dst++ = MIN(curr,MIN(t1,t2)); - } - unsigned char t1 = MIN(curr,next); - unsigned char t2 = MIN(nextrow[width-1],prevrow[width-1]); - *dst++ = MIN(t1,t2); - } -} - -/* - Filters src image and saves it to dst, overwriting tmp in the process. - Image must be width*height pixels high. Size controls radius of box blur. - */ -LIQ_PRIVATE void liq_blur(unsigned char *src, unsigned char *tmp, unsigned char *dst, unsigned int width, unsigned int height, unsigned int size) -{ - assert(size > 0); - if (width < 2*size+1 || height < 2*size+1) { - return; - } - transposing_1d_blur(src, tmp, width, height, size); - transposing_1d_blur(tmp, dst, height, width, size); -} diff --git a/third_party/pngquant/lib/blur.h b/third_party/pngquant/lib/blur.h deleted file mode 100644 index 06ae8cb49..000000000 --- a/third_party/pngquant/lib/blur.h +++ /dev/null @@ -1,4 +0,0 @@ - -LIQ_PRIVATE void liq_blur(unsigned char *src, unsigned char *tmp, unsigned char *dst, unsigned int width, unsigned int height, unsigned int size); -LIQ_PRIVATE void liq_max3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height); -LIQ_PRIVATE void liq_min3(unsigned char *src, unsigned char *dst, unsigned int width, unsigned int height); diff --git a/third_party/pngquant/lib/configure b/third_party/pngquant/lib/configure deleted file mode 100755 index 136f7e953..000000000 --- a/third_party/pngquant/lib/configure +++ /dev/null @@ -1,206 +0,0 @@ -#!/usr/bin/env bash - -CONFIG="config.mk" -PREFIX="/usr/local" -VERSION=$(grep "define PNGQUANT_VERSION" ../pngquant.c | grep -Eo "[12]\.[0-9.]+") - -DEBUG= -SSE=auto -OPENMP= -EXTRA_CFLAGS= -EXTRA_LDFLAGS= - -# make gcc default compiler unless CC is already set -CC=${CC:-gcc} - -help() { - printf "%4s %s\n" "" "$1" -} - -for i in "$@"; do - case $i in - --help) - echo - help "--prefix= installation directory [$PREFIX]" - help "--extra-cflags= append to CFLAGS" - help "--extra-ldflags= append to LDFLAGS" - echo - help "--enable-debug" - help "--enable-sse/--disable-sse enable/disable SSE instructions" - echo - help "--with-openmp compile with multicore support" - echo - exit 0 - ;; - # Can be set before or after configure. Latter overrides former. - CC=*) - CC=${i#*=} - ;; - CFLAGS=*) - CFLAGS=${i#*=} - ;; - LDFLAGS=*) - LDFLAGS=${i#*=} - ;; - --enable-debug) - DEBUG=1 - ;; - --enable-sse) - SSE=1 - ;; - --disable-sse) - SSE=0 - ;; - --with-openmp) - OPENMP=1 - ;; - --prefix=*) - PREFIX=${i#*=} - ;; - # can be used multiple times or in quotes to set multiple flags - --extra-cflags=*) - EXTRA_CFLAGS="$EXTRA_CFLAGS ${i#*=}" - ;; - --extra-ldflags=*) - EXTRA_LDFLAGS="$EXTRA_LDFLAGS ${i#*=}" - ;; - *) - echo "error: unknown switch ${i%%=*}" - exit 1 - ;; - esac -done - -# If someone runs sudo make install as very first command, and configure later, -# $CONFIG cannot be overwritten, and must be deleted before continuing. -if [[ -f "$CONFIG" && ! -w "$CONFIG" ]]; then - echo "Cannot overwrite file $CONFIG! Please delete it." - exit 1 -fi - -cflags() { - CFLAGS="$CFLAGS $1" -} - -lflags() { - LDFLAGS="$LDFLAGS $1" -} - -status() { - printf "%10s: %s\n" "$1" "$2" -} - -# Append to CFLAGS if compiler supports flag, with optional prerequisite. -# Fails on errors and warnings. -conditional_cflags() { - if [ -z "$("$CC" -xc -S -o /dev/null $2 $1 <(echo) 2>&1)" ]; then - cflags "$1" - fi -} - -error() { - status "$1" "error ... $2" - echo - exit 1 -} - -echo - -# basic check -if ! "$CC" -xc -std=c99 <(echo "int main(){}") -o /dev/null &> /dev/null; then - error "Compiler" "$CC is no C compiler" -fi - -status "Compiler" "$CC" - -# init flags -CFLAGS=${CFLAGS:--O3 -fno-math-errno -funroll-loops -fomit-frame-pointer -Wall} -cflags "-std=c99 -I." -lflags "-lm lib/libimagequant.a" - -# DEBUG -if [ -z "$DEBUG" ]; then - cflags "-DNDEBUG" - status "Debug" "no" -else - cflags "-g" - status "Debug" "yes" -fi - -# SSE -if [ "$SSE" = 'auto' ]; then - if [[ "$(uname -m)" =~ (amd|x86_)64 || - "$(grep -E -m1 "^flags" /proc/cpuinfo)" =~ "sse" ]]; then - SSE=1 - fi -fi - -if [ "$SSE" -eq 1 ]; then - status "SSE" "yes" - cflags "-DUSE_SSE=1" - cflags "-msse" - # Silence a later ICC warning due to -msse working slightly different. - conditional_cflags "-wd10121" - # Must be set explicitly for GCC on x86_32. Other compilers imply it. - conditional_cflags "-mfpmath=sse" "-msse" -elif [ "$SSE" -eq 0 ]; then - status "SSE" "no" - cflags "-DUSE_SSE=0" -fi - -# OpenMP -if [ -n "$OPENMP" ]; then - if [[ "$("$CC" -xc -E -fopenmp <(echo -e \ - "#ifdef _OPENMP - #include - #endif") 2>&1)" =~ "omp_get_thread_num" ]]; then - cflags "-fopenmp" - lflags "-fopenmp" - status "OpenMP" "yes" - else - error "OpenMP" "not supported by compiler" - fi -else - # silence warnings about omp pragmas - cflags "-Wno-unknown-pragmas" - conditional_cflags "-wd3180" # ICC - status "OpenMP" "no" -fi - -echo - -# As of GCC 4.5, 387 fp math is significantly slower in C99 mode without this. -# Note: CPUs without SSE2 use 387 for doubles, even when SSE fp math is set. -conditional_cflags "-fexcess-precision=fast" - -# Intel C++ Compiler - -# ICC does usually only produce fast(er) code when it can optimize to the full -# capabilites of the (Intel) CPU. This is equivalent to -march=native for GCC. -conditional_cflags "-xHOST" - -# Disable unsafe fp optimizations and enforce fp precision as set in the source. -conditional_cflags "-fp-model source" - -# Silence a gold linker warning about string misalignment. -conditional_cflags "-falign-stack=maintain-16-byte" - -lflags "-lm" # Ubuntu requires this library last, issue #38 - -if [ -n "$EXTRA_CFLAGS" ]; then - cflags "$EXTRA_CFLAGS" -fi - -if [ -n "$EXTRA_LDFLAGS" ]; then - lflags "$EXTRA_LDFLAGS" -fi - -# Overwrite previous configuration. -echo " -# auto-generated by configure -PREFIX = $PREFIX -VERSION = $VERSION -CC = $CC -CFLAGS = $CFLAGS -LDFLAGS = $LDFLAGS -" > $CONFIG diff --git a/third_party/pngquant/lib/libimagequant.c b/third_party/pngquant/lib/libimagequant.c deleted file mode 100644 index 172e1de17..000000000 --- a/third_party/pngquant/lib/libimagequant.c +++ /dev/null @@ -1,1637 +0,0 @@ -/* pngquant.c - quantize the colors in an alphamap down to a specified number -** -** Copyright (C) 1989, 1991 by Jef Poskanzer. -** Copyright (C) 1997, 2000, 2002 by Greg Roelofs; based on an idea by -** Stefan Schneider. -** © 2009-2013 by Kornel Lesinski. -** -** Permission to use, copy, modify, and distribute this software and its -** documentation for any purpose and without fee is hereby granted, provided -** that the above copyright notice appear in all copies and that both that -** copyright notice and this permission notice appear in supporting -** documentation. This software is provided "as is" without express or -** implied warranty. -*/ - -#include -#include -#include -#include -#include -#include -#include - -#if !(defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199900L) && !(defined(_MSC_VER) && _MSC_VER >= 1800) -#error "This program requires C99, e.g. -std=c99 switch in GCC or it requires MSVC 18.0 or higher." -#error "Ignore torrent of syntax errors that may follow. It's only because compiler is set to use too old C version." -#endif - -#ifdef _OPENMP -#include -#else -#define omp_get_max_threads() 1 -#define omp_get_thread_num() 0 -#endif - -#include "libimagequant.h" - -#include "pam.h" -#include "mediancut.h" -#include "nearest.h" -#include "blur.h" -#include "viter.h" - -#define LIQ_HIGH_MEMORY_LIMIT (1<<26) /* avoid allocating buffers larger than 64MB */ - -// each structure has a pointer as a unique identifier that allows type checking at run time -static const char *const liq_attr_magic = "liq_attr", *const liq_image_magic = "liq_image", - *const liq_result_magic = "liq_result", *const liq_remapping_result_magic = "liq_remapping_result", - *const liq_freed_magic = "free"; -#define CHECK_STRUCT_TYPE(attr, kind) liq_crash_if_invalid_handle_pointer_given((const liq_attr*)attr, kind ## _magic) -#define CHECK_USER_POINTER(ptr) liq_crash_if_invalid_pointer_given(ptr) - -struct liq_attr { - const char *magic_header; - void* (*malloc)(size_t); - void (*free)(void*); - - double target_mse, max_mse, voronoi_iteration_limit; - float min_opaque_val; - unsigned int max_colors, max_histogram_entries; - unsigned int min_posterization_output /* user setting */, min_posterization_input /* speed setting */; - unsigned int voronoi_iterations, feedback_loop_trials; - bool last_index_transparent, use_contrast_maps, use_dither_map, fast_palette; - unsigned int speed; - liq_log_callback_function *log_callback; - void *log_callback_user_info; - liq_log_flush_callback_function *log_flush_callback; - void *log_flush_callback_user_info; -}; - -struct liq_image { - const char *magic_header; - void* (*malloc)(size_t); - void (*free)(void*); - - f_pixel *f_pixels; - rgba_pixel **rows; - double gamma; - unsigned int width, height; - unsigned char *noise, *edges, *dither_map; - rgba_pixel *pixels, *temp_row; - f_pixel *temp_f_row; - liq_image_get_rgba_row_callback *row_callback; - void *row_callback_user_info; - float min_opaque_val; - bool free_pixels, free_rows, free_rows_internal; -}; - -typedef struct liq_remapping_result { - const char *magic_header; - void* (*malloc)(size_t); - void (*free)(void*); - - unsigned char *pixels; - colormap *palette; - liq_palette int_palette; - double gamma, palette_error; - float dither_level; - bool use_dither_map; -} liq_remapping_result; - -struct liq_result { - const char *magic_header; - void* (*malloc)(size_t); - void (*free)(void*); - - liq_remapping_result *remapping; - colormap *palette; - liq_palette int_palette; - float dither_level; - double gamma, palette_error; - int min_posterization_output; - bool use_dither_map, fast_palette; -}; - -static liq_result *pngquant_quantize(histogram *hist, const liq_attr *options, double gamma); -static void modify_alpha(liq_image *input_image, rgba_pixel *const row_pixels); -static void contrast_maps(liq_image *image); -static histogram *get_histogram(liq_image *input_image, const liq_attr *options); -static const rgba_pixel *liq_image_get_row_rgba(liq_image *input_image, unsigned int row); -static const f_pixel *liq_image_get_row_f(liq_image *input_image, unsigned int row); -static void liq_remapping_result_destroy(liq_remapping_result *result); - -static void liq_verbose_printf(const liq_attr *context, const char *fmt, ...) -{ - if (context->log_callback) { - va_list va; - va_start(va, fmt); - int required_space = vsnprintf(NULL, 0, fmt, va)+1; // +\0 - va_end(va); - - char buf[required_space]; - va_start(va, fmt); - vsnprintf(buf, required_space, fmt, va); - va_end(va); - - context->log_callback(context, buf, context->log_callback_user_info); - } -} - -inline static void verbose_print(const liq_attr *attr, const char *msg) -{ - if (attr->log_callback) { - attr->log_callback(attr, msg, attr->log_callback_user_info); - } -} - -static void liq_verbose_printf_flush(liq_attr *attr) -{ - if (attr->log_flush_callback) { - attr->log_flush_callback(attr, attr->log_flush_callback_user_info); - } -} - -#if USE_SSE -inline static bool is_sse_available() -{ -#if (defined(__x86_64__) || defined(__amd64)) - return true; -#else - int a,b,c,d; - cpuid(1, a, b, c, d); - return d & (1<<25); // edx bit 25 is set when SSE is present -#endif -} -#endif - -/* make it clear in backtrace when user-supplied handle points to invalid memory */ -NEVER_INLINE LIQ_EXPORT bool liq_crash_if_invalid_handle_pointer_given(const liq_attr *user_supplied_pointer, const char *const expected_magic_header); -LIQ_EXPORT bool liq_crash_if_invalid_handle_pointer_given(const liq_attr *user_supplied_pointer, const char *const expected_magic_header) -{ - if (!user_supplied_pointer) { - return false; - } - - if (user_supplied_pointer->magic_header == liq_freed_magic) { - fprintf(stderr, "%s used after being freed", expected_magic_header); - // this is not normal error handling, this is programmer error that should crash the program. - // program cannot safely continue if memory has been used after it's been freed. - // abort() is nasty, but security vulnerability may be worse. - abort(); - } - - return user_supplied_pointer->magic_header == expected_magic_header; -} - -NEVER_INLINE LIQ_EXPORT bool liq_crash_if_invalid_pointer_given(void *pointer); -LIQ_EXPORT bool liq_crash_if_invalid_pointer_given(void *pointer) -{ - if (!pointer) { - return false; - } - // Force a read from the given (potentially invalid) memory location in order to check early whether this crashes the program or not. - // It doesn't matter what value is read, the code here is just to shut the compiler up about unused read. - char test_access = *((volatile char *)pointer); - return test_access || true; -} - -static void liq_log_error(const liq_attr *attr, const char *msg) { - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; - liq_verbose_printf(attr, " error: %s", msg); -} - -static double quality_to_mse(long quality) -{ - if (quality == 0) { - return MAX_DIFF; - } - if (quality == 100) { - return 0; - } - - // curve fudged to be roughly similar to quality of libjpeg - // except lowest 10 for really low number of colors - const double extra_low_quality_fudge = MAX(0,0.016/(0.001+quality) - 0.001); - return extra_low_quality_fudge + 2.5/pow(210.0 + quality, 1.2) * (100.1-quality)/100.0; -} - -static unsigned int mse_to_quality(double mse) -{ - for(int i=100; i > 0; i--) { - if (mse <= quality_to_mse(i) + 0.000001) { // + epsilon for floating point errors - return i; - } - } - return 0; -} - -LIQ_EXPORT liq_error liq_set_quality(liq_attr* attr, int minimum, int target) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; - if (target < 0 || target > 100 || target < minimum || minimum < 0) return LIQ_VALUE_OUT_OF_RANGE; - - attr->target_mse = quality_to_mse(target); - attr->max_mse = quality_to_mse(minimum); - return LIQ_OK; -} - -LIQ_EXPORT int liq_get_min_quality(const liq_attr *attr) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; - return mse_to_quality(attr->max_mse); -} - -LIQ_EXPORT int liq_get_max_quality(const liq_attr *attr) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; - return mse_to_quality(attr->target_mse); -} - - -LIQ_EXPORT liq_error liq_set_max_colors(liq_attr* attr, int colors) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; - if (colors < 2 || colors > 256) return LIQ_VALUE_OUT_OF_RANGE; - - attr->max_colors = colors; - return LIQ_OK; -} - -LIQ_EXPORT int liq_get_max_colors(const liq_attr *attr) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; - - return attr->max_colors; -} - -LIQ_EXPORT liq_error liq_set_min_posterization(liq_attr *attr, int bits) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; - if (bits < 0 || bits > 4) return LIQ_VALUE_OUT_OF_RANGE; - - attr->min_posterization_output = bits; - return LIQ_OK; -} - -LIQ_EXPORT int liq_get_min_posterization(const liq_attr *attr) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; - - return attr->min_posterization_output; -} - -LIQ_EXPORT liq_error liq_set_speed(liq_attr* attr, int speed) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; - if (speed < 1 || speed > 10) return LIQ_VALUE_OUT_OF_RANGE; - - int iterations = MAX(8-speed,0); iterations += iterations * iterations/2; - attr->voronoi_iterations = iterations; - attr->voronoi_iteration_limit = 1.0/(double)(1<<(23-speed)); - attr->feedback_loop_trials = MAX(56-9*speed, 0); - - attr->max_histogram_entries = (1<<17) + (1<<18)*(10-speed); - attr->min_posterization_input = (speed >= 8) ? 1 : 0; - attr->fast_palette = (speed >= 7); - attr->use_dither_map = (speed <= (omp_get_max_threads() > 1 ? 7 : 5)); // parallelized dither map might speed up floyd remapping - attr->use_contrast_maps = (speed <= 7) || attr->use_dither_map; - attr->speed = speed; - return LIQ_OK; -} - -LIQ_EXPORT int liq_get_speed(const liq_attr *attr) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; - - return attr->speed; -} - -LIQ_EXPORT liq_error liq_set_output_gamma(liq_result* res, double gamma) -{ - if (!CHECK_STRUCT_TYPE(res, liq_result)) return LIQ_INVALID_POINTER; - if (gamma <= 0 || gamma >= 1.0) return LIQ_VALUE_OUT_OF_RANGE; - - if (res->remapping) { - liq_remapping_result_destroy(res->remapping); - res->remapping = NULL; - } - - res->gamma = gamma; - return LIQ_OK; -} - -LIQ_EXPORT liq_error liq_set_min_opacity(liq_attr* attr, int min) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return LIQ_INVALID_POINTER; - if (min < 0 || min > 255) return LIQ_VALUE_OUT_OF_RANGE; - - attr->min_opaque_val = (double)min/255.0; - return LIQ_OK; -} - -LIQ_EXPORT int liq_get_min_opacity(const liq_attr *attr) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return -1; - - return MIN(255, 256.0 * attr->min_opaque_val); -} - -LIQ_EXPORT void liq_set_last_index_transparent(liq_attr* attr, int is_last) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; - - attr->last_index_transparent = !!is_last; -} - -LIQ_EXPORT void liq_set_log_callback(liq_attr *attr, liq_log_callback_function *callback, void* user_info) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; - - liq_verbose_printf_flush(attr); - attr->log_callback = callback; - attr->log_callback_user_info = user_info; -} - -LIQ_EXPORT void liq_set_log_flush_callback(liq_attr *attr, liq_log_flush_callback_function *callback, void* user_info) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return; - - attr->log_flush_callback = callback; - attr->log_flush_callback_user_info = user_info; -} - -LIQ_EXPORT liq_attr* liq_attr_create() -{ - return liq_attr_create_with_allocator(NULL, NULL); -} - -LIQ_EXPORT void liq_attr_destroy(liq_attr *attr) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) { - return; - } - - liq_verbose_printf_flush(attr); - - attr->magic_header = liq_freed_magic; - attr->free(attr); -} - -LIQ_EXPORT liq_attr* liq_attr_copy(liq_attr *orig) -{ - if (!CHECK_STRUCT_TYPE(orig, liq_attr)) { - return NULL; - } - - liq_attr *attr = orig->malloc(sizeof(liq_attr)); - if (!attr) return NULL; - *attr = *orig; - return attr; -} - -static void *liq_aligned_malloc(size_t size) -{ - unsigned char *ptr = malloc(size + 16); - if (!ptr) { - return NULL; - } - - uintptr_t offset = 16 - ((uintptr_t)ptr & 15); // also reserves 1 byte for ptr[-1] - ptr += offset; - assert(0 == (((uintptr_t)ptr) & 15)); - ptr[-1] = offset ^ 0x59; // store how much pointer was shifted to get the original for free() - return ptr; -} - -static void liq_aligned_free(void *inptr) -{ - unsigned char *ptr = inptr; - size_t offset = ptr[-1] ^ 0x59; - assert(offset > 0 && offset <= 16); - free(ptr - offset); -} - -LIQ_EXPORT liq_attr* liq_attr_create_with_allocator(void* (*custom_malloc)(size_t), void (*custom_free)(void*)) -{ -#if USE_SSE - if (!is_sse_available()) { - return NULL; - } -#endif - if (!custom_malloc && !custom_free) { - custom_malloc = liq_aligned_malloc; - custom_free = liq_aligned_free; - } else if (!custom_malloc != !custom_free) { - return NULL; // either specify both or none - } - - liq_attr *attr = custom_malloc(sizeof(liq_attr)); - if (!attr) return NULL; - *attr = (liq_attr) { - .magic_header = liq_attr_magic, - .malloc = custom_malloc, - .free = custom_free, - .max_colors = 256, - .min_opaque_val = 1, // whether preserve opaque colors for IE (1.0=no, does not affect alpha) - .last_index_transparent = false, // puts transparent color at last index. This is workaround for blu-ray subtitles. - .target_mse = 0, - .max_mse = MAX_DIFF, - }; - liq_set_speed(attr, 3); - return attr; -} - -static bool liq_image_use_low_memory(liq_image *img) -{ - img->temp_f_row = img->malloc(sizeof(img->f_pixels[0]) * img->width * omp_get_max_threads()); - return img->temp_f_row != NULL; -} - -static bool liq_image_should_use_low_memory(liq_image *img, const bool low_memory_hint) -{ - return img->width * img->height * sizeof(f_pixel) > (low_memory_hint ? LIQ_HIGH_MEMORY_LIMIT/8 : LIQ_HIGH_MEMORY_LIMIT); -} - -static liq_image *liq_image_create_internal(liq_attr *attr, rgba_pixel* rows[], liq_image_get_rgba_row_callback *row_callback, void *row_callback_user_info, int width, int height, double gamma) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) { - return NULL; - } - if (width <= 0 || height <= 0) { - liq_log_error(attr, "width and height must be > 0"); - return NULL; - } - if (gamma < 0 || gamma > 1.0) { - liq_log_error(attr, "gamma must be >= 0 and <= 1 (try 1/gamma instead)"); - return NULL; - } - - if (!rows && !row_callback) { - liq_log_error(attr, "missing row data"); - return NULL; - } - - liq_image *img = attr->malloc(sizeof(liq_image)); - if (!img) return NULL; - *img = (liq_image){ - .magic_header = liq_image_magic, - .malloc = attr->malloc, - .free = attr->free, - .width = width, .height = height, - .gamma = gamma ? gamma : 0.45455, - .rows = rows, - .row_callback = row_callback, - .row_callback_user_info = row_callback_user_info, - .min_opaque_val = attr->min_opaque_val, - }; - - if (!rows || attr->min_opaque_val < 1.f) { - img->temp_row = attr->malloc(sizeof(img->temp_row[0]) * width * omp_get_max_threads()); - if (!img->temp_row) return NULL; - } - - // if image is huge or converted pixels are not likely to be reused then don't cache converted pixels - if (liq_image_should_use_low_memory(img, !img->temp_row && !attr->use_contrast_maps && !attr->use_dither_map)) { - verbose_print(attr, " conserving memory"); - if (!liq_image_use_low_memory(img)) return NULL; - } - - if (img->min_opaque_val < 1.f) { - verbose_print(attr, " Working around IE6 bug by making image less transparent..."); - } - - return img; -} - -LIQ_EXPORT liq_error liq_image_set_memory_ownership(liq_image *img, int ownership_flags) -{ - if (!CHECK_STRUCT_TYPE(img, liq_image)) return LIQ_INVALID_POINTER; - if (!img->rows || !ownership_flags || (ownership_flags & ~(LIQ_OWN_ROWS|LIQ_OWN_PIXELS))) { - return LIQ_VALUE_OUT_OF_RANGE; - } - - if (ownership_flags & LIQ_OWN_ROWS) { - if (img->free_rows_internal) return LIQ_VALUE_OUT_OF_RANGE; - img->free_rows = true; - } - - if (ownership_flags & LIQ_OWN_PIXELS) { - img->free_pixels = true; - if (!img->pixels) { - // for simplicity of this API there's no explicit bitmap argument, - // so the row with the lowest address is assumed to be at the start of the bitmap - img->pixels = img->rows[0]; - for(unsigned int i=1; i < img->height; i++) { - img->pixels = MIN(img->pixels, img->rows[i]); - } - } - } - - return LIQ_OK; -} - -LIQ_EXPORT liq_image *liq_image_create_custom(liq_attr *attr, liq_image_get_rgba_row_callback *row_callback, void* user_info, int width, int height, double gamma) -{ - return liq_image_create_internal(attr, NULL, row_callback, user_info, width, height, gamma); -} - -LIQ_EXPORT liq_image *liq_image_create_rgba_rows(liq_attr *attr, void* rows[], int width, int height, double gamma) -{ - if (width <= 0 || height <= 0) { - liq_log_error(attr, "width and height must be > 0"); - return NULL; - } - if (width > INT_MAX/16/height || height > INT_MAX/16/width) { - liq_log_error(attr, "image too large"); - return NULL; - } - - for(int i=0; i < height; i++) { - if (!CHECK_USER_POINTER(rows+i) || !CHECK_USER_POINTER(rows[i])) { - liq_log_error(attr, "invalid row pointers"); - return NULL; - } - } - return liq_image_create_internal(attr, (rgba_pixel**)rows, NULL, NULL, width, height, gamma); -} - -LIQ_EXPORT liq_image *liq_image_create_rgba(liq_attr *attr, void* bitmap, int width, int height, double gamma) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return NULL; - if (width <= 0 || height <= 0) { - liq_log_error(attr, "width and height must be > 0"); - return NULL; - } - if (width > INT_MAX/16/height || height > INT_MAX/16/width) { - liq_log_error(attr, "image too large"); - return NULL; - } - if (!CHECK_USER_POINTER(bitmap)) { - liq_log_error(attr, "invalid bitmap pointer"); - return NULL; - } - - rgba_pixel *pixels = bitmap; - rgba_pixel **rows = attr->malloc(sizeof(rows[0])*height); - if (!rows) return NULL; - - for(int i=0; i < height; i++) { - rows[i] = pixels + width * i; - } - - liq_image *image = liq_image_create_internal(attr, rows, NULL, NULL, width, height, gamma); - image->free_rows = true; - image->free_rows_internal = true; - return image; -} - -NEVER_INLINE LIQ_EXPORT void liq_executing_user_callback(liq_image_get_rgba_row_callback *callback, liq_color *temp_row, int row, int width, void *user_info); -LIQ_EXPORT void liq_executing_user_callback(liq_image_get_rgba_row_callback *callback, liq_color *temp_row, int row, int width, void *user_info) -{ - assert(callback); - assert(temp_row); - callback(temp_row, row, width, user_info); -} - -inline static bool liq_image_can_use_rows(liq_image *img) -{ - const bool iebug = img->min_opaque_val < 1.f; - return (img->rows && !iebug); -} - -static const rgba_pixel *liq_image_get_row_rgba(liq_image *img, unsigned int row) -{ - if (liq_image_can_use_rows(img)) { - return img->rows[row]; - } - - assert(img->temp_row); - rgba_pixel *temp_row = img->temp_row + img->width * omp_get_thread_num(); - if (img->rows) { - memcpy(temp_row, img->rows[row], img->width * sizeof(temp_row[0])); - } else { - liq_executing_user_callback(img->row_callback, (liq_color*)temp_row, row, img->width, img->row_callback_user_info); - } - - if (img->min_opaque_val < 1.f) modify_alpha(img, temp_row); - return temp_row; -} - -static void convert_row_to_f(liq_image *img, f_pixel *row_f_pixels, const unsigned int row, const float gamma_lut[]) -{ - assert(row_f_pixels); - assert(!USE_SSE || 0 == ((uintptr_t)row_f_pixels & 15)); - - const rgba_pixel *const row_pixels = liq_image_get_row_rgba(img, row); - - for(unsigned int col=0; col < img->width; col++) { - row_f_pixels[col] = to_f(gamma_lut, row_pixels[col]); - } -} - -static const f_pixel *liq_image_get_row_f(liq_image *img, unsigned int row) -{ - if (!img->f_pixels) { - if (img->temp_f_row) { - float gamma_lut[256]; - to_f_set_gamma(gamma_lut, img->gamma); - f_pixel *row_for_thread = img->temp_f_row + img->width * omp_get_thread_num(); - convert_row_to_f(img, row_for_thread, row, gamma_lut); - return row_for_thread; - } - - assert(omp_get_thread_num() == 0); - if (!liq_image_should_use_low_memory(img, false)) { - img->f_pixels = img->malloc(sizeof(img->f_pixels[0]) * img->width * img->height); - } - if (!img->f_pixels) { - if (!liq_image_use_low_memory(img)) return NULL; - return liq_image_get_row_f(img, row); - } - - float gamma_lut[256]; - to_f_set_gamma(gamma_lut, img->gamma); - for(unsigned int i=0; i < img->height; i++) { - convert_row_to_f(img, &img->f_pixels[i*img->width], i, gamma_lut); - } - } - return img->f_pixels + img->width * row; -} - -LIQ_EXPORT int liq_image_get_width(const liq_image *input_image) -{ - if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return -1; - return input_image->width; -} - -LIQ_EXPORT int liq_image_get_height(const liq_image *input_image) -{ - if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return -1; - return input_image->height; -} - -typedef void free_func(void*); - -free_func *get_default_free_func(liq_image *img) -{ - // When default allocator is used then user-supplied pointers must be freed with free() - if (img->free_rows_internal || img->free != liq_aligned_free) { - return img->free; - } - return free; -} - -static void liq_image_free_rgba_source(liq_image *input_image) -{ - if (input_image->free_pixels && input_image->pixels) { - get_default_free_func(input_image)(input_image->pixels); - input_image->pixels = NULL; - } - - if (input_image->free_rows && input_image->rows) { - get_default_free_func(input_image)(input_image->rows); - input_image->rows = NULL; - } -} - -LIQ_EXPORT void liq_image_destroy(liq_image *input_image) -{ - if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return; - - liq_image_free_rgba_source(input_image); - - if (input_image->noise) { - input_image->free(input_image->noise); - } - - if (input_image->edges) { - input_image->free(input_image->edges); - } - - if (input_image->dither_map) { - input_image->free(input_image->dither_map); - } - - if (input_image->f_pixels) { - input_image->free(input_image->f_pixels); - } - - if (input_image->temp_row) { - input_image->free(input_image->temp_row); - } - - input_image->magic_header = liq_freed_magic; - input_image->free(input_image); -} - -LIQ_EXPORT liq_result *liq_quantize_image(liq_attr *attr, liq_image *img) -{ - if (!CHECK_STRUCT_TYPE(attr, liq_attr)) return NULL; - if (!CHECK_STRUCT_TYPE(img, liq_image)) { - liq_log_error(attr, "invalid image pointer"); - return NULL; - } - - histogram *hist = get_histogram(img, attr); - if (!hist) { - return NULL; - } - - liq_result *result = pngquant_quantize(hist, attr, img->gamma); - - pam_freeacolorhist(hist); - return result; -} - -LIQ_EXPORT liq_error liq_set_dithering_level(liq_result *res, float dither_level) -{ - if (!CHECK_STRUCT_TYPE(res, liq_result)) return LIQ_INVALID_POINTER; - - if (res->remapping) { - liq_remapping_result_destroy(res->remapping); - res->remapping = NULL; - } - - if (res->dither_level < 0 || res->dither_level > 1.0f) return LIQ_VALUE_OUT_OF_RANGE; - res->dither_level = dither_level; - return LIQ_OK; -} - -static liq_remapping_result *liq_remapping_result_create(liq_result *result) -{ - if (!CHECK_STRUCT_TYPE(result, liq_result)) { - return NULL; - } - - liq_remapping_result *res = result->malloc(sizeof(liq_remapping_result)); - if (!res) return NULL; - *res = (liq_remapping_result) { - .magic_header = liq_remapping_result_magic, - .malloc = result->malloc, - .free = result->free, - .dither_level = result->dither_level, - .use_dither_map = result->use_dither_map, - .palette_error = result->palette_error, - .gamma = result->gamma, - .palette = pam_duplicate_colormap(result->palette), - }; - return res; -} - -LIQ_EXPORT double liq_get_output_gamma(const liq_result *result) -{ - if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; - - return result->gamma; -} - -static void liq_remapping_result_destroy(liq_remapping_result *result) -{ - if (!CHECK_STRUCT_TYPE(result, liq_remapping_result)) return; - - if (result->palette) pam_freecolormap(result->palette); - if (result->pixels) result->free(result->pixels); - - result->magic_header = liq_freed_magic; - result->free(result); -} - -LIQ_EXPORT void liq_result_destroy(liq_result *res) -{ - if (!CHECK_STRUCT_TYPE(res, liq_result)) return; - - memset(&res->int_palette, 0, sizeof(liq_palette)); - - if (res->remapping) { - memset(&res->remapping->int_palette, 0, sizeof(liq_palette)); - liq_remapping_result_destroy(res->remapping); - } - - pam_freecolormap(res->palette); - - res->magic_header = liq_freed_magic; - res->free(res); -} - -LIQ_EXPORT double liq_get_quantization_error(liq_result *result) -{ - if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; - - if (result->palette_error >= 0) { - return result->palette_error*65536.0/6.0; - } - - if (result->remapping && result->remapping->palette_error >= 0) { - return result->remapping->palette_error*65536.0/6.0; - } - - return result->palette_error; -} - -LIQ_EXPORT int liq_get_quantization_quality(liq_result *result) -{ - if (!CHECK_STRUCT_TYPE(result, liq_result)) return -1; - - if (result->palette_error >= 0) { - return mse_to_quality(result->palette_error); - } - - if (result->remapping && result->remapping->palette_error >= 0) { - return mse_to_quality(result->remapping->palette_error); - } - - return result->palette_error; -} - -static int compare_popularity(const void *ch1, const void *ch2) -{ - const float v1 = ((const colormap_item*)ch1)->popularity; - const float v2 = ((const colormap_item*)ch2)->popularity; - return v1 > v2 ? -1 : 1; -} - -static void sort_palette_qsort(colormap *map, int start, int nelem) -{ - qsort(map->palette + start, nelem, sizeof(map->palette[0]), compare_popularity); -} - -#define SWAP_PALETTE(map, a,b) { \ - const colormap_item tmp = (map)->palette[(a)]; \ - (map)->palette[(a)] = (map)->palette[(b)]; \ - (map)->palette[(b)] = tmp; } - -static void sort_palette(colormap *map, const liq_attr *options) -{ - /* - ** Step 3.5 [GRR]: remap the palette colors so that all entries with - ** the maximal alpha value (i.e., fully opaque) are at the end and can - ** therefore be omitted from the tRNS chunk. - */ - if (options->last_index_transparent) { - for(unsigned int i=0; i < map->colors; i++) { - if (map->palette[i].acolor.a < 1.0/256.0) { - const unsigned int old = i, transparent_dest = map->colors-1; - - SWAP_PALETTE(map, transparent_dest, old); - - /* colors sorted by popularity make pngs slightly more compressible */ - sort_palette_qsort(map, 0, map->colors-1); - return; - } - } - } - /* move transparent colors to the beginning to shrink trns chunk */ - unsigned int num_transparent=0; - for(unsigned int i=0; i < map->colors; i++) { - if (map->palette[i].acolor.a < 255.0/256.0) { - // current transparent color is swapped with earlier opaque one - if (i != num_transparent) { - SWAP_PALETTE(map, num_transparent, i); - i--; - } - num_transparent++; - } - } - - liq_verbose_printf(options, " eliminated opaque tRNS-chunk entries...%d entr%s transparent", num_transparent, (num_transparent == 1)? "y" : "ies"); - - /* colors sorted by popularity make pngs slightly more compressible - * opaque and transparent are sorted separately - */ - sort_palette_qsort(map, 0, num_transparent); - sort_palette_qsort(map, num_transparent, map->colors-num_transparent); - - if (map->colors > 16) { - SWAP_PALETTE(map, 7, 1); // slightly improves compression - SWAP_PALETTE(map, 8, 2); - SWAP_PALETTE(map, 9, 3); - } -} - -inline static unsigned int posterize_channel(unsigned int color, unsigned int bits) -{ - return (color & ~((1<> (8-bits)); -} - -static void set_rounded_palette(liq_palette *const dest, colormap *const map, const double gamma, unsigned int posterize) -{ - float gamma_lut[256]; - to_f_set_gamma(gamma_lut, gamma); - - dest->count = map->colors; - for(unsigned int x = 0; x < map->colors; ++x) { - rgba_pixel px = to_rgb(gamma, map->palette[x].acolor); - - px.r = posterize_channel(px.r, posterize); - px.g = posterize_channel(px.g, posterize); - px.b = posterize_channel(px.b, posterize); - px.a = posterize_channel(px.a, posterize); - - map->palette[x].acolor = to_f(gamma_lut, px); /* saves rounding error introduced by to_rgb, which makes remapping & dithering more accurate */ - - if (!px.a) { - px.r = 'L'; px.g = 'i'; px.b = 'q'; - } - - dest->entries[x] = (liq_color){.r=px.r,.g=px.g,.b=px.b,.a=px.a}; - } -} - -LIQ_EXPORT const liq_palette *liq_get_palette(liq_result *result) -{ - if (!CHECK_STRUCT_TYPE(result, liq_result)) return NULL; - - if (result->remapping && result->remapping->int_palette.count) { - return &result->remapping->int_palette; - } - - if (!result->int_palette.count) { - set_rounded_palette(&result->int_palette, result->palette, result->gamma, result->min_posterization_output); - } - return &result->int_palette; -} - -static float remap_to_palette(liq_image *const input_image, unsigned char *const *const output_pixels, colormap *const map, const bool fast) -{ - const int rows = input_image->height; - const unsigned int cols = input_image->width; - const float min_opaque_val = input_image->min_opaque_val; - double remapping_error=0; - - if (!liq_image_get_row_f(input_image, 0)) { // trigger lazy conversion - return -1; - } - - struct nearest_map *const n = nearest_init(map, fast); - - const unsigned int max_threads = omp_get_max_threads(); - viter_state average_color[(VITER_CACHE_LINE_GAP+map->colors) * max_threads]; - viter_init(map, max_threads, average_color); - - #pragma omp parallel for if (rows*cols > 3000) \ - schedule(static) default(none) shared(average_color) reduction(+:remapping_error) - for(int row = 0; row < rows; ++row) { - const f_pixel *const row_pixels = liq_image_get_row_f(input_image, row); - unsigned int last_match=0; - for(unsigned int col = 0; col < cols; ++col) { - f_pixel px = row_pixels[col]; - float diff; - - output_pixels[row][col] = last_match = nearest_search(n, px, last_match, min_opaque_val, &diff); - - remapping_error += diff; - viter_update_color(px, 1.0, map, last_match, omp_get_thread_num(), average_color); - } - } - - viter_finalize(map, max_threads, average_color); - - nearest_free(n); - - return remapping_error / (input_image->width * input_image->height); -} - -inline static f_pixel get_dithered_pixel(const float dither_level, const float max_dither_error, const f_pixel thiserr, const f_pixel px) -{ - /* Use Floyd-Steinberg errors to adjust actual color. */ - const float sr = thiserr.r * dither_level, - sg = thiserr.g * dither_level, - sb = thiserr.b * dither_level, - sa = thiserr.a * dither_level; - - float ratio = 1.0; - - // allowing some overflow prevents undithered bands caused by clamping of all channels - if (px.r + sr > 1.03) ratio = MIN(ratio, (1.03-px.r)/sr); - else if (px.r + sr < 0) ratio = MIN(ratio, px.r/-sr); - if (px.g + sg > 1.03) ratio = MIN(ratio, (1.03-px.g)/sg); - else if (px.g + sg < 0) ratio = MIN(ratio, px.g/-sg); - if (px.b + sb > 1.03) ratio = MIN(ratio, (1.03-px.b)/sb); - else if (px.b + sb < 0) ratio = MIN(ratio, px.b/-sb); - - float a = px.a + sa; - if (a > 1.0) { a = 1.0; } - else if (a < 0) { a = 0; } - - // If dithering error is crazy high, don't propagate it that much - // This prevents crazy geen pixels popping out of the blue (or red or black! ;) - const float dither_error = sr*sr + sg*sg + sb*sb + sa*sa; - if (dither_error > max_dither_error) { - ratio *= 0.8; - } else if (dither_error < 2.f/256.f/256.f) { - // don't dither areas that don't have noticeable error — makes file smaller - return px; - } - - return (f_pixel){ - .r=px.r + sr * ratio, - .g=px.g + sg * ratio, - .b=px.b + sb * ratio, - .a=a, - }; -} - -/** - Uses edge/noise map to apply dithering only to flat areas. Dithering on edges creates jagged lines, and noisy areas are "naturally" dithered. - - If output_image_is_remapped is true, only pixels noticeably changed by error diffusion will be written to output image. - */ -static void remap_to_palette_floyd(liq_image *input_image, unsigned char *const output_pixels[], const colormap *map, const float max_dither_error, const bool use_dither_map, const bool output_image_is_remapped, float base_dithering_level) -{ - const unsigned int rows = input_image->height, cols = input_image->width; - const unsigned char *dither_map = use_dither_map ? (input_image->dither_map ? input_image->dither_map : input_image->edges) : NULL; - const float min_opaque_val = input_image->min_opaque_val; - - const colormap_item *acolormap = map->palette; - - struct nearest_map *const n = nearest_init(map, false); - - /* Initialize Floyd-Steinberg error vectors. */ - f_pixel *restrict thiserr, *restrict nexterr; - thiserr = input_image->malloc((cols + 2) * sizeof(*thiserr) * 2); // +2 saves from checking out of bounds access - nexterr = thiserr + (cols + 2); - srand(12345); /* deterministic dithering is better for comparing results */ - if (!thiserr) return; - - for (unsigned int col = 0; col < cols + 2; ++col) { - const double rand_max = RAND_MAX; - thiserr[col].r = ((double)rand() - rand_max/2.0)/rand_max/255.0; - thiserr[col].g = ((double)rand() - rand_max/2.0)/rand_max/255.0; - thiserr[col].b = ((double)rand() - rand_max/2.0)/rand_max/255.0; - thiserr[col].a = ((double)rand() - rand_max/2.0)/rand_max/255.0; - } - - // response to this value is non-linear and without it any value < 0.8 would give almost no dithering - base_dithering_level = 1.0 - (1.0-base_dithering_level)*(1.0-base_dithering_level)*(1.0-base_dithering_level); - - if (dither_map) { - base_dithering_level *= 1.0/255.0; // convert byte to float - } - base_dithering_level *= 15.0/16.0; // prevent small errors from accumulating - - bool fs_direction = true; - unsigned int last_match=0; - for (unsigned int row = 0; row < rows; ++row) { - memset(nexterr, 0, (cols + 2) * sizeof(*nexterr)); - - unsigned int col = (fs_direction) ? 0 : (cols - 1); - const f_pixel *const row_pixels = liq_image_get_row_f(input_image, row); - - do { - float dither_level = base_dithering_level; - if (dither_map) { - dither_level *= dither_map[row*cols + col]; - } - - const f_pixel spx = get_dithered_pixel(dither_level, max_dither_error, thiserr[col + 1], row_pixels[col]); - - const unsigned int guessed_match = output_image_is_remapped ? output_pixels[row][col] : last_match; - output_pixels[row][col] = last_match = nearest_search(n, spx, guessed_match, min_opaque_val, NULL); - - const f_pixel xp = acolormap[last_match].acolor; - f_pixel err = { - .r = (spx.r - xp.r), - .g = (spx.g - xp.g), - .b = (spx.b - xp.b), - .a = (spx.a - xp.a), - }; - - // If dithering error is crazy high, don't propagate it that much - // This prevents crazy geen pixels popping out of the blue (or red or black! ;) - if (err.r*err.r + err.g*err.g + err.b*err.b + err.a*err.a > max_dither_error) { - dither_level *= 0.75; - } - - const float colorimp = (3.0f + acolormap[last_match].acolor.a)/4.0f * dither_level; - err.r *= colorimp; - err.g *= colorimp; - err.b *= colorimp; - err.a *= dither_level; - - /* Propagate Floyd-Steinberg error terms. */ - if (fs_direction) { - thiserr[col + 2].a += err.a * (7.f/16.f); - thiserr[col + 2].r += err.r * (7.f/16.f); - thiserr[col + 2].g += err.g * (7.f/16.f); - thiserr[col + 2].b += err.b * (7.f/16.f); - - nexterr[col + 2].a = err.a * (1.f/16.f); - nexterr[col + 2].r = err.r * (1.f/16.f); - nexterr[col + 2].g = err.g * (1.f/16.f); - nexterr[col + 2].b = err.b * (1.f/16.f); - - nexterr[col + 1].a += err.a * (5.f/16.f); - nexterr[col + 1].r += err.r * (5.f/16.f); - nexterr[col + 1].g += err.g * (5.f/16.f); - nexterr[col + 1].b += err.b * (5.f/16.f); - - nexterr[col ].a += err.a * (3.f/16.f); - nexterr[col ].r += err.r * (3.f/16.f); - nexterr[col ].g += err.g * (3.f/16.f); - nexterr[col ].b += err.b * (3.f/16.f); - - } else { - thiserr[col ].a += err.a * (7.f/16.f); - thiserr[col ].r += err.r * (7.f/16.f); - thiserr[col ].g += err.g * (7.f/16.f); - thiserr[col ].b += err.b * (7.f/16.f); - - nexterr[col ].a = err.a * (1.f/16.f); - nexterr[col ].r = err.r * (1.f/16.f); - nexterr[col ].g = err.g * (1.f/16.f); - nexterr[col ].b = err.b * (1.f/16.f); - - nexterr[col + 1].a += err.a * (5.f/16.f); - nexterr[col + 1].r += err.r * (5.f/16.f); - nexterr[col + 1].g += err.g * (5.f/16.f); - nexterr[col + 1].b += err.b * (5.f/16.f); - - nexterr[col + 2].a += err.a * (3.f/16.f); - nexterr[col + 2].r += err.r * (3.f/16.f); - nexterr[col + 2].g += err.g * (3.f/16.f); - nexterr[col + 2].b += err.b * (3.f/16.f); - } - - // remapping is done in zig-zag - if (fs_direction) { - ++col; - if (col >= cols) break; - } else { - if (col <= 0) break; - --col; - } - } while(1); - - f_pixel *const temperr = thiserr; - thiserr = nexterr; - nexterr = temperr; - fs_direction = !fs_direction; - } - - input_image->free(MIN(thiserr, nexterr)); // MIN because pointers were swapped - nearest_free(n); -} - - -/* histogram contains information how many times each color is present in the image, weighted by importance_map */ -static histogram *get_histogram(liq_image *input_image, const liq_attr *options) -{ - unsigned int ignorebits=MAX(options->min_posterization_output, options->min_posterization_input); - const unsigned int cols = input_image->width, rows = input_image->height; - - if (!input_image->noise && options->use_contrast_maps) { - contrast_maps(input_image); - } - - /* - ** Step 2: attempt to make a histogram of the colors, unclustered. - ** If at first we don't succeed, increase ignorebits to increase color - ** coherence and try again. - */ - - unsigned int maxcolors = options->max_histogram_entries; - - struct acolorhash_table *acht; - const bool all_rows_at_once = liq_image_can_use_rows(input_image); - do { - acht = pam_allocacolorhash(maxcolors, rows*cols, ignorebits, options->malloc, options->free); - if (!acht) return NULL; - - // histogram uses noise contrast map for importance. Color accuracy in noisy areas is not very important. - // noise map does not include edges to avoid ruining anti-aliasing - for(unsigned int row=0; row < rows; row++) { - bool added_ok; - if (all_rows_at_once) { - added_ok = pam_computeacolorhash(acht, (const rgba_pixel *const *)input_image->rows, cols, rows, input_image->noise); - if (added_ok) break; - } else { - const rgba_pixel* rows_p[1] = { liq_image_get_row_rgba(input_image, row) }; - added_ok = pam_computeacolorhash(acht, rows_p, cols, 1, input_image->noise ? &input_image->noise[row * cols] : NULL); - } - if (!added_ok) { - ignorebits++; - liq_verbose_printf(options, " too many colors! Scaling colors to improve clustering... %d", ignorebits); - pam_freeacolorhash(acht); - acht = NULL; - break; - } - } - } while(!acht); - - if (input_image->noise) { - input_image->free(input_image->noise); - input_image->noise = NULL; - } - - if (input_image->free_pixels && input_image->f_pixels) { - liq_image_free_rgba_source(input_image); // bow can free the RGBA source if copy has been made in f_pixels - } - - histogram *hist = pam_acolorhashtoacolorhist(acht, input_image->gamma, options->malloc, options->free); - pam_freeacolorhash(acht); - - if (hist) { - liq_verbose_printf(options, " made histogram...%d colors found", hist->size); - } - return hist; -} - -static void modify_alpha(liq_image *input_image, rgba_pixel *const row_pixels) -{ - /* IE6 makes colors with even slightest transparency completely transparent, - thus to improve situation in IE, make colors that are less than ~10% transparent - completely opaque */ - - const float min_opaque_val = input_image->min_opaque_val; - const float almost_opaque_val = min_opaque_val * 169.f/256.f; - const unsigned int almost_opaque_val_int = (min_opaque_val * 169.f/256.f)*255.f; - - for(unsigned int col = 0; col < input_image->width; col++) { - const rgba_pixel px = row_pixels[col]; - - /* ie bug: to avoid visible step caused by forced opaqueness, linearily raise opaqueness of almost-opaque colors */ - if (px.a >= almost_opaque_val_int) { - float al = px.a / 255.f; - al = almost_opaque_val + (al-almost_opaque_val) * (1.f-almost_opaque_val) / (min_opaque_val-almost_opaque_val); - al *= 256.f; - row_pixels[col].a = al >= 255.f ? 255 : al; - } - } -} - -/** - Builds two maps: - noise - approximation of areas with high-frequency noise, except straight edges. 1=flat, 0=noisy. - edges - noise map including all edges - */ -static void contrast_maps(liq_image *image) -{ - const int cols = image->width, rows = image->height; - if (cols < 4 || rows < 4 || (3*cols*rows) > LIQ_HIGH_MEMORY_LIMIT) { - return; - } - - unsigned char *restrict noise = image->malloc(cols*rows); - unsigned char *restrict edges = image->malloc(cols*rows); - unsigned char *restrict tmp = image->malloc(cols*rows); - - if (!noise || !edges || !tmp) { - return; - } - - const f_pixel *curr_row, *prev_row, *next_row; - curr_row = prev_row = next_row = liq_image_get_row_f(image, 0); - - for (int j=0; j < rows; j++) { - prev_row = curr_row; - curr_row = next_row; - next_row = liq_image_get_row_f(image, MIN(rows-1,j+1)); - - f_pixel prev, curr = curr_row[0], next=curr; - for (int i=0; i < cols; i++) { - prev=curr; - curr=next; - next = curr_row[MIN(cols-1,i+1)]; - - // contrast is difference between pixels neighbouring horizontally and vertically - const float a = fabsf(prev.a+next.a - curr.a*2.f), - r = fabsf(prev.r+next.r - curr.r*2.f), - g = fabsf(prev.g+next.g - curr.g*2.f), - b = fabsf(prev.b+next.b - curr.b*2.f); - - const f_pixel prevl = prev_row[i]; - const f_pixel nextl = next_row[i]; - - const float a1 = fabsf(prevl.a+nextl.a - curr.a*2.f), - r1 = fabsf(prevl.r+nextl.r - curr.r*2.f), - g1 = fabsf(prevl.g+nextl.g - curr.g*2.f), - b1 = fabsf(prevl.b+nextl.b - curr.b*2.f); - - const float horiz = MAX(MAX(a,r),MAX(g,b)); - const float vert = MAX(MAX(a1,r1),MAX(g1,b1)); - const float edge = MAX(horiz,vert); - float z = edge - fabsf(horiz-vert)*.5f; - z = 1.f - MAX(z,MIN(horiz,vert)); - z *= z; // noise is amplified - z *= z; - - z *= 256.f; - noise[j*cols+i] = z < 256 ? z : 255; - z = (1.f-edge)*256.f; - edges[j*cols+i] = z < 256 ? z : 255; - } - } - - // noise areas are shrunk and then expanded to remove thin edges from the map - liq_max3(noise, tmp, cols, rows); - liq_max3(tmp, noise, cols, rows); - - liq_blur(noise, tmp, noise, cols, rows, 3); - - liq_max3(noise, tmp, cols, rows); - - liq_min3(tmp, noise, cols, rows); - liq_min3(noise, tmp, cols, rows); - liq_min3(tmp, noise, cols, rows); - - liq_min3(edges, tmp, cols, rows); - liq_max3(tmp, edges, cols, rows); - for(int i=0; i < cols*rows; i++) edges[i] = MIN(noise[i], edges[i]); - - image->free(tmp); - - image->noise = noise; - image->edges = edges; -} - -/** - * Builds map of neighbor pixels mapped to the same palette entry - * - * For efficiency/simplicity it mainly looks for same consecutive pixels horizontally - * and peeks 1 pixel above/below. Full 2d algorithm doesn't improve it significantly. - * Correct flood fill doesn't have visually good properties. - */ -static void update_dither_map(unsigned char *const *const row_pointers, liq_image *input_image) -{ - const unsigned int width = input_image->width; - const unsigned int height = input_image->height; - unsigned char *const edges = input_image->edges; - - for(unsigned int row=0; row < height; row++) { - unsigned char lastpixel = row_pointers[row][0]; - unsigned int lastcol=0; - - for(unsigned int col=1; col < width; col++) { - const unsigned char px = row_pointers[row][col]; - - if (px != lastpixel || col == width-1) { - float neighbor_count = 2.5f + col-lastcol; - - unsigned int i=lastcol; - while(i < col) { - if (row > 0) { - unsigned char pixelabove = row_pointers[row-1][i]; - if (pixelabove == lastpixel) neighbor_count += 1.f; - } - if (row < height-1) { - unsigned char pixelbelow = row_pointers[row+1][i]; - if (pixelbelow == lastpixel) neighbor_count += 1.f; - } - i++; - } - - while(lastcol <= col) { - float e = edges[row*width + lastcol] / 255.f; - e *= 1.f - 2.5f/neighbor_count; - edges[row*width + lastcol++] = e * 255.f; - } - lastpixel = px; - } - } - } - input_image->dither_map = input_image->edges; - input_image->edges = NULL; -} - -static void adjust_histogram_callback(hist_item *item, float diff) -{ - item->adjusted_weight = (item->perceptual_weight+item->adjusted_weight) * (sqrtf(1.f+diff)); -} - -/** - Repeats mediancut with different histogram weights to find palette with minimum error. - - feedback_loop_trials controls how long the search will take. < 0 skips the iteration. - */ -static colormap *find_best_palette(histogram *hist, const liq_attr *options, double *palette_error_p) -{ - unsigned int max_colors = options->max_colors; - // if output is posterized it doesn't make sense to aim for perfrect colors, so increase target_mse - // at this point actual gamma is not set, so very conservative posterization estimate is used - const double target_mse = MAX(options->target_mse, pow((1<min_posterization_output)/1024.0, 2)); - int feedback_loop_trials = options->feedback_loop_trials; - colormap *acolormap = NULL; - double least_error = MAX_DIFF; - double target_mse_overshoot = feedback_loop_trials>0 ? 1.05 : 1.0; - const double percent = (double)(feedback_loop_trials>0?feedback_loop_trials:1)/100.0; - - do { - colormap *newmap = mediancut(hist, options->min_opaque_val, max_colors, - target_mse * target_mse_overshoot, MAX(MAX(90.0/65536.0, target_mse), least_error)*1.2, - options->malloc, options->free); - if (!newmap) { - return NULL; - } - - if (feedback_loop_trials <= 0) { - return newmap; - } - - // after palette has been created, total error (MSE) is calculated to keep the best palette - // at the same time Voronoi iteration is done to improve the palette - // and histogram weights are adjusted based on remapping error to give more weight to poorly matched colors - - const bool first_run_of_target_mse = !acolormap && target_mse > 0; - double total_error = viter_do_iteration(hist, newmap, options->min_opaque_val, first_run_of_target_mse ? NULL : adjust_histogram_callback, !acolormap || options->fast_palette); - - // goal is to increase quality or to reduce number of colors used if quality is good enough - if (!acolormap || total_error < least_error || (total_error <= target_mse && newmap->colors < max_colors)) { - if (acolormap) pam_freecolormap(acolormap); - acolormap = newmap; - - if (total_error < target_mse && total_error > 0) { - // voronoi iteration improves quality above what mediancut aims for - // this compensates for it, making mediancut aim for worse - target_mse_overshoot = MIN(target_mse_overshoot*1.25, target_mse/total_error); - } - - least_error = total_error; - - // if number of colors could be reduced, try to keep it that way - // but allow extra color as a bit of wiggle room in case quality can be improved too - max_colors = MIN(newmap->colors+1, max_colors); - - feedback_loop_trials -= 1; // asymptotic improvement could make it go on forever - } else { - for(unsigned int j=0; j < hist->size; j++) { - hist->achv[j].adjusted_weight = (hist->achv[j].perceptual_weight + hist->achv[j].adjusted_weight)/2.0; - } - - target_mse_overshoot = 1.0; - feedback_loop_trials -= 6; - // if error is really bad, it's unlikely to improve, so end sooner - if (total_error > least_error*4) feedback_loop_trials -= 3; - pam_freecolormap(newmap); - } - - liq_verbose_printf(options, " selecting colors...%d%%",100-MAX(0,(int)(feedback_loop_trials/percent))); - } - while(feedback_loop_trials > 0); - - // likely_colormap_index (used and set in viter_do_iteration) can't point to index outside colormap - if (acolormap->colors < 256) { - for(unsigned int j=0; j < hist->size; j++) { - if (hist->achv[j].tmp.likely_colormap_index >= acolormap->colors) { - hist->achv[j].tmp.likely_colormap_index = 0; // actual value doesn't matter, as the guess is out of date anyway - } - } - } - *palette_error_p = least_error; - return acolormap; -} - -static liq_result *pngquant_quantize(histogram *hist, const liq_attr *options, const double gamma) -{ - colormap *acolormap; - double palette_error = -1; - - // no point having perfect match with imperfect colors (ignorebits > 0) - const bool fast_palette = options->fast_palette || hist->ignorebits > 0; - - // If image has few colors to begin with (and no quality degradation is required) - // then it's possible to skip quantization entirely - if (hist->size <= options->max_colors && options->target_mse == 0) { - acolormap = pam_colormap(hist->size, options->malloc, options->free); - for(unsigned int i=0; i < hist->size; i++) { - acolormap->palette[i].acolor = hist->achv[i].acolor; - acolormap->palette[i].popularity = hist->achv[i].perceptual_weight; - } - palette_error = 0; - } else { - acolormap = find_best_palette(hist, options, &palette_error); - if (!acolormap) { - return NULL; - } - - // Voronoi iteration approaches local minimum for the palette - const double max_mse = options->max_mse; - const double iteration_limit = options->voronoi_iteration_limit; - unsigned int iterations = options->voronoi_iterations; - - if (!iterations && palette_error < 0 && max_mse < MAX_DIFF) iterations = 1; // otherwise total error is never calculated and MSE limit won't work - - if (iterations) { - verbose_print(options, " moving colormap towards local minimum"); - - double previous_palette_error = MAX_DIFF; - - for(unsigned int i=0; i < iterations; i++) { - palette_error = viter_do_iteration(hist, acolormap, options->min_opaque_val, NULL, i==0 || options->fast_palette); - - if (fabs(previous_palette_error-palette_error) < iteration_limit) { - break; - } - - if (palette_error > max_mse*1.5) { // probably hopeless - if (palette_error > max_mse*3.0) break; // definitely hopeless - iterations++; - } - - previous_palette_error = palette_error; - } - } - - if (palette_error > max_mse) { - liq_verbose_printf(options, " image degradation MSE=%.3f (Q=%d) exceeded limit of %.3f (%d)", - palette_error*65536.0/6.0, mse_to_quality(palette_error), - max_mse*65536.0/6.0, mse_to_quality(max_mse)); - pam_freecolormap(acolormap); - return NULL; - } - } - - sort_palette(acolormap, options); - - liq_result *result = options->malloc(sizeof(liq_result)); - if (!result) return NULL; - *result = (liq_result){ - .magic_header = liq_result_magic, - .malloc = options->malloc, - .free = options->free, - .palette = acolormap, - .palette_error = palette_error, - .fast_palette = fast_palette, - .use_dither_map = options->use_dither_map, - .gamma = gamma, - .min_posterization_output = options->min_posterization_output, - }; - return result; -} - -LIQ_EXPORT liq_error liq_write_remapped_image(liq_result *result, liq_image *input_image, void *buffer, size_t buffer_size) -{ - if (!CHECK_STRUCT_TYPE(result, liq_result)) { - return LIQ_INVALID_POINTER; - } - if (!CHECK_STRUCT_TYPE(input_image, liq_image)) { - return LIQ_INVALID_POINTER; - } - if (!CHECK_USER_POINTER(buffer)) { - return LIQ_INVALID_POINTER; - } - - const size_t required_size = input_image->width * input_image->height; - if (buffer_size < required_size) { - return LIQ_BUFFER_TOO_SMALL; - } - - unsigned char *rows[input_image->height]; - unsigned char *buffer_bytes = buffer; - for(unsigned int i=0; i < input_image->height; i++) { - rows[i] = &buffer_bytes[input_image->width * i]; - } - return liq_write_remapped_image_rows(result, input_image, rows); -} - -LIQ_EXPORT liq_error liq_write_remapped_image_rows(liq_result *quant, liq_image *input_image, unsigned char **row_pointers) -{ - if (!CHECK_STRUCT_TYPE(quant, liq_result)) return LIQ_INVALID_POINTER; - if (!CHECK_STRUCT_TYPE(input_image, liq_image)) return LIQ_INVALID_POINTER; - for(unsigned int i=0; i < input_image->height; i++) { - if (!CHECK_USER_POINTER(row_pointers+i) || !CHECK_USER_POINTER(row_pointers[i])) return LIQ_INVALID_POINTER; - } - - if (quant->remapping) { - liq_remapping_result_destroy(quant->remapping); - } - liq_remapping_result *const result = quant->remapping = liq_remapping_result_create(quant); - if (!result) return LIQ_OUT_OF_MEMORY; - - if (!input_image->edges && !input_image->dither_map && quant->use_dither_map) { - contrast_maps(input_image); - } - - /* - ** Step 4: map the colors in the image to their closest match in the - ** new colormap, and write 'em out. - */ - - float remapping_error = result->palette_error; - if (result->dither_level == 0) { - set_rounded_palette(&result->int_palette, result->palette, result->gamma, quant->min_posterization_output); - remapping_error = remap_to_palette(input_image, row_pointers, result->palette, quant->fast_palette); - } else { - const bool generate_dither_map = result->use_dither_map && (input_image->edges && !input_image->dither_map); - if (generate_dither_map) { - // If dithering (with dither map) is required, this image is used to find areas that require dithering - remapping_error = remap_to_palette(input_image, row_pointers, result->palette, quant->fast_palette); - update_dither_map(row_pointers, input_image); - } - - // remapping above was the last chance to do voronoi iteration, hence the final palette is set after remapping - set_rounded_palette(&result->int_palette, result->palette, result->gamma, quant->min_posterization_output); - - remap_to_palette_floyd(input_image, row_pointers, result->palette, - MAX(remapping_error*2.4, 16.f/256.f), result->use_dither_map, generate_dither_map, result->dither_level); - } - - // remapping error from dithered image is absurd, so always non-dithered value is used - // palette_error includes some perceptual weighting from histogram which is closer correlated with dssim - // so that should be used when possible. - if (result->palette_error < 0) { - result->palette_error = remapping_error; - } - - return LIQ_OK; -} diff --git a/third_party/pngquant/lib/libimagequant.h b/third_party/pngquant/lib/libimagequant.h deleted file mode 100644 index 60002d9cb..000000000 --- a/third_party/pngquant/lib/libimagequant.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * http://pngquant.org - */ - -#ifndef LIBIMAGEQUANT_H -#define LIBIMAGEQUANT_H - -#ifndef LIQ_EXPORT -#define LIQ_EXPORT extern -#endif -#ifndef LIQ_PRIVATE -#if defined(__GNUC__) || defined (__llvm__) -#define LIQ_PRIVATE __attribute__((visibility("hidden"))) -#else -#define LIQ_PRIVATE -#endif -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct liq_attr liq_attr; -typedef struct liq_image liq_image; -typedef struct liq_result liq_result; - -typedef struct liq_color { - unsigned char r, g, b, a; -} liq_color; - -typedef struct liq_palette { - unsigned int count; - liq_color entries[256]; -} liq_palette; - -typedef enum liq_error { - LIQ_OK = 0, - LIQ_QUALITY_TOO_LOW = 99, - LIQ_VALUE_OUT_OF_RANGE = 100, - LIQ_OUT_OF_MEMORY, - LIQ_NOT_READY, - LIQ_BITMAP_NOT_AVAILABLE, - LIQ_BUFFER_TOO_SMALL, - LIQ_INVALID_POINTER, -} liq_error; - -enum liq_ownership {LIQ_OWN_ROWS=4, LIQ_OWN_PIXELS=8}; - -LIQ_EXPORT liq_attr* liq_attr_create(void); -LIQ_EXPORT liq_attr* liq_attr_create_with_allocator(void* (*malloc)(size_t), void (*free)(void*)); -LIQ_EXPORT liq_attr* liq_attr_copy(liq_attr* orig); -LIQ_EXPORT void liq_attr_destroy(liq_attr* attr); - -LIQ_EXPORT liq_error liq_set_max_colors(liq_attr* attr, int colors); -LIQ_EXPORT int liq_get_max_colors(const liq_attr* attr); -LIQ_EXPORT liq_error liq_set_speed(liq_attr* attr, int speed); -LIQ_EXPORT int liq_get_speed(const liq_attr* attr); -LIQ_EXPORT liq_error liq_set_min_opacity(liq_attr* attr, int min); -LIQ_EXPORT int liq_get_min_opacity(const liq_attr* attr); -LIQ_EXPORT liq_error liq_set_min_posterization(liq_attr* attr, int bits); -LIQ_EXPORT int liq_get_min_posterization(const liq_attr* attr); -LIQ_EXPORT liq_error liq_set_quality(liq_attr* attr, int minimum, int maximum); -LIQ_EXPORT int liq_get_min_quality(const liq_attr* attr); -LIQ_EXPORT int liq_get_max_quality(const liq_attr* attr); -LIQ_EXPORT void liq_set_last_index_transparent(liq_attr* attr, int is_last); - -typedef void liq_log_callback_function(const liq_attr*, const char* message, void* user_info); -typedef void liq_log_flush_callback_function(const liq_attr*, void* user_info); -LIQ_EXPORT void liq_set_log_callback(liq_attr*, liq_log_callback_function*, void* user_info); -LIQ_EXPORT void liq_set_log_flush_callback(liq_attr*, liq_log_flush_callback_function*, void* user_info); - -LIQ_EXPORT liq_image* liq_image_create_rgba_rows(liq_attr* attr, void* rows[], int width, int height, double gamma); -LIQ_EXPORT liq_image* liq_image_create_rgba(liq_attr* attr, void* bitmap, int width, int height, double gamma); - -typedef void liq_image_get_rgba_row_callback(liq_color row_out[], int row, int width, void* user_info); -LIQ_EXPORT liq_image* liq_image_create_custom(liq_attr* attr, liq_image_get_rgba_row_callback* row_callback, void* user_info, int width, int height, double gamma); - -LIQ_EXPORT liq_error liq_image_set_memory_ownership(liq_image* image, int ownership_flags); -LIQ_EXPORT int liq_image_get_width(const liq_image* img); -LIQ_EXPORT int liq_image_get_height(const liq_image* img); -LIQ_EXPORT void liq_image_destroy(liq_image* img); - -LIQ_EXPORT liq_result* liq_quantize_image(liq_attr* options, liq_image* input_image); - -LIQ_EXPORT liq_error liq_set_dithering_level(liq_result* res, float dither_level); -LIQ_EXPORT liq_error liq_set_output_gamma(liq_result* res, double gamma); -LIQ_EXPORT double liq_get_output_gamma(const liq_result* result); - -LIQ_EXPORT const liq_palette* liq_get_palette(liq_result* result); - -LIQ_EXPORT liq_error liq_write_remapped_image(liq_result* result, liq_image* input_image, void* buffer, size_t buffer_size); -LIQ_EXPORT liq_error liq_write_remapped_image_rows(liq_result* result, liq_image* input_image, unsigned char** row_pointers); - -LIQ_EXPORT double liq_get_quantization_error(liq_result* result); -LIQ_EXPORT int liq_get_quantization_quality(liq_result* result); - -LIQ_EXPORT void liq_result_destroy(liq_result*); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/third_party/pngquant/lib/mediancut.c b/third_party/pngquant/lib/mediancut.c deleted file mode 100644 index b376c52a3..000000000 --- a/third_party/pngquant/lib/mediancut.c +++ /dev/null @@ -1,507 +0,0 @@ -/* -** Copyright (C) 1989, 1991 by Jef Poskanzer. -** Copyright (C) 1997, 2000, 2002 by Greg Roelofs; based on an idea by -** Stefan Schneider. -** © 2009-2013 by Kornel Lesinski. -** -** Permission to use, copy, modify, and distribute this software and its -** documentation for any purpose and without fee is hereby granted, provided -** that the above copyright notice appear in all copies and that both that -** copyright notice and this permission notice appear in supporting -** documentation. This software is provided "as is" without express or -** implied warranty. -*/ - -#include -#include - -#include "libimagequant.h" -#include "pam.h" -#include "mediancut.h" - -#define index_of_channel(ch) (offsetof(f_pixel,ch)/sizeof(float)) - -static f_pixel averagepixels(unsigned int clrs, const hist_item achv[], float min_opaque_val, const f_pixel center); - -struct box { - f_pixel color; - f_pixel variance; - double sum, total_error, max_error; - unsigned int ind; - unsigned int colors; -}; - -ALWAYS_INLINE static double variance_diff(double val, const double good_enough); -inline static double variance_diff(double val, const double good_enough) -{ - val *= val; - if (val < good_enough*good_enough) return val*0.25; - return val; -} - -/** Weighted per-channel variance of the box. It's used to decide which channel to split by */ -static f_pixel box_variance(const hist_item achv[], const struct box *box) -{ - f_pixel mean = box->color; - double variancea=0, variancer=0, varianceg=0, varianceb=0; - - for(unsigned int i = 0; i < box->colors; ++i) { - f_pixel px = achv[box->ind + i].acolor; - double weight = achv[box->ind + i].adjusted_weight; - variancea += variance_diff(mean.a - px.a, 2.0/256.0)*weight; - variancer += variance_diff(mean.r - px.r, 1.0/256.0)*weight; - varianceg += variance_diff(mean.g - px.g, 1.0/256.0)*weight; - varianceb += variance_diff(mean.b - px.b, 1.0/256.0)*weight; - } - - return (f_pixel){ - .a = variancea*(4.0/16.0), - .r = variancer*(7.0/16.0), - .g = varianceg*(9.0/16.0), - .b = varianceb*(5.0/16.0), - }; -} - -static double box_max_error(const hist_item achv[], const struct box *box) -{ - f_pixel mean = box->color; - double max_error = 0; - - for(unsigned int i = 0; i < box->colors; ++i) { - const double diff = colordifference(mean, achv[box->ind + i].acolor); - if (diff > max_error) { - max_error = diff; - } - } - return max_error; -} - -ALWAYS_INLINE static double color_weight(f_pixel median, hist_item h); - -static inline void hist_item_swap(hist_item *l, hist_item *r) -{ - if (l != r) { - hist_item t = *l; - *l = *r; - *r = t; - } -} - -ALWAYS_INLINE static unsigned int qsort_pivot(const hist_item *const base, const unsigned int len); -inline static unsigned int qsort_pivot(const hist_item *const base, const unsigned int len) -{ - if (len < 32) { - return len/2; - } - - const unsigned int aidx=8, bidx=len/2, cidx=len-1; - const unsigned int a=base[aidx].tmp.sort_value, b=base[bidx].tmp.sort_value, c=base[cidx].tmp.sort_value; - return (a < b) ? ((b < c) ? bidx : ((a < c) ? cidx : aidx )) - : ((b > c) ? bidx : ((a < c) ? aidx : cidx )); -} - -ALWAYS_INLINE static unsigned int qsort_partition(hist_item *const base, const unsigned int len); -inline static unsigned int qsort_partition(hist_item *const base, const unsigned int len) -{ - unsigned int l = 1, r = len; - if (len >= 8) { - hist_item_swap(&base[0], &base[qsort_pivot(base,len)]); - } - - const unsigned int pivot_value = base[0].tmp.sort_value; - while (l < r) { - if (base[l].tmp.sort_value >= pivot_value) { - l++; - } else { - while(l < --r && base[r].tmp.sort_value <= pivot_value) {} - hist_item_swap(&base[l], &base[r]); - } - } - l--; - hist_item_swap(&base[0], &base[l]); - - return l; -} - -/** quick select algorithm */ -static void hist_item_sort_range(hist_item *base, unsigned int len, unsigned int sort_start) -{ - for(;;) { - const unsigned int l = qsort_partition(base, len), r = l+1; - - if (l > 0 && sort_start < l) { - len = l; - } - else if (r < len && sort_start > r) { - base += r; len -= r; sort_start -= r; - } - else break; - } -} - -/** sorts array to make sum of weights lower than halfvar one side, returns edge between halfvar parts of the set */ -static hist_item *hist_item_sort_halfvar(hist_item *base, unsigned int len, double *const lowervar, const double halfvar) -{ - do { - const unsigned int l = qsort_partition(base, len), r = l+1; - - // check if sum of left side is smaller than half, - // if it is, then it doesn't need to be sorted - unsigned int t = 0; double tmpsum = *lowervar; - while (t <= l && tmpsum < halfvar) tmpsum += base[t++].color_weight; - - if (tmpsum < halfvar) { - *lowervar = tmpsum; - } else { - if (l > 0) { - hist_item *res = hist_item_sort_halfvar(base, l, lowervar, halfvar); - if (res) return res; - } else { - // End of left recursion. This will be executed in order from the first element. - *lowervar += base[0].color_weight; - if (*lowervar > halfvar) return &base[0]; - } - } - - if (len > r) { - base += r; len -= r; // tail-recursive "call" - } else { - *lowervar += base[r].color_weight; - return (*lowervar > halfvar) ? &base[r] : NULL; - } - } while(1); -} - -static f_pixel get_median(const struct box *b, hist_item achv[]); - -typedef struct { - unsigned int chan; float variance; -} channelvariance; - -static int comparevariance(const void *ch1, const void *ch2) -{ - return ((const channelvariance*)ch1)->variance > ((const channelvariance*)ch2)->variance ? -1 : - (((const channelvariance*)ch1)->variance < ((const channelvariance*)ch2)->variance ? 1 : 0); -} - -/** Finds which channels need to be sorted first and preproceses achv for fast sort */ -static double prepare_sort(struct box *b, hist_item achv[]) -{ - /* - ** Sort dimensions by their variance, and then sort colors first by dimension with highest variance - */ - channelvariance channels[4] = { - {index_of_channel(r), b->variance.r}, - {index_of_channel(g), b->variance.g}, - {index_of_channel(b), b->variance.b}, - {index_of_channel(a), b->variance.a}, - }; - - qsort(channels, 4, sizeof(channels[0]), comparevariance); - - for(unsigned int i=0; i < b->colors; i++) { - const float *chans = (const float *)&achv[b->ind + i].acolor; - // Only the first channel really matters. When trying median cut many times - // with different histogram weights, I don't want sort randomness to influence outcome. - achv[b->ind + i].tmp.sort_value = ((unsigned int)(chans[channels[0].chan]*65535.0)<<16) | - (unsigned int)((chans[channels[2].chan] + chans[channels[1].chan]/2.0 + chans[channels[3].chan]/4.0)*65535.0); - } - - const f_pixel median = get_median(b, achv); - - // box will be split to make color_weight of each side even - const unsigned int ind = b->ind, end = ind+b->colors; - double totalvar = 0; - for(unsigned int j=ind; j < end; j++) totalvar += (achv[j].color_weight = color_weight(median, achv[j])); - return totalvar / 2.0; -} - -/** finds median in unsorted set by sorting only minimum required */ -static f_pixel get_median(const struct box *b, hist_item achv[]) -{ - const unsigned int median_start = (b->colors-1)/2; - - hist_item_sort_range(&(achv[b->ind]), b->colors, - median_start); - - if (b->colors&1) return achv[b->ind + median_start].acolor; - - // technically the second color is not guaranteed to be sorted correctly - // but most of the time it is good enough to be useful - return averagepixels(2, &achv[b->ind + median_start], 1.0, (f_pixel){0.5,0.5,0.5,0.5}); -} - -/* - ** Find the best splittable box. -1 if no boxes are splittable. - */ -static int best_splittable_box(struct box* bv, unsigned int boxes, const double max_mse) -{ - int bi=-1; double maxsum=0; - for(unsigned int i=0; i < boxes; i++) { - if (bv[i].colors < 2) { - continue; - } - - // looks only at max variance, because it's only going to split by it - const double cv = MAX(bv[i].variance.r, MAX(bv[i].variance.g,bv[i].variance.b)); - double thissum = bv[i].sum * MAX(bv[i].variance.a, cv); - - if (bv[i].max_error > max_mse) { - thissum = thissum* bv[i].max_error/max_mse; - } - - if (thissum > maxsum) { - maxsum = thissum; - bi = i; - } - } - return bi; -} - -inline static double color_weight(f_pixel median, hist_item h) -{ - float diff = colordifference(median, h.acolor); - // if color is "good enough", don't split further - if (diff < 2.f/256.f/256.f) diff /= 2.f; - return sqrt(diff) * (sqrt(1.0+h.adjusted_weight)-1.0); -} - -static void set_colormap_from_boxes(colormap *map, struct box* bv, unsigned int boxes, hist_item *achv); -static void adjust_histogram(hist_item *achv, const colormap *map, const struct box* bv, unsigned int boxes); - -double box_error(const struct box *box, const hist_item achv[]) -{ - f_pixel avg = box->color; - - double total_error=0; - for (unsigned int i = 0; i < box->colors; ++i) { - total_error += colordifference(avg, achv[box->ind + i].acolor) * achv[box->ind + i].perceptual_weight; - } - - return total_error; -} - - -static bool total_box_error_below_target(double target_mse, struct box bv[], unsigned int boxes, const histogram *hist) -{ - target_mse *= hist->total_perceptual_weight; - double total_error=0; - - for(unsigned int i=0; i < boxes; i++) { - // error is (re)calculated lazily - if (bv[i].total_error >= 0) { - total_error += bv[i].total_error; - } - if (total_error > target_mse) return false; - } - - for(unsigned int i=0; i < boxes; i++) { - if (bv[i].total_error < 0) { - bv[i].total_error = box_error(&bv[i], hist->achv); - total_error += bv[i].total_error; - } - if (total_error > target_mse) return false; - } - - return true; -} - -/* - ** Here is the fun part, the median-cut colormap generator. This is based - ** on Paul Heckbert's paper, "Color Image Quantization for Frame Buffer - ** Display," SIGGRAPH 1982 Proceedings, page 297. - */ -LIQ_PRIVATE colormap *mediancut(histogram *hist, const float min_opaque_val, unsigned int newcolors, const double target_mse, const double max_mse, void* (*malloc)(size_t), void (*free)(void*)) -{ - hist_item *achv = hist->achv; - struct box bv[newcolors]; - - /* - ** Set up the initial box. - */ - bv[0].ind = 0; - bv[0].colors = hist->size; - bv[0].color = averagepixels(bv[0].colors, &achv[bv[0].ind], min_opaque_val, (f_pixel){0.5,0.5,0.5,0.5}); - bv[0].variance = box_variance(achv, &bv[0]); - bv[0].max_error = box_max_error(achv, &bv[0]); - bv[0].sum = 0; - bv[0].total_error = -1; - for(unsigned int i=0; i < bv[0].colors; i++) bv[0].sum += achv[i].adjusted_weight; - - unsigned int boxes = 1; - - // remember smaller palette for fast searching - colormap *representative_subset = NULL; - unsigned int subset_size = ceilf(powf(newcolors,0.7f)); - - /* - ** Main loop: split boxes until we have enough. - */ - while (boxes < newcolors) { - - if (boxes == subset_size) { - representative_subset = pam_colormap(boxes, malloc, free); - set_colormap_from_boxes(representative_subset, bv, boxes, achv); - } - - // first splits boxes that exceed quality limit (to have colors for things like odd green pixel), - // later raises the limit to allow large smooth areas/gradients get colors. - const double current_max_mse = max_mse + (boxes/(double)newcolors)*16.0*max_mse; - const int bi = best_splittable_box(bv, boxes, current_max_mse); - if (bi < 0) - break; /* ran out of colors! */ - - unsigned int indx = bv[bi].ind; - unsigned int clrs = bv[bi].colors; - - /* - Classic implementation tries to get even number of colors or pixels in each subdivision. - - Here, instead of popularity I use (sqrt(popularity)*variance) metric. - Each subdivision balances number of pixels (popular colors) and low variance - - boxes can be large if they have similar colors. Later boxes with high variance - will be more likely to be split. - - Median used as expected value gives much better results than mean. - */ - - const double halfvar = prepare_sort(&bv[bi], achv); - double lowervar=0; - - // hist_item_sort_halfvar sorts and sums lowervar at the same time - // returns item to break at …minus one, which does smell like an off-by-one error. - hist_item *break_p = hist_item_sort_halfvar(&achv[indx], clrs, &lowervar, halfvar); - unsigned int break_at = MIN(clrs-1, break_p - &achv[indx] + 1); - - /* - ** Split the box. - */ - double sm = bv[bi].sum; - double lowersum = 0; - for(unsigned int i=0; i < break_at; i++) lowersum += achv[indx + i].adjusted_weight; - - const f_pixel previous_center = bv[bi].color; - bv[bi].colors = break_at; - bv[bi].sum = lowersum; - bv[bi].color = averagepixels(bv[bi].colors, &achv[bv[bi].ind], min_opaque_val, previous_center); - bv[bi].total_error = -1; - bv[bi].variance = box_variance(achv, &bv[bi]); - bv[bi].max_error = box_max_error(achv, &bv[bi]); - bv[boxes].ind = indx + break_at; - bv[boxes].colors = clrs - break_at; - bv[boxes].sum = sm - lowersum; - bv[boxes].color = averagepixels(bv[boxes].colors, &achv[bv[boxes].ind], min_opaque_val, previous_center); - bv[boxes].total_error = -1; - bv[boxes].variance = box_variance(achv, &bv[boxes]); - bv[boxes].max_error = box_max_error(achv, &bv[boxes]); - - ++boxes; - - if (total_box_error_below_target(target_mse, bv, boxes, hist)) { - break; - } - } - - colormap *map = pam_colormap(boxes, malloc, free); - set_colormap_from_boxes(map, bv, boxes, achv); - - map->subset_palette = representative_subset; - adjust_histogram(achv, map, bv, boxes); - - return map; -} - -static void set_colormap_from_boxes(colormap *map, struct box* bv, unsigned int boxes, hist_item *achv) -{ - /* - ** Ok, we've got enough boxes. Now choose a representative color for - ** each box. There are a number of possible ways to make this choice. - ** One would be to choose the center of the box; this ignores any structure - ** within the boxes. Another method would be to average all the colors in - ** the box - this is the method specified in Heckbert's paper. - */ - - for(unsigned int bi = 0; bi < boxes; ++bi) { - map->palette[bi].acolor = bv[bi].color; - - /* store total color popularity (perceptual_weight is approximation of it) */ - map->palette[bi].popularity = 0; - for(unsigned int i=bv[bi].ind; i < bv[bi].ind+bv[bi].colors; i++) { - map->palette[bi].popularity += achv[i].perceptual_weight; - } - } -} - -/* increase histogram popularity by difference from the final color (this is used as part of feedback loop) */ -static void adjust_histogram(hist_item *achv, const colormap *map, const struct box* bv, unsigned int boxes) -{ - for(unsigned int bi = 0; bi < boxes; ++bi) { - for(unsigned int i=bv[bi].ind; i < bv[bi].ind+bv[bi].colors; i++) { - achv[i].adjusted_weight *= sqrt(1.0 +colordifference(map->palette[bi].acolor, achv[i].acolor)/4.0); - achv[i].tmp.likely_colormap_index = bi; - } - } -} - -static f_pixel averagepixels(unsigned int clrs, const hist_item achv[], const float min_opaque_val, const f_pixel center) -{ - double r = 0, g = 0, b = 0, a = 0, new_a=0, sum = 0; - float maxa = 0; - - // first find final opacity in order to blend colors at that opacity - for(unsigned int i = 0; i < clrs; ++i) { - const f_pixel px = achv[i].acolor; - new_a += px.a * achv[i].adjusted_weight; - sum += achv[i].adjusted_weight; - - /* find if there are opaque colors, in case we're supposed to preserve opacity exactly (ie_bug) */ - if (px.a > maxa) maxa = px.a; - } - - if (sum) new_a /= sum; - - /** if there was at least one completely opaque color, "round" final color to opaque */ - if (new_a >= min_opaque_val && maxa >= (255.0/256.0)) new_a = 1; - - sum=0; - // reverse iteration for cache locality with previous loop - for(int i = clrs-1; i >= 0; i--) { - double tmp, weight = 1.0f; - f_pixel px = achv[i].acolor; - - /* give more weight to colors that are further away from average - this is intended to prevent desaturation of images and fading of whites - */ - tmp = (center.r - px.r); - weight += tmp*tmp; - tmp = (center.g - px.g); - weight += tmp*tmp; - tmp = (center.b - px.b); - weight += tmp*tmp; - - weight *= achv[i].adjusted_weight; - sum += weight; - - if (px.a) { - px.r /= px.a; - px.g /= px.a; - px.b /= px.a; - } - - r += px.r * new_a * weight; - g += px.g * new_a * weight; - b += px.b * new_a * weight; - a += new_a * weight; - } - - if (sum) { - a /= sum; - r /= sum; - g /= sum; - b /= sum; - } - - assert(!isnan(r) && !isnan(g) && !isnan(b) && !isnan(a)); - - return (f_pixel){.r=r, .g=g, .b=b, .a=a}; -} diff --git a/third_party/pngquant/lib/mediancut.h b/third_party/pngquant/lib/mediancut.h deleted file mode 100644 index e615c8dc9..000000000 --- a/third_party/pngquant/lib/mediancut.h +++ /dev/null @@ -1,2 +0,0 @@ - -LIQ_PRIVATE colormap *mediancut(histogram *hist, const float min_opaque_val, unsigned int newcolors, const double target_mse, const double max_mse, void* (*malloc)(size_t), void (*free)(void*)); diff --git a/third_party/pngquant/lib/mempool.c b/third_party/pngquant/lib/mempool.c deleted file mode 100644 index 032d80ab2..000000000 --- a/third_party/pngquant/lib/mempool.c +++ /dev/null @@ -1,63 +0,0 @@ - -#include "libimagequant.h" -#include "mempool.h" -#include -#include -#include - -#define ALIGN_MASK 15UL -#define MEMPOOL_RESERVED ((sizeof(struct mempool)+ALIGN_MASK) & ~ALIGN_MASK) - -struct mempool { - unsigned int used, size; - void* (*malloc)(size_t); - void (*free)(void*); - struct mempool *next; -}; -LIQ_PRIVATE void* mempool_create(mempool *mptr, const unsigned int size, unsigned int max_size, void* (*malloc)(size_t), void (*free)(void*)) -{ - if (*mptr && ((*mptr)->used+size) <= (*mptr)->size) { - unsigned int prevused = (*mptr)->used; - (*mptr)->used += (size+15UL) & ~0xFUL; - return ((char*)(*mptr)) + prevused; - } - - mempool old = *mptr; - if (!max_size) max_size = (1<<17); - max_size = size+ALIGN_MASK > max_size ? size+ALIGN_MASK : max_size; - - *mptr = malloc(MEMPOOL_RESERVED + max_size); - if (!*mptr) return NULL; - **mptr = (struct mempool){ - .malloc = malloc, - .free = free, - .size = MEMPOOL_RESERVED + max_size, - .used = sizeof(struct mempool), - .next = old, - }; - uintptr_t mptr_used_start = (uintptr_t)(*mptr) + (*mptr)->used; - (*mptr)->used += (ALIGN_MASK + 1 - (mptr_used_start & ALIGN_MASK)) & ALIGN_MASK; // reserve bytes required to make subsequent allocations aligned - assert(!(((uintptr_t)(*mptr) + (*mptr)->used) & ALIGN_MASK)); - - return mempool_alloc(mptr, size, size); -} - -LIQ_PRIVATE void* mempool_alloc(mempool *mptr, unsigned int size, unsigned int max_size) -{ - if (((*mptr)->used+size) <= (*mptr)->size) { - unsigned int prevused = (*mptr)->used; - (*mptr)->used += (size + ALIGN_MASK) & ~ALIGN_MASK; - return ((char*)(*mptr)) + prevused; - } - - return mempool_create(mptr, size, max_size, (*mptr)->malloc, (*mptr)->free); -} - -LIQ_PRIVATE void mempool_destroy(mempool m) -{ - while (m) { - mempool next = m->next; - m->free(m); - m = next; - } -} diff --git a/third_party/pngquant/lib/mempool.h b/third_party/pngquant/lib/mempool.h deleted file mode 100644 index e61b8dd08..000000000 --- a/third_party/pngquant/lib/mempool.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef MEMPOOL_H -#define MEMPOOL_H - -#include - -struct mempool; -typedef struct mempool *mempool; - -LIQ_PRIVATE void* mempool_create(mempool *mptr, unsigned int size, unsigned int capacity, void* (*malloc)(size_t), void (*free)(void*)); -LIQ_PRIVATE void* mempool_alloc(mempool *mptr, unsigned int size, unsigned int capacity); -LIQ_PRIVATE void mempool_destroy(mempool m); - -#endif diff --git a/third_party/pngquant/lib/nearest.c b/third_party/pngquant/lib/nearest.c deleted file mode 100644 index e0a14d905..000000000 --- a/third_party/pngquant/lib/nearest.c +++ /dev/null @@ -1,241 +0,0 @@ - -#include "libimagequant.h" -#include "pam.h" -#include "nearest.h" -#include "mempool.h" -#include - -struct sorttmp { - float radius; - unsigned int index; -}; - -struct head { - // colors less than radius away from vantage_point color will have best match in candidates - f_pixel vantage_point; - float radius; - unsigned int num_candidates; - f_pixel *candidates_color; - unsigned short *candidates_index; -}; - -struct nearest_map { - const colormap *map; - float nearest_other_color_dist[256]; - mempool mempool; - struct head heads[]; -}; - -static unsigned int find_slow(const f_pixel px, const colormap *map) -{ - unsigned int best=0; - float bestdiff = colordifference(px, map->palette[0].acolor); - - for(unsigned int i=1; i < map->colors; i++) { - float diff = colordifference(px, map->palette[i].acolor); - if (diff < bestdiff) { - best = i; - bestdiff = diff; - } - } - return best; -} - -static float distance_from_nearest_other_color(const colormap *map, const unsigned int i) -{ - float second_best=MAX_DIFF; - for(unsigned int j=0; j < map->colors; j++) { - if (i == j) continue; - float diff = colordifference(map->palette[i].acolor, map->palette[j].acolor); - if (diff <= second_best) { - second_best = diff; - } - } - return second_best; -} - -static int compareradius(const void *ap, const void *bp) -{ - float a = ((const struct sorttmp*)ap)->radius; - float b = ((const struct sorttmp*)bp)->radius; - return a > b ? 1 : (a < b ? -1 : 0); -} - -static struct head build_head(f_pixel px, const colormap *map, unsigned int num_candidates, mempool *m, float error_margin, bool skip_index[], unsigned int *skipped) -{ - struct sorttmp colors[map->colors]; - unsigned int colorsused=0; - - for(unsigned int i=0; i < map->colors; i++) { - if (skip_index[i]) continue; // colors in skip_index have been eliminated already in previous heads - colors[colorsused].index = i; - colors[colorsused].radius = colordifference(px, map->palette[i].acolor); - colorsused++; - } - - qsort(&colors, colorsused, sizeof(colors[0]), compareradius); - assert(colorsused < 2 || colors[0].radius <= colors[1].radius); // closest first - - num_candidates = MIN(colorsused, num_candidates); - - struct head h = { - .candidates_color = mempool_alloc(m, num_candidates * sizeof(h.candidates_color[0]), 0), - .candidates_index = mempool_alloc(m, num_candidates * sizeof(h.candidates_index[0]), 0), - .vantage_point = px, - .num_candidates = num_candidates, - }; - for(unsigned int i=0; i < num_candidates; i++) { - h.candidates_color[i] = map->palette[colors[i].index].acolor; - h.candidates_index[i] = colors[i].index; - } - // if all colors within this radius are included in candidates, then there cannot be any other better match - // farther away from the vantage point than half of the radius. Due to alpha channel must assume pessimistic radius. - h.radius = min_colordifference(px, h.candidates_color[num_candidates-1])/4.0f; // /4 = half of radius, but radius is squared - - for(unsigned int i=0; i < num_candidates; i++) { - // divide again as that's matching certain subset within radius-limited subset - // - 1/256 is a tolerance for miscalculation (seems like colordifference isn't exact) - if (colors[i].radius < h.radius/4.f - error_margin) { - skip_index[colors[i].index]=true; - (*skipped)++; - } - } - return h; -} - -static colormap *get_subset_palette(const colormap *map) -{ - if (map->subset_palette) { - return map->subset_palette; - } - - unsigned int subset_size = (map->colors+3)/4; - colormap *subset_palette = pam_colormap(subset_size, map->malloc, map->free); - - for(unsigned int i=0; i < subset_size; i++) { - subset_palette->palette[i] = map->palette[i]; - } - - return subset_palette; -} - -LIQ_PRIVATE struct nearest_map *nearest_init(const colormap *map, bool fast) -{ - colormap *subset_palette = get_subset_palette(map); - const unsigned int num_vantage_points = map->colors > 16 ? MIN(map->colors/4, subset_palette->colors) : 0; - const unsigned long heads_size = sizeof(struct head) * (num_vantage_points+1); // +1 is fallback head - - const unsigned long mempool_size = (sizeof(f_pixel) + sizeof(unsigned int)) * subset_palette->colors * map->colors/5 + (1<<14); - mempool m = NULL; - struct nearest_map *centroids = mempool_create(&m, sizeof(*centroids) + heads_size /* heads array is appended to it */, mempool_size, map->malloc, map->free); - centroids->mempool = m; - - for(unsigned int i=0; i < map->colors; i++) { - const float dist = distance_from_nearest_other_color(map,i); - centroids->nearest_other_color_dist[i] = dist / 4.f; // half of squared distance - } - - centroids->map = map; - - unsigned int skipped=0; - assert(map->colors > 0); - bool skip_index[map->colors]; for(unsigned int j=0; j < map->colors; j++) skip_index[j]=false; - - // floats and colordifference calculations are not perfect - const float error_margin = fast ? 0 : 8.f/256.f/256.f; - unsigned int h=0; - for(; h < num_vantage_points; h++) { - unsigned int num_candiadtes = 1+(map->colors - skipped)/((1+num_vantage_points-h)/2); - - centroids->heads[h] = build_head(subset_palette->palette[h].acolor, map, num_candiadtes, ¢roids->mempool, error_margin, skip_index, &skipped); - if (centroids->heads[h].num_candidates == 0) { - break; - } - } - - // assumption that there is no better color within radius of vantage point color - // holds true only for colors within convex hull formed by palette colors. - // since finding proper convex hull is more than a few lines, this - // is a cheap shot at finding just few key points. - const f_pixel extrema[] = { - {.a=0,0,0,0}, - - {.a=.5,0,0,0}, {.a=.5,1,0,0}, - {.a=.5,0,0,1}, {.a=.5,1,0,1}, - {.a=.5,0,1,0}, {.a=.5,1,1,0}, - {.a=.5,0,1,1}, {.a=.5,1,1,1}, - - {.a=1,0,0,0}, {.a=1,1,0,0}, - {.a=1,0,0,1}, {.a=1,1,0,1}, - {.a=1,0,1,0}, {.a=1,1,1,0}, - {.a=1,0,1,1}, {.a=1,1,1,1}, - - {.a=1,.5, 0, 0}, {.a=1, 0,.5, 0}, {.a=1, 0, 0, .5}, - {.a=1,.5, 0, 1}, {.a=1, 0,.5, 1}, {.a=1, 0, 1, .5}, - {.a=1,.5, 1, 0}, {.a=1, 1,.5, 0}, {.a=1, 1, 0, .5}, - {.a=1,.5, 1, 1}, {.a=1, 1,.5, 1}, {.a=1, 1, 1, .5}, - }; - for(unsigned int i=0; i < sizeof(extrema)/sizeof(extrema[0]); i++) { - skip_index[find_slow(extrema[i], map)]=0; - } - - centroids->heads[h] = build_head((f_pixel){0,0,0,0}, map, map->colors, ¢roids->mempool, error_margin, skip_index, &skipped); - centroids->heads[h].radius = MAX_DIFF; - - // get_subset_palette could have created a copy - if (subset_palette != map->subset_palette) { - pam_freecolormap(subset_palette); - } - - return centroids; -} - -LIQ_PRIVATE unsigned int nearest_search(const struct nearest_map *centroids, const f_pixel px, int likely_colormap_index, const float min_opaque_val, float *diff) -{ - const bool iebug = px.a > min_opaque_val; - - const struct head *const heads = centroids->heads; - - assert(likely_colormap_index < centroids->map->colors); - const float guess_diff = colordifference(centroids->map->palette[likely_colormap_index].acolor, px); - if (guess_diff < centroids->nearest_other_color_dist[likely_colormap_index]) { - if (diff) *diff = guess_diff; - return likely_colormap_index; - } - - for(unsigned int i=0; /* last head will always be selected */ ; i++) { - float vantage_point_dist = colordifference(px, heads[i].vantage_point); - - if (vantage_point_dist <= heads[i].radius) { - assert(heads[i].num_candidates); - unsigned int ind=0; - float dist = colordifference(px, heads[i].candidates_color[0]); - - /* penalty for making holes in IE */ - if (iebug && heads[i].candidates_color[0].a < 1) { - dist += 1.f/1024.f; - } - - for(unsigned int j=1; j < heads[i].num_candidates; j++) { - float newdist = colordifference(px, heads[i].candidates_color[j]); - - /* penalty for making holes in IE */ - if (iebug && heads[i].candidates_color[j].a < 1) { - newdist += 1.f/1024.f; - } - - if (newdist < dist) { - dist = newdist; - ind = j; - } - } - if (diff) *diff = dist; - return heads[i].candidates_index[ind]; - } - } -} - -LIQ_PRIVATE void nearest_free(struct nearest_map *centroids) -{ - mempool_destroy(centroids->mempool); -} diff --git a/third_party/pngquant/lib/nearest.h b/third_party/pngquant/lib/nearest.h deleted file mode 100644 index 9745d9592..000000000 --- a/third_party/pngquant/lib/nearest.h +++ /dev/null @@ -1,8 +0,0 @@ -// -// nearest.h -// pngquant -// -struct nearest_map; -LIQ_PRIVATE struct nearest_map *nearest_init(const colormap *palette, const bool fast); -LIQ_PRIVATE unsigned int nearest_search(const struct nearest_map *map, const f_pixel px, const int palette_index_guess, const float min_opaque, float *diff); -LIQ_PRIVATE void nearest_free(struct nearest_map *map); diff --git a/third_party/pngquant/lib/pam.c b/third_party/pngquant/lib/pam.c deleted file mode 100644 index 647a8aa8d..000000000 --- a/third_party/pngquant/lib/pam.c +++ /dev/null @@ -1,278 +0,0 @@ -/* pam.c - pam (portable alpha map) utility library -** -** Copyright (C) 1989, 1991 by Jef Poskanzer. -** Copyright (C) 1997, 2000, 2002 by Greg Roelofs; based on an idea by -** Stefan Schneider. -** © 2009-2013 by Kornel Lesinski. -** -** Permission to use, copy, modify, and distribute this software and its -** documentation for any purpose and without fee is hereby granted, provided -** that the above copyright notice appear in all copies and that both that -** copyright notice and this permission notice appear in supporting -** documentation. This software is provided "as is" without express or -** implied warranty. -*/ - -#include -#include - -#include "libimagequant.h" -#include "pam.h" -#include "mempool.h" - -LIQ_PRIVATE bool pam_computeacolorhash(struct acolorhash_table *acht, const rgba_pixel *const pixels[], unsigned int cols, unsigned int rows, const unsigned char *importance_map) -{ - const unsigned int maxacolors = acht->maxcolors, ignorebits = acht->ignorebits; - const unsigned int channel_mask = 255U>>ignorebits<>ignorebits) ^ 0xFFU; - const unsigned int posterize_mask = channel_mask << 24 | channel_mask << 16 | channel_mask << 8 | channel_mask; - const unsigned int posterize_high_mask = channel_hmask << 24 | channel_hmask << 16 | channel_hmask << 8 | channel_hmask; - struct acolorhist_arr_head *const buckets = acht->buckets; - - unsigned int colors = acht->colors; - const unsigned int hash_size = acht->hash_size; - - const unsigned int stacksize = sizeof(acht->freestack)/sizeof(acht->freestack[0]); - struct acolorhist_arr_item **freestack = acht->freestack; - unsigned int freestackp=acht->freestackp; - - /* Go through the entire image, building a hash table of colors. */ - for(unsigned int row = 0; row < rows; ++row) { - - float boost=1.0; - for(unsigned int col = 0; col < cols; ++col) { - if (importance_map) { - boost = 0.5f+ (double)*importance_map++/255.f; - } - - // RGBA color is casted to long for easier hasing/comparisons - union rgba_as_int px = {pixels[row][col]}; - unsigned int hash; - if (!px.rgba.a) { - // "dirty alpha" has different RGBA values that end up being the same fully transparent color - px.l=0; hash=0; - } else { - // mask posterizes all 4 channels in one go - px.l = (px.l & posterize_mask) | ((px.l & posterize_high_mask) >> (8-ignorebits)); - // fancier hashing algorithms didn't improve much - hash = px.l % hash_size; - } - - /* head of the hash function stores first 2 colors inline (achl->used = 1..2), - to reduce number of allocations of achl->other_items. - */ - struct acolorhist_arr_head *achl = &buckets[hash]; - if (achl->inline1.color.l == px.l && achl->used) { - achl->inline1.perceptual_weight += boost; - continue; - } - if (achl->used) { - if (achl->used > 1) { - if (achl->inline2.color.l == px.l) { - achl->inline2.perceptual_weight += boost; - continue; - } - // other items are stored as an array (which gets reallocated if needed) - struct acolorhist_arr_item *other_items = achl->other_items; - unsigned int i = 0; - for (; i < achl->used-2; i++) { - if (other_items[i].color.l == px.l) { - other_items[i].perceptual_weight += boost; - goto continue_outer_loop; - } - } - - // the array was allocated with spare items - if (i < achl->capacity) { - other_items[i] = (struct acolorhist_arr_item){ - .color = px, - .perceptual_weight = boost, - }; - achl->used++; - ++colors; - continue; - } - - if (++colors > maxacolors) { - acht->colors = colors; - acht->freestackp = freestackp; - return false; - } - - struct acolorhist_arr_item *new_items; - unsigned int capacity; - if (!other_items) { // there was no array previously, alloc "small" array - capacity = 8; - if (freestackp <= 0) { - // estimate how many colors are going to be + headroom - const int mempool_size = ((acht->rows + rows-row) * 2 * colors / (acht->rows + row + 1) + 1024) * sizeof(struct acolorhist_arr_item); - new_items = mempool_alloc(&acht->mempool, sizeof(struct acolorhist_arr_item)*capacity, mempool_size); - } else { - // freestack stores previously freed (reallocated) arrays that can be reused - // (all pesimistically assumed to be capacity = 8) - new_items = freestack[--freestackp]; - } - } else { - // simply reallocs and copies array to larger capacity - capacity = achl->capacity*2 + 16; - if (freestackp < stacksize-1) { - freestack[freestackp++] = other_items; - } - const int mempool_size = ((acht->rows + rows-row) * 2 * colors / (acht->rows + row + 1) + 32*capacity) * sizeof(struct acolorhist_arr_item); - new_items = mempool_alloc(&acht->mempool, sizeof(struct acolorhist_arr_item)*capacity, mempool_size); - if (!new_items) return false; - memcpy(new_items, other_items, sizeof(other_items[0])*achl->capacity); - } - - achl->other_items = new_items; - achl->capacity = capacity; - new_items[i] = (struct acolorhist_arr_item){ - .color = px, - .perceptual_weight = boost, - }; - achl->used++; - } else { - // these are elses for first checks whether first and second inline-stored colors are used - achl->inline2.color.l = px.l; - achl->inline2.perceptual_weight = boost; - achl->used = 2; - ++colors; - } - } else { - achl->inline1.color.l = px.l; - achl->inline1.perceptual_weight = boost; - achl->used = 1; - ++colors; - } - - continue_outer_loop:; - } - - } - acht->colors = colors; - acht->cols = cols; - acht->rows += rows; - acht->freestackp = freestackp; - return true; -} - -LIQ_PRIVATE struct acolorhash_table *pam_allocacolorhash(unsigned int maxcolors, unsigned int surface, unsigned int ignorebits, void* (*malloc)(size_t), void (*free)(void*)) -{ - const unsigned int estimated_colors = MIN(maxcolors, surface/(ignorebits + (surface > 512*512 ? 5 : 4))); - const unsigned int hash_size = estimated_colors < 66000 ? 6673 : (estimated_colors < 200000 ? 12011 : 24019); - - mempool m = NULL; - const unsigned int buckets_size = hash_size * sizeof(struct acolorhist_arr_head); - const unsigned int mempool_size = sizeof(struct acolorhash_table) + buckets_size + estimated_colors * sizeof(struct acolorhist_arr_item); - struct acolorhash_table *t = mempool_create(&m, sizeof(*t) + buckets_size, mempool_size, malloc, free); - if (!t) return NULL; - *t = (struct acolorhash_table){ - .mempool = m, - .hash_size = hash_size, - .maxcolors = maxcolors, - .ignorebits = ignorebits, - }; - memset(t->buckets, 0, hash_size * sizeof(struct acolorhist_arr_head)); - return t; -} - -#define PAM_ADD_TO_HIST(entry) { \ - hist->achv[j].acolor = to_f(gamma_lut, entry.color.rgba); \ - total_weight += hist->achv[j].adjusted_weight = hist->achv[j].perceptual_weight = MIN(entry.perceptual_weight, max_perceptual_weight); \ - ++j; \ -} - -LIQ_PRIVATE histogram *pam_acolorhashtoacolorhist(const struct acolorhash_table *acht, const double gamma, void* (*malloc)(size_t), void (*free)(void*)) -{ - histogram *hist = malloc(sizeof(hist[0])); - if (!hist || !acht) return NULL; - *hist = (histogram){ - .achv = malloc(acht->colors * sizeof(hist->achv[0])), - .size = acht->colors, - .free = free, - .ignorebits = acht->ignorebits, - }; - if (!hist->achv) return NULL; - - float gamma_lut[256]; - to_f_set_gamma(gamma_lut, gamma); - - /* Limit perceptual weight to 1/10th of the image surface area to prevent - a single color from dominating all others. */ - float max_perceptual_weight = 0.1f * acht->cols * acht->rows; - double total_weight = 0; - - for(unsigned int j=0, i=0; i < acht->hash_size; ++i) { - const struct acolorhist_arr_head *const achl = &acht->buckets[i]; - if (achl->used) { - PAM_ADD_TO_HIST(achl->inline1); - - if (achl->used > 1) { - PAM_ADD_TO_HIST(achl->inline2); - - for(unsigned int k=0; k < achl->used-2; k++) { - PAM_ADD_TO_HIST(achl->other_items[k]); - } - } - } - } - - hist->total_perceptual_weight = total_weight; - return hist; -} - - -LIQ_PRIVATE void pam_freeacolorhash(struct acolorhash_table *acht) -{ - mempool_destroy(acht->mempool); -} - -LIQ_PRIVATE void pam_freeacolorhist(histogram *hist) -{ - hist->free(hist->achv); - hist->free(hist); -} - -LIQ_PRIVATE colormap *pam_colormap(unsigned int colors, void* (*malloc)(size_t), void (*free)(void*)) -{ - assert(colors > 0 && colors < 65536); - - colormap *map; - const size_t colors_size = colors * sizeof(map->palette[0]); - map = malloc(sizeof(colormap) + colors_size); - if (!map) return NULL; - *map = (colormap){ - .malloc = malloc, - .free = free, - .subset_palette = NULL, - .colors = colors, - }; - memset(map->palette, 0, colors_size); - return map; -} - -LIQ_PRIVATE colormap *pam_duplicate_colormap(colormap *map) -{ - colormap *dupe = pam_colormap(map->colors, map->malloc, map->free); - for(unsigned int i=0; i < map->colors; i++) { - dupe->palette[i] = map->palette[i]; - } - if (map->subset_palette) { - dupe->subset_palette = pam_duplicate_colormap(map->subset_palette); - } - return dupe; -} - -LIQ_PRIVATE void pam_freecolormap(colormap *c) -{ - if (c->subset_palette) pam_freecolormap(c->subset_palette); - c->free(c); -} - -LIQ_PRIVATE void to_f_set_gamma(float gamma_lut[], const double gamma) -{ - for(int i=0; i < 256; i++) { - gamma_lut[i] = pow((double)i/255.0, internal_gamma/gamma); - } -} - diff --git a/third_party/pngquant/lib/pam.h b/third_party/pngquant/lib/pam.h deleted file mode 100644 index 3355bcf65..000000000 --- a/third_party/pngquant/lib/pam.h +++ /dev/null @@ -1,279 +0,0 @@ -/* pam.h - pam (portable alpha map) utility library - ** - ** Colormap routines. - ** - ** Copyright (C) 1989, 1991 by Jef Poskanzer. - ** Copyright (C) 1997 by Greg Roelofs. - ** - ** Permission to use, copy, modify, and distribute this software and its - ** documentation for any purpose and without fee is hereby granted, provided - ** that the above copyright notice appear in all copies and that both that - ** copyright notice and this permission notice appear in supporting - ** documentation. This software is provided "as is" without express or - ** implied warranty. - */ - -#ifndef PAM_H -#define PAM_H - -#include -#include -#include -#include - -#ifndef MAX -# define MAX(a,b) ((a) > (b)? (a) : (b)) -# define MIN(a,b) ((a) < (b)? (a) : (b)) -#endif - -#define MAX_DIFF 1e20 - -#ifndef USE_SSE -# if defined(__SSE__) && (defined(WIN32) || defined(__WIN32__)) -# define USE_SSE 1 -# else -# define USE_SSE 0 -# endif -#endif - -#if USE_SSE -# include -# ifdef _MSC_VER -# include -# define SSE_ALIGN -# else -# define SSE_ALIGN __attribute__ ((aligned (16))) -# define cpuid(func,ax,bx,cx,dx)\ - __asm__ __volatile__ ("cpuid":\ - "=a" (ax), "=b" (bx), "=c" (cx), "=d" (dx) : "a" (func)); -#endif -#else -# define SSE_ALIGN -#endif - -#if defined(__GNUC__) || defined (__llvm__) -#define ALWAYS_INLINE __attribute__((always_inline)) inline -#define NEVER_INLINE __attribute__ ((noinline)) -#elif defined(_MSC_VER) -#define inline __inline -#define restrict __restrict -#define ALWAYS_INLINE __forceinline -#define NEVER_INLINE __declspec(noinline) -#else -#define ALWAYS_INLINE inline -#define NEVER_INLINE -#endif - -/* from pam.h */ - -typedef struct { - unsigned char r, g, b, a; -} rgba_pixel; - -typedef struct { - float a, r, g, b; -} SSE_ALIGN f_pixel; - -static const double internal_gamma = 0.5499; - -LIQ_PRIVATE void to_f_set_gamma(float gamma_lut[], const double gamma); - -/** - Converts 8-bit color to internal gamma and premultiplied alpha. - (premultiplied color space is much better for blending of semitransparent colors) - */ -ALWAYS_INLINE static f_pixel to_f(const float gamma_lut[], const rgba_pixel px); -inline static f_pixel to_f(const float gamma_lut[], const rgba_pixel px) -{ - float a = px.a/255.f; - - return (f_pixel) { - .a = a, - .r = gamma_lut[px.r]*a, - .g = gamma_lut[px.g]*a, - .b = gamma_lut[px.b]*a, - }; -} - -inline static rgba_pixel to_rgb(const float gamma, const f_pixel px) -{ - if (px.a < 1.f/256.f) { - return (rgba_pixel){0,0,0,0}; - } - - float r = px.r / px.a, - g = px.g / px.a, - b = px.b / px.a, - a = px.a; - - r = powf(r, gamma/internal_gamma); - g = powf(g, gamma/internal_gamma); - b = powf(b, gamma/internal_gamma); - - // 256, because numbers are in range 1..255.9999… rounded down - r *= 256.f; - g *= 256.f; - b *= 256.f; - a *= 256.f; - - return (rgba_pixel){ - .r = r>=255.f ? 255 : r, - .g = g>=255.f ? 255 : g, - .b = b>=255.f ? 255 : b, - .a = a>=255.f ? 255 : a, - }; -} - -ALWAYS_INLINE static double colordifference_ch(const double x, const double y, const double alphas); -inline static double colordifference_ch(const double x, const double y, const double alphas) -{ - // maximum of channel blended on white, and blended on black - // premultiplied alpha and backgrounds 0/1 shorten the formula - const double black = x-y, white = black+alphas; - return black*black + white*white; -} - -ALWAYS_INLINE static float colordifference_stdc(const f_pixel px, const f_pixel py); -inline static float colordifference_stdc(const f_pixel px, const f_pixel py) -{ - // px_b.rgb = px.rgb + 0*(1-px.a) // blend px on black - // px_b.a = px.a + 1*(1-px.a) - // px_w.rgb = px.rgb + 1*(1-px.a) // blend px on white - // px_w.a = px.a + 1*(1-px.a) - - // px_b.rgb = px.rgb // difference same as in opaque RGB - // px_b.a = 1 - // px_w.rgb = px.rgb - px.a // difference simplifies to formula below - // px_w.a = 1 - - // (px.rgb - px.a) - (py.rgb - py.a) - // (px.rgb - py.rgb) + (py.a - px.a) - - const double alphas = py.a-px.a; - return colordifference_ch(px.r, py.r, alphas) + - colordifference_ch(px.g, py.g, alphas) + - colordifference_ch(px.b, py.b, alphas); -} - -ALWAYS_INLINE static double min_colordifference_ch(const double x, const double y, const double alphas); -inline static double min_colordifference_ch(const double x, const double y, const double alphas) -{ - const double black = x-y, white = black+alphas; - return MIN(black*black , white*white) * 2.f; -} - -/* least possible difference between colors (difference varies depending on background they're blended on) */ -ALWAYS_INLINE static float min_colordifference(const f_pixel px, const f_pixel py); -inline static float min_colordifference(const f_pixel px, const f_pixel py) -{ - const double alphas = py.a-px.a; - return min_colordifference_ch(px.r, py.r, alphas) + - min_colordifference_ch(px.g, py.g, alphas) + - min_colordifference_ch(px.b, py.b, alphas); -} - -ALWAYS_INLINE static float colordifference(f_pixel px, f_pixel py); -inline static float colordifference(f_pixel px, f_pixel py) -{ -#if USE_SSE - const __m128 vpx = _mm_load_ps((const float*)&px); - const __m128 vpy = _mm_load_ps((const float*)&py); - - // y.a - x.a - __m128 alphas = _mm_sub_ss(vpy, vpx); - alphas = _mm_shuffle_ps(alphas,alphas,0); // copy first to all four - - __m128 onblack = _mm_sub_ps(vpx, vpy); // x - y - __m128 onwhite = _mm_add_ps(onblack, alphas); // x - y + (y.a - x.a) - - onblack = _mm_mul_ps(onblack, onblack); - onwhite = _mm_mul_ps(onwhite, onwhite); - const __m128 max = _mm_add_ps(onwhite, onblack); - - // add rgb, not a - const __m128 maxhl = _mm_movehl_ps(max, max); - const __m128 tmp = _mm_add_ps(max, maxhl); - const __m128 sum = _mm_add_ss(maxhl, _mm_shuffle_ps(tmp, tmp, 1)); - - const float res = _mm_cvtss_f32(sum); - assert(fabs(res - colordifference_stdc(px,py)) < 0.001); - return res; -#else - return colordifference_stdc(px,py); -#endif -} - -/* from pamcmap.h */ -union rgba_as_int { - rgba_pixel rgba; - unsigned int l; -}; - -typedef struct { - f_pixel acolor; - float adjusted_weight, // perceptual weight changed to tweak how mediancut selects colors - perceptual_weight; // number of pixels weighted by importance of different areas of the picture - - float color_weight; // these two change every time histogram subset is sorted - union { - unsigned int sort_value; - unsigned char likely_colormap_index; - } tmp; -} hist_item; - -typedef struct { - hist_item *achv; - void (*free)(void*); - double total_perceptual_weight; - unsigned int size; - unsigned int ignorebits; -} histogram; - -typedef struct { - f_pixel acolor; - float popularity; -} colormap_item; - -typedef struct colormap { - unsigned int colors; - void* (*malloc)(size_t); - void (*free)(void*); - struct colormap *subset_palette; - colormap_item palette[]; -} colormap; - -struct acolorhist_arr_item { - union rgba_as_int color; - float perceptual_weight; -}; - -struct acolorhist_arr_head { - unsigned int used, capacity; - struct { - union rgba_as_int color; - float perceptual_weight; - } inline1, inline2; - struct acolorhist_arr_item *other_items; -}; - -struct acolorhash_table { - struct mempool *mempool; - unsigned int ignorebits, maxcolors, colors, cols, rows; - unsigned int hash_size; - unsigned int freestackp; - struct acolorhist_arr_item *freestack[512]; - struct acolorhist_arr_head buckets[]; -}; - -LIQ_PRIVATE void pam_freeacolorhash(struct acolorhash_table *acht); -LIQ_PRIVATE struct acolorhash_table *pam_allocacolorhash(unsigned int maxcolors, unsigned int surface, unsigned int ignorebits, void* (*malloc)(size_t), void (*free)(void*)); -LIQ_PRIVATE histogram *pam_acolorhashtoacolorhist(const struct acolorhash_table *acht, const double gamma, void* (*malloc)(size_t), void (*free)(void*)); -LIQ_PRIVATE bool pam_computeacolorhash(struct acolorhash_table *acht, const rgba_pixel *const pixels[], unsigned int cols, unsigned int rows, const unsigned char *importance_map); - -LIQ_PRIVATE void pam_freeacolorhist(histogram *h); - -LIQ_PRIVATE colormap *pam_colormap(unsigned int colors, void* (*malloc)(size_t), void (*free)(void*)); -LIQ_PRIVATE colormap *pam_duplicate_colormap(colormap *map); -LIQ_PRIVATE void pam_freecolormap(colormap *c); - -#endif diff --git a/third_party/pngquant/lib/viter.c b/third_party/pngquant/lib/viter.c deleted file mode 100644 index 109a165b6..000000000 --- a/third_party/pngquant/lib/viter.c +++ /dev/null @@ -1,89 +0,0 @@ - -#include "libimagequant.h" -#include "pam.h" -#include "viter.h" -#include "nearest.h" -#include -#include - -#ifdef _OPENMP -#include -#else -#define omp_get_max_threads() 1 -#define omp_get_thread_num() 0 -#endif - -/* - * Voronoi iteration: new palette color is computed from weighted average of colors that map to that palette entry. - */ -LIQ_PRIVATE void viter_init(const colormap *map, const unsigned int max_threads, viter_state average_color[]) -{ - memset(average_color, 0, sizeof(average_color[0])*(VITER_CACHE_LINE_GAP+map->colors)*max_threads); -} - -LIQ_PRIVATE void viter_update_color(const f_pixel acolor, const float value, const colormap *map, unsigned int match, const unsigned int thread, viter_state average_color[]) -{ - match += thread * (VITER_CACHE_LINE_GAP+map->colors); - average_color[match].a += acolor.a * value; - average_color[match].r += acolor.r * value; - average_color[match].g += acolor.g * value; - average_color[match].b += acolor.b * value; - average_color[match].total += value; -} - -LIQ_PRIVATE void viter_finalize(colormap *map, const unsigned int max_threads, const viter_state average_color[]) -{ - for (unsigned int i=0; i < map->colors; i++) { - double a=0, r=0, g=0, b=0, total=0; - - // Aggregate results from all threads - for(unsigned int t=0; t < max_threads; t++) { - const unsigned int offset = (VITER_CACHE_LINE_GAP+map->colors) * t + i; - - a += average_color[offset].a; - r += average_color[offset].r; - g += average_color[offset].g; - b += average_color[offset].b; - total += average_color[offset].total; - } - - if (total) { - map->palette[i].acolor = (f_pixel){ - .a = a / total, - .r = r / total, - .g = g / total, - .b = b / total, - }; - } - map->palette[i].popularity = total; - } -} - -LIQ_PRIVATE double viter_do_iteration(histogram *hist, colormap *const map, const float min_opaque_val, viter_callback callback, const bool fast_palette) -{ - const unsigned int max_threads = omp_get_max_threads(); - viter_state average_color[(VITER_CACHE_LINE_GAP+map->colors) * max_threads]; - viter_init(map, max_threads, average_color); - struct nearest_map *const n = nearest_init(map, fast_palette); - hist_item *const achv = hist->achv; - const int hist_size = hist->size; - - double total_diff=0; - #pragma omp parallel for if (hist_size > 3000) \ - schedule(static) default(none) shared(average_color,callback) reduction(+:total_diff) - for(int j=0; j < hist_size; j++) { - float diff; - unsigned int match = nearest_search(n, achv[j].acolor, achv[j].tmp.likely_colormap_index, min_opaque_val, &diff); - achv[j].tmp.likely_colormap_index = match; - total_diff += diff * achv[j].perceptual_weight; - - viter_update_color(achv[j].acolor, achv[j].perceptual_weight, map, match, omp_get_thread_num(), average_color); - - if (callback) callback(&achv[j], diff); - } - - nearest_free(n); - viter_finalize(map, max_threads, average_color); - - return total_diff / hist->total_perceptual_weight; -} diff --git a/third_party/pngquant/lib/viter.h b/third_party/pngquant/lib/viter.h deleted file mode 100644 index c1a5b391a..000000000 --- a/third_party/pngquant/lib/viter.h +++ /dev/null @@ -1,19 +0,0 @@ - -#ifndef VITER_H -#define VITER_H - -// Spread memory touched by different threads at least 64B apart which I assume is the cache line size. This should avoid memory write contention. -#define VITER_CACHE_LINE_GAP ((64+sizeof(viter_state)-1)/sizeof(viter_state)) - -typedef struct { - double a, r, g, b, total; -} viter_state; - -typedef void (*viter_callback)(hist_item *item, float diff); - -LIQ_PRIVATE void viter_init(const colormap *map, const unsigned int max_threads, viter_state state[]); -LIQ_PRIVATE void viter_update_color(const f_pixel acolor, const float value, const colormap *map, unsigned int match, const unsigned int thread, viter_state average_color[]); -LIQ_PRIVATE void viter_finalize(colormap *map, const unsigned int max_threads, const viter_state state[]); -LIQ_PRIVATE double viter_do_iteration(histogram *hist, colormap *const map, const float min_opaque_val, viter_callback callback, const bool fast_palette); - -#endif diff --git a/third_party/pngquant/pngquant.1 b/third_party/pngquant/pngquant.1 deleted file mode 100644 index b666c6f41..000000000 --- a/third_party/pngquant/pngquant.1 +++ /dev/null @@ -1,129 +0,0 @@ -.Dd 2013-02-25 -.Dt pngquant 1 -.Sh NAME -.Nm pngquant -.Nd PNG converter and lossy image compressor -.Sh SYNOPSIS -.Nm -.Aq options -.Op ncolors -.Pa file -.Op Ar -.Nm -.Aq options -.Op ncolors -.Fl -.Cm < Ns Pa file -.Cm > Ns Pa file -.Sh DESCRIPTION -.Nm -converts 32-bit RGBA PNGs to 8-bit (or smaller) RGBA-palette PNGs, optionally using Floyd-Steinberg dithering. -The output filename is the same as the input name except that it ends in -.Ql -fs8.png -or -.Ql -or8.png -(unless the input is stdin, in which case the quantized image will go to stdout). -The default behavior if the output file exists is to skip the conversion; use -.Fl Fl force -to overwrite. -.Sh OPTIONS -.Bl -tag -width -indent -.It Fl o Ar out.png , Fl Fl output Ar out.png -Writes converted file to the given path. When this option is used only single input file is allowed. -.It Fl Fl ext Ar new.png -File extension (suffix) to use for output files instead of the default -.Ql -fs8.png -or -.Ql -or8.png . -.It Fl f , Fl Fl force -Overwrite existing output files. -.Do -.Fl Fl ext -.Ar .png -.Fl Fl force -.Dc -can be used to convert files in place (which is unsafe). -.It Fl Fl nofs , Fl Fl ordered -Disable Floyd-Steinberg dithering. -.It Fl Fl floyd Op Ar =N -Set dithering level using fractional number between -.Cm 0 -(none) and -.Cm 1 -(full, the default). -.It Fl s Ar N , Fl Fl speed Ar N -.Cm 1 -(brute-force) to -.Cm 11 -(fastest). The default is -.Cm 3 . -Speed -.Cm 10 -has 5% lower quality, but is about 8 times faster than the default. Speed 11 disables dithering and lowers compression level. -.It Fl Q Ar min-max , Fl Fl quality Ar min-max -.Va min -and -.Va max -are numbers in range -.Cm 0 -(worst) to -.Cm 100 -(perfect), similar to JPEG. -.Nm -will use the least amount of colors required to meet or exceed the -.Va max -quality. If conversion results in quality below the -.Va min -quality the image won't be saved (or if outputting to stdin, 24-bit original will be output) and pngquant will exit with status code -.Er 99 . -.It Fl Fl skip-if-larger -If conversion results in a file larger than the original the image won't be saved and pngquant will exit with status code -.Er 98 . -Additionally, file size gain must be greater than the amount of quality lost. -.It Fl Fl posterize Ar bits -Truncate number of least significant bits of color (per channel). Use this when image will be output on low-depth displays (e.g. 16-bit RGB). -.It Fl Fl iebug -Workaround for Internet Explorer 6, which only displays fully opaque pixels. -.Nm -will make almost-opaque pixels fully opaque and will reduce amount of semi-transparent colors. When this option is enabled the default filename suffix is -.Ql -ie-fs8.png -/ -.Ql -ie-or8.png . -.It Fl Fl transbug -Workaround for readers that expect fully transparent color to be the last entry in the palette. -.It Fl v , Fl Fl verbose -Enable verbose messages showing progress and information about input/output. Opposite is -.Fl Fl quiet . -Errors are output to -.Pa stderr -regardless of this option. -.It Fl V , Fl Fl version -Display version on -.Pa stdout -and exit. -.It Fl h , Fl Fl help -Display help and exit. -.El -.Sh EXAMPLE -Creating a new image with the number of colors reduced to 64: -.Bd -ragged -offset indent -.Nm -.Cm 64 image.png -.Ed -.Pp -The resulting image will have 64 colors and will be saved as -.Pa image-fs8.png . -.Pp -Overwriting image in-place if it can be reduced without too much quality loss: -.Bd -ragged -offset indent -.Nm -.Cm -f --ext .png --quality 70-95 image.png -.Ed -.Sh AUTHOR -.Nm -is developed by Kornel Lesinski -.Aq Mt kornel@pngquant.org -based on code by Greg Roelofs -.Aq Mt newt@pobox.com . -.Pp -.Lk http://pngquant.org "pngquant homepage" . diff --git a/third_party/pngquant/pngquant.c b/third_party/pngquant/pngquant.c deleted file mode 100644 index 0053aa6aa..000000000 --- a/third_party/pngquant/pngquant.c +++ /dev/null @@ -1,822 +0,0 @@ -/* pngquant.c - quantize the colors in an alphamap down to a specified number -** -** Copyright (C) 1989, 1991 by Jef Poskanzer. -** -** Permission to use, copy, modify, and distribute this software and its -** documentation for any purpose and without fee is hereby granted, provided -** that the above copyright notice appear in all copies and that both that -** copyright notice and this permission notice appear in supporting -** documentation. This software is provided "as is" without express or -** implied warranty. -** -** - - - - -** -** © 1997-2002 by Greg Roelofs; based on an idea by Stefan Schneider. -** © 2009-2014 by Kornel Lesiński. -** -** All rights reserved. -** -** Redistribution and use in source and binary forms, with or without modification, -** are permitted provided that the following conditions are met: -** -** 1. Redistributions of source code must retain the above copyright notice, -** this list of conditions and the following disclaimer. -** -** 2. Redistributions in binary form must reproduce the above copyright notice, -** this list of conditions and the following disclaimer in the documentation -** and/or other materials provided with the distribution. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -** -*/ - -#define PNGQUANT_VERSION "2.3.0 (July 2014)" - -#define PNGQUANT_USAGE "\ -usage: pngquant [options] [ncolors] [pngfile [pngfile ...]]\n\n\ -options:\n\ - --force overwrite existing output files (synonym: -f)\n\ - --nofs disable Floyd-Steinberg dithering\n\ - --ext new.png set custom suffix/extension for output filename\n\ - --output file output path, only if one input file is specified (synonym: -o)\n\ - --speed N speed/quality trade-off. 1=slow, 3=default, 11=fast & rough\n\ - --quality min-max don't save below min, use less colors below max (0-100)\n\ - --verbose print status messages (synonym: -v)\n\ -\n\ -Quantizes one or more 32-bit RGBA PNGs to 8-bit (or smaller) RGBA-palette\n\ -PNGs using Floyd-Steinberg diffusion dithering (unless disabled).\n\ -The output filename is the same as the input name except that\n\ -it ends in \"-fs8.png\", \"-or8.png\" or your custom extension (unless the\n\ -input is stdin, in which case the quantized image will go to stdout).\n\ -The default behavior if the output file exists is to skip the conversion;\n\ -use --force to overwrite.\n" - - -#include -#include -#include -#include -#include -#include - -extern char *optarg; -extern int optind, opterr; - -#if defined(WIN32) || defined(__WIN32__) -# include /* O_BINARY */ -# include /* setmode() */ -#endif - -#ifdef _OPENMP -#include -#else -#define omp_get_max_threads() 1 -#define omp_get_thread_num() 0 -#endif - -#include "rwpng.h" /* typedefs, common macros, public prototypes */ -#include "lib/libimagequant.h" - -struct pngquant_options { - liq_attr *liq; - liq_image *fixed_palette_image; - liq_log_callback_function *log_callback; - void *log_callback_user_info; - float floyd; - bool using_stdin, force, fast_compression, ie_mode, - min_quality_limit, skip_if_larger, - verbose; -}; - -static pngquant_error prepare_output_image(liq_result *result, liq_image *input_image, png8_image *output_image); -static void set_palette(liq_result *result, png8_image *output_image); -static pngquant_error read_image(liq_attr *options, const char *filename, int using_stdin, png24_image *input_image_p, liq_image **liq_image_p, bool keep_input_pixels, bool verbose); -static pngquant_error write_image(png8_image *output_image, png24_image *output_image24, const char *outname, struct pngquant_options *options); -static char *add_filename_extension(const char *filename, const char *newext); -static bool file_exists(const char *outname); - -static void verbose_printf(struct pngquant_options *context, const char *fmt, ...) -{ - if (context->log_callback) { - va_list va; - va_start(va, fmt); - int required_space = vsnprintf(NULL, 0, fmt, va)+1; // +\0 - va_end(va); - - char buf[required_space]; - va_start(va, fmt); - vsnprintf(buf, required_space, fmt, va); - va_end(va); - - context->log_callback(context->liq, buf, context->log_callback_user_info); - } -} - -static void log_callback(const liq_attr *attr, const char *msg, void* user_info) -{ - fprintf(stderr, "%s\n", msg); -} - -#ifdef _OPENMP -#define LOG_BUFFER_SIZE 1300 -struct buffered_log { - int buf_used; - char buf[LOG_BUFFER_SIZE]; -}; - -static void log_callback_buferred_flush(const liq_attr *attr, void *context) -{ - struct buffered_log *log = context; - if (log->buf_used) { - fwrite(log->buf, 1, log->buf_used, stderr); - fflush(stderr); - log->buf_used = 0; - } -} - -static void log_callback_buferred(const liq_attr *attr, const char *msg, void* context) -{ - struct buffered_log *log = context; - int len = strlen(msg); - if (len > LOG_BUFFER_SIZE-2) len = LOG_BUFFER_SIZE-2; - - if (len > LOG_BUFFER_SIZE - log->buf_used - 2) log_callback_buferred_flush(attr, log); - memcpy(&log->buf[log->buf_used], msg, len); - log->buf_used += len+1; - log->buf[log->buf_used-1] = '\n'; - log->buf[log->buf_used] = '\0'; -} -#endif - -static void print_full_version(FILE *fd) -{ - fprintf(fd, "pngquant, %s, by Greg Roelofs, Kornel Lesinski.\n" - #ifndef NDEBUG - " DEBUG (slow) version.\n" /* NDEBUG disables assert() */ - #endif - #if USE_SSE - " Compiled with SSE instructions.\n" - #endif - #if _OPENMP - " Compiled with OpenMP (multicore support).\n" - #endif - , PNGQUANT_VERSION); - rwpng_version_info(fd); - fputs("\n", fd); -} - -static void print_usage(FILE *fd) -{ - fputs(PNGQUANT_USAGE, fd); -} - -/** - * N = automatic quality, uses limit unless force is set (N-N or 0-N) - * -N = no better than N (same as 0-N) - * N-M = no worse than N, no better than M - * N- = no worse than N, perfect if possible (same as N-100) - * - * where N,M are numbers between 0 (lousy) and 100 (perfect) - */ -static bool parse_quality(const char *quality, liq_attr *options, bool *min_quality_limit) -{ - long limit, target; - const char *str = quality; char *end; - - long t1 = strtol(str, &end, 10); - if (str == end) return false; - str = end; - - if ('\0' == end[0] && t1 < 0) { // quality="-%d" - target = -t1; - limit = 0; - } else if ('\0' == end[0]) { // quality="%d" - target = t1; - limit = t1*9/10; - } else if ('-' == end[0] && '\0' == end[1]) { // quality="%d-" - target = 100; - limit = t1; - } else { // quality="%d-%d" - long t2 = strtol(str, &end, 10); - if (str == end || t2 > 0) return false; - target = -t2; - limit = t1; - } - - *min_quality_limit = (limit > 0); - return LIQ_OK == liq_set_quality(options, limit, target); -} - -static const struct {const char *old; const char *newopt;} obsolete_options[] = { - {"-fs","--floyd=1"}, - {"-nofs", "--ordered"}, - {"-floyd", "--floyd=1"}, - {"-nofloyd", "--ordered"}, - {"-ordered", "--ordered"}, - {"-force", "--force"}, - {"-noforce", "--no-force"}, - {"-verbose", "--verbose"}, - {"-quiet", "--quiet"}, - {"-noverbose", "--quiet"}, - {"-noquiet", "--verbose"}, - {"-help", "--help"}, - {"-version", "--version"}, - {"-ext", "--ext"}, - {"-speed", "--speed"}, -}; - -static void fix_obsolete_options(const unsigned int argc, char *argv[]) -{ - for(unsigned int argn=1; argn < argc; argn++) { - if ('-' != argv[argn][0]) continue; - - if ('-' == argv[argn][1]) break; // stop on first --option or -- - - for(unsigned int i=0; i < sizeof(obsolete_options)/sizeof(obsolete_options[0]); i++) { - if (0 == strcmp(obsolete_options[i].old, argv[argn])) { - fprintf(stderr, " warning: option '%s' has been replaced with '%s'.\n", obsolete_options[i].old, obsolete_options[i].newopt); - argv[argn] = (char*)obsolete_options[i].newopt; - } - } - } -} - -enum {arg_floyd=1, arg_ordered, arg_ext, arg_no_force, arg_iebug, - arg_transbug, arg_map, arg_posterize, arg_skip_larger}; - -static const struct option long_options[] = { - {"verbose", no_argument, NULL, 'v'}, - {"quiet", no_argument, NULL, 'q'}, - {"force", no_argument, NULL, 'f'}, - {"no-force", no_argument, NULL, arg_no_force}, - {"floyd", optional_argument, NULL, arg_floyd}, - {"ordered", no_argument, NULL, arg_ordered}, - {"nofs", no_argument, NULL, arg_ordered}, - {"iebug", no_argument, NULL, arg_iebug}, - {"transbug", no_argument, NULL, arg_transbug}, - {"ext", required_argument, NULL, arg_ext}, - {"skip-if-larger", no_argument, NULL, arg_skip_larger}, - {"output", required_argument, NULL, 'o'}, - {"speed", required_argument, NULL, 's'}, - {"quality", required_argument, NULL, 'Q'}, - {"posterize", required_argument, NULL, arg_posterize}, - {"map", required_argument, NULL, arg_map}, - {"version", no_argument, NULL, 'V'}, - {"help", no_argument, NULL, 'h'}, - {NULL, 0, NULL, 0}, -}; - -pngquant_error pngquant_file(const char *filename, const char *outname, struct pngquant_options *options); - - -int main(int argc, char *argv[]) -{ - struct pngquant_options options = { - .floyd = 1.f, // floyd-steinberg dithering - }; - options.liq = liq_attr_create(); - - if (!options.liq) { - fputs("SSE-capable CPU is required for this build.\n", stderr); - return WRONG_ARCHITECTURE; - } - - unsigned int error_count=0, skipped_count=0, file_count=0; - pngquant_error latest_error=SUCCESS; - const char *newext = NULL, *output_file_path = NULL; - - fix_obsolete_options(argc, argv); - - int opt; - do { - opt = getopt_long(argc, argv, "Vvqfhs:Q:o:", long_options, NULL); - switch (opt) { - case 'v': - options.verbose = true; - break; - case 'q': - options.verbose = false; - break; - - case arg_floyd: - options.floyd = optarg ? atof(optarg) : 1.0; - if (options.floyd < 0 || options.floyd > 1.f) { - fputs("--floyd argument must be in 0..1 range\n", stderr); - return INVALID_ARGUMENT; - } - break; - case arg_ordered: options.floyd = 0; break; - - case 'f': options.force = true; break; - case arg_no_force: options.force = false; break; - - case arg_ext: newext = optarg; break; - case 'o': - if (output_file_path) { - fputs("--output option can be used only once\n", stderr); - return INVALID_ARGUMENT; - } - output_file_path = optarg; break; - - case arg_iebug: - // opacities above 238 will be rounded up to 255, because IE6 truncates <255 to 0. - liq_set_min_opacity(options.liq, 238); - options.ie_mode = true; - break; - - case arg_transbug: - liq_set_last_index_transparent(options.liq, true); - break; - - case arg_skip_larger: - options.skip_if_larger = true; - break; - - case 's': - { - int speed = atoi(optarg); - if (speed >= 10) { - options.fast_compression = true; - } - if (speed == 11) { - options.floyd = 0; - speed = 10; - } - if (LIQ_OK != liq_set_speed(options.liq, speed)) { - fputs("Speed should be between 1 (slow) and 11 (fast).\n", stderr); - return INVALID_ARGUMENT; - } - } - break; - - case 'Q': - if (!parse_quality(optarg, options.liq, &options.min_quality_limit)) { - fputs("Quality should be in format min-max where min and max are numbers in range 0-100.\n", stderr); - return INVALID_ARGUMENT; - } - break; - - case arg_posterize: - if (LIQ_OK != liq_set_min_posterization(options.liq, atoi(optarg))) { - fputs("Posterization should be number of bits in range 0-4.\n", stderr); - return INVALID_ARGUMENT; - } - break; - - case arg_map: - { - png24_image tmp = {}; - if (SUCCESS != read_image(options.liq, optarg, false, &tmp, &options.fixed_palette_image, false, false)) { - fprintf(stderr, " error: Unable to load %s", optarg); - return INVALID_ARGUMENT; - } - } - break; - - case 'h': - print_full_version(stdout); - print_usage(stdout); - return SUCCESS; - - case 'V': - puts(PNGQUANT_VERSION); - return SUCCESS; - - case -1: break; - - default: - return INVALID_ARGUMENT; - } - } while (opt != -1); - - int argn = optind; - - if (argn >= argc) { - if (argn > 1) { - fputs("No input files specified. See -h for help.\n", stderr); - } else { - print_full_version(stderr); - print_usage(stderr); - } - return MISSING_ARGUMENT; - } - - if (options.verbose) { - liq_set_log_callback(options.liq, log_callback, NULL); - options.log_callback = log_callback; - } - - char *colors_end; - unsigned long colors = strtoul(argv[argn], &colors_end, 10); - if (colors_end != argv[argn] && '\0' == colors_end[0]) { - if (LIQ_OK != liq_set_max_colors(options.liq, colors)) { - fputs("Number of colors must be between 2 and 256.\n", stderr); - return INVALID_ARGUMENT; - } - argn++; - } - - if (newext && output_file_path) { - fputs("--ext and --output options can't be used at the same time\n", stderr); - return INVALID_ARGUMENT; - } - - // new filename extension depends on options used. Typically basename-fs8.png - if (newext == NULL) { - newext = options.floyd > 0 ? "-ie-fs8.png" : "-ie-or8.png"; - if (!options.ie_mode) { - newext += 3; /* skip "-ie" */ - } - } - - if (argn == argc || (argn == argc-1 && 0==strcmp(argv[argn],"-"))) { - options.using_stdin = true; - argn = argc-1; - } - - if (options.using_stdin && output_file_path) { - fputs("--output can't be mixed with stdin\n", stderr); - return INVALID_ARGUMENT; - } - - const int num_files = argc-argn; - - if (output_file_path && num_files != 1) { - fputs("Only one input file is allowed when --output is used\n", stderr); - return INVALID_ARGUMENT; - } - -#ifdef _OPENMP - // if there's a lot of files, coarse parallelism can be used - if (num_files > 2*omp_get_max_threads()) { - omp_set_nested(0); - omp_set_dynamic(1); - } else { - omp_set_nested(1); - } -#endif - - #pragma omp parallel for \ - schedule(static, 1) reduction(+:skipped_count) reduction(+:error_count) reduction(+:file_count) shared(latest_error) - for(int i=0; i < num_files; i++) { - struct pngquant_options opts = options; - opts.liq = liq_attr_copy(options.liq); - - const char *filename = opts.using_stdin ? "stdin" : argv[argn+i]; - - #ifdef _OPENMP - struct buffered_log buf = {}; - if (opts.log_callback && omp_get_num_threads() > 1 && num_files > 1) { - liq_set_log_callback(opts.liq, log_callback_buferred, &buf); - liq_set_log_flush_callback(opts.liq, log_callback_buferred_flush, &buf); - options.log_callback = log_callback_buferred; - options.log_callback_user_info = &buf; - } - #endif - - - pngquant_error retval = SUCCESS; - - const char *outname = output_file_path; - char *outname_free = NULL; - if (!options.using_stdin) { - if (!outname) { - outname = outname_free = add_filename_extension(filename, newext); - } - if (!options.force && file_exists(outname)) { - fprintf(stderr, " error: %s exists; not overwriting\n", outname); - retval = NOT_OVERWRITING_ERROR; - } - } - - if (!retval) { - retval = pngquant_file(filename, outname, &opts); - } - - free(outname_free); - - liq_attr_destroy(opts.liq); - - if (retval) { - #pragma omp critical - { - latest_error = retval; - } - if (retval == TOO_LOW_QUALITY || retval == TOO_LARGE_FILE) { - skipped_count++; - } else { - error_count++; - } - } - ++file_count; - } - - if (error_count) { - verbose_printf(&options, "There were errors quantizing %d file%s out of a total of %d file%s.", - error_count, (error_count == 1)? "" : "s", file_count, (file_count == 1)? "" : "s"); - } - if (skipped_count) { - verbose_printf(&options, "Skipped %d file%s out of a total of %d file%s.", - skipped_count, (skipped_count == 1)? "" : "s", file_count, (file_count == 1)? "" : "s"); - } - if (!skipped_count && !error_count) { - verbose_printf(&options, "No errors detected while quantizing %d image%s.", - file_count, (file_count == 1)? "" : "s"); - } - - liq_image_destroy(options.fixed_palette_image); - liq_attr_destroy(options.liq); - - return latest_error; -} - -pngquant_error pngquant_file(const char *filename, const char *outname, struct pngquant_options *options) -{ - pngquant_error retval = SUCCESS; - - verbose_printf(options, "%s:", filename); - - liq_image *input_image = NULL; - png24_image input_image_rwpng = {}; - bool keep_input_pixels = options->skip_if_larger || (options->using_stdin && options->min_quality_limit); // original may need to be output to stdout - if (!retval) { - retval = read_image(options->liq, filename, options->using_stdin, &input_image_rwpng, &input_image, keep_input_pixels, options->verbose); - } - - int quality_percent = 90; // quality on 0-100 scale, updated upon successful remap - png8_image output_image = {}; - if (!retval) { - verbose_printf(options, " read %luKB file", (input_image_rwpng.file_size+1023UL)/1024UL); - -#if USE_LCMS - if (input_image_rwpng.lcms_status == ICCP) { - verbose_printf(options, " used embedded ICC profile to transform image to sRGB colorspace"); - } else if (input_image_rwpng.lcms_status == GAMA_CHRM) { - verbose_printf(options, " used gAMA and cHRM chunks to transform image to sRGB colorspace"); - } else if (input_image_rwpng.lcms_status == ICCP_WARN_GRAY) { - verbose_printf(options, " warning: ignored ICC profile in GRAY colorspace"); - } -#endif - - if (input_image_rwpng.gamma != 0.45455) { - verbose_printf(options, " corrected image from gamma %2.1f to sRGB gamma", - 1.0/input_image_rwpng.gamma); - } - - // when using image as source of a fixed palette the palette is extracted using regular quantization - liq_result *remap = liq_quantize_image(options->liq, options->fixed_palette_image ? options->fixed_palette_image : input_image); - - if (remap) { - liq_set_output_gamma(remap, 0.45455); // fixed gamma ~2.2 for the web. PNG can't store exact 1/2.2 - liq_set_dithering_level(remap, options->floyd); - - retval = prepare_output_image(remap, input_image, &output_image); - if (!retval) { - if (LIQ_OK != liq_write_remapped_image_rows(remap, input_image, output_image.row_pointers)) { - retval = OUT_OF_MEMORY_ERROR; - } - - set_palette(remap, &output_image); - - double palette_error = liq_get_quantization_error(remap); - if (palette_error >= 0) { - quality_percent = liq_get_quantization_quality(remap); - verbose_printf(options, " mapped image to new colors...MSE=%.3f (Q=%d)", palette_error, quality_percent); - } - } - liq_result_destroy(remap); - } else { - retval = TOO_LOW_QUALITY; - } - } - - if (!retval) { - - if (options->skip_if_larger) { - // this is very rough approximation, but generally avoid losing more quality than is gained in file size. - // Quality is squared, because even greater savings are needed to justify big quality loss. - double quality = quality_percent/100.0; - output_image.maximum_file_size = input_image_rwpng.file_size * quality*quality; - } - - output_image.fast_compression = options->fast_compression; - output_image.chunks = input_image_rwpng.chunks; input_image_rwpng.chunks = NULL; - retval = write_image(&output_image, NULL, outname, options); - - if (TOO_LARGE_FILE == retval) { - verbose_printf(options, " file exceeded expected size of %luKB", (unsigned long)output_image.maximum_file_size/1024UL); - } - } - - if (TOO_LARGE_FILE == retval || (TOO_LOW_QUALITY == retval && options->using_stdin)) { - // when outputting to stdout it'd be nasty to create 0-byte file - // so if quality is too low, output 24-bit original - if (keep_input_pixels) { - pngquant_error write_retval = write_image(NULL, &input_image_rwpng, outname, options); - if (write_retval) { - retval = write_retval; - } - } - } - - liq_image_destroy(input_image); - rwpng_free_image24(&input_image_rwpng); - rwpng_free_image8(&output_image); - - return retval; -} - -static void set_palette(liq_result *result, png8_image *output_image) -{ - const liq_palette *palette = liq_get_palette(result); - - // tRNS, etc. - output_image->num_palette = palette->count; - output_image->num_trans = 0; - for(unsigned int i=0; i < palette->count; i++) { - liq_color px = palette->entries[i]; - if (px.a < 255) { - output_image->num_trans = i+1; - } - output_image->palette[i] = (png_color){.red=px.r, .green=px.g, .blue=px.b}; - output_image->trans[i] = px.a; - } -} - - -static bool file_exists(const char *outname) -{ - FILE *outfile = fopen(outname, "rb"); - if ((outfile ) != NULL) { - fclose(outfile); - return true; - } - return false; -} - -/* build the output filename from the input name by inserting "-fs8" or - * "-or8" before the ".png" extension (or by appending that plus ".png" if - * there isn't any extension), then make sure it doesn't exist already */ -static char *add_filename_extension(const char *filename, const char *newext) -{ - size_t x = strlen(filename); - - char* outname = malloc(x+4+strlen(newext)+1); - if (!outname) return NULL; - - strncpy(outname, filename, x); - if (strncmp(outname+x-4, ".png", 4) == 0 || strncmp(outname+x-4, ".PNG", 4) == 0) - strcpy(outname+x-4, newext); - else - strcpy(outname+x, newext); - - return outname; -} - -static void set_binary_mode(FILE *fp) -{ -#if defined(WIN32) || defined(__WIN32__) - setmode(fp == stdout ? 1 : 0, O_BINARY); -#endif -} - -static pngquant_error write_image(png8_image *output_image, png24_image *output_image24, const char *outname, struct pngquant_options *options) -{ - FILE *outfile; - if (options->using_stdin) { - set_binary_mode(stdout); - outfile = stdout; - - if (output_image) { - verbose_printf(options, " writing %d-color image to stdout", output_image->num_palette); - } else { - verbose_printf(options, " writing truecolor image to stdout"); - } - } else { - - if ((outfile = fopen(outname, "wb")) == NULL) { - fprintf(stderr, " error: cannot open %s for writing\n", outname); - return CANT_WRITE_ERROR; - } - - const char *outfilename = strrchr(outname, '/'); - if (outfilename) { - outfilename++; - } else { - outfilename = outname; - } - - if (output_image) { - verbose_printf(options, " writing %d-color image as %s", output_image->num_palette, outfilename); - } else { - verbose_printf(options, " writing truecolor image as %s", outfilename); - } - } - - pngquant_error retval; - #pragma omp critical (libpng) - { - if (output_image) { - retval = rwpng_write_image8(outfile, output_image); - } else { - retval = rwpng_write_image24(outfile, output_image24); - } - } - - if (retval && retval != TOO_LARGE_FILE) { - fprintf(stderr, " error: failed writing image to %s\n", outname); - } - - if (!options->using_stdin) { - fclose(outfile); - } - - return retval; -} - -static pngquant_error read_image(liq_attr *options, const char *filename, int using_stdin, png24_image *input_image_p, liq_image **liq_image_p, bool keep_input_pixels, bool verbose) -{ - FILE *infile; - - if (using_stdin) { - set_binary_mode(stdin); - infile = stdin; - } else if ((infile = fopen(filename, "rb")) == NULL) { - fprintf(stderr, " error: cannot open %s for reading\n", filename); - return READ_ERROR; - } - - pngquant_error retval; - #pragma omp critical (libpng) - { - retval = rwpng_read_image24(infile, input_image_p, verbose); - } - - if (!using_stdin) { - fclose(infile); - } - - if (retval) { - fprintf(stderr, " error: rwpng_read_image() error %d\n", retval); - return retval; - } - - *liq_image_p = liq_image_create_rgba_rows(options, (void**)input_image_p->row_pointers, input_image_p->width, input_image_p->height, input_image_p->gamma); - - if (!*liq_image_p) { - return OUT_OF_MEMORY_ERROR; - } - - if (!keep_input_pixels) { - if (LIQ_OK != liq_image_set_memory_ownership(*liq_image_p, LIQ_OWN_ROWS | LIQ_OWN_PIXELS)) { - return OUT_OF_MEMORY_ERROR; - } - input_image_p->row_pointers = NULL; - input_image_p->rgba_data = NULL; - } - - return SUCCESS; -} - -static pngquant_error prepare_output_image(liq_result *result, liq_image *input_image, png8_image *output_image) -{ - output_image->width = liq_image_get_width(input_image); - output_image->height = liq_image_get_height(input_image); - output_image->gamma = liq_get_output_gamma(result); - - /* - ** Step 3.7 [GRR]: allocate memory for the entire indexed image - */ - - output_image->indexed_data = malloc(output_image->height * output_image->width); - output_image->row_pointers = malloc(output_image->height * sizeof(output_image->row_pointers[0])); - - if (!output_image->indexed_data || !output_image->row_pointers) { - return OUT_OF_MEMORY_ERROR; - } - - for(unsigned int row = 0; row < output_image->height; ++row) { - output_image->row_pointers[row] = output_image->indexed_data + row*output_image->width; - } - - const liq_palette *palette = liq_get_palette(result); - // tRNS, etc. - output_image->num_palette = palette->count; - output_image->num_trans = 0; - for(unsigned int i=0; i < palette->count; i++) { - if (palette->entries[i].a < 255) { - output_image->num_trans = i+1; - } - } - - return SUCCESS; -} diff --git a/third_party/pngquant/pngquant.spec b/third_party/pngquant/pngquant.spec deleted file mode 100644 index 5ddbf2af5..000000000 --- a/third_party/pngquant/pngquant.spec +++ /dev/null @@ -1,58 +0,0 @@ -Name: pngquant -Version: 1.8.3 -Release: 1%{?dist} -Summary: PNG quantization tool for reducing image file size -License: BSD -URL: http://pngquant.org -Source0: https://github.com/pornel/improved-pngquant/tarball/%{version} -BuildRequires: libpng-devel%{?_isa} >= 1.2.46-1 -BuildRequires: zlib-devel%{?_isa} >= 1.2.3-1 -BuildRequires: gcc%{?_isa} >= 4.2-1 -Requires: libpng%{?_isa} >= 1.2.46-1 -Requires: zlib%{?isa} >= 1.2.3-1 - -%description -pngquant converts 24/32-bit RGBA PNG images to 8-bit palette with -alpha channel preserved. Such images are compatible with all modern web -browsers and a compatibility setting is available to help transparency -degrade well in Internet Explorer 6. Quantized files are often 40-70 -percent smaller than their 24/32-bit version. pngquant uses the -median cut algorithm. - - -%prep -%setup -q -n pornel-improved-pngquant-6f6e12c - -%build -make %{?_smp_mflags} - - -%install -rm -rf %{buildroot} -make install PREFIX=%{_prefix} DESTDIR=%{buildroot} -install -Dpm0644 pngquant.1 %{buildroot}/%{_mandir}/man1/pngquant.1 - - -%files -%defattr(-,root,root,-) -%doc README.md CHANGELOG COPYRIGHT -%{_bindir}/pngquant -%{_mandir}/man1/pngquant.1* - - -%changelog - -* Thu May 03 2012 Craig Barnes - 1.7.2-1 -- Update to latest upstream version - -* Sun Jan 15 2012 Craig Barnes - 1.7.0-1 -- Update to latest upstream version - -* Mon Jan 09 2012 Craig Barnes - 1.6.4-1 -- Update to latest version -- Remove Makefile patch (merged upstream) -- Use prefix macro when installing (upstream changed the default prefix) - -* Wed Dec 28 2011 Craig Barnes - 1.6.2-1 -- Initial package - diff --git a/third_party/pngquant/rwpng.c b/third_party/pngquant/rwpng.c deleted file mode 100644 index 8a0c1f77a..000000000 --- a/third_party/pngquant/rwpng.c +++ /dev/null @@ -1,610 +0,0 @@ -/*--------------------------------------------------------------------------- - - pngquant: RGBA -> RGBA-palette quantization program rwpng.c - - --------------------------------------------------------------------------- - - © 1998-2000 by Greg Roelofs. - © 2009-2014 by Kornel Lesiński. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - ---------------------------------------------------------------------------*/ - -#include -#include -#include - -#include "png.h" -#include "rwpng.h" -#if USE_LCMS -#include "lcms2.h" -#endif - -#ifndef Z_BEST_COMPRESSION -#define Z_BEST_COMPRESSION 9 -#endif -#ifndef Z_BEST_SPEED -#define Z_BEST_SPEED 1 -#endif - -#ifdef _OPENMP -#include -#else -#define omp_get_max_threads() 1 -#endif - -static void rwpng_error_handler(png_structp png_ptr, png_const_charp msg); -static void rwpng_warning_stderr_handler(png_structp png_ptr, png_const_charp msg); -static void rwpng_warning_silent_handler(png_structp png_ptr, png_const_charp msg); -int rwpng_read_image24_cocoa(FILE *infile, png24_image *mainprog_ptr); - - -void rwpng_version_info(FILE *fp) -{ - const char *pngver = png_get_header_ver(NULL); - -#if USE_COCOA - fputs(" Compiled with Apple Cocoa image reader.\n", fp); -#endif -#if USE_LCMS - fputs(" Compiled with Little CMS color profile support.\n", fp); -#endif - - fprintf(fp, " Compiled with libpng %s; using libpng %s.\n", - PNG_LIBPNG_VER_STRING, pngver); - -#if PNG_LIBPNG_VER < 10600 - if (strcmp(pngver, "1.3.") < 0) { - fputs("\nWARNING: Your version of libpng is outdated and may produce corrupted files.\n" - "Please recompile pngquant with newer version of libpng (1.5 or later).\n", fp); - } -#endif -} - - -struct rwpng_read_data { - FILE *const fp; - png_size_t bytes_read; -}; - -static void user_read_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - struct rwpng_read_data *read_data = (struct rwpng_read_data *)png_get_io_ptr(png_ptr); - - png_size_t read = fread(data, 1, length, read_data->fp); - if (!read) { - png_error(png_ptr, "Read error"); - } - read_data->bytes_read += read; -} - -struct rwpng_write_data { - unsigned char *buffer; - png_size_t bytes_written; - png_size_t bytes_left; -}; - -static void user_write_data(png_structp png_ptr, png_bytep data, png_size_t length) -{ - struct rwpng_write_data *write_data = (struct rwpng_write_data *)png_get_io_ptr(png_ptr); - - if (length <= write_data->bytes_left) { - memcpy(write_data->buffer + write_data->bytes_written, data, length); - write_data->bytes_left -= length; - write_data->bytes_written += length; - } else { - write_data->bytes_written = 0; - write_data->bytes_left = 0; - } -} - -static void user_flush_data(png_structp png_ptr) -{ - // libpng never calls this :( -} - - -static png_bytepp rwpng_create_row_pointers(png_infop info_ptr, png_structp png_ptr, unsigned char *base, unsigned int height, unsigned int rowbytes) -{ - if (!rowbytes) { - rowbytes = png_get_rowbytes(png_ptr, info_ptr); - } - - png_bytepp row_pointers = malloc(height * sizeof(row_pointers[0])); - if (!row_pointers) return NULL; - for(unsigned int row = 0; row < height; ++row) { - row_pointers[row] = base + row * rowbytes; - } - return row_pointers; -} - -static int read_chunk_callback(png_structp png_ptr, png_unknown_chunkp in_chunk) -{ - if (0 == memcmp("iCCP", in_chunk->name, 5) || - 0 == memcmp("cHRM", in_chunk->name, 5) || - 0 == memcmp("gAMA", in_chunk->name, 5)) { - return 0; // not handled - } - - struct rwpng_chunk **head = (struct rwpng_chunk **)png_get_user_chunk_ptr(png_ptr); - - struct rwpng_chunk *chunk = malloc(sizeof(struct rwpng_chunk)); - memcpy(chunk->name, in_chunk->name, 5); - chunk->size = in_chunk->size; - chunk->location = in_chunk->location; - chunk->data = in_chunk->size ? malloc(in_chunk->size) : NULL; - if (in_chunk->size) { - memcpy(chunk->data, in_chunk->data, in_chunk->size); - } - - chunk->next = *head; - *head = chunk; - - return 1; // marks as "handled", libpng won't store it -} - -/* - retval: - 0 = success - 21 = bad sig - 22 = bad IHDR - 24 = insufficient memory - 25 = libpng error (via longjmp()) - 26 = wrong PNG color type (no alpha channel) - */ - -pngquant_error rwpng_read_image24_libpng(FILE *infile, png24_image *mainprog_ptr, int verbose) -{ - png_structp png_ptr = NULL; - png_infop info_ptr = NULL; - png_size_t rowbytes; - int color_type, bit_depth; - - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr, - rwpng_error_handler, verbose ? rwpng_warning_stderr_handler : rwpng_warning_silent_handler); - if (!png_ptr) { - return PNG_OUT_OF_MEMORY_ERROR; /* out of memory */ - } - - info_ptr = png_create_info_struct(png_ptr); - if (!info_ptr) { - png_destroy_read_struct(&png_ptr, NULL, NULL); - return PNG_OUT_OF_MEMORY_ERROR; /* out of memory */ - } - - /* setjmp() must be called in every function that calls a non-trivial - * libpng function */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return LIBPNG_FATAL_ERROR; /* fatal libpng error (via longjmp()) */ - } - - png_set_read_user_chunk_fn(png_ptr, &mainprog_ptr->chunks, read_chunk_callback); - - struct rwpng_read_data read_data = {infile, 0}; - png_set_read_fn(png_ptr, &read_data, user_read_data); - - png_read_info(png_ptr, info_ptr); /* read all PNG info up to image data */ - - - /* alternatively, could make separate calls to png_get_image_width(), - * etc., but want bit_depth and color_type for later [don't care about - * compression_type and filter_type => NULLs] */ - - png_get_IHDR(png_ptr, info_ptr, &mainprog_ptr->width, &mainprog_ptr->height, - &bit_depth, &color_type, NULL, NULL, NULL); - - - /* expand palette images to RGB, low-bit-depth grayscale images to 8 bits, - * transparency chunks to full alpha channel; strip 16-bit-per-sample - * images to 8 bits per sample; and convert grayscale to RGB[A] */ - - /* GRR TO DO: preserve all safe-to-copy ancillary PNG chunks */ - - if (!(color_type & PNG_COLOR_MASK_ALPHA)) { -#ifdef PNG_READ_FILLER_SUPPORTED - png_set_expand(png_ptr); - png_set_filler(png_ptr, 65535L, PNG_FILLER_AFTER); -#else - fprintf(stderr, "pngquant readpng: image is neither RGBA nor GA\n"); - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - mainprog_ptr->retval = 26; - return mainprog_ptr->retval; -#endif - } - - if (bit_depth == 16) { - png_set_strip_16(png_ptr); - } - - if (!(color_type & PNG_COLOR_MASK_COLOR)) { - png_set_gray_to_rgb(png_ptr); - } - - - /* get source gamma for gamma correction, or use sRGB default */ - - double gamma = 0.45455; - if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_sRGB)) { - png_get_gAMA(png_ptr, info_ptr, &gamma); - } - mainprog_ptr->gamma = gamma; - - png_set_interlace_handling(png_ptr); - - /* all transformations have been registered; now update info_ptr data, - * get rowbytes and channels, and allocate image memory */ - - png_read_update_info(png_ptr, info_ptr); - - rowbytes = png_get_rowbytes(png_ptr, info_ptr); - - if ((mainprog_ptr->rgba_data = malloc(rowbytes*mainprog_ptr->height)) == NULL) { - fprintf(stderr, "pngquant readpng: unable to allocate image data\n"); - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - return PNG_OUT_OF_MEMORY_ERROR; - } - - png_bytepp row_pointers = rwpng_create_row_pointers(info_ptr, png_ptr, mainprog_ptr->rgba_data, mainprog_ptr->height, 0); - - /* now we can go ahead and just read the whole image */ - - png_read_image(png_ptr, row_pointers); - - /* and we're done! (png_read_end() can be omitted if no processing of - * post-IDAT text/time/etc. is desired) */ - - png_read_end(png_ptr, NULL); - -#if USE_LCMS -#if PNG_LIBPNG_VER < 10500 - png_charp ProfileData; -#else - png_bytep ProfileData; -#endif - png_uint_32 ProfileLen; - - cmsHPROFILE hInProfile = NULL; - - /* color_type is read from the image before conversion to RGBA */ - int COLOR_PNG = color_type & PNG_COLOR_MASK_COLOR; - - mainprog_ptr->lcms_status = NONE; - - /* embedded ICC profile */ - if (png_get_iCCP(png_ptr, info_ptr, &(png_charp){0}, &(int){0}, &ProfileData, &ProfileLen)) { - - hInProfile = cmsOpenProfileFromMem(ProfileData, ProfileLen); - cmsColorSpaceSignature colorspace = cmsGetColorSpace(hInProfile); - - /* only RGB (and GRAY) valid for PNGs */ - if (colorspace == cmsSigRgbData && COLOR_PNG) { - mainprog_ptr->lcms_status = ICCP; - } else { - if (colorspace == cmsSigGrayData && !COLOR_PNG) { - mainprog_ptr->lcms_status = ICCP_WARN_GRAY; - } - cmsCloseProfile(hInProfile); - hInProfile = NULL; - } - } - - /* build RGB profile from cHRM and gAMA */ - if (hInProfile == NULL && COLOR_PNG && - !png_get_valid(png_ptr, info_ptr, PNG_INFO_sRGB) && - png_get_valid(png_ptr, info_ptr, PNG_INFO_gAMA) && - png_get_valid(png_ptr, info_ptr, PNG_INFO_cHRM)) { - - cmsCIExyY WhitePoint; - cmsCIExyYTRIPLE Primaries; - - png_get_cHRM(png_ptr, info_ptr, &WhitePoint.x, &WhitePoint.y, - &Primaries.Red.x, &Primaries.Red.y, - &Primaries.Green.x, &Primaries.Green.y, - &Primaries.Blue.x, &Primaries.Blue.y); - - WhitePoint.Y = Primaries.Red.Y = Primaries.Green.Y = Primaries.Blue.Y = 1.0; - - cmsToneCurve *GammaTable[3]; - GammaTable[0] = GammaTable[1] = GammaTable[2] = cmsBuildGamma(NULL, 1/gamma); - - hInProfile = cmsCreateRGBProfile(&WhitePoint, &Primaries, GammaTable); - - cmsFreeToneCurve(GammaTable[0]); - - mainprog_ptr->lcms_status = GAMA_CHRM; - } - - /* transform image to sRGB colorspace */ - if (hInProfile != NULL) { - - cmsHPROFILE hOutProfile = cmsCreate_sRGBProfile(); - cmsHTRANSFORM hTransform = cmsCreateTransform(hInProfile, TYPE_RGBA_8, - hOutProfile, TYPE_RGBA_8, - INTENT_PERCEPTUAL, - omp_get_max_threads() > 1 ? cmsFLAGS_NOCACHE : 0); - - #pragma omp parallel for \ - if (mainprog_ptr->height*mainprog_ptr->width > 8000) \ - schedule(static) - for (unsigned int i = 0; i < mainprog_ptr->height; i++) { - /* It is safe to use the same block for input and output, - when both are of the same TYPE. */ - cmsDoTransform(hTransform, row_pointers[i], - row_pointers[i], - mainprog_ptr->width); - } - - cmsDeleteTransform(hTransform); - cmsCloseProfile(hOutProfile); - cmsCloseProfile(hInProfile); - - mainprog_ptr->gamma = 0.45455; - } -#endif - - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - - mainprog_ptr->file_size = read_data.bytes_read; - mainprog_ptr->row_pointers = (unsigned char **)row_pointers; - - return SUCCESS; -} - -static void rwpng_free_chunks(struct rwpng_chunk *chunk) { - if (!chunk) return; - rwpng_free_chunks(chunk->next); - free(chunk->data); - free(chunk); -} - -void rwpng_free_image24(png24_image *image) -{ - free(image->row_pointers); - image->row_pointers = NULL; - - free(image->rgba_data); - image->rgba_data = NULL; - - rwpng_free_chunks(image->chunks); - image->chunks = NULL; -} - -void rwpng_free_image8(png8_image *image) -{ - free(image->indexed_data); - image->indexed_data = NULL; - - free(image->row_pointers); - image->row_pointers = NULL; - - rwpng_free_chunks(image->chunks); - image->chunks = NULL; -} - -pngquant_error rwpng_read_image24(FILE *infile, png24_image *input_image_p, int verbose) -{ -#if USE_COCOA - return rwpng_read_image24_cocoa(infile, input_image_p); -#else - return rwpng_read_image24_libpng(infile, input_image_p, verbose); -#endif -} - - -static pngquant_error rwpng_write_image_init(rwpng_png_image *mainprog_ptr, png_structpp png_ptr_p, png_infopp info_ptr_p, int fast_compression) -{ - /* could also replace libpng warning-handler (final NULL), but no need: */ - - *png_ptr_p = png_create_write_struct(PNG_LIBPNG_VER_STRING, mainprog_ptr, rwpng_error_handler, NULL); - - if (!(*png_ptr_p)) { - return LIBPNG_INIT_ERROR; /* out of memory */ - } - - *info_ptr_p = png_create_info_struct(*png_ptr_p); - if (!(*info_ptr_p)) { - png_destroy_write_struct(png_ptr_p, NULL); - return LIBPNG_INIT_ERROR; /* out of memory */ - } - - /* setjmp() must be called in every function that calls a PNG-writing - * libpng function, unless an alternate error handler was installed-- - * but compatible error handlers must either use longjmp() themselves - * (as in this program) or exit immediately, so here we go: */ - - if (setjmp(mainprog_ptr->jmpbuf)) { - png_destroy_write_struct(png_ptr_p, info_ptr_p); - return LIBPNG_INIT_ERROR; /* libpng error (via longjmp()) */ - } - - png_set_compression_level(*png_ptr_p, fast_compression ? Z_BEST_SPEED : Z_BEST_COMPRESSION); - png_set_compression_mem_level(*png_ptr_p, fast_compression ? 9 : 5); // judging by optipng results, smaller mem makes libpng compress slightly better - - return SUCCESS; -} - - -void rwpng_write_end(png_infopp info_ptr_p, png_structpp png_ptr_p, png_bytepp row_pointers) -{ - png_write_info(*png_ptr_p, *info_ptr_p); - - png_set_packing(*png_ptr_p); - - png_write_image(*png_ptr_p, row_pointers); - - png_write_end(*png_ptr_p, NULL); - - png_destroy_write_struct(png_ptr_p, info_ptr_p); -} - -void rwpng_set_gamma(png_infop info_ptr, png_structp png_ptr, double gamma) -{ - /* remap sets gamma to 0.45455 */ - png_set_gAMA(png_ptr, info_ptr, gamma); - png_set_sRGB(png_ptr, info_ptr, 0); // 0 = Perceptual -} - -pngquant_error rwpng_write_image8(FILE *outfile, png8_image *mainprog_ptr) -{ - png_structp png_ptr; - png_infop info_ptr; - - pngquant_error retval = rwpng_write_image_init((rwpng_png_image*)mainprog_ptr, &png_ptr, &info_ptr, mainprog_ptr->fast_compression); - if (retval) return retval; - - struct rwpng_write_data write_data; - if (mainprog_ptr->maximum_file_size) { - write_data = (struct rwpng_write_data){ - .buffer = malloc(mainprog_ptr->maximum_file_size), - .bytes_left = mainprog_ptr->maximum_file_size, - }; - if (!write_data.buffer) return PNG_OUT_OF_MEMORY_ERROR; - png_set_write_fn(png_ptr, &write_data, user_write_data, user_flush_data); - } else { - png_init_io(png_ptr, outfile); - } - - // Palette images generally don't gain anything from filtering - png_set_filter(png_ptr, PNG_FILTER_TYPE_BASE, PNG_FILTER_VALUE_NONE); - - rwpng_set_gamma(info_ptr, png_ptr, mainprog_ptr->gamma); - - /* set the image parameters appropriately */ - int sample_depth; -#if PNG_LIBPNG_VER > 10400 /* old libpng corrupts files with low depth */ - if (mainprog_ptr->num_palette <= 2) - sample_depth = 1; - else if (mainprog_ptr->num_palette <= 4) - sample_depth = 2; - else if (mainprog_ptr->num_palette <= 16) - sample_depth = 4; - else -#endif - sample_depth = 8; - - struct rwpng_chunk *chunk = mainprog_ptr->chunks; - int chunk_num=0; - while(chunk) { - png_unknown_chunk pngchunk = { - .size = chunk->size, - .data = chunk->data, - .location = chunk->location, - }; - memcpy(pngchunk.name, chunk->name, 5); - png_set_unknown_chunks(png_ptr, info_ptr, &pngchunk, 1); - - #if PNG_LIBPNG_VER < 10600 - png_set_unknown_chunk_location(png_ptr, info_ptr, chunk_num, pngchunk.location ? pngchunk.location : PNG_HAVE_IHDR); - #endif - - chunk = chunk->next; - chunk_num++; - } - - png_set_IHDR(png_ptr, info_ptr, mainprog_ptr->width, mainprog_ptr->height, - sample_depth, PNG_COLOR_TYPE_PALETTE, - 0, PNG_COMPRESSION_TYPE_DEFAULT, - PNG_FILTER_TYPE_BASE); - - png_set_PLTE(png_ptr, info_ptr, &mainprog_ptr->palette[0], mainprog_ptr->num_palette); - - if (mainprog_ptr->num_trans > 0) { - png_set_tRNS(png_ptr, info_ptr, mainprog_ptr->trans, mainprog_ptr->num_trans, NULL); - } - - rwpng_write_end(&info_ptr, &png_ptr, mainprog_ptr->row_pointers); - - if (mainprog_ptr->maximum_file_size) { - if (!write_data.bytes_written) { - retval = TOO_LARGE_FILE; - } else { - if (!fwrite(write_data.buffer, 1, write_data.bytes_written, outfile)) { - retval = CANT_WRITE_ERROR; - } - } - - free(write_data.buffer); - } - return retval; -} - -pngquant_error rwpng_write_image24(FILE *outfile, png24_image *mainprog_ptr) -{ - png_structp png_ptr; - png_infop info_ptr; - - pngquant_error retval = rwpng_write_image_init((rwpng_png_image*)mainprog_ptr, &png_ptr, &info_ptr, 0); - if (retval) return retval; - - png_init_io(png_ptr, outfile); - - rwpng_set_gamma(info_ptr, png_ptr, mainprog_ptr->gamma); - - png_set_IHDR(png_ptr, info_ptr, mainprog_ptr->width, mainprog_ptr->height, - 8, PNG_COLOR_TYPE_RGB_ALPHA, - 0, PNG_COMPRESSION_TYPE_DEFAULT, - PNG_FILTER_TYPE_BASE); - - - png_bytepp row_pointers = rwpng_create_row_pointers(info_ptr, png_ptr, mainprog_ptr->rgba_data, mainprog_ptr->height, 0); - - rwpng_write_end(&info_ptr, &png_ptr, row_pointers); - - free(row_pointers); - - return SUCCESS; -} - - -static void rwpng_warning_stderr_handler(png_structp png_ptr, png_const_charp msg) { - fprintf(stderr, " %s\n", msg); -} - -static void rwpng_warning_silent_handler(png_structp png_ptr, png_const_charp msg) { -} - -static void rwpng_error_handler(png_structp png_ptr, png_const_charp msg) -{ - rwpng_png_image *mainprog_ptr; - - /* This function, aside from the extra step of retrieving the "error - * pointer" (below) and the fact that it exists within the application - * rather than within libpng, is essentially identical to libpng's - * default error handler. The second point is critical: since both - * setjmp() and longjmp() are called from the same code, they are - * guaranteed to have compatible notions of how big a jmp_buf is, - * regardless of whether _BSD_SOURCE or anything else has (or has not) - * been defined. */ - - fprintf(stderr, " error: %s\n", msg); - fflush(stderr); - - mainprog_ptr = png_get_error_ptr(png_ptr); - if (mainprog_ptr == NULL) abort(); - - longjmp(mainprog_ptr->jmpbuf, 1); -} diff --git a/third_party/pngquant/rwpng.h b/third_party/pngquant/rwpng.h deleted file mode 100644 index 0cc9cc9e6..000000000 --- a/third_party/pngquant/rwpng.h +++ /dev/null @@ -1,124 +0,0 @@ -/*--------------------------------------------------------------------------- - - pngquant: RGBA -> RGBA-palette quantization program rwpng.h - - --------------------------------------------------------------------------- - - © 1998-2000 by Greg Roelofs. - © 2009-2014 by Kornel Lesiński. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without modification, - are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - ---------------------------------------------------------------------------*/ - -#ifndef RWPNG_H -#define RWPNG_H - -#include "png.h" /* if this include fails, you need to install libpng (e.g. libpng-devel package) */ -#include - -#ifndef USE_COCOA -#define USE_COCOA 0 -#endif - -typedef enum { - SUCCESS = 0, - MISSING_ARGUMENT = 1, - READ_ERROR = 2, - INVALID_ARGUMENT = 4, - NOT_OVERWRITING_ERROR = 15, - CANT_WRITE_ERROR = 16, - OUT_OF_MEMORY_ERROR = 17, - WRONG_ARCHITECTURE = 18, // Missing SSE - PNG_OUT_OF_MEMORY_ERROR = 24, - LIBPNG_FATAL_ERROR = 25, - LIBPNG_INIT_ERROR = 35, - TOO_LARGE_FILE = 98, - TOO_LOW_QUALITY = 99, -} pngquant_error; - -struct rwpng_chunk { - struct rwpng_chunk *next; - png_byte *data; - png_size_t size; - png_byte name[5]; - png_byte location; -}; - -#if USE_LCMS -typedef enum { - NONE = 0, - ICCP = 1, // used ICC profile - ICCP_WARN_GRAY = 2, // ignore and warn about GRAY ICC profile - GAMA_CHRM = 3, // used gAMA and cHARM -} lcms_transform; -#endif - -typedef struct { - jmp_buf jmpbuf; - png_uint_32 width; - png_uint_32 height; - png_size_t file_size; - double gamma; - unsigned char **row_pointers; - unsigned char *rgba_data; - struct rwpng_chunk *chunks; -#if USE_LCMS - lcms_transform lcms_status; -#endif -} png24_image; - -typedef struct { - jmp_buf jmpbuf; - png_uint_32 width; - png_uint_32 height; - png_size_t maximum_file_size; - double gamma; - unsigned char **row_pointers; - unsigned char *indexed_data; - unsigned int num_palette; - unsigned int num_trans; - png_color palette[256]; - unsigned char trans[256]; - struct rwpng_chunk *chunks; - char fast_compression; -} png8_image; - -typedef union { - jmp_buf jmpbuf; - png24_image png24; - png8_image png8; -} rwpng_png_image; - -/* prototypes for public functions in rwpng.c */ - -void rwpng_version_info(FILE *fp); - -pngquant_error rwpng_read_image24(FILE *infile, png24_image *mainprog_ptr, int verbose); -pngquant_error rwpng_write_image8(FILE *outfile, png8_image *mainprog_ptr); -pngquant_error rwpng_write_image24(FILE *outfile, png24_image *mainprog_ptr); -void rwpng_free_image24(png24_image *); -void rwpng_free_image8(png8_image *); - -#endif diff --git a/third_party/pngquant/rwpng_cocoa.m b/third_party/pngquant/rwpng_cocoa.m deleted file mode 100644 index aefff1b72..000000000 --- a/third_party/pngquant/rwpng_cocoa.m +++ /dev/null @@ -1,73 +0,0 @@ -// -// rwpng_cocoa.m -// pngquant -// - -#include "rwpng.h" - -#ifdef USE_COCOA - -#import -#import -#include -#include "lib/libimagequant.h" -#include "lib/pam.h" - -int rwpng_read_image24_cocoa(FILE *fp, png24_image *out) -{ - rgba_pixel *pixel_data; - int width, height; - @autoreleasepool { - NSFileHandle *fh = [[NSFileHandle alloc] initWithFileDescriptor:fileno(fp)]; - NSData *data = [fh readDataToEndOfFile]; - out->file_size = [data length]; - CGImageRef image = [[NSBitmapImageRep imageRepWithData:data] CGImage]; - [fh release]; - - if (!image) return READ_ERROR; - - width = CGImageGetWidth(image); - height = CGImageGetHeight(image); - - pixel_data = calloc(width*height,4); - - CGColorSpaceRef colorspace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); - - CGContextRef context = CGBitmapContextCreate(pixel_data, - width, height, - 8, width*4, - colorspace, - kCGImageAlphaPremultipliedLast); - - CGColorSpaceRelease(colorspace); - - if (!context) return READ_ERROR; - - CGContextDrawImage(context, CGRectMake(0.0, 0.0, width, height), image); - CGContextRelease(context); - } - // reverse premultiplication - - for(int i=0; i < width*height; i++) { - if (pixel_data[i].a) { - pixel_data[i] = (rgba_pixel){ - .a = pixel_data[i].a, - .r = pixel_data[i].r*255/pixel_data[i].a, - .g = pixel_data[i].g*255/pixel_data[i].a, - .b = pixel_data[i].b*255/pixel_data[i].a, - }; - } - } - - out->gamma = 0.45455; - out->width = width; - out->height = height; - out->rgba_data = (unsigned char *)pixel_data; - out->row_pointers = malloc(sizeof(out->row_pointers[0])*out->height); - for(int i=0; i < out->height; i++) { - out->row_pointers[i] = (unsigned char *)&pixel_data[width*i]; - } - return SUCCESS; -} - -#endif diff --git a/waveflag.c b/waveflag.c deleted file mode 100644 index fb11c2c10..000000000 --- a/waveflag.c +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Copyright 2014 Google Inc. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Google contributors: Behdad Esfahbod - */ - -#include -#include // basename -#include -#include -#include -#include -#include - - -#define SCALE 8 -#define SIZE 128 -#define MARGIN (debug ? 4 : 0) - -static unsigned int debug; - -#define std_aspect (5./3.) -#define top 21 -#define bot 128-top -#define B 21 -#define C 4 -static struct { double x, y; } mesh_points[] = -{ - { 1, top+C}, - { 43, top-B+C}, - { 85, top+B-C}, - {127, top-C}, - {127, bot-C}, - { 85, bot+B-C}, - { 43, bot-B+C}, - { 1, bot+C}, -}; -#define M(i) \ - x_aspect (mesh_points[i].x, aspect), \ - y_aspect (mesh_points[i].y, aspect) - -static inline double x_aspect (double v, double aspect) -{ - return aspect >= 1. ? v : (v - 64) * aspect + 64; -} -static inline double y_aspect (double v, double aspect) -{ - return aspect <= 1. ? v : (v - 64) / aspect + 64; -} - -static cairo_path_t * -wave_path_create (double aspect) -{ - cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 0,0); - cairo_t *cr = cairo_create (surface); - cairo_path_t *path; - - cairo_scale (cr, SIZE/128.*SCALE, SIZE/128.*SCALE); - - cairo_line_to(cr, M(0)); - cairo_curve_to(cr, M(1), M(2), M(3)); - cairo_line_to(cr, M(4)); - cairo_curve_to(cr, M(5), M(6), M(7)); - cairo_close_path (cr); - - cairo_identity_matrix (cr); - path = cairo_copy_path (cr); - cairo_destroy (cr); - cairo_surface_destroy (surface); - - return path; -} - -static cairo_pattern_t * -wave_mesh_create (double aspect, int alpha) -{ - cairo_pattern_t *pattern = cairo_pattern_create_mesh(); - cairo_matrix_t scale_matrix = {128./SIZE/SCALE, 0, 0, 128./SIZE/SCALE, 0, 0}; - cairo_pattern_set_matrix (pattern, &scale_matrix); - cairo_mesh_pattern_begin_patch(pattern); - - cairo_mesh_pattern_line_to(pattern, M(0)); - cairo_mesh_pattern_curve_to(pattern, M(1), M(2), M(3)); - cairo_mesh_pattern_line_to(pattern, M(4)); - cairo_mesh_pattern_curve_to(pattern, M(5), M(6), M(7)); - - if (alpha) - { - cairo_mesh_pattern_set_corner_color_rgba(pattern, 0, 1, 1, 1, .5); - cairo_mesh_pattern_set_corner_color_rgba(pattern, 1,.5,.5,.5, .5); - cairo_mesh_pattern_set_corner_color_rgba(pattern, 2, 0, 0, 0, .5); - cairo_mesh_pattern_set_corner_color_rgba(pattern, 3,.5,.5,.5, .5); - } - else - { - cairo_mesh_pattern_set_corner_color_rgb(pattern, 0, 0, 0, .5); - cairo_mesh_pattern_set_corner_color_rgb(pattern, 1, 1, 0, .5); - cairo_mesh_pattern_set_corner_color_rgb(pattern, 2, 1, 1, .5); - cairo_mesh_pattern_set_corner_color_rgb(pattern, 3, 0, 1, .5); - } - - cairo_mesh_pattern_end_patch(pattern); - - return pattern; -} - -static cairo_surface_t * -scale_flag (cairo_surface_t *flag) -{ - unsigned int w = cairo_image_surface_get_width (flag); - unsigned int h = cairo_image_surface_get_height (flag); - cairo_surface_t *scaled = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 256,256); - cairo_t *cr = cairo_create (scaled); - - cairo_scale (cr, 256./w, 256./h); - - cairo_set_source_surface (cr, flag, 0, 0); - cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_BEST); - cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_PAD); - cairo_paint (cr); - - cairo_destroy (cr); - return scaled; -} - -static cairo_surface_t * -load_scaled_flag (const char *filename, double *aspect) -{ - cairo_surface_t *flag = cairo_image_surface_create_from_png (filename); - cairo_surface_t *scaled = scale_flag (flag); - *aspect = (double) cairo_image_surface_get_width (flag) / - (double) cairo_image_surface_get_height (flag); - cairo_surface_destroy (flag); - return scaled; -} - -static int -is_transparent (uint32_t pix) -{ - return ((pix>>24) < 0xff); -} - -static int -border_is_transparent (cairo_surface_t *scaled_flag) -{ - /* Some flags might have a border already. As such, skip - * a few pixels on each side... */ - const unsigned int skip = 5; - uint32_t *s = (uint32_t *) cairo_image_surface_get_data (scaled_flag); - unsigned int width = cairo_image_surface_get_width (scaled_flag); - unsigned int height = cairo_image_surface_get_height (scaled_flag); - unsigned int sstride = cairo_image_surface_get_stride (scaled_flag) / 4; - - int transparent = 0; - - assert (width > 2 * skip && height > 2 * skip); - - - for (unsigned int x = skip; x < width - skip; x++) - transparent |= is_transparent (s[x]); - s += sstride; - for (unsigned int y = 1 + skip; y < height - 1 - skip; y++) - { - transparent |= is_transparent (s[skip]); - transparent |= is_transparent (s[width - 1 - skip]); - s += sstride; - } - for (unsigned int x = skip; x < width - skip; x++) - transparent |= is_transparent (s[x]); - - return transparent; -} - -static cairo_t * -create_image (void) -{ - cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, - (SIZE+2*MARGIN)*SCALE, - (SIZE+2*MARGIN)*SCALE); - cairo_t *cr = cairo_create (surface); - cairo_surface_destroy (surface); - return cr; -} - -static cairo_surface_t * -wave_surface_create (double aspect) -{ - cairo_t *cr = create_image (); - cairo_surface_t *surface = cairo_surface_reference (cairo_get_target (cr)); - cairo_pattern_t *mesh = wave_mesh_create (aspect, 0); - cairo_set_source (cr, mesh); - cairo_paint (cr); - cairo_pattern_destroy (mesh); - cairo_destroy (cr); - return surface; -} - -static cairo_surface_t * -texture_map (cairo_surface_t *src, cairo_surface_t *tex) -{ - uint32_t *s = (uint32_t *) cairo_image_surface_get_data (src); - unsigned int width = cairo_image_surface_get_width (src); - unsigned int height = cairo_image_surface_get_height (src); - unsigned int sstride = cairo_image_surface_get_stride (src) / 4; - - cairo_surface_t *dst = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); - uint32_t *d = (uint32_t *) cairo_image_surface_get_data (dst); - unsigned int dstride = cairo_image_surface_get_stride (dst) / 4; - - uint32_t *t = (uint32_t *) cairo_image_surface_get_data (tex); - unsigned int twidth = cairo_image_surface_get_width (tex); - unsigned int theight = cairo_image_surface_get_height (tex); - unsigned int tstride = cairo_image_surface_get_stride (tex) / 4; - - assert (twidth == 256 && theight == 256); - - for (unsigned int y = 0; y < height; y++) - { - for (unsigned int x = 0; x < width; x++) - { - unsigned int pix = s[x]; - unsigned int sa = pix >> 24; - unsigned int sr = (pix >> 16) & 0xFF; - unsigned int sg = (pix >> 8) & 0xFF; - unsigned int sb = (pix ) & 0xFF; - if (sa == 0) - { - d[x] = 0; - continue; - } - if (sa != 255) - { - sr = sr * 255 / sa; - sg = sg * 255 / sa; - sb = sb * 255 / sa; - } - assert (sb >= 127 && sb <= 129); - d[x] = t[tstride * sg + sr]; - } - s += sstride; - d += dstride; - } - cairo_surface_mark_dirty (dst); - - return dst; -} - -static void -wave_flag (const char *filename, const char *out_prefix) -{ - static cairo_path_t *standard_wave_path; - static cairo_surface_t *standard_wave_surface; - cairo_path_t *wave_path; - cairo_surface_t *wave_surface; - int border_transparent; - char out[1000]; - double aspect = 0; - - cairo_surface_t *scaled_flag, *waved_flag; - cairo_t *cr; - - if (debug) printf ("Processing %s\n", filename); - - scaled_flag = load_scaled_flag (filename, &aspect); - - aspect /= std_aspect; - aspect = sqrt (aspect); // Discount the effect - if (.9 <= aspect && aspect <= 1.1) - { - if (debug) printf ("Standard aspect ratio\n"); - aspect = 1.; - } - - if (aspect == 1.) - { - if (!standard_wave_path) - standard_wave_path = wave_path_create (aspect); - if (!standard_wave_surface) - standard_wave_surface = wave_surface_create (aspect); - wave_path = standard_wave_path; - wave_surface = standard_wave_surface; - } - else - { - wave_path = wave_path_create (aspect); - wave_surface = wave_surface_create (aspect); - } - - - border_transparent = border_is_transparent (scaled_flag); - waved_flag = texture_map (wave_surface, scaled_flag); - cairo_surface_destroy (scaled_flag); - - cr = create_image (); - cairo_translate (cr, SCALE * MARGIN, SCALE * MARGIN); - - // Paint waved flag - cairo_set_source_surface (cr, waved_flag, 0, 0); - cairo_append_path (cr, wave_path); - if (!debug) - cairo_clip_preserve (cr); - cairo_paint (cr); - - // Paint border - if (!border_transparent) - { - double border_alpha = .2; - double border_width = 4 * SCALE; - double border_gray = 0x42/255.; - if (debug) - printf ("Border: alpha %g width %g gray %g\n", - border_alpha, border_width/SCALE, border_gray); - - cairo_save (cr); - cairo_set_source_rgba (cr, - border_gray * border_alpha, - border_gray * border_alpha, - border_gray * border_alpha, - border_alpha); - cairo_set_line_width (cr, 2*border_width); - if (!debug) - cairo_set_operator (cr, CAIRO_OPERATOR_MULTIPLY); - cairo_stroke (cr); - cairo_restore (cr); - } - else - { - if (debug) printf ("Transparent border\n"); - cairo_new_path (cr); - } - - // Paint shade gradient - { - cairo_pattern_t *gradient = wave_mesh_create (aspect, 1); - cairo_pattern_t *w = cairo_pattern_create_for_surface (waved_flag); - - cairo_save (cr); - cairo_set_source (cr, gradient); - - cairo_set_operator (cr, CAIRO_OPERATOR_SOFT_LIGHT); - cairo_mask (cr, w); - - cairo_restore (cr); - - cairo_pattern_destroy (w); - } - - if (debug) - { - /* Draw mesh points. */ - cairo_save (cr); - cairo_scale (cr, SIZE/128.*SCALE, SIZE/128.*SCALE); - cairo_set_source_rgba (cr, .5,.0,.0,.9); - cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); - for (unsigned int i = 0; i < sizeof (mesh_points) / sizeof (mesh_points[0]); i++) - { - cairo_move_to (cr, M(i)); - cairo_rel_line_to (cr, 0, 0); - } - cairo_set_line_width (cr, 2); - cairo_stroke (cr); - for (unsigned int i = 0; i < 4; i++) - { - cairo_move_to (cr, M(2*i)); - cairo_line_to (cr, M(2*i+1)); - cairo_move_to (cr, M(2*i)); - cairo_line_to (cr, M(7 - 2*i)); - } - cairo_set_line_width (cr, .5); - cairo_stroke (cr); - cairo_restore (cr); - } - - if (!debug) - { - /* Scale down, 2x at a time, to get best downscaling, because cairo's - * downscaling is crap... :( */ - unsigned int scale = SCALE; - while (scale > 1) - { - cairo_surface_t *old_surface, *new_surface; - - old_surface = cairo_surface_reference (cairo_get_target (cr)); - assert (scale % 2 == 0); - scale /= 2; - cairo_destroy (cr); - new_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, (SIZE+2*MARGIN)*scale, (SIZE+2*MARGIN)*scale); - cr = cairo_create (new_surface); - cairo_scale (cr, .5, .5); - cairo_set_source_surface (cr, old_surface, 0, 0); - cairo_paint (cr); - cairo_surface_destroy (old_surface); - cairo_surface_destroy (new_surface); - } - } - - *out = '\0'; - strcat (out, out_prefix); - // diff from upstream. we call this a bit differently, filename might not be in cwd. - - // basename wants a non-const argument. The problem here is paths that end in a - // slash, POSIX basename removes them while GNU just returns a pointer to that - // slash. Since this is supposed to be a filename such input is illegal for us. - // We're already not checking for overflow of the output buffer anyway... - strcat (out, basename((char *) filename)); - - cairo_surface_write_to_png (cairo_get_target (cr), out); - cairo_destroy (cr); - if (wave_path != standard_wave_path) - cairo_path_destroy (wave_path); - if (wave_surface != standard_wave_surface) - cairo_surface_destroy (wave_surface); -} - -int -main (int argc, char **argv) -{ - const char *out_prefix; - - if (argc < 3) - { - fprintf (stderr, "Usage: waveflag [-debug] out-prefix [in.png]...\n"); - return 1; - } - - if (!strcmp (argv[1], "-debug")) - { - debug = 1; - argc--, argv++; - } - - out_prefix = argv[1]; - argc--, argv++; - - for (argc--, argv++; argc; argc--, argv++) - wave_flag (*argv, out_prefix); - - return 0; -}