diff --git a/.gitignore b/.gitignore index ef987f7a..2cc796cf 100644 --- a/.gitignore +++ b/.gitignore @@ -159,26 +159,28 @@ cython_debug/ # Render output folder /out # Temporary logging directory -/tmp +/logs # PSD templates directory /templates # For personal testing /testing.py # User generated data files -/proxyshop/datas/ +/src/data/sets/ # User specific version tracker -/proxyshop/version_tracker.json +/src/data/version_tracker.json # Generated new release /release # Environmental variables -/proxyshop/__env__.py +/src/__env__.py # All plugins that aren't MrTeferi or SilvanMTG -/proxyshop/plugins/* -!/proxyshop/plugins/MrTeferi -!/proxyshop/plugins/SilvanMTG +/plugins/* +!/plugins/MrTeferi +!/plugins/SilvanMTG +# All plugin templates +/plugins/*/templates/* # User generated config files -/proxyshop/configs/*.ini +/src/configs/*.ini # User generated plugin config files -/proxyshop/plugins/*/configs/*.ini +/plugins/*/configs/*.ini # Test generated symbol images -/proxyshop/tests/symbols/**/*[.png, .jpg, .jpeg, .tif, .tga, .webp, .psd] \ No newline at end of file +/src/tests/symbols/**/*[.png, .jpg, .jpeg, .tif, .tga, .webp, .psd] \ No newline at end of file diff --git a/.idea/Proxyshop.iml b/.idea/Proxyshop.iml index d6a00441..992135e5 100644 --- a/.idea/Proxyshop.iml +++ b/.idea/Proxyshop.iml @@ -4,7 +4,7 @@ - + diff --git a/.idea/misc.xml b/.idea/misc.xml index 3f4a9f69..1914eb43 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + diff --git a/Proxyshop.spec b/Proxyshop.spec index 6096fa3d..1c8fee9b 100644 --- a/Proxyshop.spec +++ b/Proxyshop.spec @@ -8,8 +8,8 @@ a = Analysis(['..\\Proxyshop\main.py'], binaries=[], datas=[], hiddenimports=[ - 'proxyshop.templates', - 'proxyshop.gui', + 'src.templates', + 'src.gui', 'kivy', 'svglib.svglib', 'reportlab.graphics', @@ -28,7 +28,7 @@ pyz = PYZ(a.pure, a.zipped_data, a.datas += [ ('fonts/Beleren Small Caps.ttf', 'fonts/Beleren Small Caps.ttf', 'DATA'), - ('proxyshop/img/proxyshop.png', 'proxyshop/img/proxyshop.png', 'DATA') + ('src/img/proxyshop.png', 'src/img/proxyshop.png', 'DATA') ] exe = EXE(pyz, @@ -47,4 +47,4 @@ exe = EXE(pyz, disable_windowed_traceback=False, target_arch=None, codesign_identity=None, - icon='proxyshop/img/favicon.ico') + icon='src/img/favicon.ico') diff --git a/build.py b/build.py index 523b9370..7a58e13c 100644 --- a/build.py +++ b/build.py @@ -8,14 +8,20 @@ from shutil import copy2, copytree, rmtree, move import PyInstaller.__main__ -from proxyshop.__version__ import version +from src.__version__ import version # Folder definitions CWD = os.getcwd() -PS = os.path.join(os.getcwd(), 'proxyshop') DIST = os.path.join(CWD, 'dist') -DIST_PS = os.path.join(os.getcwd(), 'dist/proxyshop') -DIST_PS_PLUGINS = os.path.join(DIST_PS, 'plugins') + +SRC = os.path.join(CWD, 'src') +DIST_SRC = os.path.join(DIST, 'src') + +DATA = os.path.join(SRC, 'data') +DIST_DATA = os.path.join(DIST_SRC, 'data') + +PLUGINS = os.path.join(CWD, 'plugins') +DIST_PLUGINS = os.path.join(DIST, 'plugins') # All individual files that need to be copied upon pyinstaller completion files = [ @@ -24,12 +30,12 @@ {'src': os.path.join(CWD, 'LICENSE'), 'dst': os.path.join(DIST, 'LICENSE')}, {'src': os.path.join(CWD, 'README.md'), 'dst': os.path.join(DIST, 'README.md')}, # --- PROXYSHOP DIRECTORY - {'src': os.path.join(PS, 'tests.json'), 'dst': os.path.join(DIST_PS, 'tests.json')}, - {'src': os.path.join(PS, 'manifest.json'), 'dst': os.path.join(DIST_PS, 'manifest.json')}, - {'src': os.path.join(PS, 'symbols.json'), 'dst': os.path.join(DIST_PS, 'symbols.json')}, - {'src': os.path.join(PS, 'custom_symbols.json'), 'dst': os.path.join(DIST_PS, 'custom_symbols.json')}, - {'src': os.path.join(PS, 'templates.json'), 'dst': os.path.join(DIST_PS, 'templates.json')}, - {'src': os.path.join(PS, 'app_settings.json'), 'dst': os.path.join(DIST_PS, 'app_settings.json')}, + {'src': os.path.join(DATA, 'tests.json'), 'dst': os.path.join(DIST_DATA, 'tests.json')}, + {'src': os.path.join(DATA, 'manifest.json'), 'dst': os.path.join(DIST_DATA, 'manifest.json')}, + {'src': os.path.join(DATA, 'symbols.json'), 'dst': os.path.join(DIST_DATA, 'symbols.json')}, + {'src': os.path.join(DATA, 'templates.json'), 'dst': os.path.join(DIST_DATA, 'templates.json')}, + {'src': os.path.join(DATA, 'watermarks.json'), 'dst': os.path.join(DIST_DATA, 'watermarks.json')}, + {'src': os.path.join(DATA, 'app_settings.json'), 'dst': os.path.join(DIST_DATA, 'app_settings.json')}, ] # Folders that need to be copied @@ -37,19 +43,21 @@ # --- WORKING DIRECTORY {'src': os.path.join(CWD, "fonts"), 'dst': os.path.join(DIST, 'fonts')}, # --- PROXYSHOP DIRECTORY - {'src': os.path.join(PS, "kv"), 'dst': os.path.join(DIST_PS, 'kv')}, - {'src': os.path.join(PS, "img"), 'dst': os.path.join(DIST_PS, 'img')}, - {'src': os.path.join(PS, "configs"), 'dst': os.path.join(DIST_PS, 'configs')}, + {'src': os.path.join(SRC, "kv"), 'dst': os.path.join(DIST_SRC, 'kv')}, + {'src': os.path.join(SRC, "img"), 'dst': os.path.join(DIST_SRC, 'img')}, + {'src': os.path.join(SRC, "configs"), 'dst': os.path.join(DIST_SRC, 'configs')}, # --- PLUGINS DIRECTORY - {'src': os.path.join(PS, "plugins/MrTeferi"), 'dst': os.path.join(DIST_PS_PLUGINS, 'MrTeferi')}, - {'src': os.path.join(PS, "plugins/SilvanMTG"), 'dst': os.path.join(DIST_PS_PLUGINS, 'SilvanMTG')}, + {'src': os.path.join(PLUGINS, "MrTeferi"), 'dst': os.path.join(DIST_PLUGINS, 'MrTeferi')}, + {'src': os.path.join(PLUGINS, "SilvanMTG"), 'dst': os.path.join(DIST_PLUGINS, 'SilvanMTG')}, ] # Directories containing ini files -cfg_dirs = [ - os.path.join(DIST_PS, 'configs'), - os.path.join(DIST_PS_PLUGINS, 'MrTeferi/configs'), - os.path.join(DIST_PS_PLUGINS, 'SilvanMTG/configs') +remove_dirs = [ + os.path.join(DIST_SRC, 'configs'), + os.path.join(DIST_PLUGINS, 'MrTeferi/configs'), + os.path.join(DIST_PLUGINS, 'SilvanMTG/configs'), + os.path.join(DIST_PLUGINS, 'MrTeferi/templates'), + os.path.join(DIST_PLUGINS, 'SilvanMTG/templates') ] @@ -58,11 +66,17 @@ def clear_build_files(clear_dist=True): Clean out all PYCACHE files and Pyinstaller files """ os.system("pyclean -v .") - try: rmtree(os.path.join(os.getcwd(), 'build')) - except Exception as e: print(e) + if os.path.exists(os.path.join(CWD, '.venv')): + os.system("pyclean -v .venv") + try: + rmtree(os.path.join(os.getcwd(), 'build')) + except Exception as e: + print(e) if clear_dist: - try: rmtree(os.path.join(os.getcwd(), 'dist')) - except Exception as e: print(e) + try: + rmtree(os.path.join(os.getcwd(), 'dist')) + except Exception as e: + print(e) def make_dirs(): @@ -71,10 +85,10 @@ def make_dirs(): """ # Ensure folders exist Path(DIST).mkdir(mode=511, parents=True, exist_ok=True) - Path(DIST_PS).mkdir(mode=511, parents=True, exist_ok=True) + Path(DIST_DATA).mkdir(mode=511, parents=True, exist_ok=True) + Path(DIST_PLUGINS).mkdir(mode=511, parents=True, exist_ok=True) Path(os.path.join(DIST, "art")).mkdir(mode=511, parents=True, exist_ok=True) Path(os.path.join(DIST, "templates")).mkdir(mode=511, parents=True, exist_ok=True) - Path(DIST_PS_PLUGINS).mkdir(mode=511, parents=True, exist_ok=True) def move_data(): @@ -83,20 +97,22 @@ def move_data(): """ # Transfer our necessary files print("Transferring data files...") - for f in files: copy2(f['src'], f['dst']) + for f in files: + copy2(f['src'], f['dst']) # Transfer our necessary folders print("Transferring data folders...") - for f in folders: copytree(f['src'], f['dst']) + for f in folders: + copytree(f['src'], f['dst']) -def remove_ini_files(): +def remove_unneeded_files(): """ - Remove autogenerated ini config files. + Remove autogenerated ini config files and PSD templates. """ - for directory in cfg_dirs: + for directory in remove_dirs: for file_name in os.listdir(directory): - if file_name.endswith(".ini"): + if file_name.endswith(('.ini', '.psd', '.psb')): os.remove(os.path.join(directory, file_name)) @@ -129,6 +145,6 @@ def build_zip(): # Post-build steps move_data() - remove_ini_files() + remove_unneeded_files() build_zip() clear_build_files(False) diff --git a/config.ini b/config.ini index 0c4d18fa..f761815c 100644 --- a/config.ini +++ b/config.ini @@ -12,12 +12,13 @@ True.Collector.Info = 1 Force.English.Formatting = 0 [SYMBOLS] -Default.Symbol =  -Auto.Set.Symbol = 1 -Auto.Symbol.Size = 1 +Symbol.Mode = default +Default.Symbol = MTG +Force.Default.Symbol = 0 Symbol.Stroke.Size = 6 -Fill.Symbol.Background = 0 -Classic.Symbol.Rendering = 0 + +[WATERMARK] +Enable.Watermark = 0 [APP] Manual.Edit = 0 @@ -27,6 +28,8 @@ Targeted.Replace = 1 Dev.Mode = 0 [TEMPLATES] +Border.Color = black Render.Snow = 0 Render.Miracle = 0 +Render.Basic = 1 diff --git a/main.py b/main.py index 518b7930..baac8a9b 100644 --- a/main.py +++ b/main.py @@ -2,27 +2,29 @@ PROXYSHOP - GUI LAUNCHER """ # Core imports +import sys import json -import os import os.path as osp -import sys -import threading -import time +from os import environ, listdir +from threading import Thread from pathlib import Path -from time import perf_counter -from glob import glob -from typing import Union +from time import sleep, perf_counter +from typing import Union, Optional + +from _ctypes import COMError from photoshop import api as ps +from photoshop.api import PhotoshopPythonAPIError +from photoshop.api._document import Document # Development specific imports development = False if not hasattr(sys, '_MEIPASS'): try: - from proxyshop.__dev__ import development + from src.__dev__ import development except ImportError: development = False if not development: - os.environ["KIVY_NO_CONSOLELOG"] = "1" + environ["KIVY_NO_CONSOLELOG"] = "1" # Kivy imports from kivy.utils import get_color_from_hex @@ -39,19 +41,21 @@ from kivy.uix.togglebutton import ToggleButton # Proxyshop imports -from proxyshop.__version__ import version -from proxyshop.gui.creator import CreatorPanels -from proxyshop.gui.dev import TestApp -from proxyshop.gui.dict import GUI -from proxyshop.gui.utils import ( - HoverBehavior, HoverButton +from src.__version__ import version +from src.gui.creator import CreatorPanels +from src.gui.dev import TestApp +from src.gui.utils import ( + HoverBehavior, HoverButton, GUI +) +from src.gui.settings import SettingsPopup +from src.update import download_s3_file +from src.constants import con +from src.core import ( + retrieve_card_info, TemplateDetails, get_templates, card_types, get_template_class, get_my_templates ) -from proxyshop.gui.settings import SettingsPopup -from proxyshop.update import download_s3_file -from proxyshop.constants import con -from proxyshop.core import retrieve_card_info, TemplateDetails -from proxyshop.settings import cfg -from proxyshop import core, layouts +from src.settings import cfg +from src.layouts import CardLayout, layout_map +from src.utils.strings import msg_success, msg_error, msg_warn, ps_version_check # App configuration Config.set('graphics', 'width', '800') @@ -60,8 +64,7 @@ Config.write() # Core vars -card_types = core.card_types -templates = core.get_templates() +templates = get_templates() """ @@ -116,84 +119,136 @@ class ProxyshopApp(App): def __init__(self, **kwargs): super().__init__(**kwargs) - # App settings - self.title = f"Proxyshop v{version}" - self.icon = 'proxyshop/img/proxyshop.png' - self.cont_padding = 10 + # Data + self._assigned_layouts = { + 'failed': [] + } + self._templates_selected = {} + self._result = True + self._docref = None + + """ + KIVY PROPERTIES + """ + + @property + def title(self) -> str: + return f"Proxyshop v{version}" + + @property + def icon(self) -> str: + return osp.join(con.path_img, 'proxyshop.png') + + @property + def cont_padding(self) -> int: + return 10 + + """ + SETTABLE PROPERTIES + """ + + @property + def assigned_layouts(self) -> dict[str, list[Union[str, CardLayout]]]: + # Tracks cards assigned to a layout + return self._assigned_layouts - # User data - self.assigned_layouts = {} - self.result = True - self.temps = {} - self.docref = None + @assigned_layouts.setter + def assigned_layouts(self, value): + self._assigned_layouts = value - def select_template(self, btn: ToggleButton): + @property + def templates_selected(self) -> dict[str, str]: + # Tracks the templates chosen by the user + return self._templates_selected + + @templates_selected.setter + def templates_selected(self, value): + self._templates_selected = value + + @property + def result(self) -> bool: + # Tracks the success result of the last render + return self._result + + @result.setter + def result(self, value): + self._result = value + + @property + def docref(self) -> Optional[Document]: + # Tracks the currently open Photoshop document + return self._docref + + @docref.setter + def docref(self, value): + self._docref = value + + """ + METHODS + """ + + def select_template(self, btn: ToggleButton) -> None: """ - Add selected template to the templates dict. + Add selected template to the template dict. + @param btn: Button that was pressed and represents a given template. """ # Set the preview image btn.parent.image.source = btn.parent.preview if ( osp.exists(btn.parent.preview) - ) else osp.join(con.cwd, "proxyshop/img/NotFound.jpg") + ) else osp.join(con.cwd, "src/img/NotFound.jpg") # Select the template card_type = btn.parent.type if btn.state == "down": - self.temps[card_type] = btn.text - btn.disabled = True + # Select the template, disable all other buttons + self.templates_selected[card_type] = btn.text for name, button in GUI.template_btn[card_type].items(): if name != btn.text: button.disabled = False button.state = "normal" + btn.disabled = True - def render_target(self): + def render_target(self) -> None: """ - RENDER TARGET IMAGE + Render card using target image selected in Photoshop. """ # Setup step self.reset(disable_buttons=True, reset_data=True) - temps = core.get_my_templates(self.temps) + temps = get_my_templates(self.templates_selected) # Open file in PS app = ps.Application() - file = app.openDialog() - if file is None: - self.enable_buttons() + if not (file_name := self.select_art(app)): return # Assign layout to card - card = self.assign_layout(file[0]) + card = self.assign_layout(file_name) if isinstance(card, str): # Card failed to assign - console.update(f"[color=#a84747]{card}[/color]") + console.update(msg_error(card)) self.enable_buttons() return # Start a new thread console.update() - template = temps[card.card_class] - template['loaded_class'] = core.get_template_class(template) - thr = threading.Thread(target=self.render, args=(template, card), daemon=True) - self.start_thread(thr) + template = temps[card.card_class].copy() + template['loaded_class'] = get_template_class(template) + self.start_thread(Thread(target=self.render, args=(template, card), daemon=True)) # Return to normal self.reset(close_document=True, enable_buttons=True) - def render_all(self): + def render_all(self) -> None: """ - RENDER ALL IMAGES IN ART FOLDER - Using our custom JSON + Render cards using all images located in the art folder. """ # Setup step self.reset(disable_buttons=True, reset_data=True) - temps = core.get_my_templates(self.temps) - failed, files, cards, lthr, types = [], [], [], [], {} + temps = get_my_templates(self.templates_selected) - # Select all images in art folder - folder = osp.join(con.cwd, "art") - extensions = ["*.png", "*.jpg", "*.tif", "*.jpeg", "*.webp", "*.jpf"] - for ext in extensions: - files.extend(glob(osp.join(folder, ext))) + # Key datas + layout_threads: list[Thread] = [] + files = self.get_art_files() # Is the list empty? if len(files) == 0: @@ -203,162 +258,105 @@ def render_all(self): # Run through each file, assigning layout for i, f in enumerate(files, start=0): - lthr.append(threading.Thread(target=self.assign_layout, args=(f, i))) - lthr[i].start() - time.sleep(.05) - - # Join each thread and check its return - for i, t in enumerate(lthr): - t.join() - if isinstance(self.assigned_layouts[i], str): - failed.append(self.assigned_layouts[i]) - else: - cards.append(self.assigned_layouts[i]) + layout_threads.append(Thread(target=self.assign_layout, args=(f,))) + layout_threads[i].start() + # Scryfall rate limit + # https://scryfall.com/docs/api + sleep(.05) + + # Complete each thread + for i, thread in enumerate(layout_threads): + thread.join() # Did any cards fail to find? - if len(failed) > 0: + if self.assigned_layouts.get('failed'): # Some cards failed, should we continue? proceed = console.error( - "\n---- [b]I can't render the following cards[/b] ----\n{}".format("\n".join(failed)), - color=False, continue_msg="---- [b]Would you still like to proceed?[/b] ----" + "\n---- [b]I can't render the following cards[/b] ----\n" + "{}".format("\n".join(self.assigned_layouts['failed'].copy())), + continue_msg="\n---- [b]Would you still like to proceed?[/b] ----" ) + # Cancel the operation if not proceed: self.enable_buttons() return + console.update() - # Create a segment of renders for each card class - for c in cards: - if c.card_class not in types: - types[c.card_class] = [c] - else: - types[c.card_class].append(c) + # Render each card type as a different batch + for card_type, cards in self.assigned_layouts.items(): + # Skip failed + if card_type == 'failed': + continue - # Console next line, then render each segment as a different batch - console.update() - for card_type, cards in types.items(): # The template we'll use for this type - template = temps[card_type] - template['loaded_class'] = core.get_template_class(template) + template = temps[card_type].copy() + template['loaded_class'] = get_template_class(template) for card in cards: # Start render thread - thr = threading.Thread(target=self.render, args=(template, card), daemon=True) + thr = Thread(target=self.render, args=(template, card), daemon=True) if not self.start_thread(thr): self.reset(close_document=True, enable_buttons=True) return + # Card complete + self.reset() # Render group complete self.reset(close_document=True) # All renders complete self.enable_buttons() - def render_custom(self, template: TemplateDetails, scryfall): + def render_custom(self, template: TemplateDetails, scryfall) -> None: """ Set up custom render job, then execute """ + # Setup step self.reset(disable_buttons=True, reset_data=True) - try: - - # Choose an image - app = ps.Application() - file = app.openDialog() - if file is None: - self.enable_buttons() - return - - # Setup file info - file = { - 'filename': file[0], - 'name': scryfall['name'], - 'artist': scryfall['artist'], - 'set': scryfall['set'], - 'creator': None - } - # If basic, manually call the BasicLandLayout class - if scryfall['name'] in con.basic_land_names: - layout = layouts.BasicLandLayout(file) - else: - # Instantiate layout OBJ, unpack scryfall json and store relevant data as attributes - scryfall['lang'] = "en" - try: - layout = layouts.layout_map[scryfall['layout']](scryfall, file) - except (KeyError, TypeError) as e: - console.update(f"Layout not supported!\n", e) - return - - # Get our template class - try: - template['loaded_class'] = core.get_template_class(template) - except Exception as e: - console.update(f"Template not found!\n", e) - return + # Open file in PS + app = ps.Application() + if not (file_name := self.select_art(app)): + return - # Execute template - console.update() - thr = threading.Thread(target=self.render, args=(template, layout), daemon=True) - self.start_thread(thr) + # Setup file info + file = { + 'filename': file_name, + 'name': scryfall['name'], + 'artist': scryfall['artist'], + 'set': scryfall['set'], + 'creator': None + } + # Instantiate layout OBJ, unpack scryfall json and store relevant data as attributes + try: + # TODO: Improve logic to discern between different card classes + layout = layout_map[scryfall['layout']](scryfall, file) + template['loaded_class'] = get_template_class(template) except Exception as e: - console.update(f"General error! Maybe Photoshop was busy?\n", e) + console.update(f"Custom card failed!\n", e) + return + + # Execute template + console.update() + thr = Thread(target=self.render, args=(template, layout), daemon=True) + self.start_thread(thr) self.reset(close_document=True, enable_buttons=True) - def assign_layout( - self, filename: Union[Path, str], index: int = 0 - ) -> Union[str, layouts.BasicLandLayout, layouts.NormalLayout]: + def test_all(self, deep: bool = False) -> None: """ - Assign layout object to a card. - @param filename: String including card name, plus optionally: - - (artist name) - - [set code] - @param index: The index to save this layout for assigned_layouts - @return: Layout object for this card + Test all templates in series. + @param deep: Tests every card case for each template if enabled. """ - # Get basic card information - card = retrieve_card_info(filename) - - # Instantiate basic land and return it - if card['name'] in con.basic_land_names: - # If basic, manually call the BasicLandLayout class - self.assigned_layouts[index] = layouts.BasicLandLayout(card) - if not cfg.dev_mode: - console.update( - f"[color=#59d461]SUCCESS:[/color] {str(self.assigned_layouts[index])}" - ) - return self.assigned_layouts[index] - - # Get scryfall info for any other type - scryfall = card_info(card['name'], card['set']) - if isinstance(scryfall, Exception): - # Scryfall returned None or an exception - console.log_exception(scryfall) - self.assigned_layouts[index] = f"Scryfall search failed - [color=#a84747]{card['name']}[/color]" - return self.assigned_layouts[index] - - # Instantiate layout OBJ, unpack scryfall json, store relevant data as attributes - try: - self.assigned_layouts[index] = layouts.layout_map[scryfall['layout']](scryfall, card) - if not cfg.dev_mode: - console.update( - f"[color=#59d461]SUCCESS:[/color] {str(self.assigned_layouts[index])}" - ) - return self.assigned_layouts[index] - except Exception as e: - # Layout object couldn't be created - console.log_exception(e) - self.assigned_layouts[index] = f"Layout incompatible - [color=#a84747]{card['name']}[/color]" - return self.assigned_layouts[index] - - def test_all(self, deep: bool = False): + # Setup step self.reset(disable_buttons=True, reset_data=True) # Load temps and test case cards - with open(osp.join(con.cwd, "proxyshop/tests.json"), encoding="utf-8") as fp: + with open(osp.join(con.cwd, "src/data/tests.json"), encoding="utf-8") as fp: cases = json.load(fp) - # Loop through each card, test all templates for that type + # Loop through each template type for card_type, cards in cases.items(): - if not deep: - cards = [cards[0]] - console.update(f"\n[color=#59d461]---- {card_type.upper()} ----[/color]") + # Is this a deep test? + cards = [cards[0]] if not deep else cards + console.update(msg_success(f"\n---- {card_type.upper()} ----")) for template in templates[card_type]: # Loop through cards to test failures = [] @@ -372,68 +370,120 @@ def test_all(self, deep: bool = False): self.reset(enable_buttons=True) return # Grab the template class and start the render thread - layout.filename = osp.join(con.cwd, "proxyshop/img/test.png") - template['loaded_class'] = core.get_template_class(template) - thr = threading.Thread(target=self.render, args=(template, layout)) + layout.filename = osp.join(con.cwd, "src/img/test.png") + template['loaded_class'] = get_template_class(template) + thr = Thread(target=self.render, args=(template, layout)) if not self.start_thread(thr): failures.append(card[0]) + # Card finished + self.reset() + # Template finished self.reset(close_document=True) - if len(failures) > 0: - failed = ", ".join(failures) - console.update(f"[color=#a84747]FAILED ({failed})[/color]") - else: - console.update("[color=#59d461]SUCCESS[/color]") + console.update( + # Did any tests fail? + msg_error(f"FAILED ({', '.join(failures)})") if failures + else msg_success("SUCCESS") + ) + # All tests finished self.reset(enable_buttons=True) - def test_target(self, card_type: str, template: TemplateDetails): + def test_target(self, card_type: str, template: TemplateDetails) -> None: + """ + Tests a specific template, always tests every case. + @param card_type: Type of card, corresponds to template type. + @param template: Specific template to test. + """ + # Setup step self.reset(disable_buttons=True, reset_data=True) # Load test case cards - with open(osp.join(con.cwd, "proxyshop/tests.json"), encoding="utf-8") as fp: + with open(osp.join(con.cwd, "src/data/tests.json"), encoding="utf-8") as fp: cards = json.load(fp) # Loop through our cases - console.update(f"\n[color=#59d461]---- {template['class_name']} ----[/color]") + console.update(msg_success(f"\n---- {template['class_name']} ----")) for card in cards[card_type]: + # Get the layout object layout = self.assign_layout(card[0]) if isinstance(layout, str): # Layout or Scryfall Fail console.update(layout) self.reset(enable_buttons=True) return - layout.filename = osp.join(con.cwd, "proxyshop/img/test.png") + + # Start the render + layout.filename = osp.join(con.cwd, "src/img/test.png") console.update(f"{card[0]} ... ", end="") - template['loaded_class'] = core.get_template_class(template) - thr = threading.Thread(target=self.render, args=(template, layout), daemon=True) - if self.start_thread(thr): - console.update("[color=#59d461]SUCCESS[/color]") - else: - console.update(f"[color=#a84747]FAILED - {card[1]}[/color]") + template['loaded_class'] = get_template_class(template) + thr = Thread(target=self.render, args=(template, layout), daemon=True) + console.update( + msg_success("SUCCESS") if self.start_thread(thr) + else msg_error(f"FAILED - {card[1]}") + ) + # Card finished self.reset() + # All tests finished self.reset(close_document=True, enable_buttons=True) + def assign_layout(self, filename: Union[Path, str]) -> Union[str, CardLayout]: + """ + Assign layout object to a card. + @param filename: String including card name, plus optionally: + - (artist name) + - [set code] + - {collector number} + @return: Layout object for this card + """ + # Get basic card information + card = retrieve_card_info(filename) + + # Get scryfall info for any other type + scryfall = card_info(card['name'], card['set']) + if isinstance(scryfall, Exception) or not scryfall: + # Scryfall data invalid + console.log_exception(scryfall) + failure = f"Scryfall search failed: {msg_error(card['name'])}" + self.assigned_layouts['failed'].append(failure) + return failure + + # Instantiate layout object + layout = layout_map.get(scryfall['layout']) + layout = layout(scryfall, card) if layout else f"Layout incompatible: {msg_error(card['name'])}" + + # Did the layout fail? + if isinstance(layout, str): + self.assigned_layouts['failed'].append(layout) + return layout + + # Assign the card + self.assigned_layouts.setdefault(layout.card_class, []).append(layout) + if not cfg.dev_mode: + console.update(f"{msg_success('SUCCESS:')} {str(layout)}") + return layout + def render( - self, template: TemplateDetails, card: any + self, template: TemplateDetails, card: CardLayout ) -> None: """ - Execute a render job. - @param template: Template details containing class, plugin, name, and type. - @param card: Layout object containing validated scryfall data. + Execute a render job using a given template and layout object. + @param template: Template details containing class, plugin, etc. + @param card: Layout object representing validated scryfall data. """ try: if not cfg.dev_mode: - console.update(f"[color=#59d461]---- {card.name} ----[/color]") + console.update(msg_success(f"---- {card.name} ----")) cfg.load(template=template) + card.template_path = template['templates_path'] proxy = template['loaded_class'](card) self.docref = proxy.docref self.result = proxy.execute() del proxy except Exception as e: console.error( - "Template failed to load! This plugin may be busted.", e + msg_error("Template failed to load!"), e ) - def start_thread(self, thr: threading.Thread) -> bool: + def start_thread(self, thr: Thread) -> bool: """ Create a counter, start a thread, print time completed. @param thr: Thread object @@ -473,7 +523,27 @@ def reset( if disable_buttons: self.disable_buttons() if reset_data: - self.assigned_layouts = {} + self.assigned_layouts = { + 'failed': [] + } + + def select_art(self, app: ps.Application) -> Optional[str]: + """ + Open file select dialog in Photoshop, return the file. + @return: File object. + """ + try: + file = app.openDialog() + except (COMError, PhotoshopPythonAPIError): + # Photoshop is busy + console.update("Photoshop is not responding!") + self.enable_buttons() + return + if not file: + # No file selected + self.enable_buttons() + return + return file[0] def close_document(self) -> None: """ @@ -485,10 +555,39 @@ def close_document(self) -> None: self.docref.close(ps.SaveOptions.DoNotSaveChanges) self.docref = None except Exception as e: - print(e) + # Document wasn't available + print("Couldn't close corresponding document!") + console.log_exception(e) + + @staticmethod + def get_art_files(dir_name: str = 'art') -> list[str]: + """ + Grab all supported image files within a given directory. + @param dir_name: Folder within the working directory containing images. + @return: List of art files. + """ + # Folder, file list, supported extensions + folder = osp.join(con.cwd, dir_name) + all_files = listdir(folder) + ext = (".png", ".jpg", ".tif", ".jpeg", ".jpf") + + # Select all images in folder not prepended with ! + files = [osp.join(folder, f) for f in all_files if f.endswith(ext) and f[0] != '!'] + + # Check for webp files + files_webp = [osp.join(folder, f) for f in all_files if f.endswith('.webp') and f[0] != '!'] + # Check if Photoshop version supports webp + if files_webp and not ps_version_check(con.version_webp): + console.update(msg_warn('Skipped WEBP image, WEBP requires Photoshop ^23.2.0')) + elif files_webp: + files.extend(files_webp) + return files @staticmethod async def open_app_settings() -> None: + """ + Opens a settings panel for global or template specific configs. + """ cfg_panel = SettingsPopup() cfg_panel.open() @@ -504,6 +603,7 @@ def disable_buttons(self) -> None: else: self.root.ids.rend_targ_btn.disabled = True self.root.ids.rend_all_btn.disabled = True + self.root.ids.app_settings_btn.disabled = True console.ids.update_btn.disabled = True def enable_buttons(self) -> None: @@ -518,6 +618,7 @@ def enable_buttons(self) -> None: else: self.root.ids.rend_targ_btn.disabled = False self.root.ids.rend_all_btn.disabled = False + self.root.ids.app_settings_btn.disabled = False console.ids.update_btn.disabled = False def build(self) -> Union[TestApp, ProxyshopPanels]: @@ -567,7 +668,7 @@ def __init__(self, **kwargs): scroll_box.add_widget(TemplateList(temps, preview=container.ids.preview_image)) container.ids.preview_image.source = temps[0]['preview_path'] if ( osp.exists(temps[0]['preview_path']) - ) else osp.join(con.cwd, 'proxyshop/img/NotFound.jpg') + ) else osp.join(con.cwd, 'src/img/NotFound.jpg') container.ids.template_view_container.add_widget(scroll_box) tab.content = container self.add_widget(tab) @@ -648,25 +749,25 @@ async def open_settings(self): # Update symbol library and manifest try: if not development: - download_s3_file('manifest.json', osp.join(con.cwd, 'proxyshop/manifest.json')) - download_s3_file('symbols.json', osp.join(con.cwd, 'proxyshop/symbols.json')) + download_s3_file('manifest.json', osp.join(con.cwd, 'src/data/manifest.json')) + download_s3_file('symbols.json', osp.join(con.cwd, 'src/data/symbols.json')) con.reload() except Exception as err: print(err) # Ensure mandatory folders are created Path(osp.join(con.cwd, "out")).mkdir(mode=511, parents=True, exist_ok=True) - Path(osp.join(con.cwd, "tmp")).mkdir(mode=511, parents=True, exist_ok=True) + Path(osp.join(con.cwd, "logs")).mkdir(mode=511, parents=True, exist_ok=True) Path(osp.join(con.cwd, "templates")).mkdir(mode=511, parents=True, exist_ok=True) - Path(osp.join(con.cwd, "proxyshop/datas")).mkdir(mode=511, parents=True, exist_ok=True) + Path(osp.join(con.cwd, "src/data/sets")).mkdir(mode=511, parents=True, exist_ok=True) # Launch the app Factory.register('HoverBehavior', HoverBehavior) - Builder.load_file(osp.join(con.cwd, "proxyshop/kv/proxyshop.kv")) + Builder.load_file(osp.join(con.cwd, "src/kv/proxyshop.kv")) # Imports that load console must be imported here - from proxyshop.scryfall import card_info - from proxyshop.__console__ import console + from src.scryfall import card_info + from src.__console__ import console # Start app ProxyshopApp().run() diff --git a/proxyshop/plugins/MrTeferi/README.md b/plugins/MrTeferi/README.md similarity index 100% rename from proxyshop/plugins/MrTeferi/README.md rename to plugins/MrTeferi/README.md diff --git a/proxyshop/plugins/MrTeferi/actions/pencilsketch.py b/plugins/MrTeferi/actions/pencilsketch.py similarity index 97% rename from proxyshop/plugins/MrTeferi/actions/pencilsketch.py rename to plugins/MrTeferi/actions/pencilsketch.py index 306d6ca5..305f42c3 100644 --- a/proxyshop/plugins/MrTeferi/actions/pencilsketch.py +++ b/plugins/MrTeferi/actions/pencilsketch.py @@ -1,7 +1,9 @@ """ Pencil Sketchify Action Module """ -from proxyshop.__console__ import console +from typing import Union + +from src.__console__ import console import photoshop.api as ps app = ps.Application() cID = app.charIDToTypeID @@ -14,12 +16,12 @@ """ -def new_layer(id): +def new_layer(index: int): desc1 = ps.ActionDescriptor() ref1 = ps.ActionReference() ref1.putClass(cID('Lyr ')) desc1.putReference(cID('null'), ref1) - desc1.putInteger(cID('LyrI'), id) + desc1.putInteger(cID('LyrI'), index) app.executeAction(cID('Mk '), desc1, dialog_mode) @@ -36,18 +38,16 @@ def select_bg(): def reset_colors(): - """ desc1 = ps.ActionDescriptor() ref1 = ps.ActionReference() ref1.putProperty(cID('Clr '), cID('Clrs')) desc1.putReference(cID('null'), ref1) app.executeAction(cID('Rset'), desc1, dialog_mode) - """ - pass -def move_layer(pos, id): - if isinstance(id, int): id = [id] +def move_layer(pos, index: Union[int, list[int]]): + if isinstance(index, int): + index = [index] desc1 = ps.ActionDescriptor() ref1 = ps.ActionReference() ref1.putEnumerated(cID('Lyr '), cID('Ordn'), cID('Trgt')) @@ -58,13 +58,13 @@ def move_layer(pos, id): desc1.putBoolean(cID('Adjs'), False) desc1.putInteger(cID('Vrsn'), 5) list1 = ps.ActionList() - for i in id: + for i in index: list1.putInteger(i) desc1.putList(cID('LyrI'), list1) app.executeAction(cID('move'), desc1, dialog_mode) -def set_opacity(opacity): +def set_opacity(opacity: float): desc1 = ps.ActionDescriptor() ref1 = ps.ActionReference() ref1.putEnumerated(cID('Lyr '), cID('Ordn'), cID('Trgt')) @@ -75,19 +75,19 @@ def set_opacity(opacity): app.executeAction(cID('setd'), desc1, dialog_mode) -def select_layer(name, id): +def select_layer(name: str, index: int): desc1 = ps.ActionDescriptor() ref1 = ps.ActionReference() ref1.putName(cID('Lyr '), name) desc1.putReference(cID('null'), ref1) desc1.putBoolean(cID('MkVs'), False) list1 = ps.ActionList() - list1.putInteger(id) + list1.putInteger(index) desc1.putList(cID('LyrI'), list1) app.executeAction(cID('slct'), desc1, dialog_mode) -def select_layers(name, layers): +def select_layers(name: str, layers: list[int]): desc1 = ps.ActionDescriptor() ref1 = ps.ActionReference() ref1.putName(cID('Lyr '), name) @@ -118,8 +118,10 @@ def hide_layer(name=None): desc1 = ps.ActionDescriptor() list1 = ps.ActionList() ref1 = ps.ActionReference() - if name: ref1.putName(cID('Lyr '), name) - else: ref1.putEnumerated(cID('Lyr '), cID('Ordn'), cID('Trgt')) + if name: + ref1.putName(cID('Lyr '), name) + else: + ref1.putEnumerated(cID('Lyr '), cID('Ordn'), cID('Trgt')) list1.putReference(ref1) desc1.putList(cID('null'), list1) app.executeAction(cID('Hd '), desc1, dialog_mode) @@ -129,8 +131,10 @@ def show_layer(name=None): desc1 = ps.ActionDescriptor() list1 = ps.ActionList() ref1 = ps.ActionReference() - if name: ref1.putName(cID('Lyr '), name) - else: ref1.putEnumerated(cID('Lyr '), cID('Ordn'), cID('Trgt')) + if name: + ref1.putName(cID('Lyr '), name) + else: + ref1.putEnumerated(cID('Lyr '), cID('Ordn'), cID('Trgt')) list1.putReference(ref1) desc1.putList(cID('null'), list1) app.executeAction(cID('Shw '), desc1, dialog_mode) @@ -164,6 +168,24 @@ def blend(key): app.executeAction(cID('setd'), desc1, dialog_mode) +""" +FILTERS +""" + + +def filter_photocopy(detail: int = 2, darken: int = 5): + """ + Apply photocopy filter. + @param detail: Level of detail. + @param darken: Darkness amount. + """ + desc1 = ps.ActionDescriptor() + desc1.putEnumerated(cID('GEfk'), cID('GEft'), cID('Phtc')) + desc1.putInteger(sID('detail '), detail) + desc1.putInteger(sID('darken'), darken) + app.executeAction(1195730531, desc1, dialog_mode) + + # Utility commands def blend_multiply(): blend('multiply') def blend_color_dodge(): blend('colorDodge') @@ -218,11 +240,7 @@ def run(draft_sketch=False, rough_sketch=False, black_and_white=True, manual_edi reset_colors() # Filter Gallery - Photocopy - desc1 = ps.ActionDescriptor() - desc1.putEnumerated(cID('GEfk'), cID('GEft'), cID('Phtc')) - desc1.putInteger(cID('Dtl '), 2) - desc1.putInteger(cID('Drkn'), 5) - app.executeAction(1195730531, desc1, dialog_mode) + filter_photocopy(detail=2, darken=5) # Set - Blending Multiply blend_multiply() @@ -243,12 +261,12 @@ def run(draft_sketch=False, rough_sketch=False, black_and_white=True, manual_edi desc1 = ps.ActionDescriptor() list1 = ps.ActionList() desc2 = ps.ActionDescriptor() + desc3 = ps.ActionDescriptor() desc2.putEnumerated(cID('GEfk'), cID('GEft'), cID('AccE')) desc2.putInteger(cID('EdgW'), 3) desc2.putInteger(cID('EdgB'), 20) desc2.putInteger(cID('Smth'), 15) list1.putObject(cID('GEfc'), desc2) - desc3 = ps.ActionDescriptor() desc3.putEnumerated(cID('GEfk'), cID('GEft'), cID('Phtc')) desc3.putInteger(cID('Dtl '), 1) desc3.putInteger(cID('Drkn'), 49) @@ -665,11 +683,7 @@ def run(draft_sketch=False, rough_sketch=False, black_and_white=True, manual_edi reset_colors() # Filter Gallery - Photocopy - desc1 = ps.ActionDescriptor() - desc1.putEnumerated(cID('GEfk'), cID('GEft'), cID('Phtc')) - desc1.putInteger(cID('Dtl '), 2) - desc1.putInteger(cID('Drkn'), 5) - app.executeAction(1195730531, desc1, dialog_mode) + filter_photocopy(detail=2, darken=5) # Set blend_multiply() diff --git a/proxyshop/plugins/MrTeferi/actions/sketch.py b/plugins/MrTeferi/actions/sketch.py similarity index 100% rename from proxyshop/plugins/MrTeferi/actions/sketch.py rename to plugins/MrTeferi/actions/sketch.py diff --git a/proxyshop/plugins/MrTeferi/configs/SketchTemplate.json b/plugins/MrTeferi/configs/SketchTemplate.json similarity index 100% rename from proxyshop/plugins/MrTeferi/configs/SketchTemplate.json rename to plugins/MrTeferi/configs/SketchTemplate.json diff --git a/proxyshop/plugins/MrTeferi/img/BasicLandDarkMode.jpg b/plugins/MrTeferi/img/BasicLandDarkMode.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/BasicLandDarkMode.jpg rename to plugins/MrTeferi/img/BasicLandDarkMode.jpg diff --git a/proxyshop/plugins/MrTeferi/img/ColorshiftedTemplate.jpg b/plugins/MrTeferi/img/ColorshiftedTemplate.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/ColorshiftedTemplate.jpg rename to plugins/MrTeferi/img/ColorshiftedTemplate.jpg diff --git a/proxyshop/plugins/MrTeferi/img/CrimsonFangTemplate.jpg b/plugins/MrTeferi/img/CrimsonFangTemplate.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/CrimsonFangTemplate.jpg rename to plugins/MrTeferi/img/CrimsonFangTemplate.jpg diff --git a/proxyshop/plugins/MrTeferi/img/DoubleFeatureTemplate.jpg b/plugins/MrTeferi/img/DoubleFeatureTemplate.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/DoubleFeatureTemplate.jpg rename to plugins/MrTeferi/img/DoubleFeatureTemplate.jpg diff --git a/proxyshop/plugins/MrTeferi/img/KaldheimTemplate.jpg b/plugins/MrTeferi/img/KaldheimTemplate.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/KaldheimTemplate.jpg rename to plugins/MrTeferi/img/KaldheimTemplate.jpg diff --git a/proxyshop/plugins/MrTeferi/img/MaleMPCTemplate.jpg b/plugins/MrTeferi/img/MaleMPCTemplate.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/MaleMPCTemplate.jpg rename to plugins/MrTeferi/img/MaleMPCTemplate.jpg diff --git a/proxyshop/plugins/MrTeferi/img/PhyrexianTemplate.jpg b/plugins/MrTeferi/img/PhyrexianTemplate.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/PhyrexianTemplate.jpg rename to plugins/MrTeferi/img/PhyrexianTemplate.jpg diff --git a/proxyshop/plugins/MrTeferi/img/SketchTemplate.jpg b/plugins/MrTeferi/img/SketchTemplate.jpg similarity index 100% rename from proxyshop/plugins/MrTeferi/img/SketchTemplate.jpg rename to plugins/MrTeferi/img/SketchTemplate.jpg diff --git a/proxyshop/plugins/MrTeferi/manifest.json b/plugins/MrTeferi/manifest.json similarity index 100% rename from proxyshop/plugins/MrTeferi/manifest.json rename to plugins/MrTeferi/manifest.json diff --git a/proxyshop/plugins/MrTeferi/template_map.json b/plugins/MrTeferi/template_map.json similarity index 100% rename from proxyshop/plugins/MrTeferi/template_map.json rename to plugins/MrTeferi/template_map.json diff --git a/proxyshop/plugins/MrTeferi/templates.py b/plugins/MrTeferi/templates.py similarity index 92% rename from proxyshop/plugins/MrTeferi/templates.py rename to plugins/MrTeferi/templates.py index 3fc7c065..67006e71 100644 --- a/proxyshop/plugins/MrTeferi/templates.py +++ b/plugins/MrTeferi/templates.py @@ -5,10 +5,10 @@ from typing import Optional, Callable from actions import pencilsketch, sketch -import proxyshop.templates as temp -from proxyshop.constants import con -from proxyshop.settings import cfg -import proxyshop.helpers as psd +import src.templates as temp +from src.constants import con +from src.settings import cfg +import src.helpers as psd from photoshop.api._artlayer import ArtLayer import photoshop.api as ps @@ -25,7 +25,7 @@ class SketchTemplate (temp.NormalTemplate): Sketch showcase from MH2 Original PSD by Nelynes """ - template_file_name = "MrTeferi/sketch" + template_file_name = "sketch" template_suffix = "Sketch" @property @@ -87,7 +87,7 @@ class KaldheimTemplate (temp.NormalTemplate): Kaldheim viking legendary showcase. Original Template by FeuerAmeise """ - template_file_name = "MrTeferi/kaldheim" + template_file_name = "kaldheim" template_suffix = "Kaldheim" @property @@ -128,7 +128,7 @@ class CrimsonFangTemplate (temp.NormalTemplate): Works for Normal and Transform cards Transform is kinda experimental. """ - template_file_name = "MrTeferi/crimson-fang" + template_file_name = "crimson-fang" template_suffix = "Fang" @property @@ -173,7 +173,7 @@ class PhyrexianTemplate (temp.NormalTemplate): """ From the Phyrexian secret lair promo """ - template_file_name = "MrTeferi/phyrexian" + template_file_name = "phyrexian" template_suffix = "Phyrexian" @property @@ -199,7 +199,7 @@ class DoubleFeatureTemplate (temp.NormalTemplate): Original assets from Warpdandy's Proximity Template Doesn't support companion, nyx, or twins layers. """ - template_file_name = "MrTeferi/double-feature" + template_file_name = "double-feature" template_suffix = "Double Feature" @property @@ -227,7 +227,7 @@ class MaleMPCTemplate (temp.NormalTemplate): """ MaleMPC's extended black box template. """ - template_file_name = "MrTeferi/male-mpc" + template_file_name = "male-mpc" template_suffix = "Extended Black" @cached_property @@ -264,7 +264,7 @@ class ColorshiftedTemplate (temp.NormalTemplate): Rendered from CC and MSE assets. Most titleboxes are built into pinlines. Doesn't support special layers for nyx, companion, land, or colorless. """ - template_file_name = "MrTeferi/colorshifted" + template_file_name = "colorshifted" template_suffix = "Shifted" def __init__(self, layout): @@ -312,9 +312,9 @@ def enable_frame_layers(self): # White brush and artist for black border if self.layout.pinlines[0:1] == "B" and len(self.pinlines) < 3: - psd.getLayer("Artist", self.legal_layer).textItem.color = psd.rgb_white() - psd.getLayer("Brush B", self.legal_layer).visible = False - psd.getLayer("Brush W", self.legal_layer).visible = True + psd.getLayer("Artist", self.legal_group).textItem.color = psd.rgb_white() + psd.getLayer("Brush B", self.legal_group).visible = False + psd.getLayer("Brush W", self.legal_group).visible = True super().enable_frame_layers() @@ -329,7 +329,7 @@ class BasicLandDarkMode (temp.BasicLandTemplate): Basic land Dark Mode Credit to Vittorio Masia (Sid) """ - template_file_name = "MrTeferi/basic-dark-mode" + template_file_name = "basic-dark-mode" template_suffix = f"Dark" def __init__(self, layout): @@ -338,7 +338,7 @@ def __init__(self, layout): def collector_info(self): # Collector info only has artist - psd.replace_text(psd.getLayer(con.layers.ARTIST, self.legal_layer), "Artist", self.layout.artist) + psd.replace_text(psd.getLayer(con.layers.ARTIST, self.legal_group), "Artist", self.layout.artist) def load_artwork(self): super().load_artwork() diff --git a/proxyshop/plugins/SilvanMTG/img/SilvanExtendedTemplate.jpg b/plugins/SilvanMTG/img/SilvanExtendedTemplate.jpg similarity index 100% rename from proxyshop/plugins/SilvanMTG/img/SilvanExtendedTemplate.jpg rename to plugins/SilvanMTG/img/SilvanExtendedTemplate.jpg diff --git a/proxyshop/plugins/SilvanMTG/img/SilvanMDFCFrontTemplate.jpg b/plugins/SilvanMTG/img/SilvanMDFCFrontTemplate.jpg similarity index 100% rename from proxyshop/plugins/SilvanMTG/img/SilvanMDFCFrontTemplate.jpg rename to plugins/SilvanMTG/img/SilvanMDFCFrontTemplate.jpg diff --git a/proxyshop/plugins/SilvanMTG/manifest.json b/plugins/SilvanMTG/manifest.json similarity index 100% rename from proxyshop/plugins/SilvanMTG/manifest.json rename to plugins/SilvanMTG/manifest.json diff --git a/proxyshop/plugins/SilvanMTG/template_map.json b/plugins/SilvanMTG/template_map.json similarity index 100% rename from proxyshop/plugins/SilvanMTG/template_map.json rename to plugins/SilvanMTG/template_map.json diff --git a/proxyshop/plugins/SilvanMTG/templates.py b/plugins/SilvanMTG/templates.py similarity index 72% rename from proxyshop/plugins/SilvanMTG/templates.py rename to plugins/SilvanMTG/templates.py index d7fb419c..fa1be98d 100644 --- a/proxyshop/plugins/SilvanMTG/templates.py +++ b/plugins/SilvanMTG/templates.py @@ -5,10 +5,9 @@ from photoshop.api._artlayer import ArtLayer -import proxyshop.templates as temp -from proxyshop.constants import con -from proxyshop.settings import cfg -import proxyshop.helpers as psd +import src.templates as temp +from src.constants import con +import src.helpers as psd import photoshop.api as ps app = ps.Application() @@ -17,13 +16,9 @@ class SilvanExtendedTemplate (temp.NormalTemplate): """ Silvan's legendary extended template used for WillieTanner proxies """ - template_file_name = "SilvanMTG/extended" + template_file_name = "extended" template_suffix = "Extended" - def __init__(self, layout): - cfg.remove_reminder = True - super().__init__(layout) - @property def background_layer(self) -> Optional[ArtLayer]: # Background @@ -39,11 +34,15 @@ def load_artwork(self): # Content aware fill psd.content_fill_empty_area(self.art_layer) + def enable_crown(self) -> None: + super().enable_crown() + psd.enable_mask(self.background_layer.parent) + def enable_hollow_crown(self, shadows: Optional[ArtLayer] = None) -> None: super().enable_hollow_crown() - shadows = psd.getLayer("Shadows Light", "Shadows") - if shadows: + # Mask shadows overlaying hollow crown + if shadows := psd.getLayer("Shadows Light", "Shadows"): psd.enable_mask(shadows) @@ -56,14 +55,10 @@ class SilvanMDFCBackTemplate (temp.MDFCBackTemplate): """ Silvan extended template modified for MDFC """ - template_file_name = "SilvanMTG/extended-mdfc-back" + template_file_name = "extended-mdfc-back" dfc_layer_group = con.layers.MDFC_BACK template_suffix = "Extended" - def __init__(self, layout): - cfg.remove_reminder = True - super().__init__(layout) - def load_artwork(self): super().load_artwork() @@ -75,6 +70,6 @@ class SilvanMDFCFrontTemplate (SilvanMDFCBackTemplate): """ Silvan extended template modified for MDFC """ - template_file_name = "SilvanMTG/extended-mdfc-front" + template_file_name = "extended-mdfc-front" dfc_layer_group = con.layers.MDFC_FRONT template_suffix = "Extended" diff --git a/poetry.lock b/poetry.lock index 6fcbcd47..2383dffd 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,31 +1,20 @@ # This file is automatically @generated by Poetry and should not be changed by hand. -[[package]] -name = "altgraph" -version = "0.17.3" -description = "Python graph (network) package" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "altgraph-0.17.3-py2.py3-none-any.whl", hash = "sha256:c8ac1ca6772207179ed8003ce7687757c04b0b71536f81e2ac5755c6226458fe"}, - {file = "altgraph-0.17.3.tar.gz", hash = "sha256:ad33358114df7c9416cdb8fa1eaa5852166c505118717021c6a8c7c7abbd03dd"}, -] - [[package]] name = "argcomplete" -version = "2.0.0" +version = "2.0.6" description = "Bash tab completion for argparse" category = "dev" optional = false python-versions = ">=3.6" files = [ - {file = "argcomplete-2.0.0-py2.py3-none-any.whl", hash = "sha256:cffa11ea77999bb0dd27bb25ff6dc142a6796142f68d45b1a26b11f58724561e"}, - {file = "argcomplete-2.0.0.tar.gz", hash = "sha256:6372ad78c89d662035101418ae253668445b391755cfe94ea52f1b9d22425b20"}, + {file = "argcomplete-2.0.6-py3-none-any.whl", hash = "sha256:6c2170b3e0ab54683cb28d319b65261bde1f11388be688b68118b7d281e34c94"}, + {file = "argcomplete-2.0.6.tar.gz", hash = "sha256:dc33528d96727882b576b24bc89ed038f3c6abbb6855ff9bb6be23384afff9d6"}, ] [package.extras] -test = ["coverage", "flake8", "pexpect", "wheel"] +lint = ["flake8", "mypy"] +test = ["coverage", "flake8", "mypy", "pexpect", "wheel"] [[package]] name = "asyncgui" @@ -175,14 +164,14 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.0" +version = "1.1.1" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, - {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, + {file = "exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"}, + {file = "exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"}, ] [package.extras] @@ -411,21 +400,6 @@ files = [ [package.dependencies] requests = "*" -[[package]] -name = "macholib" -version = "1.16.2" -description = "Mach-O header analysis and editing" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "macholib-1.16.2-py2.py3-none-any.whl", hash = "sha256:44c40f2cd7d6726af8fa6fe22549178d3a4dfecc35a9cd15ea916d9c83a688e0"}, - {file = "macholib-1.16.2.tar.gz", hash = "sha256:557bbfa1bb255c20e9abafe7ed6cd8046b48d9525db2f9b77d3122a63a2a8bf8"}, -] - -[package.dependencies] -altgraph = ">=0.17" - [[package]] name = "markupsafe" version = "2.1.2" @@ -561,18 +535,6 @@ files = [ {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"}, ] -[[package]] -name = "pefile" -version = "2023.2.7" -description = "Python PE parsing module" -category = "dev" -optional = false -python-versions = ">=3.6.0" -files = [ - {file = "pefile-2023.2.7-py3-none-any.whl", hash = "sha256:da185cd2af68c08a6cd4481f7325ed600a88f6a813bad9dea07ab3ef73d8d8d6"}, - {file = "pefile-2023.2.7.tar.gz", hash = "sha256:82e6114004b3d6911c77c3953e3838654b04511b8b66e8583db70c65998017dc"}, -] - [[package]] name = "photoshop-python-api" version = "0.21.1" @@ -738,52 +700,6 @@ files = [ [package.extras] plugins = ["importlib-metadata"] -[[package]] -name = "pyinstaller" -version = "5.8.0" -description = "PyInstaller bundles a Python application and all its dependencies into a single package." -category = "dev" -optional = false -python-versions = "<3.12,>=3.7" -files = [ - {file = "pyinstaller-5.8.0-py3-none-macosx_10_13_universal2.whl", hash = "sha256:502a2166165a8e8c3d99c19272e923d2548bac2132424d78910ef9dd8bb11705"}, - {file = "pyinstaller-5.8.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:bf1f7b7e88b467d7aefcdb2bc9cbd2e856ca88c5ab232c0efe0848f146d3bd5f"}, - {file = "pyinstaller-5.8.0-py3-none-manylinux2014_i686.whl", hash = "sha256:a62ee598b137202ef2e99d8dbaee6bc7379a6565c3ddf0331decb41b98eff1a2"}, - {file = "pyinstaller-5.8.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e68bcadf32edc1171ccb06117699a6a4f8e924b7c2c8812cfa00fd0186ade4ee"}, - {file = "pyinstaller-5.8.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:ded780f0d3642d7bfc21d97b98d4ec4b41d2fe70c3f5c5d243868612f536e011"}, - {file = "pyinstaller-5.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f9361eff44c7108c2312f39d85ed768c4ada7e0aa729046bbcef3ef3c1577d18"}, - {file = "pyinstaller-5.8.0-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:5c9632a20faecd6d79f0124afb31e6557414d19be271e572765b474f860f8d76"}, - {file = "pyinstaller-5.8.0-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:8d004699c5d71c704c14a5f81eec233faa4f87a3bf0ae68e222b87d63f5dd17e"}, - {file = "pyinstaller-5.8.0-py3-none-win32.whl", hash = "sha256:3b74f50a57b1413047042e47033480b7324b091f23dff790a4494af32b377d94"}, - {file = "pyinstaller-5.8.0-py3-none-win_amd64.whl", hash = "sha256:4f4d818588e2d8de4bf24ed018056c3de0c95898ad25719e12d68626161b4933"}, - {file = "pyinstaller-5.8.0-py3-none-win_arm64.whl", hash = "sha256:bacf236b5c2f8f674723a39daca399646dceb470881f842f52e393b9a67ff2f8"}, - {file = "pyinstaller-5.8.0.tar.gz", hash = "sha256:314fb883caf3cbf06adbea2b77671bb73c3481568e994af0467ea7e47eb64755"}, -] - -[package.dependencies] -altgraph = "*" -macholib = {version = ">=1.8", markers = "sys_platform == \"darwin\""} -pefile = {version = ">=2022.5.30", markers = "sys_platform == \"win32\""} -pyinstaller-hooks-contrib = ">=2021.4" -pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} -setuptools = ">=42.0.0" - -[package.extras] -encryption = ["tinyaes (>=1.0.0)"] -hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] - -[[package]] -name = "pyinstaller-hooks-contrib" -version = "2023.0" -description = "Community maintained hooks for PyInstaller" -category = "dev" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyinstaller-hooks-contrib-2023.0.tar.gz", hash = "sha256:bd578781cd6a33ef713584bf3726f7cd60a3e656ec08a6cc7971e39990808cc0"}, - {file = "pyinstaller_hooks_contrib-2023.0-py2.py3-none-any.whl", hash = "sha256:29d052eb73e0ab8f137f11df8e73d464c1c6d4c3044d9dc8df2af44639d8bfbf"}, -] - [[package]] name = "pypiwin32" version = "223" @@ -801,14 +717,14 @@ pywin32 = ">=223" [[package]] name = "pytest" -version = "7.2.1" +version = "7.2.2" description = "pytest: simple powerful testing with Python" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, - {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, + {file = "pytest-7.2.2-py3-none-any.whl", hash = "sha256:130328f552dcfac0b1cec75c12e3f005619dc5f874f0a06e8ff7263f0ee6225e"}, + {file = "pytest-7.2.2.tar.gz", hash = "sha256:c99ab0c73aceb050f68929bc93af19ab6db0558791c6a0715723abe9d0ade9d4"}, ] [package.dependencies] @@ -847,18 +763,6 @@ files = [ {file = "pywin32-305-cp39-cp39-win_amd64.whl", hash = "sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271"}, ] -[[package]] -name = "pywin32-ctypes" -version = "0.2.0" -description = "" -category = "dev" -optional = false -python-versions = "*" -files = [ - {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, - {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, -] - [[package]] name = "pyyaml" version = "6.0" @@ -951,14 +855,14 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" -version = "67.4.0" +version = "67.6.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.4.0-py3-none-any.whl", hash = "sha256:f106dee1b506dee5102cc3f3e9e68137bbad6d47b616be7991714b0c62204251"}, - {file = "setuptools-67.4.0.tar.gz", hash = "sha256:e5fd0a713141a4a105412233c63dc4e17ba0090c8e8334594ac790ec97792330"}, + {file = "setuptools-67.6.0-py3-none-any.whl", hash = "sha256:b78aaa36f6b90a074c1fa651168723acbf45d14cb1196b6f02c0fd07f17623b2"}, + {file = "setuptools-67.6.0.tar.gz", hash = "sha256:2ee892cd5f29f3373097f5a814697e397cf3ce313616df0af11231e2ad118077"}, ] [package.extras] @@ -1009,7 +913,7 @@ files = [ name = "typing-extensions" version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "dev" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1019,14 +923,14 @@ files = [ [[package]] name = "urllib3" -version = "1.26.14" +version = "1.26.15" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, - {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, + {file = "urllib3-1.26.15-py2.py3-none-any.whl", hash = "sha256:aa751d169e23c7479ce47a0cb0da579e3ede798f994f5816a74e4f4500dcea42"}, + {file = "urllib3-1.26.15.tar.gz", hash = "sha256:8a388717b9476f934a21484e8c8e61875ab60644d29b9b39e11e4b9dc1c6b305"}, ] [package.extras] @@ -1064,4 +968,4 @@ test = ["pytest (>=3.0.0)"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<3.12" -content-hash = "001dd98b2ddcba859c0cb922beefe676bf811bf9792a41f8d94061642de9ceaa" +content-hash = "71cddf08b9c3e815d35f3016a2eb3a8cf2abe3244a2e147e9edb94717d7b4a9b" diff --git a/proxyshop/__console__.py b/proxyshop/__console__.py deleted file mode 100644 index 9163df11..00000000 --- a/proxyshop/__console__.py +++ /dev/null @@ -1,8 +0,0 @@ -from proxyshop.constants import con - -if not con.headless: - from proxyshop.gui.console import Console -else: - from proxyshop.core import Console - -console = Console() diff --git a/proxyshop/gui/dict.py b/proxyshop/gui/dict.py deleted file mode 100644 index 83b44c25..00000000 --- a/proxyshop/gui/dict.py +++ /dev/null @@ -1,19 +0,0 @@ -""" -GUI Element Tracking Module -""" - -from kivy.uix.boxlayout import BoxLayout -from kivy.uix.button import Button -from kivy.uix.togglebutton import ToggleButton - -from proxyshop.core import card_types - - -class GUIResources: - def __init__(self): - self.template_row: dict[str, [str, BoxLayout]] = {k: {} for k in card_types} - self.template_btn: dict[str, [str, ToggleButton]] = {k: {} for k in card_types} - self.template_btn_cfg: dict[str, [str, Button]] = {k: {} for k in card_types} - - -GUI = GUIResources() diff --git a/proxyshop/scryfall.py b/proxyshop/scryfall.py deleted file mode 100644 index 5c9d9eff..00000000 --- a/proxyshop/scryfall.py +++ /dev/null @@ -1,148 +0,0 @@ -""" -FUNCTIONS THAT INTERACT WITH SCRYFALL -""" -import os -import time -import json -from shutil import copyfileobj - -import requests -from typing import Optional, Union -from urllib import parse - -from proxyshop.settings import cfg -from proxyshop.constants import con -from proxyshop.__console__ import console - - -def card_info(card_name: str, card_set: Optional[str] = None) -> Union[dict, Exception]: - """ - Search Scryfall for a card. - @param card_name: Name of card - @param card_set: Set code of card - @return: Card dict or error - """ - # Alternate language - if cfg.lang != "en": - card = get_card_search(card_name, cfg.lang, card_set) - if isinstance(card, dict): - return card - # Failed to find alternate language version - if not cfg.dev_mode: - console.update( - f"Reverting to English: [b]{card_name} [lang: {str(cfg.lang)}][/b]", card - ) - - # Query the card in English - card = get_card_search(card_name, set_code=card_set) - return card - - -def get_card_search( - name: str, - language: Optional[str] = None, - set_code: Optional[str] = None -) -> Union[dict, Exception]: - """ - Get card using cards/search scryfall API. - @param name: Name of the card, ex: Damnation - @param language: Lang code to look for, ex: en - @param set_code: Set code to look for, ex: MH2 - @return: Card dict or exception - """ - # Order, language, set code - order = "&order=released&dir=asc" if cfg.scry_ascending else "" - lang = f" lang:{language}" if language else "" - code = f"+set%3A{set_code}" if set_code else "" - - # Query Scryfall, 3 retries - url = f'https://api.scryfall.com/cards/search?unique=prints' \ - f'{order}&q=!"{parse.quote(name)}"{code} include:extras{lang}' - err = None - for i in range(3): - try: - card = requests.get(url, headers=con.http_header).json() - for card in card['data']: - if 'set_type' in card: - if card['set_type'] != "memorabilia" or 'Championship' in card['set_name']: - return add_meld_info(card) - raise Exception("Could not find a playable card with this name!") - except Exception as e: - err = e - time.sleep(float(i / 3)) - return err - - -def set_info(set_code: str) -> Optional[dict]: - """ - Search scryfall for a set - @param set_code: The set to look for, ex: MH2 - @return: MTG set dict or None - """ - # Has this set been logged? - filepath = os.path.join(con.cwd, f"proxyshop/datas/SET-{set_code.upper()}.json") - try: - if os.path.exists(filepath): - with open(filepath, "r", encoding="utf-8") as f: - loaded = json.load(f) - return loaded - except Exception as e: - console.log_exception(e) - err = None - url = f"https://mtgjson.com/api/v5/{set_code.upper()}.json" - - # Try up to 5 times - for i in range(5): - try: - source = requests.get(url, headers=con.http_header).text - j = json.loads(source)['data'] - j.pop('cards') - with open(filepath, "w", encoding="utf-8") as f: - json.dump(j, f, sort_keys=True, ensure_ascii=False) - return j - except Exception as e: - # Remote disconnected - err = e - time.sleep(float(i/5)) - console.log_exception(err) - return - - -def card_scan(img_url: str) -> Optional[str]: - """ - Downloads scryfall art from URL - @param img_url: Scryfall URI for image. - @return: Filename of the saved image. - """ - try: - r = requests.get(img_url, stream=True) - with open(con.scryfall_scan_path, 'wb') as f: - copyfileobj(r.raw, f) - if not cfg.dev_mode: - console.update(f"Downloaded Scryfall scan!") - return f.name - except Exception as e: - # HTTP request failed - if not cfg.dev_mode: - console.update(f"Couldn't retrieve scryfall image scan! Continuing without it.", e) - return - - -def add_meld_info(card_json: dict) -> dict: - """ - If the current card is a meld card, it's important to retrieve information about its faces here, since it'll be - difficult to make another query while building the card's layout obj. For each part in all_parts, query Scryfall - for the full card info from that part's uri. - """ - # Only for Meld cards - if card_json['layout'] == "meld": - # Add list of faces to the JSON data - card_json['faces'] = [] - for part in card_json['all_parts']: - # Ignore tokens and other objects - if part['component'] in ('meld_part', 'meld_result'): - # Grab the card face data, add component type, insert it - data = requests.get(part["uri"], headers=con.http_header).json() - data['component'] = part['component'] - card_json["faces"].append(data) - return card_json diff --git a/proxyshop/tests/utility.py b/proxyshop/tests/utility.py deleted file mode 100644 index 64889382..00000000 --- a/proxyshop/tests/utility.py +++ /dev/null @@ -1,137 +0,0 @@ -""" -TESTING UTILITY -For contributors and plugin development. -""" -# CORE MODULES -import os -from time import perf_counter -from typing import Optional - -import photoshop.api as ps -from photoshop.api._artlayer import ArtLayer - -from proxyshop.constants import con -con.headless = True -import proxyshop.helpers as psd - -app = ps.Application() -cID = app.charIDToTypeID -sID = app.stringIDToTypeID - - -""" -CURRENTLY IN DEVELOPMENT -""" - - -def place_watermark(ref: ArtLayer, name: str = "GU") -> ArtLayer: - """ - Places an SVG watermark. - @param ref: Reference used to frame the watermark. - @param name: Name to give the new watermark layer. - @return: New watermark player. - """ - wm = psd.import_svg(os.path.join(con.cwd, f"proxyshop/img/watermarks/{name}.svg")) - psd.align_vertical(wm, ref) - psd.align_horizontal(wm, ref) - app.activeDocument.activeLayer.opacity = 50 - psd.frame_layer(wm, ref, smallest=True) - wm.resize(80, 80, ps.AnchorPosition.MiddleCenter) - wm.move(psd.getLayerSet("Pinlines & Textbox"), ps.ElementPlacement.PlaceBefore) - wm.blendMode = ps.BlendMode.ColorBurn - return wm - - -""" -TEMPLATE TESTING UTILITIES -""" - - -def test_new_color(new: str, old: Optional[str] = None, ignore: Optional[list[str]] = None): - """ - Enables given color in all necessary groups. Optionally disable a color in those groups. - @param new: Color to enable. - @param old: Color to disable. - @param ignore: Groups to ignore. - @return: - """ - if ignore is None: - ignore = ["Pinlines & Textbox"] - groups = ["Name & Title Boxes", "Legendary Crown", "Pinlines & Textbox", "Background", "PT Box"] - for r in ignore: - groups.remove(r) - for g in groups: - # Enable new color - psd.getLayer(new, g).visible = True - # Disable old color - if old: - psd.getLayer(old, g).visible = False - - -def make_duals( - name="Pinlines & Textbox", - mask_top: Optional[str] = "MASK", - mask_bottom: Optional[str] = None -): - """ - Creates dual color layers for a given group. - @param name: Name of the group. - @param mask_top: Mask to place on top color. - @param mask_bottom: Mask to place on bottom color. - @return: - """ - duals = ["WU", "WB", "RW", "GW", "UB", "UR", "GU", "BR", "BG", "RG"] - group = psd.getLayerSet(name) - mask_top = psd.getLayer(mask_top, group) if mask_top else None - mask_bottom = psd.getLayer(mask_bottom, group) if mask_bottom else None - ref = psd.getLayer("W", group) - - # Loop through each dual - for dual in duals: - # Change layer visibility - top = psd.getLayer(dual[0], group).duplicate(ref, ps.ElementPlacement.PlaceBefore) - bottom = psd.getLayer(dual[1], group).duplicate(top, ps.ElementPlacement.PlaceAfter) - top.visible = True - bottom.visible = True - - # Enable masks - if mask_top: - psd.copy_layer_mask(mask_top, top) - if mask_bottom: - psd.copy_layer_mask(mask_bottom, bottom) - - # Merge the layers and rename - new_layer = psd.merge_layers([top, bottom]) - new_layer.name = dual - - -""" -EXECUTION TIME TESTING -""" - - -def t1(arg): - return 'result' - - -def t2(arg): - return 'result' - - -# Establish your variables outside the test -variable = "Some variable" - -# Test speed of first function -s = perf_counter() -result1 = t1(variable) -print(f"Test 1: {perf_counter()-s} seconds") - -# Test speed of second function -s = perf_counter() -result2 = t2(variable) -print(f"Test 2: {perf_counter()-s} seconds") - -# Optionally check that results match -print('\n') -print(result1) -print(result2) diff --git a/proxyshop/utils.py b/proxyshop/utils.py deleted file mode 100644 index e6f02086..00000000 --- a/proxyshop/utils.py +++ /dev/null @@ -1,13 +0,0 @@ -""" -Utility Helpers Module -""" -import unicodedata -import string - - -def normalize_str(st: str) -> str: - # Ignore accents and unusual characters, all lowercase - st = unicodedata.normalize("NFD", st).encode("ascii", "ignore").decode("utf8").lower() - - # Remove punctuation - return st.translate(str.maketrans("", "", string.punctuation)) diff --git a/pyproject.toml b/pyproject.toml index 0f88f2e0..f4485f93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,12 +14,13 @@ asynckivy = "^0.5.4" Pillow = "^9.4.0" pyclean = "^2.2.0" kivy = {extras = ["base", "media"], version = "^2.1.0"} +typing-extensions = "^4.5.0" [tool.poetry.group.dev.dependencies] pytest = "^7.2.0" mypy = "^0.991" commitizen = "^2.39.1" -pyinstaller = "^5.7.0" +setuptools = "^67.6.0" [build-system] requires = ["poetry-core"] @@ -31,5 +32,5 @@ changelog_start_rev = 'v1.2.0' tag_format = "v$major.$minor.$patch" update_changelog_on_bump = true version_files = [ - "proxyshop/__version__.py" + "src/__version__.py" ] \ No newline at end of file diff --git a/src/__console__.py b/src/__console__.py new file mode 100644 index 00000000..bedbd07f --- /dev/null +++ b/src/__console__.py @@ -0,0 +1,8 @@ +from src.constants import con + +if not con.headless: + from src.gui.console import Console +else: + from src.core import Console + +console = Console() diff --git a/proxyshop/__dev__.py b/src/__dev__.py similarity index 100% rename from proxyshop/__dev__.py rename to src/__dev__.py diff --git a/proxyshop/__version__.py b/src/__version__.py similarity index 100% rename from proxyshop/__version__.py rename to src/__version__.py diff --git a/proxyshop/configs/BasicLandClassicTemplate.json b/src/configs/BasicLandClassicTemplate.json similarity index 100% rename from proxyshop/configs/BasicLandClassicTemplate.json rename to src/configs/BasicLandClassicTemplate.json diff --git a/proxyshop/configs/InventionTemplate.json b/src/configs/InventionTemplate.json similarity index 100% rename from proxyshop/configs/InventionTemplate.json rename to src/configs/InventionTemplate.json diff --git a/proxyshop/configs/NormalClassicTemplate.json b/src/configs/NormalClassicTemplate.json similarity index 100% rename from proxyshop/configs/NormalClassicTemplate.json rename to src/configs/NormalClassicTemplate.json diff --git a/proxyshop/constants.py b/src/constants.py similarity index 81% rename from proxyshop/constants.py rename to src/constants.py index 4fb5ba1e..a3a7b539 100644 --- a/proxyshop/constants.py +++ b/src/constants.py @@ -7,8 +7,8 @@ import json from dataclasses import dataclass try: - from proxyshop.__env__ import google - from proxyshop.__env__ import cloudfront + from src.__env__ import google + from src.__env__ import cloudfront except ModuleNotFoundError: google = "" cloudfront = "" @@ -174,14 +174,24 @@ def __init__(self): def load_values(self): - # Current working directory + # Key file paths self.cwd = os.getcwd() + self.path_src = osp.join(self.cwd, 'src') + self.path_logs = osp.join(self.cwd, 'logs') + self.path_plugins = osp.join(self.cwd, 'plugins') + self.path_img = osp.join(self.path_src, 'img') + self.path_data = osp.join(self.path_src, 'data') + self.path_tests = osp.join(self.path_src, 'tests') + self.path_data_sets = osp.join(self.path_data, 'sets') + self.path_scryfall_scan = osp.join(self.path_logs, "card.jpg") + self.path_version_tracker = osp.join(self.path_data, 'version_tracker.json') + self.path_config_json = osp.join(self.path_data, 'app_settings.json') # Import version tracker - if not os.path.exists(os.path.join(self.cwd, "proxyshop/version_tracker.json")): - with open(os.path.join(self.cwd, "proxyshop/version_tracker.json"), "w", encoding="utf-8") as tr: + if not osp.exists(self.path_version_tracker): + with open(self.path_version_tracker, "w", encoding="utf-8") as tr: json.dump({}, tr, indent=4) - with open(os.path.join(self.cwd, "proxyshop/version_tracker.json"), "r", encoding="utf-8") as tr: + with open(self.path_version_tracker, "r", encoding="utf-8") as tr: try: self.versions = json.load(tr) except json.decoder.JSONDecodeError: @@ -191,10 +201,6 @@ def load_values(self): self.google_api = google self.cloudfront_url = cloudfront - # Important paths - self.json_custom_path = os.path.join(self.cwd, "tmp\\custom.json") - self.scryfall_scan_path = os.path.join(self.cwd, "tmp\\card.jpg") - # Card classes - finer grained than Scryfall layouts self.normal_class = "normal" self.transform_front_class = "transform_front" @@ -288,23 +294,25 @@ def load_values(self): # Basic land dictionary self.basic_land_names = [ - "Plains", - "Island", - "Swamp", - "Mountain", - "Forest", - "Wastes", - "Snow-Covered Plains", - "Snow-Covered Island", - "Snow-Covered Swamp", - "Snow-Covered Mountain", - "Snow-Covered Forest" + "plains", + "island", + "swamp", + "mountain", + "forest", + "wastes", + "snowcoveredplains", + "snowcoveredisland", + "snowcoveredswamp", + "snowcoveredmountain", + "snowcoveredforest" ] # Color reference dictionary self.colors = { 'black': [0, 0, 0], - 'white': [255, 255, 255] + 'white': [255, 255, 255], + 'silver': [167, 177, 186], + 'gold': [166, 135, 75] } # Rarity gradient dictionary @@ -363,10 +371,30 @@ def load_values(self): ] } + # Watermark colors + self.watermark_colors = { + 'W': [183, 157, 88], + 'U': [140, 172, 197], + 'B': [94, 94, 94], + 'R': [198, 109, 57], + 'G': [89, 140, 82], + 'Gold': [202, 179, 77], + 'Land': [94, 84, 72], + 'Artifact': [100, 125, 134], + 'Colorless': [100, 125, 134] + } + + # Import watermark library + with open(osp.join(self.path_data, 'watermarks.json'), "r", encoding="utf-8-sig") as js: + self.watermarks = json.load(js) + # Import set symbol library - with open(osp.join(self.cwd, "proxyshop/symbols.json"), "r", encoding="utf-8-sig") as js: + with open(osp.join(self.path_data, "symbols.json"), "r", encoding="utf-8-sig") as js: self.set_symbols = json.load(js) - with open(osp.join(self.cwd, "proxyshop/custom_symbols.json"), "r", encoding="utf-8-sig") as js: + if not osp.exists(osp.join(self.path_data, "custom_symbols.json")): + with open(osp.join(self.path_data, "custom_symbols.json"), "w", encoding="utf-8") as cs: + json.dump({}, cs, indent=4) + with open(osp.join(self.path_data, "custom_symbols.json"), "r", encoding="utf-8-sig") as js: self.set_symbols.update(json.load(js)) # Font names @@ -421,6 +449,15 @@ def load_values(self): # Run headless self.headless = False + # Version compatibility features + self.version_webp = '23.2.0' + self.version_targeted_replace = '22.0.0' + + # Console message colors + self.console_message_error = "#a84747" + self.console_message_warning = "#d4c53d" + self.console_message_success = "#59d461" + def reload(self): """ Reloads default values @@ -431,7 +468,7 @@ def update_version_tracker(self): """ Updates the version tracker json with current dict. """ - with open(os.path.join(self.cwd, "proxyshop/version_tracker.json"), "w", encoding="utf-8") as vt: + with open(self.path_version_tracker, "w", encoding="utf-8") as vt: json.dump(self.versions, vt, indent=4) diff --git a/proxyshop/core.py b/src/core.py similarity index 92% rename from proxyshop/core.py rename to src/core.py index 9ef3f1dc..088a899b 100644 --- a/proxyshop/core.py +++ b/src/core.py @@ -12,8 +12,8 @@ from typing import Optional, Callable, TypedDict, Union from typing_extensions import NotRequired from importlib import util, import_module -from proxyshop import update -from proxyshop.constants import con +from src import update +from src.constants import con # All Template types card_types = { @@ -49,7 +49,8 @@ class TemplateDetails(TypedDict): class_name: str plugin_path: Optional[str] - preview_path: Optional[str] + preview_path: str + templates_path: str config_path: str name: str type: str @@ -87,7 +88,7 @@ def get_template_class(template: TemplateDetails) -> Callable: """ # Built-in template? if not template['plugin_path']: - return getattr(import_module("proxyshop.templates"), template['class_name']) + return getattr(import_module("src.templates"), template['class_name']) # Plugin template spec = util.spec_from_file_location("templates", template['plugin_path']) @@ -102,10 +103,10 @@ def get_templates() -> dict[str, list[TemplateDetails]]: @return: Dictionary of lists containing template details. """ # Plugin folders - folders = glob(os.path.join(con.cwd, "proxyshop\\plugins\\*\\")) + folders = glob(os.path.join(con.path_plugins, "*\\")) # Process the default templates.json - with open(os.path.join(con.cwd, "proxyshop\\templates.json"), encoding="utf-8") as f: + with open(os.path.join(con.path_data, "templates.json"), encoding="utf-8") as f: app_json = json.load(f) main_json = {} for card_type, templates in app_json.items(): @@ -114,8 +115,9 @@ def get_templates() -> dict[str, list[TemplateDetails]]: for name, class_name in templates.items(): main_json[card_type].append({ "plugin_path": None, - "config_path": osp.join(con.cwd, f"proxyshop/configs/{class_name}.json"), - "preview_path": osp.join(con.cwd, f"proxyshop/img/{class_name}.jpg"), + "config_path": osp.join(con.path_src, f"configs/{class_name}.json"), + "preview_path": osp.join(con.path_img, f"{class_name}.jpg"), + "templates_path": osp.join(con.cwd, 'templates'), "class_name": class_name, "name": name, "type": named_type @@ -143,6 +145,7 @@ def get_templates() -> dict[str, list[TemplateDetails]]: "plugin_path": py_file, "config_path": py_file.replace('templates.py', f'configs/{class_name}.json'), "preview_path": py_file.replace('templates.py', f'img/{class_name}.jpg'), + 'templates_path': py_file.replace('.py', ''), "class_name": class_name, "name": name, "type": named_type @@ -257,7 +260,7 @@ def check_for_updates() -> dict: updates: dict[list[dict]] = {} # Base app manifest - with open("proxyshop/manifest.json", encoding="utf-8") as f: + with open(osp.join(con.path_data, "manifest.json"), encoding="utf-8") as f: # Get config info data = json.load(f) s3_enabled = data['__CONFIG__']['S3'] @@ -276,7 +279,7 @@ def check_for_updates() -> dict: temp['type'] = cat temp['name'] = name temp['plugin'] = None - temp['manifest'] = os.path.join(con.cwd, 'proxyshop/manifest.json') + temp['manifest'] = os.path.join(con.path_data, 'manifest.json') temp['s3'] = s3_enabled # Does this template need an update? @@ -286,7 +289,7 @@ def check_for_updates() -> dict: # Get plugin manifests plugins = [] - folders = glob(os.path.join(con.cwd, "proxyshop\\plugins\\*\\")) + folders = glob(os.path.join(con.path_plugins, "*\\")) for folder in folders: if 'manifest.json' in os.listdir(folder): plugins.append({ @@ -346,7 +349,7 @@ def version_check(temp: dict, plugin: Optional[str] = None) -> Optional[dict]: print(f"{temp['name']} ({temp['file']}) couldn't be located!") return plugin_path = f"{plugin}/" if plugin else "" - full_path = osp.join(con.cwd, f"templates/{plugin_path}{temp['file']}") + full_path = osp.join(con.path_plugins, f"{plugin_path}templates/{temp['file']}") if 'description' not in data or not data['description']: data['description'] = "v1.0.0" current = get_current_version(temp['id'], full_path) @@ -435,16 +438,6 @@ def gdrive_metadata(file_id: str) -> dict: return requests.get(source, headers=con.http_header).json() -""" -SYSTEM FUNCTIONS -""" - - -def import_json_config(path: str) -> dict: - with open(os.path.join(f"{con.cwd}/proxyshop/plugins", path)) as f: - return json.load(f) - - """ HEADLESS CONSOLE """ @@ -456,7 +449,7 @@ class Console: """ @staticmethod - def message(msg): + def update(msg): print(msg) @staticmethod diff --git a/proxyshop/app_settings.json b/src/data/app_settings.json similarity index 61% rename from proxyshop/app_settings.json rename to src/data/app_settings.json index 164e6798..85fce28d 100644 --- a/proxyshop/app_settings.json +++ b/src/data/app_settings.json @@ -9,21 +9,24 @@ "desc": "File extension to use for rendered images.\n[b](Default: jpg)[/b]", "section": "FILES", "key": "Output.Filetype", - "options": ["jpg", "png", "psd"] + "options": ["jpg", "png", "psd"], + "default": "jpg" }, { "type": "bool", "title": "[b]Save Artist Name[/b]", "desc": "Include artist in rendered file name, e.g. Damnation (Seb McKinnon).jpg\n[b](Default: True)[/b]", "section": "FILES", - "key": "Save.Artist.Name" + "key": "Save.Artist.Name", + "default": 1 }, { "type": "bool", "title": "[b]Overwrite Duplicates[/b]", "desc": "Overwrite rendered files with identical file names.\n[b](Default: True)[/b]", "section": "FILES", - "key": "Overwrite.Duplicate" + "key": "Overwrite.Duplicate", + "default": 1 }, { "type": "title", @@ -35,89 +38,97 @@ "desc": "A scryfall supported language code to look for alternate language text.\nPhyrexian is not supported at this time.\n[b](Default: en)[/b]", "section": "TEXT", "key": "Language", - "options": ["en", "es", "fr", "de", "it", "pt", "jp", "kr", "ru", "cs", "ct"] + "options": ["en", "es", "fr", "de", "it", "pt", "jp", "kr", "ru", "cs", "ct"], + "default": "en" }, { "type": "bool", "title": "[b]Enable Flavor Divider[/b]", "desc": "Adds flavor divider to rendered card when appropriate.\n[b](Default: True)[/b]", "section": "TEXT", - "key": "Flavor.Divider" + "key": "Flavor.Divider", + "default": 1 }, { "type": "bool", "title": "[b]Remove Flavor Text[/b]", "desc": "Renders cards without flavor text.\n[b](Default: False)[/b]", "section": "TEXT", - "key": "No.Flavor.Text" + "key": "No.Flavor.Text", + "default": 0 }, { "type": "bool", "title": "[b]Remove Reminder Text[/b]", "desc": "Renders cards without reminder text.\n[b](Default: False)[/b]", "section": "TEXT", - "key": "No.Reminder.Text" + "key": "No.Reminder.Text", + "default": 0 }, { "type": "bool", "title": "[b]Realistic Collector Info[/b]", "desc": "Disabling this will limit collector info to set code and artist only.\n[b](Default: True)[/b]", "section": "TEXT", - "key": "True.Collector.Info" + "key": "True.Collector.Info", + "default": 1 }, { "type": "bool", "title": "[b]Force English Formatting[/b]", "desc": "Enabling this will force Photoshop text layers to use English formatting.\n[b](Default: False)[/b]", "section": "TEXT", - "key": "Force.English.Formatting" + "key": "Force.English.Formatting", + "default": 0 }, { "type": "title", "title": "Expansion Symbol" }, { - "type": "string", - "title": "[b]Default Expansion Symbol[/b]", - "desc": "Symbol character used in lieu of an automatically generated one.\nCopy the symbol from here: http://keyrune.andrewgioia.com/cheatsheet.html\n[b]This setting must be changed manually.[/b]", + "type": "options", + "title": "[b]Symbol Render Mode[/b]", + "desc": "Default: Renders using Keyrune + layer effects.\nClassic: Renders using Keyrune + gradient layers.\nSVG: Renders using SVGs sourced from CCGHQ.\nNone: Completely disables expansion symbol.\n[b](Default: 'default')[/b]", "section": "SYMBOLS", - "key": "Default.Symbol", - "disabled": true + "key": "Symbol.Mode", + "options": ["default", "classic", "svg", "none"], + "default": "default" }, { - "type": "bool", - "title": "[b]Automatically Generate Expansion Symbol[/b]", - "desc": "Generates an accurate looking expansion symbol.\n[b](Default: True)[/b]", + "type": "string", + "title": "[b]Default Expansion Symbol[/b]", + "desc": "Symbol used when an automatic symbol couldn't be found.\nEnter an appropriate Magic the Gathering set code.\nList of Keyrune symbols and setcode: https://keyrune.andrewgioia.com/cheatsheet.html\n[b](Default: MTG)[/b]", "section": "SYMBOLS", - "key": "Auto.Set.Symbol" + "key": "Default.Symbol", + "default": "MTG" }, { "type": "bool", - "title": "[b]Automatically Position Expansion Symbol[/b]", - "desc": "Sizes and positions the expansion symbol to fit the type bar.\n[b](Default: True)[/b]", + "title": "[b]Force Default Expansion Symbol[/b]", + "desc": "Forces Proxyshop to always used the Default Expansion Symbol chosen above.\n[b](Default: False)[/b]", "section": "SYMBOLS", - "key": "Auto.Symbol.Size" + "key": "Force.Default.Symbol", + "default": 0 }, { "type": "numeric", - "title": "[b]Expansion Symbol Outline Size[/b]", + "title": "[b]Default Expansion Symbol Outline[/b]", "desc": "Changes the thickness of the expansion symbol outline when not fully automated.\n[b](Default: 6)[/b]", "section": "SYMBOLS", - "key": "Symbol.Stroke.Size" + "key": "Symbol.Stroke.Size", + "default": 6 }, { - "type": "bool", - "title": "[b]Fill Expansion Symbol Background[/b]", - "desc": "Fills empty space in expansion symbol. This feature is mostly deprecated now.\n[b](Default: False)[/b]", - "section": "SYMBOLS", - "key": "Fill.Symbol.Background" + "type": "title", + "title": "Watermarks" }, { "type": "bool", - "title": "[b]Classic Symbol Rendering[/b]", - "desc": "Renders expansion symbols using old methodology (pre v1.5.0).\n[b](Default: False)[/b]", - "section": "SYMBOLS", - "key": "Classic.Symbol.Rendering" + "title": "[b]Enable Watermark[/b]", + "desc": "Automatically generate watermark when detected and supported.\n[b](Default: False)[/b]", + "section": "WATERMARK", + "key": "Enable.Watermark", + "default": 0 }, { "type": "title", @@ -128,28 +139,32 @@ "title": "[b]Manual Editing Mode[/b]", "desc": "Pause the render process before saving to allow for manual edits.\n[b](Default: False)[/b]", "section": "APP", - "key": "Manual.Edit" + "key": "Manual.Edit", + "default": 0 }, { "type": "bool", "title": "[b]Skip Failed Cards[/b]", "desc": "Automatically skip failed cards without asking for confirmation.\n[b](Default: False)[/b]", "section": "APP", - "key": "Skip.Failed" + "key": "Skip.Failed", + "default": 0 }, { "type": "bool", "title": "[b]Scryfall Search Ascending[/b]", "desc": "When pulling card from Scryfall, search from oldest to most recent.\n[b](Default: False)[/b]", "section": "APP", - "key": "Scryfall.Ascending" + "key": "Scryfall.Ascending", + "default": 0 }, { "type": "bool", "title": "[b]Targeted Text Replacement[/b]", "desc": "Disabling this can fix a crash that occurs on some versions of Photoshop.\nTry disabling this if experiencing a crash during the collector info step.\n[b](Default: True)[/b]", "section": "APP", - "key": "Targeted.Replace" + "key": "Targeted.Replace", + "default": 1 }, { "type": "bool", @@ -157,24 +172,44 @@ "desc": "Enabling this will change the GUI into a simple testing interface.\n[b]This setting must be changed manually.[/b]", "section": "APP", "key": "Dev.Mode", - "disabled": true + "disabled": true, + "default": 0 }, { "type": "title", "title": "Special Template Settings" }, + { + "type": "options", + "title": "[b]Border Color[/b]", + "desc": "Choose the color of the card border used across templates.\nWill work on most templates, but considered experimental.\n[b](Default: 'black')[/b]", + "section": "TEMPLATES", + "key": "Border.Color", + "options": ["black", "white", "silver", "gold"], + "default": "black" + }, { "type": "bool", "title": "[b]Render Snow Cards with Snow Template[/b]", "desc": "When enabled, snow cards will be rendered using Snow template type.\n[b](Default: False)[/b]", "section": "TEMPLATES", - "key": "Render.Snow" + "key": "Render.Snow", + "default": 0 }, { "type": "bool", "title": "[b]Render Miracle Cards with Miracle Template[/b]", "desc": "When enabled, miracle cards will be rendered using Miracle template type.\n[b](Default: False)[/b]", "section": "TEMPLATES", - "key": "Render.Miracle" + "key": "Render.Miracle", + "default": 0 + }, + { + "type": "bool", + "title": "[b]Render Basic Land Cards with Basic Land Template[/b]", + "desc": "When disabled, Basic Land cards will be rendered using Normal template type.\n[b](Default: True)[/b]", + "section": "TEMPLATES", + "key": "Render.Basic", + "default": 1 } ] \ No newline at end of file diff --git a/proxyshop/custom_symbols.json b/src/data/custom_symbols.json similarity index 100% rename from proxyshop/custom_symbols.json rename to src/data/custom_symbols.json diff --git a/proxyshop/manifest.json b/src/data/manifest.json similarity index 97% rename from proxyshop/manifest.json rename to src/data/manifest.json index 9542e716..b0ec1e1e 100644 --- a/proxyshop/manifest.json +++ b/src/data/manifest.json @@ -42,6 +42,10 @@ "Snow": { "file": "snow.psd", "id": "1KTvgxYg0wS8YuLDoVjt37-0HaEMhZKvH" + }, + "Universes Beyond": { + "file": "universes-beyond.psd", + "id": "1wdn4NELA5N-25zq4DcumiNfMdY9H2ojd" } }, "Transform": { diff --git a/proxyshop/symbols.json b/src/data/symbols.json similarity index 98% rename from proxyshop/symbols.json rename to src/data/symbols.json index a3af6973..c083afbc 100644 --- a/proxyshop/symbols.json +++ b/src/data/symbols.json @@ -166,7 +166,7 @@ "char": "", "gradient": { "rotation": 0, - "scale": "80", + "scale": 80, "colors": { "u": [ { @@ -387,7 +387,7 @@ "BFZ": "", "EXP": "", "C15": "", - "PZ1": "", + "PZ1": "MTG", "OGW": "", "DDQ": "", "W16": [ @@ -784,9 +784,13 @@ { "char": "", "fill": "white", - "stroke": ["black", 6], + "stroke": ["black", 4], "common-fill": "white", - "common-stroke": ["white", 6] + "common-stroke": ["white", 4], + "gradient": { + "rotation": 0, + "scale": 100 + } }, { "char": "", @@ -1079,13 +1083,13 @@ "fill": "white", "stroke": { "color": "black", - "weight": "4", + "weight": 4, "style": "in" }, "common-fill": "white", "common-stroke": { "color": "black", - "weight": "4", + "weight": 4, "style": "in" } }, @@ -1094,12 +1098,12 @@ "rarity": false, "stroke": { "color": "black", - "weight": "4", + "weight": 4, "style": "center" }, "common-stroke": { "color": "black", - "weight": "4", + "weight": 4, "style": "center" } } diff --git a/proxyshop/templates.json b/src/data/templates.json similarity index 87% rename from proxyshop/templates.json rename to src/data/templates.json index 3e831adb..e9d2eca8 100644 --- a/proxyshop/templates.json +++ b/src/data/templates.json @@ -9,13 +9,16 @@ "Expedition": "ExpeditionTemplate", "Womens Day": "WomensDayTemplate", "Miracle": "MiracleTemplate", - "Snow": "SnowTemplate" + "Snow": "SnowTemplate", + "Universes Beyond": "UniversesBeyondTemplate" }, "transform_front": { - "Normal": "TransformFrontTemplate" + "Normal": "TransformFrontTemplate", + "Universes Beyond": "UniversesBeyondTemplate" }, "transform_back": { - "Normal": "TransformBackTemplate" + "Normal": "TransformBackTemplate", + "Universes Beyond": "UniversesBeyondTemplate" }, "mdfc_front": { "Normal": "MDFCFrontTemplate" diff --git a/proxyshop/tests.json b/src/data/tests.json similarity index 87% rename from proxyshop/tests.json rename to src/data/tests.json index 10272815..f0ade258 100644 --- a/proxyshop/tests.json +++ b/src/data/tests.json @@ -36,8 +36,14 @@ ["Guul Draz Assassin", "Creature - 2"] ], "saga": [ - ["Time of Ice", "Mono"], - ["Battle of Frost and Fire", "Dual - 3"] + ["Time of Ice", "Mono Color"], + ["Battle of Frost and Fire", "Dual Color"], + ["The Elder Dragon War", "Read Ahead"], + ["The Restoration of Eiganjo", "Transform"] + ], + "class": [ + ["Wizard Class", "Mono Color"], + ["Rogue Class", "Dual Color"] ], "miracle": [ ["Terminus", "Noncreature Mono"], diff --git a/src/data/watermarks.json b/src/data/watermarks.json new file mode 100644 index 00000000..88d07af4 --- /dev/null +++ b/src/data/watermarks.json @@ -0,0 +1,8 @@ +{ + "obscura": { "scale": 92 }, + "brokers": { "scale": 92 }, + "maestros": { "scale": 92 }, + "riveteers": { "scale": 92 }, + "cabaretti": { "scale": 92 }, + "phyrexian": { "scale": 92 } +} \ No newline at end of file diff --git a/proxyshop/format_text.py b/src/format_text.py similarity index 99% rename from proxyshop/format_text.py rename to src/format_text.py index b8736da5..a6a3a6ba 100644 --- a/proxyshop/format_text.py +++ b/src/format_text.py @@ -8,9 +8,9 @@ import photoshop.api as ps from photoshop.api._artlayer import ArtLayer -import proxyshop.helpers as psd -from proxyshop.constants import con -from proxyshop.__console__ import console +import src.helpers as psd +from src.constants import con +from src.__console__ import console # QOL Definitions app = ps.Application() diff --git a/proxyshop/frame_logic.py b/src/frame_logic.py similarity index 78% rename from proxyshop/frame_logic.py rename to src/frame_logic.py index 77adc56d..705fbed1 100644 --- a/proxyshop/frame_logic.py +++ b/src/frame_logic.py @@ -3,8 +3,8 @@ """ from typing import Union, Optional, TypedDict -from proxyshop.constants import con -from proxyshop.settings import cfg +from src.constants import con +from src.settings import cfg class FrameDetails(TypedDict): @@ -98,10 +98,10 @@ def select_frame_layers(card: dict) -> FrameDetails: # Iterate over rules text lines basic_identity = '' for line in oracle_text.split('\n'): - # Identify if the card is a fetchland + # Identify if the card is a fetch land if 'search your library' in line.lower(): if 'cycling' not in line.lower(): - # Fetchland of some kind, find basic land types + # Fetch land of some kind, find basic land types for key, basic in basic_colors.items(): if key in line: # The land has this basic type in the line of rules text where it fetches @@ -126,24 +126,27 @@ def select_frame_layers(card: dict) -> FrameDetails: 'is_colorless': False, } elif len(basic_identity) == 3: - # Three basic mentioned - panorama land + # Three basic mentioned, Panorama case return { 'background': con.layers.LAND, 'pinlines': con.layers.LAND, 'twins': con.layers.LAND, 'is_colorless': False, } - elif line.find(con.layers.LAND.lower()) >= 0: + elif con.layers.LAND.lower() in line: # Assume we get here when the land fetches for any basic - if 'tapped' not in line or 'untap' in line: - # Gold fetchland + if ('tapped' not in line or 'untap' in line) and ( + # Ash Barrens case + 'into your hand' not in line + ): + # Gold fetch land return { 'background': con.layers.LAND, 'pinlines': con.layers.GOLD, 'twins': con.layers.GOLD, 'is_colorless': False, } - # Colorless fetchland + # Colorless fetch land return { 'background': con.layers.LAND, 'pinlines': con.layers.LAND, @@ -152,29 +155,27 @@ def select_frame_layers(card: dict) -> FrameDetails: } # Check if the line adds one mana of any color - if 'add' in line.lower() and 'mana' in line: - if ( - 'color ' in line - or 'colors ' in line - or 'color.' in line - or 'colors.' in line - or 'any type' in line - ): - # Identified an ability of a potentially gold land - # If the ability doesn't include the phrases "enters the battlefield", "Remove a charge - # counter", and "luck counter", and doesn't include the word "Sacrifice", then it's - # considered a gold land - phrases = ['enters the battlefield', 'Remove a charge counter', 'Sacrifice', 'luck counter'] - if not any(x in line for x in phrases): - # This is a gold land - use gold twins and pinlines - return { - 'background': con.layers.LAND, - 'pinlines': con.layers.GOLD, - 'twins': con.layers.GOLD, - 'is_colorless': False, - } + if ('add' in line.lower() and 'mana' in line) and ( + 'color ' in line + or 'colors ' in line + or 'color.' in line + or 'colors.' in line + or 'any type' in line + ): + # Potential Gold Land + # If the ability doesn't include "enters the battlefield", "Remove a charge + # counter", "luck counter", or "Sacrifice", it's probably a Gold land. + phrases = ['enters the battlefield', 'Remove a charge counter', 'Sacrifice', 'luck counter'] + if not any(x in line for x in phrases): + # This is a gold land - use gold twins and pinlines + return { + 'background': con.layers.LAND, + 'pinlines': con.layers.GOLD, + 'twins': con.layers.GOLD, + 'is_colorless': False, + } - # Check if the line makes all lands X type, ex: Urborg + # Check if the line makes all lands X type, ex: Urborg, Tomb of Yawgmoth if 'Each land is a ' in line: for k, v in basic_colors.items(): if k in line: @@ -334,36 +335,52 @@ def select_frame_layers(card: dict) -> FrameDetails: """ -def format_expansion_symbol_info(symbol: Union[str, list]) -> Optional[tuple[str, list]]: +def format_expansion_symbol_info(symbol: Union[str, list], rarity: str) -> Optional[tuple[str, list]]: """ Takes in set code and returns information needed to build the expansion symbol. @param symbol: Symbol chosen by layout object. + @param rarity: Rarity of the symbol. @return: List of dicts containing information about this symbol. """ + rare = bool(rarity != con.rarity_common) if isinstance(symbol, str): return symbol, [{ 'char': symbol, - 'rarity': True, - 'fill': 'black' if cfg.fill_symbol else False, - 'color': False, - 'stroke': ['black', cfg.symbol_stroke], - 'common-fill': 'white' if cfg.fill_symbol else False, - 'common-color': False, - 'common-stroke': ['white', cfg.symbol_stroke], - 'scale-factor': 1 + 'rarity': rare, + 'stroke': ['black', cfg.symbol_stroke] if rare else ['white', cfg.symbol_stroke], + 'scale': 1 + }] + if isinstance(symbol, dict): + ref = symbol.get('char', 'X') + return ref, [{ + 'char': ref, + 'rarity': bool(symbol.get('rarity', True) and rare), + 'fill': symbol.get('fill', False) if rare else symbol.get('common-fill', False), + 'color': symbol.get('color', False) if rare else symbol.get('common-color', False), + 'stroke': symbol.get( + 'stroke', ['black', cfg.symbol_stroke] + ) if rare else symbol.get( + 'common-stroke', ['white', cfg.symbol_stroke] + ), + 'scale': symbol.get('scale', 1) }] if isinstance(symbol, list): - ref = symbol[0]['char'] + ref = symbol[0].get('char', 'X') + syms = [] for sym in symbol: - sym['rarity'] = sym.get('rarity', True) - sym['fill'] = sym.get('fill', False) - sym['color'] = sym.get('color', False) - sym['stroke'] = sym.get('stroke', ['black', cfg.symbol_stroke]) - sym['common-fill'] = sym.get('common-fill', False) - sym['common-color'] = sym.get('common-color', False) - sym['common-stroke'] = sym.get('common-stroke', ['white', cfg.symbol_stroke]) - sym['scale-factor'] = sym.get('scale-factor', 1) + syms.append({ + 'char': sym.get('char', 'X'), + 'rarity': bool(sym.get('rarity', True) and rare), + 'fill': sym.get('fill', False) if rare else sym.get('common-fill', False), + 'color': sym.get('color', False) if rare else sym.get('common-color', False), + 'stroke': sym.get( + 'stroke', ['black', cfg.symbol_stroke] + ) if rare else sym.get( + 'common-stroke', ['white', cfg.symbol_stroke] + ), + 'scale': sym.get('scale', 1) + }) if sym.get('reference', False): - ref = sym['char'] - return ref, symbol + sym.get('char', 'X') + return ref, syms return diff --git a/proxyshop/gui/console.py b/src/gui/console.py similarity index 90% rename from proxyshop/gui/console.py rename to src/gui/console.py index ed0cb107..22cd9c00 100644 --- a/proxyshop/gui/console.py +++ b/src/gui/console.py @@ -15,9 +15,9 @@ from kivy.uix.boxlayout import BoxLayout from kivy.uix.label import Label -from proxyshop.constants import con -from proxyshop.gui.updater import UpdatePopup -from proxyshop.settings import cfg, Singleton +from src.constants import con +from src.gui.updater import UpdatePopup +from src.settings import cfg, Singleton class Console(BoxLayout): @@ -25,7 +25,7 @@ class Console(BoxLayout): Main console class """ __metaclass__ = Singleton - Builder.load_file(os.path.join(con.cwd, "proxyshop/kv/console.kv")) + Builder.load_file(os.path.join(con.cwd, "src/kv/console.kv")) lines = 1 def __init__(self, **kwargs): @@ -54,16 +54,16 @@ def update(self, msg="", e=None, end="\n"): def log_error(self, msg, card, template=None, e=None): """ - Log failed card in tmp + Log failed card in a log file. Then prompt error request """ cur_time = dt.now().strftime("%m/%d/%Y %H:%M") log_text = f"{card} ({template}) [{cur_time}]\n" if template else f"{card} [{cur_time}]\n" - with open(os.path.join(con.cwd, "tmp/failed.txt"), "a", encoding="utf-8") as log: + with open(os.path.join(con.path_logs, "failed.txt"), "a", encoding="utf-8") as log: log.write(log_text) return self.error(msg, e) - def error(self, msg, e=None, color=True, continue_msg="Continue to next card?"): + def error(self, msg, e=None, continue_msg="Continue to next card?"): """ Display error, wait for user to cancel or continue. """ @@ -78,11 +78,9 @@ def error(self, msg, e=None, color=True, continue_msg="Continue to next card?"): if cfg.dev_mode: return False - # Color message? - if color: - msg = f"[color=#a84747]{msg}[/color]\n" + # Automatically skip to next card? if cfg.skip_failed: - continue_msg = "Skipping this card!!" + continue_msg = "Skipping this card!" # Notify user self.update(f"{msg}{continue_msg}") @@ -139,7 +137,7 @@ def end_await(self): self.ids.cancel_btn.disabled = True @staticmethod - def log_exception(error: Union[Exception, str], log_file: str = "tmp/error.txt"): + def log_exception(error: Union[Exception, str], log_file: str = "error.txt"): """ Log python exception. """ @@ -153,7 +151,7 @@ def log_exception(error: Union[Exception, str], log_file: str = "tmp/error.txt") # Add to log file cur_time = dt.now().strftime("%m/%d/%Y %H:%M") - with open(os.path.join(con.cwd, log_file), "a", encoding="utf-8") as log: + with open(os.path.join(con.path_logs, log_file), "a", encoding="utf-8") as log: log.write("============================================================================\n") log.write(f"> {cur_time}\n") log.write("============================================================================\n") diff --git a/proxyshop/gui/creator.py b/src/gui/creator.py similarity index 97% rename from proxyshop/gui/creator.py rename to src/gui/creator.py index f6254c67..77388783 100644 --- a/proxyshop/gui/creator.py +++ b/src/gui/creator.py @@ -11,9 +11,9 @@ from kivy.uix.tabbedpanel import TabbedPanelItem, TabbedPanel from kivy.uix.textinput import TextInput -from proxyshop.constants import con -from proxyshop.core import TemplateDetails, get_templates, get_my_templates -from proxyshop.settings import cfg +from src.constants import con +from src.core import TemplateDetails, get_templates, get_my_templates +from src.settings import cfg """ DISPLAY ELEMENTS @@ -21,7 +21,7 @@ class CreatorPanels(TabbedPanel): - Builder.load_file(os.path.join(con.cwd, "proxyshop/kv/creator.kv")) + Builder.load_file(os.path.join(con.cwd, "src/kv/creator.kv")) def __init__(self, **kwargs): super().__init__(**kwargs) diff --git a/proxyshop/gui/dev.py b/src/gui/dev.py similarity index 90% rename from proxyshop/gui/dev.py rename to src/gui/dev.py index 5e292c18..52e4c4a2 100644 --- a/proxyshop/gui/dev.py +++ b/src/gui/dev.py @@ -10,16 +10,16 @@ from kivy.uix.popup import Popup from kivy.uix.label import Label -from proxyshop.constants import con -from proxyshop.core import get_templates, TemplateDetails -from proxyshop.gui.utils import HoverButton +from src.constants import con +from src.core import get_templates, TemplateDetails +from src.gui.utils import HoverButton class TestApp(BoxLayout): """ Template Tester """ - Builder.load_file(os.path.join(con.cwd, "proxyshop/kv/dev.kv")) + Builder.load_file(os.path.join(con.cwd, "src/kv/dev.kv")) def __init__(self, **kwargs): super().__init__(**kwargs) diff --git a/proxyshop/gui/settings.py b/src/gui/settings.py similarity index 65% rename from proxyshop/gui/settings.py rename to src/gui/settings.py index 76b3c82b..da36d8fd 100644 --- a/proxyshop/gui/settings.py +++ b/src/gui/settings.py @@ -2,12 +2,9 @@ KIVY SETTINGS POPUPS """ import os.path as osp -import json -import shutil from pathlib import Path from typing import Optional from kivy.config import ConfigParser -import configparser from kivy.core.window import Window from kivy.metrics import dp @@ -20,9 +17,9 @@ from kivy.uix.togglebutton import ToggleButton from kivy.uix.widget import Widget -from proxyshop.core import TemplateDetails -from proxyshop.constants import con - +from src.core import TemplateDetails +from src.constants import con +from src.utils.files import verify_config_fields, get_valid_config_json """ AESTHETIC CLASSES @@ -30,6 +27,9 @@ class FormattedSettingString(SettingString): + """ + Create custom SettingString class to allow Markup in title. + """ def _create_popup(self, instance): # create popup layout content = BoxLayout(orientation='vertical', spacing='5dp') @@ -67,6 +67,9 @@ def _create_popup(self, instance): class FormattedSettingNumeric(SettingNumeric): + """ + Create custom SettingNumeric class to allow Markup in title. + """ def _create_popup(self, instance): # create popup layout content = BoxLayout(orientation='vertical', spacing='5dp') @@ -104,6 +107,9 @@ def _create_popup(self, instance): class FormattedSettingOptions(SettingOptions): + """ + Create custom SettingOptions class to allow Markup in title. + """ def _create_popup(self, instance): # create the popup content = BoxLayout(orientation='vertical', spacing='5dp') @@ -141,91 +147,57 @@ def _create_popup(self, instance): class SettingsPopup(ModalView): @property - def app_ini(self) -> str: + def path_ini(self) -> Optional: + # Template INI config path + if self.template and self.template.get('config_path'): + return self.template.get('config_path', '').replace('json', 'ini') return osp.join(con.cwd, "config.ini") @property - def app_json(self) -> str: - return osp.join(con.cwd, "proxyshop/app_settings.json") + def path_template_json(self) -> Optional[str]: + # Template JSON config path + if self.template and osp.exists(self.template.get('config_path')): + return self.template.get('config_path') + return def __init__(self, template: Optional[TemplateDetails] = None, **kwargs): super().__init__(**kwargs) + self.template = template - # Create ini if one doesn't exist - if template: - self.create_config(template) - custom_json = self.update_config(template['config_path']) if osp.exists(template['config_path']) else None - else: - self.path_ini = self.app_ini - custom_json = None - - app_config = ConfigParser(allow_no_value=True) - app_config.optionxform = str - app_config.read(self.path_ini) - + # Configure settings panel s = Settings() s.bind(on_close=self.dismiss) s.register_type('options', FormattedSettingOptions) s.register_type('string', FormattedSettingString) s.register_type('numeric', FormattedSettingNumeric) - if custom_json: - s.add_json_panel(f"{template['name']} Template", app_config, data=custom_json) - s.add_json_panel('App Settings', app_config, 'proxyshop/app_settings.json') + + # Load ini file + self.verify_ini_file() + app_config = ConfigParser(allow_no_value=True) + app_config.optionxform = str + app_config.read(self.path_ini) + + # Load JSON settings into panel + if self.path_template_json: + s.add_json_panel( + f"{template['name']} Template", app_config, + data=get_valid_config_json(self.path_template_json) + ) + s.add_json_panel( + 'App Settings', app_config, + data=get_valid_config_json(con.path_config_json) + ) self.add_widget(s) - def create_config(self, template: TemplateDetails): + def verify_ini_file(self): """ - Check this template's ini exists, if it doesn't create one. - @param template: - @return: + Verify that the ini file for the app/template contains necessary fields outlined in JSON. """ - self.path_ini = template['config_path'].replace('json', 'ini') - if not osp.exists(self.path_ini): - Path(osp.dirname(self.path_ini)).mkdir(mode=511, parents=True, exist_ok=True) - shutil.copyfile('config.ini', self.path_ini) - - def update_config(self, json_path) -> str: - # Load the json - changed = False - with open(json_path, "r", encoding="utf-8") as f: - raw = json.load(f) - - # Load the config - conf_file = configparser.ConfigParser(allow_no_value=True) - conf_file.optionxform = str - with open(self.path_ini, "r", encoding="utf-8") as f: - conf_file.read_file(f) - - # Build a dictionary of the necessary values - data = {} - for row in raw: - if row['type'] == 'title': - continue - if row['section'] not in data: - data[row['section']] = [] - data[row['section']].append({ - 'key': row['key'], - 'value': row['default'] if 'default' in row else 0 - }) - if 'default' in row: - row.pop('default') - - # Build the sections and rows into the ini - for section, settings in data.items(): - # Check if the section exists - if not conf_file.has_section(section): - conf_file.add_section(section) - changed = True - # Check if each setting exists - for setting in settings: - if not conf_file.has_option(section, setting['key']): - conf_file.set(section, setting['key'], str(setting['value'])) - changed = True - - # If ini has changed, write changes - if changed: - with open(self.path_ini, "w", encoding="utf-8") as f: - conf_file.write(f) - - # Return json data - return json.dumps(raw) + # Ensure folder exists + Path(osp.dirname(self.path_ini)).mkdir(mode=511, parents=True, exist_ok=True) + + # Ensure app fields exist + verify_config_fields(self.path_ini, con.path_config_json) + if self.path_template_json: + # Ensure template fields exist + verify_config_fields(self.path_ini, self.path_template_json) diff --git a/proxyshop/gui/updater.py b/src/gui/updater.py similarity index 83% rename from proxyshop/gui/updater.py rename to src/gui/updater.py index 6ff073d4..2905c9c9 100644 --- a/proxyshop/gui/updater.py +++ b/src/gui/updater.py @@ -10,15 +10,16 @@ from kivy.uix.label import Label import asynckivy as ak -from proxyshop.constants import con -from proxyshop.core import check_for_updates, update_template +from src.constants import con +from src.core import check_for_updates, update_template +from src.utils.strings import msg_success, msg_error class UpdatePopup(Popup): """ Popup modal for updating templates. """ - Builder.load_file(os.path.join(con.cwd, "proxyshop/kv/updater.kv")) + Builder.load_file(os.path.join(con.cwd, "src/kv/updater.kv")) loading = True updates = {} categories = {} @@ -34,8 +35,8 @@ async def populate_updates(self): """ Load the list of updates available. """ - # Binary tracker for alternating color - chk = 0 + # Track current background color + bg_color = "#181818" # Remove loading screen if self.loading: @@ -49,8 +50,7 @@ async def populate_updates(self): # Loop through updates within this category for i, temp in enumerate(temps): # Alternate table item color - if chk == 0: chk, bg_color = 1, "#101010" - else: chk, bg_color = 0, "#181818" + bg_color = "#101010" if bg_color == "#181818" else "#181818" self.entries[temp['id']] = UpdateEntry(self, temp, bg_color) self.ids.container.add_widget(self.entries[temp['id']]) @@ -62,11 +62,10 @@ async def populate_updates(self): class UpdateEntry(BoxLayout): def __init__(self, parent: Popup, temp: dict, bg_color: str, **kwargs): - if temp['plugin']: plugin = f" [size=18]({temp['plugin']})[/size]" - else: plugin = "" + plugin = f" [size=18]({temp['plugin']})[/size]" if temp.get('plugin') else "" self.bg_color = bg_color self.name = f"{temp['type']} - {temp['name']}{plugin}" - self.status = f"[color=#59d461]{temp['version_new']}[/color]" + self.status = msg_success(temp['version_new']) self.data = temp self.root = parent super().__init__(**kwargs) @@ -86,7 +85,7 @@ async def download_update(self, download: BoxLayout) -> None: self.root.ids.container.remove_widget(self.root.entries[self.data['id']]) else: download.clear_widgets() - download.add_widget(Label(text="[color=#a84747]FAILED[/color]", markup=True)) + download.add_widget(Label(text=msg_error("FAILED"), markup=True)) async def mark_updated(self): self.root.ids.container.remove_widget(self.root.entries[self.data['id']]) diff --git a/proxyshop/gui/utils.py b/src/gui/utils.py similarity index 88% rename from proxyshop/gui/utils.py rename to src/gui/utils.py index 380ac1b2..52e37ae9 100644 --- a/proxyshop/gui/utils.py +++ b/src/gui/utils.py @@ -5,9 +5,13 @@ from kivy.core.text import LabelBase from kivy.core.window import Window from kivy.properties import BooleanProperty, ObjectProperty +from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button +from kivy.uix.togglebutton import ToggleButton from kivy.utils import get_color_from_hex +from src.core import card_types + """ UTILITY FUNCTIONS """ @@ -138,3 +142,18 @@ def on_leave(self): Window.set_system_cursor('arrow') self.text = self.org_text self.background_color = self.org_color + + +""" +RESOURCES +""" + + +class GUIResources: + def __init__(self): + self.template_row: dict[str, [str, BoxLayout]] = {k: {} for k in card_types} + self.template_btn: dict[str, [str, ToggleButton]] = {k: {} for k in card_types} + self.template_btn_cfg: dict[str, [str, Button]] = {k: {} for k in card_types} + + +GUI = GUIResources() diff --git a/proxyshop/helpers.py b/src/helpers.py similarity index 67% rename from proxyshop/helpers.py rename to src/helpers.py index 29d757de..bf44f770 100644 --- a/proxyshop/helpers.py +++ b/src/helpers.py @@ -4,43 +4,31 @@ from typing import Optional, Union import os -import photoshop.api as ps -from photoshop.api import PhotoshopPythonAPIError, SolidColor +from photoshop.api import ( + PhotoshopPythonAPIError, SolidColor, Application, DialogModes, Units, ActionDescriptor, + ColorModel, RasterizeType, ElementPlacement, ActionReference, LayerKind, BlendMode, + AnchorPosition, SaveOptions, ActionList, PNGSaveOptions, JPEGSaveOptions, PhotoshopSaveOptions +) from photoshop.api._artlayer import ArtLayer from photoshop.api._layerSet import LayerSet -from proxyshop.constants import con -from proxyshop.scryfall import card_scan -from proxyshop.settings import cfg +from src.constants import con +from src.scryfall import card_scan +from src.settings import cfg +from src.utils.enums_photoshop import Alignment, Stroke +from src.utils.strings import ps_version_check +from src.utils.types_photoshop import EffectStroke, EffectDropShadow, EffectGradientOverlay, LayerEffects, \ + EffectColorOverlay # QOL Definitions -app = ps.Application() +app = Application() sID = app.stringIDToTypeID cID = app.charIDToTypeID -NO_DIALOG = ps.DialogModes.DisplayNoDialogs +NO_DIALOG = DialogModes.DisplayNoDialogs # Ensure scaling with pixels, font size with points -app.preferences.rulerUnits = ps.Units.Pixels -app.preferences.typeUnits = ps.Units.Points - - -""" -SYSTEM FUNCTIONS -""" - - -def check_fonts(fonts: list) -> list: - """ - Check if given fonts exist in users Photoshop Application. - @return: Array of missing fonts or None - """ - missing = [] - for f in fonts: - try: - assert isinstance(app.fonts.getByName(f).name, str) - except AssertionError: - missing.append(f) - return missing +app.preferences.rulerUnits = Units.Pixels +app.preferences.typeUnits = Units.Points """ @@ -56,36 +44,30 @@ def getLayer(name: str, group: Optional[Union[str, list, tuple, LayerSet]] = Non @return: Layer object requested """ try: - layer_set = None - if group is None: - # No LayerSet given - for layer in app.activeDocument.layers: - if layer.name == name: - return layer - elif isinstance(group, str): + # Was LayerSet provided? + if isinstance(group, str): # LayerSet name given - layer_set = app.activeDocument.layerSets.getByName(group) + return app.activeDocument.layerSets.getByName(group).layers.getByName(name) + elif isinstance(group, LayerSet): + # LayerSet object given + return group.layers.getByName(name) elif isinstance(group, (tuple, list)): - # List of layerSet names/objects given + # Tuple or list of LayerSets + layer_set = app.activeDocument for g in group: - # First in list or not? - if not layer_set: - if isinstance(g, str): - layer_set = app.activeDocument.layerSets.getByName(g) - else: - layer_set = g - else: + if isinstance(g, str): + # LayerSet name given layer_set = layer_set.layerSets.getByName(g) - else: - # Else, assume layerSet object given - layer_set = group - - # Find our layer - for layer in layer_set.layers: - if layer.name == name: - return layer + elif isinstance(g, LayerSet): + # LayerSet object given + layer_set = g + return layer_set.layers.getByName(name) + # Valid LayerSet not given + return app.activeDocument.layers.getByName(name) except (PhotoshopPythonAPIError, AttributeError, TypeError): print(f'\nLayer "{name}" could not be found!') + if group: + print(f"LayerSet reference used: {group}") return @@ -97,30 +79,33 @@ def getLayerSet(name: str, group: Optional[Union[str, list, tuple, LayerSet]] = @return: Group object requested. """ try: - if group: - layer_set = None - if isinstance(group, str): - # Set name given - layer_set = app.activeDocument.layerSets.getByName(group) - return layer_set.layerSets.getByName(name) - elif isinstance(group, (tuple, list)): - # Tuple or list of groups - for g in group: - # First in the list - if not layer_set: - if isinstance(g, str): - layer_set = app.activeDocument.layerSets.getByName(g) - else: - layer_set = g - else: - layer_set = layer_set.layerSets.getByName(g) - return layer_set.layerSets.getByName(name) - # Set object given + # Was LayerSet provided? + if not group: + # No LayerSet given + return app.activeDocument.layerSets.getByName(name) + if isinstance(group, str): + # LayerSet name given + return app.activeDocument.layerSets.getByName(group).layerSets.getByName(name) + elif isinstance(group, (tuple, list)): + # Tuple or list of groups + layer_set = app.activeDocument + for g in group: + if isinstance(g, str): + # LayerSet name given + layer_set = layer_set.layerSets.getByName(g) + elif isinstance(g, LayerSet): + # LayerSet object given + layer_set = g + return layer_set.layerSets.getByName(name) + elif isinstance(group, LayerSet): + # LayerSet object given return group.layerSets.getByName(name) - # Look through entire document - return app.activeDocument.layerSets.getByName(name) + # LayerSet can't be located + raise PhotoshopPythonAPIError(f"LayerSet given invalid: {group}") except (PhotoshopPythonAPIError, AttributeError, TypeError): - print(f'\nLayerSet "{name}" could not be found!') + print(f'LayerSet "{name}" could not be found!') + if group: + print(f"LayerSet reference used: {group}") return @@ -129,43 +114,43 @@ def getLayerSet(name: str, group: Optional[Union[str, list, tuple, LayerSet]] = """ -def rgb_black() -> ps.SolidColor: +def rgb_black() -> SolidColor: """ Creates a black SolidColor object. @return: SolidColor object """ - color = ps.SolidColor() + color = SolidColor() color.rgb.red = 0 color.rgb.green = 0 color.rgb.blue = 0 return color -def rgb_grey() -> ps.SolidColor: +def rgb_grey() -> SolidColor: """ Creates a grey SolidColor object. @return: SolidColor object. """ - color = ps.SolidColor() + color = SolidColor() color.rgb.red = 170 color.rgb.green = 170 color.rgb.blue = 170 return color -def rgb_white() -> ps.SolidColor: +def rgb_white() -> SolidColor: """ Creates a white SolidColor object. @return: SolidColor object. """ - color = ps.SolidColor() + color = SolidColor() color.rgb.red = 255 color.rgb.green = 255 color.rgb.blue = 255 return color -def get_rgb(r: int, g: int, b: int) -> ps.SolidColor: +def get_rgb(r: int, g: int, b: int) -> SolidColor: """ Creates a SolidColor object with the given RGB values. @param r: Integer from 0 to 255 for red spectrum. @@ -173,14 +158,14 @@ def get_rgb(r: int, g: int, b: int) -> ps.SolidColor: @param b: Integer from 0 to 255 for blue spectrum. @return: SolidColor object. """ - color = ps.SolidColor() + color = SolidColor() color.rgb.red = r color.rgb.green = g color.rgb.blue = b return color -def get_cmyk(c: float, m: float, y: float, k: float) -> ps.SolidColor: +def get_cmyk(c: float, m: float, y: float, k: float) -> SolidColor: """ Creates a SolidColor object with the given CMYK values. @param c: Float from 0.0 to 100.0 for Cyan component. @@ -189,7 +174,7 @@ def get_cmyk(c: float, m: float, y: float, k: float) -> ps.SolidColor: @param k: Float from 0.0 to 100.0 for blacK component. @return: SolidColor object. """ - color = ps.SolidColor() + color = SolidColor() color.cmyk.cyan = c color.cmyk.magenta = m color.cmyk.yellow = y @@ -197,7 +182,7 @@ def get_cmyk(c: float, m: float, y: float, k: float) -> ps.SolidColor: return color -def get_color(color: Union[list[int], str, dict]) -> ps.SolidColor: +def get_color(color: Union[SolidColor, list[int], str, dict]) -> SolidColor: """ Automatically get either cmyk or rgb color given a range of @param color: Array containing 3 (RGB) or 4 (CMYK) numbers between 0 and 255, or the name of a known color. @@ -232,26 +217,26 @@ def get_color(color: Union[list[int], str, dict]) -> ps.SolidColor: raise ValueError(f"Unrecognized color notation given: {color}") -def apply_rgb(action: ps.ActionDescriptor, color: ps.SolidColor) -> None: +def apply_rgb(action: ActionDescriptor, color: SolidColor) -> None: """ Apply RGB SolidColor object to action descriptor. @param action: ActionDescriptor object. @param color: SolidColor object matching RGB model. """ - ad = ps.ActionDescriptor() + ad = ActionDescriptor() ad.putDouble(sID("red"), color.rgb.red) ad.putDouble(sID("green"), color.rgb.green) ad.putDouble(sID("blue"), color.rgb.blue) action.putObject(sID("color"), sID("RGBColor"), ad) -def apply_cmyk(action: ps.ActionDescriptor, color: ps.SolidColor) -> None: +def apply_cmyk(action: ActionDescriptor, color: SolidColor) -> None: """ Apply CMYK SolidColor object to action descriptor. @param action: ActionDescriptor object. @param color: SolidColor object matching CMYK model. """ - ad = ps.ActionDescriptor() + ad = ActionDescriptor() ad.putDouble(cID("Cyn "), color.cmyk.cyan) ad.putDouble(cID("Mgnt"), color.cmyk.magenta) ad.putDouble(cID("Ylw "), color.cmyk.yellow) @@ -259,15 +244,15 @@ def apply_cmyk(action: ps.ActionDescriptor, color: ps.SolidColor) -> None: action.putObject(cID("Clr "), cID("CMYC"), ad) -def apply_color(action: ps.ActionDescriptor, color: ps.SolidColor) -> None: +def apply_color(action: ActionDescriptor, color: SolidColor) -> None: """ Applies color to the specified action descriptor. @param action: ActionDescriptor object. @param color: CMYK or RGB SolidColor object. """ - if color.model == ps.ColorModel.RGBModel: + if color.model == ColorModel.RGBModel: apply_rgb(action, color) - elif color.model == ps.ColorModel.CMYKModel: + elif color.model == ColorModel.CMYKModel: apply_cmyk(action, color) else: raise ValueError(f"Received unsupported color object: {color}") @@ -331,8 +316,8 @@ def get_text_layer_bounds(layer: ArtLayer, legacy: bool = False) -> dict[str: Un @return: Array of the bounds of the given layer. """ if int(app.version[0:2]) < 21 or legacy: - layer_copy = layer.duplicate(app.activeDocument, ps.ElementPlacement.PlaceInside) - layer_copy.rasterize(ps.RasterizeType.TextContents) + layer_copy = layer.duplicate(app.activeDocument, ElementPlacement.PlaceInside) + layer_copy.rasterize(RasterizeType.TextContents) layer_bounds = layer.bounds layer_copy.remove() return layer_bounds @@ -348,22 +333,22 @@ def get_text_layer_dimensions(layer, legacy: bool = False) -> dict[str: Union[in @return: Dict containing height and width of the given layer. """ if int(app.version[0:2]) < 21 or legacy: - layer_copy = layer.duplicate(app.activeDocument, ps.ElementPlacement.PlaceInside) - layer_copy.rasterize(ps.RasterizeType.TextContents) + layer_copy = layer.duplicate(app.activeDocument, ElementPlacement.PlaceInside) + layer_copy.rasterize(RasterizeType.TextContents) dimensions = get_layer_dimensions(layer_copy) layer_copy.remove() return dimensions return get_layer_dimensions(layer) -def get_text_layer_color(layer: ArtLayer) -> ps.SolidColor: +def get_text_layer_color(layer: ArtLayer) -> SolidColor: """ Occasionally, Photoshop has issues with retrieving the color of a text layer. This helper guards against errors and null values by defaulting to rgb_black() in the event of a problem. @param layer: Layer object that must be TextLayer @return: SolidColor object representing the color of the text item. """ - if isinstance(layer, ArtLayer) and layer.kind == ps.LayerKind.TextLayer: + if isinstance(layer, ArtLayer) and layer.kind == LayerKind.TextLayer: if hasattr(layer.textItem, 'color'): return layer.textItem.color print(f"Couldn't retrieve color of layer: {layer.name}") @@ -383,7 +368,7 @@ def get_text_scale_factor(layer: Optional[ArtLayer] = None, axis: str = "xx") -> # Get the scale factor if not 1 factor = 1 - ref = ps.ActionReference() + ref = ActionReference() ref.putEnumerated(cID("Lyr "), cID("Ordn"), cID("Trgt")) desc = app.executeActionGet(ref).getObjectValue(sID('textKey')) if desc.hasKey(sID('transform')): @@ -403,15 +388,15 @@ def set_text_size(size: int, layer: Optional[ArtLayer] = None) -> None: app.activeDocument.activeLayer = layer # Set the new size - desc2361 = ps.ActionDescriptor() - ref68 = ps.ActionReference() - desc2362 = ps.ActionDescriptor() + desc2361 = ActionDescriptor() + ref68 = ActionReference() + desc2362 = ActionDescriptor() ref68.putProperty(sID("property"), sID("textStyle")) ref68.putEnumerated(sID("textLayer"), sID("ordinal"), sID("targetEnum")) desc2361.putReference(sID("target"), ref68) desc2362.putInteger(sID("textOverrideFeatureName"), 808465458) desc2362.putInteger(sID("typeStyleOperationType"), 3) - desc2362.PutUnitDouble(sID("size"), sID("pointsUnit"), size) + desc2362.putUnitDouble(sID("size"), sID("pointsUnit"), size) desc2361.putObject(sID("to"), sID("textStyle"), desc2362) app.ExecuteAction(sID("set"), desc2361, NO_DIALOG) @@ -452,20 +437,20 @@ def select_layer( @param make_visible: Make the layer visible if not currently visible? Doesn't work with adding layers to selection. """ - desc1 = ps.ActionDescriptor() - ref1 = ps.ActionReference() - ref1.PutIdentifier(sID("layer"), layer.id) - desc1.PutReference(sID("target"), ref1) + desc1 = ActionDescriptor() + ref1 = ActionReference() + ref1.putIdentifier(sID("layer"), layer.id) + desc1.putReference(sID("target"), ref1) # Add to currently selected layers? if add: - desc1.PutEnumerated( + desc1.putEnumerated( sID('selectionModifier'), sID('selectionModifierType'), sID('addToSelection') ) # Force visible? - desc1.PutBoolean(sID("makeVisible"), make_visible) - app.executeAction(sID('select'), desc1, ps.DialogModes.DisplayNoDialogs) + desc1.putBoolean(sID("makeVisible"), make_visible) + app.executeAction(sID('select'), desc1, DialogModes.DisplayNoDialogs) def select_layers(layers: list[ArtLayer, LayerSet]): @@ -483,8 +468,8 @@ def select_no_layers() -> None: """ Deselect all layers. """ - selectNone = ps.ActionDescriptor() - ref = ps.ActionReference() + selectNone = ActionDescriptor() + ref = ActionReference() ref.putEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) selectNone.putReference(cID("null"), ref) app.executeAction(sID("selectNoLayers"), selectNone, NO_DIALOG) @@ -502,7 +487,7 @@ def merge_layers(layers: list[ArtLayer] = None, name: Optional[str] = None) -> A select_layers(layers) # Merge layers and return result - app.ExecuteAction(sID("mergeLayersNew"), ps.ActionDescriptor(), NO_DIALOG) + app.ExecuteAction(sID("mergeLayersNew"), ActionDescriptor(), NO_DIALOG) if name: app.activeDocument.activeLayer.name = name return app.activeDocument.activeLayer @@ -523,20 +508,20 @@ def group_layers( select_layers(layers) # Group the layers - desc1 = ps.ActionDescriptor() - ref1 = ps.ActionReference() - ref2 = ps.ActionReference() + desc1 = ActionDescriptor() + ref1 = ActionReference() + ref2 = ActionReference() ref1.putClass(sID("layerSection")) desc1.putReference(sID('null'), ref1) ref2.putEnumerated(cID('Lyr '), cID('Ordn'), cID('Trgt')) desc1.putReference(cID('From'), ref2) - desc2 = ps.ActionDescriptor() + desc2 = ActionDescriptor() desc2.putString(cID('Nm '), name) desc1.putObject(cID('Usng'), sID("layerSection"), desc2) desc1.putInteger(sID("layerSectionStart"), 0) desc1.putInteger(sID("layerSectionEnd"), 1) desc1.putString(cID('Nm '), name) - app.executeAction(cID('Mk '), desc1, ps.DialogModes.DisplayNoDialogs) + app.executeAction(cID('Mk '), desc1, DialogModes.DisplayNoDialogs) return app.activeDocument.activeLayer @@ -549,17 +534,17 @@ def copy_layer_mask( @param layer_from: Layer to copy from. @param layer_to: Layer to copy to. """ - desc255 = ps.ActionDescriptor() - ref17 = ps.ActionReference() - ref18 = ps.ActionReference() - desc255.PutClass(sID("new"), sID("channel")) - ref17.PutEnumerated(sID("channel"), sID("channel"), sID("mask")) - ref17.PutIdentifier(sID("layer"), layer_to.id) - desc255.PutReference(sID("at"), ref17) - ref18.PutEnumerated(sID("channel"), sID("channel"), sID("mask")) - ref18.PutIdentifier(sID("layer"), layer_from.id) - desc255.PutReference(sID("using"), ref18) - app.ExecuteAction(sID("make"), desc255, ps.DialogModes.DisplayNoDialogs) + desc255 = ActionDescriptor() + ref17 = ActionReference() + ref18 = ActionReference() + desc255.putClass(sID("new"), sID("channel")) + ref17.putEnumerated(sID("channel"), sID("channel"), sID("mask")) + ref17.putIdentifier(sID("layer"), layer_to.id) + desc255.putReference(sID("at"), ref17) + ref18.putEnumerated(sID("channel"), sID("channel"), sID("mask")) + ref18.putIdentifier(sID("layer"), layer_from.id) + desc255.putReference(sID("using"), ref18) + app.ExecuteAction(sID("make"), desc255, DialogModes.DisplayNoDialogs) def duplicate_group(name: str): @@ -568,13 +553,13 @@ def duplicate_group(name: str): @param name: Name to give the newly created layer set. @return: The newly created layer set object. """ - desc241 = ps.ActionDescriptor() - ref4 = ps.ActionReference() - ref4.PutEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) - desc241.PutReference(sID("target"), ref4) - desc241.PutString(sID("name"), name) - desc241.PutInteger(sID("version"), 5) - app.ExecuteAction(sID("duplicate"), desc241, ps.DialogModes.DisplayNoDialogs) + desc241 = ActionDescriptor() + ref4 = ActionReference() + ref4.putEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) + desc241.putReference(sID("target"), ref4) + desc241.putString(sID("name"), name) + desc241.putInteger(sID("version"), 5) + app.ExecuteAction(sID("duplicate"), desc241, DialogModes.DisplayNoDialogs) return app.activeDocument.activeLayer @@ -584,17 +569,12 @@ def create_new_layer(layer_name: Optional[str] = None) -> ArtLayer: @param layer_name: Optional name for the new layer @return: Newly created layer object """ - if layer_name is None: - layer_name = "Layer" - # Create new layer at top of layers active_layer = app.activeDocument.activeLayer - layer = app.activeDocument.artLayers.add() + layer = app.activeDocument.artLayers.add(layer_name=layer_name or "Layer") # Name it & set blend mode to normal - layer.name = layer_name - layer.blendMode = ps.BlendMode.NormalBlend - layer.visible = True + layer.blendMode = BlendMode.NormalBlend # Move the layer below layer.moveAfter(active_layer) @@ -610,7 +590,7 @@ def smart_layer(layer: Union[ArtLayer, LayerSet] = None) -> ArtLayer: """ if layer: app.activeDocument.activeLayer = layer - app.ExecuteAction(sID("newPlacedLayer"), None, ps.DialogModes.DisplayNoDialogs) + app.ExecuteAction(sID("newPlacedLayer"), None, DialogModes.DisplayNoDialogs) return app.activeDocument.activeLayer @@ -620,11 +600,11 @@ def lock_layer(layer: Union[ArtLayer, LayerSet], protection: str = "protectAll") @param layer: The layer to lock. @param protection: protectAll to lock, protectNone to unlock """ - desc819 = ps.ActionDescriptor() - ref378 = ps.ActionReference() + desc819 = ActionDescriptor() + ref378 = ActionReference() ref378.putIdentifier(cID("Lyr "), layer.id) desc819.putReference(cID("null"), ref378) - desc820 = ps.ActionDescriptor() + desc820 = ActionDescriptor() desc820.putBoolean(sID(protection), True) idlayerLocking = sID("layerLocking") desc819.putObject(idlayerLocking, idlayerLocking, desc820) @@ -664,9 +644,9 @@ def select_layer_pixels(layer: Optional[ArtLayer]) -> None: @param layer: Layer to select. Uses active layer if not provided. """ idChnl = cID("Chnl") - des1 = ps.ActionDescriptor() - ref1 = ps.ActionReference() - ref2 = ps.ActionReference() + des1 = ActionDescriptor() + ref1 = ActionReference() + ref2 = ActionReference() ref1.putProperty(idChnl, cID("fsel")) des1.putReference(cID("null"), ref1) ref2.putEnumerated(idChnl, idChnl, cID("Trsp")) @@ -677,7 +657,7 @@ def select_layer_pixels(layer: Optional[ArtLayer]) -> None: def align( - align_type: str = "AdCH", + align_type: Alignment = Alignment.CenterHorizontal, layer: Optional[Union[ArtLayer, LayerSet]] = None, reference: Optional[Union[ArtLayer, LayerSet]] = None ) -> None: @@ -697,12 +677,12 @@ def align( app.activeDocument.activeLayer = layer # Align the current layer to selection - desc = ps.ActionDescriptor() - ref = ps.ActionReference() - ref.putEnumerated(cID("Lyr "), cID("Ordn"), cID("Trgt")) - desc.putReference(cID("null"), ref) - desc.putEnumerated(cID("Usng"), cID("ADSt"), cID(align_type)) - app.executeAction(cID("Algn"), desc, NO_DIALOG) + desc = ActionDescriptor() + ref = ActionReference() + ref.putEnumerated(sID('layer'), sID('ordinal'), sID('targetEnum')) + desc.putReference(sID('null'), ref) + desc.putEnumerated(sID('using'), cID('ADSt'), align_type.value) + app.executeAction(sID('align'), desc, NO_DIALOG) def align_vertical( @@ -714,19 +694,19 @@ def align_vertical( @param layer: ArtLayer or LayerSet to align. Uses active layer if not provided. @param reference: Reference to align the layer within. Uses current selection if not provided. """ - align("AdCV", layer, reference) + align(Alignment.CenterVertical, layer, reference) def align_horizontal( - layer: Optional[Union[ArtLayer, LayerSet]] = None, - reference: Optional[Union[ArtLayer, LayerSet]] = None + layer: Optional[Union[ArtLayer, LayerSet]] = None, + reference: Optional[Union[ArtLayer, LayerSet]] = None ) -> None: """ Align the currently active layer horizontally with respect to the current selection. @param layer: ArtLayer or LayerSet to align. Uses active layer if not provided. @param reference: Reference to align the layer within. Uses current selection if not provided. """ - align("AdCH", layer, reference) + align(Alignment.CenterHorizontal, layer, reference) def position_between_layers( @@ -786,10 +766,9 @@ def space_layers_apart(layers: list[Union[ArtLayer, LayerSet]], gap: Union[int, def frame_layer( layer: ArtLayer, reference: ArtLayer, - anchor: ps.AnchorPosition = ps.AnchorPosition.TopLeft, smallest: bool = False, - align_h: bool = True, - align_v: bool = True + anchor: AnchorPosition = AnchorPosition.TopLeft, + alignments: Optional[list[Alignment]] = None ) -> None: """ Scale a layer equally to the bounds of a reference layer, then center the layer vertically and horizontally @@ -799,56 +778,29 @@ def frame_layer( layer_dim = get_layer_dimensions(layer) ref_dim = get_layer_dimensions(reference) - # Determine how much to scale the layer by such that it fits into the reference layer's bounds + # Scale the layer to fit either the largest, or the smallest dimension action = min if smallest else max scale = 100 * action((ref_dim['width'] / layer_dim['width']), (ref_dim['height'] / layer_dim['height'])) layer.resize(scale, scale, anchor) - # Align the layer + # Make any alignments select_layer_bounds(reference) app.activeDocument.activeLayer = layer - if align_h: - align_horizontal() - if align_v: - align_vertical() + if alignments is None: + # Default alignments are center horizontal and vertical + alignments = [Alignment.CenterHorizontal, Alignment.CenterVertical] + for a in alignments: + align(a) clear_selection() -def set_active_layer_mask(visible: bool = True) -> None: - """ - Set the visibility of the active layer's layer mask. - """ - desc3078 = ps.ActionDescriptor() - desc3079 = ps.ActionDescriptor() - ref1567 = ps.ActionReference() - ref1567.putEnumerated(cID("Lyr "), cID("Ordn"), cID("Trgt")) - desc3078.putReference(cID("null"), ref1567) - desc3079.putBoolean(cID("UsrM"), visible) - desc3078.putObject(cID("T "), cID("Lyr "), desc3079) - app.executeAction(cID("setd"), desc3078, NO_DIALOG) - - -def enable_active_layer_mask() -> None: - """ - Enables the active layer's layer mask. - """ - set_active_layer_mask(True) - - -def disable_active_layer_mask() -> None: - """ - Disables the active layer's layer mask. - """ - set_active_layer_mask(False) - - def set_layer_mask(layer: ArtLayer, visible: bool = True) -> None: """ Set the visibility of the active layer's layer mask. """ - desc1 = ps.ActionDescriptor() - desc2 = ps.ActionDescriptor() - ref1 = ps.ActionReference() + desc1 = ActionDescriptor() + desc2 = ActionDescriptor() + ref1 = ActionReference() ref1.putIdentifier(cID("Lyr "), layer.id) desc1.putReference(cID("null"), ref1) desc2.putBoolean(cID("UsrM"), visible) @@ -872,66 +824,108 @@ def disable_mask(layer: Union[ArtLayer, LayerSet]) -> None: set_layer_mask(layer, False) -def leaf_layers() -> list[ArtLayer]: +def set_fx_visibility(layer: Optional[Union[ArtLayer, LayerSet]], visible: bool = True) -> None: """ - Utility function to iterate over leaf layers in a document + Shows or hides the layer effects on a given layer. + @param layer: ArtLayer or LayerSet, use active if not provided. + @param visible: Make visible if True, otherwise hide. """ - to_visit = [node for node in app.activeDocument.layers] - layers = [] - while to_visit: - node = to_visit.pop() - try: - to_visit.extend([n for n in node.layers]) - except (NameError, AttributeError): - # It's a leaf node, no sublayers - layers.append(node) + if not layer: + layer = app.activeDocument.activeLayer + else: + app.activeDocument.activeLayer = layer + + # Change visibility + desc = ActionDescriptor() + action_list = ActionList() + ref = ActionReference() + ref.putClass(sID("layerEffects")) + ref.putIdentifier(sID("layer"), layer.id) + action_list.putReference(ref) + desc.putList(sID("target"), action_list) + app.executeAction(sID("show" if visible else "hide"), desc, NO_DIALOG) + + +def enable_layer_fx(layer: Optional[Union[ArtLayer, LayerSet]]) -> None: + """ + Passthrough function for `change_fx_visibility` to enable effects on layer. + @param layer: ArtLayer or LayerSet, will use active if not provided. + """ + set_fx_visibility(layer, True) + + +def disable_layer_fx(layer: Optional[Union[ArtLayer, LayerSet]]) -> None: + """ + Passthrough function for `change_fx_visibility` to enable effects on layer. + @param layer: ArtLayer or LayerSet, will use active if not provided. + """ + set_fx_visibility(layer, False) + + +def set_fill_opacity(opacity: float, layer: Optional[Union[ArtLayer, LayerSet]]) -> None: + """ + Sets the fill opacity of a given layer. + @param opacity: Fill opacity to set. + @param layer: ArtLayer or LayerSet object. + """ + # Set the active layer + if layer: + app.activeDocument.activeLayer = layer + + # Set the layer's fill opacity + d = ActionDescriptor() + ref = ActionReference() + d1 = ActionDescriptor() + ref.PutEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) + d.PutReference(sID("target"), ref) + d1.PutUnitDouble(sID("fillOpacity"), sID("percentUnit"), opacity) + d.PutObject(sID("to"), sID("layer"), d1) + app.ExecuteAction(sID("set"), d, NO_DIALOG) + + +def get_leaf_layers(group: Optional[LayerSet] = None) -> list[ArtLayer]: + """ + Utility function to generate a list of leaf layers in a LayerSet or document. + @param group: Group to grab leaf layers from. + @return: A list of leaf layers in a LayerSet or document. + """ + if not group: + group = app.activeDocument + layers = [node for node in group.artLayers] + for g in group.layerSets: + layers.extend(get_leaf_layers(g)) return layers -def apply_stroke( - layer: ArtLayer, - stroke_weight: int, - stroke_color: ps.SolidColor = rgb_black() -) -> None: +def get_layer_tree(group: Optional[LayerSet] = None) -> dict[str, Union[ArtLayer, dict[str, ArtLayer]]]: """ - Applies an outer stroke to the active layer with the specified weight and color. - """ - desc608 = ps.ActionDescriptor() - desc609 = ps.ActionDescriptor() - desc610 = ps.ActionDescriptor() - ref149 = ps.ActionReference() - ref149.putProperty(cID("Prpr"), cID("Lefx")) - ref149.putIdentifier(cID("Lyr "), layer.id) - desc608.putReference(cID("null"), ref149) - desc609.putUnitDouble(cID("Scl "), cID("#Prc"), 200) - desc610.putBoolean(cID("enab"), True) - desc610.putEnumerated(cID("Styl"), cID("FStl"), cID("OutF")) - desc610.putEnumerated(cID("PntT"), cID("FrFl"), cID("SClr")) - desc610.putEnumerated(cID("Md "), cID("BlnM"), cID("Nrml")) - desc610.putUnitDouble(cID("Opct"), cID("#Prc"), 100) - desc610.putUnitDouble(cID("Sz "), cID("#Pxl"), int(stroke_weight)) - apply_color(desc610, stroke_color) - desc609.putObject(cID("FrFX"), cID("FrFX"), desc610) - desc608.putObject(cID("T "), cID("Lefx"), desc609) - app.executeAction(cID("setd"), desc608, NO_DIALOG) - - -def clear_layer_style(layer: Union[ArtLayer, LayerSet]) -> None: + Composes a dictionary tree of layers in the active document or a specific LayerSet. + @param: A specific group to create a dictionary tree for. + @return: A dictionary tree comprised of all the layers in a document or group. + """ + if not group: + group = app.activeDocument + layers = {layer.name: layer for layer in group.artLayers} + for g in group.layerSets: + layers[g.name] = get_layer_tree(g) + return layers + + +def clear_layer_style(layer: Union[ArtLayer, LayerSet, None]) -> None: """ Removes all layer style effects. @param layer: Layer object """ - current = app.activeDocument.activeLayer - app.activeDocument.activeLayer = layer + if layer: + app.activeDocument.activeLayer = layer try: - desc1600 = ps.ActionDescriptor() - ref126 = ps.ActionReference() - ref126.PutEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) - desc1600.PutReference(sID("target"), ref126) + desc1600 = ActionDescriptor() + ref126 = ActionReference() + ref126.putEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) + desc1600.putReference(sID("target"), ref126) app.ExecuteAction(sID("disableLayerStyle"), desc1600, NO_DIALOG) except Exception as e: print(e, f'\nLayer "{layer.name}" has no effects!') - app.activeDocument.activeLayer = current def rasterize_layer_style(layer: ArtLayer) -> None: @@ -939,11 +933,11 @@ def rasterize_layer_style(layer: ArtLayer) -> None: Rasterizes a layer including its style. @param layer: Layer object """ - desc1 = ps.ActionDescriptor() - ref1 = ps.ActionReference() + desc1 = ActionDescriptor() + ref1 = ActionReference() ref1.putIdentifier(sID("layer"), layer.id) - desc1.PutReference(sID("target"), ref1) - desc1.PutEnumerated(sID("what"), sID("rasterizeItem"), sID("layerStyle")) + desc1.putReference(sID("target"), ref1) + desc1.putEnumerated(sID("what"), sID("rasterizeItem"), sID("layerStyle")) app.ExecuteAction(sID("rasterizeLayer"), desc1, NO_DIALOG) @@ -953,17 +947,17 @@ def import_art(layer: ArtLayer, file: str) -> None: @param layer: Layer to make active and receive image. @param file: Image file to import. """ - desc = ps.ActionDescriptor() + desc = ActionDescriptor() app.activeDocument.activeLayer = layer - desc.putPath(app.charIDToTypeID("null"), file) - app.executeAction(app.charIDToTypeID("Plc "), desc) + desc.putPath(cID("null"), file) + app.executeAction(cID("Plc "), desc) app.activeDocument.activeLayer.name = "Layer 1" def import_svg( file: str, ref: Union[ArtLayer, LayerSet] = None, - placement: Optional[ps.ElementPlacement] = None + placement: Optional[ElementPlacement] = None ) -> ArtLayer: """ Imports an SVG image, then moves it if needed. @@ -973,9 +967,9 @@ def import_svg( @return: New layer containing SVG. """ # Import the art - desc = ps.ActionDescriptor() - desc.putPath(app.charIDToTypeID("null"), file) - app.executeAction(app.charIDToTypeID("Plc "), desc) + desc = ActionDescriptor() + desc.putPath(cID("null"), file) + app.executeAction(cID("Plc "), desc) # Position the layer if needed if ref and placement: @@ -1007,7 +1001,7 @@ def paste_file( # Select the entire image, copy it, and close the file app.activeDocument.selection.selectAll() app.activeDocument.selection.copy() - app.activeDocument.close(ps.SaveOptions.DoNotSaveChanges) + app.activeDocument.close(SaveOptions.DoNotSaveChanges) # Paste the image into the specific layer app.activeDocument.paste() @@ -1029,8 +1023,8 @@ def paste_file_into_new_layer(file: str) -> ArtLayer: def add_color_to_gradient( - action_list: ps.ActionList, - color: ps.SolidColor, + action_list: ActionList, + color: SolidColor, location: int, midpoint: int ) -> None: @@ -1040,17 +1034,16 @@ def add_color_to_gradient( @param color: SolidColor object @param location: Location of the color along the track. @param midpoint: Percentage midpoint between this color and the next. - @return: """ - action = ps.ActionDescriptor() + action = ActionDescriptor() apply_color(action, color) - action.PutEnumerated(sID("type"), sID("colorStopType"), sID("userStop")) - action.PutInteger(sID("location"), location) - action.PutInteger(sID("midpoint"), midpoint) - action_list.PutObject(sID("colorStop"), action) + action.putEnumerated(sID("type"), sID("colorStopType"), sID("userStop")) + action.putInteger(sID("location"), location) + action.putInteger(sID("midpoint"), midpoint) + action_list.putObject(sID("colorStop"), action) -def apply_fx(layer: Union[ArtLayer, LayerSet], effects: list[dict]) -> None: +def apply_fx(layer: Union[ArtLayer, LayerSet], effects: list[LayerEffects]) -> None: """ Apply multiple layer effects to a layer. @param layer: Layer or Layer Set object. @@ -1058,133 +1051,135 @@ def apply_fx(layer: Union[ArtLayer, LayerSet], effects: list[dict]) -> None: """ # Set up the main action app.activeDocument.activeLayer = layer - main_action = ps.ActionDescriptor() - fx_action = ps.ActionDescriptor() - main_ref = ps.ActionReference() - main_ref.PutProperty(sID("property"), sID("layerEffects")) - main_ref.PutEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) - main_action.PutReference(sID("target"), main_ref) + main_action = ActionDescriptor() + fx_action = ActionDescriptor() + main_ref = ActionReference() + main_ref.putProperty(sID("property"), sID("layerEffects")) + main_ref.putEnumerated(sID("layer"), sID("ordinal"), sID("targetEnum")) + main_action.putReference(sID("target"), main_ref) # Add each action from fx dictionary for fx in effects: if fx['type'] == 'stroke': - apply_fx_stroke(fx_action, **fx) - elif fx['type'] == 'gradient': - apply_fx_gradient(fx_action, **fx) + apply_fx_stroke(fx_action, fx) elif fx['type'] == 'drop-shadow': - apply_fx_drop_shadow(fx_action, **fx) + apply_fx_drop_shadow(fx_action, fx) + elif fx['type'] == 'gradient-overlay': + apply_fx_gradient_overlay(fx_action, fx) + elif fx['type'] == 'color-overlay': + apply_fx_color_overlay(fx_action, fx) # Apply all fx actions - main_action.PutObject(sID("to"), sID("layerEffects"), fx_action) - app.ExecuteAction(sID("set"), main_action, ps.DialogModes.DisplayNoDialogs) + main_action.putObject(sID("to"), sID("layerEffects"), fx_action) + app.ExecuteAction(sID("set"), main_action, DialogModes.DisplayNoDialogs) -def apply_fx_stroke(action: ps.ActionDescriptor, **kw) -> None: +def apply_fx_stroke(action: ActionDescriptor, fx: EffectStroke) -> None: """ Adds stroke effect to layer effects action. @param action: Pending layer effects action descriptor. - @param kw: Optional keywords governing stroke behavior. + @param fx: Stroke effect properties. """ - d = ps.ActionDescriptor() - if kw.get("style") == 'in': - stroke_style = 'insetFrame' - elif kw.get("style") == 'center': - stroke_style = 'centeredFrame' - else: - stroke_style = 'outsetFrame' - d.PutEnumerated(sID("style"), sID("frameStyle"), sID(stroke_style)) - d.PutEnumerated(sID("paintType"), sID("frameFill"), sID("solidColor")) - d.PutEnumerated(sID("mode"), sID("blendMode"), sID("normal")) - d.PutUnitDouble(sID("opacity"), sID("percentUnit"), int(kw.get('opacity', 100))) - d.PutUnitDouble(sID("size"), sID("pixelsUnit"), int(kw.get('weight', 6))) - apply_color(d, get_color(kw.get('color', [0, 0, 0]))) - d.PutBoolean(sID("overprint"), False) - action.PutObject(sID("frameFX"), sID("frameFX"), d) + d = ActionDescriptor() + d.putEnumerated(sID("style"), sID("frameStyle"), Stroke.position(fx.get('style', 'out'))) + d.putEnumerated(sID("paintType"), sID("frameFill"), sID("solidColor")) + d.putEnumerated(sID("mode"), sID("blendMode"), sID("normal")) + d.putUnitDouble(sID("opacity"), sID("percentUnit"), int(fx.get('opacity', 100))) + d.putUnitDouble(sID("size"), sID("pixelsUnit"), int(fx.get('weight', 6))) + apply_color(d, get_color(fx.get('color', [0, 0, 0]))) + d.putBoolean(sID("overprint"), False) + action.putObject(sID("frameFX"), sID("frameFX"), d) -def apply_fx_drop_shadow(action: ps.ActionDescriptor, **kw) -> None: +def apply_fx_drop_shadow(action: ActionDescriptor, fx: EffectDropShadow) -> None: """ Adds drop shadow effect to layer effects action. @param action: Pending layer effects action descriptor. - @param kw: Optional keywords governing drop shadow behavior. - """ - d1 = ps.ActionDescriptor() - d2 = ps.ActionDescriptor() - d_color = ps.ActionDescriptor() - d1.PutEnumerated(sID("mode"), sID("blendMode"), sID("multiply")) - d_color.PutDouble(sID("red"), 0.000000) - d_color.PutDouble(sID("grain"), 0.000000) - d_color.PutDouble(sID("blue"), 0.000000) - d1.PutObject(sID("color"), sID("RGBColor"), d_color) - d1.PutUnitDouble(sID("opacity"), sID("percentUnit"), float(kw.get('opacity', 100.000000))) - d1.PutBoolean(sID("useGlobalAngle"), False) - d1.PutUnitDouble(sID("localLightingAngle"), sID("angleUnit"), float(kw.get('rotation', 45.000000))) - d1.PutUnitDouble(sID("distance"), sID("pixelsUnit"), float(kw.get('distance', 10.000000))) - d1.PutUnitDouble(sID("chokeMatte"), sID("pixelsUnit"), float(kw.get('spread', 0.000000))) - d1.PutUnitDouble(sID("blur"), sID("pixelsUnit"), float(kw.get('size', 0.000000))) - d1.PutUnitDouble(sID("noise"), sID("percentUnit"), 0.000000) - d1.PutBoolean(sID("antiAlias"), False) - d2.PutString(sID("name"), "Linear") - d1.PutObject(sID("transferSpec"), sID("shapeCurveType"), d2) - d1.PutBoolean(sID("layerConceals"), True) - action.PutObject(sID("dropShadow"), sID("dropShadow"), d1) - - -def apply_fx_gradient(action: ps.ActionDescriptor, **kw) -> None: + @param fx: Drop Shadow effect properties. + """ + d1 = ActionDescriptor() + d2 = ActionDescriptor() + d_color = ActionDescriptor() + d1.putEnumerated(sID("mode"), sID("blendMode"), sID("multiply")) + d_color.putDouble(sID("red"), 0.000000) + d_color.putDouble(sID("grain"), 0.000000) + d_color.putDouble(sID("blue"), 0.000000) + d1.putObject(sID("color"), sID("RGBColor"), d_color) + d1.putUnitDouble(sID("opacity"), sID("percentUnit"), float(fx.get('opacity', 100.000000))) + d1.putBoolean(sID("useGlobalAngle"), False) + d1.putUnitDouble(sID("localLightingAngle"), sID("angleUnit"), float(fx.get('rotation', 45.000000))) + d1.putUnitDouble(sID("distance"), sID("pixelsUnit"), float(fx.get('distance', 10.000000))) + d1.putUnitDouble(sID("chokeMatte"), sID("pixelsUnit"), float(fx.get('spread', 0.000000))) + d1.putUnitDouble(sID("blur"), sID("pixelsUnit"), float(fx.get('size', 0.000000))) + d1.putUnitDouble(sID("noise"), sID("percentUnit"), 0.000000) + d1.putBoolean(sID("antiAlias"), False) + d2.putString(sID("name"), "Linear") + d1.putObject(sID("transferSpec"), sID("shapeCurveType"), d2) + d1.putBoolean(sID("layerConceals"), True) + action.putObject(sID("dropShadow"), sID("dropShadow"), d1) + + +def apply_fx_gradient_overlay( + action: ActionDescriptor, fx: EffectGradientOverlay +) -> None: """ Adds gradient effect to layer effects action. @param action: Pending layer effects action descriptor. - @param kw: Optional keywords governing gradient behavior. - """ - d1 = ps.ActionDescriptor() - d2 = ps.ActionDescriptor() - d3 = ps.ActionDescriptor() - d4 = ps.ActionDescriptor() - d5 = ps.ActionDescriptor() - color_list = ps.ActionList() - transparency_list = ps.ActionList() - d1.PutEnumerated(sID("mode"), sID("blendMode"), sID("normal")) - d1.PutUnitDouble(sID("opacity"), sID("percentUnit"), int(kw.get('opacity', 100))) - d2.PutEnumerated(sID("gradientForm"), sID("gradientForm"), sID("customStops")) - d2.PutDouble(sID("interfaceIconFrameDimmed"), int(kw.get('size', 4096))) - for c in kw.get('colors', []): + @param fx: Gradient Overlay effect properties. + """ + d1 = ActionDescriptor() + d2 = ActionDescriptor() + d3 = ActionDescriptor() + d4 = ActionDescriptor() + d5 = ActionDescriptor() + color_list = ActionList() + transparency_list = ActionList() + d1.putEnumerated(sID("mode"), sID("blendMode"), sID("normal")) + d1.putUnitDouble(sID("opacity"), sID("percentUnit"), int(fx.get('opacity', 100))) + d2.putEnumerated(sID("gradientForm"), sID("gradientForm"), sID("customStops")) + d2.putDouble(sID("interfaceIconFrameDimmed"), int(fx.get('size', 4096))) + for c in fx.get('colors', []): add_color_to_gradient( color_list, get_color(c.get('color', [0, 0, 0])), int(c.get('location', 0)), int(c.get('midpoint', 50)) ) - d2.PutList(sID("colors"), color_list) - d3.PutUnitDouble(sID("opacity"), sID("percentUnit"), 100) - d3.PutInteger(sID("location"), 0) - d3.PutInteger(sID("midpoint"), 50) - transparency_list.PutObject(sID("transferSpec"), d3) - d4.PutUnitDouble(sID("opacity"), sID("percentUnit"), 100) - d4.PutInteger(sID("location"), int(kw.get('size', 4096))) - d4.PutInteger(sID("midpoint"), 50) - transparency_list.PutObject(sID("transferSpec"), d4) - d2.PutList(sID("transparency"), transparency_list) - d1.PutObject(sID("gradient"), sID("gradientClassEvent"), d2) - d1.PutUnitDouble(sID("angle"), sID("angleUnit"), int(kw.get('rotation', 45))) - d1.PutEnumerated(sID("type"), sID("gradientType"), sID("linear")) - d1.PutBoolean(sID("reverse"), False) - d1.PutBoolean(sID("dither"), False) - d1.PutEnumerated(cID("gs99"), sID("gradientInterpolationMethodType"), sID("classic")) - d1.PutBoolean(sID("align"), True) - d1.PutUnitDouble(sID("scale"), sID("percentUnit"), int(kw.get('scale', 70))) - d5.PutUnitDouble(sID("horizontal"), sID("percentUnit"), 0) - d5.PutUnitDouble(sID("vertical"), sID("percentUnit"), 0) - d1.PutObject(sID("offset"), sID("paint"), d5) - action.PutObject(sID("gradientFill"), sID("gradientFill"), d1) - - -def apply_fx_fill(action: ps.ActionDescriptor, **kw) -> None: + d2.putList(sID("colors"), color_list) + d3.putUnitDouble(sID("opacity"), sID("percentUnit"), 100) + d3.putInteger(sID("location"), 0) + d3.putInteger(sID("midpoint"), 50) + transparency_list.putObject(sID("transferSpec"), d3) + d4.putUnitDouble(sID("opacity"), sID("percentUnit"), 100) + d4.putInteger(sID("location"), int(fx.get('size', 4096))) + d4.putInteger(sID("midpoint"), 50) + transparency_list.putObject(sID("transferSpec"), d4) + d2.putList(sID("transparency"), transparency_list) + d1.putObject(sID("gradient"), sID("gradientClassEvent"), d2) + d1.putUnitDouble(sID("angle"), sID("angleUnit"), int(fx.get('rotation', 45))) + d1.putEnumerated(sID("type"), sID("gradientType"), sID("linear")) + d1.putBoolean(sID("reverse"), False) + d1.putBoolean(sID("dither"), False) + d1.putEnumerated(cID("gs99"), sID("gradientInterpolationMethodType"), sID("classic")) + d1.putBoolean(sID("align"), True) + d1.putUnitDouble(sID("scale"), sID("percentUnit"), int(fx.get('scale', 70))) + d5.putUnitDouble(sID("horizontal"), sID("percentUnit"), 0) + d5.putUnitDouble(sID("vertical"), sID("percentUnit"), 0) + d1.putObject(sID("offset"), sID("paint"), d5) + action.putObject(sID("gradientFill"), sID("gradientFill"), d1) + + +def apply_fx_color_overlay(action: ActionDescriptor, fx: EffectColorOverlay) -> None: """ Adds a solid color overlay to layer effects action. @param action: Pending layer effects action descriptor. - @param kw: Optional keywords governing overlay behavior. + @param fx: Color Overlay effect properties. """ - pass + d = ActionDescriptor() + d.PutEnumerated(sID("mode"), sID("blendMode"), sID("normal")) + apply_color(d, fx.get('color', rgb_black())) + d.PutUnitDouble(sID("opacity"), sID("percentUnit"), 100.000000) + action.PutObject(sID("solidFill"), sID("solidFill"), d) """ @@ -1204,18 +1199,17 @@ def replace_text(layer: ArtLayer, find: str, replace: str) -> None: app.activeDocument.activeLayer = layer # Find and replace - desc31 = ps.ActionDescriptor() - ref3 = ps.ActionReference() - desc32 = ps.ActionDescriptor() + desc31 = ActionDescriptor() + ref3 = ActionReference() + desc32 = ActionDescriptor() ref3.putProperty(sID("property"), sID("findReplace")) - ref3.putEnumerated(cID('TxLr'), cID('Ordn'), cID('Trgt')) + ref3.putEnumerated(sID('textLayer'), sID('ordinal'), sID('targetEnum')) desc31.putReference(sID("null"), ref3) desc32.putString(sID("find"), f"{find}") desc32.putString(sID("replace"), f"{replace}") - # if cfg.targeted_replace: app.bringToFront() desc32.putBoolean( sID("checkAll"), # Targeted replace doesn't work on old PS versions - False if cfg.targeted_replace and int(app.version[0:2]) > 22 else True + False if cfg.targeted_replace and ps_version_check(con.version_targeted_replace) else True ) desc32.putBoolean(sID("forward"), True) desc32.putBoolean(sID("caseSensitive"), True) @@ -1244,12 +1238,12 @@ def trim_transparent_pixels() -> None: """ Trim transparent pixels from Photoshop document. """ - desc258 = ps.ActionDescriptor() - desc258.PutEnumerated(sID("trimBasedOn"), sID("trimBasedOn"), sID("transparency")) - desc258.PutBoolean(sID("top"), True) - desc258.PutBoolean(sID("bottom"), True) - desc258.PutBoolean(sID("left"), True) - desc258.PutBoolean(sID("right"), True) + desc258 = ActionDescriptor() + desc258.putEnumerated(sID("trimBasedOn"), sID("trimBasedOn"), sID("transparency")) + desc258.putBoolean(sID("top"), True) + desc258.putBoolean(sID("bottom"), True) + desc258.putBoolean(sID("left"), True) + desc258.putBoolean(sID("right"), True) app.ExecuteAction(sID("trim"), desc258, NO_DIALOG) @@ -1259,13 +1253,13 @@ def run_action(action_set: str, action: str) -> None: @param action_set: Name of the group the action is in. @param action: Name of the action. """ - desc310 = ps.ActionDescriptor() - ref7 = ps.ActionReference() - desc310.PutBoolean(sID("dontRecord"), False) - desc310.PutBoolean(sID("forceNotify"), True) - ref7.PutName(sID("action"), action) - ref7.PutName(sID("actionSet"), action_set) - desc310.PutReference(sID("target"), ref7) + desc310 = ActionDescriptor() + ref7 = ActionReference() + desc310.putBoolean(sID("dontRecord"), False) + desc310.putBoolean(sID("forceNotify"), True) + ref7.putName(sID("action"), action) + ref7.putName(sID("actionSet"), action_set) + desc310.putReference(sID("target"), ref7) app.ExecuteAction(sID("play"), desc310, NO_DIALOG) @@ -1275,7 +1269,7 @@ def save_document_png(file_name: str, directory='out') -> None: @param file_name: Name of the output file. @param directory: Directory to save the file. """ - png_options = ps.PNGSaveOptions() + png_options = PNGSaveOptions() png_options.compression = 3 app.activeDocument.saveAs( file_path=os.path.join(con.cwd, f"{directory}/{file_name}.png"), @@ -1289,7 +1283,7 @@ def save_document_jpeg(file_name: str, directory='out') -> None: @param file_name: Name of the output file. @param directory: Directory to save the file. """ - jpeg_options = ps.JPEGSaveOptions(quality=12) + jpeg_options = JPEGSaveOptions(quality=12) jpeg_options.scans = 3 app.activeDocument.saveAs( file_path=os.path.join(con.cwd, f"{directory}/{file_name}.jpg"), @@ -1305,7 +1299,7 @@ def save_document_psd(file_name: str, directory='out') -> None: """ app.activeDocument.saveAs( file_path=os.path.join(con.cwd, f"{directory}/{file_name}.psd"), - options=ps.PhotoshopSaveOptions(), + options=PhotoshopSaveOptions(), asCopy=True ) @@ -1314,43 +1308,19 @@ def close_document() -> None: """ Close the document """ - app.activeDocument.close(ps.SaveOptions.DoNotSaveChanges) - - -def open_svg(path: str, max_width: int = 500, dpi: int = 1200) -> None: - """ - Opens a rasterized SVG file in Photoshop. - @param path: Path to the file - @param max_width: Max width, height will be proportional - @param dpi: Pixel density of the image - """ - desc227 = ps.ActionDescriptor() - desc228 = ps.ActionDescriptor() - desc227.PutBoolean(sID("dontRecord"), False) - desc227.PutBoolean(sID("forceNotify"), True) - desc227.PutPath(sID("target"), path) - desc228.PutUnitDouble(sID("width"), sID("pixelsUnit"), max_width) - desc228.PutUnitDouble(sID("resolution"), sID("densityUnit"), dpi) - desc228.PutEnumerated(sID("mode"), sID("colorSpace"), sID("RGBColor")) - desc228.PutBoolean(sID("antiAlias"), True) - desc228.PutBoolean(sID("constrainProportions"), True) - desc227.PutObject(sID("as"), sID("svgFormat"), desc228) - app.ExecuteAction(sID("open"), desc227, NO_DIALOG) + app.activeDocument.close(SaveOptions.DoNotSaveChanges) -def reset_document(filename: str) -> None: +def reset_document() -> None: """ Reset all changes to the current document. - @param filename: Document file name """ - if '/' in filename: - filename = filename.split('/')[-1] idslct = cID("slct") - desc9 = ps.ActionDescriptor() + desc9 = ActionDescriptor() idnull = cID("null") - ref1 = ps.ActionReference() + ref1 = ActionReference() idSnpS = cID("SnpS") - ref1.putName(idSnpS, filename) + ref1.putName(idSnpS, app.activeDocument.name) desc9.putReference(idnull, ref1) app.executeAction(idslct, desc9, NO_DIALOG) @@ -1372,11 +1342,11 @@ def content_fill_empty_area(layer: Optional[ArtLayer] = None) -> None: app.activeDocument.activeLayer = layer # Select pixels of active layer - desc307 = ps.ActionDescriptor() - ref257 = ps.ActionReference() + desc307 = ActionDescriptor() + ref257 = ActionReference() ref257.putProperty(cID("Chnl"), cID("fsel")) desc307.putReference(cID("null"), ref257) - ref258 = ps.ActionReference() + ref258 = ActionReference() idChnl = cID("Chnl") ref258.putEnumerated(idChnl, idChnl, cID("Trsp")) if layer: @@ -1387,7 +1357,7 @@ def content_fill_empty_area(layer: Optional[ArtLayer] = None) -> None: # Rasterize docRef = app.activeDocument active_layer = docRef.activeLayer - active_layer.rasterize(ps.RasterizeType.EntireLayer) + active_layer.rasterize(RasterizeType.EntireLayer) # Manipulate selection - invert, expand 8px, smooth 4px selection = docRef.selection @@ -1396,7 +1366,7 @@ def content_fill_empty_area(layer: Optional[ArtLayer] = None) -> None: selection.smooth(4) # Content aware fill - desc12 = ps.ActionDescriptor() + desc12 = ActionDescriptor() desc12.putEnumerated(cID("Usng"), cID("FlCn"), sID("contentAware")) desc12.putUnitDouble(cID("Opct"), cID("#Prc"), 100) desc12.putEnumerated(cID("Md "), cID("BlnM"), cID("Nrml")) @@ -1415,7 +1385,7 @@ def apply_vibrant_saturation(vibrancy: int, saturation: int) -> None: """ # dialogMode (Have dialog popup?) idvibrance = sID("vibrance") - desc232 = ps.ActionDescriptor() + desc232 = ActionDescriptor() desc232.putInteger(idvibrance, vibrancy) desc232.putInteger(cID("Strt"), saturation) app.executeAction(idvibrance, desc232, NO_DIALOG) @@ -1427,43 +1397,43 @@ def repair_edges(edge: int = 6) -> None: @param edge: How many pixels to select at the edge. """ # Select all - desc632724 = ps.ActionDescriptor() - ref489 = ps.ActionReference() - ref489.PutProperty(sID("channel"), sID("selection")) - desc632724.PutReference(sID("target"), ref489) - desc632724.PutEnumerated(sID("to"), sID("ordinal"), sID("allEnum")) + desc632724 = ActionDescriptor() + ref489 = ActionReference() + ref489.putProperty(sID("channel"), sID("selection")) + desc632724.putReference(sID("target"), ref489) + desc632724.putEnumerated(sID("to"), sID("ordinal"), sID("allEnum")) app.ExecuteAction(sID("set"), desc632724, NO_DIALOG) # Contract selection - contract = ps.ActionDescriptor() - contract.PutUnitDouble(sID("by"), sID("pixelsUnit"), edge) - contract.PutBoolean(sID("selectionModifyEffectAtCanvasBounds"), True) + contract = ActionDescriptor() + contract.putUnitDouble(sID("by"), sID("pixelsUnit"), edge) + contract.putBoolean(sID("selectionModifyEffectAtCanvasBounds"), True) app.ExecuteAction(sID("contract"), contract, NO_DIALOG) # Inverse the selection app.ExecuteAction(sID("inverse"), None, NO_DIALOG) # Content aware fill - desc_caf = ps.ActionDescriptor() - desc_caf.PutEnumerated( + desc_caf = ActionDescriptor() + desc_caf.putEnumerated( sID("cafSamplingRegion"), sID("cafSamplingRegion"), sID("cafSamplingRegionRectangular") ) - desc_caf.PutBoolean(sID("cafSampleAllLayers"), False) - desc_caf.PutEnumerated( + desc_caf.putBoolean(sID("cafSampleAllLayers"), False) + desc_caf.putEnumerated( sID("cafColorAdaptationLevel"), sID("cafColorAdaptationLevel"), sID("cafColorAdaptationDefault") ) - desc_caf.PutEnumerated( + desc_caf.putEnumerated( sID("cafRotationAmount"), sID("cafRotationAmount"), sID("cafRotationAmountNone") ) - desc_caf.PutBoolean(sID("cafScale"), False) - desc_caf.PutBoolean(sID("cafMirror"), False) - desc_caf.PutEnumerated( + desc_caf.putBoolean(sID("cafScale"), False) + desc_caf.putBoolean(sID("cafMirror"), False) + desc_caf.putEnumerated( sID("cafOutput"), sID("cafOutput"), sID("cafOutputToNewLayer") @@ -1495,18 +1465,18 @@ def insert_scryfall_scan(image_url: str) -> Optional[ArtLayer]: """ -def fill_expansion_symbol(reference: ArtLayer, color: ps.SolidColor = rgb_black()) -> ArtLayer: +def fill_expansion_symbol(reference: ArtLayer, color: SolidColor = rgb_black()) -> ArtLayer: """ Give the symbol a background for open space symbols (i.e. M10) @param reference: Reference layer to put the new fill layer underneath @param color: Color of the background fill """ # Magic Wand contiguous outside symbol - coords = ps.ActionDescriptor() + coords = ActionDescriptor() coords.putUnitDouble(cID("Hrzn"), cID("#Pxl"), 5) coords.putUnitDouble(cID("Vrtc"), cID("#Pxl"), 5) - click1 = ps.ActionDescriptor() - ref1 = ps.ActionReference() + click1 = ActionDescriptor() + ref1 = ActionReference() ref1.putProperty(cID("Chnl"), cID("fsel")) click1.putReference(cID("null"), ref1) click1.putObject(cID("T "), cID("Pnt "), coords) @@ -1521,12 +1491,12 @@ def fill_expansion_symbol(reference: ArtLayer, color: ps.SolidColor = rgb_black( # Make a new layer layer = app.activeDocument.artLayers.add() layer.name = "Expansion Mask" - layer.blendMode = ps.BlendMode.NormalBlend + layer.blendMode = BlendMode.NormalBlend layer.moveAfter(reference) # Fill selection with stroke color app.foregroundColor = color - click3 = ps.ActionDescriptor() + click3 = ActionDescriptor() click3.putObject(cID("From"), cID("Pnt "), coords) click3.putInteger(cID("Tlrn"), 0) click3.putEnumerated(cID("Usng"), cID("FlCn"), cID("FrgC")) @@ -1559,11 +1529,6 @@ def process_expansion_symbol_info(symbol: Union[str, list], rarity: str) -> Opti cfg.symbol_stroke ]) } - if cfg.fill_symbol: - # Background fill action - symbol['fill'] = get_color( - 'white' if rarity == con.rarity_common else 'black' - ) if rarity != con.rarity_common: # Gradient overlay action symbol['rarity'] = True @@ -1612,16 +1577,14 @@ def format_expansion_symbol_dict(sym: dict, rarity: str) -> dict: if sym.get('fill'): # Background fill definition - Optional symbol['fill'] = format_symbol_fx_fill(sym['fill'], rarity) if sym['fill'] != 'rarity' else 'rarity' - if sym.get('rarity', True) or sym.get('fill') == 'rarity': + if sym.get('rarity', True) or symbol.get('fill') == 'rarity': # Generate gradient FX by default - gradient = format_symbol_fx_gradient( + symbol['gradient'] = format_symbol_fx_gradient( rarity, sym.get('gradient') ) - if gradient: - # Add only if its needed - symbol['gradient'] = gradient - symbol['rarity'] = sym.get('rarity', True) + # Only enable if rarity fill not enabled + symbol['rarity'] = sym.get('rarity', bool(symbol.get('fill') != 'rarity')) return symbol # Common only attributes @@ -1639,51 +1602,60 @@ def format_expansion_symbol_dict(sym: dict, rarity: str) -> dict: return symbol -def format_symbol_fx_fill(fx: Union[str, list, dict], rarity: str) -> SolidColor: +def format_symbol_fx_fill(fx: Union[str, list, dict], rarity: str) -> Optional[SolidColor]: """ Format background fill effect info. @param fx: Background fill details. @param rarity: Card rarity. @return: Formatted background fill details. """ + # Dict typically provides a color for each rarity if isinstance(fx, dict): + # Grab color according to rarity if rarity[0] in fx: return get_color(fx[rarity[0]]) + # Rarity not found, take the first one return get_color(list(fx.values())[0]) - return get_color(fx) + # List notation or named color + if isinstance(fx, list) or isinstance(fx, str): + return get_color(fx) + return -def format_symbol_fx_stroke(fx: Union[bool, list, dict]) -> Optional[dict]: +def format_symbol_fx_stroke(fx: Union[bool, list, dict]) -> Optional[EffectStroke]: """ Produces a correct dictionary for layer effects type: stroke. @param fx: The stroke definition we were given by the user. @return: Formatted stroke definition for this effect. """ + # Layer effects details notation if isinstance(fx, dict): return { 'type': 'stroke', - 'weight': fx.get('weight') or fx.get('size', cfg.symbol_stroke), + 'weight': int(fx.get('weight') or fx.get('size', cfg.symbol_stroke)), 'color': get_color(fx.get('color', [0, 0, 0])), - 'opacity': fx.get('opacity', 100), + 'opacity': int(fx.get('opacity', 100)), 'style': fx.get('style', 'out') } + # Simple [color, weight] notation if isinstance(fx, list): return { 'type': 'stroke', - 'weight': fx[1], - 'color': get_color(con.colors[fx[0]]), - 'opacity': 100, + 'weight': int(fx[1]), + 'color': get_color(fx[0]), + 'opacity': int(100), 'style': 'out' } return -def format_symbol_fx_drop_shadow(fx: Union[bool, dict]) -> Optional[dict]: +def format_symbol_fx_drop_shadow(fx: Union[bool, dict]) -> Optional[EffectDropShadow]: """ Produces a correct dictionary for layer effects type: drop-shadow. @param fx: The drop shadow definition we were given by the user. @return: Formatted drop shadow definition for this effect. """ + # Simple toggle if isinstance(fx, bool) and fx: return { 'type': 'drop-shadow', @@ -1693,19 +1665,22 @@ def format_symbol_fx_drop_shadow(fx: Union[bool, dict]) -> Optional[dict]: 'spread': 0, 'size': 0, } + # Layer effects details notation if isinstance(fx, dict): return { 'type': 'drop-shadow', - 'opacity': fx.get('opacity', 100), - 'rotation': fx.get('rotation', 45), - 'distance': fx.get('distance', 10), - 'spread': fx.get('spread', 0), - 'size': fx.get('size', 0), + 'opacity': int(fx.get('opacity', 100)), + 'rotation': int(fx.get('rotation', 45)), + 'distance': int(fx.get('distance', 10)), + 'spread': int(fx.get('spread', 0)), + 'size': int(fx.get('size', 0)), } return -def format_symbol_fx_gradient(rarity: str, gradient: Optional[dict] = None) -> Optional[dict]: +def format_symbol_fx_gradient( + rarity: str, gradient: Optional[dict] = None +) -> Optional[EffectGradientOverlay]: """ Produces a correct dictionary for layer effects type: gradient overlay. @param rarity: The rarity of this symbol. @@ -1751,7 +1726,7 @@ def format_symbol_fx_gradient(rarity: str, gradient: Optional[dict] = None) -> O color_map.update(rarities) # Return None if no colors given - gradient_colors = color_map[rarity[0]] + gradient_colors = color_map.get(rarity[0]) if not gradient_colors: return @@ -1761,9 +1736,10 @@ def format_symbol_fx_gradient(rarity: str, gradient: Optional[dict] = None) -> O # Create new definition return { - 'type': 'gradient', + 'type': 'gradient-overlay', 'size': gradient.get('size', 4096), 'scale': gradient.get('scale', 70), 'rotation': gradient.get('rotation', 45), + 'opacity': gradient.get('opacity', 100), 'colors': gradient_colors } diff --git a/proxyshop/img/AdventureTemplate.jpg b/src/img/AdventureTemplate.jpg similarity index 100% rename from proxyshop/img/AdventureTemplate.jpg rename to src/img/AdventureTemplate.jpg diff --git a/proxyshop/img/BasicLandClassicTemplate.jpg b/src/img/BasicLandClassicTemplate.jpg similarity index 100% rename from proxyshop/img/BasicLandClassicTemplate.jpg rename to src/img/BasicLandClassicTemplate.jpg diff --git a/proxyshop/img/BasicLandTemplate.jpg b/src/img/BasicLandTemplate.jpg similarity index 100% rename from proxyshop/img/BasicLandTemplate.jpg rename to src/img/BasicLandTemplate.jpg diff --git a/proxyshop/img/BasicLandTherosTemplate.jpg b/src/img/BasicLandTherosTemplate.jpg similarity index 100% rename from proxyshop/img/BasicLandTherosTemplate.jpg rename to src/img/BasicLandTherosTemplate.jpg diff --git a/proxyshop/img/BasicLandUnstableTemplate.jpg b/src/img/BasicLandUnstableTemplate.jpg similarity index 100% rename from proxyshop/img/BasicLandUnstableTemplate.jpg rename to src/img/BasicLandUnstableTemplate.jpg diff --git a/proxyshop/img/ExpeditionTemplate.jpg b/src/img/ExpeditionTemplate.jpg similarity index 100% rename from proxyshop/img/ExpeditionTemplate.jpg rename to src/img/ExpeditionTemplate.jpg diff --git a/proxyshop/img/InventionTemplate.jpg b/src/img/InventionTemplate.jpg similarity index 100% rename from proxyshop/img/InventionTemplate.jpg rename to src/img/InventionTemplate.jpg diff --git a/proxyshop/img/IxalanTemplate.jpg b/src/img/IxalanTemplate.jpg similarity index 100% rename from proxyshop/img/IxalanTemplate.jpg rename to src/img/IxalanTemplate.jpg diff --git a/proxyshop/img/LevelerTemplate.jpg b/src/img/LevelerTemplate.jpg similarity index 100% rename from proxyshop/img/LevelerTemplate.jpg rename to src/img/LevelerTemplate.jpg diff --git a/proxyshop/img/MDFCFrontTemplate.jpg b/src/img/MDFCFrontTemplate.jpg similarity index 100% rename from proxyshop/img/MDFCFrontTemplate.jpg rename to src/img/MDFCFrontTemplate.jpg diff --git a/proxyshop/img/MiracleTemplate.jpg b/src/img/MiracleTemplate.jpg similarity index 100% rename from proxyshop/img/MiracleTemplate.jpg rename to src/img/MiracleTemplate.jpg diff --git a/proxyshop/img/MutateTemplate.jpg b/src/img/MutateTemplate.jpg similarity index 100% rename from proxyshop/img/MutateTemplate.jpg rename to src/img/MutateTemplate.jpg diff --git a/proxyshop/img/NormalClassicTemplate.jpg b/src/img/NormalClassicTemplate.jpg similarity index 100% rename from proxyshop/img/NormalClassicTemplate.jpg rename to src/img/NormalClassicTemplate.jpg diff --git a/proxyshop/img/NormalExtendedTemplate.jpg b/src/img/NormalExtendedTemplate.jpg similarity index 100% rename from proxyshop/img/NormalExtendedTemplate.jpg rename to src/img/NormalExtendedTemplate.jpg diff --git a/proxyshop/img/NormalFullartTemplate.jpg b/src/img/NormalFullartTemplate.jpg similarity index 100% rename from proxyshop/img/NormalFullartTemplate.jpg rename to src/img/NormalFullartTemplate.jpg diff --git a/proxyshop/img/NormalTemplate.jpg b/src/img/NormalTemplate.jpg similarity index 100% rename from proxyshop/img/NormalTemplate.jpg rename to src/img/NormalTemplate.jpg diff --git a/proxyshop/img/NotFound.jpg b/src/img/NotFound.jpg similarity index 100% rename from proxyshop/img/NotFound.jpg rename to src/img/NotFound.jpg diff --git a/proxyshop/img/Overlay.png b/src/img/Overlay.png similarity index 100% rename from proxyshop/img/Overlay.png rename to src/img/Overlay.png diff --git a/proxyshop/img/PlaneswalkerExtendedTemplate.jpg b/src/img/PlaneswalkerExtendedTemplate.jpg similarity index 100% rename from proxyshop/img/PlaneswalkerExtendedTemplate.jpg rename to src/img/PlaneswalkerExtendedTemplate.jpg diff --git a/proxyshop/img/PlaneswalkerMDFCFrontExtendedTemplate.jpg b/src/img/PlaneswalkerMDFCFrontExtendedTemplate.jpg similarity index 100% rename from proxyshop/img/PlaneswalkerMDFCFrontExtendedTemplate.jpg rename to src/img/PlaneswalkerMDFCFrontExtendedTemplate.jpg diff --git a/proxyshop/img/PlaneswalkerMDFCFrontTemplate.jpg b/src/img/PlaneswalkerMDFCFrontTemplate.jpg similarity index 100% rename from proxyshop/img/PlaneswalkerMDFCFrontTemplate.jpg rename to src/img/PlaneswalkerMDFCFrontTemplate.jpg diff --git a/proxyshop/img/PlaneswalkerTemplate.jpg b/src/img/PlaneswalkerTemplate.jpg similarity index 100% rename from proxyshop/img/PlaneswalkerTemplate.jpg rename to src/img/PlaneswalkerTemplate.jpg diff --git a/proxyshop/img/PlaneswalkerTransformFrontExtendedTemplate.jpg b/src/img/PlaneswalkerTransformFrontExtendedTemplate.jpg similarity index 100% rename from proxyshop/img/PlaneswalkerTransformFrontExtendedTemplate.jpg rename to src/img/PlaneswalkerTransformFrontExtendedTemplate.jpg diff --git a/proxyshop/img/PlaneswalkerTransformFrontTemplate.jpg b/src/img/PlaneswalkerTransformFrontTemplate.jpg similarity index 100% rename from proxyshop/img/PlaneswalkerTransformFrontTemplate.jpg rename to src/img/PlaneswalkerTransformFrontTemplate.jpg diff --git a/proxyshop/img/PrototypeTemplate.jpg b/src/img/PrototypeTemplate.jpg similarity index 100% rename from proxyshop/img/PrototypeTemplate.jpg rename to src/img/PrototypeTemplate.jpg diff --git a/proxyshop/img/SagaTemplate.jpg b/src/img/SagaTemplate.jpg similarity index 100% rename from proxyshop/img/SagaTemplate.jpg rename to src/img/SagaTemplate.jpg diff --git a/proxyshop/img/SnowTemplate.jpg b/src/img/SnowTemplate.jpg similarity index 100% rename from proxyshop/img/SnowTemplate.jpg rename to src/img/SnowTemplate.jpg diff --git a/proxyshop/img/StargazingTemplate.jpg b/src/img/StargazingTemplate.jpg similarity index 100% rename from proxyshop/img/StargazingTemplate.jpg rename to src/img/StargazingTemplate.jpg diff --git a/proxyshop/img/TransformFrontTemplate.jpg b/src/img/TransformFrontTemplate.jpg similarity index 100% rename from proxyshop/img/TransformFrontTemplate.jpg rename to src/img/TransformFrontTemplate.jpg diff --git a/src/img/UniversesBeyondTemplate.jpg b/src/img/UniversesBeyondTemplate.jpg new file mode 100644 index 00000000..c273406f Binary files /dev/null and b/src/img/UniversesBeyondTemplate.jpg differ diff --git a/proxyshop/img/WomensDayTemplate.jpg b/src/img/WomensDayTemplate.jpg similarity index 100% rename from proxyshop/img/WomensDayTemplate.jpg rename to src/img/WomensDayTemplate.jpg diff --git a/proxyshop/img/config.png b/src/img/config.png similarity index 100% rename from proxyshop/img/config.png rename to src/img/config.png diff --git a/proxyshop/img/favicon.ico b/src/img/favicon.ico similarity index 100% rename from proxyshop/img/favicon.ico rename to src/img/favicon.ico diff --git a/proxyshop/img/loading.gif b/src/img/loading.gif similarity index 100% rename from proxyshop/img/loading.gif rename to src/img/loading.gif diff --git a/proxyshop/img/proxyshop.png b/src/img/proxyshop.png similarity index 100% rename from proxyshop/img/proxyshop.png rename to src/img/proxyshop.png diff --git a/src/img/symbols/10E/80.svg b/src/img/symbols/10E/80.svg new file mode 100644 index 00000000..c1dca385 --- /dev/null +++ b/src/img/symbols/10E/80.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/10E/C.svg b/src/img/symbols/10E/C.svg new file mode 100644 index 00000000..df60fec8 --- /dev/null +++ b/src/img/symbols/10E/C.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/img/symbols/10E/M.svg b/src/img/symbols/10E/M.svg new file mode 100644 index 00000000..54fc61df --- /dev/null +++ b/src/img/symbols/10E/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/10E/R.svg b/src/img/symbols/10E/R.svg new file mode 100644 index 00000000..128259b4 --- /dev/null +++ b/src/img/symbols/10E/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/10E/T.svg b/src/img/symbols/10E/T.svg new file mode 100644 index 00000000..87be67ea --- /dev/null +++ b/src/img/symbols/10E/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/10E/U.svg b/src/img/symbols/10E/U.svg new file mode 100644 index 00000000..be460345 --- /dev/null +++ b/src/img/symbols/10E/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/10E/WM.svg b/src/img/symbols/10E/WM.svg new file mode 100644 index 00000000..1cf58d44 --- /dev/null +++ b/src/img/symbols/10E/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/2ED/80.svg b/src/img/symbols/2ED/80.svg new file mode 100644 index 00000000..93653943 --- /dev/null +++ b/src/img/symbols/2ED/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/2ED/C.svg b/src/img/symbols/2ED/C.svg new file mode 100644 index 00000000..7156e25a --- /dev/null +++ b/src/img/symbols/2ED/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/2ED/M.svg b/src/img/symbols/2ED/M.svg new file mode 100644 index 00000000..60d4adae --- /dev/null +++ b/src/img/symbols/2ED/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED/R.svg b/src/img/symbols/2ED/R.svg new file mode 100644 index 00000000..d849c31a --- /dev/null +++ b/src/img/symbols/2ED/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED/T.svg b/src/img/symbols/2ED/T.svg new file mode 100644 index 00000000..f050550d --- /dev/null +++ b/src/img/symbols/2ED/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED/U.svg b/src/img/symbols/2ED/U.svg new file mode 100644 index 00000000..0df331d1 --- /dev/null +++ b/src/img/symbols/2ED/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED/WM.svg b/src/img/symbols/2ED/WM.svg new file mode 100644 index 00000000..6bb03ae7 --- /dev/null +++ b/src/img/symbols/2ED/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/2ED_ALT/80.svg b/src/img/symbols/2ED_ALT/80.svg new file mode 100644 index 00000000..1971b4cd --- /dev/null +++ b/src/img/symbols/2ED_ALT/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/2ED_ALT/C.svg b/src/img/symbols/2ED_ALT/C.svg new file mode 100644 index 00000000..a0137015 --- /dev/null +++ b/src/img/symbols/2ED_ALT/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/2ED_ALT/M.svg b/src/img/symbols/2ED_ALT/M.svg new file mode 100644 index 00000000..bcffef55 --- /dev/null +++ b/src/img/symbols/2ED_ALT/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT/R.svg b/src/img/symbols/2ED_ALT/R.svg new file mode 100644 index 00000000..decbc72b --- /dev/null +++ b/src/img/symbols/2ED_ALT/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT/T.svg b/src/img/symbols/2ED_ALT/T.svg new file mode 100644 index 00000000..1706b0c1 --- /dev/null +++ b/src/img/symbols/2ED_ALT/T.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT/U.svg b/src/img/symbols/2ED_ALT/U.svg new file mode 100644 index 00000000..4efd25ff --- /dev/null +++ b/src/img/symbols/2ED_ALT/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT/WM.svg b/src/img/symbols/2ED_ALT/WM.svg new file mode 100644 index 00000000..d12a057c --- /dev/null +++ b/src/img/symbols/2ED_ALT/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/2ED_ALT2/80.svg b/src/img/symbols/2ED_ALT2/80.svg new file mode 100644 index 00000000..16d1c031 --- /dev/null +++ b/src/img/symbols/2ED_ALT2/80.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT2/C.svg b/src/img/symbols/2ED_ALT2/C.svg new file mode 100644 index 00000000..5b16f828 --- /dev/null +++ b/src/img/symbols/2ED_ALT2/C.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT2/M.svg b/src/img/symbols/2ED_ALT2/M.svg new file mode 100644 index 00000000..f661651b --- /dev/null +++ b/src/img/symbols/2ED_ALT2/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT2/R.svg b/src/img/symbols/2ED_ALT2/R.svg new file mode 100644 index 00000000..f65a4334 --- /dev/null +++ b/src/img/symbols/2ED_ALT2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT2/T.svg b/src/img/symbols/2ED_ALT2/T.svg new file mode 100644 index 00000000..e951ae2b --- /dev/null +++ b/src/img/symbols/2ED_ALT2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT2/U.svg b/src/img/symbols/2ED_ALT2/U.svg new file mode 100644 index 00000000..53bf5a4a --- /dev/null +++ b/src/img/symbols/2ED_ALT2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/2ED_ALT2/WM.svg b/src/img/symbols/2ED_ALT2/WM.svg new file mode 100644 index 00000000..b7305354 --- /dev/null +++ b/src/img/symbols/2ED_ALT2/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/2X2/80.svg b/src/img/symbols/2X2/80.svg new file mode 100644 index 00000000..3dbd8da1 --- /dev/null +++ b/src/img/symbols/2X2/80.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/2X2/C.svg b/src/img/symbols/2X2/C.svg new file mode 100644 index 00000000..4f1c36a2 --- /dev/null +++ b/src/img/symbols/2X2/C.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/2X2/M.svg b/src/img/symbols/2X2/M.svg new file mode 100644 index 00000000..fb2a4e28 --- /dev/null +++ b/src/img/symbols/2X2/M.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2X2/R.svg b/src/img/symbols/2X2/R.svg new file mode 100644 index 00000000..7e223ee1 --- /dev/null +++ b/src/img/symbols/2X2/R.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2X2/T.svg b/src/img/symbols/2X2/T.svg new file mode 100644 index 00000000..258d8b6a --- /dev/null +++ b/src/img/symbols/2X2/T.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2X2/U.svg b/src/img/symbols/2X2/U.svg new file mode 100644 index 00000000..2ab833f9 --- /dev/null +++ b/src/img/symbols/2X2/U.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/2X2/WM.svg b/src/img/symbols/2X2/WM.svg new file mode 100644 index 00000000..419da503 --- /dev/null +++ b/src/img/symbols/2X2/WM.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/src/img/symbols/2XM/80.svg b/src/img/symbols/2XM/80.svg new file mode 100644 index 00000000..a3a41d73 --- /dev/null +++ b/src/img/symbols/2XM/80.svg @@ -0,0 +1,65 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/2XM/C.svg b/src/img/symbols/2XM/C.svg new file mode 100644 index 00000000..59952277 --- /dev/null +++ b/src/img/symbols/2XM/C.svg @@ -0,0 +1,65 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/2XM/M.svg b/src/img/symbols/2XM/M.svg new file mode 100644 index 00000000..3e107ad3 --- /dev/null +++ b/src/img/symbols/2XM/M.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/2XM/R.svg b/src/img/symbols/2XM/R.svg new file mode 100644 index 00000000..5fcd70c8 --- /dev/null +++ b/src/img/symbols/2XM/R.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/2XM/T.svg b/src/img/symbols/2XM/T.svg new file mode 100644 index 00000000..24c830be --- /dev/null +++ b/src/img/symbols/2XM/T.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/2XM/U.svg b/src/img/symbols/2XM/U.svg new file mode 100644 index 00000000..e893f98f --- /dev/null +++ b/src/img/symbols/2XM/U.svg @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/3ED/80.svg b/src/img/symbols/3ED/80.svg new file mode 100644 index 00000000..5dc26468 --- /dev/null +++ b/src/img/symbols/3ED/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/3ED/C.svg b/src/img/symbols/3ED/C.svg new file mode 100644 index 00000000..0a195e40 --- /dev/null +++ b/src/img/symbols/3ED/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/3ED/M.svg b/src/img/symbols/3ED/M.svg new file mode 100644 index 00000000..7f67a994 --- /dev/null +++ b/src/img/symbols/3ED/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED/R.svg b/src/img/symbols/3ED/R.svg new file mode 100644 index 00000000..399e2864 --- /dev/null +++ b/src/img/symbols/3ED/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED/T.svg b/src/img/symbols/3ED/T.svg new file mode 100644 index 00000000..b033a375 --- /dev/null +++ b/src/img/symbols/3ED/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED/U.svg b/src/img/symbols/3ED/U.svg new file mode 100644 index 00000000..c3a62024 --- /dev/null +++ b/src/img/symbols/3ED/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED/WM.svg b/src/img/symbols/3ED/WM.svg new file mode 100644 index 00000000..a630272b --- /dev/null +++ b/src/img/symbols/3ED/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/3ED_ALT/80.svg b/src/img/symbols/3ED_ALT/80.svg new file mode 100644 index 00000000..0931a962 --- /dev/null +++ b/src/img/symbols/3ED_ALT/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/3ED_ALT/C.svg b/src/img/symbols/3ED_ALT/C.svg new file mode 100644 index 00000000..467dfd33 --- /dev/null +++ b/src/img/symbols/3ED_ALT/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/3ED_ALT/M.svg b/src/img/symbols/3ED_ALT/M.svg new file mode 100644 index 00000000..97fec57d --- /dev/null +++ b/src/img/symbols/3ED_ALT/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT/R.svg b/src/img/symbols/3ED_ALT/R.svg new file mode 100644 index 00000000..406bb040 --- /dev/null +++ b/src/img/symbols/3ED_ALT/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT/T.svg b/src/img/symbols/3ED_ALT/T.svg new file mode 100644 index 00000000..cf9e8a6c --- /dev/null +++ b/src/img/symbols/3ED_ALT/T.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT/U.svg b/src/img/symbols/3ED_ALT/U.svg new file mode 100644 index 00000000..512ba413 --- /dev/null +++ b/src/img/symbols/3ED_ALT/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT/WM.svg b/src/img/symbols/3ED_ALT/WM.svg new file mode 100644 index 00000000..d9f66b99 --- /dev/null +++ b/src/img/symbols/3ED_ALT/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/3ED_ALT2/80.svg b/src/img/symbols/3ED_ALT2/80.svg new file mode 100644 index 00000000..cb20e5dc --- /dev/null +++ b/src/img/symbols/3ED_ALT2/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/3ED_ALT2/C.svg b/src/img/symbols/3ED_ALT2/C.svg new file mode 100644 index 00000000..d60f5964 --- /dev/null +++ b/src/img/symbols/3ED_ALT2/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/3ED_ALT2/M.svg b/src/img/symbols/3ED_ALT2/M.svg new file mode 100644 index 00000000..7b119bf2 --- /dev/null +++ b/src/img/symbols/3ED_ALT2/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT2/R.svg b/src/img/symbols/3ED_ALT2/R.svg new file mode 100644 index 00000000..83d89044 --- /dev/null +++ b/src/img/symbols/3ED_ALT2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT2/T.svg b/src/img/symbols/3ED_ALT2/T.svg new file mode 100644 index 00000000..338bd5c3 --- /dev/null +++ b/src/img/symbols/3ED_ALT2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT2/U.svg b/src/img/symbols/3ED_ALT2/U.svg new file mode 100644 index 00000000..b534d9a9 --- /dev/null +++ b/src/img/symbols/3ED_ALT2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/3ED_ALT2/WM.svg b/src/img/symbols/3ED_ALT2/WM.svg new file mode 100644 index 00000000..c2eb1780 --- /dev/null +++ b/src/img/symbols/3ED_ALT2/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/40K/80.svg b/src/img/symbols/40K/80.svg new file mode 100644 index 00000000..d823ec88 --- /dev/null +++ b/src/img/symbols/40K/80.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/40K/C.svg b/src/img/symbols/40K/C.svg new file mode 100644 index 00000000..bb7747ea --- /dev/null +++ b/src/img/symbols/40K/C.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/40K/M.svg b/src/img/symbols/40K/M.svg new file mode 100644 index 00000000..7c293e1b --- /dev/null +++ b/src/img/symbols/40K/M.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/40K/R.svg b/src/img/symbols/40K/R.svg new file mode 100644 index 00000000..99e27ca9 --- /dev/null +++ b/src/img/symbols/40K/R.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/40K/T.svg b/src/img/symbols/40K/T.svg new file mode 100644 index 00000000..3e94d7cd --- /dev/null +++ b/src/img/symbols/40K/T.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/40K/U.svg b/src/img/symbols/40K/U.svg new file mode 100644 index 00000000..abb558e1 --- /dev/null +++ b/src/img/symbols/40K/U.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/40K/WM.svg b/src/img/symbols/40K/WM.svg new file mode 100644 index 00000000..5c807671 --- /dev/null +++ b/src/img/symbols/40K/WM.svg @@ -0,0 +1,33 @@ + + + + + + + + + + diff --git a/src/img/symbols/4ED/80.svg b/src/img/symbols/4ED/80.svg new file mode 100644 index 00000000..8e91ade7 --- /dev/null +++ b/src/img/symbols/4ED/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/4ED/C.svg b/src/img/symbols/4ED/C.svg new file mode 100644 index 00000000..accae786 --- /dev/null +++ b/src/img/symbols/4ED/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/4ED/M.svg b/src/img/symbols/4ED/M.svg new file mode 100644 index 00000000..5e8115e9 --- /dev/null +++ b/src/img/symbols/4ED/M.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/4ED/R.svg b/src/img/symbols/4ED/R.svg new file mode 100644 index 00000000..e330bc34 --- /dev/null +++ b/src/img/symbols/4ED/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/4ED/T.svg b/src/img/symbols/4ED/T.svg new file mode 100644 index 00000000..95214d1f --- /dev/null +++ b/src/img/symbols/4ED/T.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/4ED/U.svg b/src/img/symbols/4ED/U.svg new file mode 100644 index 00000000..b05249de --- /dev/null +++ b/src/img/symbols/4ED/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/4ED/WM.svg b/src/img/symbols/4ED/WM.svg new file mode 100644 index 00000000..24019051 --- /dev/null +++ b/src/img/symbols/4ED/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/4ED_ALT/80.svg b/src/img/symbols/4ED_ALT/80.svg new file mode 100644 index 00000000..d991d2cf --- /dev/null +++ b/src/img/symbols/4ED_ALT/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/4ED_ALT/C.svg b/src/img/symbols/4ED_ALT/C.svg new file mode 100644 index 00000000..6e932897 --- /dev/null +++ b/src/img/symbols/4ED_ALT/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/4ED_ALT/M.svg b/src/img/symbols/4ED_ALT/M.svg new file mode 100644 index 00000000..e621d771 --- /dev/null +++ b/src/img/symbols/4ED_ALT/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT/R.svg b/src/img/symbols/4ED_ALT/R.svg new file mode 100644 index 00000000..baa2f3bc --- /dev/null +++ b/src/img/symbols/4ED_ALT/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT/T.svg b/src/img/symbols/4ED_ALT/T.svg new file mode 100644 index 00000000..8c051d7f --- /dev/null +++ b/src/img/symbols/4ED_ALT/T.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT/U.svg b/src/img/symbols/4ED_ALT/U.svg new file mode 100644 index 00000000..04149091 --- /dev/null +++ b/src/img/symbols/4ED_ALT/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT/WM.svg b/src/img/symbols/4ED_ALT/WM.svg new file mode 100644 index 00000000..8db162fc --- /dev/null +++ b/src/img/symbols/4ED_ALT/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/4ED_ALT2/80.svg b/src/img/symbols/4ED_ALT2/80.svg new file mode 100644 index 00000000..4e740a7b --- /dev/null +++ b/src/img/symbols/4ED_ALT2/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/4ED_ALT2/C.svg b/src/img/symbols/4ED_ALT2/C.svg new file mode 100644 index 00000000..a822550b --- /dev/null +++ b/src/img/symbols/4ED_ALT2/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/4ED_ALT2/M.svg b/src/img/symbols/4ED_ALT2/M.svg new file mode 100644 index 00000000..aee3f3c6 --- /dev/null +++ b/src/img/symbols/4ED_ALT2/M.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT2/R.svg b/src/img/symbols/4ED_ALT2/R.svg new file mode 100644 index 00000000..4c72e756 --- /dev/null +++ b/src/img/symbols/4ED_ALT2/R.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT2/T.svg b/src/img/symbols/4ED_ALT2/T.svg new file mode 100644 index 00000000..a11eac6b --- /dev/null +++ b/src/img/symbols/4ED_ALT2/T.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT2/U.svg b/src/img/symbols/4ED_ALT2/U.svg new file mode 100644 index 00000000..c1acb5f7 --- /dev/null +++ b/src/img/symbols/4ED_ALT2/U.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/4ED_ALT2/WM.svg b/src/img/symbols/4ED_ALT2/WM.svg new file mode 100644 index 00000000..cf4ebe50 --- /dev/null +++ b/src/img/symbols/4ED_ALT2/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/5DN/80.svg b/src/img/symbols/5DN/80.svg new file mode 100644 index 00000000..68c4d3c8 --- /dev/null +++ b/src/img/symbols/5DN/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/5DN/C.svg b/src/img/symbols/5DN/C.svg new file mode 100644 index 00000000..d4e2bc37 --- /dev/null +++ b/src/img/symbols/5DN/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/5DN/M.svg b/src/img/symbols/5DN/M.svg new file mode 100644 index 00000000..5069c54c --- /dev/null +++ b/src/img/symbols/5DN/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/5DN/R.svg b/src/img/symbols/5DN/R.svg new file mode 100644 index 00000000..ac954d9b --- /dev/null +++ b/src/img/symbols/5DN/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/5DN/T.svg b/src/img/symbols/5DN/T.svg new file mode 100644 index 00000000..0792251d --- /dev/null +++ b/src/img/symbols/5DN/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/5DN/U.svg b/src/img/symbols/5DN/U.svg new file mode 100644 index 00000000..b76e3e1c --- /dev/null +++ b/src/img/symbols/5DN/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/5DN/WM.svg b/src/img/symbols/5DN/WM.svg new file mode 100644 index 00000000..8e2c156a --- /dev/null +++ b/src/img/symbols/5DN/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/5ED/80.svg b/src/img/symbols/5ED/80.svg new file mode 100644 index 00000000..9329f424 --- /dev/null +++ b/src/img/symbols/5ED/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/5ED/C.svg b/src/img/symbols/5ED/C.svg new file mode 100644 index 00000000..b9df81fe --- /dev/null +++ b/src/img/symbols/5ED/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/5ED/M.svg b/src/img/symbols/5ED/M.svg new file mode 100644 index 00000000..ab990296 --- /dev/null +++ b/src/img/symbols/5ED/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/5ED/R.svg b/src/img/symbols/5ED/R.svg new file mode 100644 index 00000000..bee1f463 --- /dev/null +++ b/src/img/symbols/5ED/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/5ED/T.svg b/src/img/symbols/5ED/T.svg new file mode 100644 index 00000000..73bba7e0 --- /dev/null +++ b/src/img/symbols/5ED/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/5ED/U.svg b/src/img/symbols/5ED/U.svg new file mode 100644 index 00000000..efa7161b --- /dev/null +++ b/src/img/symbols/5ED/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/5ED/WM.svg b/src/img/symbols/5ED/WM.svg new file mode 100644 index 00000000..c8fa2a9d --- /dev/null +++ b/src/img/symbols/5ED/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/6ED/80.svg b/src/img/symbols/6ED/80.svg new file mode 100644 index 00000000..82d6b2ca --- /dev/null +++ b/src/img/symbols/6ED/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/6ED/C.svg b/src/img/symbols/6ED/C.svg new file mode 100644 index 00000000..571404e0 --- /dev/null +++ b/src/img/symbols/6ED/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/6ED/M.svg b/src/img/symbols/6ED/M.svg new file mode 100644 index 00000000..1e3c7396 --- /dev/null +++ b/src/img/symbols/6ED/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/6ED/R.svg b/src/img/symbols/6ED/R.svg new file mode 100644 index 00000000..969b8c64 --- /dev/null +++ b/src/img/symbols/6ED/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/6ED/T.svg b/src/img/symbols/6ED/T.svg new file mode 100644 index 00000000..b6160e93 --- /dev/null +++ b/src/img/symbols/6ED/T.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/6ED/U.svg b/src/img/symbols/6ED/U.svg new file mode 100644 index 00000000..f31fc20a --- /dev/null +++ b/src/img/symbols/6ED/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/6ED/WM.svg b/src/img/symbols/6ED/WM.svg new file mode 100644 index 00000000..4a02eee0 --- /dev/null +++ b/src/img/symbols/6ED/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/7ED/80.svg b/src/img/symbols/7ED/80.svg new file mode 100644 index 00000000..89f1c3aa --- /dev/null +++ b/src/img/symbols/7ED/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/7ED/C.svg b/src/img/symbols/7ED/C.svg new file mode 100644 index 00000000..89e1b21f --- /dev/null +++ b/src/img/symbols/7ED/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/7ED/M.svg b/src/img/symbols/7ED/M.svg new file mode 100644 index 00000000..2a90ed93 --- /dev/null +++ b/src/img/symbols/7ED/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/7ED/R.svg b/src/img/symbols/7ED/R.svg new file mode 100644 index 00000000..d1fa65cc --- /dev/null +++ b/src/img/symbols/7ED/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/7ED/T.svg b/src/img/symbols/7ED/T.svg new file mode 100644 index 00000000..0d0c3d3f --- /dev/null +++ b/src/img/symbols/7ED/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/7ED/U.svg b/src/img/symbols/7ED/U.svg new file mode 100644 index 00000000..4eda6aa2 --- /dev/null +++ b/src/img/symbols/7ED/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/7ED/WM.svg b/src/img/symbols/7ED/WM.svg new file mode 100644 index 00000000..208e9cf2 --- /dev/null +++ b/src/img/symbols/7ED/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/8ED/80.svg b/src/img/symbols/8ED/80.svg new file mode 100644 index 00000000..86787283 --- /dev/null +++ b/src/img/symbols/8ED/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/8ED/C.svg b/src/img/symbols/8ED/C.svg new file mode 100644 index 00000000..7f511b4d --- /dev/null +++ b/src/img/symbols/8ED/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/8ED/M.svg b/src/img/symbols/8ED/M.svg new file mode 100644 index 00000000..bc693133 --- /dev/null +++ b/src/img/symbols/8ED/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/8ED/R.svg b/src/img/symbols/8ED/R.svg new file mode 100644 index 00000000..c1874b70 --- /dev/null +++ b/src/img/symbols/8ED/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/8ED/T.svg b/src/img/symbols/8ED/T.svg new file mode 100644 index 00000000..4697b055 --- /dev/null +++ b/src/img/symbols/8ED/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/8ED/U.svg b/src/img/symbols/8ED/U.svg new file mode 100644 index 00000000..46b01e7f --- /dev/null +++ b/src/img/symbols/8ED/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/8ED/WM.svg b/src/img/symbols/8ED/WM.svg new file mode 100644 index 00000000..5857d017 --- /dev/null +++ b/src/img/symbols/8ED/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/9ED/80.svg b/src/img/symbols/9ED/80.svg new file mode 100644 index 00000000..c9671749 --- /dev/null +++ b/src/img/symbols/9ED/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/9ED/C.svg b/src/img/symbols/9ED/C.svg new file mode 100644 index 00000000..6a9d4c67 --- /dev/null +++ b/src/img/symbols/9ED/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/9ED/M.svg b/src/img/symbols/9ED/M.svg new file mode 100644 index 00000000..67deabbc --- /dev/null +++ b/src/img/symbols/9ED/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/9ED/R.svg b/src/img/symbols/9ED/R.svg new file mode 100644 index 00000000..3ed8161f --- /dev/null +++ b/src/img/symbols/9ED/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/9ED/T.svg b/src/img/symbols/9ED/T.svg new file mode 100644 index 00000000..f9ef9be7 --- /dev/null +++ b/src/img/symbols/9ED/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/9ED/U.svg b/src/img/symbols/9ED/U.svg new file mode 100644 index 00000000..1450c3da --- /dev/null +++ b/src/img/symbols/9ED/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/9ED/WM.svg b/src/img/symbols/9ED/WM.svg new file mode 100644 index 00000000..7c79f309 --- /dev/null +++ b/src/img/symbols/9ED/WM.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/A22/C.svg b/src/img/symbols/A22/C.svg new file mode 100644 index 00000000..84087a95 --- /dev/null +++ b/src/img/symbols/A22/C.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/A22/LOGO.svg b/src/img/symbols/A22/LOGO.svg new file mode 100644 index 00000000..f871d739 --- /dev/null +++ b/src/img/symbols/A22/LOGO.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A22/M.svg b/src/img/symbols/A22/M.svg new file mode 100644 index 00000000..e526fef9 --- /dev/null +++ b/src/img/symbols/A22/M.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A22/R.svg b/src/img/symbols/A22/R.svg new file mode 100644 index 00000000..5fdc6e93 --- /dev/null +++ b/src/img/symbols/A22/R.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A22/U.svg b/src/img/symbols/A22/U.svg new file mode 100644 index 00000000..e7919854 --- /dev/null +++ b/src/img/symbols/A22/U.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A22/WM.svg b/src/img/symbols/A22/WM.svg new file mode 100644 index 00000000..ecd534ed --- /dev/null +++ b/src/img/symbols/A22/WM.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/src/img/symbols/A23/C.svg b/src/img/symbols/A23/C.svg new file mode 100644 index 00000000..7e6b146a --- /dev/null +++ b/src/img/symbols/A23/C.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/A23/M.svg b/src/img/symbols/A23/M.svg new file mode 100644 index 00000000..2be191c8 --- /dev/null +++ b/src/img/symbols/A23/M.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A23/R.svg b/src/img/symbols/A23/R.svg new file mode 100644 index 00000000..209b4659 --- /dev/null +++ b/src/img/symbols/A23/R.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A23/U.svg b/src/img/symbols/A23/U.svg new file mode 100644 index 00000000..e2b61eb4 --- /dev/null +++ b/src/img/symbols/A23/U.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A25/80.svg b/src/img/symbols/A25/80.svg new file mode 100644 index 00000000..121d9665 --- /dev/null +++ b/src/img/symbols/A25/80.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/A25/C.svg b/src/img/symbols/A25/C.svg new file mode 100644 index 00000000..3a6e5849 --- /dev/null +++ b/src/img/symbols/A25/C.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/A25/M.svg b/src/img/symbols/A25/M.svg new file mode 100644 index 00000000..4cc6679a --- /dev/null +++ b/src/img/symbols/A25/M.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A25/R.svg b/src/img/symbols/A25/R.svg new file mode 100644 index 00000000..71b96753 --- /dev/null +++ b/src/img/symbols/A25/R.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A25/T.svg b/src/img/symbols/A25/T.svg new file mode 100644 index 00000000..4e859679 --- /dev/null +++ b/src/img/symbols/A25/T.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A25/U.svg b/src/img/symbols/A25/U.svg new file mode 100644 index 00000000..552b8ebf --- /dev/null +++ b/src/img/symbols/A25/U.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/A25/WM.svg b/src/img/symbols/A25/WM.svg new file mode 100644 index 00000000..eb8aa5fb --- /dev/null +++ b/src/img/symbols/A25/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/AER/80.svg b/src/img/symbols/AER/80.svg new file mode 100644 index 00000000..1c45d44a --- /dev/null +++ b/src/img/symbols/AER/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/AER/C.svg b/src/img/symbols/AER/C.svg new file mode 100644 index 00000000..1ca0e3d3 --- /dev/null +++ b/src/img/symbols/AER/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/AER/M.svg b/src/img/symbols/AER/M.svg new file mode 100644 index 00000000..72e4fe4f --- /dev/null +++ b/src/img/symbols/AER/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/AER/R.svg b/src/img/symbols/AER/R.svg new file mode 100644 index 00000000..8e01d6a0 --- /dev/null +++ b/src/img/symbols/AER/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/AER/T.svg b/src/img/symbols/AER/T.svg new file mode 100644 index 00000000..e69ecc7c --- /dev/null +++ b/src/img/symbols/AER/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/AER/U.svg b/src/img/symbols/AER/U.svg new file mode 100644 index 00000000..ad931804 --- /dev/null +++ b/src/img/symbols/AER/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/AER/Watermark - M25.svg b/src/img/symbols/AER/Watermark - M25.svg new file mode 100644 index 00000000..16833894 --- /dev/null +++ b/src/img/symbols/AER/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/AFC/80.svg b/src/img/symbols/AFC/80.svg new file mode 100644 index 00000000..1dff118e --- /dev/null +++ b/src/img/symbols/AFC/80.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFC/C.svg b/src/img/symbols/AFC/C.svg new file mode 100644 index 00000000..3d226725 --- /dev/null +++ b/src/img/symbols/AFC/C.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFC/M.svg b/src/img/symbols/AFC/M.svg new file mode 100644 index 00000000..bf4289b8 --- /dev/null +++ b/src/img/symbols/AFC/M.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFC/R.svg b/src/img/symbols/AFC/R.svg new file mode 100644 index 00000000..f94b8d8c --- /dev/null +++ b/src/img/symbols/AFC/R.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFC/T.svg b/src/img/symbols/AFC/T.svg new file mode 100644 index 00000000..56e7d659 --- /dev/null +++ b/src/img/symbols/AFC/T.svg @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFC/U.svg b/src/img/symbols/AFC/U.svg new file mode 100644 index 00000000..35a214bb --- /dev/null +++ b/src/img/symbols/AFC/U.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFC/WM.svg b/src/img/symbols/AFC/WM.svg new file mode 100644 index 00000000..4f9eace9 --- /dev/null +++ b/src/img/symbols/AFC/WM.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/AFR/80.svg b/src/img/symbols/AFR/80.svg new file mode 100644 index 00000000..ae9edb49 --- /dev/null +++ b/src/img/symbols/AFR/80.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/AFR/C.svg b/src/img/symbols/AFR/C.svg new file mode 100644 index 00000000..ffdfe6ad --- /dev/null +++ b/src/img/symbols/AFR/C.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/AFR/M.svg b/src/img/symbols/AFR/M.svg new file mode 100644 index 00000000..be6ac894 --- /dev/null +++ b/src/img/symbols/AFR/M.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFR/R.svg b/src/img/symbols/AFR/R.svg new file mode 100644 index 00000000..67002690 --- /dev/null +++ b/src/img/symbols/AFR/R.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFR/T.svg b/src/img/symbols/AFR/T.svg new file mode 100644 index 00000000..67296e50 --- /dev/null +++ b/src/img/symbols/AFR/T.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFR/U.svg b/src/img/symbols/AFR/U.svg new file mode 100644 index 00000000..f845f21e --- /dev/null +++ b/src/img/symbols/AFR/U.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AFR/WM.svg b/src/img/symbols/AFR/WM.svg new file mode 100644 index 00000000..3a12285e --- /dev/null +++ b/src/img/symbols/AFR/WM.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/AKH/80.svg b/src/img/symbols/AKH/80.svg new file mode 100644 index 00000000..6160076e --- /dev/null +++ b/src/img/symbols/AKH/80.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AKH/C.svg b/src/img/symbols/AKH/C.svg new file mode 100644 index 00000000..232f5795 --- /dev/null +++ b/src/img/symbols/AKH/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/AKH/M.svg b/src/img/symbols/AKH/M.svg new file mode 100644 index 00000000..3dc7210d --- /dev/null +++ b/src/img/symbols/AKH/M.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AKH/R.svg b/src/img/symbols/AKH/R.svg new file mode 100644 index 00000000..1bf94742 --- /dev/null +++ b/src/img/symbols/AKH/R.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AKH/T.svg b/src/img/symbols/AKH/T.svg new file mode 100644 index 00000000..a271bbdc --- /dev/null +++ b/src/img/symbols/AKH/T.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AKH/U.svg b/src/img/symbols/AKH/U.svg new file mode 100644 index 00000000..d133475d --- /dev/null +++ b/src/img/symbols/AKH/U.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AKH/WM.svg b/src/img/symbols/AKH/WM.svg new file mode 100644 index 00000000..2f5fbd55 --- /dev/null +++ b/src/img/symbols/AKH/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/AKH/Watermark - M25.svg b/src/img/symbols/AKH/Watermark - M25.svg new file mode 100644 index 00000000..c312455b --- /dev/null +++ b/src/img/symbols/AKH/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/ALA/80.svg b/src/img/symbols/ALA/80.svg new file mode 100644 index 00000000..6305c424 --- /dev/null +++ b/src/img/symbols/ALA/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ALA/C.svg b/src/img/symbols/ALA/C.svg new file mode 100644 index 00000000..24c010da --- /dev/null +++ b/src/img/symbols/ALA/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ALA/M.svg b/src/img/symbols/ALA/M.svg new file mode 100644 index 00000000..e46621ad --- /dev/null +++ b/src/img/symbols/ALA/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALA/R.svg b/src/img/symbols/ALA/R.svg new file mode 100644 index 00000000..db57a615 --- /dev/null +++ b/src/img/symbols/ALA/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALA/T.svg b/src/img/symbols/ALA/T.svg new file mode 100644 index 00000000..c01b1cd9 --- /dev/null +++ b/src/img/symbols/ALA/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALA/U.svg b/src/img/symbols/ALA/U.svg new file mode 100644 index 00000000..063c6031 --- /dev/null +++ b/src/img/symbols/ALA/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALA/WM.svg b/src/img/symbols/ALA/WM.svg new file mode 100644 index 00000000..2b482a11 --- /dev/null +++ b/src/img/symbols/ALA/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ALL/80.svg b/src/img/symbols/ALL/80.svg new file mode 100644 index 00000000..2dd3586d --- /dev/null +++ b/src/img/symbols/ALL/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ALL/C - Original.svg b/src/img/symbols/ALL/C - Original.svg new file mode 100644 index 00000000..0baa0478 --- /dev/null +++ b/src/img/symbols/ALL/C - Original.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALL/C.svg b/src/img/symbols/ALL/C.svg new file mode 100644 index 00000000..c54647bc --- /dev/null +++ b/src/img/symbols/ALL/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ALL/M.svg b/src/img/symbols/ALL/M.svg new file mode 100644 index 00000000..ba404955 --- /dev/null +++ b/src/img/symbols/ALL/M.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALL/R.svg b/src/img/symbols/ALL/R.svg new file mode 100644 index 00000000..435a91b3 --- /dev/null +++ b/src/img/symbols/ALL/R.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALL/T.svg b/src/img/symbols/ALL/T.svg new file mode 100644 index 00000000..93beacb7 --- /dev/null +++ b/src/img/symbols/ALL/T.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALL/U.svg b/src/img/symbols/ALL/U.svg new file mode 100644 index 00000000..7a7f76a8 --- /dev/null +++ b/src/img/symbols/ALL/U.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ALL/WM.svg b/src/img/symbols/ALL/WM.svg new file mode 100644 index 00000000..d4ccdf6e --- /dev/null +++ b/src/img/symbols/ALL/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ALL/Watermark - M25.svg b/src/img/symbols/ALL/Watermark - M25.svg new file mode 100644 index 00000000..89369545 --- /dev/null +++ b/src/img/symbols/ALL/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/ANA/80.svg b/src/img/symbols/ANA/80.svg new file mode 100644 index 00000000..ddbb83d9 --- /dev/null +++ b/src/img/symbols/ANA/80.svg @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/src/img/symbols/ANA/C.svg b/src/img/symbols/ANA/C.svg new file mode 100644 index 00000000..b642cc33 --- /dev/null +++ b/src/img/symbols/ANA/C.svg @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/src/img/symbols/ANA/M.svg b/src/img/symbols/ANA/M.svg new file mode 100644 index 00000000..de016f96 --- /dev/null +++ b/src/img/symbols/ANA/M.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ANA/R.svg b/src/img/symbols/ANA/R.svg new file mode 100644 index 00000000..d0e7e08f --- /dev/null +++ b/src/img/symbols/ANA/R.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ANA/T.svg b/src/img/symbols/ANA/T.svg new file mode 100644 index 00000000..5f833aba --- /dev/null +++ b/src/img/symbols/ANA/T.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ANA/U.svg b/src/img/symbols/ANA/U.svg new file mode 100644 index 00000000..edd69834 --- /dev/null +++ b/src/img/symbols/ANA/U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ANA/WM.svg b/src/img/symbols/ANA/WM.svg new file mode 100644 index 00000000..933c804b --- /dev/null +++ b/src/img/symbols/ANA/WM.svg @@ -0,0 +1,37 @@ + + + + + + + + + diff --git a/src/img/symbols/APC/80.svg b/src/img/symbols/APC/80.svg new file mode 100644 index 00000000..996143ee --- /dev/null +++ b/src/img/symbols/APC/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/APC/C.svg b/src/img/symbols/APC/C.svg new file mode 100644 index 00000000..cfcd16ad --- /dev/null +++ b/src/img/symbols/APC/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/APC/M.svg b/src/img/symbols/APC/M.svg new file mode 100644 index 00000000..73ef5b6d --- /dev/null +++ b/src/img/symbols/APC/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/APC/R.svg b/src/img/symbols/APC/R.svg new file mode 100644 index 00000000..d3611d76 --- /dev/null +++ b/src/img/symbols/APC/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/APC/T.svg b/src/img/symbols/APC/T.svg new file mode 100644 index 00000000..fda1a4fe --- /dev/null +++ b/src/img/symbols/APC/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/APC/U.svg b/src/img/symbols/APC/U.svg new file mode 100644 index 00000000..26afa920 --- /dev/null +++ b/src/img/symbols/APC/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/APC/Watermark - M25.svg b/src/img/symbols/APC/Watermark - M25.svg new file mode 100644 index 00000000..c84e1b9a --- /dev/null +++ b/src/img/symbols/APC/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ARB/80.svg b/src/img/symbols/ARB/80.svg new file mode 100644 index 00000000..ac437947 --- /dev/null +++ b/src/img/symbols/ARB/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ARB/C.svg b/src/img/symbols/ARB/C.svg new file mode 100644 index 00000000..69ce021b --- /dev/null +++ b/src/img/symbols/ARB/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ARB/M.svg b/src/img/symbols/ARB/M.svg new file mode 100644 index 00000000..f2f4f7ff --- /dev/null +++ b/src/img/symbols/ARB/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARB/R.svg b/src/img/symbols/ARB/R.svg new file mode 100644 index 00000000..545acdf3 --- /dev/null +++ b/src/img/symbols/ARB/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARB/T.svg b/src/img/symbols/ARB/T.svg new file mode 100644 index 00000000..28f36445 --- /dev/null +++ b/src/img/symbols/ARB/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARB/U.svg b/src/img/symbols/ARB/U.svg new file mode 100644 index 00000000..0e231ea3 --- /dev/null +++ b/src/img/symbols/ARB/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARB/Watermark - M25.svg b/src/img/symbols/ARB/Watermark - M25.svg new file mode 100644 index 00000000..5c38438f --- /dev/null +++ b/src/img/symbols/ARB/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ARC/80.svg b/src/img/symbols/ARC/80.svg new file mode 100644 index 00000000..3567639e --- /dev/null +++ b/src/img/symbols/ARC/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ARC/C.svg b/src/img/symbols/ARC/C.svg new file mode 100644 index 00000000..44906dc6 --- /dev/null +++ b/src/img/symbols/ARC/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ARC/M.svg b/src/img/symbols/ARC/M.svg new file mode 100644 index 00000000..2afe03f2 --- /dev/null +++ b/src/img/symbols/ARC/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARC/R.svg b/src/img/symbols/ARC/R.svg new file mode 100644 index 00000000..1b6a2b0a --- /dev/null +++ b/src/img/symbols/ARC/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARC/T.svg b/src/img/symbols/ARC/T.svg new file mode 100644 index 00000000..ba35b1cf --- /dev/null +++ b/src/img/symbols/ARC/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARC/U.svg b/src/img/symbols/ARC/U.svg new file mode 100644 index 00000000..b2babd1d --- /dev/null +++ b/src/img/symbols/ARC/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ARC/WM.svg b/src/img/symbols/ARC/WM.svg new file mode 100644 index 00000000..1872f612 --- /dev/null +++ b/src/img/symbols/ARC/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ARN/80.svg b/src/img/symbols/ARN/80.svg new file mode 100644 index 00000000..05948718 --- /dev/null +++ b/src/img/symbols/ARN/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ARN/C - Original.svg b/src/img/symbols/ARN/C - Original.svg new file mode 100644 index 00000000..644c2936 --- /dev/null +++ b/src/img/symbols/ARN/C - Original.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/ARN/C.svg b/src/img/symbols/ARN/C.svg new file mode 100644 index 00000000..deae2e96 --- /dev/null +++ b/src/img/symbols/ARN/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ARN/M.svg b/src/img/symbols/ARN/M.svg new file mode 100644 index 00000000..d8215341 --- /dev/null +++ b/src/img/symbols/ARN/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ARN/R.svg b/src/img/symbols/ARN/R.svg new file mode 100644 index 00000000..27da8105 --- /dev/null +++ b/src/img/symbols/ARN/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ARN/T.svg b/src/img/symbols/ARN/T.svg new file mode 100644 index 00000000..8386dabb --- /dev/null +++ b/src/img/symbols/ARN/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ARN/U.svg b/src/img/symbols/ARN/U.svg new file mode 100644 index 00000000..4936e456 --- /dev/null +++ b/src/img/symbols/ARN/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ARN/Watermark - M25.svg b/src/img/symbols/ARN/Watermark - M25.svg new file mode 100644 index 00000000..1c3d4cfd --- /dev/null +++ b/src/img/symbols/ARN/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/ATH/80.svg b/src/img/symbols/ATH/80.svg new file mode 100644 index 00000000..202b8ebb --- /dev/null +++ b/src/img/symbols/ATH/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ATH/C.svg b/src/img/symbols/ATH/C.svg new file mode 100644 index 00000000..7bdfb25e --- /dev/null +++ b/src/img/symbols/ATH/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ATH/M.svg b/src/img/symbols/ATH/M.svg new file mode 100644 index 00000000..14fecde0 --- /dev/null +++ b/src/img/symbols/ATH/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATH/R.svg b/src/img/symbols/ATH/R.svg new file mode 100644 index 00000000..2a91973d --- /dev/null +++ b/src/img/symbols/ATH/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATH/T.svg b/src/img/symbols/ATH/T.svg new file mode 100644 index 00000000..460e8e38 --- /dev/null +++ b/src/img/symbols/ATH/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATH/U.svg b/src/img/symbols/ATH/U.svg new file mode 100644 index 00000000..b2be0a5f --- /dev/null +++ b/src/img/symbols/ATH/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATH/WM.svg b/src/img/symbols/ATH/WM.svg new file mode 100644 index 00000000..56600298 --- /dev/null +++ b/src/img/symbols/ATH/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ATQ/80.svg b/src/img/symbols/ATQ/80.svg new file mode 100644 index 00000000..cbe69515 --- /dev/null +++ b/src/img/symbols/ATQ/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ATQ/C - Original.svg b/src/img/symbols/ATQ/C - Original.svg new file mode 100644 index 00000000..15942bfd --- /dev/null +++ b/src/img/symbols/ATQ/C - Original.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ATQ/C.svg b/src/img/symbols/ATQ/C.svg new file mode 100644 index 00000000..8171f709 --- /dev/null +++ b/src/img/symbols/ATQ/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ATQ/M.svg b/src/img/symbols/ATQ/M.svg new file mode 100644 index 00000000..bde4a372 --- /dev/null +++ b/src/img/symbols/ATQ/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATQ/R.svg b/src/img/symbols/ATQ/R.svg new file mode 100644 index 00000000..c2d11206 --- /dev/null +++ b/src/img/symbols/ATQ/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATQ/T.svg b/src/img/symbols/ATQ/T.svg new file mode 100644 index 00000000..27032915 --- /dev/null +++ b/src/img/symbols/ATQ/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATQ/U.svg b/src/img/symbols/ATQ/U.svg new file mode 100644 index 00000000..b55b0210 --- /dev/null +++ b/src/img/symbols/ATQ/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ATQ/WM.svg b/src/img/symbols/ATQ/WM.svg new file mode 100644 index 00000000..598999a5 --- /dev/null +++ b/src/img/symbols/ATQ/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ATQ/Watermark - M25.svg b/src/img/symbols/ATQ/Watermark - M25.svg new file mode 100644 index 00000000..4ad31d2a --- /dev/null +++ b/src/img/symbols/ATQ/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/AVR/80.svg b/src/img/symbols/AVR/80.svg new file mode 100644 index 00000000..adbb09df --- /dev/null +++ b/src/img/symbols/AVR/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/AVR/C.svg b/src/img/symbols/AVR/C.svg new file mode 100644 index 00000000..58a5c652 --- /dev/null +++ b/src/img/symbols/AVR/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/AVR/M.svg b/src/img/symbols/AVR/M.svg new file mode 100644 index 00000000..b7d308b6 --- /dev/null +++ b/src/img/symbols/AVR/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AVR/R.svg b/src/img/symbols/AVR/R.svg new file mode 100644 index 00000000..5edb1e1f --- /dev/null +++ b/src/img/symbols/AVR/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AVR/T.svg b/src/img/symbols/AVR/T.svg new file mode 100644 index 00000000..050acb91 --- /dev/null +++ b/src/img/symbols/AVR/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AVR/U.svg b/src/img/symbols/AVR/U.svg new file mode 100644 index 00000000..0f3e6186 --- /dev/null +++ b/src/img/symbols/AVR/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/AVR/WM.svg b/src/img/symbols/AVR/WM.svg new file mode 100644 index 00000000..d8d02b7b --- /dev/null +++ b/src/img/symbols/AVR/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/Arena/80.svg b/src/img/symbols/Arena/80.svg new file mode 100644 index 00000000..5e562a2f --- /dev/null +++ b/src/img/symbols/Arena/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/Arena/C.svg b/src/img/symbols/Arena/C.svg new file mode 100644 index 00000000..52eb9406 --- /dev/null +++ b/src/img/symbols/Arena/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/Arena/M.svg b/src/img/symbols/Arena/M.svg new file mode 100644 index 00000000..ffe39538 --- /dev/null +++ b/src/img/symbols/Arena/M.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/Arena/R.svg b/src/img/symbols/Arena/R.svg new file mode 100644 index 00000000..adb76dd5 --- /dev/null +++ b/src/img/symbols/Arena/R.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/Arena/S.svg b/src/img/symbols/Arena/S.svg new file mode 100644 index 00000000..a4cae234 --- /dev/null +++ b/src/img/symbols/Arena/S.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/Arena/T.svg b/src/img/symbols/Arena/T.svg new file mode 100644 index 00000000..82143e0c --- /dev/null +++ b/src/img/symbols/Arena/T.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/Arena/U.svg b/src/img/symbols/Arena/U.svg new file mode 100644 index 00000000..bba82ab9 --- /dev/null +++ b/src/img/symbols/Arena/U.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/Arena/WM.svg b/src/img/symbols/Arena/WM.svg new file mode 100644 index 00000000..ac2c3319 --- /dev/null +++ b/src/img/symbols/Arena/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/Astral/80.svg b/src/img/symbols/Astral/80.svg new file mode 100644 index 00000000..ab30df67 --- /dev/null +++ b/src/img/symbols/Astral/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/Astral/C.svg b/src/img/symbols/Astral/C.svg new file mode 100644 index 00000000..8fc96a1f --- /dev/null +++ b/src/img/symbols/Astral/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/Astral/M.svg b/src/img/symbols/Astral/M.svg new file mode 100644 index 00000000..2c97aff8 --- /dev/null +++ b/src/img/symbols/Astral/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Astral/R.svg b/src/img/symbols/Astral/R.svg new file mode 100644 index 00000000..08a9ec7a --- /dev/null +++ b/src/img/symbols/Astral/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Astral/T.svg b/src/img/symbols/Astral/T.svg new file mode 100644 index 00000000..0b1ed94c --- /dev/null +++ b/src/img/symbols/Astral/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Astral/U.svg b/src/img/symbols/Astral/U.svg new file mode 100644 index 00000000..651322ee --- /dev/null +++ b/src/img/symbols/Astral/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Astral/WM.svg b/src/img/symbols/Astral/WM.svg new file mode 100644 index 00000000..ffe9ca11 --- /dev/null +++ b/src/img/symbols/Astral/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/BBD/80.svg b/src/img/symbols/BBD/80.svg new file mode 100644 index 00000000..bdf7384f --- /dev/null +++ b/src/img/symbols/BBD/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/BBD/C.svg b/src/img/symbols/BBD/C.svg new file mode 100644 index 00000000..6b28d5da --- /dev/null +++ b/src/img/symbols/BBD/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/BBD/M.svg b/src/img/symbols/BBD/M.svg new file mode 100644 index 00000000..3d01cdf5 --- /dev/null +++ b/src/img/symbols/BBD/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/BBD/R.svg b/src/img/symbols/BBD/R.svg new file mode 100644 index 00000000..b233d5ae --- /dev/null +++ b/src/img/symbols/BBD/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/BBD/T.svg b/src/img/symbols/BBD/T.svg new file mode 100644 index 00000000..e60e8c83 --- /dev/null +++ b/src/img/symbols/BBD/T.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/BBD/U.svg b/src/img/symbols/BBD/U.svg new file mode 100644 index 00000000..ff3cb19c --- /dev/null +++ b/src/img/symbols/BBD/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/BBD/WM.svg b/src/img/symbols/BBD/WM.svg new file mode 100644 index 00000000..d4eb69f3 --- /dev/null +++ b/src/img/symbols/BBD/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/BFZ/80.svg b/src/img/symbols/BFZ/80.svg new file mode 100644 index 00000000..013129f5 --- /dev/null +++ b/src/img/symbols/BFZ/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/BFZ/C.svg b/src/img/symbols/BFZ/C.svg new file mode 100644 index 00000000..6d6161ce --- /dev/null +++ b/src/img/symbols/BFZ/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/BFZ/M.svg b/src/img/symbols/BFZ/M.svg new file mode 100644 index 00000000..2214bdfc --- /dev/null +++ b/src/img/symbols/BFZ/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BFZ/R.svg b/src/img/symbols/BFZ/R.svg new file mode 100644 index 00000000..854e35fb --- /dev/null +++ b/src/img/symbols/BFZ/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BFZ/T.svg b/src/img/symbols/BFZ/T.svg new file mode 100644 index 00000000..5e25122e --- /dev/null +++ b/src/img/symbols/BFZ/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BFZ/U.svg b/src/img/symbols/BFZ/U.svg new file mode 100644 index 00000000..32785a7a --- /dev/null +++ b/src/img/symbols/BFZ/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BFZ/Watermark - M25.svg b/src/img/symbols/BFZ/Watermark - M25.svg new file mode 100644 index 00000000..a1526b06 --- /dev/null +++ b/src/img/symbols/BFZ/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/BNG/80.svg b/src/img/symbols/BNG/80.svg new file mode 100644 index 00000000..f2d0981a --- /dev/null +++ b/src/img/symbols/BNG/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/BNG/C.svg b/src/img/symbols/BNG/C.svg new file mode 100644 index 00000000..d879d929 --- /dev/null +++ b/src/img/symbols/BNG/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/BNG/M.svg b/src/img/symbols/BNG/M.svg new file mode 100644 index 00000000..3e057515 --- /dev/null +++ b/src/img/symbols/BNG/M.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BNG/R.svg b/src/img/symbols/BNG/R.svg new file mode 100644 index 00000000..f7b6ba51 --- /dev/null +++ b/src/img/symbols/BNG/R.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BNG/T.svg b/src/img/symbols/BNG/T.svg new file mode 100644 index 00000000..fbdec216 --- /dev/null +++ b/src/img/symbols/BNG/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BNG/U.svg b/src/img/symbols/BNG/U.svg new file mode 100644 index 00000000..e5689af2 --- /dev/null +++ b/src/img/symbols/BNG/U.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BNG/Watermark - M25.svg b/src/img/symbols/BNG/Watermark - M25.svg new file mode 100644 index 00000000..14388010 --- /dev/null +++ b/src/img/symbols/BNG/Watermark - M25.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/BOK/80.svg b/src/img/symbols/BOK/80.svg new file mode 100644 index 00000000..8bd88bcc --- /dev/null +++ b/src/img/symbols/BOK/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/BOK/C.svg b/src/img/symbols/BOK/C.svg new file mode 100644 index 00000000..a4b7d35d --- /dev/null +++ b/src/img/symbols/BOK/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/BOK/M.svg b/src/img/symbols/BOK/M.svg new file mode 100644 index 00000000..f8cd9a14 --- /dev/null +++ b/src/img/symbols/BOK/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOK/R.svg b/src/img/symbols/BOK/R.svg new file mode 100644 index 00000000..aae81105 --- /dev/null +++ b/src/img/symbols/BOK/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOK/T.svg b/src/img/symbols/BOK/T.svg new file mode 100644 index 00000000..ed600eaa --- /dev/null +++ b/src/img/symbols/BOK/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOK/U.svg b/src/img/symbols/BOK/U.svg new file mode 100644 index 00000000..72d03a07 --- /dev/null +++ b/src/img/symbols/BOK/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOK/WM.svg b/src/img/symbols/BOK/WM.svg new file mode 100644 index 00000000..42f9db5c --- /dev/null +++ b/src/img/symbols/BOK/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/BOT/80.svg b/src/img/symbols/BOT/80.svg new file mode 100644 index 00000000..74b924f3 --- /dev/null +++ b/src/img/symbols/BOT/80.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BOT/C.svg b/src/img/symbols/BOT/C.svg new file mode 100644 index 00000000..7c2ae26d --- /dev/null +++ b/src/img/symbols/BOT/C.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BOT/M.svg b/src/img/symbols/BOT/M.svg new file mode 100644 index 00000000..21074908 --- /dev/null +++ b/src/img/symbols/BOT/M.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOT/R.svg b/src/img/symbols/BOT/R.svg new file mode 100644 index 00000000..38716306 --- /dev/null +++ b/src/img/symbols/BOT/R.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOT/T.svg b/src/img/symbols/BOT/T.svg new file mode 100644 index 00000000..0d03f831 --- /dev/null +++ b/src/img/symbols/BOT/T.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOT/U.svg b/src/img/symbols/BOT/U.svg new file mode 100644 index 00000000..11053eed --- /dev/null +++ b/src/img/symbols/BOT/U.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BOT/WM.svg b/src/img/symbols/BOT/WM.svg new file mode 100644 index 00000000..537e1951 --- /dev/null +++ b/src/img/symbols/BOT/WM.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/BRB/80.svg b/src/img/symbols/BRB/80.svg new file mode 100644 index 00000000..f55178da --- /dev/null +++ b/src/img/symbols/BRB/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/BRB/C.svg b/src/img/symbols/BRB/C.svg new file mode 100644 index 00000000..87e78ed8 --- /dev/null +++ b/src/img/symbols/BRB/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/BRB/M.svg b/src/img/symbols/BRB/M.svg new file mode 100644 index 00000000..d765c511 --- /dev/null +++ b/src/img/symbols/BRB/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRB/R.svg b/src/img/symbols/BRB/R.svg new file mode 100644 index 00000000..33a736f7 --- /dev/null +++ b/src/img/symbols/BRB/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRB/T.svg b/src/img/symbols/BRB/T.svg new file mode 100644 index 00000000..247b1204 --- /dev/null +++ b/src/img/symbols/BRB/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRB/U.svg b/src/img/symbols/BRB/U.svg new file mode 100644 index 00000000..67888a9d --- /dev/null +++ b/src/img/symbols/BRB/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRB/WM.svg b/src/img/symbols/BRB/WM.svg new file mode 100644 index 00000000..c5b85411 --- /dev/null +++ b/src/img/symbols/BRB/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/BRC/80.svg b/src/img/symbols/BRC/80.svg new file mode 100644 index 00000000..cae40a92 --- /dev/null +++ b/src/img/symbols/BRC/80.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRC/C.svg b/src/img/symbols/BRC/C.svg new file mode 100644 index 00000000..4409c127 --- /dev/null +++ b/src/img/symbols/BRC/C.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRC/M.svg b/src/img/symbols/BRC/M.svg new file mode 100644 index 00000000..90a8fc9f --- /dev/null +++ b/src/img/symbols/BRC/M.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRC/R.svg b/src/img/symbols/BRC/R.svg new file mode 100644 index 00000000..866d0ba9 --- /dev/null +++ b/src/img/symbols/BRC/R.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRC/T.svg b/src/img/symbols/BRC/T.svg new file mode 100644 index 00000000..22f2ad52 --- /dev/null +++ b/src/img/symbols/BRC/T.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRC/U.svg b/src/img/symbols/BRC/U.svg new file mode 100644 index 00000000..bc7ff9f8 --- /dev/null +++ b/src/img/symbols/BRC/U.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRC/WM.svg b/src/img/symbols/BRC/WM.svg new file mode 100644 index 00000000..bcff6c6e --- /dev/null +++ b/src/img/symbols/BRC/WM.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/src/img/symbols/BRO/80.svg b/src/img/symbols/BRO/80.svg new file mode 100644 index 00000000..8d856c85 --- /dev/null +++ b/src/img/symbols/BRO/80.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRO/C.svg b/src/img/symbols/BRO/C.svg new file mode 100644 index 00000000..2bd5fc11 --- /dev/null +++ b/src/img/symbols/BRO/C.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRO/M.svg b/src/img/symbols/BRO/M.svg new file mode 100644 index 00000000..8141ecad --- /dev/null +++ b/src/img/symbols/BRO/M.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRO/R.svg b/src/img/symbols/BRO/R.svg new file mode 100644 index 00000000..8d66a10a --- /dev/null +++ b/src/img/symbols/BRO/R.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRO/T.svg b/src/img/symbols/BRO/T.svg new file mode 100644 index 00000000..6b9cc2ed --- /dev/null +++ b/src/img/symbols/BRO/T.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRO/U.svg b/src/img/symbols/BRO/U.svg new file mode 100644 index 00000000..10ff445e --- /dev/null +++ b/src/img/symbols/BRO/U.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRO/WM.svg b/src/img/symbols/BRO/WM.svg new file mode 100644 index 00000000..26db89ee --- /dev/null +++ b/src/img/symbols/BRO/WM.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/BRR/80.svg b/src/img/symbols/BRR/80.svg new file mode 100644 index 00000000..733389b6 --- /dev/null +++ b/src/img/symbols/BRR/80.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRR/C.svg b/src/img/symbols/BRR/C.svg new file mode 100644 index 00000000..31934226 --- /dev/null +++ b/src/img/symbols/BRR/C.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BRR/M.svg b/src/img/symbols/BRR/M.svg new file mode 100644 index 00000000..be2ea0f1 --- /dev/null +++ b/src/img/symbols/BRR/M.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRR/R.svg b/src/img/symbols/BRR/R.svg new file mode 100644 index 00000000..5f2edfd1 --- /dev/null +++ b/src/img/symbols/BRR/R.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRR/T.svg b/src/img/symbols/BRR/T.svg new file mode 100644 index 00000000..14c87f4e --- /dev/null +++ b/src/img/symbols/BRR/T.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRR/U.svg b/src/img/symbols/BRR/U.svg new file mode 100644 index 00000000..fec73674 --- /dev/null +++ b/src/img/symbols/BRR/U.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/BRR/WM.svg b/src/img/symbols/BRR/WM.svg new file mode 100644 index 00000000..8d8d2db0 --- /dev/null +++ b/src/img/symbols/BRR/WM.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/BTD/80.svg b/src/img/symbols/BTD/80.svg new file mode 100644 index 00000000..1340466c --- /dev/null +++ b/src/img/symbols/BTD/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/BTD/C.svg b/src/img/symbols/BTD/C.svg new file mode 100644 index 00000000..c17adf5e --- /dev/null +++ b/src/img/symbols/BTD/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/BTD/M.svg b/src/img/symbols/BTD/M.svg new file mode 100644 index 00000000..6eeebf18 --- /dev/null +++ b/src/img/symbols/BTD/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BTD/R.svg b/src/img/symbols/BTD/R.svg new file mode 100644 index 00000000..dbd44bd4 --- /dev/null +++ b/src/img/symbols/BTD/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BTD/T.svg b/src/img/symbols/BTD/T.svg new file mode 100644 index 00000000..f2429469 --- /dev/null +++ b/src/img/symbols/BTD/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BTD/U.svg b/src/img/symbols/BTD/U.svg new file mode 100644 index 00000000..8663491d --- /dev/null +++ b/src/img/symbols/BTD/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/BTD/WM.svg b/src/img/symbols/BTD/WM.svg new file mode 100644 index 00000000..8f24e91a --- /dev/null +++ b/src/img/symbols/BTD/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/Blank/80.svg b/src/img/symbols/Blank/80.svg new file mode 100644 index 00000000..83c9037d --- /dev/null +++ b/src/img/symbols/Blank/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/Blank/C.svg b/src/img/symbols/Blank/C.svg new file mode 100644 index 00000000..3c0dbb49 --- /dev/null +++ b/src/img/symbols/Blank/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/Blank/M.svg b/src/img/symbols/Blank/M.svg new file mode 100644 index 00000000..b1c3afe6 --- /dev/null +++ b/src/img/symbols/Blank/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Blank/R.svg b/src/img/symbols/Blank/R.svg new file mode 100644 index 00000000..e5721909 --- /dev/null +++ b/src/img/symbols/Blank/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Blank/T.svg b/src/img/symbols/Blank/T.svg new file mode 100644 index 00000000..4c74ef5e --- /dev/null +++ b/src/img/symbols/Blank/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Blank/U.svg b/src/img/symbols/Blank/U.svg new file mode 100644 index 00000000..92210397 --- /dev/null +++ b/src/img/symbols/Blank/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Blank/WM.svg b/src/img/symbols/Blank/WM.svg new file mode 100644 index 00000000..a7f45373 --- /dev/null +++ b/src/img/symbols/Blank/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/C13/80.svg b/src/img/symbols/C13/80.svg new file mode 100644 index 00000000..d60ad372 --- /dev/null +++ b/src/img/symbols/C13/80.svg @@ -0,0 +1,5 @@ + + + /> + + diff --git a/src/img/symbols/C13/C.svg b/src/img/symbols/C13/C.svg new file mode 100644 index 00000000..bf9c6eb2 --- /dev/null +++ b/src/img/symbols/C13/C.svg @@ -0,0 +1,5 @@ + + + /> + + diff --git a/src/img/symbols/C13/M.svg b/src/img/symbols/C13/M.svg new file mode 100644 index 00000000..b3f511de --- /dev/null +++ b/src/img/symbols/C13/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C13/R.svg b/src/img/symbols/C13/R.svg new file mode 100644 index 00000000..3285e7ba --- /dev/null +++ b/src/img/symbols/C13/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/C13/T.svg b/src/img/symbols/C13/T.svg new file mode 100644 index 00000000..4cb80914 --- /dev/null +++ b/src/img/symbols/C13/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/C13/U.svg b/src/img/symbols/C13/U.svg new file mode 100644 index 00000000..45bb42ed --- /dev/null +++ b/src/img/symbols/C13/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/C13/Watermark - M25.svg b/src/img/symbols/C13/Watermark - M25.svg new file mode 100644 index 00000000..4f230bb8 --- /dev/null +++ b/src/img/symbols/C13/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/C14/80.svg b/src/img/symbols/C14/80.svg new file mode 100644 index 00000000..907050f7 --- /dev/null +++ b/src/img/symbols/C14/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C14/C.svg b/src/img/symbols/C14/C.svg new file mode 100644 index 00000000..8a694ad3 --- /dev/null +++ b/src/img/symbols/C14/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C14/M.svg b/src/img/symbols/C14/M.svg new file mode 100644 index 00000000..e75971e3 --- /dev/null +++ b/src/img/symbols/C14/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C14/R.svg b/src/img/symbols/C14/R.svg new file mode 100644 index 00000000..0ab15700 --- /dev/null +++ b/src/img/symbols/C14/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C14/T.svg b/src/img/symbols/C14/T.svg new file mode 100644 index 00000000..6418b4dd --- /dev/null +++ b/src/img/symbols/C14/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C14/U.svg b/src/img/symbols/C14/U.svg new file mode 100644 index 00000000..667bc329 --- /dev/null +++ b/src/img/symbols/C14/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C14/Watermark - M25.svg b/src/img/symbols/C14/Watermark - M25.svg new file mode 100644 index 00000000..50fbaaa0 --- /dev/null +++ b/src/img/symbols/C14/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/C15/80.svg b/src/img/symbols/C15/80.svg new file mode 100644 index 00000000..4d27c1aa --- /dev/null +++ b/src/img/symbols/C15/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C15/C.svg b/src/img/symbols/C15/C.svg new file mode 100644 index 00000000..f46ab0d1 --- /dev/null +++ b/src/img/symbols/C15/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C15/M.svg b/src/img/symbols/C15/M.svg new file mode 100644 index 00000000..f61847ac --- /dev/null +++ b/src/img/symbols/C15/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/C15/R.svg b/src/img/symbols/C15/R.svg new file mode 100644 index 00000000..44fd7f02 --- /dev/null +++ b/src/img/symbols/C15/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/C15/T.svg b/src/img/symbols/C15/T.svg new file mode 100644 index 00000000..d277ed63 --- /dev/null +++ b/src/img/symbols/C15/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/C15/U.svg b/src/img/symbols/C15/U.svg new file mode 100644 index 00000000..47e2736b --- /dev/null +++ b/src/img/symbols/C15/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/C15/Watermark - M25.svg b/src/img/symbols/C15/Watermark - M25.svg new file mode 100644 index 00000000..3fe379ae --- /dev/null +++ b/src/img/symbols/C15/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/C16/80.svg b/src/img/symbols/C16/80.svg new file mode 100644 index 00000000..fb92abac --- /dev/null +++ b/src/img/symbols/C16/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/C16/C.svg b/src/img/symbols/C16/C.svg new file mode 100644 index 00000000..7f54302f --- /dev/null +++ b/src/img/symbols/C16/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C16/M.svg b/src/img/symbols/C16/M.svg new file mode 100644 index 00000000..96c3c5ae --- /dev/null +++ b/src/img/symbols/C16/M.svg @@ -0,0 +1,9 @@ + + + /> + + + + + + diff --git a/src/img/symbols/C16/R.svg b/src/img/symbols/C16/R.svg new file mode 100644 index 00000000..e97ab895 --- /dev/null +++ b/src/img/symbols/C16/R.svg @@ -0,0 +1,9 @@ + + + /> + + + + + + diff --git a/src/img/symbols/C16/T.svg b/src/img/symbols/C16/T.svg new file mode 100644 index 00000000..8313299d --- /dev/null +++ b/src/img/symbols/C16/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C16/U.svg b/src/img/symbols/C16/U.svg new file mode 100644 index 00000000..d174ae07 --- /dev/null +++ b/src/img/symbols/C16/U.svg @@ -0,0 +1,9 @@ + + + /> + + + + + + diff --git a/src/img/symbols/C16/Watermark - M25.svg b/src/img/symbols/C16/Watermark - M25.svg new file mode 100644 index 00000000..fd636398 --- /dev/null +++ b/src/img/symbols/C16/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/C17/80.svg b/src/img/symbols/C17/80.svg new file mode 100644 index 00000000..a18dc9c8 --- /dev/null +++ b/src/img/symbols/C17/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C17/C.svg b/src/img/symbols/C17/C.svg new file mode 100644 index 00000000..43072113 --- /dev/null +++ b/src/img/symbols/C17/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C17/M.svg b/src/img/symbols/C17/M.svg new file mode 100644 index 00000000..273b05f0 --- /dev/null +++ b/src/img/symbols/C17/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C17/R.svg b/src/img/symbols/C17/R.svg new file mode 100644 index 00000000..f65cff41 --- /dev/null +++ b/src/img/symbols/C17/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C17/T.svg b/src/img/symbols/C17/T.svg new file mode 100644 index 00000000..8810fda9 --- /dev/null +++ b/src/img/symbols/C17/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C17/U.svg b/src/img/symbols/C17/U.svg new file mode 100644 index 00000000..5850b8c0 --- /dev/null +++ b/src/img/symbols/C17/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/C17/Watermark - M25.svg b/src/img/symbols/C17/Watermark - M25.svg new file mode 100644 index 00000000..199a2e78 --- /dev/null +++ b/src/img/symbols/C17/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/C18/80.svg b/src/img/symbols/C18/80.svg new file mode 100644 index 00000000..5c48c126 --- /dev/null +++ b/src/img/symbols/C18/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/C18/C.svg b/src/img/symbols/C18/C.svg new file mode 100644 index 00000000..66d480b8 --- /dev/null +++ b/src/img/symbols/C18/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/C18/M.svg b/src/img/symbols/C18/M.svg new file mode 100644 index 00000000..587828e4 --- /dev/null +++ b/src/img/symbols/C18/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C18/R.svg b/src/img/symbols/C18/R.svg new file mode 100644 index 00000000..530e1c3d --- /dev/null +++ b/src/img/symbols/C18/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C18/T.svg b/src/img/symbols/C18/T.svg new file mode 100644 index 00000000..e4e2581d --- /dev/null +++ b/src/img/symbols/C18/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C18/U.svg b/src/img/symbols/C18/U.svg new file mode 100644 index 00000000..c2fb5e53 --- /dev/null +++ b/src/img/symbols/C18/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C18/WM.svg b/src/img/symbols/C18/WM.svg new file mode 100644 index 00000000..e921a79c --- /dev/null +++ b/src/img/symbols/C18/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/C19/C.svg b/src/img/symbols/C19/C.svg new file mode 100644 index 00000000..d490ca3e --- /dev/null +++ b/src/img/symbols/C19/C.svg @@ -0,0 +1,73 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/C19/Inaccurate.txt b/src/img/symbols/C19/Inaccurate.txt new file mode 100644 index 00000000..3f05efc9 --- /dev/null +++ b/src/img/symbols/C19/Inaccurate.txt @@ -0,0 +1 @@ +C is still not right \ No newline at end of file diff --git a/src/img/symbols/C19/M.svg b/src/img/symbols/C19/M.svg new file mode 100644 index 00000000..088ef9b4 --- /dev/null +++ b/src/img/symbols/C19/M.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/C19/R.svg b/src/img/symbols/C19/R.svg new file mode 100644 index 00000000..a922a2a0 --- /dev/null +++ b/src/img/symbols/C19/R.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/C19/U.svg b/src/img/symbols/C19/U.svg new file mode 100644 index 00000000..333d579f --- /dev/null +++ b/src/img/symbols/C19/U.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/img/symbols/C20/80.svg b/src/img/symbols/C20/80.svg new file mode 100644 index 00000000..c9b5c363 --- /dev/null +++ b/src/img/symbols/C20/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C20/C.svg b/src/img/symbols/C20/C.svg new file mode 100644 index 00000000..9c5617d7 --- /dev/null +++ b/src/img/symbols/C20/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/C20/M.svg b/src/img/symbols/C20/M.svg new file mode 100644 index 00000000..c503acba --- /dev/null +++ b/src/img/symbols/C20/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C20/R.svg b/src/img/symbols/C20/R.svg new file mode 100644 index 00000000..7a7a4bbd --- /dev/null +++ b/src/img/symbols/C20/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C20/T.svg b/src/img/symbols/C20/T.svg new file mode 100644 index 00000000..5e311026 --- /dev/null +++ b/src/img/symbols/C20/T.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C20/U.svg b/src/img/symbols/C20/U.svg new file mode 100644 index 00000000..e10dd2b8 --- /dev/null +++ b/src/img/symbols/C20/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/C20/WM.svg b/src/img/symbols/C20/WM.svg new file mode 100644 index 00000000..2a705043 --- /dev/null +++ b/src/img/symbols/C20/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/C21/80.svg b/src/img/symbols/C21/80.svg new file mode 100644 index 00000000..7dcc7697 --- /dev/null +++ b/src/img/symbols/C21/80.svg @@ -0,0 +1,78 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/C21/C.svg b/src/img/symbols/C21/C.svg new file mode 100644 index 00000000..a17b5dac --- /dev/null +++ b/src/img/symbols/C21/C.svg @@ -0,0 +1,78 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/C21/M.svg b/src/img/symbols/C21/M.svg new file mode 100644 index 00000000..8a350731 --- /dev/null +++ b/src/img/symbols/C21/M.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/C21/R.svg b/src/img/symbols/C21/R.svg new file mode 100644 index 00000000..7164d1a0 --- /dev/null +++ b/src/img/symbols/C21/R.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/C21/T.svg b/src/img/symbols/C21/T.svg new file mode 100644 index 00000000..ae927ef8 --- /dev/null +++ b/src/img/symbols/C21/T.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/C21/U.svg b/src/img/symbols/C21/U.svg new file mode 100644 index 00000000..3d880415 --- /dev/null +++ b/src/img/symbols/C21/U.svg @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/C21/WM.svg b/src/img/symbols/C21/WM.svg new file mode 100644 index 00000000..e8ae285b --- /dev/null +++ b/src/img/symbols/C21/WM.svg @@ -0,0 +1,78 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/CC1/80.svg b/src/img/symbols/CC1/80.svg new file mode 100644 index 00000000..59b4cab5 --- /dev/null +++ b/src/img/symbols/CC1/80.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CC1/C.SVG b/src/img/symbols/CC1/C.SVG new file mode 100644 index 00000000..85e9a456 --- /dev/null +++ b/src/img/symbols/CC1/C.SVG @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CC1/M.svg b/src/img/symbols/CC1/M.svg new file mode 100644 index 00000000..9d3c3618 --- /dev/null +++ b/src/img/symbols/CC1/M.svg @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CC1/R.svg b/src/img/symbols/CC1/R.svg new file mode 100644 index 00000000..3e3ea34f --- /dev/null +++ b/src/img/symbols/CC1/R.svg @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CC1/T.svg b/src/img/symbols/CC1/T.svg new file mode 100644 index 00000000..2e20621e --- /dev/null +++ b/src/img/symbols/CC1/T.svg @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CC1/U.SVG b/src/img/symbols/CC1/U.SVG new file mode 100644 index 00000000..bd33e247 --- /dev/null +++ b/src/img/symbols/CC1/U.SVG @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CC1/WM.svg b/src/img/symbols/CC1/WM.svg new file mode 100644 index 00000000..9f41025d --- /dev/null +++ b/src/img/symbols/CC1/WM.svg @@ -0,0 +1,43 @@ + + + + + + + + + + diff --git a/src/img/symbols/CHK/80.svg b/src/img/symbols/CHK/80.svg new file mode 100644 index 00000000..15757576 --- /dev/null +++ b/src/img/symbols/CHK/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/CHK/C.svg b/src/img/symbols/CHK/C.svg new file mode 100644 index 00000000..656734ad --- /dev/null +++ b/src/img/symbols/CHK/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/CHK/M.svg b/src/img/symbols/CHK/M.svg new file mode 100644 index 00000000..c09e90b5 --- /dev/null +++ b/src/img/symbols/CHK/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHK/R.svg b/src/img/symbols/CHK/R.svg new file mode 100644 index 00000000..756203a6 --- /dev/null +++ b/src/img/symbols/CHK/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHK/T.svg b/src/img/symbols/CHK/T.svg new file mode 100644 index 00000000..d2687f73 --- /dev/null +++ b/src/img/symbols/CHK/T.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CHK/U.svg b/src/img/symbols/CHK/U.svg new file mode 100644 index 00000000..04674730 --- /dev/null +++ b/src/img/symbols/CHK/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHK/WM.svg b/src/img/symbols/CHK/WM.svg new file mode 100644 index 00000000..e29e00bc --- /dev/null +++ b/src/img/symbols/CHK/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/CHK/WM2.svg b/src/img/symbols/CHK/WM2.svg new file mode 100644 index 00000000..ad09f993 --- /dev/null +++ b/src/img/symbols/CHK/WM2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CHR/80.svg b/src/img/symbols/CHR/80.svg new file mode 100644 index 00000000..5ad59391 --- /dev/null +++ b/src/img/symbols/CHR/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CHR/C.svg b/src/img/symbols/CHR/C.svg new file mode 100644 index 00000000..1b9e2e54 --- /dev/null +++ b/src/img/symbols/CHR/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CHR/M.svg b/src/img/symbols/CHR/M.svg new file mode 100644 index 00000000..ff470381 --- /dev/null +++ b/src/img/symbols/CHR/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHR/R.svg b/src/img/symbols/CHR/R.svg new file mode 100644 index 00000000..b52e1c60 --- /dev/null +++ b/src/img/symbols/CHR/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHR/Renaissance.svg b/src/img/symbols/CHR/Renaissance.svg new file mode 100644 index 00000000..651b7c12 --- /dev/null +++ b/src/img/symbols/CHR/Renaissance.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHR/Rinascimento.svg b/src/img/symbols/CHR/Rinascimento.svg new file mode 100644 index 00000000..25167e3b --- /dev/null +++ b/src/img/symbols/CHR/Rinascimento.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/CHR/T.svg b/src/img/symbols/CHR/T.svg new file mode 100644 index 00000000..dc8de550 --- /dev/null +++ b/src/img/symbols/CHR/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHR/U.svg b/src/img/symbols/CHR/U.svg new file mode 100644 index 00000000..ea9cc775 --- /dev/null +++ b/src/img/symbols/CHR/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CHR/WM.svg b/src/img/symbols/CHR/WM.svg new file mode 100644 index 00000000..7233c33d --- /dev/null +++ b/src/img/symbols/CHR/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CLB/80.svg b/src/img/symbols/CLB/80.svg new file mode 100644 index 00000000..9e06b9c6 --- /dev/null +++ b/src/img/symbols/CLB/80.svg @@ -0,0 +1,53 @@ + + + + + + + + + + diff --git a/src/img/symbols/CLB/C.svg b/src/img/symbols/CLB/C.svg new file mode 100644 index 00000000..90321b66 --- /dev/null +++ b/src/img/symbols/CLB/C.svg @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/src/img/symbols/CLB/M.svg b/src/img/symbols/CLB/M.svg new file mode 100644 index 00000000..d8d85399 --- /dev/null +++ b/src/img/symbols/CLB/M.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CLB/R.svg b/src/img/symbols/CLB/R.svg new file mode 100644 index 00000000..649301ed --- /dev/null +++ b/src/img/symbols/CLB/R.svg @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CLB/T.svg b/src/img/symbols/CLB/T.svg new file mode 100644 index 00000000..c61a87e7 --- /dev/null +++ b/src/img/symbols/CLB/T.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CLB/U.svg b/src/img/symbols/CLB/U.svg new file mode 100644 index 00000000..7283719d --- /dev/null +++ b/src/img/symbols/CLB/U.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CLB/WM.svg b/src/img/symbols/CLB/WM.svg new file mode 100644 index 00000000..bf5256fe --- /dev/null +++ b/src/img/symbols/CLB/WM.svg @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/src/img/symbols/CM1/80.svg b/src/img/symbols/CM1/80.svg new file mode 100644 index 00000000..2bbc3aa2 --- /dev/null +++ b/src/img/symbols/CM1/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/CM1/C.svg b/src/img/symbols/CM1/C.svg new file mode 100644 index 00000000..ac1d3d9b --- /dev/null +++ b/src/img/symbols/CM1/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/CM1/M.svg b/src/img/symbols/CM1/M.svg new file mode 100644 index 00000000..7afd94a3 --- /dev/null +++ b/src/img/symbols/CM1/M.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM1/R.svg b/src/img/symbols/CM1/R.svg new file mode 100644 index 00000000..3a6e7b53 --- /dev/null +++ b/src/img/symbols/CM1/R.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM1/T.svg b/src/img/symbols/CM1/T.svg new file mode 100644 index 00000000..904d3c2a --- /dev/null +++ b/src/img/symbols/CM1/T.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM1/U.svg b/src/img/symbols/CM1/U.svg new file mode 100644 index 00000000..f81fb6a4 --- /dev/null +++ b/src/img/symbols/CM1/U.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM1/WM.svg b/src/img/symbols/CM1/WM.svg new file mode 100644 index 00000000..2f6bd044 --- /dev/null +++ b/src/img/symbols/CM1/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CM2/80.svg b/src/img/symbols/CM2/80.svg new file mode 100644 index 00000000..234ae8a0 --- /dev/null +++ b/src/img/symbols/CM2/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/CM2/C.svg b/src/img/symbols/CM2/C.svg new file mode 100644 index 00000000..a4cc4971 --- /dev/null +++ b/src/img/symbols/CM2/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/CM2/M.svg b/src/img/symbols/CM2/M.svg new file mode 100644 index 00000000..4d86706c --- /dev/null +++ b/src/img/symbols/CM2/M.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM2/R.svg b/src/img/symbols/CM2/R.svg new file mode 100644 index 00000000..12661f24 --- /dev/null +++ b/src/img/symbols/CM2/R.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM2/T.svg b/src/img/symbols/CM2/T.svg new file mode 100644 index 00000000..3c550c67 --- /dev/null +++ b/src/img/symbols/CM2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM2/U.svg b/src/img/symbols/CM2/U.svg new file mode 100644 index 00000000..950d8117 --- /dev/null +++ b/src/img/symbols/CM2/U.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CM2/WM.svg b/src/img/symbols/CM2/WM.svg new file mode 100644 index 00000000..faac0046 --- /dev/null +++ b/src/img/symbols/CM2/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/CMA/80.svg b/src/img/symbols/CMA/80.svg new file mode 100644 index 00000000..1c7be45b --- /dev/null +++ b/src/img/symbols/CMA/80.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMA/C.svg b/src/img/symbols/CMA/C.svg new file mode 100644 index 00000000..1bf2ec61 --- /dev/null +++ b/src/img/symbols/CMA/C.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMA/M.svg b/src/img/symbols/CMA/M.svg new file mode 100644 index 00000000..74ade7bd --- /dev/null +++ b/src/img/symbols/CMA/M.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMA/R.svg b/src/img/symbols/CMA/R.svg new file mode 100644 index 00000000..023b9236 --- /dev/null +++ b/src/img/symbols/CMA/R.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMA/T.svg b/src/img/symbols/CMA/T.svg new file mode 100644 index 00000000..37d417f4 --- /dev/null +++ b/src/img/symbols/CMA/T.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMA/U.svg b/src/img/symbols/CMA/U.svg new file mode 100644 index 00000000..060b58fc --- /dev/null +++ b/src/img/symbols/CMA/U.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMA/WM.svg b/src/img/symbols/CMA/WM.svg new file mode 100644 index 00000000..d8daa783 --- /dev/null +++ b/src/img/symbols/CMA/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CMD/80.svg b/src/img/symbols/CMD/80.svg new file mode 100644 index 00000000..e4b91c04 --- /dev/null +++ b/src/img/symbols/CMD/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CMD/C.svg b/src/img/symbols/CMD/C.svg new file mode 100644 index 00000000..14c20528 --- /dev/null +++ b/src/img/symbols/CMD/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CMD/M.svg b/src/img/symbols/CMD/M.svg new file mode 100644 index 00000000..13bcada2 --- /dev/null +++ b/src/img/symbols/CMD/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/CMD/R.svg b/src/img/symbols/CMD/R.svg new file mode 100644 index 00000000..9b8b9d65 --- /dev/null +++ b/src/img/symbols/CMD/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMD/T.svg b/src/img/symbols/CMD/T.svg new file mode 100644 index 00000000..e3285cd6 --- /dev/null +++ b/src/img/symbols/CMD/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMD/U.svg b/src/img/symbols/CMD/U.svg new file mode 100644 index 00000000..d989e800 --- /dev/null +++ b/src/img/symbols/CMD/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMD/Watermark - M25.svg b/src/img/symbols/CMD/Watermark - M25.svg new file mode 100644 index 00000000..b2f4b23f --- /dev/null +++ b/src/img/symbols/CMD/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CMM/80.svg b/src/img/symbols/CMM/80.svg new file mode 100644 index 00000000..5cf68867 --- /dev/null +++ b/src/img/symbols/CMM/80.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMM/C.svg b/src/img/symbols/CMM/C.svg new file mode 100644 index 00000000..7c9190bf --- /dev/null +++ b/src/img/symbols/CMM/C.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMM/M.svg b/src/img/symbols/CMM/M.svg new file mode 100644 index 00000000..d8e5dee9 --- /dev/null +++ b/src/img/symbols/CMM/M.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMM/R.svg b/src/img/symbols/CMM/R.svg new file mode 100644 index 00000000..536208a9 --- /dev/null +++ b/src/img/symbols/CMM/R.svg @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMM/T.svg b/src/img/symbols/CMM/T.svg new file mode 100644 index 00000000..124324bb --- /dev/null +++ b/src/img/symbols/CMM/T.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMM/U.svg b/src/img/symbols/CMM/U.svg new file mode 100644 index 00000000..e102fa4d --- /dev/null +++ b/src/img/symbols/CMM/U.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMM/WM.svg b/src/img/symbols/CMM/WM.svg new file mode 100644 index 00000000..33d097e0 --- /dev/null +++ b/src/img/symbols/CMM/WM.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMR/C.svg b/src/img/symbols/CMR/C.svg new file mode 100644 index 00000000..0a7667c1 --- /dev/null +++ b/src/img/symbols/CMR/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/CMR/M.svg b/src/img/symbols/CMR/M.svg new file mode 100644 index 00000000..19327378 --- /dev/null +++ b/src/img/symbols/CMR/M.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMR/R.svg b/src/img/symbols/CMR/R.svg new file mode 100644 index 00000000..13dcfd91 --- /dev/null +++ b/src/img/symbols/CMR/R.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CMR/U.svg b/src/img/symbols/CMR/U.svg new file mode 100644 index 00000000..d8d1f8aa --- /dev/null +++ b/src/img/symbols/CMR/U.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CN2/80.svg b/src/img/symbols/CN2/80.svg new file mode 100644 index 00000000..68fe0052 --- /dev/null +++ b/src/img/symbols/CN2/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/CN2/C.svg b/src/img/symbols/CN2/C.svg new file mode 100644 index 00000000..1adf52d2 --- /dev/null +++ b/src/img/symbols/CN2/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/CN2/M.svg b/src/img/symbols/CN2/M.svg new file mode 100644 index 00000000..5cdc8ef8 --- /dev/null +++ b/src/img/symbols/CN2/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CN2/R.svg b/src/img/symbols/CN2/R.svg new file mode 100644 index 00000000..d490fcd3 --- /dev/null +++ b/src/img/symbols/CN2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CN2/T.svg b/src/img/symbols/CN2/T.svg new file mode 100644 index 00000000..aea79d51 --- /dev/null +++ b/src/img/symbols/CN2/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CN2/U.svg b/src/img/symbols/CN2/U.svg new file mode 100644 index 00000000..dc100b88 --- /dev/null +++ b/src/img/symbols/CN2/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CN2/WM.svg b/src/img/symbols/CN2/WM.svg new file mode 100644 index 00000000..98348601 --- /dev/null +++ b/src/img/symbols/CN2/WM.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/CN2/Watermark - M25.svg b/src/img/symbols/CN2/Watermark - M25.svg new file mode 100644 index 00000000..d46429dc --- /dev/null +++ b/src/img/symbols/CN2/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CNS/80.svg b/src/img/symbols/CNS/80.svg new file mode 100644 index 00000000..df933983 --- /dev/null +++ b/src/img/symbols/CNS/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/CNS/C.svg b/src/img/symbols/CNS/C.svg new file mode 100644 index 00000000..c1f17ab9 --- /dev/null +++ b/src/img/symbols/CNS/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/CNS/M.svg b/src/img/symbols/CNS/M.svg new file mode 100644 index 00000000..58e5bfd0 --- /dev/null +++ b/src/img/symbols/CNS/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CNS/R.svg b/src/img/symbols/CNS/R.svg new file mode 100644 index 00000000..dd1a6fb6 --- /dev/null +++ b/src/img/symbols/CNS/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CNS/T.svg b/src/img/symbols/CNS/T.svg new file mode 100644 index 00000000..7f8e74ed --- /dev/null +++ b/src/img/symbols/CNS/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CNS/U.svg b/src/img/symbols/CNS/U.svg new file mode 100644 index 00000000..d7e4e76a --- /dev/null +++ b/src/img/symbols/CNS/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CNS/Watermark - M25.svg b/src/img/symbols/CNS/Watermark - M25.svg new file mode 100644 index 00000000..f840cb1c --- /dev/null +++ b/src/img/symbols/CNS/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CONF/80.svg b/src/img/symbols/CONF/80.svg new file mode 100644 index 00000000..ef5aee35 --- /dev/null +++ b/src/img/symbols/CONF/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CONF/C.svg b/src/img/symbols/CONF/C.svg new file mode 100644 index 00000000..35a22c6d --- /dev/null +++ b/src/img/symbols/CONF/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CONF/M.svg b/src/img/symbols/CONF/M.svg new file mode 100644 index 00000000..d17ff235 --- /dev/null +++ b/src/img/symbols/CONF/M.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CONF/R.svg b/src/img/symbols/CONF/R.svg new file mode 100644 index 00000000..cde1ac59 --- /dev/null +++ b/src/img/symbols/CONF/R.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CONF/T.svg b/src/img/symbols/CONF/T.svg new file mode 100644 index 00000000..a7a1f09e --- /dev/null +++ b/src/img/symbols/CONF/T.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CONF/U.svg b/src/img/symbols/CONF/U.svg new file mode 100644 index 00000000..6b823288 --- /dev/null +++ b/src/img/symbols/CONF/U.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CONF/WM.svg b/src/img/symbols/CONF/WM.svg new file mode 100644 index 00000000..580e3784 --- /dev/null +++ b/src/img/symbols/CONF/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CSP/80.svg b/src/img/symbols/CSP/80.svg new file mode 100644 index 00000000..61641308 --- /dev/null +++ b/src/img/symbols/CSP/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CSP/C.svg b/src/img/symbols/CSP/C.svg new file mode 100644 index 00000000..3cc3b7ac --- /dev/null +++ b/src/img/symbols/CSP/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CSP/M.svg b/src/img/symbols/CSP/M.svg new file mode 100644 index 00000000..7f30910c --- /dev/null +++ b/src/img/symbols/CSP/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CSP/R.svg b/src/img/symbols/CSP/R.svg new file mode 100644 index 00000000..d572254c --- /dev/null +++ b/src/img/symbols/CSP/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CSP/T.svg b/src/img/symbols/CSP/T.svg new file mode 100644 index 00000000..c158b6e5 --- /dev/null +++ b/src/img/symbols/CSP/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CSP/U.svg b/src/img/symbols/CSP/U.svg new file mode 100644 index 00000000..4f9a557c --- /dev/null +++ b/src/img/symbols/CSP/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/CSP/WM.svg b/src/img/symbols/CSP/WM.svg new file mode 100644 index 00000000..4a1d0651 --- /dev/null +++ b/src/img/symbols/CSP/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CSP/WM2.svg b/src/img/symbols/CSP/WM2.svg new file mode 100644 index 00000000..c1667cfb --- /dev/null +++ b/src/img/symbols/CSP/WM2.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/CST/ALL-80.svg b/src/img/symbols/CST/ALL-80.svg new file mode 100644 index 00000000..922ad3ae --- /dev/null +++ b/src/img/symbols/CST/ALL-80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/CST/ALL-C.svg b/src/img/symbols/CST/ALL-C.svg new file mode 100644 index 00000000..ba16f99a --- /dev/null +++ b/src/img/symbols/CST/ALL-C.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/CST/ALL-M.svg b/src/img/symbols/CST/ALL-M.svg new file mode 100644 index 00000000..57604505 --- /dev/null +++ b/src/img/symbols/CST/ALL-M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CST/ALL-R.svg b/src/img/symbols/CST/ALL-R.svg new file mode 100644 index 00000000..fd38ec98 --- /dev/null +++ b/src/img/symbols/CST/ALL-R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CST/ALL-T.svg b/src/img/symbols/CST/ALL-T.svg new file mode 100644 index 00000000..ee10d76a --- /dev/null +++ b/src/img/symbols/CST/ALL-T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CST/ALL-U.svg b/src/img/symbols/CST/ALL-U.svg new file mode 100644 index 00000000..917f4b5c --- /dev/null +++ b/src/img/symbols/CST/ALL-U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/CST/IA-80.svg b/src/img/symbols/CST/IA-80.svg new file mode 100644 index 00000000..1d658456 --- /dev/null +++ b/src/img/symbols/CST/IA-80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/CST/IA-C.svg b/src/img/symbols/CST/IA-C.svg new file mode 100644 index 00000000..56f81104 --- /dev/null +++ b/src/img/symbols/CST/IA-C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/CST/IA-M.svg b/src/img/symbols/CST/IA-M.svg new file mode 100644 index 00000000..82309f1e --- /dev/null +++ b/src/img/symbols/CST/IA-M.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/symbols/CST/IA-R.svg b/src/img/symbols/CST/IA-R.svg new file mode 100644 index 00000000..3da2f778 --- /dev/null +++ b/src/img/symbols/CST/IA-R.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/symbols/CST/IA-T.svg b/src/img/symbols/CST/IA-T.svg new file mode 100644 index 00000000..aae4d937 --- /dev/null +++ b/src/img/symbols/CST/IA-T.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/symbols/CST/IA-U.svg b/src/img/symbols/CST/IA-U.svg new file mode 100644 index 00000000..d9f3dca9 --- /dev/null +++ b/src/img/symbols/CST/IA-U.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/img/symbols/Collectors' Edition - International/80.svg b/src/img/symbols/Collectors' Edition - International/80.svg new file mode 100644 index 00000000..32b46d45 --- /dev/null +++ b/src/img/symbols/Collectors' Edition - International/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/Collectors' Edition - International/C.svg b/src/img/symbols/Collectors' Edition - International/C.svg new file mode 100644 index 00000000..9e59e5bd --- /dev/null +++ b/src/img/symbols/Collectors' Edition - International/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/Collectors' Edition - International/M.svg b/src/img/symbols/Collectors' Edition - International/M.svg new file mode 100644 index 00000000..21c933fe --- /dev/null +++ b/src/img/symbols/Collectors' Edition - International/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition - International/R.svg b/src/img/symbols/Collectors' Edition - International/R.svg new file mode 100644 index 00000000..97b29658 --- /dev/null +++ b/src/img/symbols/Collectors' Edition - International/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition - International/T.svg b/src/img/symbols/Collectors' Edition - International/T.svg new file mode 100644 index 00000000..92badd5a --- /dev/null +++ b/src/img/symbols/Collectors' Edition - International/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition - International/U.svg b/src/img/symbols/Collectors' Edition - International/U.svg new file mode 100644 index 00000000..56b073dd --- /dev/null +++ b/src/img/symbols/Collectors' Edition - International/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition - International/WM.svg b/src/img/symbols/Collectors' Edition - International/WM.svg new file mode 100644 index 00000000..a183746b --- /dev/null +++ b/src/img/symbols/Collectors' Edition - International/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/Collectors' Edition/80.svg b/src/img/symbols/Collectors' Edition/80.svg new file mode 100644 index 00000000..65c7d4f5 --- /dev/null +++ b/src/img/symbols/Collectors' Edition/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/Collectors' Edition/C.svg b/src/img/symbols/Collectors' Edition/C.svg new file mode 100644 index 00000000..c177d999 --- /dev/null +++ b/src/img/symbols/Collectors' Edition/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/Collectors' Edition/M.svg b/src/img/symbols/Collectors' Edition/M.svg new file mode 100644 index 00000000..00c9eb9b --- /dev/null +++ b/src/img/symbols/Collectors' Edition/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition/R.svg b/src/img/symbols/Collectors' Edition/R.svg new file mode 100644 index 00000000..a5576e37 --- /dev/null +++ b/src/img/symbols/Collectors' Edition/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition/T.svg b/src/img/symbols/Collectors' Edition/T.svg new file mode 100644 index 00000000..f8f05929 --- /dev/null +++ b/src/img/symbols/Collectors' Edition/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition/U.svg b/src/img/symbols/Collectors' Edition/U.svg new file mode 100644 index 00000000..7be2ae87 --- /dev/null +++ b/src/img/symbols/Collectors' Edition/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Collectors' Edition/WM.svg b/src/img/symbols/Collectors' Edition/WM.svg new file mode 100644 index 00000000..d200c633 --- /dev/null +++ b/src/img/symbols/Collectors' Edition/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/Cube/cube_c.svg b/src/img/symbols/Cube/cube_c.svg new file mode 100644 index 00000000..6448355a --- /dev/null +++ b/src/img/symbols/Cube/cube_c.svg @@ -0,0 +1,35 @@ + + + + + + + image/svg+xml + + + + + + + + diff --git a/src/img/symbols/Cube/cube_m.svg b/src/img/symbols/Cube/cube_m.svg new file mode 100644 index 00000000..85ef77ea --- /dev/null +++ b/src/img/symbols/Cube/cube_m.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/src/img/symbols/Cube/cube_r.svg b/src/img/symbols/Cube/cube_r.svg new file mode 100644 index 00000000..c862cc51 --- /dev/null +++ b/src/img/symbols/Cube/cube_r.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/src/img/symbols/Cube/cube_u.svg b/src/img/symbols/Cube/cube_u.svg new file mode 100644 index 00000000..fa2376b4 --- /dev/null +++ b/src/img/symbols/Cube/cube_u.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/src/img/symbols/DCI/80.svg b/src/img/symbols/DCI/80.svg new file mode 100644 index 00000000..fdfb4a55 --- /dev/null +++ b/src/img/symbols/DCI/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/DCI/C.svg b/src/img/symbols/DCI/C.svg new file mode 100644 index 00000000..d32c6e5d --- /dev/null +++ b/src/img/symbols/DCI/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/DCI/M.svg b/src/img/symbols/DCI/M.svg new file mode 100644 index 00000000..2dad18ed --- /dev/null +++ b/src/img/symbols/DCI/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DCI/R.svg b/src/img/symbols/DCI/R.svg new file mode 100644 index 00000000..d211ca5d --- /dev/null +++ b/src/img/symbols/DCI/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DCI/T.svg b/src/img/symbols/DCI/T.svg new file mode 100644 index 00000000..4c78dd0e --- /dev/null +++ b/src/img/symbols/DCI/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DCI/U.svg b/src/img/symbols/DCI/U.svg new file mode 100644 index 00000000..47a291fe --- /dev/null +++ b/src/img/symbols/DCI/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DCI/WM.svg b/src/img/symbols/DCI/WM.svg new file mode 100644 index 00000000..73889934 --- /dev/null +++ b/src/img/symbols/DCI/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DCI_ALT/M.svg b/src/img/symbols/DCI_ALT/M.svg new file mode 100644 index 00000000..f21432ab --- /dev/null +++ b/src/img/symbols/DCI_ALT/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DCI_ALT/R.svg b/src/img/symbols/DCI_ALT/R.svg new file mode 100644 index 00000000..2571c187 --- /dev/null +++ b/src/img/symbols/DCI_ALT/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DCI_ALT/T.svg b/src/img/symbols/DCI_ALT/T.svg new file mode 100644 index 00000000..6e926994 --- /dev/null +++ b/src/img/symbols/DCI_ALT/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DCI_ALT/U.svg b/src/img/symbols/DCI_ALT/U.svg new file mode 100644 index 00000000..46579de3 --- /dev/null +++ b/src/img/symbols/DCI_ALT/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD1 (EVG)/80.svg b/src/img/symbols/DD1 (EVG)/80.svg new file mode 100644 index 00000000..c34d3d67 --- /dev/null +++ b/src/img/symbols/DD1 (EVG)/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DD1 (EVG)/C.svg b/src/img/symbols/DD1 (EVG)/C.svg new file mode 100644 index 00000000..c334402e --- /dev/null +++ b/src/img/symbols/DD1 (EVG)/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DD1 (EVG)/M.svg b/src/img/symbols/DD1 (EVG)/M.svg new file mode 100644 index 00000000..6bbdcdea --- /dev/null +++ b/src/img/symbols/DD1 (EVG)/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD1 (EVG)/R.svg b/src/img/symbols/DD1 (EVG)/R.svg new file mode 100644 index 00000000..efda3661 --- /dev/null +++ b/src/img/symbols/DD1 (EVG)/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD1 (EVG)/T.svg b/src/img/symbols/DD1 (EVG)/T.svg new file mode 100644 index 00000000..7a5f0f3d --- /dev/null +++ b/src/img/symbols/DD1 (EVG)/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD1 (EVG)/U.svg b/src/img/symbols/DD1 (EVG)/U.svg new file mode 100644 index 00000000..13b9fbe8 --- /dev/null +++ b/src/img/symbols/DD1 (EVG)/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD1 (EVG)/WM.svg b/src/img/symbols/DD1 (EVG)/WM.svg new file mode 100644 index 00000000..6e7b5063 --- /dev/null +++ b/src/img/symbols/DD1 (EVG)/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/DD2 (JVC)/80.svg b/src/img/symbols/DD2 (JVC)/80.svg new file mode 100644 index 00000000..9cadf18a --- /dev/null +++ b/src/img/symbols/DD2 (JVC)/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DD2 (JVC)/C.svg b/src/img/symbols/DD2 (JVC)/C.svg new file mode 100644 index 00000000..3bf26e74 --- /dev/null +++ b/src/img/symbols/DD2 (JVC)/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DD2 (JVC)/M.svg b/src/img/symbols/DD2 (JVC)/M.svg new file mode 100644 index 00000000..7b9f3d9f --- /dev/null +++ b/src/img/symbols/DD2 (JVC)/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD2 (JVC)/R.svg b/src/img/symbols/DD2 (JVC)/R.svg new file mode 100644 index 00000000..77248968 --- /dev/null +++ b/src/img/symbols/DD2 (JVC)/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD2 (JVC)/T.svg b/src/img/symbols/DD2 (JVC)/T.svg new file mode 100644 index 00000000..60ec8991 --- /dev/null +++ b/src/img/symbols/DD2 (JVC)/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD2 (JVC)/U.svg b/src/img/symbols/DD2 (JVC)/U.svg new file mode 100644 index 00000000..d4c09ba5 --- /dev/null +++ b/src/img/symbols/DD2 (JVC)/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DD2 (JVC)/WM.svg b/src/img/symbols/DD2 (JVC)/WM.svg new file mode 100644 index 00000000..fc2b0d14 --- /dev/null +++ b/src/img/symbols/DD2 (JVC)/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDC (DVD)/80.svg b/src/img/symbols/DDC (DVD)/80.svg new file mode 100644 index 00000000..d038c161 --- /dev/null +++ b/src/img/symbols/DDC (DVD)/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDC (DVD)/C.svg b/src/img/symbols/DDC (DVD)/C.svg new file mode 100644 index 00000000..c50dddab --- /dev/null +++ b/src/img/symbols/DDC (DVD)/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDC (DVD)/M.svg b/src/img/symbols/DDC (DVD)/M.svg new file mode 100644 index 00000000..960e9f4b --- /dev/null +++ b/src/img/symbols/DDC (DVD)/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDC (DVD)/R.svg b/src/img/symbols/DDC (DVD)/R.svg new file mode 100644 index 00000000..5eea8332 --- /dev/null +++ b/src/img/symbols/DDC (DVD)/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDC (DVD)/T.svg b/src/img/symbols/DDC (DVD)/T.svg new file mode 100644 index 00000000..8576b1d3 --- /dev/null +++ b/src/img/symbols/DDC (DVD)/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDC (DVD)/U.svg b/src/img/symbols/DDC (DVD)/U.svg new file mode 100644 index 00000000..9a8d3da7 --- /dev/null +++ b/src/img/symbols/DDC (DVD)/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDC (DVD)/WM.svg b/src/img/symbols/DDC (DVD)/WM.svg new file mode 100644 index 00000000..d2d473ef --- /dev/null +++ b/src/img/symbols/DDC (DVD)/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDD (GVL)/80.svg b/src/img/symbols/DDD (GVL)/80.svg new file mode 100644 index 00000000..177e0fce --- /dev/null +++ b/src/img/symbols/DDD (GVL)/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDD (GVL)/C.svg b/src/img/symbols/DDD (GVL)/C.svg new file mode 100644 index 00000000..15fd2459 --- /dev/null +++ b/src/img/symbols/DDD (GVL)/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDD (GVL)/M.svg b/src/img/symbols/DDD (GVL)/M.svg new file mode 100644 index 00000000..c9abcf2a --- /dev/null +++ b/src/img/symbols/DDD (GVL)/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDD (GVL)/R.svg b/src/img/symbols/DDD (GVL)/R.svg new file mode 100644 index 00000000..ad9ffb84 --- /dev/null +++ b/src/img/symbols/DDD (GVL)/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDD (GVL)/T.svg b/src/img/symbols/DDD (GVL)/T.svg new file mode 100644 index 00000000..02549d3e --- /dev/null +++ b/src/img/symbols/DDD (GVL)/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDD (GVL)/U.svg b/src/img/symbols/DDD (GVL)/U.svg new file mode 100644 index 00000000..b7f51936 --- /dev/null +++ b/src/img/symbols/DDD (GVL)/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDD (GVL)/WM.svg b/src/img/symbols/DDD (GVL)/WM.svg new file mode 100644 index 00000000..0bcee6e5 --- /dev/null +++ b/src/img/symbols/DDD (GVL)/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDE/80.svg b/src/img/symbols/DDE/80.svg new file mode 100644 index 00000000..001fc938 --- /dev/null +++ b/src/img/symbols/DDE/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDE/C.svg b/src/img/symbols/DDE/C.svg new file mode 100644 index 00000000..5f8a5a12 --- /dev/null +++ b/src/img/symbols/DDE/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDE/M.svg b/src/img/symbols/DDE/M.svg new file mode 100644 index 00000000..8e14516b --- /dev/null +++ b/src/img/symbols/DDE/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDE/R.svg b/src/img/symbols/DDE/R.svg new file mode 100644 index 00000000..0d5d6e08 --- /dev/null +++ b/src/img/symbols/DDE/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDE/T.svg b/src/img/symbols/DDE/T.svg new file mode 100644 index 00000000..72b60807 --- /dev/null +++ b/src/img/symbols/DDE/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDE/U.svg b/src/img/symbols/DDE/U.svg new file mode 100644 index 00000000..170e47a7 --- /dev/null +++ b/src/img/symbols/DDE/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDE/WM.svg b/src/img/symbols/DDE/WM.svg new file mode 100644 index 00000000..b41d1596 --- /dev/null +++ b/src/img/symbols/DDE/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDF/80.svg b/src/img/symbols/DDF/80.svg new file mode 100644 index 00000000..70fe55aa --- /dev/null +++ b/src/img/symbols/DDF/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDF/C.svg b/src/img/symbols/DDF/C.svg new file mode 100644 index 00000000..6bf3ddf2 --- /dev/null +++ b/src/img/symbols/DDF/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDF/M.svg b/src/img/symbols/DDF/M.svg new file mode 100644 index 00000000..c01057ca --- /dev/null +++ b/src/img/symbols/DDF/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDF/R.svg b/src/img/symbols/DDF/R.svg new file mode 100644 index 00000000..b31d4f80 --- /dev/null +++ b/src/img/symbols/DDF/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDF/T.svg b/src/img/symbols/DDF/T.svg new file mode 100644 index 00000000..97ff85c4 --- /dev/null +++ b/src/img/symbols/DDF/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDF/U.svg b/src/img/symbols/DDF/U.svg new file mode 100644 index 00000000..a422bbc1 --- /dev/null +++ b/src/img/symbols/DDF/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDF/WM.svg b/src/img/symbols/DDF/WM.svg new file mode 100644 index 00000000..acaaa8ff --- /dev/null +++ b/src/img/symbols/DDF/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDG/80.svg b/src/img/symbols/DDG/80.svg new file mode 100644 index 00000000..d7cdd496 --- /dev/null +++ b/src/img/symbols/DDG/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDG/C.svg b/src/img/symbols/DDG/C.svg new file mode 100644 index 00000000..4fd6bc29 --- /dev/null +++ b/src/img/symbols/DDG/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDG/M.svg b/src/img/symbols/DDG/M.svg new file mode 100644 index 00000000..0af0467b --- /dev/null +++ b/src/img/symbols/DDG/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDG/R.svg b/src/img/symbols/DDG/R.svg new file mode 100644 index 00000000..9f16be80 --- /dev/null +++ b/src/img/symbols/DDG/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDG/T.svg b/src/img/symbols/DDG/T.svg new file mode 100644 index 00000000..e43232f5 --- /dev/null +++ b/src/img/symbols/DDG/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDG/U.svg b/src/img/symbols/DDG/U.svg new file mode 100644 index 00000000..7a4f382b --- /dev/null +++ b/src/img/symbols/DDG/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDG/WM.svg b/src/img/symbols/DDG/WM.svg new file mode 100644 index 00000000..52e66e3d --- /dev/null +++ b/src/img/symbols/DDG/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDH/80.svg b/src/img/symbols/DDH/80.svg new file mode 100644 index 00000000..c362cb30 --- /dev/null +++ b/src/img/symbols/DDH/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/src/img/symbols/DDH/C.svg b/src/img/symbols/DDH/C.svg new file mode 100644 index 00000000..5223e811 --- /dev/null +++ b/src/img/symbols/DDH/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + diff --git a/src/img/symbols/DDH/M.svg b/src/img/symbols/DDH/M.svg new file mode 100644 index 00000000..18e9dac2 --- /dev/null +++ b/src/img/symbols/DDH/M.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDH/R.svg b/src/img/symbols/DDH/R.svg new file mode 100644 index 00000000..1e5ed85b --- /dev/null +++ b/src/img/symbols/DDH/R.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDH/T.svg b/src/img/symbols/DDH/T.svg new file mode 100644 index 00000000..45b6646b --- /dev/null +++ b/src/img/symbols/DDH/T.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDH/U.svg b/src/img/symbols/DDH/U.svg new file mode 100644 index 00000000..79238a31 --- /dev/null +++ b/src/img/symbols/DDH/U.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDH/WM.svg b/src/img/symbols/DDH/WM.svg new file mode 100644 index 00000000..47b20a7d --- /dev/null +++ b/src/img/symbols/DDH/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DDI/80.svg b/src/img/symbols/DDI/80.svg new file mode 100644 index 00000000..580a47c2 --- /dev/null +++ b/src/img/symbols/DDI/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/DDI/C.svg b/src/img/symbols/DDI/C.svg new file mode 100644 index 00000000..0590d915 --- /dev/null +++ b/src/img/symbols/DDI/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/DDI/M.svg b/src/img/symbols/DDI/M.svg new file mode 100644 index 00000000..e5a4458a --- /dev/null +++ b/src/img/symbols/DDI/M.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDI/R.svg b/src/img/symbols/DDI/R.svg new file mode 100644 index 00000000..6705576f --- /dev/null +++ b/src/img/symbols/DDI/R.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDI/T.svg b/src/img/symbols/DDI/T.svg new file mode 100644 index 00000000..17611036 --- /dev/null +++ b/src/img/symbols/DDI/T.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDI/U.svg b/src/img/symbols/DDI/U.svg new file mode 100644 index 00000000..e2ee3948 --- /dev/null +++ b/src/img/symbols/DDI/U.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDI/WM.svg b/src/img/symbols/DDI/WM.svg new file mode 100644 index 00000000..93e32bcc --- /dev/null +++ b/src/img/symbols/DDI/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DDJ/80.svg b/src/img/symbols/DDJ/80.svg new file mode 100644 index 00000000..39dac06d --- /dev/null +++ b/src/img/symbols/DDJ/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDJ/C.svg b/src/img/symbols/DDJ/C.svg new file mode 100644 index 00000000..25d8fb68 --- /dev/null +++ b/src/img/symbols/DDJ/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DDJ/M.svg b/src/img/symbols/DDJ/M.svg new file mode 100644 index 00000000..ea3308ee --- /dev/null +++ b/src/img/symbols/DDJ/M.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDJ/R.svg b/src/img/symbols/DDJ/R.svg new file mode 100644 index 00000000..23f0028b --- /dev/null +++ b/src/img/symbols/DDJ/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDJ/T.svg b/src/img/symbols/DDJ/T.svg new file mode 100644 index 00000000..7c8f6af2 --- /dev/null +++ b/src/img/symbols/DDJ/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDJ/U.svg b/src/img/symbols/DDJ/U.svg new file mode 100644 index 00000000..f0220dd4 --- /dev/null +++ b/src/img/symbols/DDJ/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDJ/WM.svg b/src/img/symbols/DDJ/WM.svg new file mode 100644 index 00000000..a2401be8 --- /dev/null +++ b/src/img/symbols/DDJ/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDK/80.svg b/src/img/symbols/DDK/80.svg new file mode 100644 index 00000000..642f8e38 --- /dev/null +++ b/src/img/symbols/DDK/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DDK/C.svg b/src/img/symbols/DDK/C.svg new file mode 100644 index 00000000..315116ed --- /dev/null +++ b/src/img/symbols/DDK/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DDK/M.svg b/src/img/symbols/DDK/M.svg new file mode 100644 index 00000000..582050fd --- /dev/null +++ b/src/img/symbols/DDK/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDK/R.svg b/src/img/symbols/DDK/R.svg new file mode 100644 index 00000000..21c406b0 --- /dev/null +++ b/src/img/symbols/DDK/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDK/T.svg b/src/img/symbols/DDK/T.svg new file mode 100644 index 00000000..481a17e9 --- /dev/null +++ b/src/img/symbols/DDK/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDK/U.svg b/src/img/symbols/DDK/U.svg new file mode 100644 index 00000000..3863994d --- /dev/null +++ b/src/img/symbols/DDK/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DDK/WM.svg b/src/img/symbols/DDK/WM.svg new file mode 100644 index 00000000..5309bf0f --- /dev/null +++ b/src/img/symbols/DDK/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/DDL/80.svg b/src/img/symbols/DDL/80.svg new file mode 100644 index 00000000..ee07ce0b --- /dev/null +++ b/src/img/symbols/DDL/80.svg @@ -0,0 +1,6 @@ + + + + /> + + diff --git a/src/img/symbols/DDL/C.svg b/src/img/symbols/DDL/C.svg new file mode 100644 index 00000000..a4d1a694 --- /dev/null +++ b/src/img/symbols/DDL/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DDL/M.svg b/src/img/symbols/DDL/M.svg new file mode 100644 index 00000000..70de48e8 --- /dev/null +++ b/src/img/symbols/DDL/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDL/R.svg b/src/img/symbols/DDL/R.svg new file mode 100644 index 00000000..ee56e9a3 --- /dev/null +++ b/src/img/symbols/DDL/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDL/T.svg b/src/img/symbols/DDL/T.svg new file mode 100644 index 00000000..ba81f1d5 --- /dev/null +++ b/src/img/symbols/DDL/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDL/U.svg b/src/img/symbols/DDL/U.svg new file mode 100644 index 00000000..5e4a53e3 --- /dev/null +++ b/src/img/symbols/DDL/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDL/WM.svg b/src/img/symbols/DDL/WM.svg new file mode 100644 index 00000000..b9efac11 --- /dev/null +++ b/src/img/symbols/DDL/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/DDM/80.svg b/src/img/symbols/DDM/80.svg new file mode 100644 index 00000000..95f2640b --- /dev/null +++ b/src/img/symbols/DDM/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDM/C.svg b/src/img/symbols/DDM/C.svg new file mode 100644 index 00000000..4b30982a --- /dev/null +++ b/src/img/symbols/DDM/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDM/M.svg b/src/img/symbols/DDM/M.svg new file mode 100644 index 00000000..db179a11 --- /dev/null +++ b/src/img/symbols/DDM/M.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDM/R.svg b/src/img/symbols/DDM/R.svg new file mode 100644 index 00000000..a48f68ad --- /dev/null +++ b/src/img/symbols/DDM/R.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDM/T.svg b/src/img/symbols/DDM/T.svg new file mode 100644 index 00000000..f1e9e9fe --- /dev/null +++ b/src/img/symbols/DDM/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDM/U.svg b/src/img/symbols/DDM/U.svg new file mode 100644 index 00000000..475b857b --- /dev/null +++ b/src/img/symbols/DDM/U.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDM/WM.svg b/src/img/symbols/DDM/WM.svg new file mode 100644 index 00000000..972c8487 --- /dev/null +++ b/src/img/symbols/DDM/WM.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/DDN/80.svg b/src/img/symbols/DDN/80.svg new file mode 100644 index 00000000..098bd6bf --- /dev/null +++ b/src/img/symbols/DDN/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDN/C.svg b/src/img/symbols/DDN/C.svg new file mode 100644 index 00000000..65f98d84 --- /dev/null +++ b/src/img/symbols/DDN/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDN/M.svg b/src/img/symbols/DDN/M.svg new file mode 100644 index 00000000..81c934e6 --- /dev/null +++ b/src/img/symbols/DDN/M.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDN/R.svg b/src/img/symbols/DDN/R.svg new file mode 100644 index 00000000..3ebe9f2e --- /dev/null +++ b/src/img/symbols/DDN/R.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDN/T.svg b/src/img/symbols/DDN/T.svg new file mode 100644 index 00000000..feebe86a --- /dev/null +++ b/src/img/symbols/DDN/T.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDN/U.svg b/src/img/symbols/DDN/U.svg new file mode 100644 index 00000000..fac1da1a --- /dev/null +++ b/src/img/symbols/DDN/U.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDN/WM.svg b/src/img/symbols/DDN/WM.svg new file mode 100644 index 00000000..0dbef015 --- /dev/null +++ b/src/img/symbols/DDN/WM.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/DDO/80.svg b/src/img/symbols/DDO/80.svg new file mode 100644 index 00000000..35435a96 --- /dev/null +++ b/src/img/symbols/DDO/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDO/C.svg b/src/img/symbols/DDO/C.svg new file mode 100644 index 00000000..879f7d9f --- /dev/null +++ b/src/img/symbols/DDO/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDO/M.svg b/src/img/symbols/DDO/M.svg new file mode 100644 index 00000000..dbd33907 --- /dev/null +++ b/src/img/symbols/DDO/M.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDO/R.svg b/src/img/symbols/DDO/R.svg new file mode 100644 index 00000000..18449eb2 --- /dev/null +++ b/src/img/symbols/DDO/R.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDO/T.svg b/src/img/symbols/DDO/T.svg new file mode 100644 index 00000000..ff6b2b15 --- /dev/null +++ b/src/img/symbols/DDO/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDO/U.svg b/src/img/symbols/DDO/U.svg new file mode 100644 index 00000000..0583ce2a --- /dev/null +++ b/src/img/symbols/DDO/U.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDO/WM.svg b/src/img/symbols/DDO/WM.svg new file mode 100644 index 00000000..1741721b --- /dev/null +++ b/src/img/symbols/DDO/WM.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/DDP/80.svg b/src/img/symbols/DDP/80.svg new file mode 100644 index 00000000..416ccefc --- /dev/null +++ b/src/img/symbols/DDP/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDP/C.svg b/src/img/symbols/DDP/C.svg new file mode 100644 index 00000000..add78dee --- /dev/null +++ b/src/img/symbols/DDP/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDP/M.svg b/src/img/symbols/DDP/M.svg new file mode 100644 index 00000000..707d45a4 --- /dev/null +++ b/src/img/symbols/DDP/M.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDP/R.svg b/src/img/symbols/DDP/R.svg new file mode 100644 index 00000000..b7e4dd07 --- /dev/null +++ b/src/img/symbols/DDP/R.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDP/T.svg b/src/img/symbols/DDP/T.svg new file mode 100644 index 00000000..c5ce219c --- /dev/null +++ b/src/img/symbols/DDP/T.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDP/U.svg b/src/img/symbols/DDP/U.svg new file mode 100644 index 00000000..4f15e682 --- /dev/null +++ b/src/img/symbols/DDP/U.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDP/WM.svg b/src/img/symbols/DDP/WM.svg new file mode 100644 index 00000000..69f37f17 --- /dev/null +++ b/src/img/symbols/DDP/WM.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDQ/80.svg b/src/img/symbols/DDQ/80.svg new file mode 100644 index 00000000..692c99b8 --- /dev/null +++ b/src/img/symbols/DDQ/80.svg @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/src/img/symbols/DDQ/C.svg b/src/img/symbols/DDQ/C.svg new file mode 100644 index 00000000..fe084bcd --- /dev/null +++ b/src/img/symbols/DDQ/C.svg @@ -0,0 +1,52 @@ + + + + + + + + + diff --git a/src/img/symbols/DDQ/M.svg b/src/img/symbols/DDQ/M.svg new file mode 100644 index 00000000..12a4a847 --- /dev/null +++ b/src/img/symbols/DDQ/M.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDQ/R.svg b/src/img/symbols/DDQ/R.svg new file mode 100644 index 00000000..e34a721a --- /dev/null +++ b/src/img/symbols/DDQ/R.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDQ/T.svg b/src/img/symbols/DDQ/T.svg new file mode 100644 index 00000000..a5594726 --- /dev/null +++ b/src/img/symbols/DDQ/T.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDQ/U.svg b/src/img/symbols/DDQ/U.svg new file mode 100644 index 00000000..c2b89bea --- /dev/null +++ b/src/img/symbols/DDQ/U.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDQ/WM.svg b/src/img/symbols/DDQ/WM.svg new file mode 100644 index 00000000..9f37237c --- /dev/null +++ b/src/img/symbols/DDQ/WM.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDR/80.svg b/src/img/symbols/DDR/80.svg new file mode 100644 index 00000000..a6321113 --- /dev/null +++ b/src/img/symbols/DDR/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDR/C.svg b/src/img/symbols/DDR/C.svg new file mode 100644 index 00000000..2a3a22dc --- /dev/null +++ b/src/img/symbols/DDR/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/DDR/M.svg b/src/img/symbols/DDR/M.svg new file mode 100644 index 00000000..b6ef5355 --- /dev/null +++ b/src/img/symbols/DDR/M.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDR/R.svg b/src/img/symbols/DDR/R.svg new file mode 100644 index 00000000..6f743b06 --- /dev/null +++ b/src/img/symbols/DDR/R.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDR/T.svg b/src/img/symbols/DDR/T.svg new file mode 100644 index 00000000..684fe2ff --- /dev/null +++ b/src/img/symbols/DDR/T.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDR/U.svg b/src/img/symbols/DDR/U.svg new file mode 100644 index 00000000..a03c5c43 --- /dev/null +++ b/src/img/symbols/DDR/U.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DDR/WM.svg b/src/img/symbols/DDR/WM.svg new file mode 100644 index 00000000..458b8312 --- /dev/null +++ b/src/img/symbols/DDR/WM.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/DDS/80.svg b/src/img/symbols/DDS/80.svg new file mode 100644 index 00000000..e04a38b6 --- /dev/null +++ b/src/img/symbols/DDS/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/DDS/C.svg b/src/img/symbols/DDS/C.svg new file mode 100644 index 00000000..10071eca --- /dev/null +++ b/src/img/symbols/DDS/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/DDS/M.svg b/src/img/symbols/DDS/M.svg new file mode 100644 index 00000000..ce73f86b --- /dev/null +++ b/src/img/symbols/DDS/M.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDS/R.svg b/src/img/symbols/DDS/R.svg new file mode 100644 index 00000000..3e14619b --- /dev/null +++ b/src/img/symbols/DDS/R.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDS/T.svg b/src/img/symbols/DDS/T.svg new file mode 100644 index 00000000..7db39f8a --- /dev/null +++ b/src/img/symbols/DDS/T.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDS/U.svg b/src/img/symbols/DDS/U.svg new file mode 100644 index 00000000..a0d41d0f --- /dev/null +++ b/src/img/symbols/DDS/U.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDS/WM.svg b/src/img/symbols/DDS/WM.svg new file mode 100644 index 00000000..2f05eac7 --- /dev/null +++ b/src/img/symbols/DDS/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DDT/80.svg b/src/img/symbols/DDT/80.svg new file mode 100644 index 00000000..578f0429 --- /dev/null +++ b/src/img/symbols/DDT/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/DDT/C.svg b/src/img/symbols/DDT/C.svg new file mode 100644 index 00000000..25d9db71 --- /dev/null +++ b/src/img/symbols/DDT/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/DDT/M.svg b/src/img/symbols/DDT/M.svg new file mode 100644 index 00000000..ded75be7 --- /dev/null +++ b/src/img/symbols/DDT/M.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DDT/R.svg b/src/img/symbols/DDT/R.svg new file mode 100644 index 00000000..40cc91fd --- /dev/null +++ b/src/img/symbols/DDT/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DDT/T.svg b/src/img/symbols/DDT/T.svg new file mode 100644 index 00000000..0a93efe3 --- /dev/null +++ b/src/img/symbols/DDT/T.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DDT/U.svg b/src/img/symbols/DDT/U.svg new file mode 100644 index 00000000..a0ad782a --- /dev/null +++ b/src/img/symbols/DDT/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DDT/WM.svg b/src/img/symbols/DDT/WM.svg new file mode 100644 index 00000000..3c028e9c --- /dev/null +++ b/src/img/symbols/DDT/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DDU/80.svg b/src/img/symbols/DDU/80.svg new file mode 100644 index 00000000..41203b3c --- /dev/null +++ b/src/img/symbols/DDU/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/DDU/C.svg b/src/img/symbols/DDU/C.svg new file mode 100644 index 00000000..8f8c963b --- /dev/null +++ b/src/img/symbols/DDU/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/DDU/M.svg b/src/img/symbols/DDU/M.svg new file mode 100644 index 00000000..b22ce94f --- /dev/null +++ b/src/img/symbols/DDU/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDU/R.svg b/src/img/symbols/DDU/R.svg new file mode 100644 index 00000000..f5110d65 --- /dev/null +++ b/src/img/symbols/DDU/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDU/T.svg b/src/img/symbols/DDU/T.svg new file mode 100644 index 00000000..ded28be2 --- /dev/null +++ b/src/img/symbols/DDU/T.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDU/U.svg b/src/img/symbols/DDU/U.svg new file mode 100644 index 00000000..503fb096 --- /dev/null +++ b/src/img/symbols/DDU/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DDU/WM.svg b/src/img/symbols/DDU/WM.svg new file mode 100644 index 00000000..df781066 --- /dev/null +++ b/src/img/symbols/DDU/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DGM/80.svg b/src/img/symbols/DGM/80.svg new file mode 100644 index 00000000..33ed284f --- /dev/null +++ b/src/img/symbols/DGM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DGM/C.svg b/src/img/symbols/DGM/C.svg new file mode 100644 index 00000000..0cbca6c7 --- /dev/null +++ b/src/img/symbols/DGM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DGM/M.svg b/src/img/symbols/DGM/M.svg new file mode 100644 index 00000000..58757baa --- /dev/null +++ b/src/img/symbols/DGM/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DGM/R.svg b/src/img/symbols/DGM/R.svg new file mode 100644 index 00000000..4148f744 --- /dev/null +++ b/src/img/symbols/DGM/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DGM/T.svg b/src/img/symbols/DGM/T.svg new file mode 100644 index 00000000..18dad0a9 --- /dev/null +++ b/src/img/symbols/DGM/T.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DGM/U.svg b/src/img/symbols/DGM/U.svg new file mode 100644 index 00000000..cfa42783 --- /dev/null +++ b/src/img/symbols/DGM/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DGM/WM.svg b/src/img/symbols/DGM/WM.svg new file mode 100644 index 00000000..13cfd8ae --- /dev/null +++ b/src/img/symbols/DGM/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DIS/80.svg b/src/img/symbols/DIS/80.svg new file mode 100644 index 00000000..a30a87f1 --- /dev/null +++ b/src/img/symbols/DIS/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DIS/C.svg b/src/img/symbols/DIS/C.svg new file mode 100644 index 00000000..ed4ba981 --- /dev/null +++ b/src/img/symbols/DIS/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DIS/M.svg b/src/img/symbols/DIS/M.svg new file mode 100644 index 00000000..7729eb38 --- /dev/null +++ b/src/img/symbols/DIS/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DIS/R.svg b/src/img/symbols/DIS/R.svg new file mode 100644 index 00000000..0b185913 --- /dev/null +++ b/src/img/symbols/DIS/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DIS/T.svg b/src/img/symbols/DIS/T.svg new file mode 100644 index 00000000..461deb95 --- /dev/null +++ b/src/img/symbols/DIS/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DIS/U.svg b/src/img/symbols/DIS/U.svg new file mode 100644 index 00000000..4311324e --- /dev/null +++ b/src/img/symbols/DIS/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DIS/WM.svg b/src/img/symbols/DIS/WM.svg new file mode 100644 index 00000000..ade539b4 --- /dev/null +++ b/src/img/symbols/DIS/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DKA/80.svg b/src/img/symbols/DKA/80.svg new file mode 100644 index 00000000..99e781e6 --- /dev/null +++ b/src/img/symbols/DKA/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DKA/C.svg b/src/img/symbols/DKA/C.svg new file mode 100644 index 00000000..daaa61a9 --- /dev/null +++ b/src/img/symbols/DKA/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DKA/M.svg b/src/img/symbols/DKA/M.svg new file mode 100644 index 00000000..211d5cb4 --- /dev/null +++ b/src/img/symbols/DKA/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DKA/R.svg b/src/img/symbols/DKA/R.svg new file mode 100644 index 00000000..4ddca3c2 --- /dev/null +++ b/src/img/symbols/DKA/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DKA/T.svg b/src/img/symbols/DKA/T.svg new file mode 100644 index 00000000..27a502ac --- /dev/null +++ b/src/img/symbols/DKA/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DKA/U.svg b/src/img/symbols/DKA/U.svg new file mode 100644 index 00000000..bd4cd1ae --- /dev/null +++ b/src/img/symbols/DKA/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DKA/Watermark - M25.svg b/src/img/symbols/DKA/Watermark - M25.svg new file mode 100644 index 00000000..6df7b5cc --- /dev/null +++ b/src/img/symbols/DKA/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/DKM/80.svg b/src/img/symbols/DKM/80.svg new file mode 100644 index 00000000..7037549c --- /dev/null +++ b/src/img/symbols/DKM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DKM/C.svg b/src/img/symbols/DKM/C.svg new file mode 100644 index 00000000..d2836108 --- /dev/null +++ b/src/img/symbols/DKM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DKM/M.svg b/src/img/symbols/DKM/M.svg new file mode 100644 index 00000000..27ff638b --- /dev/null +++ b/src/img/symbols/DKM/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DKM/R.svg b/src/img/symbols/DKM/R.svg new file mode 100644 index 00000000..84bff960 --- /dev/null +++ b/src/img/symbols/DKM/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DKM/T.svg b/src/img/symbols/DKM/T.svg new file mode 100644 index 00000000..60bfe10b --- /dev/null +++ b/src/img/symbols/DKM/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DKM/U.svg b/src/img/symbols/DKM/U.svg new file mode 100644 index 00000000..3b575b47 --- /dev/null +++ b/src/img/symbols/DKM/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DKM/WM.svg b/src/img/symbols/DKM/WM.svg new file mode 100644 index 00000000..232b328b --- /dev/null +++ b/src/img/symbols/DKM/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DMC/80.svg b/src/img/symbols/DMC/80.svg new file mode 100644 index 00000000..8283ee13 --- /dev/null +++ b/src/img/symbols/DMC/80.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMC/C.svg b/src/img/symbols/DMC/C.svg new file mode 100644 index 00000000..2deff22b --- /dev/null +++ b/src/img/symbols/DMC/C.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMC/M.svg b/src/img/symbols/DMC/M.svg new file mode 100644 index 00000000..70538608 --- /dev/null +++ b/src/img/symbols/DMC/M.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMC/R.svg b/src/img/symbols/DMC/R.svg new file mode 100644 index 00000000..830235fc --- /dev/null +++ b/src/img/symbols/DMC/R.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMC/T.svg b/src/img/symbols/DMC/T.svg new file mode 100644 index 00000000..bafb4de8 --- /dev/null +++ b/src/img/symbols/DMC/T.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMC/U.svg b/src/img/symbols/DMC/U.svg new file mode 100644 index 00000000..f42f225d --- /dev/null +++ b/src/img/symbols/DMC/U.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMC/WM.svg b/src/img/symbols/DMC/WM.svg new file mode 100644 index 00000000..07467c26 --- /dev/null +++ b/src/img/symbols/DMC/WM.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + diff --git a/src/img/symbols/DMR/80.svg b/src/img/symbols/DMR/80.svg new file mode 100644 index 00000000..fd0e85b2 --- /dev/null +++ b/src/img/symbols/DMR/80.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DMR/C.svg b/src/img/symbols/DMR/C.svg new file mode 100644 index 00000000..1ee4a91b --- /dev/null +++ b/src/img/symbols/DMR/C.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DMR/M.svg b/src/img/symbols/DMR/M.svg new file mode 100644 index 00000000..fbfe88a8 --- /dev/null +++ b/src/img/symbols/DMR/M.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMR/R.svg b/src/img/symbols/DMR/R.svg new file mode 100644 index 00000000..b7474d78 --- /dev/null +++ b/src/img/symbols/DMR/R.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMR/U.svg b/src/img/symbols/DMR/U.svg new file mode 100644 index 00000000..d5761b0e --- /dev/null +++ b/src/img/symbols/DMR/U.svg @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMR/WM.svg b/src/img/symbols/DMR/WM.svg new file mode 100644 index 00000000..f01fa5ff --- /dev/null +++ b/src/img/symbols/DMR/WM.svg @@ -0,0 +1,24 @@ + + + + + + + + + + diff --git a/src/img/symbols/DMU/80.svg b/src/img/symbols/DMU/80.svg new file mode 100644 index 00000000..22c78cb9 --- /dev/null +++ b/src/img/symbols/DMU/80.svg @@ -0,0 +1,34 @@ + + + + + + + + + diff --git a/src/img/symbols/DMU/C.svg b/src/img/symbols/DMU/C.svg new file mode 100644 index 00000000..facf4da1 --- /dev/null +++ b/src/img/symbols/DMU/C.svg @@ -0,0 +1,33 @@ + + + + + + + + + diff --git a/src/img/symbols/DMU/M.svg b/src/img/symbols/DMU/M.svg new file mode 100644 index 00000000..53b8e3cb --- /dev/null +++ b/src/img/symbols/DMU/M.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMU/R.svg b/src/img/symbols/DMU/R.svg new file mode 100644 index 00000000..66cf49a9 --- /dev/null +++ b/src/img/symbols/DMU/R.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMU/T.svg b/src/img/symbols/DMU/T.svg new file mode 100644 index 00000000..6e9c9439 --- /dev/null +++ b/src/img/symbols/DMU/T.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMU/U.svg b/src/img/symbols/DMU/U.svg new file mode 100644 index 00000000..857f4642 --- /dev/null +++ b/src/img/symbols/DMU/U.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DMU/WM.svg b/src/img/symbols/DMU/WM.svg new file mode 100644 index 00000000..3cb7c676 --- /dev/null +++ b/src/img/symbols/DMU/WM.svg @@ -0,0 +1,27 @@ + + + + + + + + diff --git a/src/img/symbols/DNDFR/C.svg b/src/img/symbols/DNDFR/C.svg new file mode 100644 index 00000000..72f0ff1a --- /dev/null +++ b/src/img/symbols/DNDFR/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/DNDFR/M.svg b/src/img/symbols/DNDFR/M.svg new file mode 100644 index 00000000..92425db5 --- /dev/null +++ b/src/img/symbols/DNDFR/M.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DNDFR/R.svg b/src/img/symbols/DNDFR/R.svg new file mode 100644 index 00000000..d0f68f30 --- /dev/null +++ b/src/img/symbols/DNDFR/R.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DNDFR/U.svg b/src/img/symbols/DNDFR/U.svg new file mode 100644 index 00000000..213034c6 --- /dev/null +++ b/src/img/symbols/DNDFR/U.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DOM/80.svg b/src/img/symbols/DOM/80.svg new file mode 100644 index 00000000..b359c125 --- /dev/null +++ b/src/img/symbols/DOM/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DOM/C.svg b/src/img/symbols/DOM/C.svg new file mode 100644 index 00000000..69f6ada5 --- /dev/null +++ b/src/img/symbols/DOM/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/DOM/M.svg b/src/img/symbols/DOM/M.svg new file mode 100644 index 00000000..0f1c9fa2 --- /dev/null +++ b/src/img/symbols/DOM/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DOM/R.svg b/src/img/symbols/DOM/R.svg new file mode 100644 index 00000000..1c95f46c --- /dev/null +++ b/src/img/symbols/DOM/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DOM/T.svg b/src/img/symbols/DOM/T.svg new file mode 100644 index 00000000..b2b44c45 --- /dev/null +++ b/src/img/symbols/DOM/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DOM/U.svg b/src/img/symbols/DOM/U.svg new file mode 100644 index 00000000..1eb66bf2 --- /dev/null +++ b/src/img/symbols/DOM/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DOM/WM.svg b/src/img/symbols/DOM/WM.svg new file mode 100644 index 00000000..df02678d --- /dev/null +++ b/src/img/symbols/DOM/WM.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/DPA/80.svg b/src/img/symbols/DPA/80.svg new file mode 100644 index 00000000..4095a9b1 --- /dev/null +++ b/src/img/symbols/DPA/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DPA/C.svg b/src/img/symbols/DPA/C.svg new file mode 100644 index 00000000..74374e18 --- /dev/null +++ b/src/img/symbols/DPA/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DPA/M.svg b/src/img/symbols/DPA/M.svg new file mode 100644 index 00000000..9a090eeb --- /dev/null +++ b/src/img/symbols/DPA/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DPA/R.svg b/src/img/symbols/DPA/R.svg new file mode 100644 index 00000000..299fe768 --- /dev/null +++ b/src/img/symbols/DPA/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DPA/T.svg b/src/img/symbols/DPA/T.svg new file mode 100644 index 00000000..eab1cbdd --- /dev/null +++ b/src/img/symbols/DPA/T.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DPA/U.svg b/src/img/symbols/DPA/U.svg new file mode 100644 index 00000000..b4c950f7 --- /dev/null +++ b/src/img/symbols/DPA/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DPA/WM.svg b/src/img/symbols/DPA/WM.svg new file mode 100644 index 00000000..9d308571 --- /dev/null +++ b/src/img/symbols/DPA/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DPA_ALT1/80.svg b/src/img/symbols/DPA_ALT1/80.svg new file mode 100644 index 00000000..2269b7a0 --- /dev/null +++ b/src/img/symbols/DPA_ALT1/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DPA_ALT1/C.svg b/src/img/symbols/DPA_ALT1/C.svg new file mode 100644 index 00000000..1e2f5958 --- /dev/null +++ b/src/img/symbols/DPA_ALT1/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DPA_ALT1/M.svg b/src/img/symbols/DPA_ALT1/M.svg new file mode 100644 index 00000000..ce50978b --- /dev/null +++ b/src/img/symbols/DPA_ALT1/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT1/R.svg b/src/img/symbols/DPA_ALT1/R.svg new file mode 100644 index 00000000..1a5d16a9 --- /dev/null +++ b/src/img/symbols/DPA_ALT1/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT1/T.svg b/src/img/symbols/DPA_ALT1/T.svg new file mode 100644 index 00000000..b6cc2f04 --- /dev/null +++ b/src/img/symbols/DPA_ALT1/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT1/U.svg b/src/img/symbols/DPA_ALT1/U.svg new file mode 100644 index 00000000..57e19f5a --- /dev/null +++ b/src/img/symbols/DPA_ALT1/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT1/WM.svg b/src/img/symbols/DPA_ALT1/WM.svg new file mode 100644 index 00000000..f661f80d --- /dev/null +++ b/src/img/symbols/DPA_ALT1/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DPA_ALT2/80.svg b/src/img/symbols/DPA_ALT2/80.svg new file mode 100644 index 00000000..912a9c2e --- /dev/null +++ b/src/img/symbols/DPA_ALT2/80.svg @@ -0,0 +1,45 @@ + + + + + + + diff --git a/src/img/symbols/DPA_ALT2/C.svg b/src/img/symbols/DPA_ALT2/C.svg new file mode 100644 index 00000000..8e263cba --- /dev/null +++ b/src/img/symbols/DPA_ALT2/C.svg @@ -0,0 +1,45 @@ + + + + + + + diff --git a/src/img/symbols/DPA_ALT2/M.svg b/src/img/symbols/DPA_ALT2/M.svg new file mode 100644 index 00000000..34075b98 --- /dev/null +++ b/src/img/symbols/DPA_ALT2/M.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT2/R.svg b/src/img/symbols/DPA_ALT2/R.svg new file mode 100644 index 00000000..1fc6377e --- /dev/null +++ b/src/img/symbols/DPA_ALT2/R.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT2/T.svg b/src/img/symbols/DPA_ALT2/T.svg new file mode 100644 index 00000000..09610597 --- /dev/null +++ b/src/img/symbols/DPA_ALT2/T.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT2/U.svg b/src/img/symbols/DPA_ALT2/U.svg new file mode 100644 index 00000000..aa501442 --- /dev/null +++ b/src/img/symbols/DPA_ALT2/U.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/DPA_ALT2/WM.svg b/src/img/symbols/DPA_ALT2/WM.svg new file mode 100644 index 00000000..251f7120 --- /dev/null +++ b/src/img/symbols/DPA_ALT2/WM.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/DRB/80.svg b/src/img/symbols/DRB/80.svg new file mode 100644 index 00000000..20f4797f --- /dev/null +++ b/src/img/symbols/DRB/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DRB/C.svg b/src/img/symbols/DRB/C.svg new file mode 100644 index 00000000..ca02d452 --- /dev/null +++ b/src/img/symbols/DRB/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DRB/M.svg b/src/img/symbols/DRB/M.svg new file mode 100644 index 00000000..f6adc557 --- /dev/null +++ b/src/img/symbols/DRB/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/DRB/R.svg b/src/img/symbols/DRB/R.svg new file mode 100644 index 00000000..1c2d9dad --- /dev/null +++ b/src/img/symbols/DRB/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DRB/T.svg b/src/img/symbols/DRB/T.svg new file mode 100644 index 00000000..ecb44686 --- /dev/null +++ b/src/img/symbols/DRB/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DRB/U.svg b/src/img/symbols/DRB/U.svg new file mode 100644 index 00000000..54ccf6b7 --- /dev/null +++ b/src/img/symbols/DRB/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DRB/WM.svg b/src/img/symbols/DRB/WM.svg new file mode 100644 index 00000000..655575dc --- /dev/null +++ b/src/img/symbols/DRB/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DRK/80.svg b/src/img/symbols/DRK/80.svg new file mode 100644 index 00000000..53bbada5 --- /dev/null +++ b/src/img/symbols/DRK/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DRK/C - Original.svg b/src/img/symbols/DRK/C - Original.svg new file mode 100644 index 00000000..0898e63f --- /dev/null +++ b/src/img/symbols/DRK/C - Original.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DRK/C.svg b/src/img/symbols/DRK/C.svg new file mode 100644 index 00000000..16e06426 --- /dev/null +++ b/src/img/symbols/DRK/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DRK/M.svg b/src/img/symbols/DRK/M.svg new file mode 100644 index 00000000..95db5e17 --- /dev/null +++ b/src/img/symbols/DRK/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DRK/R.svg b/src/img/symbols/DRK/R.svg new file mode 100644 index 00000000..1830be21 --- /dev/null +++ b/src/img/symbols/DRK/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DRK/T.svg b/src/img/symbols/DRK/T.svg new file mode 100644 index 00000000..7ebc42ef --- /dev/null +++ b/src/img/symbols/DRK/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DRK/U.svg b/src/img/symbols/DRK/U.svg new file mode 100644 index 00000000..4e8cf9fd --- /dev/null +++ b/src/img/symbols/DRK/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DRK/WM.svg b/src/img/symbols/DRK/WM.svg new file mode 100644 index 00000000..08b4ff0c --- /dev/null +++ b/src/img/symbols/DRK/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DST/80.svg b/src/img/symbols/DST/80.svg new file mode 100644 index 00000000..a54a2721 --- /dev/null +++ b/src/img/symbols/DST/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DST/C.svg b/src/img/symbols/DST/C.svg new file mode 100644 index 00000000..d4a1a643 --- /dev/null +++ b/src/img/symbols/DST/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/DST/M.svg b/src/img/symbols/DST/M.svg new file mode 100644 index 00000000..5a0793b7 --- /dev/null +++ b/src/img/symbols/DST/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DST/R.svg b/src/img/symbols/DST/R.svg new file mode 100644 index 00000000..4423bf6e --- /dev/null +++ b/src/img/symbols/DST/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DST/T.svg b/src/img/symbols/DST/T.svg new file mode 100644 index 00000000..c908fcf5 --- /dev/null +++ b/src/img/symbols/DST/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DST/U.svg b/src/img/symbols/DST/U.svg new file mode 100644 index 00000000..3aa9a7d0 --- /dev/null +++ b/src/img/symbols/DST/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/DST/WM.svg b/src/img/symbols/DST/WM.svg new file mode 100644 index 00000000..a6e70f83 --- /dev/null +++ b/src/img/symbols/DST/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DST/Watermark - M25.svg b/src/img/symbols/DST/Watermark - M25.svg new file mode 100644 index 00000000..18e3dd84 --- /dev/null +++ b/src/img/symbols/DST/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/DTK/80.svg b/src/img/symbols/DTK/80.svg new file mode 100644 index 00000000..3daafdae --- /dev/null +++ b/src/img/symbols/DTK/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DTK/C.svg b/src/img/symbols/DTK/C.svg new file mode 100644 index 00000000..8175c617 --- /dev/null +++ b/src/img/symbols/DTK/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/DTK/M.svg b/src/img/symbols/DTK/M.svg new file mode 100644 index 00000000..b24b30ad --- /dev/null +++ b/src/img/symbols/DTK/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DTK/R.svg b/src/img/symbols/DTK/R.svg new file mode 100644 index 00000000..733c4cdd --- /dev/null +++ b/src/img/symbols/DTK/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DTK/T.svg b/src/img/symbols/DTK/T.svg new file mode 100644 index 00000000..c06cc6ef --- /dev/null +++ b/src/img/symbols/DTK/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DTK/U.svg b/src/img/symbols/DTK/U.svg new file mode 100644 index 00000000..39cea6c5 --- /dev/null +++ b/src/img/symbols/DTK/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/DTK/WM.svg b/src/img/symbols/DTK/WM.svg new file mode 100644 index 00000000..80d39f73 --- /dev/null +++ b/src/img/symbols/DTK/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/E01/80.svg b/src/img/symbols/E01/80.svg new file mode 100644 index 00000000..928d45df --- /dev/null +++ b/src/img/symbols/E01/80.svg @@ -0,0 +1,41 @@ + + + + + + + diff --git a/src/img/symbols/E01/C.svg b/src/img/symbols/E01/C.svg new file mode 100644 index 00000000..84040961 --- /dev/null +++ b/src/img/symbols/E01/C.svg @@ -0,0 +1,41 @@ + + + + + + + diff --git a/src/img/symbols/E01/M.svg b/src/img/symbols/E01/M.svg new file mode 100644 index 00000000..a1686761 --- /dev/null +++ b/src/img/symbols/E01/M.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E01/R.svg b/src/img/symbols/E01/R.svg new file mode 100644 index 00000000..b50eb3bd --- /dev/null +++ b/src/img/symbols/E01/R.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E01/T.svg b/src/img/symbols/E01/T.svg new file mode 100644 index 00000000..71c0f161 --- /dev/null +++ b/src/img/symbols/E01/T.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E01/U.svg b/src/img/symbols/E01/U.svg new file mode 100644 index 00000000..f2eb44d9 --- /dev/null +++ b/src/img/symbols/E01/U.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E01/WM.svg b/src/img/symbols/E01/WM.svg new file mode 100644 index 00000000..3ee7b387 --- /dev/null +++ b/src/img/symbols/E01/WM.svg @@ -0,0 +1,37 @@ + + + + + + diff --git a/src/img/symbols/E02/80.svg b/src/img/symbols/E02/80.svg new file mode 100644 index 00000000..ddfecb93 --- /dev/null +++ b/src/img/symbols/E02/80.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E02/C.svg b/src/img/symbols/E02/C.svg new file mode 100644 index 00000000..c0380242 --- /dev/null +++ b/src/img/symbols/E02/C.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E02/M.svg b/src/img/symbols/E02/M.svg new file mode 100644 index 00000000..b144193e --- /dev/null +++ b/src/img/symbols/E02/M.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E02/R.svg b/src/img/symbols/E02/R.svg new file mode 100644 index 00000000..a65947a7 --- /dev/null +++ b/src/img/symbols/E02/R.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E02/T.svg b/src/img/symbols/E02/T.svg new file mode 100644 index 00000000..4f973ed7 --- /dev/null +++ b/src/img/symbols/E02/T.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E02/U.svg b/src/img/symbols/E02/U.svg new file mode 100644 index 00000000..fad3a4a9 --- /dev/null +++ b/src/img/symbols/E02/U.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/E02/WM.svg b/src/img/symbols/E02/WM.svg new file mode 100644 index 00000000..68481c70 --- /dev/null +++ b/src/img/symbols/E02/WM.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ELD/80.svg b/src/img/symbols/ELD/80.svg new file mode 100644 index 00000000..7895d40a --- /dev/null +++ b/src/img/symbols/ELD/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/ELD/C.svg b/src/img/symbols/ELD/C.svg new file mode 100644 index 00000000..1af0953f --- /dev/null +++ b/src/img/symbols/ELD/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/ELD/M.svg b/src/img/symbols/ELD/M.svg new file mode 100644 index 00000000..003ef0c8 --- /dev/null +++ b/src/img/symbols/ELD/M.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ELD/R.svg b/src/img/symbols/ELD/R.svg new file mode 100644 index 00000000..e014222d --- /dev/null +++ b/src/img/symbols/ELD/R.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ELD/T.svg b/src/img/symbols/ELD/T.svg new file mode 100644 index 00000000..4f9d9a89 --- /dev/null +++ b/src/img/symbols/ELD/T.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ELD/U.svg b/src/img/symbols/ELD/U.svg new file mode 100644 index 00000000..7ee261d3 --- /dev/null +++ b/src/img/symbols/ELD/U.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ELD/WM.svg b/src/img/symbols/ELD/WM.svg new file mode 100644 index 00000000..6d0d5643 --- /dev/null +++ b/src/img/symbols/ELD/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EMA/80.svg b/src/img/symbols/EMA/80.svg new file mode 100644 index 00000000..9d265c23 --- /dev/null +++ b/src/img/symbols/EMA/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EMA/C.svg b/src/img/symbols/EMA/C.svg new file mode 100644 index 00000000..e7d81af6 --- /dev/null +++ b/src/img/symbols/EMA/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EMA/M.svg b/src/img/symbols/EMA/M.svg new file mode 100644 index 00000000..d35320ae --- /dev/null +++ b/src/img/symbols/EMA/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EMA/R.svg b/src/img/symbols/EMA/R.svg new file mode 100644 index 00000000..e2023c1a --- /dev/null +++ b/src/img/symbols/EMA/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EMA/T.svg b/src/img/symbols/EMA/T.svg new file mode 100644 index 00000000..4759c210 --- /dev/null +++ b/src/img/symbols/EMA/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EMA/U.svg b/src/img/symbols/EMA/U.svg new file mode 100644 index 00000000..58741a43 --- /dev/null +++ b/src/img/symbols/EMA/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EMA/WM.svg b/src/img/symbols/EMA/WM.svg new file mode 100644 index 00000000..5eb6a70f --- /dev/null +++ b/src/img/symbols/EMA/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EMN/80.svg b/src/img/symbols/EMN/80.svg new file mode 100644 index 00000000..58585558 --- /dev/null +++ b/src/img/symbols/EMN/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/EMN/C.svg b/src/img/symbols/EMN/C.svg new file mode 100644 index 00000000..cdb3436d --- /dev/null +++ b/src/img/symbols/EMN/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/EMN/M.svg b/src/img/symbols/EMN/M.svg new file mode 100644 index 00000000..c1196483 --- /dev/null +++ b/src/img/symbols/EMN/M.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EMN/R.svg b/src/img/symbols/EMN/R.svg new file mode 100644 index 00000000..99ce74ee --- /dev/null +++ b/src/img/symbols/EMN/R.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EMN/T.svg b/src/img/symbols/EMN/T.svg new file mode 100644 index 00000000..29386591 --- /dev/null +++ b/src/img/symbols/EMN/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EMN/U.svg b/src/img/symbols/EMN/U.svg new file mode 100644 index 00000000..94b55d72 --- /dev/null +++ b/src/img/symbols/EMN/U.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EMN/WM.svg b/src/img/symbols/EMN/WM.svg new file mode 100644 index 00000000..d3c0d52e --- /dev/null +++ b/src/img/symbols/EMN/WM.svg @@ -0,0 +1,39 @@ + + + + + + diff --git a/src/img/symbols/EVE/80.svg b/src/img/symbols/EVE/80.svg new file mode 100644 index 00000000..cbc44f12 --- /dev/null +++ b/src/img/symbols/EVE/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EVE/C.svg b/src/img/symbols/EVE/C.svg new file mode 100644 index 00000000..d9b85203 --- /dev/null +++ b/src/img/symbols/EVE/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EVE/M.svg b/src/img/symbols/EVE/M.svg new file mode 100644 index 00000000..4300e19a --- /dev/null +++ b/src/img/symbols/EVE/M.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EVE/R.svg b/src/img/symbols/EVE/R.svg new file mode 100644 index 00000000..64679fa0 --- /dev/null +++ b/src/img/symbols/EVE/R.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EVE/T.svg b/src/img/symbols/EVE/T.svg new file mode 100644 index 00000000..224f1535 --- /dev/null +++ b/src/img/symbols/EVE/T.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EVE/U.svg b/src/img/symbols/EVE/U.svg new file mode 100644 index 00000000..e9aeef43 --- /dev/null +++ b/src/img/symbols/EVE/U.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EVE/WM.svg b/src/img/symbols/EVE/WM.svg new file mode 100644 index 00000000..b4a93a1f --- /dev/null +++ b/src/img/symbols/EVE/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/EXO/80.svg b/src/img/symbols/EXO/80.svg new file mode 100644 index 00000000..b2d4a19e --- /dev/null +++ b/src/img/symbols/EXO/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EXO/C - Original.svg b/src/img/symbols/EXO/C - Original.svg new file mode 100644 index 00000000..35060391 --- /dev/null +++ b/src/img/symbols/EXO/C - Original.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EXO/C.svg b/src/img/symbols/EXO/C.svg new file mode 100644 index 00000000..b50745bb --- /dev/null +++ b/src/img/symbols/EXO/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/EXO/M.svg b/src/img/symbols/EXO/M.svg new file mode 100644 index 00000000..368ba622 --- /dev/null +++ b/src/img/symbols/EXO/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EXO/R.svg b/src/img/symbols/EXO/R.svg new file mode 100644 index 00000000..06c9c861 --- /dev/null +++ b/src/img/symbols/EXO/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EXO/T.svg b/src/img/symbols/EXO/T.svg new file mode 100644 index 00000000..af8e65c2 --- /dev/null +++ b/src/img/symbols/EXO/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EXO/U.svg b/src/img/symbols/EXO/U.svg new file mode 100644 index 00000000..a0d5ecd7 --- /dev/null +++ b/src/img/symbols/EXO/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/EXO/WM.svg b/src/img/symbols/EXO/WM.svg new file mode 100644 index 00000000..3a080124 --- /dev/null +++ b/src/img/symbols/EXO/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/EXP/80.svg b/src/img/symbols/EXP/80.svg new file mode 100644 index 00000000..027d2c99 --- /dev/null +++ b/src/img/symbols/EXP/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/EXP/C.svg b/src/img/symbols/EXP/C.svg new file mode 100644 index 00000000..164df00a --- /dev/null +++ b/src/img/symbols/EXP/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/EXP/M.svg b/src/img/symbols/EXP/M.svg new file mode 100644 index 00000000..1e19a99b --- /dev/null +++ b/src/img/symbols/EXP/M.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EXP/R.svg b/src/img/symbols/EXP/R.svg new file mode 100644 index 00000000..725da53e --- /dev/null +++ b/src/img/symbols/EXP/R.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EXP/T.svg b/src/img/symbols/EXP/T.svg new file mode 100644 index 00000000..45e786b3 --- /dev/null +++ b/src/img/symbols/EXP/T.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EXP/U.svg b/src/img/symbols/EXP/U.svg new file mode 100644 index 00000000..bb02c549 --- /dev/null +++ b/src/img/symbols/EXP/U.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/EXP/WM.svg b/src/img/symbols/EXP/WM.svg new file mode 100644 index 00000000..467af2d1 --- /dev/null +++ b/src/img/symbols/EXP/WM.svg @@ -0,0 +1,5 @@ + + + diff --git a/src/img/symbols/FEM/80.svg b/src/img/symbols/FEM/80.svg new file mode 100644 index 00000000..636ecce7 --- /dev/null +++ b/src/img/symbols/FEM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/FEM/C.svg b/src/img/symbols/FEM/C.svg new file mode 100644 index 00000000..a15c8b90 --- /dev/null +++ b/src/img/symbols/FEM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/FEM/M.svg b/src/img/symbols/FEM/M.svg new file mode 100644 index 00000000..c1e75d50 --- /dev/null +++ b/src/img/symbols/FEM/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FEM/R.svg b/src/img/symbols/FEM/R.svg new file mode 100644 index 00000000..78fe5729 --- /dev/null +++ b/src/img/symbols/FEM/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FEM/T.svg b/src/img/symbols/FEM/T.svg new file mode 100644 index 00000000..2a7f81cd --- /dev/null +++ b/src/img/symbols/FEM/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FEM/U.svg b/src/img/symbols/FEM/U.svg new file mode 100644 index 00000000..2d9351a6 --- /dev/null +++ b/src/img/symbols/FEM/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FEM/WM.svg b/src/img/symbols/FEM/WM.svg new file mode 100644 index 00000000..54bf068b --- /dev/null +++ b/src/img/symbols/FEM/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/FNM/R.svg b/src/img/symbols/FNM/R.svg new file mode 100644 index 00000000..cf3c1ca1 --- /dev/null +++ b/src/img/symbols/FNM/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/FRF/80.svg b/src/img/symbols/FRF/80.svg new file mode 100644 index 00000000..2d16ce5a --- /dev/null +++ b/src/img/symbols/FRF/80.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/FRF/C.svg b/src/img/symbols/FRF/C.svg new file mode 100644 index 00000000..4fc6426d --- /dev/null +++ b/src/img/symbols/FRF/C.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/FRF/M.svg b/src/img/symbols/FRF/M.svg new file mode 100644 index 00000000..077425a3 --- /dev/null +++ b/src/img/symbols/FRF/M.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/FRF/R.svg b/src/img/symbols/FRF/R.svg new file mode 100644 index 00000000..9934acd0 --- /dev/null +++ b/src/img/symbols/FRF/R.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/FRF/T.svg b/src/img/symbols/FRF/T.svg new file mode 100644 index 00000000..427727fb --- /dev/null +++ b/src/img/symbols/FRF/T.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/FRF/U.svg b/src/img/symbols/FRF/U.svg new file mode 100644 index 00000000..e6408daa --- /dev/null +++ b/src/img/symbols/FRF/U.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/FRF/WM.svg b/src/img/symbols/FRF/WM.svg new file mode 100644 index 00000000..6bd4109a --- /dev/null +++ b/src/img/symbols/FRF/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/FUT/80.svg b/src/img/symbols/FUT/80.svg new file mode 100644 index 00000000..11bb3fd9 --- /dev/null +++ b/src/img/symbols/FUT/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/FUT/C.svg b/src/img/symbols/FUT/C.svg new file mode 100644 index 00000000..935d1b92 --- /dev/null +++ b/src/img/symbols/FUT/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/FUT/M.svg b/src/img/symbols/FUT/M.svg new file mode 100644 index 00000000..a42471a5 --- /dev/null +++ b/src/img/symbols/FUT/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FUT/R.svg b/src/img/symbols/FUT/R.svg new file mode 100644 index 00000000..2e0d98b1 --- /dev/null +++ b/src/img/symbols/FUT/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FUT/T.svg b/src/img/symbols/FUT/T.svg new file mode 100644 index 00000000..25c7895b --- /dev/null +++ b/src/img/symbols/FUT/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FUT/U.svg b/src/img/symbols/FUT/U.svg new file mode 100644 index 00000000..c9f732df --- /dev/null +++ b/src/img/symbols/FUT/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/FUT/WM.svg b/src/img/symbols/FUT/WM.svg new file mode 100644 index 00000000..a53c53fe --- /dev/null +++ b/src/img/symbols/FUT/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/GAME/80.svg b/src/img/symbols/GAME/80.svg new file mode 100644 index 00000000..1052a057 --- /dev/null +++ b/src/img/symbols/GAME/80.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GAME/C.svg b/src/img/symbols/GAME/C.svg new file mode 100644 index 00000000..b2f0df82 --- /dev/null +++ b/src/img/symbols/GAME/C.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GAME/M.svg b/src/img/symbols/GAME/M.svg new file mode 100644 index 00000000..eeb9d855 --- /dev/null +++ b/src/img/symbols/GAME/M.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GAME/R.svg b/src/img/symbols/GAME/R.svg new file mode 100644 index 00000000..afe947b7 --- /dev/null +++ b/src/img/symbols/GAME/R.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GAME/T.svg b/src/img/symbols/GAME/T.svg new file mode 100644 index 00000000..65cd122e --- /dev/null +++ b/src/img/symbols/GAME/T.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GAME/U.svg b/src/img/symbols/GAME/U.svg new file mode 100644 index 00000000..72cab92f --- /dev/null +++ b/src/img/symbols/GAME/U.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GAME/WM.svg b/src/img/symbols/GAME/WM.svg new file mode 100644 index 00000000..90e26c23 --- /dev/null +++ b/src/img/symbols/GAME/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/GK1/GK1-Boros_C.svg b/src/img/symbols/GK1/GK1-Boros_C.svg new file mode 100644 index 00000000..18257578 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Boros_C.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Boros_M.svg b/src/img/symbols/GK1/GK1-Boros_M.svg new file mode 100644 index 00000000..158a7491 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Boros_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Boros_R.svg b/src/img/symbols/GK1/GK1-Boros_R.svg new file mode 100644 index 00000000..fbb69026 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Boros_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Boros_U.svg b/src/img/symbols/GK1/GK1-Boros_U.svg new file mode 100644 index 00000000..0fe5b5bd --- /dev/null +++ b/src/img/symbols/GK1/GK1-Boros_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Dimir_C.svg b/src/img/symbols/GK1/GK1-Dimir_C.svg new file mode 100644 index 00000000..832c2a20 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Dimir_C.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Dimir_M.svg b/src/img/symbols/GK1/GK1-Dimir_M.svg new file mode 100644 index 00000000..47b11826 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Dimir_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Dimir_R.svg b/src/img/symbols/GK1/GK1-Dimir_R.svg new file mode 100644 index 00000000..02a12d18 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Dimir_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Dimir_U.svg b/src/img/symbols/GK1/GK1-Dimir_U.svg new file mode 100644 index 00000000..a80de58d --- /dev/null +++ b/src/img/symbols/GK1/GK1-Dimir_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Golgari_C.svg b/src/img/symbols/GK1/GK1-Golgari_C.svg new file mode 100644 index 00000000..338be522 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Golgari_C.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Golgari_M.svg b/src/img/symbols/GK1/GK1-Golgari_M.svg new file mode 100644 index 00000000..e4f8ccb7 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Golgari_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Golgari_R.svg b/src/img/symbols/GK1/GK1-Golgari_R.svg new file mode 100644 index 00000000..dd6df6af --- /dev/null +++ b/src/img/symbols/GK1/GK1-Golgari_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Golgari_U.svg b/src/img/symbols/GK1/GK1-Golgari_U.svg new file mode 100644 index 00000000..a10a7494 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Golgari_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Izzet_C.svg b/src/img/symbols/GK1/GK1-Izzet_C.svg new file mode 100644 index 00000000..a7718d49 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Izzet_C.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Izzet_M.svg b/src/img/symbols/GK1/GK1-Izzet_M.svg new file mode 100644 index 00000000..016f5993 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Izzet_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Izzet_R.svg b/src/img/symbols/GK1/GK1-Izzet_R.svg new file mode 100644 index 00000000..b0b5d9a2 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Izzet_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Izzet_U.svg b/src/img/symbols/GK1/GK1-Izzet_U.svg new file mode 100644 index 00000000..8eca56a8 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Izzet_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Selesnya_C.svg b/src/img/symbols/GK1/GK1-Selesnya_C.svg new file mode 100644 index 00000000..fd4a8008 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Selesnya_C.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Selesnya_M.svg b/src/img/symbols/GK1/GK1-Selesnya_M.svg new file mode 100644 index 00000000..c94c2c0b --- /dev/null +++ b/src/img/symbols/GK1/GK1-Selesnya_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Selesnya_R.svg b/src/img/symbols/GK1/GK1-Selesnya_R.svg new file mode 100644 index 00000000..d29b12e7 --- /dev/null +++ b/src/img/symbols/GK1/GK1-Selesnya_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK1/GK1-Selesnya_U.svg b/src/img/symbols/GK1/GK1-Selesnya_U.svg new file mode 100644 index 00000000..a326b32e --- /dev/null +++ b/src/img/symbols/GK1/GK1-Selesnya_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Azorius_C.svg b/src/img/symbols/GK2/GK2-Azorius_C.svg new file mode 100644 index 00000000..1bda85c9 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Azorius_C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/GK2/GK2-Azorius_M.svg b/src/img/symbols/GK2/GK2-Azorius_M.svg new file mode 100644 index 00000000..1003a6e8 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Azorius_M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Azorius_R.svg b/src/img/symbols/GK2/GK2-Azorius_R.svg new file mode 100644 index 00000000..ca965816 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Azorius_R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Azorius_U.svg b/src/img/symbols/GK2/GK2-Azorius_U.svg new file mode 100644 index 00000000..d6f2d5eb --- /dev/null +++ b/src/img/symbols/GK2/GK2-Azorius_U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Gruul_C.svg b/src/img/symbols/GK2/GK2-Gruul_C.svg new file mode 100644 index 00000000..8e378222 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Gruul_C.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Gruul_M.svg b/src/img/symbols/GK2/GK2-Gruul_M.svg new file mode 100644 index 00000000..a57c4c2d --- /dev/null +++ b/src/img/symbols/GK2/GK2-Gruul_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Gruul_R.svg b/src/img/symbols/GK2/GK2-Gruul_R.svg new file mode 100644 index 00000000..46b67335 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Gruul_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Gruul_U.svg b/src/img/symbols/GK2/GK2-Gruul_U.svg new file mode 100644 index 00000000..3e19864e --- /dev/null +++ b/src/img/symbols/GK2/GK2-Gruul_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Orzhov_C.svg b/src/img/symbols/GK2/GK2-Orzhov_C.svg new file mode 100644 index 00000000..e1253a41 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Orzhov_C.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Orzhov_M.svg b/src/img/symbols/GK2/GK2-Orzhov_M.svg new file mode 100644 index 00000000..ccd30b4a --- /dev/null +++ b/src/img/symbols/GK2/GK2-Orzhov_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Orzhov_R.svg b/src/img/symbols/GK2/GK2-Orzhov_R.svg new file mode 100644 index 00000000..9b52c221 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Orzhov_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Orzhov_U.svg b/src/img/symbols/GK2/GK2-Orzhov_U.svg new file mode 100644 index 00000000..190a43ea --- /dev/null +++ b/src/img/symbols/GK2/GK2-Orzhov_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Simic_C.svg b/src/img/symbols/GK2/GK2-Simic_C.svg new file mode 100644 index 00000000..973c594a --- /dev/null +++ b/src/img/symbols/GK2/GK2-Simic_C.svg @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Simic_M.svg b/src/img/symbols/GK2/GK2-Simic_M.svg new file mode 100644 index 00000000..62a2250e --- /dev/null +++ b/src/img/symbols/GK2/GK2-Simic_M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Simic_R.svg b/src/img/symbols/GK2/GK2-Simic_R.svg new file mode 100644 index 00000000..f69433f0 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Simic_R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/GK2-Simic_U.svg b/src/img/symbols/GK2/GK2-Simic_U.svg new file mode 100644 index 00000000..b716ce63 --- /dev/null +++ b/src/img/symbols/GK2/GK2-Simic_U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GK2/Inaccurate.txt b/src/img/symbols/GK2/Inaccurate.txt new file mode 100644 index 00000000..270aceef --- /dev/null +++ b/src/img/symbols/GK2/Inaccurate.txt @@ -0,0 +1 @@ +Gruul and Simic \ No newline at end of file diff --git a/src/img/symbols/GN2/80.svg b/src/img/symbols/GN2/80.svg new file mode 100644 index 00000000..c2e8ab14 --- /dev/null +++ b/src/img/symbols/GN2/80.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN2/C.svg b/src/img/symbols/GN2/C.svg new file mode 100644 index 00000000..ba959adc --- /dev/null +++ b/src/img/symbols/GN2/C.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN2/M.svg b/src/img/symbols/GN2/M.svg new file mode 100644 index 00000000..d610863d --- /dev/null +++ b/src/img/symbols/GN2/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN2/R.svg b/src/img/symbols/GN2/R.svg new file mode 100644 index 00000000..8b45698b --- /dev/null +++ b/src/img/symbols/GN2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN2/T.svg b/src/img/symbols/GN2/T.svg new file mode 100644 index 00000000..fc685a2d --- /dev/null +++ b/src/img/symbols/GN2/T.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN2/U.svg b/src/img/symbols/GN2/U.svg new file mode 100644 index 00000000..6c34a65b --- /dev/null +++ b/src/img/symbols/GN2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN2/WM.svg b/src/img/symbols/GN2/WM.svg new file mode 100644 index 00000000..038f9010 --- /dev/null +++ b/src/img/symbols/GN2/WM.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GN3/80.svg b/src/img/symbols/GN3/80.svg new file mode 100644 index 00000000..d9600079 --- /dev/null +++ b/src/img/symbols/GN3/80.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GN3/C.svg b/src/img/symbols/GN3/C.svg new file mode 100644 index 00000000..142b4f88 --- /dev/null +++ b/src/img/symbols/GN3/C.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GN3/M.svg b/src/img/symbols/GN3/M.svg new file mode 100644 index 00000000..31fbf39f --- /dev/null +++ b/src/img/symbols/GN3/M.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN3/R.svg b/src/img/symbols/GN3/R.svg new file mode 100644 index 00000000..7057c8bb --- /dev/null +++ b/src/img/symbols/GN3/R.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN3/T.svg b/src/img/symbols/GN3/T.svg new file mode 100644 index 00000000..22353b12 --- /dev/null +++ b/src/img/symbols/GN3/T.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN3/U.svg b/src/img/symbols/GN3/U.svg new file mode 100644 index 00000000..bd4c571b --- /dev/null +++ b/src/img/symbols/GN3/U.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GN3/WM.svg b/src/img/symbols/GN3/WM.svg new file mode 100644 index 00000000..135f21ff --- /dev/null +++ b/src/img/symbols/GN3/WM.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/src/img/symbols/GNT/80.svg b/src/img/symbols/GNT/80.svg new file mode 100644 index 00000000..3b3e464f --- /dev/null +++ b/src/img/symbols/GNT/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/GNT/C.svg b/src/img/symbols/GNT/C.svg new file mode 100644 index 00000000..986b0673 --- /dev/null +++ b/src/img/symbols/GNT/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/GNT/M.svg b/src/img/symbols/GNT/M.svg new file mode 100644 index 00000000..4a0ad355 --- /dev/null +++ b/src/img/symbols/GNT/M.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GNT/R.svg b/src/img/symbols/GNT/R.svg new file mode 100644 index 00000000..ddb2b87f --- /dev/null +++ b/src/img/symbols/GNT/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GNT/T.svg b/src/img/symbols/GNT/T.svg new file mode 100644 index 00000000..3386d0db --- /dev/null +++ b/src/img/symbols/GNT/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GNT/U.svg b/src/img/symbols/GNT/U.svg new file mode 100644 index 00000000..802cfa93 --- /dev/null +++ b/src/img/symbols/GNT/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GNT/WM.svg b/src/img/symbols/GNT/WM.svg new file mode 100644 index 00000000..27d1b10d --- /dev/null +++ b/src/img/symbols/GNT/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/GPT/80.svg b/src/img/symbols/GPT/80.svg new file mode 100644 index 00000000..06d0d738 --- /dev/null +++ b/src/img/symbols/GPT/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/GPT/C.svg b/src/img/symbols/GPT/C.svg new file mode 100644 index 00000000..65b7db25 --- /dev/null +++ b/src/img/symbols/GPT/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/GPT/M.svg b/src/img/symbols/GPT/M.svg new file mode 100644 index 00000000..457c1742 --- /dev/null +++ b/src/img/symbols/GPT/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GPT/R.svg b/src/img/symbols/GPT/R.svg new file mode 100644 index 00000000..2376963b --- /dev/null +++ b/src/img/symbols/GPT/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GPT/T.svg b/src/img/symbols/GPT/T.svg new file mode 100644 index 00000000..7d9a10d5 --- /dev/null +++ b/src/img/symbols/GPT/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GPT/U.svg b/src/img/symbols/GPT/U.svg new file mode 100644 index 00000000..3e12e0bf --- /dev/null +++ b/src/img/symbols/GPT/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/GPT/WM.svg b/src/img/symbols/GPT/WM.svg new file mode 100644 index 00000000..a0df8be5 --- /dev/null +++ b/src/img/symbols/GPT/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/GRN/80.svg b/src/img/symbols/GRN/80.svg new file mode 100644 index 00000000..e6991180 --- /dev/null +++ b/src/img/symbols/GRN/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/GRN/C.svg b/src/img/symbols/GRN/C.svg new file mode 100644 index 00000000..f22c7154 --- /dev/null +++ b/src/img/symbols/GRN/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/GRN/M.svg b/src/img/symbols/GRN/M.svg new file mode 100644 index 00000000..5a2ce290 --- /dev/null +++ b/src/img/symbols/GRN/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GRN/R.svg b/src/img/symbols/GRN/R.svg new file mode 100644 index 00000000..1b98a1ef --- /dev/null +++ b/src/img/symbols/GRN/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GRN/T.svg b/src/img/symbols/GRN/T.svg new file mode 100644 index 00000000..9a49ad99 --- /dev/null +++ b/src/img/symbols/GRN/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GRN/U.svg b/src/img/symbols/GRN/U.svg new file mode 100644 index 00000000..4aa95bd5 --- /dev/null +++ b/src/img/symbols/GRN/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GRN/WM.svg b/src/img/symbols/GRN/WM.svg new file mode 100644 index 00000000..91c18caf --- /dev/null +++ b/src/img/symbols/GRN/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/GS1/80.svg b/src/img/symbols/GS1/80.svg new file mode 100644 index 00000000..bfb7e3da --- /dev/null +++ b/src/img/symbols/GS1/80.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/img/symbols/GS1/C.svg b/src/img/symbols/GS1/C.svg new file mode 100644 index 00000000..6568a858 --- /dev/null +++ b/src/img/symbols/GS1/C.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/img/symbols/GS1/M.svg b/src/img/symbols/GS1/M.svg new file mode 100644 index 00000000..c7990d56 --- /dev/null +++ b/src/img/symbols/GS1/M.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GS1/R.svg b/src/img/symbols/GS1/R.svg new file mode 100644 index 00000000..c07fcbb8 --- /dev/null +++ b/src/img/symbols/GS1/R.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GS1/T.svg b/src/img/symbols/GS1/T.svg new file mode 100644 index 00000000..77fc12ad --- /dev/null +++ b/src/img/symbols/GS1/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/GS1/U.svg b/src/img/symbols/GS1/U.svg new file mode 100644 index 00000000..a6e96a96 --- /dev/null +++ b/src/img/symbols/GS1/U.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/GS1/WM.svg b/src/img/symbols/GS1/WM.svg new file mode 100644 index 00000000..14db4a5d --- /dev/null +++ b/src/img/symbols/GS1/WM.svg @@ -0,0 +1,11 @@ + + + + diff --git a/src/img/symbols/GTC/80.svg b/src/img/symbols/GTC/80.svg new file mode 100644 index 00000000..db8962f6 --- /dev/null +++ b/src/img/symbols/GTC/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GTC/C.svg b/src/img/symbols/GTC/C.svg new file mode 100644 index 00000000..81e9981a --- /dev/null +++ b/src/img/symbols/GTC/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GTC/M.svg b/src/img/symbols/GTC/M.svg new file mode 100644 index 00000000..dd9e0684 --- /dev/null +++ b/src/img/symbols/GTC/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/GTC/R.svg b/src/img/symbols/GTC/R.svg new file mode 100644 index 00000000..2c4702eb --- /dev/null +++ b/src/img/symbols/GTC/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GTC/T.svg b/src/img/symbols/GTC/T.svg new file mode 100644 index 00000000..dacd0bcb --- /dev/null +++ b/src/img/symbols/GTC/T.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GTC/U.svg b/src/img/symbols/GTC/U.svg new file mode 100644 index 00000000..b4301f84 --- /dev/null +++ b/src/img/symbols/GTC/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/GTC/WM.svg b/src/img/symbols/GTC/WM.svg new file mode 100644 index 00000000..72c2a965 --- /dev/null +++ b/src/img/symbols/GTC/WM.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/GUR/GUR_C.png b/src/img/symbols/GUR/GUR_C.png new file mode 100644 index 00000000..12af19bd Binary files /dev/null and b/src/img/symbols/GUR/GUR_C.png differ diff --git a/src/img/symbols/GUR/GUR_C.svg b/src/img/symbols/GUR/GUR_C.svg new file mode 100644 index 00000000..c6d28cfd --- /dev/null +++ b/src/img/symbols/GUR/GUR_C.svg @@ -0,0 +1,9 @@ + + + + + + diff --git a/src/img/symbols/GUR/GUR_R.png b/src/img/symbols/GUR/GUR_R.png new file mode 100644 index 00000000..e7397102 Binary files /dev/null and b/src/img/symbols/GUR/GUR_R.png differ diff --git a/src/img/symbols/H09/80.svg b/src/img/symbols/H09/80.svg new file mode 100644 index 00000000..2f955782 --- /dev/null +++ b/src/img/symbols/H09/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/H09/C.svg b/src/img/symbols/H09/C.svg new file mode 100644 index 00000000..9b50c102 --- /dev/null +++ b/src/img/symbols/H09/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/H09/M.svg b/src/img/symbols/H09/M.svg new file mode 100644 index 00000000..f02e0ea0 --- /dev/null +++ b/src/img/symbols/H09/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/H09/R.svg b/src/img/symbols/H09/R.svg new file mode 100644 index 00000000..ee027467 --- /dev/null +++ b/src/img/symbols/H09/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/H09/T.svg b/src/img/symbols/H09/T.svg new file mode 100644 index 00000000..17808f9f --- /dev/null +++ b/src/img/symbols/H09/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/H09/U.svg b/src/img/symbols/H09/U.svg new file mode 100644 index 00000000..171dad7b --- /dev/null +++ b/src/img/symbols/H09/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/H09/WM.svg b/src/img/symbols/H09/WM.svg new file mode 100644 index 00000000..4c28ec15 --- /dev/null +++ b/src/img/symbols/H09/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/H17/80.svg b/src/img/symbols/H17/80.svg new file mode 100644 index 00000000..ef9427b5 --- /dev/null +++ b/src/img/symbols/H17/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/H17/C.svg b/src/img/symbols/H17/C.svg new file mode 100644 index 00000000..0cf9af76 --- /dev/null +++ b/src/img/symbols/H17/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/H17/M.svg b/src/img/symbols/H17/M.svg new file mode 100644 index 00000000..caf93f1b --- /dev/null +++ b/src/img/symbols/H17/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/H17/R.svg b/src/img/symbols/H17/R.svg new file mode 100644 index 00000000..6ac49726 --- /dev/null +++ b/src/img/symbols/H17/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/H17/T.svg b/src/img/symbols/H17/T.svg new file mode 100644 index 00000000..c114edce --- /dev/null +++ b/src/img/symbols/H17/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/H17/U.svg b/src/img/symbols/H17/U.svg new file mode 100644 index 00000000..1a4ebe13 --- /dev/null +++ b/src/img/symbols/H17/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/H17/WM.svg b/src/img/symbols/H17/WM.svg new file mode 100644 index 00000000..ab9e6900 --- /dev/null +++ b/src/img/symbols/H17/WM.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/HGB/80.svg b/src/img/symbols/HGB/80.svg new file mode 100644 index 00000000..96247a8b --- /dev/null +++ b/src/img/symbols/HGB/80.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/src/img/symbols/HGB/C.svg b/src/img/symbols/HGB/C.svg new file mode 100644 index 00000000..5659193a --- /dev/null +++ b/src/img/symbols/HGB/C.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + diff --git a/src/img/symbols/HGB/M.svg b/src/img/symbols/HGB/M.svg new file mode 100644 index 00000000..c1d4b823 --- /dev/null +++ b/src/img/symbols/HGB/M.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HGB/R.svg b/src/img/symbols/HGB/R.svg new file mode 100644 index 00000000..6d9fbc5b --- /dev/null +++ b/src/img/symbols/HGB/R.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HGB/T.svg b/src/img/symbols/HGB/T.svg new file mode 100644 index 00000000..ccb44bc5 --- /dev/null +++ b/src/img/symbols/HGB/T.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HGB/TS.svg b/src/img/symbols/HGB/TS.svg new file mode 100644 index 00000000..5eaaba3d --- /dev/null +++ b/src/img/symbols/HGB/TS.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HGB/U.svg b/src/img/symbols/HGB/U.svg new file mode 100644 index 00000000..f0c574b0 --- /dev/null +++ b/src/img/symbols/HGB/U.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HGB/WM.svg b/src/img/symbols/HGB/WM.svg new file mode 100644 index 00000000..891a5d3d --- /dev/null +++ b/src/img/symbols/HGB/WM.svg @@ -0,0 +1,19 @@ + + + + + + + + + + diff --git a/src/img/symbols/HML/80.svg b/src/img/symbols/HML/80.svg new file mode 100644 index 00000000..a217d52c --- /dev/null +++ b/src/img/symbols/HML/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/HML/C.svg b/src/img/symbols/HML/C.svg new file mode 100644 index 00000000..cf93a481 --- /dev/null +++ b/src/img/symbols/HML/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/HML/M.svg b/src/img/symbols/HML/M.svg new file mode 100644 index 00000000..77e89e07 --- /dev/null +++ b/src/img/symbols/HML/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/HML/R.svg b/src/img/symbols/HML/R.svg new file mode 100644 index 00000000..205e2bc8 --- /dev/null +++ b/src/img/symbols/HML/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/HML/T.svg b/src/img/symbols/HML/T.svg new file mode 100644 index 00000000..d47f8b64 --- /dev/null +++ b/src/img/symbols/HML/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/HML/U.svg b/src/img/symbols/HML/U.svg new file mode 100644 index 00000000..9d98f9c6 --- /dev/null +++ b/src/img/symbols/HML/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/HML/WM.svg b/src/img/symbols/HML/WM.svg new file mode 100644 index 00000000..6c0f57c9 --- /dev/null +++ b/src/img/symbols/HML/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/HOP/80.svg b/src/img/symbols/HOP/80.svg new file mode 100644 index 00000000..74b06db0 --- /dev/null +++ b/src/img/symbols/HOP/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/HOP/C.svg b/src/img/symbols/HOP/C.svg new file mode 100644 index 00000000..562c7d6d --- /dev/null +++ b/src/img/symbols/HOP/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/HOP/M.svg b/src/img/symbols/HOP/M.svg new file mode 100644 index 00000000..df9b960c --- /dev/null +++ b/src/img/symbols/HOP/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HOP/R.svg b/src/img/symbols/HOP/R.svg new file mode 100644 index 00000000..86be21ca --- /dev/null +++ b/src/img/symbols/HOP/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HOP/T.svg b/src/img/symbols/HOP/T.svg new file mode 100644 index 00000000..060fac0e --- /dev/null +++ b/src/img/symbols/HOP/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HOP/U.svg b/src/img/symbols/HOP/U.svg new file mode 100644 index 00000000..cd88718a --- /dev/null +++ b/src/img/symbols/HOP/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/HOP/WM.svg b/src/img/symbols/HOP/WM.svg new file mode 100644 index 00000000..7dff67b2 --- /dev/null +++ b/src/img/symbols/HOP/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/HOU/80.svg b/src/img/symbols/HOU/80.svg new file mode 100644 index 00000000..f5b49d10 --- /dev/null +++ b/src/img/symbols/HOU/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/HOU/C.svg b/src/img/symbols/HOU/C.svg new file mode 100644 index 00000000..6b5a8b5f --- /dev/null +++ b/src/img/symbols/HOU/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/HOU/M.svg b/src/img/symbols/HOU/M.svg new file mode 100644 index 00000000..8e7c5df4 --- /dev/null +++ b/src/img/symbols/HOU/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/HOU/R.svg b/src/img/symbols/HOU/R.svg new file mode 100644 index 00000000..c3ca5198 --- /dev/null +++ b/src/img/symbols/HOU/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/HOU/T.svg b/src/img/symbols/HOU/T.svg new file mode 100644 index 00000000..e859c336 --- /dev/null +++ b/src/img/symbols/HOU/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/HOU/U.svg b/src/img/symbols/HOU/U.svg new file mode 100644 index 00000000..47001ddd --- /dev/null +++ b/src/img/symbols/HOU/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/HOU/WM.svg b/src/img/symbols/HOU/WM.svg new file mode 100644 index 00000000..719ada72 --- /dev/null +++ b/src/img/symbols/HOU/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ICE/80.svg b/src/img/symbols/ICE/80.svg new file mode 100644 index 00000000..2b556fc3 --- /dev/null +++ b/src/img/symbols/ICE/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ICE/C - Original.svg b/src/img/symbols/ICE/C - Original.svg new file mode 100644 index 00000000..aed6b46c --- /dev/null +++ b/src/img/symbols/ICE/C - Original.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/ICE/C.svg b/src/img/symbols/ICE/C.svg new file mode 100644 index 00000000..3c5e147e --- /dev/null +++ b/src/img/symbols/ICE/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ICE/M.svg b/src/img/symbols/ICE/M.svg new file mode 100644 index 00000000..a97b4187 --- /dev/null +++ b/src/img/symbols/ICE/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ICE/R.svg b/src/img/symbols/ICE/R.svg new file mode 100644 index 00000000..be705ef9 --- /dev/null +++ b/src/img/symbols/ICE/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ICE/T.svg b/src/img/symbols/ICE/T.svg new file mode 100644 index 00000000..c71d8f4b --- /dev/null +++ b/src/img/symbols/ICE/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ICE/U.svg b/src/img/symbols/ICE/U.svg new file mode 100644 index 00000000..69484dcb --- /dev/null +++ b/src/img/symbols/ICE/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ICE/WM.svg b/src/img/symbols/ICE/WM.svg new file mode 100644 index 00000000..c1c652d6 --- /dev/null +++ b/src/img/symbols/ICE/WM.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/IDW/80.svg b/src/img/symbols/IDW/80.svg new file mode 100644 index 00000000..6a88e99c --- /dev/null +++ b/src/img/symbols/IDW/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/IDW/C.svg b/src/img/symbols/IDW/C.svg new file mode 100644 index 00000000..270bb5f3 --- /dev/null +++ b/src/img/symbols/IDW/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/IDW/M.svg b/src/img/symbols/IDW/M.svg new file mode 100644 index 00000000..646559a9 --- /dev/null +++ b/src/img/symbols/IDW/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/IDW/R.svg b/src/img/symbols/IDW/R.svg new file mode 100644 index 00000000..e9f6f273 --- /dev/null +++ b/src/img/symbols/IDW/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/IDW/T.svg b/src/img/symbols/IDW/T.svg new file mode 100644 index 00000000..18d1da25 --- /dev/null +++ b/src/img/symbols/IDW/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/IDW/U.svg b/src/img/symbols/IDW/U.svg new file mode 100644 index 00000000..13fd016b --- /dev/null +++ b/src/img/symbols/IDW/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/IDW/WM.svg b/src/img/symbols/IDW/WM.svg new file mode 100644 index 00000000..98f39259 --- /dev/null +++ b/src/img/symbols/IDW/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/IKO/80.svg b/src/img/symbols/IKO/80.svg new file mode 100644 index 00000000..0f17a198 --- /dev/null +++ b/src/img/symbols/IKO/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/IKO/C.svg b/src/img/symbols/IKO/C.svg new file mode 100644 index 00000000..6ab5d61e --- /dev/null +++ b/src/img/symbols/IKO/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/IKO/M2.svg b/src/img/symbols/IKO/M2.svg new file mode 100644 index 00000000..9927476c --- /dev/null +++ b/src/img/symbols/IKO/M2.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/IKO/R2.svg b/src/img/symbols/IKO/R2.svg new file mode 100644 index 00000000..2305b52d --- /dev/null +++ b/src/img/symbols/IKO/R2.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/IKO/T2.svg b/src/img/symbols/IKO/T2.svg new file mode 100644 index 00000000..bb4a268b --- /dev/null +++ b/src/img/symbols/IKO/T2.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/IKO/U2.svg b/src/img/symbols/IKO/U2.svg new file mode 100644 index 00000000..b60741c3 --- /dev/null +++ b/src/img/symbols/IKO/U2.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/IKO/WM.svg b/src/img/symbols/IKO/WM.svg new file mode 100644 index 00000000..43b24750 --- /dev/null +++ b/src/img/symbols/IKO/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/IMA/80.svg b/src/img/symbols/IMA/80.svg new file mode 100644 index 00000000..4173551b --- /dev/null +++ b/src/img/symbols/IMA/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/IMA/C.svg b/src/img/symbols/IMA/C.svg new file mode 100644 index 00000000..84222a34 --- /dev/null +++ b/src/img/symbols/IMA/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/IMA/M.svg b/src/img/symbols/IMA/M.svg new file mode 100644 index 00000000..dc246638 --- /dev/null +++ b/src/img/symbols/IMA/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/IMA/R.svg b/src/img/symbols/IMA/R.svg new file mode 100644 index 00000000..d43e12b4 --- /dev/null +++ b/src/img/symbols/IMA/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/IMA/T.svg b/src/img/symbols/IMA/T.svg new file mode 100644 index 00000000..85a97676 --- /dev/null +++ b/src/img/symbols/IMA/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/IMA/U.svg b/src/img/symbols/IMA/U.svg new file mode 100644 index 00000000..857eaf6f --- /dev/null +++ b/src/img/symbols/IMA/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/IMA/WM.svg b/src/img/symbols/IMA/WM.svg new file mode 100644 index 00000000..ddca667d --- /dev/null +++ b/src/img/symbols/IMA/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/INV/80.svg b/src/img/symbols/INV/80.svg new file mode 100644 index 00000000..ca44f277 --- /dev/null +++ b/src/img/symbols/INV/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/INV/C.svg b/src/img/symbols/INV/C.svg new file mode 100644 index 00000000..c97149a7 --- /dev/null +++ b/src/img/symbols/INV/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/INV/M.svg b/src/img/symbols/INV/M.svg new file mode 100644 index 00000000..ae09398f --- /dev/null +++ b/src/img/symbols/INV/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/INV/R.svg b/src/img/symbols/INV/R.svg new file mode 100644 index 00000000..14bd19a7 --- /dev/null +++ b/src/img/symbols/INV/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/INV/T.svg b/src/img/symbols/INV/T.svg new file mode 100644 index 00000000..c7169a15 --- /dev/null +++ b/src/img/symbols/INV/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/INV/U.svg b/src/img/symbols/INV/U.svg new file mode 100644 index 00000000..835bc102 --- /dev/null +++ b/src/img/symbols/INV/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/INV/WM.svg b/src/img/symbols/INV/WM.svg new file mode 100644 index 00000000..f477ec97 --- /dev/null +++ b/src/img/symbols/INV/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ISD/80.svg b/src/img/symbols/ISD/80.svg new file mode 100644 index 00000000..036c99c8 --- /dev/null +++ b/src/img/symbols/ISD/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ISD/C.svg b/src/img/symbols/ISD/C.svg new file mode 100644 index 00000000..7c65ad78 --- /dev/null +++ b/src/img/symbols/ISD/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ISD/M.svg b/src/img/symbols/ISD/M.svg new file mode 100644 index 00000000..aebd7e8e --- /dev/null +++ b/src/img/symbols/ISD/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISD/R.svg b/src/img/symbols/ISD/R.svg new file mode 100644 index 00000000..04f172e9 --- /dev/null +++ b/src/img/symbols/ISD/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISD/T.svg b/src/img/symbols/ISD/T.svg new file mode 100644 index 00000000..f650583b --- /dev/null +++ b/src/img/symbols/ISD/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISD/U.svg b/src/img/symbols/ISD/U.svg new file mode 100644 index 00000000..269863f0 --- /dev/null +++ b/src/img/symbols/ISD/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISD/WM.svg b/src/img/symbols/ISD/WM.svg new file mode 100644 index 00000000..4ad96610 --- /dev/null +++ b/src/img/symbols/ISD/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/ISV/C.svg b/src/img/symbols/ISV/C.svg new file mode 100644 index 00000000..410378de --- /dev/null +++ b/src/img/symbols/ISV/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/ISV/M.svg b/src/img/symbols/ISV/M.svg new file mode 100644 index 00000000..41d71535 --- /dev/null +++ b/src/img/symbols/ISV/M.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISV/R.svg b/src/img/symbols/ISV/R.svg new file mode 100644 index 00000000..2274c882 --- /dev/null +++ b/src/img/symbols/ISV/R.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISV/U.svg b/src/img/symbols/ISV/U.svg new file mode 100644 index 00000000..df01f6f8 --- /dev/null +++ b/src/img/symbols/ISV/U.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISW/C.svg b/src/img/symbols/ISW/C.svg new file mode 100644 index 00000000..b2ecf62e --- /dev/null +++ b/src/img/symbols/ISW/C.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/src/img/symbols/ISW/M.svg b/src/img/symbols/ISW/M.svg new file mode 100644 index 00000000..15e78be6 --- /dev/null +++ b/src/img/symbols/ISW/M.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISW/R.svg b/src/img/symbols/ISW/R.svg new file mode 100644 index 00000000..596c42fc --- /dev/null +++ b/src/img/symbols/ISW/R.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ISW/U.svg b/src/img/symbols/ISW/U.svg new file mode 100644 index 00000000..7c5c2d2e --- /dev/null +++ b/src/img/symbols/ISW/U.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/J22/80.svg b/src/img/symbols/J22/80.svg new file mode 100644 index 00000000..24480125 --- /dev/null +++ b/src/img/symbols/J22/80.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/J22/C.svg b/src/img/symbols/J22/C.svg new file mode 100644 index 00000000..d1e518ba --- /dev/null +++ b/src/img/symbols/J22/C.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/J22/M.svg b/src/img/symbols/J22/M.svg new file mode 100644 index 00000000..bade71e2 --- /dev/null +++ b/src/img/symbols/J22/M.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/J22/R.svg b/src/img/symbols/J22/R.svg new file mode 100644 index 00000000..b0d822f4 --- /dev/null +++ b/src/img/symbols/J22/R.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/J22/T.svg b/src/img/symbols/J22/T.svg new file mode 100644 index 00000000..6aa00afb --- /dev/null +++ b/src/img/symbols/J22/T.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/J22/U.svg b/src/img/symbols/J22/U.svg new file mode 100644 index 00000000..7d5c3faa --- /dev/null +++ b/src/img/symbols/J22/U.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/J22/WM.svg b/src/img/symbols/J22/WM.svg new file mode 100644 index 00000000..21087c1f --- /dev/null +++ b/src/img/symbols/J22/WM.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/JGP/80.svg b/src/img/symbols/JGP/80.svg new file mode 100644 index 00000000..cf989c6e --- /dev/null +++ b/src/img/symbols/JGP/80.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/src/img/symbols/JGP/C.svg b/src/img/symbols/JGP/C.svg new file mode 100644 index 00000000..c1989182 --- /dev/null +++ b/src/img/symbols/JGP/C.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/src/img/symbols/JGP/M.svg b/src/img/symbols/JGP/M.svg new file mode 100644 index 00000000..9cf882b2 --- /dev/null +++ b/src/img/symbols/JGP/M.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JGP/R.svg b/src/img/symbols/JGP/R.svg new file mode 100644 index 00000000..adc69ee3 --- /dev/null +++ b/src/img/symbols/JGP/R.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JGP/T.svg b/src/img/symbols/JGP/T.svg new file mode 100644 index 00000000..a8ca1bb5 --- /dev/null +++ b/src/img/symbols/JGP/T.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JGP/U.svg b/src/img/symbols/JGP/U.svg new file mode 100644 index 00000000..a1f31a6d --- /dev/null +++ b/src/img/symbols/JGP/U.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JGP/WM.svg b/src/img/symbols/JGP/WM.svg new file mode 100644 index 00000000..1f6424e3 --- /dev/null +++ b/src/img/symbols/JGP/WM.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/src/img/symbols/JHH/80.svg b/src/img/symbols/JHH/80.svg new file mode 100644 index 00000000..fbafc13e --- /dev/null +++ b/src/img/symbols/JHH/80.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/src/img/symbols/JHH/C.svg b/src/img/symbols/JHH/C.svg new file mode 100644 index 00000000..f2eee802 --- /dev/null +++ b/src/img/symbols/JHH/C.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/src/img/symbols/JHH/M.svg b/src/img/symbols/JHH/M.svg new file mode 100644 index 00000000..0d8f6cc7 --- /dev/null +++ b/src/img/symbols/JHH/M.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JHH/R.svg b/src/img/symbols/JHH/R.svg new file mode 100644 index 00000000..020199c2 --- /dev/null +++ b/src/img/symbols/JHH/R.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JHH/T.svg b/src/img/symbols/JHH/T.svg new file mode 100644 index 00000000..d0514969 --- /dev/null +++ b/src/img/symbols/JHH/T.svg @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JHH/U.svg b/src/img/symbols/JHH/U.svg new file mode 100644 index 00000000..c34b2a6c --- /dev/null +++ b/src/img/symbols/JHH/U.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JHH/WM.svg b/src/img/symbols/JHH/WM.svg new file mode 100644 index 00000000..97211c25 --- /dev/null +++ b/src/img/symbols/JHH/WM.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + diff --git a/src/img/symbols/JMP/C.svg b/src/img/symbols/JMP/C.svg new file mode 100644 index 00000000..d88aab80 --- /dev/null +++ b/src/img/symbols/JMP/C.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JMP/M.svg b/src/img/symbols/JMP/M.svg new file mode 100644 index 00000000..e7ae951e --- /dev/null +++ b/src/img/symbols/JMP/M.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JMP/R.svg b/src/img/symbols/JMP/R.svg new file mode 100644 index 00000000..8797ae0d --- /dev/null +++ b/src/img/symbols/JMP/R.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JMP/U.svg b/src/img/symbols/JMP/U.svg new file mode 100644 index 00000000..f3fb3d13 --- /dev/null +++ b/src/img/symbols/JMP/U.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JOU/80.svg b/src/img/symbols/JOU/80.svg new file mode 100644 index 00000000..931770d1 --- /dev/null +++ b/src/img/symbols/JOU/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/JOU/C.svg b/src/img/symbols/JOU/C.svg new file mode 100644 index 00000000..e3fa440e --- /dev/null +++ b/src/img/symbols/JOU/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/JOU/M.svg b/src/img/symbols/JOU/M.svg new file mode 100644 index 00000000..b24590f4 --- /dev/null +++ b/src/img/symbols/JOU/M.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JOU/R.svg b/src/img/symbols/JOU/R.svg new file mode 100644 index 00000000..384b52d9 --- /dev/null +++ b/src/img/symbols/JOU/R.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JOU/T.svg b/src/img/symbols/JOU/T.svg new file mode 100644 index 00000000..88fd2bf5 --- /dev/null +++ b/src/img/symbols/JOU/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JOU/U.svg b/src/img/symbols/JOU/U.svg new file mode 100644 index 00000000..76bf6d4b --- /dev/null +++ b/src/img/symbols/JOU/U.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/JOU/WM.svg b/src/img/symbols/JOU/WM.svg new file mode 100644 index 00000000..f918baf8 --- /dev/null +++ b/src/img/symbols/JOU/WM.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/JUD/80.svg b/src/img/symbols/JUD/80.svg new file mode 100644 index 00000000..b035bc72 --- /dev/null +++ b/src/img/symbols/JUD/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/JUD/C.svg b/src/img/symbols/JUD/C.svg new file mode 100644 index 00000000..5202cd47 --- /dev/null +++ b/src/img/symbols/JUD/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/JUD/M.svg b/src/img/symbols/JUD/M.svg new file mode 100644 index 00000000..56bb7387 --- /dev/null +++ b/src/img/symbols/JUD/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/JUD/R.svg b/src/img/symbols/JUD/R.svg new file mode 100644 index 00000000..235073fa --- /dev/null +++ b/src/img/symbols/JUD/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/JUD/T.svg b/src/img/symbols/JUD/T.svg new file mode 100644 index 00000000..ec489ca1 --- /dev/null +++ b/src/img/symbols/JUD/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/JUD/U.svg b/src/img/symbols/JUD/U.svg new file mode 100644 index 00000000..5f7daecb --- /dev/null +++ b/src/img/symbols/JUD/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/JUD/WM.svg b/src/img/symbols/JUD/WM.svg new file mode 100644 index 00000000..39dad90a --- /dev/null +++ b/src/img/symbols/JUD/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/KHC/80.svg b/src/img/symbols/KHC/80.svg new file mode 100644 index 00000000..49278b4e --- /dev/null +++ b/src/img/symbols/KHC/80.svg @@ -0,0 +1,77 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/KHC/C.svg b/src/img/symbols/KHC/C.svg new file mode 100644 index 00000000..86034a29 --- /dev/null +++ b/src/img/symbols/KHC/C.svg @@ -0,0 +1,77 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/KHC/M.svg b/src/img/symbols/KHC/M.svg new file mode 100644 index 00000000..ffda1953 --- /dev/null +++ b/src/img/symbols/KHC/M.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/KHC/R.svg b/src/img/symbols/KHC/R.svg new file mode 100644 index 00000000..df7bc781 --- /dev/null +++ b/src/img/symbols/KHC/R.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/KHC/T.svg b/src/img/symbols/KHC/T.svg new file mode 100644 index 00000000..73c31899 --- /dev/null +++ b/src/img/symbols/KHC/T.svg @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/KHC/U.svg b/src/img/symbols/KHC/U.svg new file mode 100644 index 00000000..82ce6a44 --- /dev/null +++ b/src/img/symbols/KHC/U.svg @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/KHC/WM.svg b/src/img/symbols/KHC/WM.svg new file mode 100644 index 00000000..46bec644 --- /dev/null +++ b/src/img/symbols/KHC/WM.svg @@ -0,0 +1,77 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/KHM/C.svg b/src/img/symbols/KHM/C.svg new file mode 100644 index 00000000..1ad2b6ae --- /dev/null +++ b/src/img/symbols/KHM/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/KHM/M.svg b/src/img/symbols/KHM/M.svg new file mode 100644 index 00000000..f9a79f92 --- /dev/null +++ b/src/img/symbols/KHM/M.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/KHM/R.svg b/src/img/symbols/KHM/R.svg new file mode 100644 index 00000000..099ac844 --- /dev/null +++ b/src/img/symbols/KHM/R.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/KHM/U.svg b/src/img/symbols/KHM/U.svg new file mode 100644 index 00000000..ffb842a5 --- /dev/null +++ b/src/img/symbols/KHM/U.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/KLD/80.svg b/src/img/symbols/KLD/80.svg new file mode 100644 index 00000000..4104a820 --- /dev/null +++ b/src/img/symbols/KLD/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/KLD/C.svg b/src/img/symbols/KLD/C.svg new file mode 100644 index 00000000..2bf58352 --- /dev/null +++ b/src/img/symbols/KLD/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/KLD/M.svg b/src/img/symbols/KLD/M.svg new file mode 100644 index 00000000..e220c531 --- /dev/null +++ b/src/img/symbols/KLD/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/KLD/R.svg b/src/img/symbols/KLD/R.svg new file mode 100644 index 00000000..1206e3d7 --- /dev/null +++ b/src/img/symbols/KLD/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/KLD/T.svg b/src/img/symbols/KLD/T.svg new file mode 100644 index 00000000..46a67732 --- /dev/null +++ b/src/img/symbols/KLD/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/KLD/U.svg b/src/img/symbols/KLD/U.svg new file mode 100644 index 00000000..efae7ffc --- /dev/null +++ b/src/img/symbols/KLD/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/KLD/WM.svg b/src/img/symbols/KLD/WM.svg new file mode 100644 index 00000000..20876940 --- /dev/null +++ b/src/img/symbols/KLD/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/KTK/80.svg b/src/img/symbols/KTK/80.svg new file mode 100644 index 00000000..f5a4a8e8 --- /dev/null +++ b/src/img/symbols/KTK/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/KTK/C.svg b/src/img/symbols/KTK/C.svg new file mode 100644 index 00000000..7955363e --- /dev/null +++ b/src/img/symbols/KTK/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/KTK/M.svg b/src/img/symbols/KTK/M.svg new file mode 100644 index 00000000..3b0cd60d --- /dev/null +++ b/src/img/symbols/KTK/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/KTK/R.svg b/src/img/symbols/KTK/R.svg new file mode 100644 index 00000000..2155f0ae --- /dev/null +++ b/src/img/symbols/KTK/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/KTK/T.svg b/src/img/symbols/KTK/T.svg new file mode 100644 index 00000000..02561087 --- /dev/null +++ b/src/img/symbols/KTK/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/KTK/U.svg b/src/img/symbols/KTK/U.svg new file mode 100644 index 00000000..40910cbc --- /dev/null +++ b/src/img/symbols/KTK/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/KTK/WM.svg b/src/img/symbols/KTK/WM.svg new file mode 100644 index 00000000..f8e11ceb --- /dev/null +++ b/src/img/symbols/KTK/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/LEA/80.svg b/src/img/symbols/LEA/80.svg new file mode 100644 index 00000000..e75f2ad1 --- /dev/null +++ b/src/img/symbols/LEA/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/LEA/C.svg b/src/img/symbols/LEA/C.svg new file mode 100644 index 00000000..774d3b69 --- /dev/null +++ b/src/img/symbols/LEA/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/LEA/M.svg b/src/img/symbols/LEA/M.svg new file mode 100644 index 00000000..2c41eb2e --- /dev/null +++ b/src/img/symbols/LEA/M.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA/R.svg b/src/img/symbols/LEA/R.svg new file mode 100644 index 00000000..7bde0e78 --- /dev/null +++ b/src/img/symbols/LEA/R.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA/T.svg b/src/img/symbols/LEA/T.svg new file mode 100644 index 00000000..75bc1830 --- /dev/null +++ b/src/img/symbols/LEA/T.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA/U.svg b/src/img/symbols/LEA/U.svg new file mode 100644 index 00000000..5ef52ee9 --- /dev/null +++ b/src/img/symbols/LEA/U.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA/WM.svg b/src/img/symbols/LEA/WM.svg new file mode 100644 index 00000000..c1c4e859 --- /dev/null +++ b/src/img/symbols/LEA/WM.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/LEA_ALT1/80.svg b/src/img/symbols/LEA_ALT1/80.svg new file mode 100644 index 00000000..dd7f2080 --- /dev/null +++ b/src/img/symbols/LEA_ALT1/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/LEA_ALT1/C.svg b/src/img/symbols/LEA_ALT1/C.svg new file mode 100644 index 00000000..a153bd21 --- /dev/null +++ b/src/img/symbols/LEA_ALT1/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/LEA_ALT1/M.svg b/src/img/symbols/LEA_ALT1/M.svg new file mode 100644 index 00000000..5259733d --- /dev/null +++ b/src/img/symbols/LEA_ALT1/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA_ALT1/R.svg b/src/img/symbols/LEA_ALT1/R.svg new file mode 100644 index 00000000..7421fc45 --- /dev/null +++ b/src/img/symbols/LEA_ALT1/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA_ALT1/T.svg b/src/img/symbols/LEA_ALT1/T.svg new file mode 100644 index 00000000..5a63752d --- /dev/null +++ b/src/img/symbols/LEA_ALT1/T.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA_ALT1/U.svg b/src/img/symbols/LEA_ALT1/U.svg new file mode 100644 index 00000000..d81968e9 --- /dev/null +++ b/src/img/symbols/LEA_ALT1/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEA_ALT1/WM.svg b/src/img/symbols/LEA_ALT1/WM.svg new file mode 100644 index 00000000..430ef3a7 --- /dev/null +++ b/src/img/symbols/LEA_ALT1/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/LEB/80.svg b/src/img/symbols/LEB/80.svg new file mode 100644 index 00000000..9b80b120 --- /dev/null +++ b/src/img/symbols/LEB/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/LEB/C.svg b/src/img/symbols/LEB/C.svg new file mode 100644 index 00000000..ded3ddf9 --- /dev/null +++ b/src/img/symbols/LEB/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/LEB/M.svg b/src/img/symbols/LEB/M.svg new file mode 100644 index 00000000..4bc5a8ca --- /dev/null +++ b/src/img/symbols/LEB/M.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB/R.svg b/src/img/symbols/LEB/R.svg new file mode 100644 index 00000000..0274394a --- /dev/null +++ b/src/img/symbols/LEB/R.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB/T.svg b/src/img/symbols/LEB/T.svg new file mode 100644 index 00000000..1e6129ae --- /dev/null +++ b/src/img/symbols/LEB/T.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB/U.svg b/src/img/symbols/LEB/U.svg new file mode 100644 index 00000000..3e83cde1 --- /dev/null +++ b/src/img/symbols/LEB/U.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB/WM.svg b/src/img/symbols/LEB/WM.svg new file mode 100644 index 00000000..c8505379 --- /dev/null +++ b/src/img/symbols/LEB/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/LEB_ALT1/80.svg b/src/img/symbols/LEB_ALT1/80.svg new file mode 100644 index 00000000..7c296677 --- /dev/null +++ b/src/img/symbols/LEB_ALT1/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/LEB_ALT1/C.svg b/src/img/symbols/LEB_ALT1/C.svg new file mode 100644 index 00000000..556ec71c --- /dev/null +++ b/src/img/symbols/LEB_ALT1/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/LEB_ALT1/M.svg b/src/img/symbols/LEB_ALT1/M.svg new file mode 100644 index 00000000..188bcf5b --- /dev/null +++ b/src/img/symbols/LEB_ALT1/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB_ALT1/R.svg b/src/img/symbols/LEB_ALT1/R.svg new file mode 100644 index 00000000..883e001e --- /dev/null +++ b/src/img/symbols/LEB_ALT1/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB_ALT1/T.svg b/src/img/symbols/LEB_ALT1/T.svg new file mode 100644 index 00000000..91657494 --- /dev/null +++ b/src/img/symbols/LEB_ALT1/T.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB_ALT1/U.svg b/src/img/symbols/LEB_ALT1/U.svg new file mode 100644 index 00000000..ef3fd454 --- /dev/null +++ b/src/img/symbols/LEB_ALT1/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEB_ALT1/WM.svg b/src/img/symbols/LEB_ALT1/WM.svg new file mode 100644 index 00000000..01a00231 --- /dev/null +++ b/src/img/symbols/LEB_ALT1/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/LEG/80.svg b/src/img/symbols/LEG/80.svg new file mode 100644 index 00000000..8f743e02 --- /dev/null +++ b/src/img/symbols/LEG/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/LEG/C - Original.svg b/src/img/symbols/LEG/C - Original.svg new file mode 100644 index 00000000..0fbe8b08 --- /dev/null +++ b/src/img/symbols/LEG/C - Original.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/LEG/C.svg b/src/img/symbols/LEG/C.svg new file mode 100644 index 00000000..83acb8ae --- /dev/null +++ b/src/img/symbols/LEG/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/LEG/M.svg b/src/img/symbols/LEG/M.svg new file mode 100644 index 00000000..4d669401 --- /dev/null +++ b/src/img/symbols/LEG/M.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEG/R.svg b/src/img/symbols/LEG/R.svg new file mode 100644 index 00000000..a3ce6c44 --- /dev/null +++ b/src/img/symbols/LEG/R.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEG/T.svg b/src/img/symbols/LEG/T.svg new file mode 100644 index 00000000..0648ead2 --- /dev/null +++ b/src/img/symbols/LEG/T.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEG/U.svg b/src/img/symbols/LEG/U.svg new file mode 100644 index 00000000..2ce9face --- /dev/null +++ b/src/img/symbols/LEG/U.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/LEG/WM.svg b/src/img/symbols/LEG/WM.svg new file mode 100644 index 00000000..1e9554c3 --- /dev/null +++ b/src/img/symbols/LEG/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/LGN/80.svg b/src/img/symbols/LGN/80.svg new file mode 100644 index 00000000..e7010ebf --- /dev/null +++ b/src/img/symbols/LGN/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/LGN/C.svg b/src/img/symbols/LGN/C.svg new file mode 100644 index 00000000..88e45436 --- /dev/null +++ b/src/img/symbols/LGN/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/LGN/M.svg b/src/img/symbols/LGN/M.svg new file mode 100644 index 00000000..577dd212 --- /dev/null +++ b/src/img/symbols/LGN/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LGN/R.svg b/src/img/symbols/LGN/R.svg new file mode 100644 index 00000000..1e384d96 --- /dev/null +++ b/src/img/symbols/LGN/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LGN/T.svg b/src/img/symbols/LGN/T.svg new file mode 100644 index 00000000..5e098ca7 --- /dev/null +++ b/src/img/symbols/LGN/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LGN/U.svg b/src/img/symbols/LGN/U.svg new file mode 100644 index 00000000..70458406 --- /dev/null +++ b/src/img/symbols/LGN/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LGN/WM.svg b/src/img/symbols/LGN/WM.svg new file mode 100644 index 00000000..299385a8 --- /dev/null +++ b/src/img/symbols/LGN/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/LRW/80.svg b/src/img/symbols/LRW/80.svg new file mode 100644 index 00000000..4d2672d8 --- /dev/null +++ b/src/img/symbols/LRW/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/LRW/C.svg b/src/img/symbols/LRW/C.svg new file mode 100644 index 00000000..436b5c13 --- /dev/null +++ b/src/img/symbols/LRW/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/LRW/M.svg b/src/img/symbols/LRW/M.svg new file mode 100644 index 00000000..97da22e1 --- /dev/null +++ b/src/img/symbols/LRW/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LRW/R.svg b/src/img/symbols/LRW/R.svg new file mode 100644 index 00000000..f9a791ae --- /dev/null +++ b/src/img/symbols/LRW/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LRW/T.svg b/src/img/symbols/LRW/T.svg new file mode 100644 index 00000000..6e495e8a --- /dev/null +++ b/src/img/symbols/LRW/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LRW/U.svg b/src/img/symbols/LRW/U.svg new file mode 100644 index 00000000..0df10548 --- /dev/null +++ b/src/img/symbols/LRW/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/LRW/WM.svg b/src/img/symbols/LRW/WM.svg new file mode 100644 index 00000000..c555850d --- /dev/null +++ b/src/img/symbols/LRW/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/M10/80.svg b/src/img/symbols/M10/80.svg new file mode 100644 index 00000000..2585c0de --- /dev/null +++ b/src/img/symbols/M10/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M10/C.svg b/src/img/symbols/M10/C.svg new file mode 100644 index 00000000..0d9c6dac --- /dev/null +++ b/src/img/symbols/M10/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M10/M.svg b/src/img/symbols/M10/M.svg new file mode 100644 index 00000000..9cf420d2 --- /dev/null +++ b/src/img/symbols/M10/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M10/R.svg b/src/img/symbols/M10/R.svg new file mode 100644 index 00000000..01b250ca --- /dev/null +++ b/src/img/symbols/M10/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M10/T.svg b/src/img/symbols/M10/T.svg new file mode 100644 index 00000000..a40c6419 --- /dev/null +++ b/src/img/symbols/M10/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M10/U.svg b/src/img/symbols/M10/U.svg new file mode 100644 index 00000000..1431532c --- /dev/null +++ b/src/img/symbols/M10/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M10/Watermark - M25.svg b/src/img/symbols/M10/Watermark - M25.svg new file mode 100644 index 00000000..54208792 --- /dev/null +++ b/src/img/symbols/M10/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/M11/80.svg b/src/img/symbols/M11/80.svg new file mode 100644 index 00000000..94ee0809 --- /dev/null +++ b/src/img/symbols/M11/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M11/C.svg b/src/img/symbols/M11/C.svg new file mode 100644 index 00000000..d702b4db --- /dev/null +++ b/src/img/symbols/M11/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M11/M.svg b/src/img/symbols/M11/M.svg new file mode 100644 index 00000000..e34812c6 --- /dev/null +++ b/src/img/symbols/M11/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M11/R.svg b/src/img/symbols/M11/R.svg new file mode 100644 index 00000000..dac065fd --- /dev/null +++ b/src/img/symbols/M11/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M11/T.svg b/src/img/symbols/M11/T.svg new file mode 100644 index 00000000..cd1436ec --- /dev/null +++ b/src/img/symbols/M11/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M11/U.svg b/src/img/symbols/M11/U.svg new file mode 100644 index 00000000..01472482 --- /dev/null +++ b/src/img/symbols/M11/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M11/Watermark - M25.svg b/src/img/symbols/M11/Watermark - M25.svg new file mode 100644 index 00000000..77541756 --- /dev/null +++ b/src/img/symbols/M11/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/M12/80.svg b/src/img/symbols/M12/80.svg new file mode 100644 index 00000000..634d26b1 --- /dev/null +++ b/src/img/symbols/M12/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M12/C.svg b/src/img/symbols/M12/C.svg new file mode 100644 index 00000000..37a29a4b --- /dev/null +++ b/src/img/symbols/M12/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M12/M.svg b/src/img/symbols/M12/M.svg new file mode 100644 index 00000000..daded625 --- /dev/null +++ b/src/img/symbols/M12/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M12/R.svg b/src/img/symbols/M12/R.svg new file mode 100644 index 00000000..8917c7e9 --- /dev/null +++ b/src/img/symbols/M12/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M12/T.svg b/src/img/symbols/M12/T.svg new file mode 100644 index 00000000..a4457da1 --- /dev/null +++ b/src/img/symbols/M12/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M12/U.svg b/src/img/symbols/M12/U.svg new file mode 100644 index 00000000..fd465650 --- /dev/null +++ b/src/img/symbols/M12/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M12/Watermark - M25.svg b/src/img/symbols/M12/Watermark - M25.svg new file mode 100644 index 00000000..000d6d63 --- /dev/null +++ b/src/img/symbols/M12/Watermark - M25.svg @@ -0,0 +1,5 @@ + + + diff --git a/src/img/symbols/M13/80.svg b/src/img/symbols/M13/80.svg new file mode 100644 index 00000000..0a60e7db --- /dev/null +++ b/src/img/symbols/M13/80.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M13/C.svg b/src/img/symbols/M13/C.svg new file mode 100644 index 00000000..b057533d --- /dev/null +++ b/src/img/symbols/M13/C.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M13/M.svg b/src/img/symbols/M13/M.svg new file mode 100644 index 00000000..a0f92ddb --- /dev/null +++ b/src/img/symbols/M13/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M13/R.svg b/src/img/symbols/M13/R.svg new file mode 100644 index 00000000..2fbdd318 --- /dev/null +++ b/src/img/symbols/M13/R.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M13/T.svg b/src/img/symbols/M13/T.svg new file mode 100644 index 00000000..b5a18c25 --- /dev/null +++ b/src/img/symbols/M13/T.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M13/U.svg b/src/img/symbols/M13/U.svg new file mode 100644 index 00000000..1412180c --- /dev/null +++ b/src/img/symbols/M13/U.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M13/Watermark - M25.svg b/src/img/symbols/M13/Watermark - M25.svg new file mode 100644 index 00000000..bf9003a4 --- /dev/null +++ b/src/img/symbols/M13/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/M14/80.svg b/src/img/symbols/M14/80.svg new file mode 100644 index 00000000..fbba9403 --- /dev/null +++ b/src/img/symbols/M14/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/M14/C.svg b/src/img/symbols/M14/C.svg new file mode 100644 index 00000000..93b3e502 --- /dev/null +++ b/src/img/symbols/M14/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/M14/M.svg b/src/img/symbols/M14/M.svg new file mode 100644 index 00000000..626f0c1d --- /dev/null +++ b/src/img/symbols/M14/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M14/R.svg b/src/img/symbols/M14/R.svg new file mode 100644 index 00000000..cf01e3f4 --- /dev/null +++ b/src/img/symbols/M14/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M14/T.svg b/src/img/symbols/M14/T.svg new file mode 100644 index 00000000..d8fa8f1c --- /dev/null +++ b/src/img/symbols/M14/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M14/U.svg b/src/img/symbols/M14/U.svg new file mode 100644 index 00000000..e6ef31c5 --- /dev/null +++ b/src/img/symbols/M14/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M14/Watermark - M25.svg b/src/img/symbols/M14/Watermark - M25.svg new file mode 100644 index 00000000..8b230507 --- /dev/null +++ b/src/img/symbols/M14/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/M15/80.svg b/src/img/symbols/M15/80.svg new file mode 100644 index 00000000..b8449b26 --- /dev/null +++ b/src/img/symbols/M15/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/M15/C.svg b/src/img/symbols/M15/C.svg new file mode 100644 index 00000000..4d420c85 --- /dev/null +++ b/src/img/symbols/M15/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/M15/M.svg b/src/img/symbols/M15/M.svg new file mode 100644 index 00000000..b39665ff --- /dev/null +++ b/src/img/symbols/M15/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M15/R.svg b/src/img/symbols/M15/R.svg new file mode 100644 index 00000000..de3ad1e4 --- /dev/null +++ b/src/img/symbols/M15/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M15/S.svg b/src/img/symbols/M15/S.svg new file mode 100644 index 00000000..6113bfcc --- /dev/null +++ b/src/img/symbols/M15/S.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M15/T.svg b/src/img/symbols/M15/T.svg new file mode 100644 index 00000000..a2ffa3ad --- /dev/null +++ b/src/img/symbols/M15/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M15/U.svg b/src/img/symbols/M15/U.svg new file mode 100644 index 00000000..6438012b --- /dev/null +++ b/src/img/symbols/M15/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M15/Watermark - M25.svg b/src/img/symbols/M15/Watermark - M25.svg new file mode 100644 index 00000000..8d3be58e --- /dev/null +++ b/src/img/symbols/M15/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/M19/80.svg b/src/img/symbols/M19/80.svg new file mode 100644 index 00000000..9ace2594 --- /dev/null +++ b/src/img/symbols/M19/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/M19/C.svg b/src/img/symbols/M19/C.svg new file mode 100644 index 00000000..e7e1bfe7 --- /dev/null +++ b/src/img/symbols/M19/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/M19/M.svg b/src/img/symbols/M19/M.svg new file mode 100644 index 00000000..3aa262ce --- /dev/null +++ b/src/img/symbols/M19/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M19/R.svg b/src/img/symbols/M19/R.svg new file mode 100644 index 00000000..3efa80d9 --- /dev/null +++ b/src/img/symbols/M19/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M19/T.svg b/src/img/symbols/M19/T.svg new file mode 100644 index 00000000..3568b291 --- /dev/null +++ b/src/img/symbols/M19/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M19/U.svg b/src/img/symbols/M19/U.svg new file mode 100644 index 00000000..36dbcafb --- /dev/null +++ b/src/img/symbols/M19/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/M19/WM.svg b/src/img/symbols/M19/WM.svg new file mode 100644 index 00000000..79c4c83d --- /dev/null +++ b/src/img/symbols/M19/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/M20/80.svg b/src/img/symbols/M20/80.svg new file mode 100644 index 00000000..5fdaf6a7 --- /dev/null +++ b/src/img/symbols/M20/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M20/C.svg b/src/img/symbols/M20/C.svg new file mode 100644 index 00000000..74bcdd52 --- /dev/null +++ b/src/img/symbols/M20/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/M20/M.svg b/src/img/symbols/M20/M.svg new file mode 100644 index 00000000..227dfe93 --- /dev/null +++ b/src/img/symbols/M20/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M20/R.svg b/src/img/symbols/M20/R.svg new file mode 100644 index 00000000..ef4e926e --- /dev/null +++ b/src/img/symbols/M20/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M20/T.svg b/src/img/symbols/M20/T.svg new file mode 100644 index 00000000..66de302a --- /dev/null +++ b/src/img/symbols/M20/T.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M20/U.svg b/src/img/symbols/M20/U.svg new file mode 100644 index 00000000..a49d38f0 --- /dev/null +++ b/src/img/symbols/M20/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/M20/WM.svg b/src/img/symbols/M20/WM.svg new file mode 100644 index 00000000..cadb15f0 --- /dev/null +++ b/src/img/symbols/M20/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/M21/C.svg b/src/img/symbols/M21/C.svg new file mode 100644 index 00000000..736437c9 --- /dev/null +++ b/src/img/symbols/M21/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/M21/M.svg b/src/img/symbols/M21/M.svg new file mode 100644 index 00000000..88e08182 --- /dev/null +++ b/src/img/symbols/M21/M.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M21/R.svg b/src/img/symbols/M21/R.svg new file mode 100644 index 00000000..00d56767 --- /dev/null +++ b/src/img/symbols/M21/R.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/M21/U.svg b/src/img/symbols/M21/U.svg new file mode 100644 index 00000000..2eb3fbd1 --- /dev/null +++ b/src/img/symbols/M21/U.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MAT/80.svg b/src/img/symbols/MAT/80.svg new file mode 100644 index 00000000..519cd575 --- /dev/null +++ b/src/img/symbols/MAT/80.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MAT/C.svg b/src/img/symbols/MAT/C.svg new file mode 100644 index 00000000..ff69ef78 --- /dev/null +++ b/src/img/symbols/MAT/C.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MAT/M.svg b/src/img/symbols/MAT/M.svg new file mode 100644 index 00000000..66d71a17 --- /dev/null +++ b/src/img/symbols/MAT/M.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MAT/R.svg b/src/img/symbols/MAT/R.svg new file mode 100644 index 00000000..95ba7e19 --- /dev/null +++ b/src/img/symbols/MAT/R.svg @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MAT/T.svg b/src/img/symbols/MAT/T.svg new file mode 100644 index 00000000..1cf8369a --- /dev/null +++ b/src/img/symbols/MAT/T.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MAT/U.svg b/src/img/symbols/MAT/U.svg new file mode 100644 index 00000000..6f21d70a --- /dev/null +++ b/src/img/symbols/MAT/U.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MAT/WM.svg b/src/img/symbols/MAT/WM.svg new file mode 100644 index 00000000..c7236aac --- /dev/null +++ b/src/img/symbols/MAT/WM.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MBS/80.svg b/src/img/symbols/MBS/80.svg new file mode 100644 index 00000000..812a3915 --- /dev/null +++ b/src/img/symbols/MBS/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MBS/C.svg b/src/img/symbols/MBS/C.svg new file mode 100644 index 00000000..1334298b --- /dev/null +++ b/src/img/symbols/MBS/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MBS/M.svg b/src/img/symbols/MBS/M.svg new file mode 100644 index 00000000..e26cd52e --- /dev/null +++ b/src/img/symbols/MBS/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MBS/R.svg b/src/img/symbols/MBS/R.svg new file mode 100644 index 00000000..c57231c7 --- /dev/null +++ b/src/img/symbols/MBS/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MBS/T.svg b/src/img/symbols/MBS/T.svg new file mode 100644 index 00000000..53119d4a --- /dev/null +++ b/src/img/symbols/MBS/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MBS/U.svg b/src/img/symbols/MBS/U.svg new file mode 100644 index 00000000..df16e844 --- /dev/null +++ b/src/img/symbols/MBS/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MBS/WM (2).svg b/src/img/symbols/MBS/WM (2).svg new file mode 100644 index 00000000..c3cbd03f --- /dev/null +++ b/src/img/symbols/MBS/WM (2).svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MD1/80.svg b/src/img/symbols/MD1/80.svg new file mode 100644 index 00000000..b1e26979 --- /dev/null +++ b/src/img/symbols/MD1/80.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MD1/C.svg b/src/img/symbols/MD1/C.svg new file mode 100644 index 00000000..cf553c1e --- /dev/null +++ b/src/img/symbols/MD1/C.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MD1/M.svg b/src/img/symbols/MD1/M.svg new file mode 100644 index 00000000..3f55999b --- /dev/null +++ b/src/img/symbols/MD1/M.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MD1/R.svg b/src/img/symbols/MD1/R.svg new file mode 100644 index 00000000..92528626 --- /dev/null +++ b/src/img/symbols/MD1/R.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MD1/T.svg b/src/img/symbols/MD1/T.svg new file mode 100644 index 00000000..5c0693ca --- /dev/null +++ b/src/img/symbols/MD1/T.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MD1/U.svg b/src/img/symbols/MD1/U.svg new file mode 100644 index 00000000..0a453d53 --- /dev/null +++ b/src/img/symbols/MD1/U.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MD1/WM.svg b/src/img/symbols/MD1/WM.svg new file mode 100644 index 00000000..cb3379b1 --- /dev/null +++ b/src/img/symbols/MD1/WM.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ME1/80.svg b/src/img/symbols/ME1/80.svg new file mode 100644 index 00000000..fdb4916c --- /dev/null +++ b/src/img/symbols/ME1/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME1/C.svg b/src/img/symbols/ME1/C.svg new file mode 100644 index 00000000..66c97ac5 --- /dev/null +++ b/src/img/symbols/ME1/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME1/M.svg b/src/img/symbols/ME1/M.svg new file mode 100644 index 00000000..40e74503 --- /dev/null +++ b/src/img/symbols/ME1/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME1/R.svg b/src/img/symbols/ME1/R.svg new file mode 100644 index 00000000..f2de1808 --- /dev/null +++ b/src/img/symbols/ME1/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME1/T.svg b/src/img/symbols/ME1/T.svg new file mode 100644 index 00000000..eeb2d812 --- /dev/null +++ b/src/img/symbols/ME1/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME1/U.svg b/src/img/symbols/ME1/U.svg new file mode 100644 index 00000000..7c6c0b9d --- /dev/null +++ b/src/img/symbols/ME1/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME1/WM.svg b/src/img/symbols/ME1/WM.svg new file mode 100644 index 00000000..4257018a --- /dev/null +++ b/src/img/symbols/ME1/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ME2/80.svg b/src/img/symbols/ME2/80.svg new file mode 100644 index 00000000..f2a4c2fb --- /dev/null +++ b/src/img/symbols/ME2/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME2/C.svg b/src/img/symbols/ME2/C.svg new file mode 100644 index 00000000..7cc9380d --- /dev/null +++ b/src/img/symbols/ME2/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME2/M.svg b/src/img/symbols/ME2/M.svg new file mode 100644 index 00000000..c71f92ba --- /dev/null +++ b/src/img/symbols/ME2/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME2/R.svg b/src/img/symbols/ME2/R.svg new file mode 100644 index 00000000..a9de620c --- /dev/null +++ b/src/img/symbols/ME2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME2/T.svg b/src/img/symbols/ME2/T.svg new file mode 100644 index 00000000..0ad21df9 --- /dev/null +++ b/src/img/symbols/ME2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME2/U.svg b/src/img/symbols/ME2/U.svg new file mode 100644 index 00000000..ced0a051 --- /dev/null +++ b/src/img/symbols/ME2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME2/WM.svg b/src/img/symbols/ME2/WM.svg new file mode 100644 index 00000000..c942d2ad --- /dev/null +++ b/src/img/symbols/ME2/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ME3/80.svg b/src/img/symbols/ME3/80.svg new file mode 100644 index 00000000..e60aa3b0 --- /dev/null +++ b/src/img/symbols/ME3/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME3/C.svg b/src/img/symbols/ME3/C.svg new file mode 100644 index 00000000..a02c453b --- /dev/null +++ b/src/img/symbols/ME3/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME3/M.svg b/src/img/symbols/ME3/M.svg new file mode 100644 index 00000000..f5bb282f --- /dev/null +++ b/src/img/symbols/ME3/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME3/R.svg b/src/img/symbols/ME3/R.svg new file mode 100644 index 00000000..a2ccd022 --- /dev/null +++ b/src/img/symbols/ME3/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME3/T.svg b/src/img/symbols/ME3/T.svg new file mode 100644 index 00000000..f8b095c6 --- /dev/null +++ b/src/img/symbols/ME3/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME3/U.svg b/src/img/symbols/ME3/U.svg new file mode 100644 index 00000000..a25cea9b --- /dev/null +++ b/src/img/symbols/ME3/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME3/WM.svg b/src/img/symbols/ME3/WM.svg new file mode 100644 index 00000000..0658d214 --- /dev/null +++ b/src/img/symbols/ME3/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ME4/80.svg b/src/img/symbols/ME4/80.svg new file mode 100644 index 00000000..19804fbb --- /dev/null +++ b/src/img/symbols/ME4/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME4/C.svg b/src/img/symbols/ME4/C.svg new file mode 100644 index 00000000..25727257 --- /dev/null +++ b/src/img/symbols/ME4/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ME4/M.svg b/src/img/symbols/ME4/M.svg new file mode 100644 index 00000000..c437ac27 --- /dev/null +++ b/src/img/symbols/ME4/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME4/R.svg b/src/img/symbols/ME4/R.svg new file mode 100644 index 00000000..39a7dfe6 --- /dev/null +++ b/src/img/symbols/ME4/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME4/T.svg b/src/img/symbols/ME4/T.svg new file mode 100644 index 00000000..dca93dfd --- /dev/null +++ b/src/img/symbols/ME4/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME4/U.svg b/src/img/symbols/ME4/U.svg new file mode 100644 index 00000000..f2e824d5 --- /dev/null +++ b/src/img/symbols/ME4/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ME4/WM.svg b/src/img/symbols/ME4/WM.svg new file mode 100644 index 00000000..9c648269 --- /dev/null +++ b/src/img/symbols/ME4/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MED/M.svg b/src/img/symbols/MED/M.svg new file mode 100644 index 00000000..cbd7bd54 --- /dev/null +++ b/src/img/symbols/MED/M.svg @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH1/80.svg b/src/img/symbols/MH1/80.svg new file mode 100644 index 00000000..b218fcd8 --- /dev/null +++ b/src/img/symbols/MH1/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/MH1/C.svg b/src/img/symbols/MH1/C.svg new file mode 100644 index 00000000..8d7a8012 --- /dev/null +++ b/src/img/symbols/MH1/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/MH1/M.svg b/src/img/symbols/MH1/M.svg new file mode 100644 index 00000000..f34b95d6 --- /dev/null +++ b/src/img/symbols/MH1/M.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH1/R.svg b/src/img/symbols/MH1/R.svg new file mode 100644 index 00000000..8cac8139 --- /dev/null +++ b/src/img/symbols/MH1/R.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH1/T.svg b/src/img/symbols/MH1/T.svg new file mode 100644 index 00000000..3881a9f0 --- /dev/null +++ b/src/img/symbols/MH1/T.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH1/U.svg b/src/img/symbols/MH1/U.svg new file mode 100644 index 00000000..0d9a52d6 --- /dev/null +++ b/src/img/symbols/MH1/U.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH2/80.svg b/src/img/symbols/MH2/80.svg new file mode 100644 index 00000000..a3a0503c --- /dev/null +++ b/src/img/symbols/MH2/80.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/MH2/C.svg b/src/img/symbols/MH2/C.svg new file mode 100644 index 00000000..62568a51 --- /dev/null +++ b/src/img/symbols/MH2/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/MH2/M.svg b/src/img/symbols/MH2/M.svg new file mode 100644 index 00000000..36f247d5 --- /dev/null +++ b/src/img/symbols/MH2/M.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH2/R.svg b/src/img/symbols/MH2/R.svg new file mode 100644 index 00000000..fe4421ad --- /dev/null +++ b/src/img/symbols/MH2/R.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH2/T.svg b/src/img/symbols/MH2/T.svg new file mode 100644 index 00000000..48bf7240 --- /dev/null +++ b/src/img/symbols/MH2/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH2/U.svg b/src/img/symbols/MH2/U.svg new file mode 100644 index 00000000..66bad961 --- /dev/null +++ b/src/img/symbols/MH2/U.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MH2/WM.svg b/src/img/symbols/MH2/WM.svg new file mode 100644 index 00000000..9ee81d59 --- /dev/null +++ b/src/img/symbols/MH2/WM.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/MIC/80.svg b/src/img/symbols/MIC/80.svg new file mode 100644 index 00000000..a55c5cd7 --- /dev/null +++ b/src/img/symbols/MIC/80.svg @@ -0,0 +1,65 @@ + + + + + + + + + diff --git a/src/img/symbols/MIC/C.svg b/src/img/symbols/MIC/C.svg new file mode 100644 index 00000000..c9e0ebd7 --- /dev/null +++ b/src/img/symbols/MIC/C.svg @@ -0,0 +1,65 @@ + + + + + + + + + diff --git a/src/img/symbols/MIC/M.svg b/src/img/symbols/MIC/M.svg new file mode 100644 index 00000000..244d0c3f --- /dev/null +++ b/src/img/symbols/MIC/M.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MIC/R.svg b/src/img/symbols/MIC/R.svg new file mode 100644 index 00000000..bf128787 --- /dev/null +++ b/src/img/symbols/MIC/R.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MIC/T.svg b/src/img/symbols/MIC/T.svg new file mode 100644 index 00000000..e3de1afd --- /dev/null +++ b/src/img/symbols/MIC/T.svg @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MIC/U.svg b/src/img/symbols/MIC/U.svg new file mode 100644 index 00000000..c9adb948 --- /dev/null +++ b/src/img/symbols/MIC/U.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MIC/WM.svg b/src/img/symbols/MIC/WM.svg new file mode 100644 index 00000000..6319f15b --- /dev/null +++ b/src/img/symbols/MIC/WM.svg @@ -0,0 +1,53 @@ + + + + + + + + + diff --git a/src/img/symbols/MID/80.svg b/src/img/symbols/MID/80.svg new file mode 100644 index 00000000..5901d2fe --- /dev/null +++ b/src/img/symbols/MID/80.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/MID/C.svg b/src/img/symbols/MID/C.svg new file mode 100644 index 00000000..e35f50cf --- /dev/null +++ b/src/img/symbols/MID/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/MID/M.svg b/src/img/symbols/MID/M.svg new file mode 100644 index 00000000..c604001c --- /dev/null +++ b/src/img/symbols/MID/M.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MID/R.svg b/src/img/symbols/MID/R.svg new file mode 100644 index 00000000..49bd5962 --- /dev/null +++ b/src/img/symbols/MID/R.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MID/T.svg b/src/img/symbols/MID/T.svg new file mode 100644 index 00000000..1aac99c2 --- /dev/null +++ b/src/img/symbols/MID/T.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MID/U.svg b/src/img/symbols/MID/U.svg new file mode 100644 index 00000000..b15a672b --- /dev/null +++ b/src/img/symbols/MID/U.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MID/WM.svg b/src/img/symbols/MID/WM.svg new file mode 100644 index 00000000..16d75f4b --- /dev/null +++ b/src/img/symbols/MID/WM.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/MIR/80.svg b/src/img/symbols/MIR/80.svg new file mode 100644 index 00000000..21b2fe13 --- /dev/null +++ b/src/img/symbols/MIR/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MIR/C.svg b/src/img/symbols/MIR/C.svg new file mode 100644 index 00000000..3d51b344 --- /dev/null +++ b/src/img/symbols/MIR/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MIR/M.svg b/src/img/symbols/MIR/M.svg new file mode 100644 index 00000000..02e2ee31 --- /dev/null +++ b/src/img/symbols/MIR/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MIR/R.svg b/src/img/symbols/MIR/R.svg new file mode 100644 index 00000000..d5db2520 --- /dev/null +++ b/src/img/symbols/MIR/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MIR/T.svg b/src/img/symbols/MIR/T.svg new file mode 100644 index 00000000..4a5098cd --- /dev/null +++ b/src/img/symbols/MIR/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MIR/U.svg b/src/img/symbols/MIR/U.svg new file mode 100644 index 00000000..d27a2ddc --- /dev/null +++ b/src/img/symbols/MIR/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MIR/WM.svg b/src/img/symbols/MIR/WM.svg new file mode 100644 index 00000000..eedc1d71 --- /dev/null +++ b/src/img/symbols/MIR/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MIR/Watermark - M25.svg b/src/img/symbols/MIR/Watermark - M25.svg new file mode 100644 index 00000000..98230695 --- /dev/null +++ b/src/img/symbols/MIR/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MM2/80.svg b/src/img/symbols/MM2/80.svg new file mode 100644 index 00000000..2a566119 --- /dev/null +++ b/src/img/symbols/MM2/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MM2/C.svg b/src/img/symbols/MM2/C.svg new file mode 100644 index 00000000..515898f5 --- /dev/null +++ b/src/img/symbols/MM2/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MM2/M.svg b/src/img/symbols/MM2/M.svg new file mode 100644 index 00000000..01b785fe --- /dev/null +++ b/src/img/symbols/MM2/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MM2/R.svg b/src/img/symbols/MM2/R.svg new file mode 100644 index 00000000..10625880 --- /dev/null +++ b/src/img/symbols/MM2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MM2/T.svg b/src/img/symbols/MM2/T.svg new file mode 100644 index 00000000..a599f30e --- /dev/null +++ b/src/img/symbols/MM2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MM2/U.svg b/src/img/symbols/MM2/U.svg new file mode 100644 index 00000000..91ad3fb5 --- /dev/null +++ b/src/img/symbols/MM2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MM2/WM.svg b/src/img/symbols/MM2/WM.svg new file mode 100644 index 00000000..6698f89c --- /dev/null +++ b/src/img/symbols/MM2/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MM3/80.svg b/src/img/symbols/MM3/80.svg new file mode 100644 index 00000000..86694a96 --- /dev/null +++ b/src/img/symbols/MM3/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MM3/C.svg b/src/img/symbols/MM3/C.svg new file mode 100644 index 00000000..b8dad60a --- /dev/null +++ b/src/img/symbols/MM3/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MM3/M.svg b/src/img/symbols/MM3/M.svg new file mode 100644 index 00000000..b95fed22 --- /dev/null +++ b/src/img/symbols/MM3/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/MM3/R.svg b/src/img/symbols/MM3/R.svg new file mode 100644 index 00000000..f236d0a3 --- /dev/null +++ b/src/img/symbols/MM3/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/MM3/T.svg b/src/img/symbols/MM3/T.svg new file mode 100644 index 00000000..4f69cf53 --- /dev/null +++ b/src/img/symbols/MM3/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/MM3/U.svg b/src/img/symbols/MM3/U.svg new file mode 100644 index 00000000..c39dd823 --- /dev/null +++ b/src/img/symbols/MM3/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/MM3/WM.svg b/src/img/symbols/MM3/WM.svg new file mode 100644 index 00000000..6b4c070c --- /dev/null +++ b/src/img/symbols/MM3/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/MMA/80.svg b/src/img/symbols/MMA/80.svg new file mode 100644 index 00000000..206d5489 --- /dev/null +++ b/src/img/symbols/MMA/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MMA/C.svg b/src/img/symbols/MMA/C.svg new file mode 100644 index 00000000..5f9f6873 --- /dev/null +++ b/src/img/symbols/MMA/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MMA/M.svg b/src/img/symbols/MMA/M.svg new file mode 100644 index 00000000..9d026849 --- /dev/null +++ b/src/img/symbols/MMA/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/MMA/R.svg b/src/img/symbols/MMA/R.svg new file mode 100644 index 00000000..3e3ea650 --- /dev/null +++ b/src/img/symbols/MMA/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/MMA/T.svg b/src/img/symbols/MMA/T.svg new file mode 100644 index 00000000..b2de26f9 --- /dev/null +++ b/src/img/symbols/MMA/T.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/MMA/U.svg b/src/img/symbols/MMA/U.svg new file mode 100644 index 00000000..ae93639c --- /dev/null +++ b/src/img/symbols/MMA/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/MMA/WM.svg b/src/img/symbols/MMA/WM.svg new file mode 100644 index 00000000..1cc6e030 --- /dev/null +++ b/src/img/symbols/MMA/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/MMQ/80.svg b/src/img/symbols/MMQ/80.svg new file mode 100644 index 00000000..85f4b574 --- /dev/null +++ b/src/img/symbols/MMQ/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MMQ/C.svg b/src/img/symbols/MMQ/C.svg new file mode 100644 index 00000000..32087a9c --- /dev/null +++ b/src/img/symbols/MMQ/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MMQ/M.svg b/src/img/symbols/MMQ/M.svg new file mode 100644 index 00000000..52f34473 --- /dev/null +++ b/src/img/symbols/MMQ/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MMQ/R.svg b/src/img/symbols/MMQ/R.svg new file mode 100644 index 00000000..d3014f99 --- /dev/null +++ b/src/img/symbols/MMQ/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MMQ/T.svg b/src/img/symbols/MMQ/T.svg new file mode 100644 index 00000000..e035aab6 --- /dev/null +++ b/src/img/symbols/MMQ/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MMQ/U.svg b/src/img/symbols/MMQ/U.svg new file mode 100644 index 00000000..b088c79c --- /dev/null +++ b/src/img/symbols/MMQ/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MMQ/WM.svg b/src/img/symbols/MMQ/WM.svg new file mode 100644 index 00000000..16499762 --- /dev/null +++ b/src/img/symbols/MMQ/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MOC/80.svg b/src/img/symbols/MOC/80.svg new file mode 100644 index 00000000..b1c88083 --- /dev/null +++ b/src/img/symbols/MOC/80.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOC/C.svg b/src/img/symbols/MOC/C.svg new file mode 100644 index 00000000..39f6ee5c --- /dev/null +++ b/src/img/symbols/MOC/C.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOC/M.svg b/src/img/symbols/MOC/M.svg new file mode 100644 index 00000000..ca6a436a --- /dev/null +++ b/src/img/symbols/MOC/M.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOC/R.svg b/src/img/symbols/MOC/R.svg new file mode 100644 index 00000000..2d67bae5 --- /dev/null +++ b/src/img/symbols/MOC/R.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOC/T.svg b/src/img/symbols/MOC/T.svg new file mode 100644 index 00000000..dba1afd1 --- /dev/null +++ b/src/img/symbols/MOC/T.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOC/U.svg b/src/img/symbols/MOC/U.svg new file mode 100644 index 00000000..c6900f0c --- /dev/null +++ b/src/img/symbols/MOC/U.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOC/WM.svg b/src/img/symbols/MOC/WM.svg new file mode 100644 index 00000000..db209260 --- /dev/null +++ b/src/img/symbols/MOC/WM.svg @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/src/img/symbols/MOM/80.svg b/src/img/symbols/MOM/80.svg new file mode 100644 index 00000000..0fba49a1 --- /dev/null +++ b/src/img/symbols/MOM/80.svg @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/src/img/symbols/MOM/C.svg b/src/img/symbols/MOM/C.svg new file mode 100644 index 00000000..1493fbd0 --- /dev/null +++ b/src/img/symbols/MOM/C.svg @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/src/img/symbols/MOM/M.svg b/src/img/symbols/MOM/M.svg new file mode 100644 index 00000000..ba87b997 --- /dev/null +++ b/src/img/symbols/MOM/M.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOM/R.svg b/src/img/symbols/MOM/R.svg new file mode 100644 index 00000000..1c189445 --- /dev/null +++ b/src/img/symbols/MOM/R.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOM/T.svg b/src/img/symbols/MOM/T.svg new file mode 100644 index 00000000..15996337 --- /dev/null +++ b/src/img/symbols/MOM/T.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOM/U.svg b/src/img/symbols/MOM/U.svg new file mode 100644 index 00000000..fe89fde6 --- /dev/null +++ b/src/img/symbols/MOM/U.svg @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOM/WM.svg b/src/img/symbols/MOM/WM.svg new file mode 100644 index 00000000..da4e809a --- /dev/null +++ b/src/img/symbols/MOM/WM.svg @@ -0,0 +1,31 @@ + + + + + + + + diff --git a/src/img/symbols/MOR/80.svg b/src/img/symbols/MOR/80.svg new file mode 100644 index 00000000..10d0f416 --- /dev/null +++ b/src/img/symbols/MOR/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MOR/C.svg b/src/img/symbols/MOR/C.svg new file mode 100644 index 00000000..17444af0 --- /dev/null +++ b/src/img/symbols/MOR/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MOR/M.svg b/src/img/symbols/MOR/M.svg new file mode 100644 index 00000000..c7bb3ed2 --- /dev/null +++ b/src/img/symbols/MOR/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOR/R.svg b/src/img/symbols/MOR/R.svg new file mode 100644 index 00000000..653c1822 --- /dev/null +++ b/src/img/symbols/MOR/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOR/T.svg b/src/img/symbols/MOR/T.svg new file mode 100644 index 00000000..8c3af7cf --- /dev/null +++ b/src/img/symbols/MOR/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOR/U.svg b/src/img/symbols/MOR/U.svg new file mode 100644 index 00000000..5282ef98 --- /dev/null +++ b/src/img/symbols/MOR/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MOR/WM.svg b/src/img/symbols/MOR/WM.svg new file mode 100644 index 00000000..f5e0e6e7 --- /dev/null +++ b/src/img/symbols/MOR/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MP2/80.svg b/src/img/symbols/MP2/80.svg new file mode 100644 index 00000000..aeb9fdee --- /dev/null +++ b/src/img/symbols/MP2/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/MP2/C.svg b/src/img/symbols/MP2/C.svg new file mode 100644 index 00000000..cc07d67f --- /dev/null +++ b/src/img/symbols/MP2/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/MP2/M.svg b/src/img/symbols/MP2/M.svg new file mode 100644 index 00000000..dd7f338c --- /dev/null +++ b/src/img/symbols/MP2/M.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MP2/R.svg b/src/img/symbols/MP2/R.svg new file mode 100644 index 00000000..656e5087 --- /dev/null +++ b/src/img/symbols/MP2/R.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MP2/T.svg b/src/img/symbols/MP2/T.svg new file mode 100644 index 00000000..19d10b79 --- /dev/null +++ b/src/img/symbols/MP2/T.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MP2/U.svg b/src/img/symbols/MP2/U.svg new file mode 100644 index 00000000..bee1dc21 --- /dev/null +++ b/src/img/symbols/MP2/U.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MP2/WM.svg b/src/img/symbols/MP2/WM.svg new file mode 100644 index 00000000..8ad197b9 --- /dev/null +++ b/src/img/symbols/MP2/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MPS/80.svg b/src/img/symbols/MPS/80.svg new file mode 100644 index 00000000..0242e9db --- /dev/null +++ b/src/img/symbols/MPS/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MPS/C.svg b/src/img/symbols/MPS/C.svg new file mode 100644 index 00000000..aed95221 --- /dev/null +++ b/src/img/symbols/MPS/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/MPS/M.svg b/src/img/symbols/MPS/M.svg new file mode 100644 index 00000000..c0adce01 --- /dev/null +++ b/src/img/symbols/MPS/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MPS/R.svg b/src/img/symbols/MPS/R.svg new file mode 100644 index 00000000..b8773470 --- /dev/null +++ b/src/img/symbols/MPS/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MPS/T.svg b/src/img/symbols/MPS/T.svg new file mode 100644 index 00000000..766d412a --- /dev/null +++ b/src/img/symbols/MPS/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MPS/U.svg b/src/img/symbols/MPS/U.svg new file mode 100644 index 00000000..20620d12 --- /dev/null +++ b/src/img/symbols/MPS/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MPS/WM.svg b/src/img/symbols/MPS/WM.svg new file mode 100644 index 00000000..4f47e55a --- /dev/null +++ b/src/img/symbols/MPS/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/MRD/80.svg b/src/img/symbols/MRD/80.svg new file mode 100644 index 00000000..261dee9b --- /dev/null +++ b/src/img/symbols/MRD/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MRD/C.svg b/src/img/symbols/MRD/C.svg new file mode 100644 index 00000000..281769f0 --- /dev/null +++ b/src/img/symbols/MRD/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/MRD/M.svg b/src/img/symbols/MRD/M.svg new file mode 100644 index 00000000..316f1915 --- /dev/null +++ b/src/img/symbols/MRD/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MRD/R.svg b/src/img/symbols/MRD/R.svg new file mode 100644 index 00000000..bd31dc22 --- /dev/null +++ b/src/img/symbols/MRD/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MRD/T.svg b/src/img/symbols/MRD/T.svg new file mode 100644 index 00000000..cd1a5703 --- /dev/null +++ b/src/img/symbols/MRD/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MRD/U.svg b/src/img/symbols/MRD/U.svg new file mode 100644 index 00000000..4793ef0e --- /dev/null +++ b/src/img/symbols/MRD/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/MRD/WM.svg b/src/img/symbols/MRD/WM.svg new file mode 100644 index 00000000..2be8e68a --- /dev/null +++ b/src/img/symbols/MRD/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/MUL/80.svg b/src/img/symbols/MUL/80.svg new file mode 100644 index 00000000..9e8ee89a --- /dev/null +++ b/src/img/symbols/MUL/80.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MUL/C.svg b/src/img/symbols/MUL/C.svg new file mode 100644 index 00000000..263f7844 --- /dev/null +++ b/src/img/symbols/MUL/C.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/MUL/M.svg b/src/img/symbols/MUL/M.svg new file mode 100644 index 00000000..dee189d0 --- /dev/null +++ b/src/img/symbols/MUL/M.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MUL/R.svg b/src/img/symbols/MUL/R.svg new file mode 100644 index 00000000..147c2a32 --- /dev/null +++ b/src/img/symbols/MUL/R.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MUL/T.svg b/src/img/symbols/MUL/T.svg new file mode 100644 index 00000000..cbcbb153 --- /dev/null +++ b/src/img/symbols/MUL/T.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MUL/U.svg b/src/img/symbols/MUL/U.svg new file mode 100644 index 00000000..5378b956 --- /dev/null +++ b/src/img/symbols/MUL/U.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/MUL/WM.svg b/src/img/symbols/MUL/WM.svg new file mode 100644 index 00000000..b1c53e0a --- /dev/null +++ b/src/img/symbols/MUL/WM.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/Media Insert/80.svg b/src/img/symbols/Media Insert/80.svg new file mode 100644 index 00000000..e139fda8 --- /dev/null +++ b/src/img/symbols/Media Insert/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/Media Insert/C.svg b/src/img/symbols/Media Insert/C.svg new file mode 100644 index 00000000..552577c1 --- /dev/null +++ b/src/img/symbols/Media Insert/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/Media Insert/M.svg b/src/img/symbols/Media Insert/M.svg new file mode 100644 index 00000000..b38cf9dd --- /dev/null +++ b/src/img/symbols/Media Insert/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/Media Insert/R.svg b/src/img/symbols/Media Insert/R.svg new file mode 100644 index 00000000..5656a654 --- /dev/null +++ b/src/img/symbols/Media Insert/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/Media Insert/S.svg b/src/img/symbols/Media Insert/S.svg new file mode 100644 index 00000000..fdfb218a --- /dev/null +++ b/src/img/symbols/Media Insert/S.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/Media Insert/T.svg b/src/img/symbols/Media Insert/T.svg new file mode 100644 index 00000000..80ac0501 --- /dev/null +++ b/src/img/symbols/Media Insert/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/Media Insert/U.svg b/src/img/symbols/Media Insert/U.svg new file mode 100644 index 00000000..80234bf9 --- /dev/null +++ b/src/img/symbols/Media Insert/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/Media Insert/WM.svg b/src/img/symbols/Media Insert/WM.svg new file mode 100644 index 00000000..aa7d28d5 --- /dev/null +++ b/src/img/symbols/Media Insert/WM.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/NCC/80.svg b/src/img/symbols/NCC/80.svg new file mode 100644 index 00000000..eaa4de5e --- /dev/null +++ b/src/img/symbols/NCC/80.svg @@ -0,0 +1,52 @@ + + + + + + + + + + diff --git a/src/img/symbols/NCC/C.svg b/src/img/symbols/NCC/C.svg new file mode 100644 index 00000000..263d3145 --- /dev/null +++ b/src/img/symbols/NCC/C.svg @@ -0,0 +1,52 @@ + + + + + + + + + + diff --git a/src/img/symbols/NCC/M.svg b/src/img/symbols/NCC/M.svg new file mode 100644 index 00000000..4a8cdfa2 --- /dev/null +++ b/src/img/symbols/NCC/M.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NCC/R.svg b/src/img/symbols/NCC/R.svg new file mode 100644 index 00000000..2ca9c0a7 --- /dev/null +++ b/src/img/symbols/NCC/R.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NCC/T.svg b/src/img/symbols/NCC/T.svg new file mode 100644 index 00000000..4dda1e00 --- /dev/null +++ b/src/img/symbols/NCC/T.svg @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NCC/U.svg b/src/img/symbols/NCC/U.svg new file mode 100644 index 00000000..def7aeb4 --- /dev/null +++ b/src/img/symbols/NCC/U.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NCC/WM.svg b/src/img/symbols/NCC/WM.svg new file mode 100644 index 00000000..fd26dfc6 --- /dev/null +++ b/src/img/symbols/NCC/WM.svg @@ -0,0 +1,47 @@ + + + + + + + + + + diff --git a/src/img/symbols/NEC/80.svg b/src/img/symbols/NEC/80.svg new file mode 100644 index 00000000..8f4e728c --- /dev/null +++ b/src/img/symbols/NEC/80.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEC/C.svg b/src/img/symbols/NEC/C.svg new file mode 100644 index 00000000..ee9b931d --- /dev/null +++ b/src/img/symbols/NEC/C.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEC/M.svg b/src/img/symbols/NEC/M.svg new file mode 100644 index 00000000..e5895b6e --- /dev/null +++ b/src/img/symbols/NEC/M.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEC/R.svg b/src/img/symbols/NEC/R.svg new file mode 100644 index 00000000..c5649a40 --- /dev/null +++ b/src/img/symbols/NEC/R.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEC/T.SVG b/src/img/symbols/NEC/T.SVG new file mode 100644 index 00000000..0f498173 --- /dev/null +++ b/src/img/symbols/NEC/T.SVG @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEC/U.svg b/src/img/symbols/NEC/U.svg new file mode 100644 index 00000000..492e28a1 --- /dev/null +++ b/src/img/symbols/NEC/U.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEC/WM.svg b/src/img/symbols/NEC/WM.svg new file mode 100644 index 00000000..e07f8614 --- /dev/null +++ b/src/img/symbols/NEC/WM.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEM/80.svg b/src/img/symbols/NEM/80.svg new file mode 100644 index 00000000..835fc949 --- /dev/null +++ b/src/img/symbols/NEM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/NEM/C.svg b/src/img/symbols/NEM/C.svg new file mode 100644 index 00000000..07e5178d --- /dev/null +++ b/src/img/symbols/NEM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/NEM/M.svg b/src/img/symbols/NEM/M.svg new file mode 100644 index 00000000..f5f5c5c2 --- /dev/null +++ b/src/img/symbols/NEM/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/NEM/R.svg b/src/img/symbols/NEM/R.svg new file mode 100644 index 00000000..e3b7818b --- /dev/null +++ b/src/img/symbols/NEM/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/NEM/T.svg b/src/img/symbols/NEM/T.svg new file mode 100644 index 00000000..18e85df2 --- /dev/null +++ b/src/img/symbols/NEM/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/NEM/U.svg b/src/img/symbols/NEM/U.svg new file mode 100644 index 00000000..99638960 --- /dev/null +++ b/src/img/symbols/NEM/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/NEM/WM.svg b/src/img/symbols/NEM/WM.svg new file mode 100644 index 00000000..31c44e00 --- /dev/null +++ b/src/img/symbols/NEM/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/NEM/Watermark - M25.svg b/src/img/symbols/NEM/Watermark - M25.svg new file mode 100644 index 00000000..2c76f41c --- /dev/null +++ b/src/img/symbols/NEM/Watermark - M25.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/NEO/C.svg b/src/img/symbols/NEO/C.svg new file mode 100644 index 00000000..8b6f4834 --- /dev/null +++ b/src/img/symbols/NEO/C.svg @@ -0,0 +1,21 @@ + + + + + + diff --git a/src/img/symbols/NEO/M.svg b/src/img/symbols/NEO/M.svg new file mode 100644 index 00000000..1169ccfb --- /dev/null +++ b/src/img/symbols/NEO/M.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEO/R.svg b/src/img/symbols/NEO/R.svg new file mode 100644 index 00000000..c394659b --- /dev/null +++ b/src/img/symbols/NEO/R.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NEO/U.svg b/src/img/symbols/NEO/U.svg new file mode 100644 index 00000000..e4815dc6 --- /dev/null +++ b/src/img/symbols/NEO/U.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NPH/80.svg b/src/img/symbols/NPH/80.svg new file mode 100644 index 00000000..b23e1dcb --- /dev/null +++ b/src/img/symbols/NPH/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/NPH/C.svg b/src/img/symbols/NPH/C.svg new file mode 100644 index 00000000..6d883446 --- /dev/null +++ b/src/img/symbols/NPH/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/NPH/M.svg b/src/img/symbols/NPH/M.svg new file mode 100644 index 00000000..d88ecdfc --- /dev/null +++ b/src/img/symbols/NPH/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/NPH/R.svg b/src/img/symbols/NPH/R.svg new file mode 100644 index 00000000..bcfa3a26 --- /dev/null +++ b/src/img/symbols/NPH/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/NPH/T.svg b/src/img/symbols/NPH/T.svg new file mode 100644 index 00000000..7314d971 --- /dev/null +++ b/src/img/symbols/NPH/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/NPH/U.svg b/src/img/symbols/NPH/U.svg new file mode 100644 index 00000000..4ff8c0d4 --- /dev/null +++ b/src/img/symbols/NPH/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/NPH/WM.svg b/src/img/symbols/NPH/WM.svg new file mode 100644 index 00000000..ba9b1d0e --- /dev/null +++ b/src/img/symbols/NPH/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/ODY/80.svg b/src/img/symbols/ODY/80.svg new file mode 100644 index 00000000..4bd87993 --- /dev/null +++ b/src/img/symbols/ODY/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ODY/C.svg b/src/img/symbols/ODY/C.svg new file mode 100644 index 00000000..dab2c93e --- /dev/null +++ b/src/img/symbols/ODY/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ODY/M.svg b/src/img/symbols/ODY/M.svg new file mode 100644 index 00000000..f0d30b05 --- /dev/null +++ b/src/img/symbols/ODY/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ODY/R.svg b/src/img/symbols/ODY/R.svg new file mode 100644 index 00000000..72ff2635 --- /dev/null +++ b/src/img/symbols/ODY/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ODY/T.svg b/src/img/symbols/ODY/T.svg new file mode 100644 index 00000000..1aefbf41 --- /dev/null +++ b/src/img/symbols/ODY/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ODY/U.svg b/src/img/symbols/ODY/U.svg new file mode 100644 index 00000000..c98ca378 --- /dev/null +++ b/src/img/symbols/ODY/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ODY/WM.svg b/src/img/symbols/ODY/WM.svg new file mode 100644 index 00000000..7d04d8a8 --- /dev/null +++ b/src/img/symbols/ODY/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/OGW/80.svg b/src/img/symbols/OGW/80.svg new file mode 100644 index 00000000..6e436191 --- /dev/null +++ b/src/img/symbols/OGW/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/OGW/C.svg b/src/img/symbols/OGW/C.svg new file mode 100644 index 00000000..7fa2d031 --- /dev/null +++ b/src/img/symbols/OGW/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/OGW/M.svg b/src/img/symbols/OGW/M.svg new file mode 100644 index 00000000..a9af1174 --- /dev/null +++ b/src/img/symbols/OGW/M.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/OGW/R.svg b/src/img/symbols/OGW/R.svg new file mode 100644 index 00000000..bd6217dc --- /dev/null +++ b/src/img/symbols/OGW/R.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/OGW/T.svg b/src/img/symbols/OGW/T.svg new file mode 100644 index 00000000..cc33e8db --- /dev/null +++ b/src/img/symbols/OGW/T.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/OGW/U.svg b/src/img/symbols/OGW/U.svg new file mode 100644 index 00000000..0fdd9202 --- /dev/null +++ b/src/img/symbols/OGW/U.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/OGW/WM.svg b/src/img/symbols/OGW/WM.svg new file mode 100644 index 00000000..dc0f64b6 --- /dev/null +++ b/src/img/symbols/OGW/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ONC/80.svg b/src/img/symbols/ONC/80.svg new file mode 100644 index 00000000..aadbcbea --- /dev/null +++ b/src/img/symbols/ONC/80.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONC/C.svg b/src/img/symbols/ONC/C.svg new file mode 100644 index 00000000..80656481 --- /dev/null +++ b/src/img/symbols/ONC/C.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ONC/M.svg b/src/img/symbols/ONC/M.svg new file mode 100644 index 00000000..cdc2d1e6 --- /dev/null +++ b/src/img/symbols/ONC/M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONC/R.svg b/src/img/symbols/ONC/R.svg new file mode 100644 index 00000000..a406381a --- /dev/null +++ b/src/img/symbols/ONC/R.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONC/T.svg b/src/img/symbols/ONC/T.svg new file mode 100644 index 00000000..3956b3b0 --- /dev/null +++ b/src/img/symbols/ONC/T.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONC/U.svg b/src/img/symbols/ONC/U.svg new file mode 100644 index 00000000..432c6085 --- /dev/null +++ b/src/img/symbols/ONC/U.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONC/WM.svg b/src/img/symbols/ONC/WM.svg new file mode 100644 index 00000000..6553df6a --- /dev/null +++ b/src/img/symbols/ONC/WM.svg @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/src/img/symbols/ONE/80.svg b/src/img/symbols/ONE/80.svg new file mode 100644 index 00000000..0cd4326d --- /dev/null +++ b/src/img/symbols/ONE/80.svg @@ -0,0 +1,25 @@ + + + + + + + + + diff --git a/src/img/symbols/ONE/C.svg b/src/img/symbols/ONE/C.svg new file mode 100644 index 00000000..50028b80 --- /dev/null +++ b/src/img/symbols/ONE/C.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONE/M.svg b/src/img/symbols/ONE/M.svg new file mode 100644 index 00000000..244fc165 --- /dev/null +++ b/src/img/symbols/ONE/M.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONE/R.svg b/src/img/symbols/ONE/R.svg new file mode 100644 index 00000000..bfd4f4f4 --- /dev/null +++ b/src/img/symbols/ONE/R.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONE/T.svg b/src/img/symbols/ONE/T.svg new file mode 100644 index 00000000..ac45ba9c --- /dev/null +++ b/src/img/symbols/ONE/T.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONE/U.svg b/src/img/symbols/ONE/U.svg new file mode 100644 index 00000000..cbd9ed0f --- /dev/null +++ b/src/img/symbols/ONE/U.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ONE/WM.svg b/src/img/symbols/ONE/WM.svg new file mode 100644 index 00000000..e65423da --- /dev/null +++ b/src/img/symbols/ONE/WM.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/src/img/symbols/ONS/80.svg b/src/img/symbols/ONS/80.svg new file mode 100644 index 00000000..9dea1058 --- /dev/null +++ b/src/img/symbols/ONS/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ONS/C.svg b/src/img/symbols/ONS/C.svg new file mode 100644 index 00000000..0e0a96b3 --- /dev/null +++ b/src/img/symbols/ONS/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ONS/M.svg b/src/img/symbols/ONS/M.svg new file mode 100644 index 00000000..888ac82e --- /dev/null +++ b/src/img/symbols/ONS/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ONS/R.svg b/src/img/symbols/ONS/R.svg new file mode 100644 index 00000000..6fa2025d --- /dev/null +++ b/src/img/symbols/ONS/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ONS/T.svg b/src/img/symbols/ONS/T.svg new file mode 100644 index 00000000..57eb794e --- /dev/null +++ b/src/img/symbols/ONS/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ONS/U.svg b/src/img/symbols/ONS/U.svg new file mode 100644 index 00000000..e1f54b5b --- /dev/null +++ b/src/img/symbols/ONS/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ONS/WM.svg b/src/img/symbols/ONS/WM.svg new file mode 100644 index 00000000..8e6cf6c5 --- /dev/null +++ b/src/img/symbols/ONS/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ORI/80.svg b/src/img/symbols/ORI/80.svg new file mode 100644 index 00000000..26a489be --- /dev/null +++ b/src/img/symbols/ORI/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ORI/C.svg b/src/img/symbols/ORI/C.svg new file mode 100644 index 00000000..ecfe4957 --- /dev/null +++ b/src/img/symbols/ORI/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ORI/M.svg b/src/img/symbols/ORI/M.svg new file mode 100644 index 00000000..4ef0772b --- /dev/null +++ b/src/img/symbols/ORI/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ORI/R.svg b/src/img/symbols/ORI/R.svg new file mode 100644 index 00000000..963df376 --- /dev/null +++ b/src/img/symbols/ORI/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ORI/S.svg b/src/img/symbols/ORI/S.svg new file mode 100644 index 00000000..58938737 --- /dev/null +++ b/src/img/symbols/ORI/S.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ORI/T.svg b/src/img/symbols/ORI/T.svg new file mode 100644 index 00000000..7721e7b6 --- /dev/null +++ b/src/img/symbols/ORI/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ORI/U.svg b/src/img/symbols/ORI/U.svg new file mode 100644 index 00000000..8801f202 --- /dev/null +++ b/src/img/symbols/ORI/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ORI/WM.svg b/src/img/symbols/ORI/WM.svg new file mode 100644 index 00000000..b50b9c1d --- /dev/null +++ b/src/img/symbols/ORI/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/P02/80.svg b/src/img/symbols/P02/80.svg new file mode 100644 index 00000000..d3afe0fe --- /dev/null +++ b/src/img/symbols/P02/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/P02/C.svg b/src/img/symbols/P02/C.svg new file mode 100644 index 00000000..b3dc6589 --- /dev/null +++ b/src/img/symbols/P02/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/P02/M.svg b/src/img/symbols/P02/M.svg new file mode 100644 index 00000000..1987b215 --- /dev/null +++ b/src/img/symbols/P02/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/P02/R.svg b/src/img/symbols/P02/R.svg new file mode 100644 index 00000000..e78c6a32 --- /dev/null +++ b/src/img/symbols/P02/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/P02/T.svg b/src/img/symbols/P02/T.svg new file mode 100644 index 00000000..6ae27cde --- /dev/null +++ b/src/img/symbols/P02/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/P02/U.svg b/src/img/symbols/P02/U.svg new file mode 100644 index 00000000..b5f6bcdf --- /dev/null +++ b/src/img/symbols/P02/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/P02/WM.svg b/src/img/symbols/P02/WM.svg new file mode 100644 index 00000000..46451f7d --- /dev/null +++ b/src/img/symbols/P02/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PC2/80.svg b/src/img/symbols/PC2/80.svg new file mode 100644 index 00000000..6ca16e16 --- /dev/null +++ b/src/img/symbols/PC2/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/PC2/C.svg b/src/img/symbols/PC2/C.svg new file mode 100644 index 00000000..9e6faa28 --- /dev/null +++ b/src/img/symbols/PC2/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/PC2/M.svg b/src/img/symbols/PC2/M.svg new file mode 100644 index 00000000..768c61a0 --- /dev/null +++ b/src/img/symbols/PC2/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/PC2/R.svg b/src/img/symbols/PC2/R.svg new file mode 100644 index 00000000..e7e1fa7e --- /dev/null +++ b/src/img/symbols/PC2/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PC2/T.svg b/src/img/symbols/PC2/T.svg new file mode 100644 index 00000000..7e21b50c --- /dev/null +++ b/src/img/symbols/PC2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/PC2/U.svg b/src/img/symbols/PC2/U.svg new file mode 100644 index 00000000..6a9e16b8 --- /dev/null +++ b/src/img/symbols/PC2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/PC2/WM.svg b/src/img/symbols/PC2/WM.svg new file mode 100644 index 00000000..77b3b10f --- /dev/null +++ b/src/img/symbols/PC2/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/PCA/80.svg b/src/img/symbols/PCA/80.svg new file mode 100644 index 00000000..63667ed5 --- /dev/null +++ b/src/img/symbols/PCA/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/PCA/C.svg b/src/img/symbols/PCA/C.svg new file mode 100644 index 00000000..56232f78 --- /dev/null +++ b/src/img/symbols/PCA/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/PCA/M.svg b/src/img/symbols/PCA/M.svg new file mode 100644 index 00000000..066ed3f0 --- /dev/null +++ b/src/img/symbols/PCA/M.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PCA/R.svg b/src/img/symbols/PCA/R.svg new file mode 100644 index 00000000..4d1bba8f --- /dev/null +++ b/src/img/symbols/PCA/R.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PCA/T.svg b/src/img/symbols/PCA/T.svg new file mode 100644 index 00000000..ed57fc96 --- /dev/null +++ b/src/img/symbols/PCA/T.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PCA/U.svg b/src/img/symbols/PCA/U.svg new file mode 100644 index 00000000..e47c8f65 --- /dev/null +++ b/src/img/symbols/PCA/U.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PCA/WM.svg b/src/img/symbols/PCA/WM.svg new file mode 100644 index 00000000..a2e1aede --- /dev/null +++ b/src/img/symbols/PCA/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PCEL/80.svg b/src/img/symbols/PCEL/80.svg new file mode 100644 index 00000000..3111abf2 --- /dev/null +++ b/src/img/symbols/PCEL/80.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PCEL/C.svg b/src/img/symbols/PCEL/C.svg new file mode 100644 index 00000000..7ecc85ac --- /dev/null +++ b/src/img/symbols/PCEL/C.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PCEL/M.svg b/src/img/symbols/PCEL/M.svg new file mode 100644 index 00000000..6ba5a8d6 --- /dev/null +++ b/src/img/symbols/PCEL/M.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/PCEL/R.svg b/src/img/symbols/PCEL/R.svg new file mode 100644 index 00000000..56447562 --- /dev/null +++ b/src/img/symbols/PCEL/R.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/PCEL/T.svg b/src/img/symbols/PCEL/T.svg new file mode 100644 index 00000000..672b4c8a --- /dev/null +++ b/src/img/symbols/PCEL/T.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/PCEL/U.svg b/src/img/symbols/PCEL/U.svg new file mode 100644 index 00000000..275a27a2 --- /dev/null +++ b/src/img/symbols/PCEL/U.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/PCEL/WM.svg b/src/img/symbols/PCEL/WM.svg new file mode 100644 index 00000000..d0bd649b --- /dev/null +++ b/src/img/symbols/PCEL/WM.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/PCY/80.svg b/src/img/symbols/PCY/80.svg new file mode 100644 index 00000000..dda3c819 --- /dev/null +++ b/src/img/symbols/PCY/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PCY/C.svg b/src/img/symbols/PCY/C.svg new file mode 100644 index 00000000..84d775dc --- /dev/null +++ b/src/img/symbols/PCY/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PCY/M.svg b/src/img/symbols/PCY/M.svg new file mode 100644 index 00000000..efc41204 --- /dev/null +++ b/src/img/symbols/PCY/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PCY/R.svg b/src/img/symbols/PCY/R.svg new file mode 100644 index 00000000..189ed6b9 --- /dev/null +++ b/src/img/symbols/PCY/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PCY/T.svg b/src/img/symbols/PCY/T.svg new file mode 100644 index 00000000..149a2fa8 --- /dev/null +++ b/src/img/symbols/PCY/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PCY/U.svg b/src/img/symbols/PCY/U.svg new file mode 100644 index 00000000..ceee82d0 --- /dev/null +++ b/src/img/symbols/PCY/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PCY/WM.svg b/src/img/symbols/PCY/WM.svg new file mode 100644 index 00000000..52a418b3 --- /dev/null +++ b/src/img/symbols/PCY/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PD2/80.svg b/src/img/symbols/PD2/80.svg new file mode 100644 index 00000000..b82ab3c6 --- /dev/null +++ b/src/img/symbols/PD2/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PD2/C.svg b/src/img/symbols/PD2/C.svg new file mode 100644 index 00000000..50739922 --- /dev/null +++ b/src/img/symbols/PD2/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PD2/M.svg b/src/img/symbols/PD2/M.svg new file mode 100644 index 00000000..118e7246 --- /dev/null +++ b/src/img/symbols/PD2/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD2/R.svg b/src/img/symbols/PD2/R.svg new file mode 100644 index 00000000..26b2f17d --- /dev/null +++ b/src/img/symbols/PD2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD2/T.svg b/src/img/symbols/PD2/T.svg new file mode 100644 index 00000000..ddd8a9b0 --- /dev/null +++ b/src/img/symbols/PD2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD2/U.svg b/src/img/symbols/PD2/U.svg new file mode 100644 index 00000000..694d4658 --- /dev/null +++ b/src/img/symbols/PD2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD2/WM.svg b/src/img/symbols/PD2/WM.svg new file mode 100644 index 00000000..18f86567 --- /dev/null +++ b/src/img/symbols/PD2/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PD3/80.svg b/src/img/symbols/PD3/80.svg new file mode 100644 index 00000000..6aa8109c --- /dev/null +++ b/src/img/symbols/PD3/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/PD3/C.svg b/src/img/symbols/PD3/C.svg new file mode 100644 index 00000000..239f8dd5 --- /dev/null +++ b/src/img/symbols/PD3/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/PD3/M.svg b/src/img/symbols/PD3/M.svg new file mode 100644 index 00000000..b44063c2 --- /dev/null +++ b/src/img/symbols/PD3/M.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD3/R.svg b/src/img/symbols/PD3/R.svg new file mode 100644 index 00000000..c22971f6 --- /dev/null +++ b/src/img/symbols/PD3/R.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD3/T.svg b/src/img/symbols/PD3/T.svg new file mode 100644 index 00000000..96f14eb9 --- /dev/null +++ b/src/img/symbols/PD3/T.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD3/U.svg b/src/img/symbols/PD3/U.svg new file mode 100644 index 00000000..bc7f90fc --- /dev/null +++ b/src/img/symbols/PD3/U.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PD3/WM.svg b/src/img/symbols/PD3/WM.svg new file mode 100644 index 00000000..3b20de9f --- /dev/null +++ b/src/img/symbols/PD3/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PLC/80.svg b/src/img/symbols/PLC/80.svg new file mode 100644 index 00000000..338f75e4 --- /dev/null +++ b/src/img/symbols/PLC/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PLC/C.svg b/src/img/symbols/PLC/C.svg new file mode 100644 index 00000000..d3add19c --- /dev/null +++ b/src/img/symbols/PLC/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PLC/M.svg b/src/img/symbols/PLC/M.svg new file mode 100644 index 00000000..3ce58d9d --- /dev/null +++ b/src/img/symbols/PLC/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLC/R.svg b/src/img/symbols/PLC/R.svg new file mode 100644 index 00000000..39ceac3c --- /dev/null +++ b/src/img/symbols/PLC/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLC/T.svg b/src/img/symbols/PLC/T.svg new file mode 100644 index 00000000..60a22589 --- /dev/null +++ b/src/img/symbols/PLC/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLC/U.svg b/src/img/symbols/PLC/U.svg new file mode 100644 index 00000000..7178f897 --- /dev/null +++ b/src/img/symbols/PLC/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLC/WM.svg b/src/img/symbols/PLC/WM.svg new file mode 100644 index 00000000..e5349e5f --- /dev/null +++ b/src/img/symbols/PLC/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PLS/80.svg b/src/img/symbols/PLS/80.svg new file mode 100644 index 00000000..643468c7 --- /dev/null +++ b/src/img/symbols/PLS/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PLS/C.svg b/src/img/symbols/PLS/C.svg new file mode 100644 index 00000000..2aa35c76 --- /dev/null +++ b/src/img/symbols/PLS/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PLS/M.svg b/src/img/symbols/PLS/M.svg new file mode 100644 index 00000000..7dc26565 --- /dev/null +++ b/src/img/symbols/PLS/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLS/R.svg b/src/img/symbols/PLS/R.svg new file mode 100644 index 00000000..a1a5c3f7 --- /dev/null +++ b/src/img/symbols/PLS/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLS/T.svg b/src/img/symbols/PLS/T.svg new file mode 100644 index 00000000..e501acb4 --- /dev/null +++ b/src/img/symbols/PLS/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLS/U.svg b/src/img/symbols/PLS/U.svg new file mode 100644 index 00000000..53860ce9 --- /dev/null +++ b/src/img/symbols/PLS/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PLS/WM.svg b/src/img/symbols/PLS/WM.svg new file mode 100644 index 00000000..29a84671 --- /dev/null +++ b/src/img/symbols/PLS/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/POR/80.svg b/src/img/symbols/POR/80.svg new file mode 100644 index 00000000..3cd22106 --- /dev/null +++ b/src/img/symbols/POR/80.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR/C.svg b/src/img/symbols/POR/C.svg new file mode 100644 index 00000000..2ae0b6ff --- /dev/null +++ b/src/img/symbols/POR/C.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR/M.svg b/src/img/symbols/POR/M.svg new file mode 100644 index 00000000..6a76d2c9 --- /dev/null +++ b/src/img/symbols/POR/M.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR/R.svg b/src/img/symbols/POR/R.svg new file mode 100644 index 00000000..b8c10587 --- /dev/null +++ b/src/img/symbols/POR/R.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR/T.svg b/src/img/symbols/POR/T.svg new file mode 100644 index 00000000..15e38643 --- /dev/null +++ b/src/img/symbols/POR/T.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR/U.svg b/src/img/symbols/POR/U.svg new file mode 100644 index 00000000..d286e106 --- /dev/null +++ b/src/img/symbols/POR/U.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT1/80.svg b/src/img/symbols/POR_ALT1/80.svg new file mode 100644 index 00000000..5b40cbef --- /dev/null +++ b/src/img/symbols/POR_ALT1/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/POR_ALT1/C.svg b/src/img/symbols/POR_ALT1/C.svg new file mode 100644 index 00000000..dabadadc --- /dev/null +++ b/src/img/symbols/POR_ALT1/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/POR_ALT1/M.svg b/src/img/symbols/POR_ALT1/M.svg new file mode 100644 index 00000000..1f288049 --- /dev/null +++ b/src/img/symbols/POR_ALT1/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT1/R.svg b/src/img/symbols/POR_ALT1/R.svg new file mode 100644 index 00000000..a40410b9 --- /dev/null +++ b/src/img/symbols/POR_ALT1/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT1/T.svg b/src/img/symbols/POR_ALT1/T.svg new file mode 100644 index 00000000..2e636283 --- /dev/null +++ b/src/img/symbols/POR_ALT1/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT1/U.svg b/src/img/symbols/POR_ALT1/U.svg new file mode 100644 index 00000000..a6cc04c3 --- /dev/null +++ b/src/img/symbols/POR_ALT1/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT2/80.svg b/src/img/symbols/POR_ALT2/80.svg new file mode 100644 index 00000000..5284050b --- /dev/null +++ b/src/img/symbols/POR_ALT2/80.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT2/C.svg b/src/img/symbols/POR_ALT2/C.svg new file mode 100644 index 00000000..b034131f --- /dev/null +++ b/src/img/symbols/POR_ALT2/C.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT2/M.svg b/src/img/symbols/POR_ALT2/M.svg new file mode 100644 index 00000000..c8037d03 --- /dev/null +++ b/src/img/symbols/POR_ALT2/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT2/R.svg b/src/img/symbols/POR_ALT2/R.svg new file mode 100644 index 00000000..564ca3c4 --- /dev/null +++ b/src/img/symbols/POR_ALT2/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT2/T.svg b/src/img/symbols/POR_ALT2/T.svg new file mode 100644 index 00000000..26c59e40 --- /dev/null +++ b/src/img/symbols/POR_ALT2/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/POR_ALT2/U.svg b/src/img/symbols/POR_ALT2/U.svg new file mode 100644 index 00000000..575356fb --- /dev/null +++ b/src/img/symbols/POR_ALT2/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/PRM/80.svg b/src/img/symbols/PRM/80.svg new file mode 100644 index 00000000..01957cb4 --- /dev/null +++ b/src/img/symbols/PRM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PRM/C.svg b/src/img/symbols/PRM/C.svg new file mode 100644 index 00000000..e1a844e0 --- /dev/null +++ b/src/img/symbols/PRM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PRM/M.svg b/src/img/symbols/PRM/M.svg new file mode 100644 index 00000000..2f2eaecd --- /dev/null +++ b/src/img/symbols/PRM/M.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/PRM/R.svg b/src/img/symbols/PRM/R.svg new file mode 100644 index 00000000..ee1cb521 --- /dev/null +++ b/src/img/symbols/PRM/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/PRM/T.svg b/src/img/symbols/PRM/T.svg new file mode 100644 index 00000000..e92a17df --- /dev/null +++ b/src/img/symbols/PRM/T.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/PRM/U.svg b/src/img/symbols/PRM/U.svg new file mode 100644 index 00000000..dd174e84 --- /dev/null +++ b/src/img/symbols/PRM/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/PS11/80.svg b/src/img/symbols/PS11/80.svg new file mode 100644 index 00000000..204efc3f --- /dev/null +++ b/src/img/symbols/PS11/80.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PS11/C.svg b/src/img/symbols/PS11/C.svg new file mode 100644 index 00000000..0a561553 --- /dev/null +++ b/src/img/symbols/PS11/C.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PS11/M.svg b/src/img/symbols/PS11/M.svg new file mode 100644 index 00000000..2df23626 --- /dev/null +++ b/src/img/symbols/PS11/M.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PS11/R.svg b/src/img/symbols/PS11/R.svg new file mode 100644 index 00000000..8e2d7f1d --- /dev/null +++ b/src/img/symbols/PS11/R.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PS11/T.svg b/src/img/symbols/PS11/T.svg new file mode 100644 index 00000000..af4f712f --- /dev/null +++ b/src/img/symbols/PS11/T.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PS11/U.svg b/src/img/symbols/PS11/U.svg new file mode 100644 index 00000000..6ad98531 --- /dev/null +++ b/src/img/symbols/PS11/U.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PS11/WM.svg b/src/img/symbols/PS11/WM.svg new file mode 100644 index 00000000..79865d68 --- /dev/null +++ b/src/img/symbols/PS11/WM.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PSAL/80.svg b/src/img/symbols/PSAL/80.svg new file mode 100644 index 00000000..fabad47e --- /dev/null +++ b/src/img/symbols/PSAL/80.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/PSAL/C.svg b/src/img/symbols/PSAL/C.svg new file mode 100644 index 00000000..25915777 --- /dev/null +++ b/src/img/symbols/PSAL/C.svg @@ -0,0 +1,44 @@ + + + + + + + diff --git a/src/img/symbols/PSAL/M.svg b/src/img/symbols/PSAL/M.svg new file mode 100644 index 00000000..ce5ecb54 --- /dev/null +++ b/src/img/symbols/PSAL/M.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PSAL/R.svg b/src/img/symbols/PSAL/R.svg new file mode 100644 index 00000000..10a64cab --- /dev/null +++ b/src/img/symbols/PSAL/R.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PSAL/T.svg b/src/img/symbols/PSAL/T.svg new file mode 100644 index 00000000..56604587 --- /dev/null +++ b/src/img/symbols/PSAL/T.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PSAL/U.svg b/src/img/symbols/PSAL/U.svg new file mode 100644 index 00000000..588489a3 --- /dev/null +++ b/src/img/symbols/PSAL/U.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PSAL/WM.svg b/src/img/symbols/PSAL/WM.svg new file mode 100644 index 00000000..58a3d2df --- /dev/null +++ b/src/img/symbols/PSAL/WM.svg @@ -0,0 +1,40 @@ + + + + + + diff --git a/src/img/symbols/PTK/80.svg b/src/img/symbols/PTK/80.svg new file mode 100644 index 00000000..6f84168f --- /dev/null +++ b/src/img/symbols/PTK/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PTK/C.svg b/src/img/symbols/PTK/C.svg new file mode 100644 index 00000000..8bc70486 --- /dev/null +++ b/src/img/symbols/PTK/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PTK/M.svg b/src/img/symbols/PTK/M.svg new file mode 100644 index 00000000..c0acfa7c --- /dev/null +++ b/src/img/symbols/PTK/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PTK/R.svg b/src/img/symbols/PTK/R.svg new file mode 100644 index 00000000..8fcc4820 --- /dev/null +++ b/src/img/symbols/PTK/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PTK/T.svg b/src/img/symbols/PTK/T.svg new file mode 100644 index 00000000..0fe8c629 --- /dev/null +++ b/src/img/symbols/PTK/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PTK/U.svg b/src/img/symbols/PTK/U.svg new file mode 100644 index 00000000..4dd74347 --- /dev/null +++ b/src/img/symbols/PTK/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/PTK/Watermark - M25.svg b/src/img/symbols/PTK/Watermark - M25.svg new file mode 100644 index 00000000..e1d33fe6 --- /dev/null +++ b/src/img/symbols/PTK/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/PZ1/80.svg b/src/img/symbols/PZ1/80.svg new file mode 100644 index 00000000..ee146339 --- /dev/null +++ b/src/img/symbols/PZ1/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PZ1/C.svg b/src/img/symbols/PZ1/C.svg new file mode 100644 index 00000000..46a491f3 --- /dev/null +++ b/src/img/symbols/PZ1/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PZ1/M.svg b/src/img/symbols/PZ1/M.svg new file mode 100644 index 00000000..55228b8a --- /dev/null +++ b/src/img/symbols/PZ1/M.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PZ1/R.svg b/src/img/symbols/PZ1/R.svg new file mode 100644 index 00000000..3fb66a9f --- /dev/null +++ b/src/img/symbols/PZ1/R.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PZ1/T.svg b/src/img/symbols/PZ1/T.svg new file mode 100644 index 00000000..b27b06c6 --- /dev/null +++ b/src/img/symbols/PZ1/T.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PZ1/U.svg b/src/img/symbols/PZ1/U.svg new file mode 100644 index 00000000..6a992f83 --- /dev/null +++ b/src/img/symbols/PZ1/U.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/PZ1/WM.svg b/src/img/symbols/PZ1/WM.svg new file mode 100644 index 00000000..3111498b --- /dev/null +++ b/src/img/symbols/PZ1/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/PZ2/C.svg b/src/img/symbols/PZ2/C.svg new file mode 100644 index 00000000..5862559e --- /dev/null +++ b/src/img/symbols/PZ2/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/PZ2/WM.svg b/src/img/symbols/PZ2/WM.svg new file mode 100644 index 00000000..572dc020 --- /dev/null +++ b/src/img/symbols/PZ2/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/RAV/80.svg b/src/img/symbols/RAV/80.svg new file mode 100644 index 00000000..c834c5c2 --- /dev/null +++ b/src/img/symbols/RAV/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/RAV/C.svg b/src/img/symbols/RAV/C.svg new file mode 100644 index 00000000..7eb98d1e --- /dev/null +++ b/src/img/symbols/RAV/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/RAV/M.svg b/src/img/symbols/RAV/M.svg new file mode 100644 index 00000000..5309d6df --- /dev/null +++ b/src/img/symbols/RAV/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/RAV/R.svg b/src/img/symbols/RAV/R.svg new file mode 100644 index 00000000..1df1d209 --- /dev/null +++ b/src/img/symbols/RAV/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/RAV/T.svg b/src/img/symbols/RAV/T.svg new file mode 100644 index 00000000..925befe6 --- /dev/null +++ b/src/img/symbols/RAV/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/RAV/U.svg b/src/img/symbols/RAV/U.svg new file mode 100644 index 00000000..92ada826 --- /dev/null +++ b/src/img/symbols/RAV/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/RAV/WM.svg b/src/img/symbols/RAV/WM.svg new file mode 100644 index 00000000..1332daa8 --- /dev/null +++ b/src/img/symbols/RAV/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/RIX/80.svg b/src/img/symbols/RIX/80.svg new file mode 100644 index 00000000..296a6c0c --- /dev/null +++ b/src/img/symbols/RIX/80.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/RIX/C.svg b/src/img/symbols/RIX/C.svg new file mode 100644 index 00000000..f1fcb230 --- /dev/null +++ b/src/img/symbols/RIX/C.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/RIX/M.svg b/src/img/symbols/RIX/M.svg new file mode 100644 index 00000000..36e54293 --- /dev/null +++ b/src/img/symbols/RIX/M.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RIX/R.svg b/src/img/symbols/RIX/R.svg new file mode 100644 index 00000000..23f0e388 --- /dev/null +++ b/src/img/symbols/RIX/R.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RIX/T.svg b/src/img/symbols/RIX/T.svg new file mode 100644 index 00000000..fd686c11 --- /dev/null +++ b/src/img/symbols/RIX/T.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RIX/U.svg b/src/img/symbols/RIX/U.svg new file mode 100644 index 00000000..4ba1986b --- /dev/null +++ b/src/img/symbols/RIX/U.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RIX/WM.svg b/src/img/symbols/RIX/WM.svg new file mode 100644 index 00000000..378a5a81 --- /dev/null +++ b/src/img/symbols/RIX/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/RNA/80.svg b/src/img/symbols/RNA/80.svg new file mode 100644 index 00000000..1c1a9335 --- /dev/null +++ b/src/img/symbols/RNA/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/RNA/C.svg b/src/img/symbols/RNA/C.svg new file mode 100644 index 00000000..0f0951bb --- /dev/null +++ b/src/img/symbols/RNA/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/RNA/M.svg b/src/img/symbols/RNA/M.svg new file mode 100644 index 00000000..30329f3a --- /dev/null +++ b/src/img/symbols/RNA/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/RNA/R.svg b/src/img/symbols/RNA/R.svg new file mode 100644 index 00000000..b3635416 --- /dev/null +++ b/src/img/symbols/RNA/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/RNA/T.svg b/src/img/symbols/RNA/T.svg new file mode 100644 index 00000000..7edd0c3b --- /dev/null +++ b/src/img/symbols/RNA/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/RNA/U.svg b/src/img/symbols/RNA/U.svg new file mode 100644 index 00000000..f8421347 --- /dev/null +++ b/src/img/symbols/RNA/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/RNA/WM.svg b/src/img/symbols/RNA/WM.svg new file mode 100644 index 00000000..088bd8b1 --- /dev/null +++ b/src/img/symbols/RNA/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ROE/80.svg b/src/img/symbols/ROE/80.svg new file mode 100644 index 00000000..333979f2 --- /dev/null +++ b/src/img/symbols/ROE/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ROE/C.svg b/src/img/symbols/ROE/C.svg new file mode 100644 index 00000000..366a8023 --- /dev/null +++ b/src/img/symbols/ROE/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ROE/M.svg b/src/img/symbols/ROE/M.svg new file mode 100644 index 00000000..69df17a0 --- /dev/null +++ b/src/img/symbols/ROE/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ROE/R.svg b/src/img/symbols/ROE/R.svg new file mode 100644 index 00000000..477b591d --- /dev/null +++ b/src/img/symbols/ROE/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ROE/T.svg b/src/img/symbols/ROE/T.svg new file mode 100644 index 00000000..84f7c6c2 --- /dev/null +++ b/src/img/symbols/ROE/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ROE/U.svg b/src/img/symbols/ROE/U.svg new file mode 100644 index 00000000..3225cc4f --- /dev/null +++ b/src/img/symbols/ROE/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ROE/Watermark - M25.svg b/src/img/symbols/ROE/Watermark - M25.svg new file mode 100644 index 00000000..52a03651 --- /dev/null +++ b/src/img/symbols/ROE/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/RTR/80.svg b/src/img/symbols/RTR/80.svg new file mode 100644 index 00000000..4baef767 --- /dev/null +++ b/src/img/symbols/RTR/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/RTR/C.svg b/src/img/symbols/RTR/C.svg new file mode 100644 index 00000000..c22a7af2 --- /dev/null +++ b/src/img/symbols/RTR/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/RTR/M.svg b/src/img/symbols/RTR/M.svg new file mode 100644 index 00000000..67fad3d2 --- /dev/null +++ b/src/img/symbols/RTR/M.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RTR/R.svg b/src/img/symbols/RTR/R.svg new file mode 100644 index 00000000..523c8829 --- /dev/null +++ b/src/img/symbols/RTR/R.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RTR/T.svg b/src/img/symbols/RTR/T.svg new file mode 100644 index 00000000..a855f933 --- /dev/null +++ b/src/img/symbols/RTR/T.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RTR/U.svg b/src/img/symbols/RTR/U.svg new file mode 100644 index 00000000..ddc1fab1 --- /dev/null +++ b/src/img/symbols/RTR/U.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/RTR/Watermark - M25.svg b/src/img/symbols/RTR/Watermark - M25.svg new file mode 100644 index 00000000..e9d4783f --- /dev/null +++ b/src/img/symbols/RTR/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/S00/80.svg b/src/img/symbols/S00/80.svg new file mode 100644 index 00000000..9c3144c4 --- /dev/null +++ b/src/img/symbols/S00/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/S00/C.svg b/src/img/symbols/S00/C.svg new file mode 100644 index 00000000..b444e86d --- /dev/null +++ b/src/img/symbols/S00/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/S00/M.svg b/src/img/symbols/S00/M.svg new file mode 100644 index 00000000..b49fbe45 --- /dev/null +++ b/src/img/symbols/S00/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/S00/R.svg b/src/img/symbols/S00/R.svg new file mode 100644 index 00000000..985cec16 --- /dev/null +++ b/src/img/symbols/S00/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/S00/T.svg b/src/img/symbols/S00/T.svg new file mode 100644 index 00000000..b0c6a7de --- /dev/null +++ b/src/img/symbols/S00/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/S00/U.svg b/src/img/symbols/S00/U.svg new file mode 100644 index 00000000..bf66c016 --- /dev/null +++ b/src/img/symbols/S00/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/S00/WM.svg b/src/img/symbols/S00/WM.svg new file mode 100644 index 00000000..8a6d0b45 --- /dev/null +++ b/src/img/symbols/S00/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/S99/80.svg b/src/img/symbols/S99/80.svg new file mode 100644 index 00000000..8ae14290 --- /dev/null +++ b/src/img/symbols/S99/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/S99/C.svg b/src/img/symbols/S99/C.svg new file mode 100644 index 00000000..c19f5949 --- /dev/null +++ b/src/img/symbols/S99/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/S99/M.svg b/src/img/symbols/S99/M.svg new file mode 100644 index 00000000..b4f57d29 --- /dev/null +++ b/src/img/symbols/S99/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/S99/R.svg b/src/img/symbols/S99/R.svg new file mode 100644 index 00000000..303727f6 --- /dev/null +++ b/src/img/symbols/S99/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/S99/T.svg b/src/img/symbols/S99/T.svg new file mode 100644 index 00000000..0a4b2f1a --- /dev/null +++ b/src/img/symbols/S99/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/S99/U.svg b/src/img/symbols/S99/U.svg new file mode 100644 index 00000000..78c4bf59 --- /dev/null +++ b/src/img/symbols/S99/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/S99/Watermark - M25.svg b/src/img/symbols/S99/Watermark - M25.svg new file mode 100644 index 00000000..bcf95abe --- /dev/null +++ b/src/img/symbols/S99/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/SCD/80.svg b/src/img/symbols/SCD/80.svg new file mode 100644 index 00000000..8d3f0b91 --- /dev/null +++ b/src/img/symbols/SCD/80.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SCD/C.svg b/src/img/symbols/SCD/C.svg new file mode 100644 index 00000000..b5a12b73 --- /dev/null +++ b/src/img/symbols/SCD/C.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SCD/M.svg b/src/img/symbols/SCD/M.svg new file mode 100644 index 00000000..ac28eab6 --- /dev/null +++ b/src/img/symbols/SCD/M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SCD/R.svg b/src/img/symbols/SCD/R.svg new file mode 100644 index 00000000..b6e23ae1 --- /dev/null +++ b/src/img/symbols/SCD/R.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SCD/T.svg b/src/img/symbols/SCD/T.svg new file mode 100644 index 00000000..e5fb8cb4 --- /dev/null +++ b/src/img/symbols/SCD/T.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SCD/U.svg b/src/img/symbols/SCD/U.svg new file mode 100644 index 00000000..62275733 --- /dev/null +++ b/src/img/symbols/SCD/U.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SCD/WM.svg b/src/img/symbols/SCD/WM.svg new file mode 100644 index 00000000..354599c5 --- /dev/null +++ b/src/img/symbols/SCD/WM.svg @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/img/symbols/SCG/80.svg b/src/img/symbols/SCG/80.svg new file mode 100644 index 00000000..1e875afd --- /dev/null +++ b/src/img/symbols/SCG/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SCG/C.svg b/src/img/symbols/SCG/C.svg new file mode 100644 index 00000000..ed6ed719 --- /dev/null +++ b/src/img/symbols/SCG/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SCG/M.svg b/src/img/symbols/SCG/M.svg new file mode 100644 index 00000000..f7d6fa1e --- /dev/null +++ b/src/img/symbols/SCG/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/SCG/R.svg b/src/img/symbols/SCG/R.svg new file mode 100644 index 00000000..29dfe789 --- /dev/null +++ b/src/img/symbols/SCG/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/SCG/T.svg b/src/img/symbols/SCG/T.svg new file mode 100644 index 00000000..462c9570 --- /dev/null +++ b/src/img/symbols/SCG/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/SCG/U.svg b/src/img/symbols/SCG/U.svg new file mode 100644 index 00000000..8c0c5846 --- /dev/null +++ b/src/img/symbols/SCG/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/SCG/WM.svg b/src/img/symbols/SCG/WM.svg new file mode 100644 index 00000000..f11e5a4b --- /dev/null +++ b/src/img/symbols/SCG/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/SHM/80.svg b/src/img/symbols/SHM/80.svg new file mode 100644 index 00000000..a41cc682 --- /dev/null +++ b/src/img/symbols/SHM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SHM/C.svg b/src/img/symbols/SHM/C.svg new file mode 100644 index 00000000..447a02db --- /dev/null +++ b/src/img/symbols/SHM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SHM/M.svg b/src/img/symbols/SHM/M.svg new file mode 100644 index 00000000..0bdec9c9 --- /dev/null +++ b/src/img/symbols/SHM/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SHM/R.svg b/src/img/symbols/SHM/R.svg new file mode 100644 index 00000000..1a015fd8 --- /dev/null +++ b/src/img/symbols/SHM/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SHM/T.svg b/src/img/symbols/SHM/T.svg new file mode 100644 index 00000000..7699c959 --- /dev/null +++ b/src/img/symbols/SHM/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SHM/U.svg b/src/img/symbols/SHM/U.svg new file mode 100644 index 00000000..7944643e --- /dev/null +++ b/src/img/symbols/SHM/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SHM/Watermark - M25.svg b/src/img/symbols/SHM/Watermark - M25.svg new file mode 100644 index 00000000..8bd4d701 --- /dev/null +++ b/src/img/symbols/SHM/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/SLD/80.svg b/src/img/symbols/SLD/80.svg new file mode 100644 index 00000000..e139fda8 --- /dev/null +++ b/src/img/symbols/SLD/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/SLD/C.svg b/src/img/symbols/SLD/C.svg new file mode 100644 index 00000000..552577c1 --- /dev/null +++ b/src/img/symbols/SLD/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/SLD/M.svg b/src/img/symbols/SLD/M.svg new file mode 100644 index 00000000..b38cf9dd --- /dev/null +++ b/src/img/symbols/SLD/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SLD/R.svg b/src/img/symbols/SLD/R.svg new file mode 100644 index 00000000..5656a654 --- /dev/null +++ b/src/img/symbols/SLD/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SLD/S.svg b/src/img/symbols/SLD/S.svg new file mode 100644 index 00000000..fdfb218a --- /dev/null +++ b/src/img/symbols/SLD/S.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/SLD/T.svg b/src/img/symbols/SLD/T.svg new file mode 100644 index 00000000..80ac0501 --- /dev/null +++ b/src/img/symbols/SLD/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SLD/U.svg b/src/img/symbols/SLD/U.svg new file mode 100644 index 00000000..80234bf9 --- /dev/null +++ b/src/img/symbols/SLD/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SLD/WM.svg b/src/img/symbols/SLD/WM.svg new file mode 100644 index 00000000..aa7d28d5 --- /dev/null +++ b/src/img/symbols/SLD/WM.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/SNC/C.svg b/src/img/symbols/SNC/C.svg new file mode 100644 index 00000000..c06adbd1 --- /dev/null +++ b/src/img/symbols/SNC/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SNC/M.svg b/src/img/symbols/SNC/M.svg new file mode 100644 index 00000000..44d92364 --- /dev/null +++ b/src/img/symbols/SNC/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SNC/R.svg b/src/img/symbols/SNC/R.svg new file mode 100644 index 00000000..7c3c2f30 --- /dev/null +++ b/src/img/symbols/SNC/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SNC/U.svg b/src/img/symbols/SNC/U.svg new file mode 100644 index 00000000..3d61087d --- /dev/null +++ b/src/img/symbols/SNC/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOI/80.svg b/src/img/symbols/SOI/80.svg new file mode 100644 index 00000000..4167d9dd --- /dev/null +++ b/src/img/symbols/SOI/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/SOI/C.svg b/src/img/symbols/SOI/C.svg new file mode 100644 index 00000000..f43eff56 --- /dev/null +++ b/src/img/symbols/SOI/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/SOI/M.svg b/src/img/symbols/SOI/M.svg new file mode 100644 index 00000000..7366b9d8 --- /dev/null +++ b/src/img/symbols/SOI/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOI/R.svg b/src/img/symbols/SOI/R.svg new file mode 100644 index 00000000..4210e259 --- /dev/null +++ b/src/img/symbols/SOI/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOI/T.svg b/src/img/symbols/SOI/T.svg new file mode 100644 index 00000000..eb8cf6ce --- /dev/null +++ b/src/img/symbols/SOI/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOI/U.svg b/src/img/symbols/SOI/U.svg new file mode 100644 index 00000000..79be23d1 --- /dev/null +++ b/src/img/symbols/SOI/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOI/WM.svg b/src/img/symbols/SOI/WM.svg new file mode 100644 index 00000000..5e59122c --- /dev/null +++ b/src/img/symbols/SOI/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/SOK/80.svg b/src/img/symbols/SOK/80.svg new file mode 100644 index 00000000..0bf714fd --- /dev/null +++ b/src/img/symbols/SOK/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SOK/C.svg b/src/img/symbols/SOK/C.svg new file mode 100644 index 00000000..f555d769 --- /dev/null +++ b/src/img/symbols/SOK/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SOK/M.svg b/src/img/symbols/SOK/M.svg new file mode 100644 index 00000000..2b4fe239 --- /dev/null +++ b/src/img/symbols/SOK/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/SOK/R.svg b/src/img/symbols/SOK/R.svg new file mode 100644 index 00000000..1f38ef7f --- /dev/null +++ b/src/img/symbols/SOK/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/SOK/T.svg b/src/img/symbols/SOK/T.svg new file mode 100644 index 00000000..ab7cf17f --- /dev/null +++ b/src/img/symbols/SOK/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/SOK/U.svg b/src/img/symbols/SOK/U.svg new file mode 100644 index 00000000..c2176ca5 --- /dev/null +++ b/src/img/symbols/SOK/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/SOK/WM.svg b/src/img/symbols/SOK/WM.svg new file mode 100644 index 00000000..7f13ea7d --- /dev/null +++ b/src/img/symbols/SOK/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/SOM/80.svg b/src/img/symbols/SOM/80.svg new file mode 100644 index 00000000..cc81d785 --- /dev/null +++ b/src/img/symbols/SOM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SOM/C.svg b/src/img/symbols/SOM/C.svg new file mode 100644 index 00000000..55455e95 --- /dev/null +++ b/src/img/symbols/SOM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/SOM/M.svg b/src/img/symbols/SOM/M.svg new file mode 100644 index 00000000..11a1d9b3 --- /dev/null +++ b/src/img/symbols/SOM/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOM/R.svg b/src/img/symbols/SOM/R.svg new file mode 100644 index 00000000..0c6ada18 --- /dev/null +++ b/src/img/symbols/SOM/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOM/T.svg b/src/img/symbols/SOM/T.svg new file mode 100644 index 00000000..e16fa6fa --- /dev/null +++ b/src/img/symbols/SOM/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOM/U.svg b/src/img/symbols/SOM/U.svg new file mode 100644 index 00000000..c58cb1eb --- /dev/null +++ b/src/img/symbols/SOM/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/SOM/WM.svg b/src/img/symbols/SOM/WM.svg new file mode 100644 index 00000000..6fe33208 --- /dev/null +++ b/src/img/symbols/SOM/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/SS1/M.svg b/src/img/symbols/SS1/M.svg new file mode 100644 index 00000000..2f2fbb8a --- /dev/null +++ b/src/img/symbols/SS1/M.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS1/R.svg b/src/img/symbols/SS1/R.svg new file mode 100644 index 00000000..e7349902 --- /dev/null +++ b/src/img/symbols/SS1/R.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS2/80.svg b/src/img/symbols/SS2/80.svg new file mode 100644 index 00000000..b298f500 --- /dev/null +++ b/src/img/symbols/SS2/80.svg @@ -0,0 +1,44 @@ + + + + + + diff --git a/src/img/symbols/SS2/C.svg b/src/img/symbols/SS2/C.svg new file mode 100644 index 00000000..62160e18 --- /dev/null +++ b/src/img/symbols/SS2/C.svg @@ -0,0 +1,44 @@ + + + + + + diff --git a/src/img/symbols/SS2/M.svg b/src/img/symbols/SS2/M.svg new file mode 100644 index 00000000..12971faf --- /dev/null +++ b/src/img/symbols/SS2/M.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS2/R.svg b/src/img/symbols/SS2/R.svg new file mode 100644 index 00000000..07f383bc --- /dev/null +++ b/src/img/symbols/SS2/R.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS2/T.svg b/src/img/symbols/SS2/T.svg new file mode 100644 index 00000000..1c8f223c --- /dev/null +++ b/src/img/symbols/SS2/T.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS2/U.svg b/src/img/symbols/SS2/U.svg new file mode 100644 index 00000000..eb6ef226 --- /dev/null +++ b/src/img/symbols/SS2/U.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS2/WM.svg b/src/img/symbols/SS2/WM.svg new file mode 100644 index 00000000..cc61bc80 --- /dev/null +++ b/src/img/symbols/SS2/WM.svg @@ -0,0 +1,38 @@ + + + + + diff --git a/src/img/symbols/SS3/80.svg b/src/img/symbols/SS3/80.svg new file mode 100644 index 00000000..3941fa8e --- /dev/null +++ b/src/img/symbols/SS3/80.svg @@ -0,0 +1,34 @@ + + + + + + + diff --git a/src/img/symbols/SS3/C.svg b/src/img/symbols/SS3/C.svg new file mode 100644 index 00000000..3081bfe0 --- /dev/null +++ b/src/img/symbols/SS3/C.svg @@ -0,0 +1,34 @@ + + + + + + + diff --git a/src/img/symbols/SS3/R.svg b/src/img/symbols/SS3/R.svg new file mode 100644 index 00000000..cfd6735f --- /dev/null +++ b/src/img/symbols/SS3/R.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS3/SS3.svg b/src/img/symbols/SS3/SS3.svg new file mode 100644 index 00000000..6d0b5f03 --- /dev/null +++ b/src/img/symbols/SS3/SS3.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS3/T.svg b/src/img/symbols/SS3/T.svg new file mode 100644 index 00000000..71a850e8 --- /dev/null +++ b/src/img/symbols/SS3/T.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS3/U.svg b/src/img/symbols/SS3/U.svg new file mode 100644 index 00000000..2e727bf8 --- /dev/null +++ b/src/img/symbols/SS3/U.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/SS3/WM.svg b/src/img/symbols/SS3/WM.svg new file mode 100644 index 00000000..7be6d45a --- /dev/null +++ b/src/img/symbols/SS3/WM.svg @@ -0,0 +1,29 @@ + + + + + + diff --git a/src/img/symbols/STA/C.svg b/src/img/symbols/STA/C.svg new file mode 100644 index 00000000..7fe913f4 --- /dev/null +++ b/src/img/symbols/STA/C.svg @@ -0,0 +1,67 @@ + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/img/symbols/STA/M.svg b/src/img/symbols/STA/M.svg new file mode 100644 index 00000000..1bbf0224 --- /dev/null +++ b/src/img/symbols/STA/M.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/img/symbols/STA/R.svg b/src/img/symbols/STA/R.svg new file mode 100644 index 00000000..ae54148b --- /dev/null +++ b/src/img/symbols/STA/R.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/img/symbols/STA/U.svg b/src/img/symbols/STA/U.svg new file mode 100644 index 00000000..d905234e --- /dev/null +++ b/src/img/symbols/STA/U.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/img/symbols/STH/80.svg b/src/img/symbols/STH/80.svg new file mode 100644 index 00000000..b4d29d4c --- /dev/null +++ b/src/img/symbols/STH/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/STH/C.svg b/src/img/symbols/STH/C.svg new file mode 100644 index 00000000..15ee1c86 --- /dev/null +++ b/src/img/symbols/STH/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/STH/M.svg b/src/img/symbols/STH/M.svg new file mode 100644 index 00000000..d13cc8b5 --- /dev/null +++ b/src/img/symbols/STH/M.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/STH/R.svg b/src/img/symbols/STH/R.svg new file mode 100644 index 00000000..719052dd --- /dev/null +++ b/src/img/symbols/STH/R.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/STH/T.svg b/src/img/symbols/STH/T.svg new file mode 100644 index 00000000..4edab709 --- /dev/null +++ b/src/img/symbols/STH/T.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/STH/U.svg b/src/img/symbols/STH/U.svg new file mode 100644 index 00000000..2f9c42ef --- /dev/null +++ b/src/img/symbols/STH/U.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/STH/Watermark - M25.svg b/src/img/symbols/STH/Watermark - M25.svg new file mode 100644 index 00000000..7f0f274a --- /dev/null +++ b/src/img/symbols/STH/Watermark - M25.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/STX/C.svg b/src/img/symbols/STX/C.svg new file mode 100644 index 00000000..ae211e07 --- /dev/null +++ b/src/img/symbols/STX/C.svg @@ -0,0 +1,18 @@ + + + + + diff --git a/src/img/symbols/STX/M.svg b/src/img/symbols/STX/M.svg new file mode 100644 index 00000000..6414e8ee --- /dev/null +++ b/src/img/symbols/STX/M.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/STX/R.svg b/src/img/symbols/STX/R.svg new file mode 100644 index 00000000..4d2f9c9d --- /dev/null +++ b/src/img/symbols/STX/R.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/STX/U.svg b/src/img/symbols/STX/U.svg new file mode 100644 index 00000000..9ee5b405 --- /dev/null +++ b/src/img/symbols/STX/U.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TD0/80.svg b/src/img/symbols/TD0/80.svg new file mode 100644 index 00000000..433dd9f8 --- /dev/null +++ b/src/img/symbols/TD0/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/TD0/C.svg b/src/img/symbols/TD0/C.svg new file mode 100644 index 00000000..c72fa480 --- /dev/null +++ b/src/img/symbols/TD0/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/TD0/M.svg b/src/img/symbols/TD0/M.svg new file mode 100644 index 00000000..16461247 --- /dev/null +++ b/src/img/symbols/TD0/M.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD0/R.svg b/src/img/symbols/TD0/R.svg new file mode 100644 index 00000000..a8a90164 --- /dev/null +++ b/src/img/symbols/TD0/R.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD0/T.svg b/src/img/symbols/TD0/T.svg new file mode 100644 index 00000000..7a76c38a --- /dev/null +++ b/src/img/symbols/TD0/T.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD0/U.svg b/src/img/symbols/TD0/U.svg new file mode 100644 index 00000000..d2d3f3a3 --- /dev/null +++ b/src/img/symbols/TD0/U.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD0/WM.svg b/src/img/symbols/TD0/WM.svg new file mode 100644 index 00000000..b40d7a5b --- /dev/null +++ b/src/img/symbols/TD0/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/TD2/80.svg b/src/img/symbols/TD2/80.svg new file mode 100644 index 00000000..9ee75063 --- /dev/null +++ b/src/img/symbols/TD2/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/TD2/C.svg b/src/img/symbols/TD2/C.svg new file mode 100644 index 00000000..bc9c04ee --- /dev/null +++ b/src/img/symbols/TD2/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/TD2/M.svg b/src/img/symbols/TD2/M.svg new file mode 100644 index 00000000..8f44588d --- /dev/null +++ b/src/img/symbols/TD2/M.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD2/R.svg b/src/img/symbols/TD2/R.svg new file mode 100644 index 00000000..9c064837 --- /dev/null +++ b/src/img/symbols/TD2/R.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD2/T.svg b/src/img/symbols/TD2/T.svg new file mode 100644 index 00000000..32997c77 --- /dev/null +++ b/src/img/symbols/TD2/T.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD2/U.svg b/src/img/symbols/TD2/U.svg new file mode 100644 index 00000000..d491b79f --- /dev/null +++ b/src/img/symbols/TD2/U.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TD2/WM.svg b/src/img/symbols/TD2/WM.svg new file mode 100644 index 00000000..bc9c04ee --- /dev/null +++ b/src/img/symbols/TD2/WM.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/THB/80.svg b/src/img/symbols/THB/80.svg new file mode 100644 index 00000000..48d0ec8e --- /dev/null +++ b/src/img/symbols/THB/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/THB/C.svg b/src/img/symbols/THB/C.svg new file mode 100644 index 00000000..b855af6e --- /dev/null +++ b/src/img/symbols/THB/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/THB/M.svg b/src/img/symbols/THB/M.svg new file mode 100644 index 00000000..c24339a1 --- /dev/null +++ b/src/img/symbols/THB/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/THB/R.svg b/src/img/symbols/THB/R.svg new file mode 100644 index 00000000..81f3d7e5 --- /dev/null +++ b/src/img/symbols/THB/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/THB/T.svg b/src/img/symbols/THB/T.svg new file mode 100644 index 00000000..2359006c --- /dev/null +++ b/src/img/symbols/THB/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/THB/U.svg b/src/img/symbols/THB/U.svg new file mode 100644 index 00000000..48d54f89 --- /dev/null +++ b/src/img/symbols/THB/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/THB/WM.svg b/src/img/symbols/THB/WM.svg new file mode 100644 index 00000000..a94f0f70 --- /dev/null +++ b/src/img/symbols/THB/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/THS/80.svg b/src/img/symbols/THS/80.svg new file mode 100644 index 00000000..93e1ab72 --- /dev/null +++ b/src/img/symbols/THS/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/THS/C.svg b/src/img/symbols/THS/C.svg new file mode 100644 index 00000000..d9f4f19c --- /dev/null +++ b/src/img/symbols/THS/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/THS/M.svg b/src/img/symbols/THS/M.svg new file mode 100644 index 00000000..addeaa45 --- /dev/null +++ b/src/img/symbols/THS/M.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/THS/R.svg b/src/img/symbols/THS/R.svg new file mode 100644 index 00000000..69277ecb --- /dev/null +++ b/src/img/symbols/THS/R.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/THS/T.svg b/src/img/symbols/THS/T.svg new file mode 100644 index 00000000..06096dd5 --- /dev/null +++ b/src/img/symbols/THS/T.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/THS/U.svg b/src/img/symbols/THS/U.svg new file mode 100644 index 00000000..608bcd6a --- /dev/null +++ b/src/img/symbols/THS/U.svg @@ -0,0 +1,6 @@ + + + + /> + + diff --git a/src/img/symbols/THS/WM.svg b/src/img/symbols/THS/WM.svg new file mode 100644 index 00000000..55f483a1 --- /dev/null +++ b/src/img/symbols/THS/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/TMP/80.svg b/src/img/symbols/TMP/80.svg new file mode 100644 index 00000000..fee83c01 --- /dev/null +++ b/src/img/symbols/TMP/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/TMP/C.svg b/src/img/symbols/TMP/C.svg new file mode 100644 index 00000000..e7101435 --- /dev/null +++ b/src/img/symbols/TMP/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/TMP/M.svg b/src/img/symbols/TMP/M.svg new file mode 100644 index 00000000..9c8eb0ed --- /dev/null +++ b/src/img/symbols/TMP/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TMP/R.svg b/src/img/symbols/TMP/R.svg new file mode 100644 index 00000000..66d8cda3 --- /dev/null +++ b/src/img/symbols/TMP/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TMP/T.svg b/src/img/symbols/TMP/T.svg new file mode 100644 index 00000000..df38b4a0 --- /dev/null +++ b/src/img/symbols/TMP/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TMP/U.svg b/src/img/symbols/TMP/U.svg new file mode 100644 index 00000000..35b54208 --- /dev/null +++ b/src/img/symbols/TMP/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TMP/Watermark - M25.svg b/src/img/symbols/TMP/Watermark - M25.svg new file mode 100644 index 00000000..3bbb43a6 --- /dev/null +++ b/src/img/symbols/TMP/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/TOR/80.svg b/src/img/symbols/TOR/80.svg new file mode 100644 index 00000000..656eb5c0 --- /dev/null +++ b/src/img/symbols/TOR/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/TOR/C.svg b/src/img/symbols/TOR/C.svg new file mode 100644 index 00000000..a68f1079 --- /dev/null +++ b/src/img/symbols/TOR/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/TOR/M.svg b/src/img/symbols/TOR/M.svg new file mode 100644 index 00000000..a3c31495 --- /dev/null +++ b/src/img/symbols/TOR/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TOR/R.svg b/src/img/symbols/TOR/R.svg new file mode 100644 index 00000000..17342782 --- /dev/null +++ b/src/img/symbols/TOR/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TOR/T.svg b/src/img/symbols/TOR/T.svg new file mode 100644 index 00000000..0202c7d9 --- /dev/null +++ b/src/img/symbols/TOR/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TOR/U.svg b/src/img/symbols/TOR/U.svg new file mode 100644 index 00000000..1f804acb --- /dev/null +++ b/src/img/symbols/TOR/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TOR/WM.svg b/src/img/symbols/TOR/WM.svg new file mode 100644 index 00000000..7d357c65 --- /dev/null +++ b/src/img/symbols/TOR/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/TPR/80.svg b/src/img/symbols/TPR/80.svg new file mode 100644 index 00000000..2acbb729 --- /dev/null +++ b/src/img/symbols/TPR/80.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TPR/C.svg b/src/img/symbols/TPR/C.svg new file mode 100644 index 00000000..977fe7ac --- /dev/null +++ b/src/img/symbols/TPR/C.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TPR/M.svg b/src/img/symbols/TPR/M.svg new file mode 100644 index 00000000..cdc7cc15 --- /dev/null +++ b/src/img/symbols/TPR/M.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TPR/R.svg b/src/img/symbols/TPR/R.svg new file mode 100644 index 00000000..4abd7eef --- /dev/null +++ b/src/img/symbols/TPR/R.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TPR/T.svg b/src/img/symbols/TPR/T.svg new file mode 100644 index 00000000..a7b1dddf --- /dev/null +++ b/src/img/symbols/TPR/T.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TPR/U.svg b/src/img/symbols/TPR/U.svg new file mode 100644 index 00000000..b48ebf02 --- /dev/null +++ b/src/img/symbols/TPR/U.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TPR/WM.svg b/src/img/symbols/TPR/WM.svg new file mode 100644 index 00000000..f0ac1581 --- /dev/null +++ b/src/img/symbols/TPR/WM.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/TSP/80.svg b/src/img/symbols/TSP/80.svg new file mode 100644 index 00000000..a5fc2cfb --- /dev/null +++ b/src/img/symbols/TSP/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/TSP/C.svg b/src/img/symbols/TSP/C.svg new file mode 100644 index 00000000..3aea73e9 --- /dev/null +++ b/src/img/symbols/TSP/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/TSP/M.svg b/src/img/symbols/TSP/M.svg new file mode 100644 index 00000000..b79e6f27 --- /dev/null +++ b/src/img/symbols/TSP/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TSP/R.svg b/src/img/symbols/TSP/R.svg new file mode 100644 index 00000000..1c25719f --- /dev/null +++ b/src/img/symbols/TSP/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TSP/T.svg b/src/img/symbols/TSP/T.svg new file mode 100644 index 00000000..4025380f --- /dev/null +++ b/src/img/symbols/TSP/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TSP/U.svg b/src/img/symbols/TSP/U.svg new file mode 100644 index 00000000..e403a170 --- /dev/null +++ b/src/img/symbols/TSP/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TSP/WM.svg b/src/img/symbols/TSP/WM.svg new file mode 100644 index 00000000..8c78f791 --- /dev/null +++ b/src/img/symbols/TSP/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/TSR/80.svg b/src/img/symbols/TSR/80.svg new file mode 100644 index 00000000..3d1eed3b --- /dev/null +++ b/src/img/symbols/TSR/80.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TSR/C.svg b/src/img/symbols/TSR/C.svg new file mode 100644 index 00000000..47c1a543 --- /dev/null +++ b/src/img/symbols/TSR/C.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/TSR/M.svg b/src/img/symbols/TSR/M.svg new file mode 100644 index 00000000..be60c18b --- /dev/null +++ b/src/img/symbols/TSR/M.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TSR/R.svg b/src/img/symbols/TSR/R.svg new file mode 100644 index 00000000..b64b11a3 --- /dev/null +++ b/src/img/symbols/TSR/R.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TSR/T.svg b/src/img/symbols/TSR/T.svg new file mode 100644 index 00000000..5a0cff40 --- /dev/null +++ b/src/img/symbols/TSR/T.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TSR/U.svg b/src/img/symbols/TSR/U.svg new file mode 100644 index 00000000..26a80da8 --- /dev/null +++ b/src/img/symbols/TSR/U.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/TSR/WM.svg b/src/img/symbols/TSR/WM.svg new file mode 100644 index 00000000..39054cbc --- /dev/null +++ b/src/img/symbols/TSR/WM.svg @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/src/img/symbols/UDS/80.svg b/src/img/symbols/UDS/80.svg new file mode 100644 index 00000000..6e91ae74 --- /dev/null +++ b/src/img/symbols/UDS/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/UDS/C.svg b/src/img/symbols/UDS/C.svg new file mode 100644 index 00000000..b596f2b3 --- /dev/null +++ b/src/img/symbols/UDS/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/UDS/M.svg b/src/img/symbols/UDS/M.svg new file mode 100644 index 00000000..543c3431 --- /dev/null +++ b/src/img/symbols/UDS/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UDS/R.svg b/src/img/symbols/UDS/R.svg new file mode 100644 index 00000000..e1733ab7 --- /dev/null +++ b/src/img/symbols/UDS/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UDS/T.svg b/src/img/symbols/UDS/T.svg new file mode 100644 index 00000000..9b753796 --- /dev/null +++ b/src/img/symbols/UDS/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UDS/U.svg b/src/img/symbols/UDS/U.svg new file mode 100644 index 00000000..e065efb2 --- /dev/null +++ b/src/img/symbols/UDS/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UDS/WM.svg b/src/img/symbols/UDS/WM.svg new file mode 100644 index 00000000..e5c45f9f --- /dev/null +++ b/src/img/symbols/UDS/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/UGL/80.svg b/src/img/symbols/UGL/80.svg new file mode 100644 index 00000000..afbc0f3c --- /dev/null +++ b/src/img/symbols/UGL/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/UGL/C.svg b/src/img/symbols/UGL/C.svg new file mode 100644 index 00000000..36a74f64 --- /dev/null +++ b/src/img/symbols/UGL/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/UGL/M.svg b/src/img/symbols/UGL/M.svg new file mode 100644 index 00000000..c6178942 --- /dev/null +++ b/src/img/symbols/UGL/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UGL/R.svg b/src/img/symbols/UGL/R.svg new file mode 100644 index 00000000..a7df3598 --- /dev/null +++ b/src/img/symbols/UGL/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UGL/T.svg b/src/img/symbols/UGL/T.svg new file mode 100644 index 00000000..905c11fe --- /dev/null +++ b/src/img/symbols/UGL/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UGL/U.svg b/src/img/symbols/UGL/U.svg new file mode 100644 index 00000000..245ef637 --- /dev/null +++ b/src/img/symbols/UGL/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/UGL/WM.svg b/src/img/symbols/UGL/WM.svg new file mode 100644 index 00000000..31559ca9 --- /dev/null +++ b/src/img/symbols/UGL/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ULG/80.svg b/src/img/symbols/ULG/80.svg new file mode 100644 index 00000000..3f58000f --- /dev/null +++ b/src/img/symbols/ULG/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ULG/C.svg b/src/img/symbols/ULG/C.svg new file mode 100644 index 00000000..05226bd6 --- /dev/null +++ b/src/img/symbols/ULG/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ULG/M.svg b/src/img/symbols/ULG/M.svg new file mode 100644 index 00000000..bb5a35b9 --- /dev/null +++ b/src/img/symbols/ULG/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ULG/R.svg b/src/img/symbols/ULG/R.svg new file mode 100644 index 00000000..d18ca663 --- /dev/null +++ b/src/img/symbols/ULG/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/ULG/T.svg b/src/img/symbols/ULG/T.svg new file mode 100644 index 00000000..54043fe6 --- /dev/null +++ b/src/img/symbols/ULG/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ULG/U.svg b/src/img/symbols/ULG/U.svg new file mode 100644 index 00000000..cb71e493 --- /dev/null +++ b/src/img/symbols/ULG/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/ULG/WM.svg b/src/img/symbols/ULG/WM.svg new file mode 100644 index 00000000..240f72f7 --- /dev/null +++ b/src/img/symbols/ULG/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/UMA/80.svg b/src/img/symbols/UMA/80.svg new file mode 100644 index 00000000..8be7ba89 --- /dev/null +++ b/src/img/symbols/UMA/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/UMA/C.svg b/src/img/symbols/UMA/C.svg new file mode 100644 index 00000000..d9da95e8 --- /dev/null +++ b/src/img/symbols/UMA/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/UMA/M.svg b/src/img/symbols/UMA/M.svg new file mode 100644 index 00000000..3734fa56 --- /dev/null +++ b/src/img/symbols/UMA/M.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UMA/R.svg b/src/img/symbols/UMA/R.svg new file mode 100644 index 00000000..8d80232d --- /dev/null +++ b/src/img/symbols/UMA/R.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UMA/T.svg b/src/img/symbols/UMA/T.svg new file mode 100644 index 00000000..63fb4ed9 --- /dev/null +++ b/src/img/symbols/UMA/T.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UMA/U.svg b/src/img/symbols/UMA/U.svg new file mode 100644 index 00000000..8e59e4ca --- /dev/null +++ b/src/img/symbols/UMA/U.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UMA/UMA_C.svg b/src/img/symbols/UMA/UMA_C.svg new file mode 100644 index 00000000..13b95445 --- /dev/null +++ b/src/img/symbols/UMA/UMA_C.svg @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/src/img/symbols/UMA/UMA_M.svg b/src/img/symbols/UMA/UMA_M.svg new file mode 100644 index 00000000..3343cba9 --- /dev/null +++ b/src/img/symbols/UMA/UMA_M.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UMA/UMA_R.svg b/src/img/symbols/UMA/UMA_R.svg new file mode 100644 index 00000000..36d5ecef --- /dev/null +++ b/src/img/symbols/UMA/UMA_R.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UMA/UMA_U.svg b/src/img/symbols/UMA/UMA_U.svg new file mode 100644 index 00000000..34098c4d --- /dev/null +++ b/src/img/symbols/UMA/UMA_U.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UMA/WM.svg b/src/img/symbols/UMA/WM.svg new file mode 100644 index 00000000..d1484842 --- /dev/null +++ b/src/img/symbols/UMA/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/UNF/80.svg b/src/img/symbols/UNF/80.svg new file mode 100644 index 00000000..8e27e359 --- /dev/null +++ b/src/img/symbols/UNF/80.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/img/symbols/UNF/C.svg b/src/img/symbols/UNF/C.svg new file mode 100644 index 00000000..e3d49178 --- /dev/null +++ b/src/img/symbols/UNF/C.svg @@ -0,0 +1,14 @@ + + + + + diff --git a/src/img/symbols/UNF/M.svg b/src/img/symbols/UNF/M.svg new file mode 100644 index 00000000..dfe65e95 --- /dev/null +++ b/src/img/symbols/UNF/M.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNF/R.svg b/src/img/symbols/UNF/R.svg new file mode 100644 index 00000000..262cc624 --- /dev/null +++ b/src/img/symbols/UNF/R.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNF/T.svg b/src/img/symbols/UNF/T.svg new file mode 100644 index 00000000..509416c7 --- /dev/null +++ b/src/img/symbols/UNF/T.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNF/U.svg b/src/img/symbols/UNF/U.svg new file mode 100644 index 00000000..f84cf58e --- /dev/null +++ b/src/img/symbols/UNF/U.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNF/WM.svg b/src/img/symbols/UNF/WM.svg new file mode 100644 index 00000000..02fefb51 --- /dev/null +++ b/src/img/symbols/UNF/WM.svg @@ -0,0 +1,13 @@ + + + + diff --git a/src/img/symbols/UNH/80.svg b/src/img/symbols/UNH/80.svg new file mode 100644 index 00000000..2b71f320 --- /dev/null +++ b/src/img/symbols/UNH/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/UNH/C.svg b/src/img/symbols/UNH/C.svg new file mode 100644 index 00000000..9f7feb90 --- /dev/null +++ b/src/img/symbols/UNH/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/UNH/M.svg b/src/img/symbols/UNH/M.svg new file mode 100644 index 00000000..ae5b6672 --- /dev/null +++ b/src/img/symbols/UNH/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNH/R.svg b/src/img/symbols/UNH/R.svg new file mode 100644 index 00000000..9711aa2c --- /dev/null +++ b/src/img/symbols/UNH/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNH/R_half.svg b/src/img/symbols/UNH/R_half.svg new file mode 100644 index 00000000..504ba4a6 --- /dev/null +++ b/src/img/symbols/UNH/R_half.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/UNH/T.svg b/src/img/symbols/UNH/T.svg new file mode 100644 index 00000000..3eef1d43 --- /dev/null +++ b/src/img/symbols/UNH/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNH/U.svg b/src/img/symbols/UNH/U.svg new file mode 100644 index 00000000..d637ee9a --- /dev/null +++ b/src/img/symbols/UNH/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/UNH/WM.svg b/src/img/symbols/UNH/WM.svg new file mode 100644 index 00000000..f83a2b8c --- /dev/null +++ b/src/img/symbols/UNH/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/USG/80.svg b/src/img/symbols/USG/80.svg new file mode 100644 index 00000000..b3c2820b --- /dev/null +++ b/src/img/symbols/USG/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/USG/C.svg b/src/img/symbols/USG/C.svg new file mode 100644 index 00000000..51f91b2c --- /dev/null +++ b/src/img/symbols/USG/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/USG/M.svg b/src/img/symbols/USG/M.svg new file mode 100644 index 00000000..02c4ab98 --- /dev/null +++ b/src/img/symbols/USG/M.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/USG/R.svg b/src/img/symbols/USG/R.svg new file mode 100644 index 00000000..ddbe1428 --- /dev/null +++ b/src/img/symbols/USG/R.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/USG/T.svg b/src/img/symbols/USG/T.svg new file mode 100644 index 00000000..1e179476 --- /dev/null +++ b/src/img/symbols/USG/T.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/USG/U.svg b/src/img/symbols/USG/U.svg new file mode 100644 index 00000000..48921821 --- /dev/null +++ b/src/img/symbols/USG/U.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/USG/WM.svg b/src/img/symbols/USG/WM.svg new file mode 100644 index 00000000..cbc79c05 --- /dev/null +++ b/src/img/symbols/USG/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/UST/80.svg b/src/img/symbols/UST/80.svg new file mode 100644 index 00000000..d5390f20 --- /dev/null +++ b/src/img/symbols/UST/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/UST/C.svg b/src/img/symbols/UST/C.svg new file mode 100644 index 00000000..601b0a6e --- /dev/null +++ b/src/img/symbols/UST/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/UST/M.svg b/src/img/symbols/UST/M.svg new file mode 100644 index 00000000..9f933c4d --- /dev/null +++ b/src/img/symbols/UST/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/UST/R.svg b/src/img/symbols/UST/R.svg new file mode 100644 index 00000000..e5679fd4 --- /dev/null +++ b/src/img/symbols/UST/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/UST/T.svg b/src/img/symbols/UST/T.svg new file mode 100644 index 00000000..d7cf708b --- /dev/null +++ b/src/img/symbols/UST/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/UST/U.svg b/src/img/symbols/UST/U.svg new file mode 100644 index 00000000..122e1092 --- /dev/null +++ b/src/img/symbols/UST/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/UST/WM.svg b/src/img/symbols/UST/WM.svg new file mode 100644 index 00000000..fc048bdd --- /dev/null +++ b/src/img/symbols/UST/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/V09/80.svg b/src/img/symbols/V09/80.svg new file mode 100644 index 00000000..49e89bc4 --- /dev/null +++ b/src/img/symbols/V09/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/V09/C.svg b/src/img/symbols/V09/C.svg new file mode 100644 index 00000000..31af0bb3 --- /dev/null +++ b/src/img/symbols/V09/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/V09/M.svg b/src/img/symbols/V09/M.svg new file mode 100644 index 00000000..b25b5adc --- /dev/null +++ b/src/img/symbols/V09/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V09/R.svg b/src/img/symbols/V09/R.svg new file mode 100644 index 00000000..189888c1 --- /dev/null +++ b/src/img/symbols/V09/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V09/T.svg b/src/img/symbols/V09/T.svg new file mode 100644 index 00000000..36b52465 --- /dev/null +++ b/src/img/symbols/V09/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V09/U.svg b/src/img/symbols/V09/U.svg new file mode 100644 index 00000000..e45c5007 --- /dev/null +++ b/src/img/symbols/V09/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V09/WM.svg b/src/img/symbols/V09/WM.svg new file mode 100644 index 00000000..b06e1da2 --- /dev/null +++ b/src/img/symbols/V09/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/V10/80.svg b/src/img/symbols/V10/80.svg new file mode 100644 index 00000000..8ef4a621 --- /dev/null +++ b/src/img/symbols/V10/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V10/C.svg b/src/img/symbols/V10/C.svg new file mode 100644 index 00000000..822b9032 --- /dev/null +++ b/src/img/symbols/V10/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V10/M.svg b/src/img/symbols/V10/M.svg new file mode 100644 index 00000000..1b7569c3 --- /dev/null +++ b/src/img/symbols/V10/M.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V10/R.svg b/src/img/symbols/V10/R.svg new file mode 100644 index 00000000..f12b2ca7 --- /dev/null +++ b/src/img/symbols/V10/R.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V10/T.svg b/src/img/symbols/V10/T.svg new file mode 100644 index 00000000..2daf3df3 --- /dev/null +++ b/src/img/symbols/V10/T.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V10/U.svg b/src/img/symbols/V10/U.svg new file mode 100644 index 00000000..8edc4024 --- /dev/null +++ b/src/img/symbols/V10/U.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V10/WM.svg b/src/img/symbols/V10/WM.svg new file mode 100644 index 00000000..cd126d2b --- /dev/null +++ b/src/img/symbols/V10/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/V11/80.svg b/src/img/symbols/V11/80.svg new file mode 100644 index 00000000..4350e98c --- /dev/null +++ b/src/img/symbols/V11/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V11/C.svg b/src/img/symbols/V11/C.svg new file mode 100644 index 00000000..f89f75d9 --- /dev/null +++ b/src/img/symbols/V11/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V11/M.svg b/src/img/symbols/V11/M.svg new file mode 100644 index 00000000..0b4d4129 --- /dev/null +++ b/src/img/symbols/V11/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V11/R.svg b/src/img/symbols/V11/R.svg new file mode 100644 index 00000000..afbcf3ec --- /dev/null +++ b/src/img/symbols/V11/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V11/T.svg b/src/img/symbols/V11/T.svg new file mode 100644 index 00000000..43376b3b --- /dev/null +++ b/src/img/symbols/V11/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V11/U.svg b/src/img/symbols/V11/U.svg new file mode 100644 index 00000000..9e1c729d --- /dev/null +++ b/src/img/symbols/V11/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V11/WM.svg b/src/img/symbols/V11/WM.svg new file mode 100644 index 00000000..57535a49 --- /dev/null +++ b/src/img/symbols/V11/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/V12/80.svg b/src/img/symbols/V12/80.svg new file mode 100644 index 00000000..7ae8c48c --- /dev/null +++ b/src/img/symbols/V12/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/V12/C.svg b/src/img/symbols/V12/C.svg new file mode 100644 index 00000000..410d08ba --- /dev/null +++ b/src/img/symbols/V12/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/V12/M.svg b/src/img/symbols/V12/M.svg new file mode 100644 index 00000000..6c98058a --- /dev/null +++ b/src/img/symbols/V12/M.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V12/R.svg b/src/img/symbols/V12/R.svg new file mode 100644 index 00000000..83404450 --- /dev/null +++ b/src/img/symbols/V12/R.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V12/T.svg b/src/img/symbols/V12/T.svg new file mode 100644 index 00000000..8c9d3902 --- /dev/null +++ b/src/img/symbols/V12/T.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V12/U.svg b/src/img/symbols/V12/U.svg new file mode 100644 index 00000000..89bf904d --- /dev/null +++ b/src/img/symbols/V12/U.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V12/WM.svg b/src/img/symbols/V12/WM.svg new file mode 100644 index 00000000..a10d129d --- /dev/null +++ b/src/img/symbols/V12/WM.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/V13/80.svg b/src/img/symbols/V13/80.svg new file mode 100644 index 00000000..bf2f0367 --- /dev/null +++ b/src/img/symbols/V13/80.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/V13/C.svg b/src/img/symbols/V13/C.svg new file mode 100644 index 00000000..fb83a557 --- /dev/null +++ b/src/img/symbols/V13/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/V13/M.svg b/src/img/symbols/V13/M.svg new file mode 100644 index 00000000..333d784f --- /dev/null +++ b/src/img/symbols/V13/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V13/R.svg b/src/img/symbols/V13/R.svg new file mode 100644 index 00000000..5af86e4c --- /dev/null +++ b/src/img/symbols/V13/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V13/T.svg b/src/img/symbols/V13/T.svg new file mode 100644 index 00000000..89412707 --- /dev/null +++ b/src/img/symbols/V13/T.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V13/U.svg b/src/img/symbols/V13/U.svg new file mode 100644 index 00000000..95e4c5ec --- /dev/null +++ b/src/img/symbols/V13/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V13/WM.svg b/src/img/symbols/V13/WM.svg new file mode 100644 index 00000000..cebe98b4 --- /dev/null +++ b/src/img/symbols/V13/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/V14/80.svg b/src/img/symbols/V14/80.svg new file mode 100644 index 00000000..9638b8b3 --- /dev/null +++ b/src/img/symbols/V14/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/V14/C.svg b/src/img/symbols/V14/C.svg new file mode 100644 index 00000000..0059fe88 --- /dev/null +++ b/src/img/symbols/V14/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/V14/M.svg b/src/img/symbols/V14/M.svg new file mode 100644 index 00000000..7a41a731 --- /dev/null +++ b/src/img/symbols/V14/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V14/R.svg b/src/img/symbols/V14/R.svg new file mode 100644 index 00000000..e0b3c62c --- /dev/null +++ b/src/img/symbols/V14/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V14/T.svg b/src/img/symbols/V14/T.svg new file mode 100644 index 00000000..7b693ccd --- /dev/null +++ b/src/img/symbols/V14/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V14/U.svg b/src/img/symbols/V14/U.svg new file mode 100644 index 00000000..caf8dd87 --- /dev/null +++ b/src/img/symbols/V14/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V14/WM.svg b/src/img/symbols/V14/WM.svg new file mode 100644 index 00000000..14f0c9fa --- /dev/null +++ b/src/img/symbols/V14/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/V15/80.svg b/src/img/symbols/V15/80.svg new file mode 100644 index 00000000..20404b99 --- /dev/null +++ b/src/img/symbols/V15/80.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V15/C.svg b/src/img/symbols/V15/C.svg new file mode 100644 index 00000000..456e7142 --- /dev/null +++ b/src/img/symbols/V15/C.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V15/M.svg b/src/img/symbols/V15/M.svg new file mode 100644 index 00000000..d18c9eaf --- /dev/null +++ b/src/img/symbols/V15/M.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V15/R.svg b/src/img/symbols/V15/R.svg new file mode 100644 index 00000000..457a063f --- /dev/null +++ b/src/img/symbols/V15/R.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V15/T.svg b/src/img/symbols/V15/T.svg new file mode 100644 index 00000000..3dee4e92 --- /dev/null +++ b/src/img/symbols/V15/T.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V15/U.svg b/src/img/symbols/V15/U.svg new file mode 100644 index 00000000..03673232 --- /dev/null +++ b/src/img/symbols/V15/U.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V15/WM.svg b/src/img/symbols/V15/WM.svg new file mode 100644 index 00000000..e794f344 --- /dev/null +++ b/src/img/symbols/V15/WM.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V16/80.svg b/src/img/symbols/V16/80.svg new file mode 100644 index 00000000..50697e2b --- /dev/null +++ b/src/img/symbols/V16/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/V16/C.svg b/src/img/symbols/V16/C.svg new file mode 100644 index 00000000..959c2207 --- /dev/null +++ b/src/img/symbols/V16/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/V16/M.svg b/src/img/symbols/V16/M.svg new file mode 100644 index 00000000..6b564294 --- /dev/null +++ b/src/img/symbols/V16/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/V16/R.svg b/src/img/symbols/V16/R.svg new file mode 100644 index 00000000..9d5ffcfa --- /dev/null +++ b/src/img/symbols/V16/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/V16/T.svg b/src/img/symbols/V16/T.svg new file mode 100644 index 00000000..74d2dba0 --- /dev/null +++ b/src/img/symbols/V16/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/V16/U.svg b/src/img/symbols/V16/U.svg new file mode 100644 index 00000000..dbf5a297 --- /dev/null +++ b/src/img/symbols/V16/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/V16/WM.svg b/src/img/symbols/V16/WM.svg new file mode 100644 index 00000000..4f4657ce --- /dev/null +++ b/src/img/symbols/V16/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/V17 - Back/80.svg b/src/img/symbols/V17 - Back/80.svg new file mode 100644 index 00000000..6a67320b --- /dev/null +++ b/src/img/symbols/V17 - Back/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V17 - Back/C.svg b/src/img/symbols/V17 - Back/C.svg new file mode 100644 index 00000000..39753196 --- /dev/null +++ b/src/img/symbols/V17 - Back/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V17 - Back/M.svg b/src/img/symbols/V17 - Back/M.svg new file mode 100644 index 00000000..11ff64dd --- /dev/null +++ b/src/img/symbols/V17 - Back/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Back/R.svg b/src/img/symbols/V17 - Back/R.svg new file mode 100644 index 00000000..5f6b0697 --- /dev/null +++ b/src/img/symbols/V17 - Back/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Back/T.svg b/src/img/symbols/V17 - Back/T.svg new file mode 100644 index 00000000..be2a06e6 --- /dev/null +++ b/src/img/symbols/V17 - Back/T.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Back/U.svg b/src/img/symbols/V17 - Back/U.svg new file mode 100644 index 00000000..14f4032a --- /dev/null +++ b/src/img/symbols/V17 - Back/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Back/WM.svg b/src/img/symbols/V17 - Back/WM.svg new file mode 100644 index 00000000..c73bfcd5 --- /dev/null +++ b/src/img/symbols/V17 - Back/WM.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/img/symbols/V17 - Front/80.svg b/src/img/symbols/V17 - Front/80.svg new file mode 100644 index 00000000..450ae743 --- /dev/null +++ b/src/img/symbols/V17 - Front/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V17 - Front/C.svg b/src/img/symbols/V17 - Front/C.svg new file mode 100644 index 00000000..9fd29944 --- /dev/null +++ b/src/img/symbols/V17 - Front/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/V17 - Front/M.svg b/src/img/symbols/V17 - Front/M.svg new file mode 100644 index 00000000..8e8b54eb --- /dev/null +++ b/src/img/symbols/V17 - Front/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Front/R.svg b/src/img/symbols/V17 - Front/R.svg new file mode 100644 index 00000000..7e76f8bb --- /dev/null +++ b/src/img/symbols/V17 - Front/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Front/T.svg b/src/img/symbols/V17 - Front/T.svg new file mode 100644 index 00000000..0b2bbc37 --- /dev/null +++ b/src/img/symbols/V17 - Front/T.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Front/U.svg b/src/img/symbols/V17 - Front/U.svg new file mode 100644 index 00000000..6f8a0a67 --- /dev/null +++ b/src/img/symbols/V17 - Front/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/V17 - Front/WM.svg b/src/img/symbols/V17 - Front/WM.svg new file mode 100644 index 00000000..1d83b451 --- /dev/null +++ b/src/img/symbols/V17 - Front/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/VIS/80.svg b/src/img/symbols/VIS/80.svg new file mode 100644 index 00000000..c7ba8d22 --- /dev/null +++ b/src/img/symbols/VIS/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/VIS/C - Original.svg b/src/img/symbols/VIS/C - Original.svg new file mode 100644 index 00000000..957ef4fe --- /dev/null +++ b/src/img/symbols/VIS/C - Original.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/VIS/C.svg b/src/img/symbols/VIS/C.svg new file mode 100644 index 00000000..01a0bf76 --- /dev/null +++ b/src/img/symbols/VIS/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/VIS/M.svg b/src/img/symbols/VIS/M.svg new file mode 100644 index 00000000..1ca367cb --- /dev/null +++ b/src/img/symbols/VIS/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VIS/R.svg b/src/img/symbols/VIS/R.svg new file mode 100644 index 00000000..94945c5e --- /dev/null +++ b/src/img/symbols/VIS/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VIS/T.svg b/src/img/symbols/VIS/T.svg new file mode 100644 index 00000000..34899545 --- /dev/null +++ b/src/img/symbols/VIS/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VIS/U.svg b/src/img/symbols/VIS/U.svg new file mode 100644 index 00000000..6f349e8a --- /dev/null +++ b/src/img/symbols/VIS/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VIS/WM.svg b/src/img/symbols/VIS/WM.svg new file mode 100644 index 00000000..74425e73 --- /dev/null +++ b/src/img/symbols/VIS/WM.svg @@ -0,0 +1,6 @@ + + + + diff --git a/src/img/symbols/VMA/80.svg b/src/img/symbols/VMA/80.svg new file mode 100644 index 00000000..5f6ae74c --- /dev/null +++ b/src/img/symbols/VMA/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/VMA/C.svg b/src/img/symbols/VMA/C.svg new file mode 100644 index 00000000..263f89a4 --- /dev/null +++ b/src/img/symbols/VMA/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/VMA/M.svg b/src/img/symbols/VMA/M.svg new file mode 100644 index 00000000..2f56b4cd --- /dev/null +++ b/src/img/symbols/VMA/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/VMA/R.svg b/src/img/symbols/VMA/R.svg new file mode 100644 index 00000000..9ea6197a --- /dev/null +++ b/src/img/symbols/VMA/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/VMA/S.svg b/src/img/symbols/VMA/S.svg new file mode 100644 index 00000000..fd399feb --- /dev/null +++ b/src/img/symbols/VMA/S.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VMA/T.svg b/src/img/symbols/VMA/T.svg new file mode 100644 index 00000000..ef42a161 --- /dev/null +++ b/src/img/symbols/VMA/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/VMA/U.svg b/src/img/symbols/VMA/U.svg new file mode 100644 index 00000000..ce185fb4 --- /dev/null +++ b/src/img/symbols/VMA/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/VMA/WM.svg b/src/img/symbols/VMA/WM.svg new file mode 100644 index 00000000..6d749b66 --- /dev/null +++ b/src/img/symbols/VMA/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/VOC/80.svg b/src/img/symbols/VOC/80.svg new file mode 100644 index 00000000..aee10e3e --- /dev/null +++ b/src/img/symbols/VOC/80.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + diff --git a/src/img/symbols/VOC/C.svg b/src/img/symbols/VOC/C.svg new file mode 100644 index 00000000..e7b750b9 --- /dev/null +++ b/src/img/symbols/VOC/C.svg @@ -0,0 +1,49 @@ + + + + + + + + + diff --git a/src/img/symbols/VOC/M.svg b/src/img/symbols/VOC/M.svg new file mode 100644 index 00000000..ab7d797a --- /dev/null +++ b/src/img/symbols/VOC/M.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VOC/R.svg b/src/img/symbols/VOC/R.svg new file mode 100644 index 00000000..eadf4a3e --- /dev/null +++ b/src/img/symbols/VOC/R.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VOC/T.svg b/src/img/symbols/VOC/T.svg new file mode 100644 index 00000000..1f900b42 --- /dev/null +++ b/src/img/symbols/VOC/T.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VOC/U.svg b/src/img/symbols/VOC/U.svg new file mode 100644 index 00000000..5a1c1c44 --- /dev/null +++ b/src/img/symbols/VOC/U.svg @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/VOC/WM.svg b/src/img/symbols/VOC/WM.svg new file mode 100644 index 00000000..636e41cc --- /dev/null +++ b/src/img/symbols/VOC/WM.svg @@ -0,0 +1,44 @@ + + + + + + + + + diff --git a/src/img/symbols/Vanguard/C.svg b/src/img/symbols/Vanguard/C.svg new file mode 100644 index 00000000..57f08b77 --- /dev/null +++ b/src/img/symbols/Vanguard/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/Vanguard/WM.svg b/src/img/symbols/Vanguard/WM.svg new file mode 100644 index 00000000..a3a92555 --- /dev/null +++ b/src/img/symbols/Vanguard/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/Vintage Championship/Vintage Championship 1.svg b/src/img/symbols/Vintage Championship/Vintage Championship 1.svg new file mode 100644 index 00000000..df2941dd --- /dev/null +++ b/src/img/symbols/Vintage Championship/Vintage Championship 1.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/Vintage Championship/Vintage Championship 2.svg b/src/img/symbols/Vintage Championship/Vintage Championship 2.svg new file mode 100644 index 00000000..eaa7f2ed --- /dev/null +++ b/src/img/symbols/Vintage Championship/Vintage Championship 2.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/Vintage Championship/Z0102 - Vintage Championship 2-1.svg b/src/img/symbols/Vintage Championship/Z0102 - Vintage Championship 2-1.svg new file mode 100644 index 00000000..ae485fc5 --- /dev/null +++ b/src/img/symbols/Vintage Championship/Z0102 - Vintage Championship 2-1.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/Vintage Championship/Z0102 - Vintage Championship 2.svg b/src/img/symbols/Vintage Championship/Z0102 - Vintage Championship 2.svg new file mode 100644 index 00000000..5010f616 --- /dev/null +++ b/src/img/symbols/Vintage Championship/Z0102 - Vintage Championship 2.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/W16/80.svg b/src/img/symbols/W16/80.svg new file mode 100644 index 00000000..28499ee9 --- /dev/null +++ b/src/img/symbols/W16/80.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/W16/C.svg b/src/img/symbols/W16/C.svg new file mode 100644 index 00000000..02671524 --- /dev/null +++ b/src/img/symbols/W16/C.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/W16/M.svg b/src/img/symbols/W16/M.svg new file mode 100644 index 00000000..66aeabf0 --- /dev/null +++ b/src/img/symbols/W16/M.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/W16/R.svg b/src/img/symbols/W16/R.svg new file mode 100644 index 00000000..22ffecbb --- /dev/null +++ b/src/img/symbols/W16/R.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/W16/T.svg b/src/img/symbols/W16/T.svg new file mode 100644 index 00000000..1a347703 --- /dev/null +++ b/src/img/symbols/W16/T.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/W16/U.svg b/src/img/symbols/W16/U.svg new file mode 100644 index 00000000..4155fcae --- /dev/null +++ b/src/img/symbols/W16/U.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/img/symbols/W16/WM.svg b/src/img/symbols/W16/WM.svg new file mode 100644 index 00000000..eee9cbc9 --- /dev/null +++ b/src/img/symbols/W16/WM.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/W17/80.svg b/src/img/symbols/W17/80.svg new file mode 100644 index 00000000..ffe2d2c9 --- /dev/null +++ b/src/img/symbols/W17/80.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/W17/C.svg b/src/img/symbols/W17/C.svg new file mode 100644 index 00000000..84963196 --- /dev/null +++ b/src/img/symbols/W17/C.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/img/symbols/W17/M.svg b/src/img/symbols/W17/M.svg new file mode 100644 index 00000000..f7385df4 --- /dev/null +++ b/src/img/symbols/W17/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/W17/R.svg b/src/img/symbols/W17/R.svg new file mode 100644 index 00000000..93c4553e --- /dev/null +++ b/src/img/symbols/W17/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/W17/T.svg b/src/img/symbols/W17/T.svg new file mode 100644 index 00000000..325379ba --- /dev/null +++ b/src/img/symbols/W17/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/W17/U.svg b/src/img/symbols/W17/U.svg new file mode 100644 index 00000000..3a391daf --- /dev/null +++ b/src/img/symbols/W17/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/W17/WM.svg b/src/img/symbols/W17/WM.svg new file mode 100644 index 00000000..f3f493d6 --- /dev/null +++ b/src/img/symbols/W17/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/WAR/80.svg b/src/img/symbols/WAR/80.svg new file mode 100644 index 00000000..328da6c6 --- /dev/null +++ b/src/img/symbols/WAR/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/WAR/C.svg b/src/img/symbols/WAR/C.svg new file mode 100644 index 00000000..3ac64c3b --- /dev/null +++ b/src/img/symbols/WAR/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/WAR/M.svg b/src/img/symbols/WAR/M.svg new file mode 100644 index 00000000..b0ed3445 --- /dev/null +++ b/src/img/symbols/WAR/M.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WAR/R.svg b/src/img/symbols/WAR/R.svg new file mode 100644 index 00000000..e4569367 --- /dev/null +++ b/src/img/symbols/WAR/R.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WAR/T.svg b/src/img/symbols/WAR/T.svg new file mode 100644 index 00000000..381af42c --- /dev/null +++ b/src/img/symbols/WAR/T.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WAR/U.svg b/src/img/symbols/WAR/U.svg new file mode 100644 index 00000000..61a066cd --- /dev/null +++ b/src/img/symbols/WAR/U.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WAR/WM.svg b/src/img/symbols/WAR/WM.svg new file mode 100644 index 00000000..20d2325d --- /dev/null +++ b/src/img/symbols/WAR/WM.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/WTH/80.svg b/src/img/symbols/WTH/80.svg new file mode 100644 index 00000000..76b3e77c --- /dev/null +++ b/src/img/symbols/WTH/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/WTH/C.svg b/src/img/symbols/WTH/C.svg new file mode 100644 index 00000000..58e6eea2 --- /dev/null +++ b/src/img/symbols/WTH/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/WTH/M.svg b/src/img/symbols/WTH/M.svg new file mode 100644 index 00000000..a050e90a --- /dev/null +++ b/src/img/symbols/WTH/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH/R.svg b/src/img/symbols/WTH/R.svg new file mode 100644 index 00000000..7df52ec0 --- /dev/null +++ b/src/img/symbols/WTH/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH/T.svg b/src/img/symbols/WTH/T.svg new file mode 100644 index 00000000..65db135e --- /dev/null +++ b/src/img/symbols/WTH/T.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH/U.svg b/src/img/symbols/WTH/U.svg new file mode 100644 index 00000000..18a1ac13 --- /dev/null +++ b/src/img/symbols/WTH/U.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH/Watermark - M25.svg b/src/img/symbols/WTH/Watermark - M25.svg new file mode 100644 index 00000000..838da0a5 --- /dev/null +++ b/src/img/symbols/WTH/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/WTH_ALT1/80.svg b/src/img/symbols/WTH_ALT1/80.svg new file mode 100644 index 00000000..10e4c720 --- /dev/null +++ b/src/img/symbols/WTH_ALT1/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/WTH_ALT1/M.svg b/src/img/symbols/WTH_ALT1/M.svg new file mode 100644 index 00000000..e344ff62 --- /dev/null +++ b/src/img/symbols/WTH_ALT1/M.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH_ALT1/R.svg b/src/img/symbols/WTH_ALT1/R.svg new file mode 100644 index 00000000..4e20746f --- /dev/null +++ b/src/img/symbols/WTH_ALT1/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH_ALT1/T.svg b/src/img/symbols/WTH_ALT1/T.svg new file mode 100644 index 00000000..98b6ea0a --- /dev/null +++ b/src/img/symbols/WTH_ALT1/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH_ALT1/U.svg b/src/img/symbols/WTH_ALT1/U.svg new file mode 100644 index 00000000..524fd3b9 --- /dev/null +++ b/src/img/symbols/WTH_ALT1/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH_ALT2/M.svg b/src/img/symbols/WTH_ALT2/M.svg new file mode 100644 index 00000000..1c137cc0 --- /dev/null +++ b/src/img/symbols/WTH_ALT2/M.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH_ALT2/R.svg b/src/img/symbols/WTH_ALT2/R.svg new file mode 100644 index 00000000..8eaeb187 --- /dev/null +++ b/src/img/symbols/WTH_ALT2/R.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH_ALT2/T.svg b/src/img/symbols/WTH_ALT2/T.svg new file mode 100644 index 00000000..9716b212 --- /dev/null +++ b/src/img/symbols/WTH_ALT2/T.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WTH_ALT2/U.svg b/src/img/symbols/WTH_ALT2/U.svg new file mode 100644 index 00000000..c90a463a --- /dev/null +++ b/src/img/symbols/WTH_ALT2/U.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WWK/80.svg b/src/img/symbols/WWK/80.svg new file mode 100644 index 00000000..8d65e52a --- /dev/null +++ b/src/img/symbols/WWK/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/WWK/C.svg b/src/img/symbols/WWK/C.svg new file mode 100644 index 00000000..829ea3fc --- /dev/null +++ b/src/img/symbols/WWK/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/WWK/M.svg b/src/img/symbols/WWK/M.svg new file mode 100644 index 00000000..817d7434 --- /dev/null +++ b/src/img/symbols/WWK/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/WWK/R.svg b/src/img/symbols/WWK/R.svg new file mode 100644 index 00000000..090fff48 --- /dev/null +++ b/src/img/symbols/WWK/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WWK/T.svg b/src/img/symbols/WWK/T.svg new file mode 100644 index 00000000..fffabe97 --- /dev/null +++ b/src/img/symbols/WWK/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WWK/U.svg b/src/img/symbols/WWK/U.svg new file mode 100644 index 00000000..c33f8c3a --- /dev/null +++ b/src/img/symbols/WWK/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/WWK/Watermark - M25.svg b/src/img/symbols/WWK/Watermark - M25.svg new file mode 100644 index 00000000..f843029d --- /dev/null +++ b/src/img/symbols/WWK/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/XDUELS/C.svg b/src/img/symbols/XDUELS/C.svg new file mode 100644 index 00000000..b4d423cc --- /dev/null +++ b/src/img/symbols/XDUELS/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/XDUELS/WM.svg b/src/img/symbols/XDUELS/WM.svg new file mode 100644 index 00000000..c445807c --- /dev/null +++ b/src/img/symbols/XDUELS/WM.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/XLN/80.svg b/src/img/symbols/XLN/80.svg new file mode 100644 index 00000000..240a3f51 --- /dev/null +++ b/src/img/symbols/XLN/80.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/XLN/C.svg b/src/img/symbols/XLN/C.svg new file mode 100644 index 00000000..783605b9 --- /dev/null +++ b/src/img/symbols/XLN/C.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/img/symbols/XLN/M.svg b/src/img/symbols/XLN/M.svg new file mode 100644 index 00000000..cebb9ad4 --- /dev/null +++ b/src/img/symbols/XLN/M.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/XLN/R.svg b/src/img/symbols/XLN/R.svg new file mode 100644 index 00000000..36dcacf2 --- /dev/null +++ b/src/img/symbols/XLN/R.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/XLN/T.svg b/src/img/symbols/XLN/T.svg new file mode 100644 index 00000000..7e12b1dc --- /dev/null +++ b/src/img/symbols/XLN/T.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/XLN/U.svg b/src/img/symbols/XLN/U.svg new file mode 100644 index 00000000..ca906f71 --- /dev/null +++ b/src/img/symbols/XLN/U.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/XLN/WM.svg b/src/img/symbols/XLN/WM.svg new file mode 100644 index 00000000..aaa7da2c --- /dev/null +++ b/src/img/symbols/XLN/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/ZEN/80.svg b/src/img/symbols/ZEN/80.svg new file mode 100644 index 00000000..2a718c34 --- /dev/null +++ b/src/img/symbols/ZEN/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ZEN/C.svg b/src/img/symbols/ZEN/C.svg new file mode 100644 index 00000000..fd408ae0 --- /dev/null +++ b/src/img/symbols/ZEN/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/ZEN/M.svg b/src/img/symbols/ZEN/M.svg new file mode 100644 index 00000000..048e1e5b --- /dev/null +++ b/src/img/symbols/ZEN/M.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZEN/R.svg b/src/img/symbols/ZEN/R.svg new file mode 100644 index 00000000..8202abf2 --- /dev/null +++ b/src/img/symbols/ZEN/R.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZEN/T.svg b/src/img/symbols/ZEN/T.svg new file mode 100644 index 00000000..ea8ecf4e --- /dev/null +++ b/src/img/symbols/ZEN/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZEN/U.svg b/src/img/symbols/ZEN/U.svg new file mode 100644 index 00000000..7320a34b --- /dev/null +++ b/src/img/symbols/ZEN/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZEN/Watermark - M25.svg b/src/img/symbols/ZEN/Watermark - M25.svg new file mode 100644 index 00000000..4449a697 --- /dev/null +++ b/src/img/symbols/ZEN/Watermark - M25.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/img/symbols/ZNC/C.svg b/src/img/symbols/ZNC/C.svg new file mode 100644 index 00000000..d4939986 --- /dev/null +++ b/src/img/symbols/ZNC/C.svg @@ -0,0 +1,77 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/ZNC/M.svg b/src/img/symbols/ZNC/M.svg new file mode 100644 index 00000000..80c7a28f --- /dev/null +++ b/src/img/symbols/ZNC/M.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/ZNC/R.svg b/src/img/symbols/ZNC/R.svg new file mode 100644 index 00000000..5230d087 --- /dev/null +++ b/src/img/symbols/ZNC/R.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/ZNC/U.svg b/src/img/symbols/ZNC/U.svg new file mode 100644 index 00000000..c34ad58e --- /dev/null +++ b/src/img/symbols/ZNC/U.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/img/symbols/ZNR/80.svg b/src/img/symbols/ZNR/80.svg new file mode 100644 index 00000000..24e07c16 --- /dev/null +++ b/src/img/symbols/ZNR/80.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ZNR/C.svg b/src/img/symbols/ZNR/C.svg new file mode 100644 index 00000000..62746001 --- /dev/null +++ b/src/img/symbols/ZNR/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/ZNR/M.svg b/src/img/symbols/ZNR/M.svg new file mode 100644 index 00000000..e65f054f --- /dev/null +++ b/src/img/symbols/ZNR/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZNR/R.svg b/src/img/symbols/ZNR/R.svg new file mode 100644 index 00000000..45e44c6b --- /dev/null +++ b/src/img/symbols/ZNR/R.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZNR/T.svg b/src/img/symbols/ZNR/T.svg new file mode 100644 index 00000000..627cb6ac --- /dev/null +++ b/src/img/symbols/ZNR/T.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZNR/U.svg b/src/img/symbols/ZNR/U.svg new file mode 100644 index 00000000..4e299cd4 --- /dev/null +++ b/src/img/symbols/ZNR/U.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/ZNR/WM.svg b/src/img/symbols/ZNR/WM.svg new file mode 100644 index 00000000..9d15f130 --- /dev/null +++ b/src/img/symbols/ZNR/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/pDRC/C.svg b/src/img/symbols/pDRC/C.svg new file mode 100644 index 00000000..1a6f4e62 --- /dev/null +++ b/src/img/symbols/pDRC/C.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/symbols/pDRC/WM.svg b/src/img/symbols/pDRC/WM.svg new file mode 100644 index 00000000..8270aa51 --- /dev/null +++ b/src/img/symbols/pDRC/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/pGRU/C.svg b/src/img/symbols/pGRU/C.svg new file mode 100644 index 00000000..80921076 --- /dev/null +++ b/src/img/symbols/pGRU/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/pHPR/80.svg b/src/img/symbols/pHPR/80.svg new file mode 100644 index 00000000..2dd1ba29 --- /dev/null +++ b/src/img/symbols/pHPR/80.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/pHPR/C.svg b/src/img/symbols/pHPR/C.svg new file mode 100644 index 00000000..b008fa63 --- /dev/null +++ b/src/img/symbols/pHPR/C.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/img/symbols/pHPR/M.svg b/src/img/symbols/pHPR/M.svg new file mode 100644 index 00000000..32fad87f --- /dev/null +++ b/src/img/symbols/pHPR/M.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/src/img/symbols/pHPR/R.svg b/src/img/symbols/pHPR/R.svg new file mode 100644 index 00000000..b80e0593 --- /dev/null +++ b/src/img/symbols/pHPR/R.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/pHPR/T.svg b/src/img/symbols/pHPR/T.svg new file mode 100644 index 00000000..e78cd30d --- /dev/null +++ b/src/img/symbols/pHPR/T.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/pHPR/U.svg b/src/img/symbols/pHPR/U.svg new file mode 100644 index 00000000..53211851 --- /dev/null +++ b/src/img/symbols/pHPR/U.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/img/symbols/pHPR/WM.svg b/src/img/symbols/pHPR/WM.svg new file mode 100644 index 00000000..29f3edbe --- /dev/null +++ b/src/img/symbols/pHPR/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/pINV/C.svg b/src/img/symbols/pINV/C.svg new file mode 100644 index 00000000..21020d9b --- /dev/null +++ b/src/img/symbols/pINV/C.svg @@ -0,0 +1,64 @@ + + + + + + /> + + + + + + + diff --git a/src/img/symbols/pINV/WM.svg b/src/img/symbols/pINV/WM.svg new file mode 100644 index 00000000..a5252d9a --- /dev/null +++ b/src/img/symbols/pINV/WM.svg @@ -0,0 +1,49 @@ + + + + + + /> + + + + diff --git a/src/img/symbols/pLEAF/80.svg b/src/img/symbols/pLEAF/80.svg new file mode 100644 index 00000000..577243ce --- /dev/null +++ b/src/img/symbols/pLEAF/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/pLEAF/C.svg b/src/img/symbols/pLEAF/C.svg new file mode 100644 index 00000000..0a2986b5 --- /dev/null +++ b/src/img/symbols/pLEAF/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/pLEAF/M.svg b/src/img/symbols/pLEAF/M.svg new file mode 100644 index 00000000..d0dff650 --- /dev/null +++ b/src/img/symbols/pLEAF/M.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/pLEAF/R.svg b/src/img/symbols/pLEAF/R.svg new file mode 100644 index 00000000..3e8097c4 --- /dev/null +++ b/src/img/symbols/pLEAF/R.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/pLEAF/T.svg b/src/img/symbols/pLEAF/T.svg new file mode 100644 index 00000000..b847c412 --- /dev/null +++ b/src/img/symbols/pLEAF/T.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/pLEAF/U.svg b/src/img/symbols/pLEAF/U.svg new file mode 100644 index 00000000..e1c9b6aa --- /dev/null +++ b/src/img/symbols/pLEAF/U.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/img/symbols/pLEAF/WM.svg b/src/img/symbols/pLEAF/WM.svg new file mode 100644 index 00000000..5d046c18 --- /dev/null +++ b/src/img/symbols/pLEAF/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/img/symbols/pMPS/C.svg b/src/img/symbols/pMPS/C.svg new file mode 100644 index 00000000..5116bcad --- /dev/null +++ b/src/img/symbols/pMPS/C.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/img/symbols/pSUM/80.svg b/src/img/symbols/pSUM/80.svg new file mode 100644 index 00000000..0ce0ea7d --- /dev/null +++ b/src/img/symbols/pSUM/80.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/pSUM/C.svg b/src/img/symbols/pSUM/C.svg new file mode 100644 index 00000000..d1aee980 --- /dev/null +++ b/src/img/symbols/pSUM/C.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/img/symbols/pSUM/M.svg b/src/img/symbols/pSUM/M.svg new file mode 100644 index 00000000..6379362f --- /dev/null +++ b/src/img/symbols/pSUM/M.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/pSUM/R.svg b/src/img/symbols/pSUM/R.svg new file mode 100644 index 00000000..c875b069 --- /dev/null +++ b/src/img/symbols/pSUM/R.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/src/img/symbols/pSUM/T.svg b/src/img/symbols/pSUM/T.svg new file mode 100644 index 00000000..2a4fd233 --- /dev/null +++ b/src/img/symbols/pSUM/T.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/pSUM/U.svg b/src/img/symbols/pSUM/U.svg new file mode 100644 index 00000000..4b74bb94 --- /dev/null +++ b/src/img/symbols/pSUM/U.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/src/img/symbols/pSUM/WM.svg b/src/img/symbols/pSUM/WM.svg new file mode 100644 index 00000000..31a20be6 --- /dev/null +++ b/src/img/symbols/pSUM/WM.svg @@ -0,0 +1,4 @@ + + + + diff --git a/proxyshop/img/test-fa.png b/src/img/test-fa.png similarity index 100% rename from proxyshop/img/test-fa.png rename to src/img/test-fa.png diff --git a/proxyshop/img/test.png b/src/img/test.png similarity index 100% rename from proxyshop/img/test.png rename to src/img/test.png diff --git a/src/img/watermarks/abzan.svg b/src/img/watermarks/abzan.svg new file mode 100644 index 00000000..e227013f --- /dev/null +++ b/src/img/watermarks/abzan.svg @@ -0,0 +1,5 @@ + + +clan-abzan + + diff --git a/src/img/watermarks/agentsofsneak.svg b/src/img/watermarks/agentsofsneak.svg new file mode 100644 index 00000000..e0451a3d --- /dev/null +++ b/src/img/watermarks/agentsofsneak.svg @@ -0,0 +1,13 @@ + + + + diff --git a/src/img/watermarks/atarka.svg b/src/img/watermarks/atarka.svg new file mode 100644 index 00000000..6d66f405 --- /dev/null +++ b/src/img/watermarks/atarka.svg @@ -0,0 +1,5 @@ + + +clan-atarka + + diff --git a/src/img/watermarks/azorius.svg b/src/img/watermarks/azorius.svg new file mode 100644 index 00000000..c3ca3ed2 --- /dev/null +++ b/src/img/watermarks/azorius.svg @@ -0,0 +1,5 @@ + + +guild-azorius + + diff --git a/src/img/watermarks/basics/b.svg b/src/img/watermarks/basics/b.svg new file mode 100644 index 00000000..c3d48459 --- /dev/null +++ b/src/img/watermarks/basics/b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/basics/g.svg b/src/img/watermarks/basics/g.svg new file mode 100644 index 00000000..01c84f6c --- /dev/null +++ b/src/img/watermarks/basics/g.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/basics/r.svg b/src/img/watermarks/basics/r.svg new file mode 100644 index 00000000..224a7271 --- /dev/null +++ b/src/img/watermarks/basics/r.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/basics/u.svg b/src/img/watermarks/basics/u.svg new file mode 100644 index 00000000..2a473cca --- /dev/null +++ b/src/img/watermarks/basics/u.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/basics/w.svg b/src/img/watermarks/basics/w.svg new file mode 100644 index 00000000..6bd30f08 --- /dev/null +++ b/src/img/watermarks/basics/w.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/boros.svg b/src/img/watermarks/boros.svg new file mode 100644 index 00000000..dd32a89a --- /dev/null +++ b/src/img/watermarks/boros.svg @@ -0,0 +1,5 @@ + + +guild-boros + + diff --git a/src/img/watermarks/brokers.svg b/src/img/watermarks/brokers.svg new file mode 100644 index 00000000..afcbbd80 --- /dev/null +++ b/src/img/watermarks/brokers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/cabaretti.svg b/src/img/watermarks/cabaretti.svg new file mode 100644 index 00000000..90d6b152 --- /dev/null +++ b/src/img/watermarks/cabaretti.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/crossbreedlabs.svg b/src/img/watermarks/crossbreedlabs.svg new file mode 100644 index 00000000..b5561662 --- /dev/null +++ b/src/img/watermarks/crossbreedlabs.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/src/img/watermarks/dci.svg b/src/img/watermarks/dci.svg new file mode 100644 index 00000000..2e397bd4 --- /dev/null +++ b/src/img/watermarks/dci.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/watermarks/dimir.svg b/src/img/watermarks/dimir.svg new file mode 100644 index 00000000..c8898765 --- /dev/null +++ b/src/img/watermarks/dimir.svg @@ -0,0 +1,5 @@ + + +guild-dimir + + diff --git a/src/img/watermarks/dromoka.svg b/src/img/watermarks/dromoka.svg new file mode 100644 index 00000000..809f1ea8 --- /dev/null +++ b/src/img/watermarks/dromoka.svg @@ -0,0 +1,5 @@ + + +clan-dromoka + + diff --git a/src/img/watermarks/foretell.svg b/src/img/watermarks/foretell.svg new file mode 100644 index 00000000..7407ff2c --- /dev/null +++ b/src/img/watermarks/foretell.svg @@ -0,0 +1,5 @@ + + +ability-foretell + + diff --git a/src/img/watermarks/goblinexplosioneers.svg b/src/img/watermarks/goblinexplosioneers.svg new file mode 100644 index 00000000..b6afb060 --- /dev/null +++ b/src/img/watermarks/goblinexplosioneers.svg @@ -0,0 +1,13 @@ + + + + diff --git a/src/img/watermarks/golgari.svg b/src/img/watermarks/golgari.svg new file mode 100644 index 00000000..d8285123 --- /dev/null +++ b/src/img/watermarks/golgari.svg @@ -0,0 +1,5 @@ + + +guild-golgari + + diff --git a/src/img/watermarks/gruul.svg b/src/img/watermarks/gruul.svg new file mode 100644 index 00000000..d6aef7df --- /dev/null +++ b/src/img/watermarks/gruul.svg @@ -0,0 +1,5 @@ + + +guild-gruul + + diff --git a/src/img/watermarks/izzet.svg b/src/img/watermarks/izzet.svg new file mode 100644 index 00000000..1fad892c --- /dev/null +++ b/src/img/watermarks/izzet.svg @@ -0,0 +1,5 @@ + + +guild-izzet + + diff --git a/src/img/watermarks/jeskai.svg b/src/img/watermarks/jeskai.svg new file mode 100644 index 00000000..8d9b13e8 --- /dev/null +++ b/src/img/watermarks/jeskai.svg @@ -0,0 +1,5 @@ + + +clan-jeskai + + diff --git a/src/img/watermarks/kolaghan.svg b/src/img/watermarks/kolaghan.svg new file mode 100644 index 00000000..15928849 --- /dev/null +++ b/src/img/watermarks/kolaghan.svg @@ -0,0 +1,5 @@ + + +clan-kolaghan + + diff --git a/src/img/watermarks/leagueofdastardlydoom.svg b/src/img/watermarks/leagueofdastardlydoom.svg new file mode 100644 index 00000000..515b761a --- /dev/null +++ b/src/img/watermarks/leagueofdastardlydoom.svg @@ -0,0 +1,13 @@ + + + + diff --git a/src/img/watermarks/lorehold.svg b/src/img/watermarks/lorehold.svg new file mode 100644 index 00000000..01fa2f55 --- /dev/null +++ b/src/img/watermarks/lorehold.svg @@ -0,0 +1,5 @@ + + +school-lorehold + + diff --git a/src/img/watermarks/maestros.svg b/src/img/watermarks/maestros.svg new file mode 100644 index 00000000..78e67ee5 --- /dev/null +++ b/src/img/watermarks/maestros.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/mardu.svg b/src/img/watermarks/mardu.svg new file mode 100644 index 00000000..9ab86561 --- /dev/null +++ b/src/img/watermarks/mardu.svg @@ -0,0 +1,5 @@ + + +clan-mardu + + diff --git a/src/img/watermarks/mirran.svg b/src/img/watermarks/mirran.svg new file mode 100644 index 00000000..3bd81094 --- /dev/null +++ b/src/img/watermarks/mirran.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/watermarks/obscura.svg b/src/img/watermarks/obscura.svg new file mode 100644 index 00000000..331a0d6f --- /dev/null +++ b/src/img/watermarks/obscura.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/ojutai.svg b/src/img/watermarks/ojutai.svg new file mode 100644 index 00000000..8cf0ee60 --- /dev/null +++ b/src/img/watermarks/ojutai.svg @@ -0,0 +1,5 @@ + + +clan-ojutai + + diff --git a/src/img/watermarks/orderofthewidget.svg b/src/img/watermarks/orderofthewidget.svg new file mode 100644 index 00000000..60c6ca27 --- /dev/null +++ b/src/img/watermarks/orderofthewidget.svg @@ -0,0 +1,15 @@ + + + + + diff --git a/src/img/watermarks/orzhov.svg b/src/img/watermarks/orzhov.svg new file mode 100644 index 00000000..d2c5bed8 --- /dev/null +++ b/src/img/watermarks/orzhov.svg @@ -0,0 +1,5 @@ + + +guild-orzhov + + diff --git a/src/img/watermarks/phyrexian.svg b/src/img/watermarks/phyrexian.svg new file mode 100644 index 00000000..8497151b --- /dev/null +++ b/src/img/watermarks/phyrexian.svg @@ -0,0 +1,5 @@ + + +p + + diff --git a/src/img/watermarks/planeswalker.svg b/src/img/watermarks/planeswalker.svg new file mode 100644 index 00000000..656a6bbb --- /dev/null +++ b/src/img/watermarks/planeswalker.svg @@ -0,0 +1,5 @@ + + +planeswalker + + diff --git a/src/img/watermarks/polis/polis-akros.svg b/src/img/watermarks/polis/polis-akros.svg new file mode 100644 index 00000000..5994987f --- /dev/null +++ b/src/img/watermarks/polis/polis-akros.svg @@ -0,0 +1,5 @@ + + +polis-akros + + diff --git a/src/img/watermarks/polis/polis-meletis.svg b/src/img/watermarks/polis/polis-meletis.svg new file mode 100644 index 00000000..6fd87473 --- /dev/null +++ b/src/img/watermarks/polis/polis-meletis.svg @@ -0,0 +1,5 @@ + + +polis-meletis + + diff --git a/src/img/watermarks/polis/polis-setessa.svg b/src/img/watermarks/polis/polis-setessa.svg new file mode 100644 index 00000000..92b6a030 --- /dev/null +++ b/src/img/watermarks/polis/polis-setessa.svg @@ -0,0 +1,5 @@ + + +polis-setessa + + diff --git a/src/img/watermarks/prismari.svg b/src/img/watermarks/prismari.svg new file mode 100644 index 00000000..1343f240 --- /dev/null +++ b/src/img/watermarks/prismari.svg @@ -0,0 +1,5 @@ + + +school-prismari + + diff --git a/src/img/watermarks/purple.svg b/src/img/watermarks/purple.svg new file mode 100644 index 00000000..4041d196 --- /dev/null +++ b/src/img/watermarks/purple.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/img/watermarks/quandrix.svg b/src/img/watermarks/quandrix.svg new file mode 100644 index 00000000..d431b324 --- /dev/null +++ b/src/img/watermarks/quandrix.svg @@ -0,0 +1,5 @@ + + +school-quandrix + + diff --git a/src/img/watermarks/rakdos.svg b/src/img/watermarks/rakdos.svg new file mode 100644 index 00000000..1f717137 --- /dev/null +++ b/src/img/watermarks/rakdos.svg @@ -0,0 +1,5 @@ + + +guild-rakdos + + diff --git a/src/img/watermarks/riveteers.svg b/src/img/watermarks/riveteers.svg new file mode 100644 index 00000000..7d8d3a3c --- /dev/null +++ b/src/img/watermarks/riveteers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/img/watermarks/selesnya.svg b/src/img/watermarks/selesnya.svg new file mode 100644 index 00000000..4a82f48a --- /dev/null +++ b/src/img/watermarks/selesnya.svg @@ -0,0 +1,5 @@ + + +guild-selesnya + + diff --git a/src/img/watermarks/silumgar.svg b/src/img/watermarks/silumgar.svg new file mode 100644 index 00000000..35d23a4a --- /dev/null +++ b/src/img/watermarks/silumgar.svg @@ -0,0 +1,5 @@ + + +clan-silumgar + + diff --git a/src/img/watermarks/silverquill.svg b/src/img/watermarks/silverquill.svg new file mode 100644 index 00000000..463592c4 --- /dev/null +++ b/src/img/watermarks/silverquill.svg @@ -0,0 +1,5 @@ + + +school-silverquill + + diff --git a/src/img/watermarks/simic.svg b/src/img/watermarks/simic.svg new file mode 100644 index 00000000..a6bf149f --- /dev/null +++ b/src/img/watermarks/simic.svg @@ -0,0 +1,5 @@ + + +guild-simic + + diff --git a/src/img/watermarks/sultai.svg b/src/img/watermarks/sultai.svg new file mode 100644 index 00000000..8c42d07b --- /dev/null +++ b/src/img/watermarks/sultai.svg @@ -0,0 +1,5 @@ + + +clan-sultai + + diff --git a/src/img/watermarks/temur.svg b/src/img/watermarks/temur.svg new file mode 100644 index 00000000..e648c635 --- /dev/null +++ b/src/img/watermarks/temur.svg @@ -0,0 +1,5 @@ + + +clan-temur + + diff --git a/src/img/watermarks/witherbloom.svg b/src/img/watermarks/witherbloom.svg new file mode 100644 index 00000000..a4169009 --- /dev/null +++ b/src/img/watermarks/witherbloom.svg @@ -0,0 +1,5 @@ + + +school-witherbloom + + diff --git a/src/img/watermarks/wotc.svg b/src/img/watermarks/wotc.svg new file mode 100644 index 00000000..710ffd71 --- /dev/null +++ b/src/img/watermarks/wotc.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/proxyshop/kv/console.kv b/src/kv/console.kv similarity index 98% rename from proxyshop/kv/console.kv rename to src/kv/console.kv index 4ca97892..42c7eb84 100644 --- a/proxyshop/kv/console.kv +++ b/src/kv/console.kv @@ -1,4 +1,4 @@ -#:import HoverButton proxyshop.gui.utils.HoverButton +#:import HoverButton src.gui.utils.HoverButton #:import get_color_from_hex kivy.utils.get_color_from_hex #:import ScrollView kivy.uix.scrollview.ScrollView #:import ak asynckivy diff --git a/proxyshop/kv/creator.kv b/src/kv/creator.kv similarity index 93% rename from proxyshop/kv/creator.kv rename to src/kv/creator.kv index 38d9ecc2..ade4e310 100644 --- a/proxyshop/kv/creator.kv +++ b/src/kv/creator.kv @@ -1,6 +1,6 @@ #:import get_color_from_hex kivy.utils.get_color_from_hex -#:import get_font proxyshop.gui.utils.get_font -#:import HoverButton proxyshop.gui.utils.HoverButton +#:import get_font src.gui.utils.get_font +#:import HoverButton src.gui.utils.HoverButton #:import Thread threading.Thread : @@ -28,7 +28,7 @@ id: mana_cost hint_text: "{1}{W}{U}{B}{R}{G}" multiline: False - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") padding: [6, self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 6, 0] InputItem: id: color_identity @@ -36,7 +36,7 @@ size_hint_x: .5 multiline: False halign: "center" - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") padding: [6, self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 6, 0] BoxLayout: orientation: "horizontal" @@ -44,7 +44,7 @@ InputItem: id: oracle_text font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "Rules text" BoxLayout: orientation: "horizontal" @@ -52,7 +52,7 @@ InputItem: id: flavor_text font_size: 20 - font_name: get_font("MPlantin-Italic.ttf", "Roboto-Italic") + font_name: get_font("PlantinMTProRgIt.ttf", "Roboto-Italic") hint_text: "Flavor text" BoxLayout: size_hint_y: .75 @@ -157,7 +157,7 @@ id: mana_cost hint_text: "{1}{W}{U}{B}{R}{G}" multiline: False - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") padding: [6, self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 6, 0] InputItem: id: color_identity @@ -165,7 +165,7 @@ size_hint_x: .5 multiline: False halign: "center" - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") padding: [6, self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 6, 0] BoxLayout: orientation: "horizontal" @@ -173,7 +173,7 @@ NoEnterInputItem: id: line_1 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "This is a static ability." BoxLayout: orientation: "horizontal" @@ -182,7 +182,7 @@ NoEnterInputItem: id: line_2 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "+1: This ability increases loyalty." BoxLayout: orientation: "horizontal" @@ -190,7 +190,7 @@ NoEnterInputItem: id: line_3 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "-1: This ability decreases loyalty." BoxLayout: orientation: "horizontal" @@ -199,7 +199,7 @@ NoEnterInputItem: id: line_4 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "0: Planeswalkers need at least 2 ability lines." BoxLayout: size_hint_y: .75 @@ -294,7 +294,7 @@ id: mana_cost hint_text: "{1}{W}{U}{B}{R}{G}" multiline: False - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") padding: [6, self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 6, 0] InputItem: id: color_identity @@ -302,7 +302,7 @@ size_hint_x: .5 multiline: False halign: "center" - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") padding: [6, self.height / 2.0 - (self.line_height / 2.0) * len(self._lines), 6, 0] BoxLayout: orientation: "horizontal" @@ -310,7 +310,7 @@ NoEnterInputItem: id: line_1 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "First line" BoxLayout: orientation: "horizontal" @@ -319,7 +319,7 @@ NoEnterInputItem: id: line_2 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "Second line" BoxLayout: orientation: "horizontal" @@ -327,7 +327,7 @@ NoEnterInputItem: id: line_3 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "Third line [optional]" BoxLayout: orientation: "horizontal" @@ -336,7 +336,7 @@ NoEnterInputItem: id: line_4 font_size: 20 - font_name: get_font("MPlantin.ttf") + font_name: get_font("PlantinMTProRg.ttf") hint_text: "Fourth line [optional]" BoxLayout: size_hint_y: .75 diff --git a/proxyshop/kv/dev.kv b/src/kv/dev.kv similarity index 100% rename from proxyshop/kv/dev.kv rename to src/kv/dev.kv diff --git a/proxyshop/kv/proxyshop.kv b/src/kv/proxyshop.kv similarity index 95% rename from proxyshop/kv/proxyshop.kv rename to src/kv/proxyshop.kv index a08f9ea4..cde669b7 100644 --- a/proxyshop/kv/proxyshop.kv +++ b/src/kv/proxyshop.kv @@ -1,7 +1,7 @@ #:import get_color_from_hex kivy.utils.get_color_from_hex -#:import HoverButton proxyshop.gui.utils.HoverButton +#:import HoverButton src.gui.utils.HoverButton #:import Thread threading.Thread -#:import cfg proxyshop.settings.cfg +#:import cfg src.settings.cfg #:import ak asynckivy #:import ScrollEffect kivy.effects.scroll.ScrollEffect @@ -95,14 +95,14 @@ width: 0.735294117*preview_image.height if preview_image.height <=612 else 450 background_color: get_color_from_hex("#303030") Image: - source: 'proxyshop/img/NotFound.jpg' + source: 'src/img/NotFound.jpg' id: preview_image mipmap: True keep_ratio: True nocache: True canvas: Rectangle: - source: "proxyshop/img/Overlay.png" + source: "src/img/Overlay.png" size: preview_image.size pos: preview_image.pos BoxLayout: diff --git a/proxyshop/kv/updater.kv b/src/kv/updater.kv similarity index 96% rename from proxyshop/kv/updater.kv rename to src/kv/updater.kv index ae14b988..1300e6fb 100644 --- a/proxyshop/kv/updater.kv +++ b/src/kv/updater.kv @@ -1,4 +1,4 @@ -#:import HoverButton proxyshop.gui.utils.HoverButton +#:import HoverButton src.gui.utils.HoverButton #:import get_color_from_hex kivy.utils.get_color_from_hex #:import ScrollView kivy.uix.scrollview.ScrollView #:import ak asynckivy @@ -48,7 +48,7 @@ Image: id: loading mipmap: True - source: "proxyshop/img/loading.gif" + source: "src/img/loading.gif" allow_stretch: True size_hint: 1, None height: 180 diff --git a/proxyshop/layouts.py b/src/layouts.py similarity index 77% rename from proxyshop/layouts.py rename to src/layouts.py index a5bc6615..634ef99d 100644 --- a/proxyshop/layouts.py +++ b/src/layouts.py @@ -3,13 +3,13 @@ """ import re from functools import cached_property -from typing import Optional, Match +from typing import Optional, Match, Union, Type -from proxyshop.constants import con -from proxyshop.settings import cfg -from proxyshop import scryfall as scry -from proxyshop.frame_logic import select_frame_layers, FrameDetails -from proxyshop.utils import normalize_str +from src.constants import con +from src.settings import cfg +from src import scryfall as scry +from src.frame_logic import select_frame_layers, FrameDetails +from src.utils.strings import normalize_str # Regex leveler_regex = re.compile( @@ -24,12 +24,17 @@ class NormalLayout: """ def __init__(self, scryfall: dict, file: dict): - # Scryfall data + # settable properties self.file = file self.scryfall = scryfall - - # Settable properties self.filename = self.file['filename'] + self._template_path = '' + + # Cache mtgset early + if self.mtgset: + print(f"{self.name}: Valid set data has been generated.") + else: + print(f"{self.name}: No set data was available.") def __str__(self): return "{} [{}]".format(self.name, self.set) @@ -46,6 +51,14 @@ def filename(self) -> str: def filename(self, value): self._filename = value + @property + def template_path(self) -> str: + return self._template_path + + @template_path.setter + def template_path(self, value: str): + self._template_path = value + """ GAMEPLAY ITEMS """ @@ -65,14 +78,6 @@ def card(self) -> dict: self.scryfall['front'] = True return self.scryfall - @cached_property - def other_face(self) -> dict: - if 'card_faces' in self.scryfall: - if self.scryfall['card_faces'][0]['name'] == self.name_raw: - return self.scryfall['card_faces'][1] - return self.scryfall['card_faces'][0] - return {} - @cached_property def frame_effects(self) -> list: return self.scryfall.get('frame_effects', []) @@ -100,9 +105,9 @@ def oracle_text(self) -> str: # Alt lang? if self.lang != 'EN' and 'printed_text' in self.card: return self.card['printed_text'].replace( - "\u2212", "-") if 'Planeswalker' in self.type_line else self.card['printed_text'] + "\u2212", "-") if 'Planeswalker' in self.type_line_raw else self.card['printed_text'] return self.card['oracle_text'].replace( - "\u2212", "-") if 'Planeswalker' in self.type_line else self.card['oracle_text'] + "\u2212", "-") if 'Planeswalker' in self.type_line_raw else self.card['oracle_text'] @cached_property def oracle_text_raw(self) -> str: @@ -138,10 +143,6 @@ def color_identity(self) -> list: def color_indicator(self) -> str: return self.card.get('color_indicator', None) - @cached_property - def transform_icon(self) -> Optional[str]: - return - @cached_property def loyalty(self) -> str: return self.card.get('loyalty', None) @@ -159,14 +160,20 @@ def scryfall_scan(self) -> Optional[str]: @cached_property def mtgset(self) -> dict: - return scry.set_info(self.set.lower()) or {} + return scry.get_mtg_set(self.set) or {} @cached_property def set(self) -> str: return self.scryfall['set'].upper() @cached_property - def rarity(self) -> str: + def rarity(self): + if self.rarity_raw not in ['common', 'uncommon', 'rare', 'mythic']: + return 'mythic' + return self.rarity_raw + + @cached_property + def rarity_raw(self) -> str: return self.scryfall['rarity'] @cached_property @@ -181,23 +188,22 @@ def lang(self) -> str: @cached_property def card_count(self) -> Optional[str]: - if 'printed_size' in self.scryfall and int(self.scryfall['printed_size']) >= int(self.collector_number): - cc = self.scryfall['printed_size'] - elif 'baseSetSize' in self.mtgset and int(self.mtgset['baseSetSize']) >= int(self.collector_number): - cc = self.mtgset['baseSetSize'] - elif 'totalSetSize' in self.mtgset and int(self.mtgset['totalSetSize']) >= int(self.collector_number): - cc = self.mtgset['totalSetSize'] - elif 'card_count' in self.scryfall and int(self.scryfall['card_count']) >= int(self.collector_number): - cc = self.scryfall['card_count'] - else: + # Get the lowest number + least = min( + int(self.mtgset.get('printed_size', 999999)), + int(self.mtgset.get('baseSetSize', 999999)), + int(self.mtgset.get('totalSetSize', 999999)), + int(self.mtgset.get('card_count', 999999)) + ) + if least < int(self.collector_number): return # Ensure formatting of count - if len(str(cc)) == 2: - return f"0{cc}" - elif len(str(cc)) == 1: - return f"00{cc}" - return cc + if len(str(least)) == 2: + return f"0{least}" + elif len(str(least)) == 1: + return f"00{least}" + return str(least) @cached_property def collector_number(self) -> str: @@ -240,19 +246,23 @@ def creator(self) -> str: @cached_property def symbol(self) -> str: # Automatic set symbol enabled? - if cfg.auto_symbol and self.set in con.set_symbols: + if not cfg.symbol_force_default and self.set in con.set_symbols: sym = con.set_symbols[self.set] # Check if this is a reference to another symbol if isinstance(sym, str) and len(sym) > 1 and sym in con.set_symbols: return con.set_symbols[sym] return sym - elif cfg.auto_symbol and self.set[1:] in con.set_symbols: + elif not cfg.symbol_force_default and self.set[1:] in con.set_symbols: sym = con.set_symbols[self.set[1:]] # Check if this is a reference to another symbol if isinstance(sym, str) and len(sym) > 1 and sym in con.set_symbols: return con.set_symbols[sym] return sym - return cfg.symbol_char + return con.set_symbols.get(cfg.symbol_default, con.set_symbols['MTG']) + + @cached_property + def watermark(self) -> str: + return self.card.get('watermark') """ BOOL @@ -282,6 +292,14 @@ def is_companion(self) -> bool: def is_colorless(self) -> bool: return self.frame['is_colorless'] + @cached_property + def is_transform(self) -> bool: + return False + + @cached_property + def is_mdfc(self) -> bool: + return False + """ FRAME PROPERTIES """ @@ -302,12 +320,69 @@ def pinlines(self) -> str: def background(self) -> str: return self.frame['background'] + """ + DOUBLE FACE PROPERTIES + """ + + @cached_property + def other_face(self) -> dict: + if 'card_faces' in self.scryfall: + if self.scryfall['card_faces'][0]['name'] == self.name_raw: + return self.scryfall['card_faces'][1] + return self.scryfall['card_faces'][0] + return {} + + @cached_property + def other_face_twins(self) -> Optional[str]: + if self.other_face: + return select_frame_layers(self.other_face)['twins'] + return + + @cached_property + def transform_icon(self) -> Optional[str]: + return + + @cached_property + def other_face_power(self) -> Optional[str]: + return self.other_face.get('power', None) + + @cached_property + def other_face_toughness(self) -> Optional[str]: + return self.other_face.get('toughness', None) + + @cached_property + def other_face_left(self) -> Optional[str]: + if not self.other_face: + return + if self.lang != "EN" and 'printed_type_line' in self.other_face: + return self.other_face['printed_type_line'].split(" ")[-1] + return self.other_face['type_line'].split(" ")[-1] + + @cached_property + def other_face_right(self) -> Optional[str]: + # Has another face? + if not self.other_face: + return + + # Other face is not a land + if 'Land' not in self.other_face['type_line']: + return self.other_face.get('mana_cost') + + # Other face is a land, find the mana tap ability + other_face_oracle_text_split = self.other_face.get('oracle_text', '').split("\n") + if len(other_face_oracle_text_split) > 1: + # Find what color mana this land adds + for line in other_face_oracle_text_split: + if line[0:3] == "{T}": + return line.split(".")[0] + "." + return self.other_face.get('oracle_text', '') + """ TEMPLATE CLASS """ @cached_property - def card_class(self) -> Optional[str]: + def card_class(self) -> str: """ Set the card's class (finer grained than layout). Used when selecting a template. """ @@ -331,12 +406,15 @@ class TransformLayout (NormalLayout): """ @cached_property - def card_class(self): + def card_class(self) -> str: # Planeswalker transform if 'Planeswalker' in self.card['type_line']: if self.card['front']: return con.pw_tf_front_class return con.pw_tf_back_class + # Saga transform + if 'Saga' in self.card['type_line']: + return con.saga_class # Normal transform if not self.card['front']: # Is back face an Ixalan land? @@ -346,16 +424,16 @@ def card_class(self): return con.transform_front_class """ - Overwrite Properties + BOOL PROPERTIES """ @cached_property - def other_face_power(self) -> Optional[str]: - return self.other_face.get('power', None) + def is_transform(self) -> bool: + return True - @cached_property - def other_face_toughness(self) -> Optional[str]: - return self.other_face.get('toughness', None) + """ + OVERWRITE + """ @cached_property def transform_icon(self) -> str: @@ -363,7 +441,33 @@ def transform_icon(self) -> str: if 'frame_effects' in self.scryfall: if self.scryfall['frame_effects'][0] != "legendary": return self.scryfall['frame_effects'][0] - return 'land' if 'Land' in self.type_line else 'sunmoondfc' + return 'land' if 'Land' in self.type_line_raw else 'sunmoondfc' + + """ + SAGA + """ + + @cached_property + def saga_lines(self) -> list: + # Not a saga? + if 'Saga' not in self.type_line_raw: + return [] + # Unpack oracle text into saga lines + abilities: list[dict] = [] + for i, line in enumerate(self.oracle_text.split("\n")[1:]): + icons, text = line.split(" \u2014 ", 1) + abilities.append({ + "text": text, + "icons": icons.split(", ") + }) + return abilities + + @cached_property + def saga_description(self) -> str: + # Not a saga? + if 'Saga' not in self.type_line_raw: + return '' + return self.oracle_text.split("\n")[0] class MeldLayout (NormalLayout): @@ -384,7 +488,15 @@ def card_class(self) -> str: return con.transform_back_class """ - Overwrite Properties + BOOL PROPERTIES + """ + + @cached_property + def is_transform(self) -> bool: + return True + + """ + OVERWRITE """ @cached_property @@ -403,19 +515,7 @@ def other_face(self) -> Optional[dict]: for face in self.scryfall['faces']: if face['component'] == 'meld_result': return face - return - - @cached_property - def other_face_power(self) -> Optional[str]: - if self.other_face: - return self.other_face['power'] - return - - @cached_property - def other_face_toughness(self) -> Optional[str]: - if self.other_face: - return self.other_face['toughness'] - return + return {} @cached_property def transform_icon(self) -> str: @@ -444,7 +544,15 @@ def card_class(self) -> str: return con.mdfc_back_class """ - Overwrite Properties + BOOL PROPERTIES + """ + + @cached_property + def is_mdfc(self) -> bool: + return True + + """ + OVERWRITE """ @cached_property @@ -462,35 +570,7 @@ def oracle_text(self) -> Optional[str]: text = self.card['oracle_text'] # Planeswalker? - return text.replace("\u2212", "-") if 'Planeswalker' in self.type_line else text - - @cached_property - def other_face_twins(self) -> str: - return select_frame_layers(self.other_face)['twins'] - - @cached_property - def other_face_left(self) -> str: - if self.lang != "EN" and 'printed_type_line' in self.other_face: - return self.other_face['printed_type_line'].split(" ")[-1] - return self.other_face['type_line'].split(" ")[-1] - - @cached_property - def other_face_right(self) -> str: - # Opposite card land info - if 'Land' in self.other_face['type_line']: - # other face is a land - right MDFC banner text should say what color of mana the land taps for - other_face_oracle_text_split = self.other_face['oracle_text'].split("\n") - other_face_mana_text = self.other_face['oracle_text'] - if len(other_face_oracle_text_split) > 1: - # iterate over rules text lines until the line that adds mana is identified - for i in other_face_oracle_text_split: - if i[0:3] == "{T}": - other_face_mana_text = i - break - - # Truncate anything in the mana text after the first sentence - return other_face_mana_text.split(".")[0] + "." - return self.other_face['mana_cost'] + return text.replace("\u2212", "-") if 'Planeswalker' in self.type_line_raw else text @cached_property def transform_icon(self) -> str: @@ -644,16 +724,10 @@ class BasicLandLayout (NormalLayout): """ No special data entry, just a basic land """ - def __init__(self, file): - # Imitate Scryfall data - scryfall = { - 'name': file['name'], - 'artist': file['artist'] or "Unknown", - 'set': file['set'].upper() or "MTG", - 'rarity': 'common', - 'collector_number': None, - 'printed_count': None - } + def __init__(self, scryfall: dict, file: dict): + # Add artist to Scryfall data + scryfall['artist'] = file['artist'] or 'Unknown' + scryfall['creator'] = file['creator'] or None super().__init__(scryfall, file) @property @@ -706,8 +780,22 @@ def filename(self, value): self._filename = value +# Types +CardLayout = Union[ + NormalLayout, + TransformLayout, + ModalDoubleFacedLayout, + AdventureLayout, + LevelerLayout, + SagaLayout, + ClassLayout, + PlanarLayout, + MeldLayout, + BasicLandLayout +] + # LAYOUT MAP -layout_map = { +layout_map: dict[str, Type[CardLayout]] = { "normal": NormalLayout, "transform": TransformLayout, "modal_dfc": ModalDoubleFacedLayout, @@ -716,5 +804,6 @@ def filename(self, value): "saga": SagaLayout, "class": ClassLayout, "planar": PlanarLayout, - "meld": MeldLayout + "meld": MeldLayout, + 'basic': BasicLandLayout } diff --git a/src/scryfall.py b/src/scryfall.py new file mode 100644 index 00000000..a03ce9d8 --- /dev/null +++ b/src/scryfall.py @@ -0,0 +1,258 @@ +""" +FUNCTIONS THAT INTERACT WITH SCRYFALL +""" +import os +import time +import json +from shutil import copyfileobj + +import requests +from typing import Optional, Union +from urllib import parse + +from src.settings import cfg +from src.constants import con +from src.__console__ import console +from src.utils.strings import msg_warn, normalize_str + + +def card_info( + card_name: str, + card_set: Optional[str] = None +) -> Union[dict, Exception, None]: + """ + Fetch card data from Scryfall API. + @param card_name: Name of the card. + @param card_set: Set code of the card. + @return: Scryfall dict or Exception. + """ + # Enforce Basic Land template? + if normalize_str(card_name, True) in con.basic_land_names and cfg.render_basic: + return basic_land_info(card_name, card_set) + + # Alternate language + if cfg.lang != "en": + card = get_card_search(card_name, set_code=card_set, language=cfg.lang) + if isinstance(card, dict): + # Process card data + return process_scryfall_data(card) + elif not cfg.dev_mode: + # Language couldn't be found + console.update(msg_warn(f"Reverting to English: [b]{card_name}[/b]")) + + # Query the card in English + card = get_card_search(card_name, set_code=card_set) + if isinstance(card, dict): + # Process card data + return process_scryfall_data(card) + return card + + +def get_card_search( + name: str, + set_code: Optional[str] = None, + language: Optional[str] = None +) -> Union[dict, Exception, None]: + """ + Get card using cards/search scryfall API. + @param name: Name of the card, ex: Damnation + @param set_code: Set code to look for, ex: MH2 + @param language: Lang code to look for, ex: en + @return: Card dict or exception + """ + # Order, language, set code + order = "&order=released&dir=asc" if cfg.scry_ascending else "" + lang = f" lang:{language}" if language else "" + code = f"+set%3A{set_code}" if set_code else "" + + # Query Scryfall, 3 retries + url = f'https://api.scryfall.com/cards/search?unique=prints' \ + f'{order}&q=!"{parse.quote(name)}"{code} include:extras{lang}' + err = None + for i in range(3): + try: + card = requests.get(url, headers=con.http_header).json() + # Find the first playable result + for c in card['data']: + if check_playable_card(c): + return c + # No playable results + raise Exception("Could not find a playable card with this name!") + except Exception as e: + err = e + # Scryfall rate limit, 3 Retries + # https://scryfall.com/docs/api + time.sleep(0.5) + return err + + +def get_mtg_set_mtgjson(set_code: str) -> dict: + """ + Grab available set data from MTG Json. + @param set_code: The set to look for, ex: MH2 + @return: MTGJson set dict or empty dict. + """ + err = None + for i in range(3): + try: + # Grab from MTG JSON + source = requests.get( + f"https://mtgjson.com/api/v5/{set_code.upper()}.json", + headers=con.http_header + ).text + j = json.loads(source)['data'] + + # Minimize data stored + j.pop('cards', None) + j.pop('tokens', None) + j.pop('booster', None) + j.pop('sealedProduct', None) + + # Return data if valid + return j if j.get('name') else {} + except Exception as e: + # Remote disconnected / invalid data + err = e + # Scryfall rate limit, 3 Retries + # https://scryfall.com/docs/api + time.sleep(0.05) + # Remote disconnected + console.log_exception(err) + return {} + + +def get_mtg_set_scryfall(set_code: str) -> dict: + """ + Grab available set data from MTG Json. + @param set_code: The set to look for, ex: MH2 + @return: Scryfall set dict or empty dict. + """ + err = None + for i in range(3): + try: + # Grab from MTG JSON + source = requests.get( + f"https://api.scryfall.com/sets/{set_code.upper()}", + headers=con.http_header + ).text + j = json.loads(source) + + # Return data if valid + j['scryfall'] = True + return j if j.get('name') else {} + except Exception as e: + # Remote disconnected / invalid data + err = e + # Scryfall rate limit, 3 Retries + # https://scryfall.com/docs/api + time.sleep(0.05) + # Remote disconnected + console.log_exception(err) + return {} + + +def get_mtg_set(set_code: str) -> Optional[dict]: + """ + Grab available set data. + @param set_code: The set to look for, ex: MH2 + @return: MTG set dict or empty dict. + """ + # Has this set been logged? + filepath = os.path.join(con.path_data_sets, f"SET-{set_code.upper()}.json") + try: + if os.path.exists(filepath): + with open(filepath, "r", encoding="utf-8") as f: + loaded = json.load(f) + # Load if it has Scryfall data + if loaded.get('scryfall'): + return loaded + except Exception as e: + # Object couldn't be loaded + console.log_exception(e) + + # Get set data + data_scry = get_mtg_set_scryfall(set_code) + data_mtg = get_mtg_set_mtgjson(set_code) + try: + # Save the data if both lookups were valid, or 'printed_size' is present + data_scry.update(data_mtg) + if (data_mtg and data_scry) or 'printed_size' in data_scry: + with open(filepath, "w", encoding="utf-8") as f: + json.dump(data_scry, f, sort_keys=True, ensure_ascii=False) + return data_scry + except Exception as e: + # Invalid data + console.log_exception(e) + return {} + + +def card_scan(img_url: str) -> Optional[str]: + """ + Downloads scryfall art from URL + @param img_url: Scryfall URI for image. + @return: Filename of the saved image, None if unsuccessful. + """ + try: + r = requests.get(img_url, stream=True) + with open(con.scryfall_scan_path, 'wb') as f: + copyfileobj(r.raw, f) + return f.name + except Exception as e: + # HTTP request failed + print(e, "\nCouldn't retrieve scryfall image scan! Continuing without it.") + return + + +def basic_land_info(card_name: str, set_code: Optional[str]) -> dict: + """ + Generate fake Scryfall data from basic land. + @param card_name: Name of the basic land card. + @param set_code: Desired set code for the basic land. + @return: Fake scryfall data. + """ + return { + 'name': card_name, + 'set': (set_code or 'MTG').upper(), + 'layout': 'basic', + 'rarity': 'common', + 'collector_number': None, + 'printed_count': None + } + + +""" +UTILITIES +""" + + +def check_playable_card(card_json: dict) -> bool: + """ + Checks if this card object is a playable game piece. + @param card_json: Scryfall data for this card. + @return: Valid scryfall data if check passed, else None. + """ + if card_json.get('set_type') != "memorabilia" or 'Championship' in card_json['set_name']: + return True + return False + + +def process_scryfall_data(card_json: dict) -> dict: + """ + Process any additional required data before sending it to the layout object. + @param card_json: Unprocessed scryfall data. + @return: Processed scryfall data. + """ + # Lookup faces for Meld card + if card_json['layout'] == "meld": + # Add list of faces to the JSON data + card_json['faces'] = [] + for part in card_json['all_parts']: + # Ignore tokens and other objects + if part['component'] in ('meld_part', 'meld_result'): + # Grab the card face data, add component type, insert it + data = requests.get(part["uri"], headers=con.http_header).json() + data['component'] = part['component'] + card_json["faces"].append(data) + + # Return updated data + return card_json diff --git a/proxyshop/settings.py b/src/settings.py similarity index 70% rename from proxyshop/settings.py rename to src/settings.py index 90598653..073cfed2 100644 --- a/proxyshop/settings.py +++ b/src/settings.py @@ -1,12 +1,13 @@ """ Process config file into global settings. """ -import configparser import os from typing import Optional +from configparser import ConfigParser -from proxyshop.constants import con -from proxyshop.core import TemplateDetails +from src.constants import con +from src.core import TemplateDetails +from src.utils.files import verify_config_fields # For object permanence @@ -47,12 +48,13 @@ def update_definitions(self): self.flavor_divider = self.file.getboolean('TEXT', 'Flavor.Divider') # SYMBOLS section - self.symbol_char = self.file['SYMBOLS']['Default.Symbol'] - self.auto_symbol = self.file.getboolean('SYMBOLS', 'Auto.Set.Symbol') - self.auto_symbol_size = self.file.getboolean('SYMBOLS', 'Auto.Symbol.Size') + self.symbol_mode = self.file['SYMBOLS']['Symbol.Mode'] + self.symbol_default = self.file['SYMBOLS']['Default.Symbol'] + self.symbol_force_default = self.file.getboolean('SYMBOLS', 'Force.Default.Symbol') self.symbol_stroke = self.file['SYMBOLS']['Symbol.Stroke.Size'] - self.fill_symbol = self.file.getboolean('SYMBOLS', 'Fill.Symbol.Background') - self.classic_expansion_symbol = self.file.getboolean('SYMBOLS', 'Classic.Symbol.Rendering') + + # WATERMARKS section + self.enable_watermark = self.file.getboolean('WATERMARK', 'Enable.Watermark') # APP section self.exit_early = self.file.getboolean('APP', 'Manual.Edit') @@ -64,6 +66,7 @@ def update_definitions(self): # TEMPLATES section self.render_snow = self.file.getboolean('TEMPLATES', 'Render.Snow') self.render_miracle = self.file.getboolean('TEMPLATES', 'Render.Miracle') + self.render_basic = self.file.getboolean('TEMPLATES', 'Render.Basic') def get_setting(self, section: str, key: str, default: Optional[str] = None, is_bool: bool = True): """ @@ -89,13 +92,21 @@ def load(self, template: Optional[TemplateDetails] = None): if hasattr(self, 'file'): del self.file - # Choose the file - conf = os.path.join(con.cwd, "config.ini") - if template and os.path.exists(template['config_path'].replace('json', 'ini')): - conf = template['config_path'].replace('json', 'ini') + # Check if we're using a template ini file + template_ini = template['config_path'].replace('json', 'ini').replace('Back', 'Front') if template else None + template_json = template['config_path'].replace('Back', 'Front') if template else None + if template_ini and os.path.exists(template_ini) and not self.dev_mode: + conf = template_ini + else: + conf = os.path.join(con.cwd, "config.ini") + + # Validate the ini file's contents + verify_config_fields(conf, con.path_config_json) + if template_ini and os.path.exists(template_ini) and not self.dev_mode: + verify_config_fields(conf, template_json) # Load necessary file - self.file = configparser.ConfigParser(allow_no_value=True) + self.file = ConfigParser(allow_no_value=True) self.file.optionxform = str with open(conf, encoding="utf-8") as f: self.file.read_file(f) diff --git a/proxyshop/templates.py b/src/templates.py similarity index 72% rename from proxyshop/templates.py rename to src/templates.py index 1e4d6cd9..cca26d31 100644 --- a/proxyshop/templates.py +++ b/src/templates.py @@ -1,23 +1,26 @@ """ CORE TEMPLATES """ -import os import re +import os.path as osp from functools import cached_property from typing import Optional, Callable from PIL import Image +from photoshop.api import PhotoshopPythonAPIError from photoshop.api.application import ArtLayer, Photoshop from photoshop.api._layerSet import LayerSet - -from proxyshop.frame_logic import format_expansion_symbol_info -import proxyshop.text_layers as text_classes -import proxyshop.format_text as ft -from proxyshop.constants import con -from proxyshop.settings import cfg -import proxyshop.helpers as psd from photoshop import api as ps -from proxyshop.__console__ import console + +from src.frame_logic import format_expansion_symbol_info +import src.text_layers as text_classes +import src.format_text as ft +from src.constants import con +from src.layouts import CardLayout +from src.settings import cfg +import src.helpers as psd +from src.__console__ import console +from src.utils.enums_photoshop import Alignment class BaseTemplate: @@ -27,12 +30,11 @@ class BaseTemplate: template_file_name = "" template_suffix = "" - def __init__(self, layout): + def __init__(self, layout: CardLayout): # Setup manual properties self.layout = layout self.tx_layers = [] - self.exp_sym = None # Load PSD file try: @@ -51,6 +53,10 @@ def __init__(self, layout): if cfg.remove_reminder: self.layout.oracle_text = ft.strip_reminder_text(layout.oracle_text) + def invalidate(self, prop: str): + # Invalidates a cached property, so it will be computed at next use + self.__dict__.pop(prop, None) + """ BOOL """ @@ -90,14 +96,24 @@ def is_front(self) -> bool: # Which side influences mdfc and transform return self.layout.card['front'] + @property + def is_transform(self) -> bool: + # Is this a transform card? + return self.layout.is_transform + + @property + def is_mdfc(self) -> bool: + # Is this a transform card? + return self.layout.is_mdfc + @property def name_shifted(self) -> bool: # Use right shifted name? - return bool(self.layout.transform_icon) + return bool(self.is_transform or self.is_mdfc) @property def type_line_shifted(self) -> bool: - # Use right shifted typeline? Also governs color indicator input + # Use right shifted Type line? return bool(self.layout.color_indicator) @cached_property @@ -112,7 +128,7 @@ def is_centered(self) -> bool: @cached_property def other_face_is_creature(self) -> bool: # Governs transform cards other side creature P/T - return self.layout.other_face_power and self.layout.other_face_toughness + return bool(self.layout.other_face_power and self.layout.other_face_toughness) """ DOCUMENT PROPERTIES @@ -124,17 +140,10 @@ def app(self) -> Photoshop: @cached_property def template_file(self) -> str: - # Get from callable - if callable(self.template_file_name): - fn = self.template_file_name() - if fn[-4:] not in (".psd", ".psb"): - return f"{fn}.psd" - return fn - # Get from attribute - fn = self.template_file_name - if fn[-4:] not in (".psd", ".psb"): - return f"{fn}.psd" - return fn + # Add extension if missing + if self.template_file_name[-4:] not in (".psd", ".psb"): + return f"{self.template_file_name}.psd" + return self.template_file_name @cached_property def docref(self): @@ -176,22 +185,22 @@ def art_reference_layer(self) -> ArtLayer: layer = self.art_reference else: # Art reference given as a string - layer = psd.getLayer(self.art_reference) - if not layer: - psd.getLayer(con.layers.ART_FRAME) + layer = psd.getLayer(self.art_reference) or psd.getLayer(con.layers.ART_FRAME) - # Check if we can change to fullart reference + # Is the reference already Full Art? if not any(map(str(layer.name).__contains__, ["Full Art", "Fullart"])): - # Auto detect full art image + # Check if we have a Full Art image with Image.open(self.layout.filename) as image: width, height = image.size if height > (width * 1.2): # Use "Full Art" frame if available - fa_frame = psd.getLayer(con.layers.FULL_ART_FRAME) - if fa_frame: - return fa_frame + return psd.getLayer(con.layers.FULL_ART_FRAME) or layer return layer + @cached_property + def border_color(self) -> str: + return cfg.get_setting('TEMPLATES', 'Border.Color', default='black', is_bool=False) + """ LIST OF FORMATTED TEXT OBJECTS """ @@ -207,23 +216,37 @@ def text(self, value): self.tx_layers = value """ - TEXT LAYERS + LAYER GROUPS """ @cached_property - def legal_layer(self) -> Optional[LayerSet]: + def legal_group(self) -> Optional[LayerSet]: # Legal group - return psd.getLayerSet(con.layers.LEGAL) + return self.docref.layerSets.getByName(con.layers.LEGAL) @cached_property - def creator_layer(self) -> Optional[ArtLayer]: - # Creator name layer - return psd.getLayer("Creator", self.legal_layer) + def border_group(self) -> Optional[LayerSet]: + # Border group + return self.docref.layerSets.getByName(con.layers.BORDER) @cached_property def text_layers(self) -> Optional[LayerSet]: # Text and icon group - return psd.getLayerSet(con.layers.TEXT_AND_ICONS) + return self.docref.layerSets.getByName(con.layers.TEXT_AND_ICONS) + + @cached_property + def dfc_group(self) -> Optional[LayerSet]: + # Double face layer group + return psd.getLayerSet(self.face_type, self.text_layers) + + """ + TEXT LAYERS + """ + + @cached_property + def text_layer_creator(self) -> Optional[ArtLayer]: + # Creator name layer + return psd.getLayer("Creator", self.legal_group) @cached_property def text_layer_name(self) -> Optional[ArtLayer]: @@ -267,18 +290,22 @@ def text_layer_pt(self) -> Optional[ArtLayer]: # CARD POWER/TOUGHNESS return psd.getLayer(con.layers.POWER_TOUGHNESS, self.text_layers) + @cached_property + def divider_layer(self) -> Optional[ArtLayer]: + # Shorter flavor divider if flipside P/T is present + if self.is_transform and self.is_front and self.other_face_is_creature: + if TF_DIVIDER := psd.getLayer('Divider TF', self.text_layers): + return TF_DIVIDER + return psd.getLayer(con.layers.DIVIDER, self.text_layers) + """ - FRAME LAYERS + FRAME DETAILS """ - @cached_property - def symbol(self) -> str: - # Expansion symbol - return self.layout.symbol - @cached_property def twins(self) -> str: # Name of the Twins layer + # Also corresponds to PT Box typically return self.layout.twins @cached_property @@ -291,6 +318,24 @@ def background(self) -> str: # Name of the Background layer return self.layout.background + @cached_property + def face_type(self) -> Optional[str]: + # MDFC face type + if self.is_mdfc: + if self.is_front: + return con.layers.MDFC_FRONT + return con.layers.MDFC_BACK + # Transform face type + if self.is_transform: + if self.is_front: + return con.layers.TF_FRONT + return con.layers.TF_BACK + return + + """ + FRAME LAYERS + """ + @cached_property def twins_layer(self) -> Optional[ArtLayer]: # Twins @@ -315,6 +360,10 @@ def color_indicator_layer(self) -> Optional[ArtLayer]: # Color Indicator return psd.getLayer(self.pinlines, con.layers.COLOR_INDICATOR) + @cached_property + def transform_icon(self) -> Optional[ArtLayer]: + return psd.getLayer(self.layout.transform_icon, self.dfc_group) + @cached_property def crown_layer(self) -> Optional[ArtLayer]: # Legendary Crown @@ -330,14 +379,40 @@ def companion_layer(self) -> Optional[ArtLayer]: # Companion inner crown return psd.getLayer(self.pinlines, con.layers.COMPANION) + """ + REFERENCE LAYERS + """ + + @cached_property + def textbox_reference(self) -> Optional[ArtLayer]: + return psd.getLayer(con.layers.TEXTBOX_REFERENCE, self.text_layers) + + """ + EXPANSION SYMBOL PROPERTIES + """ + + @property + def expansion_symbol_anchor(self) -> ps.AnchorPosition: + return ps.AnchorPosition.MiddleRight + @property - def expansion_symbol(self) -> Optional[ArtLayer]: - # CARD EXPANSION SYMBOL - return self.exp_sym + def expansion_symbol_alignments(self) -> list[Alignment]: + return [Alignment.CenterVertical, Alignment.Right] - @expansion_symbol.setter - def expansion_symbol(self, value): - self.exp_sym = value + @cached_property + def expansion_gradient_layer(self): + # Expansion symbol rarity gradient layer + return psd.getLayer(self.layout.rarity, self.text_layers) + + @cached_property + def expansion_reference_layer(self): + # Expansion symbol reference layer + return psd.getLayer(con.layers.EXPANSION_REFERENCE, self.text_layers) + + @cached_property + def expansion_symbol_layer(self) -> Optional[ArtLayer]: + # Expansion symbol layer + return psd.getLayer(con.layers.EXPANSION_SYMBOL, self.text_layers) """ METHODS @@ -348,111 +423,134 @@ def collector_info(self) -> None: Format and add the collector info at the bottom. """ # Ignore this step if legal layer not present - if not self.legal_layer: + if not self.legal_group: return # If creator is specified add the text - if self.layout.creator and self.creator_layer: - self.creator_layer.textItem.contents = self.layout.creator + if self.layout.creator and self.text_layer_creator: + self.text_layer_creator.textItem.contents = self.layout.creator # Use realistic collector information? if all([self.layout.collector_number, self.layout.rarity, cfg.real_collector]): - - # Reveal collector group, hide classic layers - collector_group = psd.getLayerSet(con.layers.COLLECTOR, con.layers.LEGAL) - collector_group.visible = True - psd.getLayer("Artist", self.legal_layer).visible = False - psd.getLayer("Set", self.legal_layer).visible = False - if pen_layer := psd.getLayer("Pen", self.legal_layer): - pen_layer.visible = False - - # Get the collector layers - collector_top = psd.getLayer(con.layers.TOP_LINE, collector_group).textItem - collector_bottom = psd.getLayer(con.layers.BOTTOM_LINE, collector_group) - - # Fill in language if needed - if self.layout.lang != "en": - psd.replace_text(collector_bottom, "EN", self.layout.lang.upper()) - - # Apply the collector info - collector_top.contents = self.layout.collector_info_top - psd.replace_text(collector_bottom, "SET", self.layout.set) - psd.replace_text(collector_bottom, "Artist", self.layout.artist) - + self.collector_info_authentic() else: + self.collector_info_basic() - # Layers we need - set_layer = psd.getLayer("Set", self.legal_layer) - artist_layer = psd.getLayer(con.layers.ARTIST, self.legal_layer) - - # Fill in language if needed - if self.layout.lang != "en": - psd.replace_text(set_layer, "EN", self.layout.lang.upper()) - - # Fill set info / artist info - set_layer.textItem.contents = self.layout.set + set_layer.textItem.contents - psd.replace_text(artist_layer, "Artist", self.layout.artist) - - # Generate the expansion symbol - if cfg.classic_expansion_symbol: - self.create_expansion_symbol_classic() - else: - self.create_expansion_symbol() - - @property - def expansion_symbol_anchor(self) -> ps.AnchorPosition: - return ps.AnchorPosition.MiddleRight - - def create_expansion_symbol(self, centered: bool = False) -> None: + def collector_info_basic(self): + """ + Called to generate basic collector info. + """ + # Layers we need + set_layer = psd.getLayer("Set", self.legal_group) + artist_layer = psd.getLayer(con.layers.ARTIST, self.legal_group) + if self.border_color != 'black': + set_layer.textItem.color = psd.rgb_black() + artist_layer.textItem.color = psd.rgb_black() + + # Fill in language if needed + if self.layout.lang != "en": + psd.replace_text(set_layer, "EN", self.layout.lang.upper()) + + # Fill set info / artist info + set_layer.textItem.contents = self.layout.set + set_layer.textItem.contents + psd.replace_text(artist_layer, "Artist", self.layout.artist) + + def collector_info_authentic(self): """ - Builds the expansion symbol - @param centered: Center the symbol within its reference. + Called to generate realistic collector info. """ - # Starting symbol, reference, and rarity layers - symbol_layer = psd.getLayer(con.layers.EXPANSION_SYMBOL, self.text_layers) - ref_layer = psd.getLayer(con.layers.EXPANSION_REFERENCE, self.text_layers) - psd.clear_layer_style(symbol_layer) - current_layer = symbol_layer + # Reveal collector group, hide classic layers + collector_group = psd.getLayerSet(con.layers.COLLECTOR, con.layers.LEGAL) + collector_group.visible = True + psd.getLayer("Artist", self.legal_group).visible = False + psd.getLayer("Set", self.legal_group).visible = False + if pen_layer := psd.getLayer("Pen", self.legal_group): + pen_layer.visible = False + + # Get the collector layers + collector_top = psd.getLayer(con.layers.TOP_LINE, collector_group).textItem + collector_bottom = psd.getLayer(con.layers.BOTTOM_LINE, collector_group) + if self.border_color != 'black': + collector_top.color = psd.rgb_black() + collector_bottom.textItem.color = psd.rgb_black() + + # Fill in language if needed + if self.layout.lang != "en": + psd.replace_text(collector_bottom, "EN", self.layout.lang.upper()) + + # Apply the collector info + collector_top.contents = self.layout.collector_info_top + psd.replace_text(collector_bottom, "SET", self.layout.set) + psd.replace_text(collector_bottom, "Artist", self.layout.artist) + + def expansion_symbol(self) -> None: + """ + Builds the user's preferred type of expansion symbol. + """ + if cfg.symbol_mode not in ['default', 'classic', 'svg']: + self.expansion_symbol_layer.textItem.contents = '' + return - # Put everything in a group + # Create a group for generated layers, clear style group = self.app.activeDocument.layerSets.add() - group.move(current_layer, ps.ElementPlacement.PlaceAfter) - symbol_layer.move(group, ps.ElementPlacement.PlaceInside) - + group.move(self.expansion_symbol_layer, ps.ElementPlacement.PlaceAfter) + psd.clear_layer_style(self.expansion_symbol_layer) + + # Call the necessary creator + if cfg.symbol_mode == 'default': + self.create_expansion_symbol(group) + elif cfg.symbol_mode == 'classic': + self.create_expansion_symbol_classic(group) + elif cfg.symbol_mode == 'svg': + self.create_expansion_symbol_svg(group) + + # Merge and refresh cache + group.merge().name = "Expansion Symbol" + self.expansion_symbol_layer.name = "Expansion Symbol Old" + self.expansion_symbol_layer.opacity = 0 + self.invalidate('expansion_symbol_layer') + + def create_expansion_symbol(self, group: LayerSet) -> None: + """ + Builds the expansion symbol using the newer layer effects methodology. + @param group: The LayerSet to add generated layers to. + """ # Set the starting character and format our layer array - if self.layout.rarity not in ['common', 'uncommon', 'rare', 'mythic']: - self.layout.rarity = 'mythic' - symbol_layer.textItem.contents, symbols = psd.process_expansion_symbol_info( + self.expansion_symbol_layer.textItem.contents, symbols = psd.process_expansion_symbol_info( self.layout.symbol, self.layout.rarity.lower() ) - # Size to fit reference? - if cfg.auto_symbol_size: - psd.frame_layer(symbol_layer, ref_layer, self.expansion_symbol_anchor, True, centered) + # Size to fit reference + psd.frame_layer( + self.expansion_symbol_layer, + self.expansion_reference_layer, + smallest=True, + anchor=self.expansion_symbol_anchor, + alignments=self.expansion_symbol_alignments + ) # Create each symbol layer for i, lay in enumerate(symbols): # Establish new current layer - current_layer = symbol_layer.duplicate(current_layer, ps.ElementPlacement.PlaceAfter) + current_layer = self.expansion_symbol_layer.duplicate(group, ps.ElementPlacement.PlaceAtEnd) current_layer.textItem.contents = lay['char'] self.active_layer = current_layer - layer_fx = [] - fill_layer = None + layer_fx, fill_layer = [], None # Change font color - if 'color' in lay: + if lay.get('color'): current_layer.textItem.color = lay['color'] # Stroke fx - if 'stroke' in lay: + if lay.get('stroke'): layer_fx.append(lay['stroke']) # Rarity gradient overlay fx - if lay.get('rarity') and 'gradient' in lay: + if lay.get('rarity') and lay.get('gradient'): layer_fx.append(lay['gradient']) # Drop shadow fx - if 'drop-shadow' in lay: + if lay.get('drop-shadow'): layer_fx.append(lay['drop-shadow']) # Apply layer FX @@ -460,12 +558,12 @@ def create_expansion_symbol(self, centered: bool = False) -> None: psd.apply_fx(current_layer, layer_fx) # Rarity background fill - if lay.get('fill') == 'rarity' and 'gradient' in lay: + if lay.get('fill') == 'rarity' and lay.get('gradient'): # Apply fill before rarity psd.rasterize_layer_style(current_layer) fill_layer = psd.fill_expansion_symbol(current_layer, psd.rgb_black()) psd.apply_fx(fill_layer, [lay['gradient']]) - elif 'fill' in lay: + elif lay.get('fill'): psd.rasterize_layer_style(current_layer) fill_layer = psd.fill_expansion_symbol(current_layer, lay['fill']) @@ -474,59 +572,41 @@ def create_expansion_symbol(self, centered: bool = False) -> None: current_layer = psd.merge_layers([current_layer, fill_layer]) # Scale factor - if 'scale' in lay: - current_layer.resize(lay['scale']*100, lay['scale']*100, ps.AnchorPosition.MiddleRight) - - # Merge all - symbol_layer.move(group, ps.ElementPlacement.PlaceBefore) - symbol_layer.name = "Expansion Symbol Old" - symbol_layer.opacity = 0 - self.expansion_symbol = group.merge() - self.expansion_symbol.name = "Expansion Symbol" + if lay.get('scale'): + current_layer.resize(lay['scale']*100, lay['scale']*100, self.expansion_symbol_anchor) - def create_expansion_symbol_classic(self, centered: bool = False) -> None: + def create_expansion_symbol_classic(self, group: LayerSet) -> None: """ - Builds the expansion symbol - NOTE: Will be deprecated in the future! - @param centered: Center the symbol within its reference. + Builds the expansion symbol using the classic method that uses gradient layers. + Falls back on default mode if gradient layers aren't present. + @param group: The LayerSet to add generated layers to. """ - # Colors to use for given settings - colors = { - "black": psd.rgb_black(), - "white": psd.rgb_white(), - "rarity": psd.rgb_black(), - } - - # Starting rarity layer - rarity = self.layout.rarity - if self.layout.rarity in (con.rarity_bonus, con.rarity_special): - rarity = con.rarity_mythic - - # Starting symbol, reference, and rarity layers - symbol_layer = psd.getLayer(con.layers.EXPANSION_SYMBOL, self.text_layers) - ref_layer = psd.getLayer(con.layers.EXPANSION_REFERENCE, self.text_layers) - rarity_layer = psd.getLayer(rarity, self.text_layers) - current_layer = symbol_layer - - # Put everything in a group - group = self.app.activeDocument.layerSets.add() - group.move(current_layer, ps.ElementPlacement.PlaceAfter) - symbol_layer.move(group, ps.ElementPlacement.PlaceInside) + # Check if the gradient layer is available + if not self.expansion_gradient_layer and self.layout.rarity != 'common': + self.create_expansion_symbol(group) + return # Set the starting character and format our layer array - symbol_layer.textItem.contents, symbols = format_expansion_symbol_info(self.layout.symbol) + self.expansion_symbol_layer.textItem.contents, symbols = format_expansion_symbol_info( + self.layout.symbol, self.layout.rarity + ) - # Size to fit reference? - if cfg.auto_symbol_size: - psd.frame_layer(symbol_layer, ref_layer, self.expansion_symbol_anchor, True, centered) + # Size to fit reference + psd.frame_layer( + self.expansion_symbol_layer, + self.expansion_reference_layer, + smallest=True, + anchor=self.expansion_symbol_anchor, + alignments=self.expansion_symbol_alignments + ) def apply_rarity(layer) -> ArtLayer: # Apply rarity gradient to this layer - mask_layer = rarity_layer.duplicate(layer, ps.ElementPlacement.PlaceBefore) + mask_layer = self.expansion_gradient_layer.duplicate(layer, ps.ElementPlacement.PlaceBefore) mask_layer.grouped = True mask_layer.visible = True psd.select_layer_bounds(layer) - self.app.activeDocument.activeLayer = mask_layer + self.activeLayer = mask_layer psd.align_horizontal() psd.align_vertical() psd.clear_selection() @@ -536,86 +616,127 @@ def apply_rarity(layer) -> ArtLayer: def apply_fill(layer, color=psd.rgb_black()): # Make active and fill background self.app.activeDocument.activeLayer = layer - return psd.fill_expansion_symbol(ref_layer, color) - - def get_color_choice(color): - # Figure out what color to use - if isinstance(color, str) and color in colors: - return colors[color] - if isinstance(color, list) and len(color) == 3: - return psd.get_rgb(color[0], color[1], color[2]) - if isinstance(color, list) and len(color) == 4: - return psd.get_cmyk(color[0], color[1], color[2], color[3]) - return colors['black'] + return psd.fill_expansion_symbol(self.expansion_reference_layer, color) # Create each symbol layer for i, lay in enumerate(symbols): # Establish new current layer - current_layer = symbol_layer.duplicate(current_layer, ps.ElementPlacement.PlaceAfter) + current_layer = self.expansion_symbol_layer.duplicate(group, ps.ElementPlacement.PlaceAtEnd) current_layer.textItem.contents = lay['char'] - # Non-common or Common traits - if rarity != con.rarity_common: - # Color replace - if lay['color']: - current_layer.textItem.color = get_color_choice(lay['color']) + # Color replace + if lay.get('color'): + current_layer.textItem.color = psd.get_color(lay['color']) - # Stroke - if lay['stroke']: - psd.apply_stroke(current_layer, lay['stroke'][1], get_color_choice(lay['stroke'][0])) - else: - psd.clear_layer_style(current_layer) - - # Apply background fill - if lay['fill'] == 'rarity': - # Apply fill before rarity - psd.rasterize_layer_style(current_layer) - fill_layer = apply_fill(current_layer, get_color_choice(lay['fill'])) - fill_layer = apply_rarity(fill_layer) - current_layer = psd.merge_layers([current_layer, fill_layer]) - else: - # Apply fill after rarity - if lay['rarity']: - current_layer = apply_rarity(current_layer) - psd.rasterize_layer_style(current_layer) - if lay['fill']: - fill_layer = apply_fill(current_layer, get_color_choice(lay['fill'])) - current_layer = psd.merge_layers([current_layer, fill_layer]) + # Stroke + if lay.get('stroke'): + psd.apply_fx(current_layer, [psd.format_symbol_fx_stroke(lay['stroke'])]) + # Apply background fill + if lay.get('rarity') and lay.get('fill') == 'rarity': + # Apply fill before rarity + psd.rasterize_layer_style(current_layer) + fill_layer = apply_fill(current_layer, psd.rgb_black()) + fill_layer = apply_rarity(fill_layer) + current_layer = psd.merge_layers([current_layer, fill_layer]) else: - # Common color - if lay['common-color']: - current_layer.textItem.color = get_color_choice(lay['common-color']) - - # Common stroke - if lay['common-stroke']: - psd.apply_stroke(current_layer, lay['common-stroke'][1], get_color_choice(lay['common-stroke'][0])) - else: - psd.clear_layer_style(current_layer) - - # Common fill + # Apply fill after rarity + if lay.get('rarity'): + current_layer = apply_rarity(current_layer) psd.rasterize_layer_style(current_layer) - if lay['common-fill']: - fill_layer = apply_fill(current_layer, get_color_choice(lay['common-fill'])) + if lay.get('fill'): + fill_layer = apply_fill(current_layer, psd.get_color(lay['fill'])) current_layer = psd.merge_layers([current_layer, fill_layer]) # Scale factor - if lay['scale-factor'] != 1: - current_layer.resize(lay['scale-factor']*100, lay['scale-factor']*100, ps.AnchorPosition.MiddleRight) + if lay.get('scale', 1) != 1: + current_layer.resize(lay['factor']*100, lay['scale']*100, self.expansion_symbol_anchor) + + def create_expansion_symbol_svg(self, group: LayerSet) -> None: + """ + Creates an expansion symbol using SVG library. Falls back on default mode if SVG not available. + @param group: The LayerSet to add generated layers to. + """ + # Check if the SVG exists + svg_path = osp.join(con.path_img, f'symbols/{self.layout.set}/{self.layout.rarity.upper()[0]}.svg') + if not osp.exists(svg_path): + self.create_expansion_symbol(group) + + # Import the SVG and place it correctly + svg = psd.import_svg(svg_path) + svg.move(group, ps.ElementPlacement.PlaceInside) + + # Size to fit reference? + psd.frame_layer( + svg, + self.expansion_reference_layer, + smallest=True, + anchor=self.expansion_symbol_anchor, + alignments=self.expansion_symbol_alignments + ) + + # Adjust size up slightly to account for missing outline + svg.resize(108, 108, ps.AnchorPosition.MiddleCenter) - # Merge all - symbol_layer.move(group, ps.ElementPlacement.PlaceBefore) - symbol_layer.name = "Expansion Symbol Old" - symbol_layer.opacity = 0 - self.expansion_symbol = group.merge() - self.expansion_symbol.name = "Expansion Symbol" + def create_watermark(self) -> None: + """ + Builds the watermark. + """ + # Is the watermark from Scryfall supported? + wm_path = osp.join(con.path_img, f"watermarks/{self.layout.watermark}.svg") + if not self.layout.watermark or not osp.exists(wm_path): + return + + # Decide what colors to use + colors = [] + if len(self.pinlines) == 2: + colors.extend([con.watermark_colors[c] for c in self.pinlines if c in con.watermark_colors]) + elif self.pinlines in con.watermark_colors: + colors.append(con.watermark_colors[self.pinlines]) + + # Check for valid reference, valid colors, valid text layers group for placement + if not self.textbox_reference or not colors or not self.text_layers: + return + + # Get watermark custom settings if available + wm_details = con.watermarks.get(self.layout.watermark, {}) + + # Generate the watermark + wm = psd.import_svg(wm_path) + psd.frame_layer(wm, self.textbox_reference, True) + wm.resize( + wm_details.get('scale', 80), + wm_details.get('scale', 80), + ps.AnchorPosition.MiddleCenter) + wm.move(self.text_layers, ps.ElementPlacement.PlaceAfter) + wm.blendMode = ps.BlendMode.ColorBurn + wm.opacity = wm_details.get('opacity', 40) + + # Add the colors + fx = [] + if len(colors) == 1: + fx.append({ + 'type': 'color-overlay', + 'opacity': 100, + 'color': psd.get_color(colors[0]) + }) + elif len(colors) == 2: + fx.append({ + 'type': 'gradient-overlay', + 'rotation': 0, + 'colors': [ + {'color': colors[0], 'location': 0, 'midpoint': 50}, + {'color': colors[1], 'location': 4096, 'midpoint': 50} + ] + }) + psd.apply_fx(wm, fx) def load_template(self) -> None: """ Opens the template's PSD file in Photoshop. """ # Create our full path and load it, set our document reference - self.app.load(os.path.join(con.cwd, f"templates\\{self.template_file}")) + self.app.load(osp.join(self.layout.template_path, f"{self.template_file}")) def load_artwork(self) -> None: """ @@ -627,7 +748,7 @@ def load_artwork(self) -> None: dims = psd.get_layer_dimensions(self.art_reference_layer) if (dims['width'] * 1.2) < dims['height']: # Use fullart test image - self.layout.filename = os.path.join(con.cwd, "proxyshop/img/test-fa.png") + self.layout.filename = osp.join(con.path_img, "test-fa.png") # Paste the file into the art self.active_layer = self.art_layer @@ -653,7 +774,7 @@ def get_file_name(self) -> str: # Check if name already exists if not cfg.overwrite_duplicate: num = 0 - while os.path.exists(os.path.join(con.cwd, f"out/{name}.{cfg.output_filetype}")): + while osp.exists(osp.join(con.cwd, f"out/{name}.{cfg.output_filetype}")): num += 1 if ")" not in name: name = f'{name} (1)' @@ -717,7 +838,7 @@ def reset(self) -> None: """ Reset the document, purge the cache, end await. """ - psd.reset_document(self.template_file) + psd.reset_document() self.app.purge(4) console.end_await() @@ -735,6 +856,22 @@ def raise_error(self, message: str, error: Exception) -> bool: self.reset() return result + def color_border(self) -> None: + """ + Color this card's border based on given setting. + """ + # Change to a recognized color that isn't the default + if self.border_color != 'black' and self.border_color in con.colors: + try: + self.collector_info_authentic() + border = self.docref.layers.getByName('Border') + psd.apply_fx(border, [{ + 'type': 'color-overlay', + 'color': psd.get_color(self.border_color) + }]) + except PhotoshopPythonAPIError: + pass + """ HOOKS """ @@ -770,6 +907,19 @@ def execute(self) -> bool: except Exception as e: return self.raise_error("Unable to insert collector info!", e) + # Add expansion symbol + try: + self.expansion_symbol() + except Exception as e: + return self.raise_error("Unable to generate expansion symbol!", e) + + # Add watermark + try: + if cfg.enable_watermark: + self.create_watermark() + except Exception as e: + return self.raise_error("Unable to generate watermark!", e) + # Add text layers try: self.basic_text_layers() @@ -780,6 +930,7 @@ def execute(self) -> bool: # Enable the layers we need try: self.enable_frame_layers() + self.color_border() except Exception as e: return self.raise_error("Enabling layers failed!", e) @@ -879,10 +1030,35 @@ def basic_text_layers(self) -> None: text_classes.ScaledTextField( layer = self.text_layer_type, contents = self.layout.type_line, - reference = self.expansion_symbol + reference = self.expansion_symbol_layer ) ]) + """ + UTILITY METHODS + """ + + def create_dual_layer(self, colors: str, group: LayerSet, mask: Optional[ArtLayer] = None): + """ + Create a dual color layer using a gradient mask. + @param colors: Colors to use. + @param group: Group to look for the layers within. + @param mask: Layer containing the gradient mask. + """ + # Was mask provided? + if not mask or not isinstance(mask, ArtLayer): + mask = self.docref.artLayers.getByName("Mask") + + # Change layer visibility + top = psd.getLayer(colors[0], group) + bottom = psd.getLayer(colors[1], group) + bottom.move(top, ps.ElementPlacement.PlaceAfter) + top.visible = True + bottom.visible = True + + # add the mask + psd.copy_layer_mask(mask, top) + class NormalTemplate (StarterTemplate): """ @@ -915,8 +1091,8 @@ def rules_text_and_pt_layers(self) -> None: layer = self.text_layer_rules, contents = self.layout.oracle_text, flavor = self.layout.flavor_text, - reference = psd.getLayer(con.layers.TEXTBOX_REFERENCE, self.text_layers), - divider = psd.getLayer(con.layers.DIVIDER, self.text_layers), + reference = self.textbox_reference, + divider = self.divider_layer, pt_reference = psd.getLayer(con.layers.PT_REFERENCE, self.text_layers), pt_top_reference = psd.getLayer(con.layers.PT_TOP_REFERENCE, self.text_layers), centered = self.is_centered @@ -930,8 +1106,8 @@ def rules_text_and_pt_layers(self) -> None: layer = self.text_layer_rules, contents = self.layout.oracle_text, flavor = self.layout.flavor_text, - reference = psd.getLayer(con.layers.TEXTBOX_REFERENCE, self.text_layers), - divider = psd.getLayer(con.layers.DIVIDER, self.text_layers), + reference = self.textbox_reference, + divider = self.divider_layer, centered = self.is_centered ) ) @@ -996,7 +1172,7 @@ class NormalClassicTemplate (StarterTemplate): """ template_file_name = "normal-classic" - def __init__(self, layout): + def __init__(self, layout: CardLayout): cfg.real_collector = False super().__init__(layout) @@ -1022,18 +1198,19 @@ def template_suffix(self) -> str: return "Promo Classic" return "Classic" - def rules_text_and_pt_layers(self): - # Move mana layer down for hybrid mana - if len(self.background) == 2: - self.text_layer_mana.translate(0, -5) - - # Text reference and rules text - reference_layer = psd.getLayer( + @cached_property + def textbox_reference(self) -> Optional[ArtLayer]: + return psd.getLayer( con.layers.TEXTBOX_REFERENCE_LAND if self.is_land else con.layers.TEXTBOX_REFERENCE, self.text_layers ) + def rules_text_and_pt_layers(self): + # Move mana layer down for hybrid mana + if len(self.background) == 2: + self.text_layer_mana.translate(0, -5) + # Add rules text self.text.append( text_classes.FormattedTextArea( @@ -1041,7 +1218,7 @@ def rules_text_and_pt_layers(self): contents = self.layout.oracle_text, flavor = self.layout.flavor_text, centered = self.is_centered, - reference = reference_layer, + reference = self.textbox_reference, divider = psd.getLayer(con.layers.DIVIDER, self.text_layers) ) ) @@ -1074,10 +1251,226 @@ def enable_frame_layers(self): """ +class UniversesBeyondTemplate (NormalTemplate): + """ + Template used for crossover sets like WH40K, Transformers, Street Fighter, etc. + This template is built using the Silvan style of creating vector shapes and applying the colors + and textures in the form of clipping masks. It's a little more involved, but it demonstrates + an alternative way to build a highly complex template which can work for multiple card types. + Credit to Kyle of Card Conjurer, WarpDandy, and MrTeferi. + """ + template_file_name = "universes-beyond" + template_suffix = "Universes Beyond" + + @property + def is_nyx(self) -> bool: + # Disable Nyx + return False + + """ + LAYERS + """ + + @cached_property + def mask_layer(self) -> ArtLayer: + # This layer contains the gradient mask for creating dual colors + return self.docref.artLayers.getByName("Mask") + + @cached_property + def pinlines_layer(self) -> Optional[ArtLayer]: + return self.pinlines_group.artLayers.getByName(self.pinlines) + + @cached_property + def textbox_layer(self) -> Optional[ArtLayer]: + return self.textbox_group.artLayers.getByName(self.pinlines) + + @cached_property + def pt_layer(self) -> Optional[ArtLayer]: + # Support Vehicle, regular layers, and back side darkened layers + if self.background == 'Vehicle': + return psd.getLayer(self.background, con.layers.PT_BOX) + if self.is_front: + return psd.getLayer(self.twins, con.layers.PT_BOX) + return psd.getLayer(f'{self.twins} Back', con.layers.PT_BOX) + + """ + TEXT LAYERS + """ + + @cached_property + def text_layer_rules(self) -> Optional[ArtLayer]: + # Is this a creature? + if self.is_creature: + # Flipside P/T? + if self.other_face_is_creature and self.layout.transform_icon: + return psd.getLayer(con.layers.RULES_TEXT_CREATURE_FLIP, self.text_layers) + return psd.getLayer(con.layers.RULES_TEXT_CREATURE, self.text_layers) + self.text_layer_pt.visible = False + + # Not a creature, Flipside P/T? + if self.other_face_is_creature and self.layout.transform_icon: + return psd.getLayer(con.layers.RULES_TEXT_NONCREATURE_FLIP, self.text_layers) + return psd.getLayer(con.layers.RULES_TEXT_NONCREATURE, self.text_layers) + + """ + GROUPS + """ + + @cached_property + def twins_group(self) -> LayerSet: + return self.docref.layerSets.getByName(con.layers.TWINS) + + @cached_property + def pinlines_group(self) -> LayerSet: + return self.docref.layerSets.getByName(con.layers.PINLINES) + + @cached_property + def textbox_group(self) -> LayerSet: + return self.docref.layerSets.getByName(con.layers.TEXTBOX) + + @cached_property + def background_group(self) -> LayerSet: + return self.docref.layerSets.getByName(con.layers.BACKGROUND) + + @cached_property + def crown_group(self) -> LayerSet: + return self.docref.layerSets.getByName(con.layers.LEGENDARY_CROWN) + + """ + SHAPES + """ + + @cached_property + def pinlines_shape_group(self) -> Optional[LayerSet]: + return psd.getLayerSet("Shape", self.pinlines_group) + + @cached_property + def textbox_shape_group(self) -> Optional[LayerSet]: + return psd.getLayerSet("Shape", self.textbox_group) + + @cached_property + def twins_shape_group(self) -> Optional[LayerSet]: + return psd.getLayerSet("Shape", self.twins_group) + + """ + METHODS + """ + + def enable_frame_layers(self) -> None: + + # Twins + if self.twins_layer: + self.twins_layer.visible = True + if self.twins == "Colorless": + psd.set_fill_opacity(60, self.twins_group) + + # PT Box + if self.is_creature and self.pt_layer: + self.pt_layer.parent.visible = True + self.pt_layer.visible = True + + # Color Indicator + if self.type_line_shifted and self.color_indicator_layer: + self.color_indicator_layer.visible = True + + # Pinlines + if len(self.pinlines) != 2 and self.pinlines_layer and self.textbox_layer: + self.textbox_layer.visible = True + self.pinlines_layer.visible = True + if self.pinlines == "Colorless": + psd.set_fill_opacity(60, self.textbox_group) + else: + # Generate dual color layers + self.create_dual_layer(self.pinlines, self.pinlines_group, self.mask_layer) + self.create_dual_layer(self.pinlines, self.textbox_group, self.mask_layer) + + # Background layer + if len(self.background) != 2 and self.background_layer: + self.background_layer.visible = True + else: + # Generate dual color layer + self.create_dual_layer(self.background, self.background_group, self.mask_layer) + + # Legendary crown + if self.is_legendary: + self.enable_crown() + + # Transform alterations + if self.is_transform: + self.enable_transform_layers() + else: + # Add normal mask to Pinlines + psd.copy_layer_mask(psd.getLayer('Normal Mask', self.pinlines_group), self.pinlines_group) + + def enable_transform_layers(self): + """ + Make any changes that are required by Transform cards. + """ + # Enable transform icon + psd.getLayer('Circle', self.text_layers).visible = True + self.transform_icon.visible = True + + # Add transform mask to Textbox + if self.is_front: + # Use TF Front mask, TF Front/Transform shapes + psd.copy_layer_mask(psd.getLayer('TF Front Mask', self.pinlines_group), self.pinlines_group) + psd.getLayer('TF Front', self.pinlines_shape_group).visible = True + psd.getLayer('TF Front', self.textbox_shape_group).visible = True + psd.getLayer('Transform', self.twins_shape_group).visible = True + psd.getLayer('Normal', self.pinlines_shape_group).visible = False + psd.getLayer('Normal', self.textbox_shape_group).visible = False + psd.getLayer('Normal', self.twins_shape_group).visible = False + + # Add flipside PT if needed + if self.other_face_is_creature: + self.text.append( + text_classes.TextField( + layer=psd.getLayer(con.layers.FLIPSIDE_POWER_TOUGHNESS, self.text_layers), + contents=str(self.layout.other_face_power) + "/" + str(self.layout.other_face_toughness) + ) + ) + else: + # Use Normal mask, TF Back/Transform shapes, and back side darker colors + psd.copy_layer_mask(psd.getLayer('Normal Mask', self.pinlines_group), self.pinlines_group) + psd.getLayer('TF Back', self.pinlines_shape_group).visible = True + psd.getLayer('Transform', self.twins_shape_group).visible = True + psd.getLayer('Normal', self.pinlines_shape_group).visible = False + psd.getLayer('Normal', self.twins_shape_group).visible = False + + # Change Name, Type, and PT to white with shadow for non-Eldrazi backs + if self.layout.transform_icon != con.layers.MOON_ELDRAZI_DFC: + psd.enable_layer_fx(self.text_layer_name) + psd.enable_layer_fx(self.text_layer_type) + psd.enable_layer_fx(self.text_layer_pt) + self.text_layer_name.textItem.color = psd.rgb_white() + self.text_layer_type.textItem.color = psd.rgb_white() + self.text_layer_pt.textItem.color = psd.rgb_white() + psd.getLayerSet('Back', self.twins_group).visible = True + psd.getLayer('Back', self.textbox_group).visible = True + + def enable_crown(self) -> None: + # Enable Legendary Crown group + self.crown_group.visible = True + + # Crown layer + if len(self.pinlines) != 2 and self.crown_layer: + self.crown_layer.visible = True + else: + # Generate dual color layer + self.create_dual_layer(self.pinlines, self.crown_group, self.mask_layer) + + # Change border + psd.getLayer(con.layers.NORMAL_BORDER, self.border_group).visible = False + psd.getLayer(con.layers.LEGENDARY_BORDER, self.border_group).visible = True + + # Enable Legendary pinline connector + psd.getLayer("Legendary Pinlines", self.pinlines_shape_group).visible = True + + class NormalExtendedTemplate (NormalTemplate): """ - An extended-art version of the normal template. The layer structure of this template and - NormalTemplate are identical. + An extended-art version of the normal template. The layer structure of this template and + NormalTemplate are identical. """ template_file_name = "normal-extended" template_suffix = "Extended" @@ -1258,13 +1651,6 @@ class TransformBackTemplate (NormalTemplate): Template for the back faces of transform cards. """ template_file_name = "tf-back" - dfc_layer_group = con.layers.TF_BACK - - @cached_property - def transform_icon(self) -> Optional[ArtLayer]: - return psd.getLayer(self.layout.transform_icon, psd.getLayerSet( - self.dfc_layer_group, self.text_layers) - ) def enable_frame_layers(self): # set transform icon @@ -1285,7 +1671,6 @@ class TransformFrontTemplate (TransformBackTemplate): Template for the front faces of transform cards. """ template_file_name = "tf-front.psd" - dfc_layer_group = con.layers.TF_FRONT @cached_property def text_layer_rules(self) -> Optional[ArtLayer]: @@ -1322,6 +1707,7 @@ class IxalanTemplate (NormalTemplate): @property def is_creature(self) -> bool: + # Only lands for this one return False @property @@ -1333,6 +1719,10 @@ def name_shifted(self) -> bool: def expansion_symbol_anchor(self) -> ps.AnchorPosition: return ps.AnchorPosition.MiddleCenter + @property + def expansion_symbol_alignments(self) -> list[Alignment]: + return [Alignment.CenterVertical, Alignment.CenterHorizontal] + def basic_text_layers(self): # Add to text layers @@ -1350,31 +1740,20 @@ def basic_text_layers(self): def enable_frame_layers(self): self.background_layer.visible = True - def create_expansion_symbol(self, centered=False): - super().create_expansion_symbol(True) - - def create_expansion_symbol_classic(self, centered: bool = False): - super().create_expansion_symbol_classic(True) - class MDFCBackTemplate (NormalTemplate): """ Template for the back faces of modal double faced cards. """ template_file_name = "mdfc-back" - dfc_layer_group = con.layers.MDFC_BACK - - @cached_property - def mdfc_group(self) -> Optional[LayerSet]: - return psd.getLayerSet(self.dfc_layer_group, self.text_layers) @cached_property def text_layer_mdfc_left(self) -> Optional[ArtLayer]: - return psd.getLayer(con.layers.LEFT, self.mdfc_group) + return psd.getLayer(con.layers.LEFT, self.dfc_group) @cached_property def text_layer_mdfc_right(self) -> Optional[ArtLayer]: - return psd.getLayer(con.layers.RIGHT, self.mdfc_group) + return psd.getLayer(con.layers.RIGHT, self.dfc_group) def basic_text_layers(self): super().basic_text_layers() @@ -1394,9 +1773,9 @@ def basic_text_layers(self): def enable_frame_layers(self): psd.getLayer(self.twins, - psd.getLayerSet(con.layers.TOP, self.mdfc_group)).visible = True + psd.getLayerSet(con.layers.TOP, self.dfc_group)).visible = True psd.getLayer(self.layout.other_face_twins, - psd.getLayerSet(con.layers.BOTTOM, self.mdfc_group)).visible = True + psd.getLayerSet(con.layers.BOTTOM, self.dfc_group)).visible = True super().enable_frame_layers() @@ -1405,7 +1784,6 @@ class MDFCFrontTemplate (MDFCBackTemplate): Template for the front faces of modal double faced cards. """ template_file_name = "mdfc-front" - dfc_layer_group = con.layers.MDFC_FRONT """ @@ -1422,31 +1800,35 @@ class MutateTemplate (NormalTemplate): """ template_file_name = "mutate.psd" - def __init__(self, layout): + """ + MUTATE TEXT + """ - # Split self.oracle_text between mutate text and actual text before calling super() - split_rules_text = layout.oracle_text.split("\n") - layout.mutate_text = split_rules_text[0] - layout.oracle_text = "\n".join(split_rules_text[1:]) - super().__init__(layout) + @cached_property + def mutate_text(self) -> str: + split_rules_text = self.layout.oracle_text.split("\n") + self.layout.oracle_text = "\n".join(split_rules_text[1:]) + return split_rules_text[0] @cached_property def text_layer_mutate(self) -> Optional[ArtLayer]: return psd.getLayer(con.layers.MUTATE, self.text_layers) def basic_text_layers(self): - super().basic_text_layers() # Add mutate text self.text.append( text_classes.FormattedTextArea( layer = self.text_layer_mutate, - contents = self.layout.mutate_text, + contents = self.mutate_text, flavor = self.layout.flavor_text, reference = psd.getLayer(con.layers.MUTATE_REFERENCE, self.text_layers), ) ) + # Continue with text + super().basic_text_layers() + class PrototypeTemplate (NormalTemplate): """ @@ -1456,7 +1838,7 @@ class PrototypeTemplate (NormalTemplate): """ template_file_name = "prototype.psd" - def __init__(self, layout): + def __init__(self, layout: CardLayout): # Split self.oracle_text between prototype text and rules text split_rules_text = layout.oracle_text.split("\n") @@ -1588,7 +1970,7 @@ class LevelerTemplate (NormalTemplate): """ template_file_name = "leveler" - def __init__(self, layout): + def __init__(self, layout: CardLayout): cfg.exit_early = True super().__init__(layout) @@ -1655,11 +2037,15 @@ class SagaTemplate (NormalTemplate): """ template_file_name = "saga" - def __init__(self, layout): + def __init__(self, layout: CardLayout): self._abilities = [] self._icons = [] super().__init__(layout) + """ + BOOL PROPERTIES + """ + @property def is_legendary(self) -> bool: return False @@ -1676,6 +2062,10 @@ def is_nyx(self) -> bool: def is_companion(self) -> bool: return False + """ + LAYER PROPERTIES + """ + @cached_property def pinlines_layer(self) -> Optional[ArtLayer]: return psd.getLayer(self.background, con.layers.TEXTBOX) @@ -1700,14 +2090,22 @@ def icon_layers(self, value): def saga_group(self): return psd.getLayerSet("Saga", self.text_layers) - @cached_property - def ref(self): - return psd.getLayer(con.layers.TEXTBOX_REFERENCE, self.text_layers) - @cached_property def ability_divider(self) -> ArtLayer: return psd.getLayer(con.layers.DIVIDER, self.saga_group) + """ + TRANSFORM PROPERTIES + """ + + @cached_property + def transform_icon(self) -> Optional[ArtLayer]: + return psd.getLayer(self.layout.transform_icon, [self.text_layers, 'tf-front']) + + """ + METHODS + """ + def enable_frame_layers(self): super().enable_frame_layers() @@ -1718,6 +2116,16 @@ def enable_frame_layers(self): # Saga stripe psd.getLayer(self.pinlines, con.layers.PINLINES_AND_SAGA_STRIPE).visible = True + # Is this transform? + if self.layout.other_face: + # Icon + psd.getLayerSet('Circle', self.text_layers).visible = True + self.transform_icon.visible = True + + # Nameplate + psd.enable_mask(self.twins_layer.parent) + psd.getLayer(self.background, 'TF Twins').visible = True + def rules_text_and_pt_layers(self): # Add description text with reminder @@ -1747,7 +2155,7 @@ def post_text_layers(self) -> None: spacing = 80 * self.app.activeDocument.width / 3264 spaces = len(self.ability_layers) - 1 spacing_total = (spaces * 1.5) + 2 - ref_height = psd.get_layer_dimensions(self.ref)['height'] + ref_height = psd.get_layer_dimensions(self.textbox_reference)['height'] total_height = ref_height - (((spacing * 1.5) * spaces) + (spacing * 2)) # Resize text items till they fit in the available space @@ -1759,7 +2167,7 @@ def post_text_layers(self) -> None: inside_gap = (ref_height - layer_heights) * (1.5 / spacing_total) # Space Saga lines evenly apart - psd.spread_layers_over_reference(self.ability_layers, self.ref, gap, inside_gap) + psd.spread_layers_over_reference(self.ability_layers, self.textbox_reference, gap, inside_gap) # Align icons to respective text layers for i, ref_layer in enumerate(self.ability_layers): @@ -1796,11 +2204,15 @@ class ClassTemplate (NormalTemplate): """ template_file_name = "class" - def __init__(self, layout): + def __init__(self, layout: CardLayout): self._line_layers: list[ArtLayer] = [] self._stage_layers: list[LayerSet] = [] super().__init__(layout) + """ + BOOL PROPERTIES + """ + @property def is_legendary(self) -> bool: return False @@ -1825,10 +2237,6 @@ def is_companion(self) -> bool: LAYERS """ - @cached_property - def ref(self): - return psd.getLayer(con.layers.TEXTBOX_REFERENCE, self.text_layers) - @cached_property def class_group(self) -> LayerSet: return psd.getLayerSet("Class", con.layers.TEXT_AND_ICONS) @@ -1898,7 +2306,7 @@ def post_text_layers(self) -> None: spacing = 80 * self.app.activeDocument.width / 3264 spaces = len(self.line_layers) - 1 divider_height = psd.get_layer_dimensions(self.stage_layers[0])['height'] - ref_height = psd.get_layer_dimensions(self.ref)['height'] + ref_height = psd.get_layer_dimensions(self.textbox_reference)['height'] spacing_total = (spaces * (spacing + divider_height)) + (spacing * 2) total_height = ref_height - spacing_total @@ -1911,7 +2319,7 @@ def post_text_layers(self) -> None: inside_gap = (ref_height - layer_heights) * ((spacing + divider_height) / spacing_total) # Space Class lines evenly apart - psd.spread_layers_over_reference(self.line_layers, self.ref, gap, inside_gap) + psd.spread_layers_over_reference(self.line_layers, self.textbox_reference, gap, inside_gap) # Position divider lines self.position_divider_lines() @@ -1934,7 +2342,7 @@ class PlaneswalkerTemplate (StarterTemplate): """ template_file_name = "pw.psd" - def __init__(self, layout): + def __init__(self, layout: CardLayout): # Settable Properties self._ability_layers = [] @@ -1966,10 +2374,6 @@ def art_reference(self): def text_layers(self) -> LayerSet: return psd.getLayerSet(con.layers.TEXT_AND_ICONS, self.group) - @cached_property - def ref(self) -> ArtLayer: - return psd.getLayer(con.layers.TEXTBOX_REFERENCE, self.text_layers) - @cached_property def top_ref(self) -> ArtLayer: return psd.getLayer(con.layers.PW_TOP_REFERENCE, self.text_layers) @@ -2109,7 +2513,7 @@ def post_text_layers(self): # Core vars spacing = 80 * self.app.activeDocument.width / 3264 spaces = len(self.ability_layers) + 1 - ref_height = psd.get_layer_dimensions(self.ref)['height'] + ref_height = psd.get_layer_dimensions(self.textbox_reference)['height'] total_height = ref_height - (spacing * spaces) # Resize text items till they fit in the available space @@ -2120,10 +2524,12 @@ def post_text_layers(self): gap = (ref_height - layer_heights) / spaces # Space Planeswalker text evenly apart - psd.spread_layers_over_reference(self.ability_layers, self.ref, gap) + psd.spread_layers_over_reference(self.ability_layers, self.textbox_reference, gap) # Check the top reference of loyalty badge - ft.vertically_nudge_pw_text(self.ability_layers, spacing, gap, self.ref, self.adj_ref, self.top_ref) + ft.vertically_nudge_pw_text( + self.ability_layers, spacing, gap, self.textbox_reference, self.adj_ref, self.top_ref + ) # Align colons and shields to respective text layers for i, ref_layer in enumerate(self.ability_layers): @@ -2249,19 +2655,14 @@ class PlaneswalkerMDFCBackTemplate (PlaneswalkerTemplate): Need to enable MDFC layers and add MDFC text. """ template_file_name = "pw-mdfc-back" - dfc_layer_group = con.layers.MDFC_BACK - - @cached_property - def mdfc_group(self) -> Optional[LayerSet]: - return psd.getLayerSet(self.dfc_layer_group, self.text_layers) @cached_property def text_layer_mdfc_left(self) -> Optional[ArtLayer]: - return psd.getLayer(con.layers.LEFT, self.mdfc_group) + return psd.getLayer(con.layers.LEFT, self.dfc_group) @cached_property def text_layer_mdfc_right(self) -> Optional[ArtLayer]: - return psd.getLayer(con.layers.RIGHT, self.mdfc_group) + return psd.getLayer(con.layers.RIGHT, self.dfc_group) @cached_property def text_layer_name(self) -> Optional[ArtLayer]: @@ -2289,9 +2690,9 @@ def enable_frame_layers(self): # Add special MDFC layers psd.getLayer(self.twins, - psd.getLayerSet(con.layers.TOP, self.mdfc_group)).visible = True + psd.getLayerSet(con.layers.TOP, self.dfc_group)).visible = True psd.getLayer(self.layout.other_face_twins, - psd.getLayerSet(con.layers.BOTTOM, self.mdfc_group)).visible = True + psd.getLayerSet(con.layers.BOTTOM, self.dfc_group)).visible = True class PlaneswalkerMDFCFrontTemplate (PlaneswalkerMDFCBackTemplate): @@ -2299,7 +2700,6 @@ class PlaneswalkerMDFCFrontTemplate (PlaneswalkerMDFCBackTemplate): Template for the front faces of modal double faced Planeswalker cards. """ template_file_name = "pw-mdfc-front" - dfc_layer_group = con.layers.MDFC_FRONT class PlaneswalkerMDFCBackExtendedTemplate (PlaneswalkerMDFCBackTemplate): @@ -2341,7 +2741,6 @@ class PlaneswalkerTransformBackTemplate (PlaneswalkerTemplate): Template for the back faces of transform cards. """ template_file_name = "pw-tf-back" - dfc_layer_group = con.layers.TF_BACK @cached_property def text_layer_name(self) -> Optional[ArtLayer]: @@ -2355,7 +2754,7 @@ def text_layer_type(self) -> Optional[ArtLayer]: @cached_property def transform_icon(self) -> Optional[ArtLayer]: - return psd.getLayer(self.layout.transform_icon, [self.text_layers, self.dfc_layer_group]) + return psd.getLayer(self.layout.transform_icon, self.dfc_group) def enable_frame_layers(self): # Add the transform icon @@ -2368,7 +2767,6 @@ class PlaneswalkerTransformFrontTemplate (PlaneswalkerTransformBackTemplate): Template for the back faces of transform cards. """ template_file_name = "pw-tf-front" - dfc_layer_group = con.layers.TF_FRONT class PlaneswalkerTransformBackExtendedTemplate (PlaneswalkerTransformBackTemplate): @@ -2416,7 +2814,7 @@ class PlanarTemplate (StarterTemplate): """ template_file_name = "planar" - def __init__(self, layout): + def __init__(self, layout: CardLayout): cfg.exit_early = True super().__init__(layout) @@ -2439,7 +2837,7 @@ def basic_text_layers(self): text_classes.ScaledTextField( layer = self.text_layer_type, contents = self.layout.type_line, - reference = self.expansion_symbol + reference = self.expansion_symbol_layer ) ]) @@ -2492,7 +2890,7 @@ class BasicLandTemplate (BaseTemplate): """ template_file_name = "basic" - def __init__(self, layout): + def __init__(self, layout: CardLayout): cfg.save_artist_name = True cfg.real_collector = False super().__init__(layout) @@ -2517,7 +2915,7 @@ class BasicLandUnstableTemplate (BasicLandTemplate): template_file_name = "basic-unstable" template_suffix = "Unstable" - def create_expansion_symbol(self, centered=False): + def expansion_symbol(self): pass def basic_text_layers(self): diff --git a/proxyshop/tests/expansion_symbol.py b/src/tests/expansion_symbol.py similarity index 55% rename from proxyshop/tests/expansion_symbol.py rename to src/tests/expansion_symbol.py index 9b7ee000..a22277bd 100644 --- a/proxyshop/tests/expansion_symbol.py +++ b/src/tests/expansion_symbol.py @@ -3,23 +3,29 @@ """ # Change to root directory import os -os.chdir(os.path.abspath(os.path.join(os.getcwd(), '..', '..'))) + +from src.utils.enums_photoshop import Alignment + +# Use this to force a working directory if IDE doesn't support it +# os.chdir(os.path.abspath(os.path.join(os.getcwd(), '..', '..'))) from functools import cached_property from pathlib import Path from typing import Optional +from photoshop.api._layerSet import LayerSet +from photoshop.api.application import ArtLayer import photoshop.api as ps -from proxyshop.constants import con +from src.constants import con con.headless = True -from proxyshop import helpers as psd -from proxyshop.settings import cfg +from src import helpers as psd +from src.settings import cfg # Generate rarity folders if they don't exist -Path(os.path.join(con.cwd, "proxyshop/tests/symbols/common")).mkdir(mode=511, parents=True, exist_ok=True) -Path(os.path.join(con.cwd, "proxyshop/tests/symbols/uncommon")).mkdir(mode=511, parents=True, exist_ok=True) -Path(os.path.join(con.cwd, "proxyshop/tests/symbols/rare")).mkdir(mode=511, parents=True, exist_ok=True) -Path(os.path.join(con.cwd, "proxyshop/tests/symbols/mythic")).mkdir(mode=511, parents=True, exist_ok=True) +Path(os.path.join(con.path_tests, "symbols/common")).mkdir(mode=511, parents=True, exist_ok=True) +Path(os.path.join(con.path_tests, "symbols/uncommon")).mkdir(mode=511, parents=True, exist_ok=True) +Path(os.path.join(con.path_tests, "symbols/rare")).mkdir(mode=511, parents=True, exist_ok=True) +Path(os.path.join(con.path_tests, "symbols/mythic")).mkdir(mode=511, parents=True, exist_ok=True) """ TEST CLASSES @@ -39,19 +45,19 @@ def __init__(self, set_code: str, rarity: str = 'r'): @cached_property def symbol(self) -> str: # Automatic set symbol enabled? - if cfg.auto_symbol and self.set in con.set_symbols: + if not cfg.symbol_force_default and self.set in con.set_symbols: sym = con.set_symbols[self.set] # Check if this is a reference to another symbol if isinstance(sym, str) and len(sym) > 1 and sym in con.set_symbols: return con.set_symbols[sym] return sym - elif cfg.auto_symbol and self.set[1:] in con.set_symbols: + elif not cfg.symbol_force_default and self.set[1:] in con.set_symbols: sym = con.set_symbols[self.set[1:]] # Check if this is a reference to another symbol if isinstance(sym, str) and len(sym) > 1 and sym in con.set_symbols: return con.set_symbols[sym] return sym - return cfg.symbol_char + return con.set_symbols.get(cfg.symbol_default, con.set_symbols['MTG']) class TestTemplate: @@ -63,7 +69,7 @@ class TestTemplate: def __init__(self, layout: TestLayout): self.layout = layout self._expansion_symbol = psd.getLayer('Expansion Symbol', self.text_layers) - self.create_expansion_symbol() + self.expansion_symbol() @cached_property def app(self): @@ -73,76 +79,88 @@ def app(self): def text_layers(self): return psd.getLayerSet('Text') - @cached_property - def expansion_symbol_anchor(self): - return ps.AnchorPosition.MiddleCenter + """ + EXPANSION SYMBOL PROPERTIES + """ @property - def active_layer(self): - return self.app.activeDocument.activeLayer - - @active_layer.setter - def active_layer(self, value): - self.app.activeDocument.activeLayer = value + def expansion_symbol_anchor(self) -> ps.AnchorPosition: + return ps.AnchorPosition.MiddleRight @property - def expansion_symbol(self): - return self._expansion_symbol + def expansion_symbol_alignments(self) -> list[Alignment]: + return [Alignment.CenterVertical, Alignment.CenterHorizontal] + + @cached_property + def expansion_reference_layer(self): + # Expansion symbol reference layer + return psd.getLayer(con.layers.EXPANSION_REFERENCE, self.text_layers) - @expansion_symbol.setter - def expansion_symbol(self, value): - self._expansion_symbol = value + @cached_property + def expansion_symbol_layer(self) -> Optional[ArtLayer]: + # Expansion symbol layer + return psd.getLayer(con.layers.EXPANSION_SYMBOL, self.text_layers) - def create_expansion_symbol(self, centered: bool = False) -> None: + def expansion_symbol(self) -> None: """ - Builds the expansion symbol - @param centered: Center the symbol within its reference. + Builds the user's preferred type of expansion symbol. """ - # Starting symbol, reference, and rarity layers - symbol_layer = psd.getLayer(con.layers.EXPANSION_SYMBOL, self.text_layers) - ref_layer = psd.getLayer(con.layers.EXPANSION_REFERENCE, self.text_layers) - psd.clear_layer_style(symbol_layer) - current_layer = symbol_layer + if cfg.symbol_mode not in ['default', 'classic', 'svg']: + self.expansion_symbol_layer.textItem.contents = '' + return - # Put everything in a group + # Create a group for generated layers, clear style group = self.app.activeDocument.layerSets.add() - group.move(current_layer, ps.ElementPlacement.PlaceAfter) - symbol_layer.move(group, ps.ElementPlacement.PlaceInside) + group.move(self.expansion_symbol_layer, ps.ElementPlacement.PlaceAfter) + psd.clear_layer_style(self.expansion_symbol_layer) + self.create_expansion_symbol(group) + # Merge and refresh cache + group.merge().name = "Expansion Symbol" + self.expansion_symbol_layer.name = "Expansion Symbol Old" + self.expansion_symbol_layer.opacity = 0 + + def create_expansion_symbol(self, group: LayerSet) -> None: + """ + Builds the expansion symbol using the newer layer effects methodology. + @param group: The LayerSet to add generated layers to. + """ # Set the starting character and format our layer array - if self.layout.rarity not in ['common', 'uncommon', 'rare', 'mythic']: - self.layout.rarity = 'mythic' - symbol_layer.textItem.contents, symbols = psd.process_expansion_symbol_info( + self.expansion_symbol_layer.textItem.contents, symbols = psd.process_expansion_symbol_info( self.layout.symbol, self.layout.rarity.lower() ) - # Size to fit reference? - if cfg.auto_symbol_size: - psd.frame_layer(symbol_layer, ref_layer, self.expansion_symbol_anchor, True, centered) + # Size to fit reference + psd.frame_layer( + self.expansion_symbol_layer, + self.expansion_reference_layer, + smallest=True, + anchor=self.expansion_symbol_anchor, + alignments=self.expansion_symbol_alignments + ) # Create each symbol layer for i, lay in enumerate(symbols): # Establish new current layer - current_layer = symbol_layer.duplicate(current_layer, ps.ElementPlacement.PlaceAfter) + current_layer = self.expansion_symbol_layer.duplicate(group, ps.ElementPlacement.PlaceAtEnd) current_layer.textItem.contents = lay['char'] self.active_layer = current_layer - layer_fx = [] - fill_layer = None + layer_fx, fill_layer = [], None # Change font color - if 'color' in lay: + if lay.get('color'): current_layer.textItem.color = lay['color'] # Stroke fx - if 'stroke' in lay: + if lay.get('stroke'): layer_fx.append(lay['stroke']) # Rarity gradient overlay fx - if lay.get('rarity') and 'gradient' in lay: + if lay.get('rarity') and lay.get('gradient'): layer_fx.append(lay['gradient']) # Drop shadow fx - if 'drop-shadow' in lay: + if lay.get('drop-shadow'): layer_fx.append(lay['drop-shadow']) # Apply layer FX @@ -150,12 +168,12 @@ def create_expansion_symbol(self, centered: bool = False) -> None: psd.apply_fx(current_layer, layer_fx) # Rarity background fill - if lay.get('fill') == 'rarity' and 'gradient' in lay: + if lay.get('fill') == 'rarity' and lay.get('gradient'): # Apply fill before rarity psd.rasterize_layer_style(current_layer) fill_layer = psd.fill_expansion_symbol(current_layer, psd.rgb_black()) psd.apply_fx(fill_layer, [lay['gradient']]) - elif 'fill' in lay: + elif lay.get('fill'): psd.rasterize_layer_style(current_layer) fill_layer = psd.fill_expansion_symbol(current_layer, lay['fill']) @@ -164,22 +182,15 @@ def create_expansion_symbol(self, centered: bool = False) -> None: current_layer = psd.merge_layers([current_layer, fill_layer]) # Scale factor - if 'scale' in lay: - current_layer.resize(lay['scale'] * 100, lay['scale'] * 100, ps.AnchorPosition.MiddleRight) - - # Merge all - symbol_layer.move(group, ps.ElementPlacement.PlaceBefore) - symbol_layer.name = "Expansion Symbol Old" - symbol_layer.opacity = 0 - self.expansion_symbol = group.merge() - self.expansion_symbol.name = "Expansion Symbol" + if lay.get('scale'): + current_layer.resize(lay['scale'] * 100, lay['scale'] * 100, self.expansion_symbol_anchor) -def test_symbol(code: str, rarity: str, directory='proxyshop/tests/symbols'): +def test_symbol(code: str, rarity: str, directory='src/tests/symbols'): print(code, rarity.title()) TestTemplate(TestLayout(code, rarity.lower())) psd.save_document_jpeg(f"{code}-{rarity[0].lower()}", directory=directory) - psd.reset_document('expansion_symbol_test.psd') + psd.reset_document() def test_target_symbol(code: str, rarities: list = None): @@ -212,7 +223,7 @@ def big_symbol_test(number: int = 260, rarities: Optional[list] = None): codes = list(con.set_symbols.keys())[-number:] for i, code in enumerate(codes): for rarity in rarities: - test_symbol(code, rarity, directory=f'proxyshop/tests/symbols/{rarity}') + test_symbol(code, rarity, directory=f'src/tests/symbols/{rarity}') """ @@ -221,7 +232,7 @@ def big_symbol_test(number: int = 260, rarities: Optional[list] = None): # Open the document app = ps.Application() -app.open(os.path.join(con.cwd, 'proxyshop/tests/expansion_symbol_test.psd')) +app.open(os.path.join(con.path_tests, 'expansion_symbol_test.psd')) # TEST ONE SYMBOL test_target_symbol('ONC', rarities=['common', 'uncommon', 'rare', 'mythic']) diff --git a/proxyshop/tests/expansion_symbol_test.psd b/src/tests/expansion_symbol_test.psd similarity index 100% rename from proxyshop/tests/expansion_symbol_test.psd rename to src/tests/expansion_symbol_test.psd diff --git a/src/tests/frame_data.py b/src/tests/frame_data.py new file mode 100644 index 00000000..cab22ac4 --- /dev/null +++ b/src/tests/frame_data.py @@ -0,0 +1,893 @@ +""" +FRAME LOGIC TESTS +Credit to Chilli +https://tinyurl.com/chilli-frame-logic-tests +""" +# Change to root directory +import os +import time +from os import path as osp +os.chdir(osp.abspath(osp.join(os.getcwd(), '..', '..'))) + +# Run headless +from src.constants import con +con.headless = True + +# Additional imports +from src.layouts import TransformLayout, MeldLayout, ModalDoubleFacedLayout, layout_map +from src.layouts import NormalLayout +from src.scryfall import card_info + +# TODO: Implement actual pytest assertions +test_cases = { + # Basic test cases - mono colored, normal 'frame' cards + "Healing Salve": { + 'layout': NormalLayout, + 'frame': [con.layers.WHITE, con.layers.WHITE, con.layers.WHITE, False, False] + }, "Ancestral Recall": { + 'layout': NormalLayout, + 'frame': [con.layers.BLUE, con.layers.BLUE, con.layers.BLUE, False, False] + }, "Dark Ritual": { + 'layout': NormalLayout, + 'frame': [con.layers.BLACK, con.layers.BLACK, con.layers.BLACK, False, False] + }, "Lightning Bolt": { + 'layout': NormalLayout, + 'frame': [con.layers.RED, con.layers.RED, con.layers.RED, False, False] + }, "Giant Growth": { + 'layout': NormalLayout, + 'frame': [con.layers.GREEN, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Mono colored cards with 2/C in their cost + "Spectral Procession": { + 'layout': NormalLayout, + 'frame': [con.layers.WHITE, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Advice from the Fae": { + 'layout': NormalLayout, + 'frame': [con.layers.BLUE, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Beseech the Queen": { + 'layout': NormalLayout, + 'frame': [con.layers.BLACK, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Flame Javelin": { + 'layout': NormalLayout, + 'frame': [con.layers.RED, con.layers.RED, con.layers.RED, False, False] + }, + "Tower Above": { + 'layout': NormalLayout, + 'frame': [con.layers.GREEN, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Pacts + "Intervention Pact": { + 'layout': NormalLayout, + 'frame': [con.layers.WHITE, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Pact of Negation": { + 'layout': NormalLayout, + 'frame': [con.layers.BLUE, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Slaughter Pact": { + 'layout': NormalLayout, + 'frame': [con.layers.BLACK, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Pact of the Titan": { + 'layout': NormalLayout, + 'frame': [con.layers.RED, con.layers.RED, con.layers.RED, False, False] + }, + "Summoner's Pact": { + 'layout': NormalLayout, + 'frame': [con.layers.GREEN, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Enchantment creatures + "Heliod, God of the Sun": { + 'layout': NormalLayout, + 'frame': [con.layers.WHITE, con.layers.WHITE, con.layers.WHITE, True, False] + }, + "Thassa, God of the Sea": { + 'layout': NormalLayout, + 'frame': [con.layers.BLUE, con.layers.BLUE, con.layers.BLUE, True, False] + }, + "Erebos, God of the Dead": { + 'layout': NormalLayout, + 'frame': [con.layers.BLACK, con.layers.BLACK, con.layers.BLACK, True, False] + }, + "Purphoros, God of the Forge": { + 'layout': NormalLayout, + 'frame': [con.layers.RED, con.layers.RED, con.layers.RED, True, False] + }, + "Nylea, God of the Hunt": { + 'layout': NormalLayout, + 'frame': [con.layers.GREEN, con.layers.GREEN, con.layers.GREEN, True, False] + }, + + # Suspend cards with no mana cost + "Restore Balance": { + 'layout': NormalLayout, + 'frame': [con.layers.WHITE, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Ancestral Vision": { + 'layout': NormalLayout, + 'frame': [con.layers.BLUE, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Living End": { + 'layout': NormalLayout, + 'frame': [con.layers.BLACK, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Wheel of Fate": { + 'layout': NormalLayout, + 'frame': [con.layers.RED, con.layers.RED, con.layers.RED, False, False] + }, + "Hypergenesis": { + 'layout': NormalLayout, + 'frame': [con.layers.GREEN, con.layers.GREEN, con.layers.GREEN, False, False] + }, + "Lotus Bloom": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + + # Two colored, normal frame cards + "Azorius Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.WU, con.layers.GOLD, False, False] + }, + "Dimir Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.UB, con.layers.GOLD, False, False] + }, + "Rakdos Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.BR, con.layers.GOLD, False, False] + }, + "Gruul Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.RG, con.layers.GOLD, False, False] + }, + "Selesnya Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GW, con.layers.GOLD, False, False] + }, + "Orzhov Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.WB, con.layers.GOLD, False, False] + }, + "Golgari Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.BG, con.layers.GOLD, False, False] + }, + "Simic Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GU, con.layers.GOLD, False, False] + }, + "Izzet Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.UR, con.layers.GOLD, False, False] + }, + "Boros Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.RW, con.layers.GOLD, False, False] + }, + + # Two colored, hybrid frame cards + "Godhead of Awe": { + 'layout': NormalLayout, + 'frame': [con.layers.WU, con.layers.WU, con.layers.LAND, False, False] + }, + "Ghastlord of Fugue": { + 'layout': NormalLayout, + 'frame': [con.layers.UB, con.layers.UB, con.layers.LAND, False, False] + }, + "Demigod of Revenge": { + 'layout': NormalLayout, + 'frame': [con.layers.BR, con.layers.BR, con.layers.LAND, False, False] + }, + "Deus of Calamity": { + 'layout': NormalLayout, + 'frame': [con.layers.RG, con.layers.RG, con.layers.LAND, False, False] + }, + "Oversoul of Dusk": { + 'layout': NormalLayout, + 'frame': [con.layers.GW, con.layers.GW, con.layers.LAND, False, False] + }, + "Divinity of Pride": { + 'layout': NormalLayout, + 'frame': [con.layers.WB, con.layers.WB, con.layers.LAND, False, False] + }, + "Deity of Scars": { + 'layout': NormalLayout, + 'frame': [con.layers.BG, con.layers.BG, con.layers.LAND, False, False] + }, + "Overbeing of Myth": { + 'layout': NormalLayout, + 'frame': [con.layers.GU, con.layers.GU, con.layers.LAND, False, False] + }, + "Dominus of Fealty": { + 'layout': NormalLayout, + 'frame': [con.layers.UR, con.layers.UR, con.layers.LAND, False, False] + }, + "Nobilis of War": { + 'layout': NormalLayout, + 'frame': [con.layers.RW, con.layers.RW, con.layers.LAND, False, False] + }, + + # Two color hybrid frame, no mana cost + "Asmoranomardicadaistinaculdacar": { + 'layout': NormalLayout, + 'frame': [con.layers.BR, con.layers.BR, con.layers.LAND, False, False] + }, + + # Double faced cards + "Insectile Aberration": { + 'layout': TransformLayout, + 'frame': [con.layers.BLUE, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Ravager of the Fells": { + 'layout': TransformLayout, + 'frame': [con.layers.GOLD, con.layers.RG, con.layers.GOLD, False, False] + }, + "Brisela, Voice of Nightmares": { + 'layout': MeldLayout, + 'frame': [con.layers.COLORLESS, con.layers.COLORLESS, con.layers.COLORLESS, False, True] + }, + "Archangel Avacyn": { + 'layout': TransformLayout, + 'frame': [con.layers.WHITE, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Avacyn, the Purifier": { + 'layout': TransformLayout, + 'frame': [con.layers.RED, con.layers.RED, con.layers.RED, False, False] + }, + "Curious Homunculus": { + 'layout': TransformLayout, + 'frame': [con.layers.BLUE, con.layers.BLUE, con.layers.BLUE, False, False]}, + "Voracious Reader": { + 'layout': TransformLayout, + 'frame': [con.layers.COLORLESS, con.layers.COLORLESS, con.layers.COLORLESS, False, True]}, + "Barkchannel Pathway": { + 'layout': ModalDoubleFacedLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False]}, + "Tidechannel Pathway": { + 'layout': ModalDoubleFacedLayout, + 'frame': [con.layers.LAND, con.layers.BLUE, con.layers.BLUE, False, False]}, + "Blex, Vexing Pest": { + 'layout': ModalDoubleFacedLayout, + 'frame': [con.layers.GREEN, con.layers.GREEN, con.layers.GREEN, False, False]}, + "Search for Blex": { + 'layout': ModalDoubleFacedLayout, + 'frame': [con.layers.BLACK, con.layers.BLACK, con.layers.BLACK, False, False]}, + "Extus, Oriq Overlord": { + 'layout': ModalDoubleFacedLayout, + 'frame': [con.layers.GOLD, con.layers.WB, con.layers.GOLD, False, False] + }, + "Awaken the Blood Avatar": { + 'layout': ModalDoubleFacedLayout, + 'frame': [con.layers.GOLD, con.layers.BR, con.layers.GOLD, False, False] + }, + + # Tri colored, normal frame cards + "Esper Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Grixis Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Jund Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Naya Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Bant Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Abzan Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Jeskai Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Sultai Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Mardu Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Temur Charm": { + 'layout': NormalLayout, + 'frame': [con.layers.GOLD, con.layers.GOLD, con.layers.GOLD, False, False] + }, + + # Eldrazi + "Emrakul, the Aeons Torn": { + 'layout': NormalLayout, + 'frame': [con.layers.COLORLESS, con.layers.COLORLESS, con.layers.COLORLESS, False, True] + }, + "Scion of Ugin": { + 'layout': NormalLayout, + 'frame': [con.layers.COLORLESS, con.layers.COLORLESS, con.layers.COLORLESS, False, True] + }, + + # Colorless artifacts + "Herald's Horn": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + "Black Lotus": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + "Mox Pearl": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + "Mox Sapphire": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + "Mox Jet": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + "Mox Ruby": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + "Mox Emerald": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.ARTIFACT, con.layers.ARTIFACT, False, False] + }, + + # Mono colored artifacts + "The Circle of Loyalty": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "The Magic Mirror": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "The Cauldron of Eternity": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Embercleave": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.RED, con.layers.RED, False, False] + }, + "The Great Henge": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Two colored artifacts + "Filigree Angel": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.WU, con.layers.GOLD, False, False] + }, + "Time Sieve": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.UB, con.layers.GOLD, False, False] + }, + "Demonspine Whip": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.BR, con.layers.GOLD, False, False] + }, + "Mage Slayer": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.RG, con.layers.GOLD, False, False] + }, + "Behemoth Sledge": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.GW, con.layers.GOLD, False, False] + }, + "Tainted Sigil": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.WB, con.layers.GOLD, False, False] + }, + "Shardless Agent": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.GU, con.layers.GOLD, False, False] + }, + "Etherium-Horn Sorcerer": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.UR, con.layers.GOLD, False, False] + }, + + # Tri colored artifacts + "Sphinx of the Steel Wind": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Thopter Foundry": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.GOLD, con.layers.GOLD, False, False] + }, + + # Five color artifacts + "Sphinx of the Guildpact": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Reaper King": { + 'layout': NormalLayout, + 'frame': [con.layers.ARTIFACT, con.layers.GOLD, con.layers.GOLD, False, False] + }, + + # Colorless lands with varying rules texts + "Vesuva": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Evolving Wilds": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Karn's Bastion": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Hall of Heliod's Generosity": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Academy Ruins": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Volrath's Stronghold": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Gemstone Caverns": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Glacial Chasm": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Ash Barrens": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Crumbling Vestige": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Blighted Steppe": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Blighted Cataract": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Blighted Fen": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Blighted Gorge": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Blighted Woodland": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Maze's End": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Inventors' Fair": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Myriad Landscape": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Crystal Quarry": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + + # Panoramas + "Esper Panorama": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Grixis Panorama": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Jund Panorama": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Naya Panorama": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + "Bant Panorama": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.LAND, con.layers.LAND, False, False] + }, + + # Mono colored lands that specifically add their color of mana + "Castle Ardenvale": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Castle Vantress": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Castle Locthwain": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Castle Embereth": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RED, con.layers.RED, False, False] + }, + "Castle Garenbrig": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False] + }, + "Serra's Sanctum": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Tolarian Academy": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Cabal Coffers": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Gaea's Cradle": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Mono colored lands with basic lands subtype + "Idyllic Grange": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Mystic Sanctuary": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Witch's Cottage": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Dwarven Mine": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RED, con.layers.RED, False, False] + }, + "Gingerbread Cabin": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Mono colored lands with a multicolor activated ability + "Axgard Armory": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Surtland Frostpyre": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RED, con.layers.RED, False, False] + }, + "Skemfar Elderhall": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Mono colored lands that make all lands X basic land type + "Urborg, Tomb of Yawgmoth": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Yavimaya, Cradle of Growth": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Vivid lands + "Vivid Meadow": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WHITE, con.layers.WHITE, False, False] + }, + "Vivid Creek": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLUE, con.layers.BLUE, False, False] + }, + "Vivid Marsh": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BLACK, con.layers.BLACK, False, False] + }, + "Vivid Crag": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RED, con.layers.RED, False, False] + }, + "Vivid Grove": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Two colored lands that specifically add their colors of mana + "Celestial Colonnade": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WU, con.layers.LAND, False, False] + }, + "Creeping Tar Pit": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.UB, con.layers.LAND, False, False] + }, + "Lavaclaw Reaches": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BR, con.layers.LAND, False, False] + }, + "Raging Ravine": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RG, con.layers.LAND, False, False] + }, + "Stirring Wildwood": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GW, con.layers.LAND, False, False] + }, + "Shambling Vent": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WB, con.layers.LAND, False, False] + }, + "Hissing Quagmire": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BG, con.layers.LAND, False, False] + }, + "Lumbering Falls": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GU, con.layers.LAND, False, False] + }, + "Wandering Fumarole": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.UR, con.layers.LAND, False, False] + }, + "Needle Spires": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RW, con.layers.LAND, False, False] + }, + + # Two colored lands with basic land subtypes + "Hallowed Fountain": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WU, con.layers.LAND, False, False] + }, + "Watery Grave": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.UB, con.layers.LAND, False, False] + }, + "Blood Crypt": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BR, con.layers.LAND, False, False] + }, + "Stomping Ground": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RG, con.layers.LAND, False, False] + }, + "Temple Garden": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GW, con.layers.LAND, False, False] + }, + "Godless Shrine": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WB, con.layers.LAND, False, False] + }, + "Overgrown Tomb": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BG, con.layers.LAND, False, False] + }, + "Breeding Pool": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GU, con.layers.LAND, False, False] + }, + "Steam Vents": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.UR, con.layers.LAND, False, False] + }, + "Sacred Foundry": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RW, con.layers.LAND, False, False] + }, + + # Onslaught/Zendikar fetchlands + "Flooded Strand": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WU, con.layers.LAND, False, False] + }, + "Polluted Delta": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.UB, con.layers.LAND, False, False] + }, + "Bloodstained Mire": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BR, con.layers.LAND, False, False] + }, + "Wooded Foothills": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RG, con.layers.LAND, False, False] + }, + "Windswept Heath": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GW, con.layers.LAND, False, False] + }, + "Marsh Flats": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.WB, con.layers.LAND, False, False] + }, + "Verdant Catacombs": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.BG, con.layers.LAND, False, False] + }, + "Misty Rainforest": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GU, con.layers.LAND, False, False] + }, + "Scalding Tarn": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.UR, con.layers.LAND, False, False] + }, + "Arid Mesa": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.RW, con.layers.LAND, False, False] + }, + + # Other wildcards + "Krosan Verge": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GW, con.layers.LAND, False, False] + }, + "Murmuring Bosk": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GREEN, False, False] + }, + "Dryad Arbor": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GREEN, con.layers.GREEN, False, False] + }, + + # Tri color lands + "Arcane Sanctum": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Crumbling Necropolis": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Savage Lands": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Jungle Shrine": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Seaside Citadel": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Sandsteppe Citadel": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Mystic Monastery": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Opulent Palace": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Nomad Outpost": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Frontier Bivouac": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + + # Gold lands with varying rules text + "Prismatic Vista": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Fabled Passage": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Aether Hub": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "City of Brass": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Mana Confluence": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Ally Encampment": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, + "Command Tower": { + 'layout': NormalLayout, + 'frame': [con.layers.LAND, con.layers.GOLD, con.layers.GOLD, False, False] + }, +} + +# Singular test +""" +test_cases = { + "Asmoranomardicadaistinaculdacar": { + 'layout': NormalLayout, + 'frame': [con.layers.BR, con.layers.BR, con.layers.LAND, False, False] + } +} +""" + +# Test each card +failed = [] +for card, correct_result in test_cases.items(): + # Retrieve scryfall for the card + scryfall = card_info(card) + mock_file_info = { + 'name': card, + 'artist': '', + 'set_code': '', + 'creator': '', + 'filename': '' + } + try: + layout = layout_map[scryfall['layout']](scryfall, mock_file_info) + actual_result = { + 'layout': layout_map[scryfall['layout']], + 'frame': [layout.background, layout.pinlines, layout.twins, layout.is_nyx, layout.is_colorless] + } + except Exception as e: + print(e) + print('Error at:', card) + continue + + # Do the results match? + if not actual_result == correct_result: + print(card) + print('Result:', actual_result) + print('Desired Result:', correct_result) + failed.append({'name': card, 'expected': correct_result, 'actual': actual_result}) + print("==================================") + + # Scryfall rate limit + time.sleep(0.05) + +# Look over any failures +print(failed if failed else "ALL SUCCESSFUL!") diff --git a/src/tests/utility.py b/src/tests/utility.py new file mode 100644 index 00000000..87def142 --- /dev/null +++ b/src/tests/utility.py @@ -0,0 +1,155 @@ +""" +TESTING UTILITY +For contributors and plugin development. +""" +# CORE MODULES +import os + +os.chdir(os.path.abspath(os.path.join(os.getcwd()))) +import colorama +from colorama import Fore +from operator import itemgetter +from time import perf_counter +from typing import Optional, Union, Callable + +import photoshop.api as ps + +from src.constants import con +con.headless = True +import src.helpers as psd + +app = ps.Application() +cID = app.charIDToTypeID +sID = app.stringIDToTypeID + + +""" +TEMPLATE TESTING UTILITIES +""" + + +def test_new_color(new: str, old: Optional[str] = None, ignore: Optional[list[str]] = None): + """ + Enables given color in all necessary groups. Optionally disable a color in those groups. + @param new: Color to enable. + @param old: Color to disable. + @param ignore: Groups to ignore. + @return: + """ + if ignore is None: + ignore = ["Pinlines & Textbox"] + groups = ["Name & Title Boxes", "Legendary Crown", "Pinlines & Textbox", "Background", "PT Box"] + for r in ignore: + groups.remove(r) + for g in groups: + # Enable new color + psd.getLayer(new, g).visible = True + # Disable old color + if old: + psd.getLayer(old, g).visible = False + + +def make_duals( + name="Pinlines & Textbox", + mask_top: Optional[str] = "MASK", + mask_bottom: Optional[str] = None +): + """ + Creates dual color layers for a given group. + @param name: Name of the group. + @param mask_top: Mask to place on top color. + @param mask_bottom: Mask to place on bottom color. + @return: + """ + duals = ["WU", "WB", "RW", "GW", "UB", "UR", "GU", "BR", "BG", "RG"] + group = psd.getLayerSet(name) + mask_top = psd.getLayer(mask_top, group) if mask_top else None + mask_bottom = psd.getLayer(mask_bottom, group) if mask_bottom else None + ref = psd.getLayer("W", group) + + # Loop through each dual + for dual in duals: + # Change layer visibility + top = psd.getLayer(dual[0], group).duplicate(ref, ps.ElementPlacement.PlaceBefore) + bottom = psd.getLayer(dual[1], group).duplicate(top, ps.ElementPlacement.PlaceAfter) + top.visible = True + bottom.visible = True + + # Enable masks + if mask_top: + psd.copy_layer_mask(mask_top, top) + if mask_bottom: + psd.copy_layer_mask(mask_bottom, bottom) + + # Merge the layers and rename + new_layer = psd.merge_layers([top, bottom]) + new_layer.name = dual + + +""" +EXECUTION TIME TESTING +""" + + +def test_execution_time( + new_func: Callable, + old_func: Callable, + iterations=1000, + args_new=None, + args_old=None, + check_result=True +) -> None: + """ + Test the execution time of a new function against an older function. + @param new_func: New callable function to test. + @param old_func: Older callable function to compare against. + @param iterations: How many times to run these functions, higher means better sample size. + @param args_new: Args to pass to the newer function. + @param args_old: Args to pass to the older function. + """ + # Test configuration + if not args_new: + args_new = [] + if not args_old: + args_old = [] + colorama.init(autoreset=True) + results: list[dict[str, Union[None, int, float, str, list]]] = [ + { + 'value': None, + 'average': 0, + 'times': [], + 'type': 'Newer' + }, + { + 'value': None, + 'average': 0, + 'times': [], + 'type': 'Older' + } + ] + + # Test new functionality + for i in range(iterations): + s = perf_counter() + results[0]['value'] = new_func(*args_new) + results[0]['times'].append(perf_counter()-s) + results[0]['average'] = sum(results[0]['times'])/len(results[0]['times']) + + # Test old functionality + for i in range(iterations): + s = perf_counter() + results[1]['value'] = old_func(*args_old) + results[1]['times'].append(perf_counter()-s) + results[1]['average'] = sum(results[1]['times'])/len(results[1]['times']) + + # Report results + for i, res in enumerate(results): + print(f"{res['type']} method: {res['average']}") + + # Compare results + final = sorted(results, key=itemgetter('average')) + print(f"{Fore.GREEN}The {final[0]['type']} method is faster by {final[1]['average']-final[0]['average']} seconds!") + if check_result: + print(f"Results check: {Fore.GREEN+'SUCCESS' if final[0]['value'] == final[1]['value'] else Fore.RED+'FAILED'}") + print(final[0]['value']) + print(final[1]['value']) diff --git a/proxyshop/text_layers.py b/src/text_layers.py similarity index 99% rename from proxyshop/text_layers.py rename to src/text_layers.py index 691d7e65..625aaf01 100644 --- a/proxyshop/text_layers.py +++ b/src/text_layers.py @@ -7,10 +7,10 @@ import photoshop.api as ps from photoshop.api._artlayer import ArtLayer -import proxyshop.helpers as psd -from proxyshop.constants import con -from proxyshop.settings import cfg -from proxyshop import format_text as ft +import src.helpers as psd +from src.constants import con +from src.settings import cfg +from src import format_text as ft # QOL Definitions app = ps.Application() diff --git a/proxyshop/update.py b/src/update.py similarity index 89% rename from proxyshop/update.py rename to src/update.py index 154caf02..9e248ac1 100644 --- a/proxyshop/update.py +++ b/src/update.py @@ -15,7 +15,7 @@ from typing import Callable, Optional import requests -from proxyshop.constants import con +from src.constants import con CHUNK_SIZE = 1024 * 1024 # 1 MB @@ -89,10 +89,7 @@ def download_google( header = con.http_header.copy() # Cookies - cache_dir = osp.join(con.cwd, "tmp") - if not osp.exists(cache_dir): - os.makedirs(cache_dir) - cookies_file = osp.join(cache_dir, "cookies.json") + cookies_file = osp.join(con.path_logs, "cookies.json") if osp.exists(cookies_file) and use_cookies: with open(cookies_file) as f: cookies = json.load(f) @@ -102,7 +99,6 @@ def download_google( # Get file resource while True: res = sess.get(url, headers=header, stream=True, verify=True) - print(res.headers) # Save cookies with open(cookies_file, "w") as f: @@ -204,7 +200,14 @@ def get_temp_file( path: str, url: str, ) -> dict: - # Check for existing Temp file, or setup new one + """ + Check for an existing temporary file or create a new one. + @param res: Planned download request. + @param sess: Current download session. + @param path: Planned path name to the completed download. + @param url: If resumable, url to generate a new download request. + @return: Dict containing temp file path, new download request, and total bytes downloaded. + """ existing_tmp_files = [] header = con.http_header.copy() file_name = osp.basename(path) @@ -243,6 +246,15 @@ def download_file( path: Optional[str] = None, callback: Optional[Callable] = None ) -> bool: + """ + Download file as a temporary file, then rename to its correct filename. + @param file: File path to download to. + @param res: Download request. + @param sess: Download session. + @param path: Final path to save the completed temporary file. + @param callback: Callback to update download progress. + @return: True if download completed without error, otherwise False. + """ # Try to download the file total = int(res.headers.get("Content-Length") or 1) current = int(os.path.getsize(file)) diff --git a/src/utils/enums_photoshop.py b/src/utils/enums_photoshop.py new file mode 100644 index 00000000..a1cd6294 --- /dev/null +++ b/src/utils/enums_photoshop.py @@ -0,0 +1,56 @@ +""" +Enums for Photoshop Actions +""" +from enum import Enum +from typing import Literal, Union + +import photoshop.api as ps +app = ps.Application() +cID = app.charIDToTypeID +sID = app.stringIDToTypeID + + +class Alignment(Enum): + """ + Layer alignment descriptors. + """ + Top: int = int(sID('ADSTops')) + Bottom: int = int(sID('ADSBottoms')) + Left: int = int(sID('ADSLefts')) + Right: int = int(sID('ADSRights')) + CenterHorizontal: int = int(sID('ADSCentersH')) + CenterVertical: int = int(sID('ADSCentersV')) + + +class Stroke(Enum): + """ + Stroke effect descriptors. + """ + Inside: int = int(sID('insetFrame')) + Outside: int = int(sID('outsetFrame')) + Center: int = int(sID('centeredFrame')) + + @staticmethod + def position( + pos: Literal[ + 'in', 'insetFrame', + 'out', 'outsetFrame', + 'center', 'centeredFrame' + ] + ) -> Union[ + 'Stroke.Inside.value', + 'Stroke.Outside.value', + 'Stroke.Center.value' + ]: + """ + Get the proper stroke action enum from canonical user input. + @param pos: "in", "out", or "center" + @return: Proper action descriptor ID. + """ + if pos in ['in', 'insetFrame']: + return Stroke.Inside.value + elif pos in ['out', 'outsetFrame']: + return Stroke.Outside.value + elif pos in ['center', 'centeredFrame']: + return Stroke.Center.value + return Stroke.Outside.value diff --git a/src/utils/files.py b/src/utils/files.py new file mode 100644 index 00000000..9fdddc9a --- /dev/null +++ b/src/utils/files.py @@ -0,0 +1,80 @@ +""" +File Utilities +""" +import json +from configparser import ConfigParser +from os import path as osp + + +def verify_config_fields(ini_file: str, json_file: str): + """ + Validate that all settings fields present in a given json data are present in config file. + If any are missing, add them and return + @param ini_file: Config file to verify contains the proper fields. + @param json_file: Json file containing config fields to check for. + """ + # Track data + data = {} + changed = False + + # Load the json + if not osp.exists(json_file): + return + with open(json_file, "r", encoding="utf-8") as f: + raw = json.load(f) + + # Load the config + conf_file = ConfigParser(allow_no_value=True) + conf_file.optionxform = str + if not osp.exists(ini_file): + # Create a blank file if it doesn't exist + with open(ini_file, "w", encoding="utf-8") as f: + conf_file.write(f) + with open(ini_file, "r", encoding="utf-8") as f: + conf_file.read_file(f) + + # Build a dictionary of the necessary values + for row in raw: + # Add row if it's not a title + if row['type'] == 'title': + continue + data.setdefault(row['section'], []).append({ + 'key': row.get('key', ''), + 'value': row.get('default', 0) + }) + + # Add the data to ini where missing + for section, settings in data.items(): + # Check if the section exists + if not conf_file.has_section(section): + conf_file.add_section(section) + changed = True + # Check if each setting exists + for setting in settings: + if not conf_file.has_option(section, setting['key']): + conf_file.set(section, setting['key'], str(setting['value'])) + changed = True + + # If ini has changed, write changes + if changed: + with open(ini_file, "w", encoding="utf-8") as f: + conf_file.write(f) + + +def get_valid_config_json(json_file: str): + """ + Return valid JSON data for use with settings panel. + @param json_file: Path to json file. + @return: Json string dump of validated data. + """ + # Load the json + with open(json_file, "r", encoding="utf-8") as f: + raw = json.load(f) + + # Remove unsupported keys + for row in raw: + if 'default' in row: + row.pop('default') + + # Return json data + return json.dumps(raw) diff --git a/src/utils/fonts.py b/src/utils/fonts.py new file mode 100644 index 00000000..1514e79b --- /dev/null +++ b/src/utils/fonts.py @@ -0,0 +1,87 @@ +import ctypes +from ctypes import wintypes +import os.path as osp +from typing import Union + +from photoshop.api.enumerations import LayerKind +from photoshop.api._layerSet import LayerSet +from photoshop.api._document import Document +import photoshop.api as ps +from _ctypes import COMError + +app = ps.Application() + + +def register_font(font_path: str) -> bool: + """ + Add FontResource using given font file, refresh Photoshop fonts. + @param font_path: Path to compatible font file. + @return: True if succeeded, False if failed. + """ + result = ctypes.windll.gdi32.AddFontResourceW(osp.abspath(font_path)) + if result != 0: + # Font Resource added successfully + try: + # Notify all programs + print(f"{osp.basename(font_path)} added to font cache!") + hwnd_broadcast = wintypes.HWND(-1) + ctypes.windll.user32.SendMessageW( + hwnd_broadcast, wintypes.UINT(0x001D), wintypes.WPARAM(0), wintypes.LPARAM(0) + ) + app.refreshFonts() + except Exception as e: + print(e) + return True + return False + + +def unregister_font(font_path: str) -> bool: + """ + Remove FontResource using given font file, refresh Photoshop fonts. + @param font_path: Path to compatible font file. + @return: True if succeeded, False if failed. + """ + result = ctypes.windll.gdi32.RemoveFontResourceW(osp.abspath(font_path)) + if result != 0: + # Font Resource removed successfully + try: + # Notify all programs + print(f"{osp.basename(font_path)} removed from font cache!") + hwnd_broadcast = wintypes.HWND(-1) + ctypes.windll.user32.SendMessageW( + hwnd_broadcast, wintypes.UINT(0x001D), wintypes.WPARAM(0), wintypes.LPARAM(0) + ) + app.refreshFonts() + except Exception as e: + print(e) + return True + return False + + +def get_all_fonts(container: Union[Document, LayerSet]) -> set: + """ + Get a list of all fonts used in a given Photoshop Document or LayerSet. + @param container: Photoshop Document or LayerSet object. + @return: Unique list of font names. + """ + fonts = set() + for layer in container.artLayers: + if layer.kind == LayerKind.TextLayer: + fonts.add(layer.textItem.font) + for group in container.layerSets: + fonts |= get_all_fonts(group) + return fonts + + +def check_fonts(fonts: list) -> list: + """ + Check the name and postScriptName of every installed font against a given font list. + @return: Array of missing fonts or [] + """ + for f in app.fonts: + try: + if f.postScriptName in fonts: + fonts.remove(f.postScriptName) + except COMError: + continue + return fonts diff --git a/src/utils/strings.py b/src/utils/strings.py new file mode 100644 index 00000000..d4331cb2 --- /dev/null +++ b/src/utils/strings.py @@ -0,0 +1,71 @@ +""" +Utility Helpers Module +""" +import unicodedata +import string + +import photoshop.api as ps +from packaging.version import parse + +from src.constants import con + +""" +STRING UTILITIES +""" + + +def normalize_str(st: str, no_space: bool = False) -> str: + """ + Normalizes a string for safe comparison. + @param st: String to normalize. + @param no_space: Remove spaces. + @return: Normalized string. + """ + # Ignore accents and unusual characters, all lowercase + st = unicodedata.normalize("NFD", st).encode("ascii", "ignore").decode("utf8").lower() + + # Remove spaces? + if no_space: + st = st.replace(' ', '') + + # Remove punctuation + return st.translate(str.maketrans("", "", string.punctuation)) + + +def ps_version_check(check_version: str) -> bool: + """ + Checks that current Photoshop version matches or exceeds given value. + @param check_version: Version to meet or exceed. + @return: True or False + """ + current_version = ps.Application().version + if parse(current_version) >= parse(check_version): + return True + return False + + +def msg_error(msg: str) -> str: + """ + Adds unified error color tag to Proxyshop console message. + @param msg: String to add tag to. + @return: Formatted string. + """ + return f'[color={con.console_message_error}]{msg}[/color]' + + +def msg_warn(msg: str) -> str: + """ + Adds unified warning color tag to Proxyshop console message. + @param msg: String to add tag to. + @return: Formatted string. + """ + return f'[color={con.console_message_warning}]{msg}[/color]' + + +def msg_success(msg: str) -> str: + """ + Adds unified success color tag to Proxyshop console message. + @param msg: String to add tag to. + @return: Formatted string. + """ + return f'[color={con.console_message_success}]{msg}[/color]' diff --git a/src/utils/types_photoshop.py b/src/utils/types_photoshop.py new file mode 100644 index 00000000..7c8b4b8b --- /dev/null +++ b/src/utils/types_photoshop.py @@ -0,0 +1,71 @@ +""" +Types for Photoshop Actions +""" +from typing import TypedDict, Literal, Union + +from photoshop.api import SolidColor +from typing_extensions import NotRequired + +""" +LAYER EFFECTS +""" + + +class EffectStroke(TypedDict): + """ + Layer Effect - Stroke + """ + type: Literal['stroke'] + weight: NotRequired[int] + color: SolidColor + opacity: NotRequired[int] + style: Literal[ + 'in', 'insetFrame', + 'out', 'outsetFrame', + 'center', 'centeredFrame' + ] + + +class EffectDropShadow(TypedDict): + """ + Layer Effect - Drop Shadow + """ + type: Literal['drop-shadow'] + opacity: NotRequired[int] + rotation: NotRequired[int] + distance: NotRequired[int] + spread: NotRequired[int] + size: NotRequired[int] + + +class EffectGradientColor(TypedDict): + """ + An individual color within a Gradient Layer Effect. + """ + color: SolidColor + location: NotRequired[int] + midpoint: NotRequired[int] + + +class EffectGradientOverlay(TypedDict): + """ + Layer Effect - Drop Shadow + """ + type: Literal['gradient-overlay'] + size: NotRequired[int] + scale: NotRequired[int] + rotation: NotRequired[int] + opacity: NotRequired[int] + colors: list[EffectGradientColor] + + +class EffectColorOverlay(TypedDict): + """ + Layer Effect - Color Overlay + """ + type: Literal['color-overlay'] + opacity: NotRequired[int] + color: SolidColor + + +LayerEffects = Union[EffectStroke, EffectDropShadow, EffectGradientOverlay, EffectColorOverlay]