summaryrefslogtreecommitdiff
path: root/keyboard/ergodox_ez/keymaps/german-manuneo
diff options
context:
space:
mode:
Diffstat (limited to 'keyboard/ergodox_ez/keymaps/german-manuneo')
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py710
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/compiled.hex1274
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c783
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md188
4 files changed, 0 insertions, 2955 deletions
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
deleted file mode 100644
index 7076a6ecb2..0000000000
--- a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
+++ /dev/null
@@ -1,710 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""Compiler for keymap.c files
-
-This scrip will generate a keymap.c file from a simple
-markdown file with a specific layout.
-
-Usage:
- python compile_keymap.py INPUT_PATH [OUTPUT_PATH]
-"""
-from __future__ import division
-from __future__ import print_function
-from __future__ import absolute_import
-from __future__ import unicode_literals
-
-import os
-import io
-import re
-import sys
-import json
-import unicodedata
-import collections
-import itertools as it
-
-PY2 = sys.version_info.major == 2
-
-if PY2:
- chr = unichr
-
-
-KEYBOARD_LAYOUTS = {
- # These map positions in the parsed layout to
- # positions in the KEYMAP MATRIX
- 'ergodox_ez': [
- [ 0, 1, 2, 3, 4, 5, 6], [38, 39, 40, 41, 42, 43, 44],
- [ 7, 8, 9, 10, 11, 12, 13], [45, 46, 47, 48, 49, 50, 51],
- [14, 15, 16, 17, 18, 19 ], [ 52, 53, 54, 55, 56, 57],
- [20, 21, 22, 23, 24, 25, 26], [58, 59, 60, 61, 62, 63, 64],
- [27, 28, 29, 30, 31 ], [ 65, 66, 67, 68, 69],
- [ 32, 33], [70, 71 ],
- [ 34], [72 ],
- [ 35, 36, 37], [73, 74, 75 ],
- ]
-}
-
-ROW_INDENTS = {
- 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
-}
-
-BLANK_LAYOUTS = [
-# Compact Layout
-"""
-.------------------------------------.------------------------------------.
-| | | | | | | | | | | | | | |
-!-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
-| | | | | | | | | | | | | | |
-!-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
-| | | | | | |-----!-----! | | | | | |
-!-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
-| | | | | | | | | | | | | | |
-'-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | | | | | ! | | | | |
- '------------------------' '------------------------'
- .-----------. .-----------.
- | | | ! | |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | | ! | ! !
- ! ! !-----! !-----! ! !
- | | | | ! | | |
- '-----------------' '-----------------'
-""",
-
-# Wide Layout
-"""
-.---------------------------------------------. .---------------------------------------------.
-| | | | | | | | ! | | | | | | |
-!-------+-----+-----+-----+-----+-------------! !-------+-----+-----+-----+-----+-----+-------!
-| | | | | | | | ! | | | | | | |
-!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
-| | | | | | |-------! !-------! | | | | | |
-!-------+-----+-----+-----x-----x-----! ! ! !-----x-----x-----+-----+-----+-------!
-| | | | | | | | ! | | | | | | |
-'-------+-----+-----+-----+-----+-------------' '-------------+-----+-----+-----+-----+-------'
- | | | | | | ! | | | | |
- '------------------------------' '------------------------------'
- .---------------. .---------------.
- | | | ! | |
- .-------+-------+-------! !-------+-------+-------.
- ! ! | | ! | ! !
- ! ! !-------! !-------! ! !
- | | | | ! | | |
- '-----------------------' '-----------------------'
-""",
-]
-
-
-DEFAULT_CONFIG = {
- "keymaps_includes": [
- "keymap_common.h",
- ],
- 'filler': "-+.'!:x",
- 'separator': "|",
- 'default_key_prefix': ["KC_"],
-}
-
-
-SECTIONS = [
- 'layout_config',
- 'layers',
-]
-
-
-# Markdown Parsing
-
-ONELINE_COMMENT_RE = re.compile(r"""
- ^ # comment must be at the start of the line
- \s* # arbitrary whitespace
- // # start of the comment
- (.*) # the comment
- $ # until the end of line
-""", re.MULTILINE | re.VERBOSE
-)
-
-INLINE_COMMENT_RE = re.compile(r"""
- ([\,\"\[\]\{\}\d]) # anythig that might end a expression
- \s+ # comment must be preceded by whitespace
- // # start of the comment
- \s # and succeded by whitespace
- (?:[^\"\]\}\{\[]*) # the comment (except things which might be json)
- $ # until the end of line
-""", re.MULTILINE | re.VERBOSE)
-
-TRAILING_COMMA_RE = re.compile(r"""
- , # the comma
- (?:\s*) # arbitrary whitespace
- $ # only works if the trailing comma is followed by newline
- (\s*) # arbitrary whitespace
- ([\]\}]) # end of an array or object
-""", re.MULTILINE | re.VERBOSE)
-
-
-def loads(raw_data):
- if isinstance(raw_data, bytes):
- raw_data = raw_data.decode('utf-8')
-
- raw_data = ONELINE_COMMENT_RE.sub(r"", raw_data)
- raw_data = INLINE_COMMENT_RE.sub(r"\1", raw_data)
- raw_data = TRAILING_COMMA_RE.sub(r"\1\2", raw_data)
- return json.loads(raw_data)
-
-
-def parse_config(path):
- def reset_section():
- section.update({
- 'name': section.get('name', ""),
- 'sub_name': "",
- 'start_line': -1,
- 'end_line': -1,
- 'code_lines': [],
- })
-
- def start_section(line_index, line):
- end_section()
- if line.startswith("# "):
- name = line[2:]
- elif line.startswith("## "):
- name = line[3:]
- else:
- name = ""
-
- name = name.strip().replace(" ", "_").lower()
- if name in SECTIONS:
- section['name'] = name
- else:
- section['sub_name'] = name
- section['start_line'] = line_index
-
- def end_section():
- if section['start_line'] >= 0:
- if section['name'] == 'layout_config':
- config.update(loads("\n".join(
- section['code_lines']
- )))
- elif section['sub_name'].startswith('layer'):
- layer_name = section['sub_name']
- config['layer_lines'][layer_name] = section['code_lines']
-
- reset_section()
-
- def amend_section(line_index, line):
- section['end_line'] = line_index
- section['code_lines'].append(line)
-
- config = DEFAULT_CONFIG.copy()
- config.update({
- 'layer_lines': collections.OrderedDict(),
- 'macro_ids': {'UM'},
- 'unicode_macros': {},
- })
-
- section = {}
- reset_section()
-
- with io.open(path, encoding="utf-8") as fh:
- for i, line in enumerate(fh):
- if line.startswith("#"):
- start_section(i, line)
- elif line.startswith(" "):
- amend_section(i, line[4:])
- else:
- # TODO: maybe parse description
- pass
-
- end_section()
- assert 'layout' in config
- return config
-
-# header file parsing
-
-IF0_RE = re.compile(r"""
- ^
- #if 0
- $.*?
- #endif
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-COMMENT_RE = re.compile(r"""
- /\*
- .*?
- \*/"
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-def read_header_file(path):
- with io.open(path, encoding="utf-8") as fh:
- data = fh.read()
- data, _ = COMMENT_RE.subn("", data)
- data, _ = IF0_RE.subn("", data)
- return data
-
-
-def regex_partial(re_str_fmt, flags):
- def partial(*args, **kwargs):
- re_str = re_str_fmt.format(*args, **kwargs)
- return re.compile(re_str, flags)
- return partial
-
-
-KEYDEF_REP = regex_partial(r"""
- #define
- \s
- (
- (?:{}) # the prefixes
- (?:\w+) # the key name
- ) # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-ENUM_RE = re.compile(r"""
- (
- enum
- \s\w+\s
- \{
- .*? # the enum content
- \}
- ;
- ) # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-ENUM_KEY_REP = regex_partial(r"""
- (
- {} # the prefixes
- \w+ # the key name
- ) # capture group end
-""", re.MULTILINE | re.DOTALL | re.VERBOSE)
-
-
-def parse_keydefs(config, data):
- prefix_options = "|".join(config['key_prefixes'])
- keydef_re = KEYDEF_REP(prefix_options)
- enum_key_re = ENUM_KEY_REP(prefix_options)
- for match in keydef_re.finditer(data):
- yield match.groups()[0]
-
- for enum_match in ENUM_RE.finditer(data):
- enum = enum_match.groups()[0]
- for key_match in enum_key_re.finditer(enum):
- yield key_match.groups()[0]
-
-
-def parse_valid_keys(config, out_path):
- basepath = os.path.abspath(os.path.join(os.path.dirname(out_path)))
- dirpaths = []
- subpaths = []
- while len(subpaths) < 6:
- path = os.path.join(basepath, *subpaths)
- dirpaths.append(path)
- dirpaths.append(os.path.join(path, "tmk_core", "common"))
- dirpaths.append(os.path.join(path, "quantum"))
- subpaths.append('..')
-
- includes = set(config['keymaps_includes'])
- includes.add("keycode.h")
-
- valid_keycodes = set()
- for dirpath, include in it.product(dirpaths, includes):
- include_path = os.path.join(dirpath, include)
- if os.path.exists(include_path):
- header_data = read_header_file(include_path)
- valid_keycodes.update(
- parse_keydefs(config, header_data)
- )
- return valid_keycodes
-
-
-# Keymap Parsing
-
-def iter_raw_codes(layer_lines, filler, separator):
- filler_re = re.compile("[" + filler + " ]")
- for line in layer_lines:
- line, _ = filler_re.subn("", line.strip())
- if not line:
- continue
- codes = line.split(separator)
- for code in codes[1:-1]:
- yield code
-
-
-def iter_indexed_codes(raw_codes, key_indexes):
- key_rows = {}
- key_indexes_flat = []
-
- for row_index, key_indexes in enumerate(key_indexes):
- for key_index in key_indexes:
- key_rows[key_index] = row_index
- key_indexes_flat.extend(key_indexes)
- assert len(raw_codes) == len(key_indexes_flat)
- for raw_code, key_index in zip(raw_codes, key_indexes_flat):
- # we keep track of the row mostly for layout purposes
- yield raw_code, key_index, key_rows[key_index]
-
-
-LAYER_CHANGE_RE = re.compile(r"""
- (DF|TG|MO)\(\d+\)
-""", re.VERBOSE)
-
-
-MACRO_RE = re.compile(r"""
- M\(\w+\)
-""", re.VERBOSE)
-
-
-UNICODE_RE = re.compile(r"""
- U[0-9A-F]{4}
-""", re.VERBOSE)
-
-
-NON_CODE = re.compile(r"""
- ^[^A-Z0-9_]$
-""", re.VERBOSE)
-
-
-def parse_uni_code(raw_code):
- macro_id = "UC_" + (
- unicodedata.name(raw_code)
- .replace(" ", "_")
- .replace("-", "_")
- )
- code = "M({})".format(macro_id)
- uc_hex = "{:04X}".format(ord(raw_code))
- return code, macro_id, uc_hex
-
-
-def parse_key_code(raw_code, key_prefixes, valid_keycodes):
- if raw_code in valid_keycodes:
- return raw_code
-
- for prefix in key_prefixes:
- code = prefix + raw_code
- if code in valid_keycodes:
- return code
-
-
-def parse_code(raw_code, key_prefixes, valid_keycodes):
- if not raw_code:
- return 'KC_TRNS', None, None
-
- if LAYER_CHANGE_RE.match(raw_code):
- return raw_code, None, None
-
- if MACRO_RE.match(raw_code):
- macro_id = raw_code[2:-1]
- return raw_code, macro_id, None
-
- if UNICODE_RE.match(raw_code):
- hex_code = raw_code[1:]
- return parse_uni_code(chr(int(hex_code, 16)))
-
- if NON_CODE.match(raw_code):
- return parse_uni_code(raw_code)
-
- code = parse_key_code(raw_code, key_prefixes, valid_keycodes)
- return code, None, None
-
-
-def parse_keymap(config, key_indexes, layer_lines, valid_keycodes):
- keymap = {}
- raw_codes = list(iter_raw_codes(
- layer_lines, config['filler'], config['separator']
- ))
- indexed_codes = iter_indexed_codes(raw_codes, key_indexes)
- key_prefixes = config['key_prefixes']
- for raw_code, key_index, row_index in indexed_codes:
- code, macro_id, uc_hex = parse_code(
- raw_code, key_prefixes, valid_keycodes
- )
- # TODO: line numbers for invalid codes
- err_msg = "Could not parse key '{}' on row {}".format(
- raw_code, row_index
- )
- assert code is not None, err_msg
- # print(repr(raw_code), repr(code), macro_id, uc_hex)
- if macro_id:
- config['macro_ids'].add(macro_id)
- if uc_hex:
- config['unicode_macros'][macro_id] = uc_hex
- keymap[key_index] = (code, row_index)
- return keymap
-
-
-def parse_keymaps(config, valid_keycodes):
- keymaps = collections.OrderedDict()
- key_indexes = config.get(
- 'key_indexes', KEYBOARD_LAYOUTS[config['layout']]
- )
- # TODO: maybe validate key_indexes
-
- for layer_name, layer_lines, in config['layer_lines'].items():
- keymaps[layer_name] = parse_keymap(
- config, key_indexes, layer_lines, valid_keycodes
- )
- return keymaps
-
-# keymap.c output
-
-USERCODE = """
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
-
- ergodox_board_led_off();
- ergodox_right_led_1_off();
- ergodox_right_led_2_off();
- ergodox_right_led_3_off();
- switch (layer) {
- case L1:
- ergodox_right_led_1_on();
- break;
- case L2:
- ergodox_right_led_2_on();
- break;
- case L3:
- ergodox_right_led_3_on();
- break;
- case L4:
- ergodox_right_led_1_on();
- ergodox_right_led_2_on();
- break;
- case L5:
- ergodox_right_led_1_on();
- ergodox_right_led_3_on();
- break;
- // case L6:
- // ergodox_right_led_2_on();
- // ergodox_right_led_3_on();
- // break;
- // case L7:
- // ergodox_right_led_1_on();
- // ergodox_right_led_2_on();
- // ergodox_right_led_3_on();
- // break;
- default:
- ergodox_board_led_off();
- break;
- }
-};
-"""
-
-MACROCODE = """
-#define UC_MODE_WIN 0
-#define UC_MODE_LINUX 1
-#define UC_MODE_OSX 2
-
-// TODO: allow default mode to be configured
-static uint16_t unicode_mode = UC_MODE_WIN;
-
-uint16_t hextokeycode(uint8_t hex) {{
- if (hex == 0x0) {{
- return KC_P0;
- }}
- if (hex < 0xA) {{
- return KC_P1 + (hex - 0x1);
- }}
- return KC_A + (hex - 0xA);
-}}
-
-void unicode_action_function(uint16_t hi, uint16_t lo) {{
- switch (unicode_mode) {{
- case UC_MODE_WIN:
- register_code(KC_LALT);
-
- register_code(KC_PPLS);
- unregister_code(KC_PPLS);
-
- register_code(hextokeycode((hi & 0xF0) >> 4));
- unregister_code(hextokeycode((hi & 0xF0) >> 4));
- register_code(hextokeycode((hi & 0x0F)));
- unregister_code(hextokeycode((hi & 0x0F)));
- register_code(hextokeycode((lo & 0xF0) >> 4));
- unregister_code(hextokeycode((lo & 0xF0) >> 4));
- register_code(hextokeycode((lo & 0x0F)));
- unregister_code(hextokeycode((lo & 0x0F)));
-
- unregister_code(KC_LALT);
- break;
- case UC_MODE_LINUX:
- register_code(KC_LCTL);
- register_code(KC_LSFT);
-
- register_code(KC_U);
- unregister_code(KC_U);
-
- register_code(hextokeycode((hi & 0xF0) >> 4));
- unregister_code(hextokeycode((hi & 0xF0) >> 4));
- register_code(hextokeycode((hi & 0x0F)));
- unregister_code(hextokeycode((hi & 0x0F)));
- register_code(hextokeycode((lo & 0xF0) >> 4));
- unregister_code(hextokeycode((lo & 0xF0) >> 4));
- register_code(hextokeycode((lo & 0x0F)));
- unregister_code(hextokeycode((lo & 0x0F)));
-
- unregister_code(KC_LCTL);
- unregister_code(KC_LSFT);
- break;
- case UC_MODE_OSX:
- break;
- }}
-}}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {{
- if (!record->event.pressed) {{
- return MACRO_NONE;
- }}
- // MACRODOWN only works in this function
- switch(id) {{
- case UM:
- unicode_mode = (unicode_mode + 1) % 2;
- break;
-{macro_cases}
-{unicode_macro_cases}
- default:
- break;
- }}
- return MACRO_NONE;
-}};
-"""
-
-
-UNICODE_MACRO_TEMPLATE = """
-case {macro_id}:
- unicode_action_function(0x{hi:02x}, 0x{lo:02x});
- break;
-""".strip()
-
-
-def unicode_macro_cases(config):
- for macro_id, uc_hex in config['unicode_macros'].items():
- hi = int(uc_hex, 16) >> 8
- lo = int(uc_hex, 16) & 0xFF
- unimacro_keys = ", ".join(
- "T({})".format(
- "KP_" + digit if digit.isdigit() else digit
- ) for digit in uc_hex
- )
- yield UNICODE_MACRO_TEMPLATE.format(
- macro_id=macro_id, hi=hi, lo=lo
- )
-
-
-def iter_keymap_lines(keymap, row_indents=None):
- col_widths = {}
- col = 0
- # first pass, figure out the column widths
- prev_row_index = None
- for code, row_index in keymap.values():
- if row_index != prev_row_index:
- col = 0
- if row_indents:
- col = row_indents[row_index]
- col_widths[col] = max(len(code), col_widths.get(col, 0))
- prev_row_index = row_index
- col += 1
-
- # second pass, yield the cell values
- col = 0
- prev_row_index = None
- for key_index in sorted(keymap):
- code, row_index = keymap[key_index]
- if row_index != prev_row_index:
- col = 0
- yield "\n"
- if row_indents:
- for indent_col in range(row_indents[row_index]):
- pad = " " * (col_widths[indent_col] - 4)
- yield (" /*-*/" + pad)
- col = row_indents[row_index]
- else:
- yield pad
- yield " {}".format(code)
- if key_index < len(keymap) - 1:
- yield ","
- # This will be yielded on the next iteration when
- # we know that we're not at the end of a line.
- pad = " " * (col_widths[col] - len(code))
- prev_row_index = row_index
- col += 1
-
-
-def iter_keymap_parts(config, keymaps):
- # includes
- for include_path in config['keymaps_includes']:
- yield '#include "{}"\n'.format(include_path)
-
- yield "\n"
-
- # definitions
- for i, macro_id in enumerate(sorted(config['macro_ids'])):
- yield "#define {} {}\n".format(macro_id, i)
-
- yield "\n"
-
- for i, layer_name in enumerate(config['layer_lines']):
- yield '#define L{0:<3} {0:<5} // {1}\n'.format(i, layer_name)
-
- yield "\n"
-
- # keymaps
- yield "const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {\n"
-
- for i, layer_name in enumerate(config['layer_lines']):
- # comment
- layer_lines = config['layer_lines'][layer_name]
- prefixed_lines = " * " + " * ".join(layer_lines)
- yield "/*\n{} */\n".format(prefixed_lines)
-
- # keymap codes
- keymap = keymaps[layer_name]
- row_indents = ROW_INDENTS.get(config['layout'])
- keymap_lines = "".join(iter_keymap_lines(keymap, row_indents))
- yield "[L{0}] = KEYMAP({1}\n),\n".format(i, keymap_lines)
-
- yield "};\n\n"
-
- # no idea what this is for
- yield "const uint16_t PROGMEM fn_actions[] = {};\n"
-
- # macros
- yield MACROCODE.format(
- macro_cases="",
- unicode_macro_cases="\n".join(unicode_macro_cases(config)),
- )
-
- # TODO: dynamically create blinking lights
- yield USERCODE
-
-
-def main(argv=sys.argv[1:]):
- if not argv or '-h' in argv or '--help' in argv:
- print(__doc__)
- return 0
-
- in_path = os.path.abspath(argv[0])
- if not os.path.exists(in_path):
- print("No such file '{}'".format(in_path))
- return 1
-
- if len(argv) > 1:
- out_path = os.path.abspath(argv[1])
- else:
- dirname = os.path.dirname(in_path)
- out_path = os.path.join(dirname, "keymap.c")
-
- config = parse_config(in_path)
- valid_keys = parse_valid_keys(config, out_path)
- keymaps = parse_keymaps(config, valid_keys)
-
- with io.open(out_path, mode="w", encoding="utf-8") as fh:
- for part in iter_keymap_parts(config, keymaps):
- fh.write(part)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compiled.hex b/keyboard/ergodox_ez/keymaps/german-manuneo/compiled.hex
deleted file mode 100644
index bef079b16a..0000000000
--- a/keyboard/ergodox_ez/keymaps/german-manuneo/compiled.hex
+++ /dev/null
@@ -1,1274 +0,0 @@
-:100000000C9427040C946B040C946B040C946B04F8
-:100010000C946B040C946B040C946B040C946B04A4
-:100020000C946B040C946B040C9403110C94D51178
-:100030000C946B040C946B040C946B040C946B0484
-:100040000C946B040C94DF250C946B040C946B04DF
-:100050000C946B040C94721F0C946B040C946B0442
-:100060000C946B040C946B040C946B040C946B0454
-:100070000C946B040C946B040C946B040C946B0444
-:100080000C946B040C946B040C946B040C946B0434
-:100090000C946B040C946B040C946B040C946B0424
-:1000A0000C946B040C946B040C946B040F08DC0729
-:1000B000C707210848087B085D0863087808A60878
-:1000C0009B0866089E08B20757088F089808D9074A
-:1000D000D0071E081508FD07D30792072A088008D5
-:1000E00089089508030833081208AC0786085108E8
-:1000F000F40709080008E8078C08F7079D0754086B
-:10010000EE072D088C071808CA07B807E207DF07B3
-:10011000360806087208A307F1071B088F07240892
-:100120006F0875083F08C1075A08AF07D607BB0715
-:1001300030086008A10895070C08270869083908E5
-:10014000BE0792084E08A907FA07C4074508CD075D
-:100150006C08A6073C084B089807B507AB0883084E
-:10016000E507A0074208EB0780074212641252130A
-:1001700064125213A912CC12521321133413031612
-:1001800003163216321668168816B917B917931661
-:10019000B91743174317AA17B917B917B317501749
-:1001A0005017501750175017501750175017501717
-:1001B00050175017501750175017501750176217F5
-:1001C0006F1776177D178717055204520152035295
-:1001D000010000001E001B0018002F000100290074
-:1001E0001F0013000C003300E300E10020000900B1
-:1001F00004003400E2002A0021001A000800060072
-:10020000E000650022000A00120019000000490009
-:100210002E004A0000004D00000002542E0202543D
-:1002200000002B0000005E3023000B0016000500CC
-:1002300000004C0024000D0011001000E4004B00F1
-:1002400025000E0015003600E6002C0026000F00E9
-:100250001700370050002800270014000700520044
-:1002600051004E0035001C002D001D004F00000005
-:100270000100010001000100010000001E02300227
-:1002800038020100010001001F0264143800300030
-:1002900001000100200224022302270201000100C4
-:1002A000010024142514010001000100010027149D
-:1002B00026140100000001000100010000000100FF
-:1002C0000000010001000100000001000000010029
-:1002D0000100310021022D14000001000100640022
-:1002E00025022202010001000100640226023602FA
-:1002F0000100010001000100301437023830010014
-:1003000035021F02310255300230010001000100A8
-:100310002D0201003D30000001000100010001003C
-:10032000010000003A00010001000100010001008D
-:100330003B00010001000100010001003C00010040
-:1003400001000100010001003D0001000100010069
-:10035000010001003E000100010001000000010059
-:100360004400010000000100000001004500010000
-:1003700000005300000001003F00010001000100E7
-:100380000000010040005F005C00590062000100B5
-:10039000410060005D005A008500010042006100DC
-:1003A0005E005B00630001004300550056005700EB
-:1003B0005800010067005400560057005800000024
-:1003C0000100010001000100010000004D30393042
-:1003D00001005B3001000100513058303C303B30AF
-:1003E000010001005030013014145D3001000100A3
-:1003F0004A30593008145C30010001004930573050
-:100400000430003000000100053001000000010050
-:1004100000000100010001000000010000000100D7
-:100420004F305A3037301E02000001004E300100BC
-:100430004B30010001000100483056305430533039
-:10044000010001004C30010003303A30010001008E
-:100450005230010001000100010001000100010013
-:100460000100010001000000010001000100010085
-:100470000100000042302030343001000100010052
-:1004800046302E30263033300100010045302D300B
-:100490001E3001000100010040302B3022300100ED
-:1004A000010001003F3025302C3001000000010028
-:1004B0000100010000000100000001000100010036
-:1004C00000000100000001004430233031301F30B3
-:1004D00000000100433035302A302930010001008E
-:1004E0003E3027303030010001000100413028301B
-:1004F00032300100010001004730010021300100CD
-:10050000010001000100363024302F3001000000CE
-:10051000010001000100010001000000010008309D
-:100520001B30010001000100010015300D301A30B0
-:10053000010001000100143006300100010001003B
-:10054000010012300A3001000100010001000C30EE
-:100550001330010000000100010001000000010053
-:100560000000010001000100000001000000010086
-:1005700001000B30183007300000010001001C3072
-:10058000113010300100010001000E301730010061
-:100590000100010001000F301930010001000100CD
-:1005A00001000100093001000100010001001D30BF
-:1005B00001001630010000000100010001000100EF
-:1005C0000100000001000100010001000100010024
-:1005D0000100010001000100010001000100010013
-:1005E0000100010001000100010001000100010003
-:1005F00001000100010001000100010000000100F4
-:1006000001000100000001000000010001000100E4
-:1006100000000100000001000100010001000100D4
-:1006200000000100010001000100010001000100C3
-:1006300001000100010001000100010001000100B2
-:1006400001000100010001000100010001000100A2
-:100650000100010001000100010001000100000093
-:1006600016034500720067006F0044006F007800B9
-:10067000200045005A000000160345007200670084
-:100680006F0044006F007800200045005A00000011
-:100690000403090409026D00040100A0FA09040022
-:1006A000000103010100092111010001223F00079F
-:1006B00005810308000A0904010001030102000981
-:1006C0002111010001224D000705820308000A09DB
-:1006D000040200010300000009211101000122367B
-:1006E000000705830308000A090403000103000052
-:1006F00000092111010001223900070584031000BF
-:10070000011201100100000008EDFE0713010001B5
-:1007100002000105010906A101050719E029E715F5
-:100720000025019508750181020508190129059523
-:1007300005750191029501750391010507190029BD
-:100740007715002501957875018102C005010980A2
-:10075000A101850216010026B7001A01002AB70080
-:10076000751095018100C0050C0901A101850316D2
-:100770000100269C021A01002A9C02751095018135
-:1007800000C005010902A1010901A1000509190123
-:10079000290515002501950575018102950175034F
-:1007A00081010501093009311581257F9502750800
-:1007B000810609381581257F950175088106050C8C
-:1007C0000A38021581257F950175088106C0C0058C
-:1007D000010906A101050719E029E7150025019582
-:1007E0000875018102950175088101050819012923
-:1007F000059505750191029501750391010507198C
-:100800000029FF150025FF950675088100C000002E
-:10081000000000000000000000010204060A0F179B
-:10082000202C3A4A5D71879DB3C7DAE9F5FCFFFCDD
-:10083000F5E9DAC7B39D87715D4A3A2C20170F0A94
-:100840000604020100000000000000000000112466
-:100850001FBECFEFDAE0DEBFCDBF04B603FE24C07B
-:100860008091FD019091FE01A091FF01B0910002E5
-:100870008730904BA740B04BB9F41092FD01109215
-:10088000FE011092FF011092000214BE84B7877F10
-:1008900084BF88E10FB6F8948093600010926000E6
-:1008A0000FBEE0E0FFE3099511E0A0E0B1E0ECE469
-:1008B000FFE402C005900D92A433B107D9F711E00F
-:1008C000A4E3B1E001C01D92AD3FB107E1F70E9482
-:1008D000470E0C94A4270C9400001092B9008AE0F3
-:1008E0008093B800089594EA9093BC009091BC0066
-:1008F00097FFFCCF9091B900987F983021F090310C
-:1009000011F081E008958093BB0084E88093BC00DF
-:100910008091BC0087FFFCCF8091B900887F88312F
-:1009200011F0803471F780E0089584E98093BC0071
-:100930008091BC0084FDFCCF08958093BB0084E8C7
-:100940008093BC008091BC0087FFFCCF9091B900E0
-:10095000987F81E0983209F480E0089584E88093DC
-:10096000BC008091BC0087FFFCCF8091BB00089544
-:1009700080910101811115C080E40E94730480936D
-:10098000010181110CC082E10E949D04809301014C
-:10099000811105C08FEF0E949D04809301010E9488
-:1009A000950484B1807F84B985B1807F85B98AB18F
-:1009B000837F8AB98BB1837F8BB93E98469808951F
-:1009C0000E947306809301010E94B80480B38C706A
-:1009D00080BB81B3836F81BBA5E3B1E0E3E4F1E0C9
-:1009E0008EE08E0F11921D928E13FCCF0C945D063B
-:1009F000BF92CF92DF92EF92FF920F931F93CF930C
-:100A0000DF9380910101882379F0809134018F5F19
-:100A100080933401811108C00E9473068093010104
-:100A2000811102C00E94050605E311E0C0E0D0E09C
-:100A3000DD24D39482E0C82EEE24E394F12CC73059
-:100A4000D10500F580910101811164C080E40E940C
-:100A5000730480930101811112C082E10E949D0400
-:100A60008093010181110BC0C7010C2E01C0880FBA
-:100A70000A94EAF780950E949D04809301010E94E8
-:100A8000950448C0CA30A1F028F4C83059F0C930E4
-:100A900061F005C0CC3089F070F0CD3089F0209A3B
-:100AA000289810C0219A29980DC0229A2A980AC025
-:100AB000239A2B9807C0529A01C0539A5B9802C0A0
-:100AC0003E9A469890EA9A95F1F79FB1799902C0BB
-:100AD00082E001C080E091709D25982B7C9902C036
-:100AE00084E001C080E0892B7D9902C038E001C01C
-:100AF00030E0832B7E9902C020E101C020E0822BF0
-:100B00009FB19095991F9927991F9295990F907E63
-:100B1000892B0FC080910101811149C080E40E949E
-:100B2000730480930101882379F1B12C0E9495040C
-:100B30008B2DF8019081981719F08083C0920001E5
-:100B40000E94B80421960F5F1F4FCE30D10509F0E7
-:100B500076CF80910001882361F18150809300015C
-:100B6000882339F08FE99FE00197F1F700C000007A
-:100B700020C0A3E4B1E0E5E3F1E0CF01825F919111
-:100B80009D938E13FCCF15C083E10E949D0480933A
-:100B900001018111CACF81E40E9473048093010195
-:100BA0008111C3CF0E94AE04B82EB094BFCF80E0B5
-:100BB000C0CF0E94030681E0DF91CF911F910F917A
-:100BC000FF90EF90DF90CF90BF900895E82FF0E076
-:100BD000ED5BFE4F8081089508950F931F93CF938F
-:100BE000DF93C3E4D1E010E00C2F025F899190E025
-:100BF0000E94981E180F0C13F9CF812FDF91CF910F
-:100C00001F910F9108950C94B50856985E982598F9
-:100C10002D9826982E9827982F988FEF90E09093F4
-:100C200089008093880090938B0080938A00909332
-:100C30008D0080938C00259A2D9A2FEF80E792E00B
-:100C4000215080409040E1F700C00000269A2E9A83
-:100C50002FEF80E792E0215080409040E1F700C004
-:100C60000000279A2F9A2FEF80E792E021508040D2
-:100C70009040E1F700C0000025982D982FEF80E705
-:100C800092E0215080409040E1F700C0000026989B
-:100C90002E982FEF80E792E0215080409040E1F7BE
-:100CA00000C0000027982F9856985E9825982D9898
-:100CB00026982E9827982F98089589EA8093800087
-:100CC00089E08093810024982C983F988AB18F7492
-:100CD0008AB96E98479A8BB1806B8BB9769A0E94CD
-:100CE00005060C94B40880E28093010180915101C3
-:100CF00081110EC00E946D0481E0809351012FEF9D
-:100D000083ED90E3215080409040E1F700C0000067
-:100D100080E40E9473048093010181112EC00E941F
-:100D20009D0480930101811128C00E949D0480933D
-:100D30000101811122C08FE30E949D048093010173
-:100D400081111BC00E94950480E40E94730480936B
-:100D50000101811112C08CE00E949D048093010169
-:100D600081110BC00E949D0480930101811105C077
-:100D70008FE30E949D04809301010E94950480915D
-:100D800001010895882359F0282F30E08A3020F49B
-:100D9000C901885A9F4F0895C9010697089582E6B0
-:100DA00090E008950F931F93CF93DF938C01EB0195
-:100DB0008091520190915301009709F448C0019726
-:100DC00009F089C080EE0E94A71481EE0E94A7144A
-:100DD00088E10E94A71488E10E946F15C801807FF6
-:100DE000992724E0969587952A95E1F70E94C206F7
-:100DF000182F0E94A714812F0E946F15802F8F70CB
-:100E00000E94C206182F0E94A714812F0E946F15FE
-:100E1000CE01807F992734E0969587953A95E1F742
-:100E20000E94C206D82F0E94A7148D2F0E946F1512
-:100E30008C2F8F700E94C206C82F0E94A7148C2F7F
-:100E40000E946F1580EE0E946F1581EE3EC082EE0B
-:100E50000E94A71487E50E94A71487E50E946F15DA
-:100E6000C801807F992744E0969587954A95E1F7D8
-:100E70000E94C206182F0E94A714812F0E946F158E
-:100E8000802F8F700E94C206182F0E94A714812FF6
-:100E90000E946F15CE01807F992754E09695879523
-:100EA0005A95E1F70E94C206D82F0E94A7148D2FF1
-:100EB0000E946F158C2F8F700E94C206C82F0E944F
-:100EC000A7148C2F0E946F1582EEDF91CF911F9196
-:100ED0000F910C946F15DF91CF911F910F91089591
-:100EE000FC018281882309F43CC1862F90E08F3574
-:100EF000910508F036C1FC01EA5AFF4F0C945427C3
-:100F0000809152019091530101968170992790939D
-:100F100053018093520125C16FEB70E019C160E964
-:100F200070E008C061EA70E013C163E870E00BC1D3
-:100F30006BE570E081E290E012C16BEB70E008C1FC
-:100F400063E570E0F7CF6EEB70E002C164E070E043
-:100F5000D4C069EB70E001C162EB70E0F9C065E8F4
-:100F600070E0F1C069E970E0F3C065E570E0E2CFE0
-:100F700068EC70E0EDC069E870E0E5C064E770E03F
-:100F8000E2C062E970E0D6CF66E770E0DCC063E9FA
-:100F900070E0D0CF60EC70E0DBC062EB70E0DDC0F1
-:100FA00069EA70E0D5C068EA70E0D2C064E870E039
-:100FB000CAC06DE970E0CCC067EF70E0CEC063ECF2
-:100FC00070E0C6C061EC70E0C3C069E570E0B2CF0C
-:100FD00063EB70E0BDC064E570E0ACCF6DEB70E03A
-:100FE000B7C066EB70E0B4C065EB70E0B1C06AEB0F
-:100FF00070E0AEC067E770E0A6C060EA70E0A8C02D
-:1010000062EC70E0A5C06EE970E0A2C068EB70E031
-:101010009FC067EB70E09CC062E870E094C063E43E
-:1010200070E06BC061EB70E093C066EA70E090C066
-:1010300066EC70E08DC06EE170E05FC06FE970E05B
-:1010400087C068E070E059C067ED70E086C060E876
-:1010500070E079C063EA70E07BC069EC70E078C052
-:1010600061E870E070C066E970E072C064EC70E046
-:101070006FC065E770E067C063E070E03EC061EBA1
-:1010800070E06BC06EEB70E068C063EB70E065C051
-:1010900065E070E032C061E970E04CCF69E770E074
-:1010A00052C064EB70E054C06CEB70E051C06AE970
-:1010B00070E04EC068E870E046C061E970E048C08A
-:1010C00067E870E040C062E970E042C067E970E044
-:1010D0003FC068E770E037C060E770E034C069E0A7
-:1010E00070E00BC065EC70E033C060E670E005C0F6
-:1010F00067EA70E02DC060E070E082E290E02FC00F
-:1011000064EA70E025C06CEB70E027C067EC70E02B
-:101110001FC068E970E01CC069EB70E019C06BE9A2
-:1011200070E016C06FE770E00EC065EA70E010C0B6
-:101130006CE970E00DC065E970E00AC063E970E039
-:1011400007C066E870E080E290E009C064E970E002
-:1011500083E090E004C06DEB70E080E090E00E94DE
-:10116000D20680E090E0089508956091BF017091EB
-:10117000C0018091C1019091C2010E94A41E5698A5
-:101180005E9825982D9826982E9827982F9883302A
-:10119000A9F028F4813051F0823069F012C0843017
-:1011A00041F0853071F4259A2D9A08C0259A2D9A20
-:1011B0000895259A2D9A269A2E9A0895279A2F9A5D
-:1011C000089556985E98089581E0089581E0089505
-:1011D0000C94E60808950F931F93CF93DF938C012F
-:1011E000FC01C081D181CE010E941D1DBE010E9463
-:1011F0009409EC01B8010E94E808882309F48DC025
-:10120000F8018281882309F44AC080915F0181112D
-:101210001FC0C431F0E5DF0709F051C00E94EA08A1
-:1012200081E080935F010E943C1F90935E01809358
-:101230005D011092560110925801109257011092C0
-:101240005A011092590110925C0110925B0165C025
-:1012500080915D0190915E010E94481F883C91053C
-:1012600070F480915601E82FF0E0EE0FFF1FE95A6D
-:10127000FE4FD183C0838F5F809356014EC0C43828
-:1012800080E5D80721F0C538D04501F13AC0F80112
-:101290008281882341F01092540182E01EC0C4383C
-:1012A000E0E5DE0759F580915401811106C086E220
-:1012B0000E94A71486E20E946F1582E01CC0C43809
-:1012C000F0E5DF0741F3C538D045D9F4F801828154
-:1012D000882331F01092550180E20E94BE151DC096
-:1012E00080915501811106C087E20E94A71487E210
-:1012F0000E946F1580E20E94C5150FC0C538D04509
-:1013000029F381E08093540180935501C801DF9156
-:10131000CF911F910F910C94E40880E0DF91CF9161
-:101320001F910F910895089596E0799FF00111247F
-:1013300094E5899FE00DF11D1124E60FF11DEE0FDC
-:10134000FF1FE853FE4F859194910895880F991FD0
-:10135000FC01E85BFF4F859194910895880F991FD8
-:10136000FC01E853FE4F8591949108950F931F93CC
-:10137000CF93DF93EC01811520E3920750F5C1155F
-:1013800080E2D80708F0C3C0CB3BD10590F4C83A3F
-:10139000D10508F06AC0C53AD10508F05BC0C43079
-:1013A000D10508F0D0C1219709F0CAC101E010E0D1
-:1013B0000AC2CF3FD10511F008F0C5C1C03FD10529
-:1013C00008F0A2C0CE01805E9109089708F4BBC165
-:1013D000B7C1C13090E5D90709F4A2C020F5C031EA
-:1013E0008FE4D80770F4C11590E4D90708F094C0D1
-:1013F000C11521E3D20708F0A3C1DD278E01106CCF
-:10140000E2C1C115D04509F09BC10E9424188FEF9D
-:1014100094E32CE0815090402040E1F700C00000B0
-:101420000E94971FD0C1C11597E5D90758F4C03164
-:1014300021E5D20708F01CC1C43180E5D80708F4C3
-:1014400075C07EC1CE0190578115904108F078C1DA
-:10145000DF7073C1C53AD10509F477C1C63AD10529
-:1014600009F076C102E810E4AEC1C83AD10509F42A
-:1014700072C1C93AD10509F471C1CA3AD10509F45A
-:1014800070C1CB3AD10509F46FC1CC3AD10509F44A
-:101490006EC1CD3AD10509F46DC1C03BD10509F447
-:1014A0006CC1CE3AD10509F46BC1CF3AD10509F42C
-:1014B0006AC1C13BD10509F469C1C23BD10509F438
-:1014C00068C1C33BD10509F467C1C43BD10509F428
-:1014D00066C1C53BD10509F465C1C63BD10509F418
-:1014E00064C1C73BD10509F463C1C83BD10509F408
-:1014F00062C1C93BD10509F461C1CA3BD10509F4F8
-:1015000060C100E014E45FC18E0110655CC1CE01D2
-:101510009F700E94AE0958C1DF708E01106A53C1DE
-:101520008091DC0181608093DC014DC10E943C21EF
-:10153000811102C00E9422210E94592190E09093C3
-:10154000FD018093FC01C23080E5D80721F4809131
-:10155000FC01816086C0C43090E5D90721F48091F8
-:10156000FC0182607EC0C63020E5D20721F4809164
-:10157000FC01846076C0C83080E5D80719F48091FA
-:10158000FC0127C0CA3090E5D90721F48091FC0105
-:10159000806167C0CC3020E5D20721F48091FC0146
-:1015A00080625FC0CE3080E5D80721F48091FC01D5
-:1015B000806457C0C03190E5D90721F48091FC01C7
-:1015C00080684FC0C23120E5D20729F48091FC0128
-:1015D0008460886046C0C33080E5D80721F48091DC
-:1015E000FC018E7F3EC0C53090E5D90721F4809183
-:1015F000FC018D7F36C0C73020E5D20721F48091F1
-:10160000FC018B7F2EC0C93080E5D80719F480918A
-:10161000FC0126C0CB3090E5D90721F48091FC0174
-:101620008F7E1FC0CD3020E5D20721F48091FC01D0
-:101630008F7D17C0CF3080E5D80721F48091FC0161
-:101640008F7B0FC0C13190E5D90721F48091FC0157
-:101650008F7707C0C331D04531F48091FC018B7F77
-:10166000877F8093FC018091FC010E945D21ABC0CB
-:101670008D2F99278F70992781309105D9F49E017C
-:101680002370332702C0880F991F2A95E2F79C68C0
-:101690008E0144E0000F111F4A95E1F700271370F7
-:1016A000802B912B53E0CC0FDD1F5A95E1F7C076CC
-:1016B000DD272FC08230910531F4DC2FCC278E013D
-:1016C000016F106A80C08330910569F4CE01837088
-:1016D000992701E010E002C0000F111F8A95E2F780
-:1016E000C8019C680FC084309105B9F4CE018370A5
-:1016F000992701E010E002C0000F111F8A95E2F760
-:10170000C8019A6823E0CC0FDD1F2A95E1F7C07E5F
-:10171000D7708C010C2B1D2B56C08530910531F4F0
-:10172000DC2FCC278E01046F106A4DC0069709F09C
-:101730004AC0CF71DD27DC2FCC278E01106243C059
-:1017400000E010E040C08E013EC001E810E43BC064
-:1017500003E810E438C002EE14E435C009EE14E4E6
-:1017600032C00AEE14E42FC005EB14E42CC006EBE3
-:1017700014E429C007EB14E426C00CEC14E423C0E5
-:101780000DEC14E420C003E815E41DC00AE815E4DC
-:101790001AC002E915E417C004E915E414C001E217
-:1017A00016E411C003E216E40EC004E216E40BC016
-:1017B00005E216E408C006E216E405C007E216E4F6
-:1017C00002C00AE216E4C801DF91CF911F910F9188
-:1017D000089596E0799FF001112494E5899FE00D2A
-:1017E000F11D1124E60FF11DEE0FFF1FE853FE4F10
-:1017F00085919491803E9105E0F4803C910558F5E7
-:101800008133910509F46FC048F48932910509F4D8
-:1018100063C08A32910509F46DC072C089339105A5
-:10182000E9F082389105D1F08533910509F44DC076
-:1018300067C0833E910581F138F4803E9105B9F08F
-:10184000823E9105D9F05CC0863E910561F1873EEC
-:101850009105A1F155C00E94A60908952091FC01AF
-:1018600020FD02C021FF4CC080EE90E049C0809175
-:10187000FC0180FFF9CF89E390E042C08091FC0138
-:1018800082FF0EC08091FC0184FF03C080E090E0E5
-:1018900037C083EE90E034C08091FC0182FFF2CF2C
-:1018A00082EE90E02DC08091FC0183FF0BC08091FF
-:1018B000FC0184FDEBCF87EE90E022C08091FC011B
-:1018C00083FFF5CF86EE90E01BC08091FC0185FF81
-:1018D00007C089E290E014C08091FC0185FFF9CF38
-:1018E00085E390E00DC08091FC0186FF07C08AE28D
-:1018F00090E006C08091FC0186FFF9CF81E390E083
-:101900000E94B609089508950C94830C809170018B
-:101910000895CF93DF9300D01F92CDB7DEB79C011F
-:101920008091F301843019F593E099833B832A83F6
-:101930009093E9008FEF9091E800815095FD06C0EB
-:1019400095ED9A95F1F700008111F5CF8091E800AF
-:1019500085FF0DC040E050E063E070E0CE010196ED
-:101960000E94F30E8091E8008E778093E8000F903C
-:101970000F900F90DF91CF910895CF93DF9300D018
-:101980001F92CDB7DEB72091F301243021F522E07C
-:1019900029839B838A8383E08093E9008FEF909172
-:1019A000E800815095FD06C095ED9A95F1F700008D
-:1019B0008111F5CF8091E80085FF0DC040E050E037
-:1019C00063E070E0CE0101960E94F30E8091E80082
-:1019D0008E778093E8000F900F900F90DF91CF915A
-:1019E00008952091F3012430F1F422E02093E900DE
-:1019F0002FEF3091E800215035FD06C035ED3A95C6
-:101A0000F1F700002111F5CF2091E80025FF0BC070
-:101A100040E050E065E070E00E94F30E8091E80045
-:101A20008E778093E8000895CF93DF93EC01909137
-:101A3000F301943009F046C080910C018823D9F05D
-:101A400080910D018823B9F09093E9008FEF909178
-:101A5000E800815095FD06C095E19A95F1F70000E8
-:101A60008111F5CF8091E80085FF2CC040E050E067
-:101A700060E170E017C081E08093E9008FEF909102
-:101A8000E800815095FD06C095ED9A95F1F70000AC
-:101A90008111F5CF8091E80085FF14C040E050E04F
-:101AA00068E070E0CE010E94F30E8091E8008E772E
-:101AB0008093E80080E1FE01A0E6B1E001900D9284
-:101AC0008A95E1F7DF91CF9108958091F20181111C
-:101AD00009C00E9488100E94E5108091E200846095
-:101AE0008093E20008951092F201089508950C94F5
-:101AF000CC250E942D1F0E94D2250E948B130C948E
-:101B0000840C42E061EC81E00E94021042E061EC52
-:101B100082E00E94021042E061EC83E00E94021029
-:101B200042E161EC84E00C9402108091F501833075
-:101B300009F455C030F4813071F0823009F48EC060
-:101B400008958A3009F47AC08B3009F460C0893076
-:101B500009F09CC020C08091F401813A09F096C040
-:101B60008091E800877F8093E8008091F801909150
-:101B7000F901892B21F460E180E691E003C060E087
-:101B800080E090E070E00E943E0F8091E8008B774B
-:101B90008093E80008958091F401813209F076C0C5
-:101BA0008091F8019091F901009719F0039709F0DD
-:101BB0006DC08091E800877F8093E8008091E80005
-:101BC00082FD05C08091F3018111F8CF5FC0809143
-:101BD000F100809370018091E8008B7753C0809171
-:101BE000F401813A09F052C08091F8019091F90115
-:101BF000892B09F04BC08091E800877F8093E80033
-:101C00008091E80080FFFCCF80910C0136C080916C
-:101C1000F4018132D9F58091F8019091F901892B75
-:101C2000A9F58091E800877F8093E8000E94371033
-:101C30008091F60180930C010C9424188091F4019A
-:101C4000813221F58091E800877F8093E8000E942F
-:101C500037108091F7018093710108958091F4010C
-:101C6000813AA1F48091E800877F8093E800809119
-:101C7000E80080FFFCCF809171018093F10080919A
-:101C8000E8008E778093E8000C943710089584B7AD
-:101C9000877F84BF88E10FB6F8948093600010922C
-:101CA00060000FBE90E080E80FB6F894809361006A
-:101CB000909361000FBE0E94DA130E9488100E9468
-:101CC000E5108091E20084608093E20078940E94A5
-:101CD0006B130E94DC1382E091E00E9486130E9445
-:101CE000BA258091F301853069F40E94F41E809139
-:101CF000F1018823B1F30E941F1F882391F30E94F2
-:101D0000DD0EEFCF0E94E213ECCF292F33272330D3
-:101D10003105C9F064F42130310581F022303105FC
-:101D200009F043C08DE690E024E936E042C021325C
-:101D30003105F1F02232310541F137C082E190E006
-:101D400021E037E036C099278130910541F082309B
-:101D5000910541F0892B49F5E0E9F6E005C0E8E797
-:101D6000F6E002C0E0E6F6E0849190E09F0121C039
-:101D70006430D8F4E62FF0E0EE0FFF1FEE5DFE4F6B
-:101D80002081318189E090E014C0643070F470E00B
-:101D9000FB01EE0FFF1FE65EFE4F20813181FB014C
-:101DA000EA5EFE4F808190E004C080E090E020E099
-:101DB00030E0FA0131832083089580E189BD82E11A
-:101DC00089BD09B400FEFDCF8091D8008F7D80933E
-:101DD000D8008091E00082608093E0008091E00074
-:101DE00081FDFCCF0895CF92DF92EF92FF920F9387
-:101DF0001F93CF93DF93EC018B016A010E94561071
-:101E0000811133C0C114D10439F0F6018081918170
-:101E1000081B190BC80FD91FE12CF12C0115110556
-:101E200019F18091E80085FD16C08091E8008E7759
-:101E30008093E800C114D10449F0F60180819181BA
-:101E4000E80EF91EF182E08285E00FC00E94561074
-:101E5000882321F30AC089918093F1000150110970
-:101E6000FFEFEF1AFF0ADACF80E0DF91CF911F91E9
-:101E70000F91FF90EF90DF90CF9008952091FA019D
-:101E80003091FB012617370748F06115710539F4C9
-:101E90002091E8002E772093E80001C0B90140E0CE
-:101EA00061157105A9F12091F301222309F443C0C2
-:101EB000253009F442C02091E80023FD40C0209164
-:101EC000E80022FD32C02091E80020FFE9CF4091D8
-:101ED000F3002091F20030E0342BFC01CF016115BA
-:101EE000710559F02830310540F481918093F1005B
-:101EF000615071092F5F3F4FF1CF41E0283031052C
-:101F000009F040E02091E8002E772093E800C8CF48
-:101F10004111C9CF0AC08091F301882361F0853057
-:101F200061F08091E80083FD0AC08091E80082FFA3
-:101F3000F2CF80E0089582E0089583E0089581E083
-:101F400008952091FA013091FB012617370748F0D8
-:101F50006115710539F42091E8002E772093E8008F
-:101F600001C0B901FC0120E06115710591F180917A
-:101F7000F301882309F440C0853009F43FC0809103
-:101F8000E80083FD3DC08091E80082FD2FC0809174
-:101F9000E80080FFE9CF2091F3008091F20090E00B
-:101FA000922B6115710559F08830910540F4249108
-:101FB0002093F1003196615071090196F2CF21E032
-:101FC000089709F020E08091E8008E778093E80080
-:101FD000CBCF2111CCCF0AC08091F301882361F0CF
-:101FE000853061F08091E80083FD0AC08091E800AF
-:101FF00082FFF2CF80E0089582E0089583E00895A3
-:1020000081E00895982F973058F59093E90098173C
-:1020100039F07091EC002091ED005091F00003C078
-:10202000242F762F50E021FF19C03091EB003E7F26
-:102030003093EB003091ED003D7F3093ED00309117
-:10204000EB0031603093EB007093EC002093ED00D7
-:102050005093F0002091EE0027FF07C09F5FD3CF81
-:102060008F708093E90081E0089580E00895809169
-:10207000F40187FF11C08091E80082FD05C08091C6
-:10208000F3018111F8CF11C08091E8008B770BC06C
-:102090008091F301882349F08091E80080FFF8CF18
-:1020A0008091E8008E778093E80008952091E40005
-:1020B0003091E50095E64091EC00842F817040FF5F
-:1020C00022C08091E80080FD1CC08091F30188232C
-:1020D00091F0853091F08091EB0085FD10C040912A
-:1020E000E4005091E5004217530729F39A019150FB
-:1020F00011F784E0089582E0089583E0089581E077
-:10210000089580E008954091E80042FFDECF0895F1
-:102110000E94F6100E94FE10E0EEF0E080818160E7
-:102120008083E8EDF0E080818F77808319BCA7ED94
-:10213000B0E08C918E7F8C9380818F7E8083109213
-:10214000F20108950F931F93CF93DF930E94F6102F
-:102150000E94FE10C8EDD0E088818F778883888147
-:102160008068888388818F7D888319BC1092F301F1
-:102170001092EF011092F1011092F00100EE10E0C8
-:10218000F80180818B7F808388818160888342E031
-:1021900060E080E00E940210E1EEF0E080818E7F3E
-:1021A0008083E2EEF0E080818160808380818860BE
-:1021B0008083F80180818E7F80838881806188831D
-:1021C000DF91CF911F910F910895E8EDF0E08081AC
-:1021D0008F7E8083E7EDF0E080818160808384E002
-:1021E00082BF81E08093F2010C94A210E8EDF0E050
-:1021F00080818E7F80831092E20008951092DA0031
-:102200001092E10008951F920F920FB60F921124C1
-:102210002F933F934F935F936F937F938F939F93EE
-:10222000AF93BF93EF93FF938091E10082FF0BC0C8
-:102230008091E20082FF07C08091E1008B7F809354
-:10224000E1000E946A138091DA0080FF1FC0809134
-:10225000D80080FF1BC08091DA008E7F8093DA0067
-:102260008091D90080FF0DC080E189BD82E189BDE8
-:1022700009B400FEFDCF81E08093F3010E94650D5B
-:1022800005C019BC1092F3010E94730D8091E1000A
-:1022900080FF19C08091E20080FF15C08091E200AC
-:1022A0008E7F8093E2008091E20080618093E20063
-:1022B0008091D80080628093D80019BC85E080931B
-:1022C000F3010E94770D8091E10084FF30C080917E
-:1022D000E20084FF2CC080E189BD82E189BD09B4A0
-:1022E00000FEFDCF8091D8008F7D8093D800809133
-:1022F000E1008F7E8093E1008091E2008F7E8093E9
-:10230000E2008091E20081608093E2008091EF0121
-:10231000882311F084E007C08091E30087FD02C0AC
-:1023200081E001C083E08093F3010E94790D8091E8
-:10233000E10083FF29C08091E20083FF25C08091E6
-:10234000E100877F8093E10082E08093F3011092A7
-:10235000EF018091E1008E7F8093E1008091E200A7
-:102360008E7F8093E2008091E20080618093E200A2
-:1023700042E060E080E00E9402108091F0008860FE
-:102380008093F0000E94760DFF91EF91BF91AF9185
-:102390009F918F917F916F915F914F913F912F917D
-:1023A0000F900FBE0F901F9018951F920F920FB6AF
-:1023B0000F9211242F933F934F935F936F937F93CB
-:1023C0008F939F93AF93BF93CF93DF93EF93FF933D
-:1023D000C091E900CF708091EC00D82FD17080FDC2
-:1023E000D0E81092E9008091F000877F8093F000A0
-:1023F00078940E9419121092E9008091F000886090
-:102400008093F000CD2BCF70C093E900FF91EF9146
-:10241000DF91CF91BF91AF919F918F917F916F91FC
-:102420005F914F913F912F910F900FBE0F901F9092
-:1024300018951F93CF93DF93CDB7DEB7AA970FB64A
-:10244000F894DEBF0FBECDBFE4EFF1E088E08E0F61
-:102450009091F10091938E13FBCF0E94950D809186
-:10246000E80083FF1FC18091F4019091F501492F8D
-:1024700050E04A30510508F015C1FA01EB54FF4F06
-:102480000C945427803881F0823809F00BC1809178
-:10249000F8018F708093E9008091EB0085FB88271D
-:1024A00080F91092E90006C08091F0019091F1014D
-:1024B000911182609091E800977F9093E80080935B
-:1024C000F1001092F100C8C0282F2D7F09F0EAC05A
-:1024D000882319F0823061F0E5C08091F6018130E7
-:1024E00009F0E0C0933009F080E08093F1012BC047
-:1024F0008091F601811127C08091F8018F7009F455
-:10250000D1C08093E9002091EB0020FF1CC09330E4
-:1025100021F48091EB00806214C09091EB009061F7
-:102520009093EB0021E030E0A90102C0440F551F59
-:102530008A95E2F74093EA001092EA008091EB005E
-:1025400088608093EB001092E9008091E800877F1B
-:1025500086C08111A7C01091F6011F778091E3001A
-:102560008078812B8093E3008091E800877F8093BF
-:10257000E8000E9437108091E80080FFFCCF809136
-:10258000E30080688093E300111102C082E001C083
-:1025900083E08093F30186C08058823008F082C0C7
-:1025A0008091F6019091F7018C3D53E0950779F504
-:1025B00083E08A838AE289834FB7F894DE01139619
-:1025C00020E03EE051E2E32FF0E050935700E49129
-:1025D00020FF03C0E295EF703F5FEF708E2F90E019
-:1025E000EA3010F0C79601C0C0968D939D932F5F7F
-:1025F000243149F74FBF8091E800877F8093E8003E
-:102600006AE270E0CE0101960E943E0F14C0AE0156
-:102610004F5F5F4F6091F8010E94850EBC010097EB
-:1026200009F440C09091E800977F9093E800898179
-:102630009A810E94A10F8091E8008B778093E80037
-:1026400031C0803879F58091E800877F8093E80079
-:102650008091EF018093F1008091E8008E77809364
-:10266000E8000E9437101EC081111CC09091F60135
-:102670009230C0F48091E800877F8093E8009093C7
-:10268000EF010E9437108091EF01811106C0809107
-:10269000E30087FD02C081E001C084E08093F30184
-:1026A0000E94810D8091E80083FF0AC08091E800BC
-:1026B000877F8093E8008091EB0080628093EB003D
-:1026C000AA960FB6F894DEBF0FBECDBFDF91CF91B3
-:1026D0001F9108950895CF938091F3018823A1F06D
-:1026E000C091E900CF709091EC00892F817090FD2E
-:1026F00080E8C82B1092E9008091E80083FD0E94D9
-:102700001912CF70C093E900CF910895909377018B
-:10271000809376010895E0917601F09177013097EA
-:1027200021F00190F081E02D099480E00895E0917E
-:102730007601F0917701309721F00280F381E02D4E
-:1027400009940895E0917601F0917701309721F096
-:102750000480F581E02D0994089520917401309151
-:1027600075018217930771F090937501809374013E
-:10277000E0917601F0917701309721F00680F781A2
-:10278000E02D099408952091720130917301821710
-:10279000930771F09093730180937201E091760139
-:1027A000F0917701309721F00084F185E02D0994B4
-:1027B000089508950C94D9130E94331F0E94E004D9
-:1027C0000C94F51F9F92AF92BF92CF92DF92EF923F
-:1027D000FF920F931F93CF93DF9300D000D000D0D0
-:1027E000CDB7DEB70E94F8040DE010E0AA24A39450
-:1027F000B12C902E802F0E94E605980127583E4F5D
-:102800006901F901F080F826A1F40150110988F757
-:102810008FEF89838A831B820E943C1F8160782FFF
-:102820009D838C8349815A816B818D810E947914AB
-:102830002FC09091DC0191FF04C08E830E94EC05B3
-:102840008E8125E030E0A501022E01C0440F0A94DC
-:10285000EAF7E42E4F21C1F029839A828E2191E07C
-:1028600009F490E09B830E943C1F8160782F9D8338
-:102870008C8349815A816B818D810E947914F60184
-:102880008081E826E08204C021503109E0F6BDCF06
-:102890000E94DC22109178010E948B131817B9F066
-:1028A0000E948B138093780126960FB6F894DEBFB2
-:1028B0000FBECDBFDF91CF911F910F91FF90EF9091
-:1028C000DF90CF90BF90AF909F900C94840C269691
-:1028D0000FB6F894DEBF0FBECDBFDF91CF911F9131
-:1028E0000F91FF90EF90DF90CF90BF90AF909F90AF
-:1028F0000895CF93DF93CDB7DEB72B970FB6F8943B
-:10290000DEBF0FBECDBF4F83588769877A878B871D
-:10291000DE01119686E0FD0111928A95E9F785E0C6
-:10292000FE01379601900D928A95E1F749815A810F
-:102930006B817C818D819E810E94C21A2B960FB67D
-:10294000F894DEBF0FBECDBFDF91CF910895CF9336
-:10295000882309F4C2C0C82F823859F40E948B130F
-:1029600081FDBBC089E30E949C1D0E94691E89E312
-:102970000CC0833879F40E948B1380FDAEC083E5D0
-:102980000E949C1D0E94691E83E50E94DE1DCF915E
-:102990000C94691E843859F40E948B1382FD9DC0EB
-:1029A00087E40E949C1D0E94691E87E4EECF8CEF95
-:1029B0008C0F813A48F48C2F0E941F2581118DC005
-:1029C0008C2F0E949C1DE3CF80E28C0F883048F44E
-:1029D000C77081E001C0880FCA95EAF70E94221EE5
-:1029E000D6CF8BE58C0F833078F4C53A29F0C63A00
-:1029F00031F083E890E005C081E890E002C082E811
-:102A000090E0CF910C94AD1388E58C0F833108F0E2
-:102A100064C0C83A39F1C93A41F1CA3A49F1CB3AEE
-:102A200051F1CC3A59F1CD3A61F1C03B69F1CE3A5E
-:102A300071F1CF3A79F1C13B81F1C23B89F1C33BDE
-:102A400091F1C43B99F1C53BA1F1C63BA9F1C73B4C
-:102A5000B1F1C83BB9F1C93BC1F1CA3BC9F180E052
-:102A600090E038C082EE90E035C089EE90E032C050
-:102A70008AEE90E02FC085EB90E02CC086EB90E0D2
-:102A800029C087EB90E026C08CEC90E023C08DEC51
-:102A900090E020C083E891E01DC08AE891E01AC070
-:102AA00082E991E017C084E991E014C081E292E0EC
-:102AB00011C083E292E00EC084E292E00BC085E296
-:102AC00092E008C086E292E005C087E292E002C090
-:102AD0008AE292E0CF910C94C313CF91089588239A
-:102AE00009F44BC0823859F40E948B1381FF45C012
-:102AF00089E30E949C1D0E94691E89E30CC08338F3
-:102B000071F40E948B1380FF38C083E50E949C1DE6
-:102B10000E94691E83E50E94DE1D0C94691E8438A4
-:102B200059F40E948B1382FF28C087E40E949C1DE9
-:102B30000E94691E87E4EFCF9CEF980F913A58F3FB
-:102B400090E2980F983050F4877091E001C0990F8F
-:102B50008A95EAF7892F0E94281EDFCF9BE5980F00
-:102B6000933020F480E090E00C94AD13885A8331C8
-:102B700020F480E090E00C94C3130895882321F0A2
-:102B80000E94221E0C94691E0895882321F00E9441
-:102B9000281E0C94691E08957F928F929F92AF9287
-:102BA000BF92CF92DF92EF92FF920F931F93CF933A
-:102BB000DF931F92CDB7DEB77C01C62E772EFC01C6
-:102BC000058102950F70128111110E943F1E0E9413
-:102BD000951D882379F0112369F080E28C0D8830EF
-:102BE00048F082E00E947E1D0E94951D91E0D82E43
-:102BF000D92601C0D12CE72DE295EF70F0E0E15429
-:102C0000FF4F0C945427872D807F072D0F7088234A
-:102C100011F00295007F112389F0002309F490C17F
-:102C200080E28C0D883020F4802F0E94221E03C089
-:102C3000802F0E94321E0E94691E82C18C2D0E942C
-:102C40006F15002309F495C180E28C0D883020F4C3
-:102C5000802F0E94281E03C0802F0E94381E0E94D1
-:102C6000691E87C1972D907F872D8F70903211F04C
-:102C70008295807FCC2021F0F1E0CF16B1F01EC00C
-:102C8000112349F0002309F414C1013009F011C1E6
-:102C90000E94521E6EC1002319F0013009F469C16F
-:102CA00089830E94551E89810AC1112321F00230B7
-:102CB00008F05FC1FEC001115CC101C1112321F008
-:102CC000002309F4F6C03CC1002309F4F8C03EC15A
-:102CD000872D86958695837090E0009719F001976F
-:102CE00061F047C1112321F08C2D972D937002C004
-:102CF00080E090E00E94AD133CC1112321F08C2DA7
-:102D0000972D937002C080E090E00E94C31331C100
-:102D10008C2D112319F00E94E42102C00E944C2244
-:102D20000E94D12226C1872D837009F052C0111153
-:102D300020C18C2D829586958770880F880F9C2DD9
-:102D40009F70892E912CA12CB12C082E04C0880CC8
-:102D5000991CAA1CBB1C0A94D2F7C4FE14C00FE035
-:102D600010E020E030E0B901A80104C0440F551F75
-:102D7000661F771F8A95D2F7CB01BA0160957095CF
-:102D80008095909503C060E070E0CB01272D2695DB
-:102D90002695237030E02230310569F0233031056B
-:102DA00089F0682979298A299B292130310571F018
-:102DB0000E940A1CDEC0682979298A299B290E9461
-:102DC000261CD7C00E940A1CC501B4010E94EE1B3C
-:102DD000D0C0112319F0872D817001C086958823FA
-:102DE00009F4C7C08C2D829586958770880F880F4F
-:102DF0009C2D9F70892E912CA12CB12C082E04C0E3
-:102E0000880C991CAA1CBB1C0A94D2F7C4FE14C0DF
-:102E10000FE010E020E030E0B901A80104C0440F49
-:102E2000551F661F771F8A95D2F7CB01BA016095AF
-:102E300070958095909503C060E070E0CB01272DE0
-:102E4000269526952370422F50E04230510569F0B7
-:102E50004330510589F0682979298A299B29413015
-:102E6000510571F00E94E41C84C0682979298A29DF
-:102E70009B290E94001D7DC00E94E41CC501B40175
-:102E80000E94C81C76C08C2D90E0FC01E05EF10928
-:102E9000E531F10508F050C0E153FF4F0C94542781
-:102EA0000C2D0F70872D8F71112331F00E94611C42
-:102EB000802F0E94BE155DC00E94821C802F0E9440
-:102EC000C51557C0112339F0011153C0872D8F71DB
-:102ED0000E94A71C4EC0023008F04BC0F7CF112350
-:102EE00039F0872D8F710E94611C43C01123C9F3F3
-:102EF000872D8F710E94821C3CC0112329F0872DE1
-:102F00008F710E944C1C35C00E94421C32C011239C
-:102F100051F0172D1F71812F0E94611C63E0812FDA
-:102F20000E94751D26C081E00E947E1D023008F1BE
-:102F300082E00E947E1D1DC0112331F0002389F222
-:102F40008C2D0E94A71415C0002391F28C2D0E9495
-:102F50006F150FC0472D4F706C2DC7010E94700771
-:102F60000E94661B06C0472D4F706C2DC7010E9442
-:102F70009309DD20F9F00E94711D80FD1BC0F7014F
-:102F800012820E946B1D0E94611CC7010E94E917FA
-:102F90000E946B1D0F90DF91CF911F910F91FF90B9
-:102FA000EF90DF90CF90BF90AF909F908F907F90E9
-:102FB0000C94821C0F90DF91CF911F910F91FF9085
-:102FC000EF90DF90CF90BF90AF909F908F907F90C9
-:102FD00008950F931F93CF93DF93EC01888199811C
-:102FE0002B813C81232BB9F09F3F11F48F3F99F047
-:102FF000CE010E94EB08882371F0688179818A8173
-:103000000E94671D8C010E941C1D0E94E31BB801D9
-:10301000CE010E94CC15DF91CF911F910F910895A1
-:103020000E943F1E0E944F1E0E94141E0E94691E95
-:103030000E9482230E94D12280E090E00E94AD1382
-:1030400080E090E00C94C3130E942F1E0C94101883
-:103050000E945C1D292F22952F7030E02C30310505
-:103060004CF42A3031056CF42250310922303105FC
-:10307000A8F407C02C30310569F02F30310551F02C
-:103080000DC0803F69F018F4803E40F409C0843FD1
-:1030900029F406C093FB882780F9089580E00895FD
-:1030A00081E00895CF93DF9300D000D01F92CDB779
-:1030B000DEB70F900F900F900F900F90DF91CF9190
-:1030C0000895CF93DF9300D000D000D0CDB7DEB706
-:1030D00026960FB6F894DEBF0FBECDBFDF91CF911D
-:1030E00008951F93CF93DF93C091870116E08091DD
-:1030F0008801C81799F0D0E01C9FF0011D9FF00DCA
-:103100001124E757FE4F4081518162817381848190
-:1031100095810E9461182196C770E9CFDF91CF9108
-:103120001F9108954091B9015091BA016091BB017E
-:103130007091BC018091BD019091BE010C94611809
-:103140008091BE0182958F7009F054C08091BB01BF
-:10315000882309F44FC080918701A0918801609174
-:10316000B9017091BA014091BC015091BD01B6E026
-:103170008A1709F43FC090E041155105C1F17F3F26
-:1031800011F46F3FA1F1B89FF001B99FF00D112428
-:10319000E757FE4F218172132AC02081621327C096
-:1031A0002281211124C0238134812417350710F492
-:1031B00021503109241B350B283C3105C0F42091E6
-:1031C000BE012F7020612093BE0126E0289FF001F0
-:1031D000299FF00D1124E257FE4F80818F7080618E
-:1031E000808389EB91E00E94E9170C947118019695
-:1031F0008770BECF0895CF92DF92EF92FF920F9328
-:103200001F93CF93DF93CDB7DEB762970FB6F894D5
-:10321000DEBF0FBECDBF8C0185E0F801DE011D963B
-:1032200001900D928A95E1F7D8014C9111965C912D
-:10323000119712966C9112971396CD90DC9014977B
-:103240003091B9017091BA018091BC019091BD019A
-:10325000009709F46BC17F3F19F43F3F09F466C141
-:10326000E090BB01EE2009F4C0C02091BE01C81659
-:10327000D90628F0F601E81BF90BCF0104C08095B0
-:1032800090958C0D9D1DFF24F394883C910578F05A
-:10329000F12C207F09F0C6C07C2DD98AC88A898983
-:1032A0000E94521889EB91E00E94E917B1C0822F69
-:1032B000807F09F046C0751314C0341312C0611129
-:1032C00010C02F7020612093BE010E94921889EBDC
-:1032D00091E00E94E9178091BE01D80115968C9368
-:1032E0002EC0CD2819F15F3F11F44F3FF9F0F62EB3
-:1032F00061111CC0809187012091880136E08217FE
-:1033000009F45AC090E0389FF001399FF00D112464
-:10331000E757FE4F7181571306C07081471303C0F2
-:103320007281711103C001968770E9CFF62E662372
-:1033300009F418C18091BE0181608093BE01F12C17
-:1033400011C1751308C0341306C0611104C0809107
-:10335000BE01D801C3C04D875E878D859E856A8B6F
-:103360000E9428186A898823E1F16623D1F120910F
-:10337000BE01822F82958F7090E0029774F0809149
-:10338000B9019091BA0198878F831986DB86CA8626
-:103390002C87CE0107960E94E91786E0F801A9EB79
-:1033A000B1E001900D928A95E1F70E94A0180E9469
-:1033B0009218FF24F394D6C04D875E878D859E8535
-:1033C0000E945C1D292F22952F7030E0223031059C
-:1033D0000CF0BCC09F7009F0B6C0805E883008F465
-:1033E000C1C0C8010E94E917E4CFC816D90608F485
-:1033F00053C0F601E81BF90BCF01883C910508F496
-:1034000050C0F12C7C2DD98AC88A89890E94521813
-:10341000E9EBF1E086E0DF011D928A95E9F70E9471
-:103420009218A0C0751314C0341312C0611110C0DB
-:103430008091BE01F8018583C8010E94E91786E0EA
-:10344000E9EBF1E0DF011D928A95E9F7FE2C8AC0D5
-:103450004D875E878D859E856A8B0E9428186A89B4
-:10346000882309F4BECF662309F4BBCF2091BE01A7
-:10347000822F82958F7090E002970CF48ECF80910E
-:10348000B9019091BA019A8389831B82DD82CC8233
-:103490002E83CE0101967FCF809590958C0D9D1D3A
-:1034A000ACCFF62E662309F49CCF75132EC03413CF
-:1034B0002CC02091BE0120FD1FC0822F82958F70ED
-:1034C000D9F0D80115962C9315978F3049F08F5F5E
-:1034D000982F9295907F822F8F70892B15968C93C1
-:1034E000C8010E94E91786E0F801A9EBB1E001905C
-:1034F0000D928A95E1F793CF86E0F801A9EBB1E050
-:1035000001900D928A95E1F72DC04D875E878D85DC
-:103510009E850E942818811140CF8091BE01816054
-:103520008093BE01C8010E94E9171CC0662309F4FC
-:1035300058CF4D875E878D859E850E9428188823E9
-:1035400009F44FCF2ACF811148CF0CC02430310568
-:103550000CF047CF9F7009F440CFF8019581907F20
-:1035600009F03BCF8F2D62960FB6F894DEBF0FBEE9
-:10357000CDBFDF91CF911F910F91FF90EF90DF9022
-:10358000CF9008951F93CF93DF93CDB7DEB72C97DD
-:103590000FB6F894DEBF0FBECDBF4F835887698743
-:1035A0007A878B879C87CE0107960E94FB18882319
-:1035B00069F08F8198852A853B85232BF1F19F3F08
-:1035C00009F063C08F3F09F060C037C086E0FE019C
-:1035D0003796DE01119601900D928A95E1F76F8181
-:1035E0007885EA85FB85309741F17F3F11F46F3F85
-:1035F00021F12091880130E0C90101968770992757
-:103600004091870150E08417950709F447C069830A
-:103610007A83FD83EC8396E0929FD001939FB00D57
-:103620001124A757BE4FFE01319601900D929A9535
-:10363000E1F7809388010E94711816E0809187015C
-:10364000909188018917C1F1189FC00111248757F3
-:103650009E4F0E94FB18882379F1E09187011E9FFD
-:10366000F0011124E757FE4F40815181628173813F
-:10367000848195810E9461188091870190E0019674
-:103680008770992780938701D9CF4F8158856985A5
-:103690007A858B859C850E946118CFCF0E94241863
-:1036A0001092880110928701E9EBF1E086E0DF01DA
-:1036B0001D928A95E9F7C1CF2C960FB6F894DEBF1C
-:1036C0000FBECDBFDF91CF911F910895EF92FF9272
-:1036D0000F931F93CF93DF938C01009709F46CC075
-:1036E000F12CEE24E394E8012196F80184918437CB
-:1036F00040F4843008F051C0813081F0823019F1FB
-:103700005BC0853709F444C0A8F19CE7980F903757
-:1037100008F052C08F770E946F1541C00E5F1F4F97
-:10372000FE01C49180E28C0F883048F4C7708E2D62
-:1037300001C0880FCA95EAF70E94421E14C08C2F60
-:103740000E94A7142DC00E5F1F4FFE01C49180E29E
-:103750008C0F883058F4C7708E2D01C0880FCA9521
-:10376000EAF70E94481E0E94691E1AC08C2F0E9410
-:103770006F1516C00E5F1F4FFE01C491CC2381F060
-:103780008FE99FE00197F1F700C00000C150F6CF2C
-:103790000E5F1F4FFE01F49003C00E94A7148E011C
-:1037A0008F2D882309F49FCFEFE9FFE03197F1F7E0
-:1037B00000C000008150F5CFDF91CF911F910F9194
-:1037C000FF90EF90089508956093C3017093C40132
-:1037D0008093C5019093C6010C9410180F931F930A
-:1037E0000091C3011091C4012091C5013091C6011F
-:1037F000DC01CB01802B912BA22BB32B8093C30137
-:103800009093C401A093C501B093C6011F910F917D
-:103810000C9410180F931F930091C3011091C401D1
-:103820002091C5013091C601DC01CB018023912399
-:10383000A223B3238093C3019093C401A093C50135
-:10384000B093C6011F910F910C9410180F931F9302
-:103850000091C3011091C4012091C5013091C601AE
-:10386000DC01CB0180279127A227B3278093C301D6
-:103870009093C401A093C501B093C6011F910F910D
-:103880000C9410181092BF011092C0011092C10147
-:103890001092C2010C94101841E050E060E070E01A
-:1038A00004C0440F551F661F771F8A95D2F74093B7
-:1038B000BF015093C0016093C1017093C2010C9489
-:1038C000101841E050E060E070E004C0440F551F64
-:1038D000661F771F8A95D2F78091BF019091C00132
-:1038E000A091C101B091C201482B592B6A2B7B2BAF
-:1038F0004093BF015093C0016093C1017093C20116
-:103900000C94101841E050E060E070E004C0440FF7
-:10391000551F661F771F8A95D2F740955095609581
-:1039200070958091BF019091C001A091C101B091AB
-:10393000C201482359236A237B234093BF0150933C
-:10394000C0016093C1017093C2010C94101841E052
-:1039500050E060E070E004C0440F551F661F771F01
-:103960008A95D2F78091BF019091C001A091C101C9
-:10397000B091C201482759276A277B274093BF018E
-:103980005093C0016093C1017093C2010C94101850
-:103990000F931F930091BF011091C0012091C101AD
-:1039A0003091C201DC01CB01802B912BA22BB32BD8
-:1039B0008093BF019093C001A093C101B093C20155
-:1039C0001F910F910C9410180F931F930091BF013A
-:1039D0001091C0012091C1013091C201DC01CB01E5
-:1039E00080239123A223B3238093BF019093C0012E
-:1039F000A093C101B093C2011F910F910C941018B4
-:103A00000F931F930091BF011091C0012091C1013C
-:103A10003091C201DC01CB0180279127A227B32777
-:103A20008093BF019093C001A093C101B093C201E4
-:103A30001F910F910C9410180895CF92DF92EF927E
-:103A4000FF920F931F93CF93DF938C01C090C3011C
-:103A5000D090C401E090C501F090C6018091BF01F3
-:103A60009091C001A091C101B091C201C82AD92A88
-:103A7000EA2AFB2ACFE1D0E0D701C6010C2E04C010
-:103A8000B695A795979587950A94D2F780FF06C0BB
-:103A9000B8018C2F0E94E90B019721F4219760F760
-:103AA00080E001C08C2FDF91CF911F910F91FF908B
-:103AB000EF90DF90CF900895CF93DF93EC010E94B9
-:103AC0001D1DBE010E94E90BDF91CF910895CB012E
-:103AD0000E945C1D08958091C70185958595859507
-:103AE00008958091C7018770089598E0899F90019B
-:103AF0001124262B2093C7010C94611C2091C7012F
-:103B0000809582238093C701982F977069F430E0E5
-:103B1000482F552747FD50952417350729F08595DF
-:103B2000859585950C94821C08959091C701977096
-:103B300081E009F480E0089590910C01992321F02F
-:103B400090910D01911109C020910E0130910F014A
-:103B5000F90132969FEF40E01FC0982F96959695F9
-:103B600096959F3050F5E0910E01F0910F01E90F0D
-:103B7000F11D877021E030E0A90102C0440F551FFC
-:103B80008A95E2F7CA019181892B818308959F3F2D
-:103B900039F04F5F4E3041F051915813F8CF0DC0BE
-:103BA0005111F7CF942FF5CF9F3F39F0F901E90F6D
-:103BB000F11D97FDFA9582830895089590910C0167
-:103BC000992321F090910D01911109C020910E01CE
-:103BD00030910F01F9013296205F3F4F1FC0982F9F
-:103BE0009695969596959F30F0F4E0910E01F091A0
-:103BF0000F01E90FF11D877021E030E0A90102C03B
-:103C0000440F551F8A95E2F7CA0180959181892357
-:103C1000818308953196E217F30729F09081981374
-:103C2000F9CF1082F7CF089581E090E0E0910E0186
-:103C3000F0910F01E80FF91F108201968031910574
-:103C4000A9F708959091DB01892B8093DB010895FA
-:103C500080959091DB0189238093DB010895109278
-:103C6000DB0108959091DA01892B8093DA010895A0
-:103C700080959091DA0189238093DA01089510925A
-:103C8000DA0108959091D901892B8093D901089583
-:103C900080959091D90189238093D901089510923C
-:103CA000D90108958093C80108951092C80108951C
-:103CB00080910E0190910F01FC0131969C01205FD3
-:103CC0003F4F80E0919191118F5FE217F307D1F799
-:103CD0000895E0910E01F0910F018091DB01808346
-:103CE000E0910E01F0910F0190818091DA01892B12
-:103CF0008083E0910E01F0910F0190818091D901B4
-:103D0000892B80838091C801882361F0E0910E01A6
-:103D1000F0910F019081892B80830E94581E8111A0
-:103D20001092C80180910E0190910F010C9497138D
-:103D300020E0009739F0AC014150510984239523CC
-:103D40002F5FF7CF822F0895CF92DF92EF92FF92ED
-:103D50006C01EE24FF24C114D104E104F10421F02C
-:103D6000C701B60120E101C020E0C72ED82EE92E00
-:103D7000FF24C114D104E104F10419F0285FC70144
-:103D8000B6016B017C0154E0F694E794D794C79494
-:103D90005A95D1F7C114D104E104F10419F02C5F54
-:103DA000C701B6016B017C0142E0F694E794D79419
-:103DB000C7944A95D1F7C114D104E104F10419F074
-:103DC0002E5FC701B601DC01CB01B695A79597958B
-:103DD0008795892B8A2B8B2B09F02F5F822FFF90E1
-:103DE000EF90DF90CF9008958091F301843021F11E
-:103DF0001092DD0120E488E190E00FB6F894A895D8
-:103E0000809360000FBE2093600080E00E94840CCD
-:103E100083B7817F846083BF83B7816083BF7894D9
-:103E2000889583B78E7F83BF88E10FB6F89480931F
-:103E30006000109260000FBE0895089508950E94DA
-:103E40001D1F0E94F8040E941E1F0E94ED0591E0B4
-:103E5000811101C090E0892F08950E9424180E94CA
-:103E60008B130C94840C82E084BD93E095BD9AEF93
-:103E700097BD80936E0008952FB7F8948091DE016E
-:103E80009091DF01A091E001B091E1012FBF089571
-:103E9000CF92DF92EF92FF920F931F932FB7F89478
-:103EA0004091DE015091DF016091E0017091E101EC
-:103EB0002FBF6A017B01EE24FF248C0120E030E05B
-:103EC000C016D106E206F30610F4415051099A01DA
-:103ED000281B390BC9011F910F91FF90EF90DF90C4
-:103EE000CF9008951F920F920FB60F9211248F93C7
-:103EF0009F93AF93BF938091DE019091DF01A091DA
-:103F0000E001B091E1010196A11DB11D8093DE0198
-:103F10009093DF01A093E001B093E101BF91AF91D5
-:103F20009F918F910F900FBE0F901F9018950E9438
-:103F30008810F8942FEF87EA91E621508040904056
-:103F4000E1F700C0000087E090EBDC018093FD0109
-:103F50009093FE01A093FF01B09300029CE088E1E2
-:103F60000FB6F894A895809360000FBE9093600000
-:103F7000FFCFEF92FF920F931F93CF93DF93D82F32
-:103F8000CDE08C2F0E94E60505E010E0E82EF12C34
-:103F9000C701002E02C0959587950A94E2F780FF2D
-:103FA00009C0602F7C2F80E00E949409D81302C0C2
-:103FB00081E006C00150110958F7C15010F780E0A8
-:103FC000DF91CF911F910F91FF90EF900895CF93C4
-:103FD000C82F8CE20E94B91F882321F08C2FCF912B
-:103FE0000C94B91F80E0CF910895CF930E943C219B
-:103FF000811102C00E942221C5E6C15049F00E94F1
-:10400000F8048FE39CE90197F1F700C00000F5CFB9
-:1040100089E20E94E71F811113C18AE20E94E71F13
-:1040200081110E94222185E00E94E71F81110E94D8
-:10403000971F0E9447218093DC0187E00E94E71FC1
-:104040008823A9F18BE10E94E71F882351F080911A
-:10405000DC0181FB222720F991E0922790FB81F976
-:104060000EC08EE00E94E71F882361F08091DC0182
-:1040700082FB222720F991E0922790FB82F980931E
-:10408000DC0115C080E10E94E71F9091DC018823CC
-:1040900041F093FB222720F981E0822780FB93F9EE
-:1040A00004C0892F809580FB90F99093DC0180916A
-:1040B000DC010E944B210E9459218093FC0180EE7B
-:1040C0000E94E71F882341F08091FC01982F909572
-:1040D00090FB80F98093FC0189E30E94E71F88230D
-:1040E00059F08091FC0181FB222720F991E0922771
-:1040F00090FB81F98093FC0182EE0E94E71F8823E8
-:1041000059F08091FC0182FB222720F991E092274F
-:1041100090FB82F98093FC0186EE0E94E71F8823C2
-:1041200059F08091FC0183FB222720F991E092272E
-:1041300090FB83F98093FC0183EE0E94E71F8823A4
-:1041400059F08091FC0184FB222720F991E092270D
-:1041500090FB84F98093FC0185E30E94E71F88238C
-:1041600059F08091FC0185FB222720F991E09227EC
-:1041700090FB85F98093FC0181E30E94E71F88236F
-:1041800059F08091FC0186FB222720F991E09227CB
-:1041900090FB86F98093FC0181E10E94E71F882350
-:1041A00059F08091FC0187FB222720F991E09227AA
-:1041B00090FB87F98093FC018091FC010E945D21B6
-:1041C0008091FC0187FB882780F980930D0187E2AD
-:1041D0000E94E71FC82F8EE10E94E71F8111C26075
-:1041E0008FE10E94E71F8111C46080E20E94E71FF7
-:1041F0008111C86081E20E94E71F8111C06182E2E3
-:104200000E94E71F8111C06283E20E94E71F8111B3
-:10421000C06484E20E94E71F882311F0C06802C0D6
-:10422000CC2329F08C2F0E9454216C2F03C00E94B4
-:104230005021682F70E080E090E0CF910C94E41B57
-:10424000CF9108956DEE7EEF80E090E00E948E2782
-:1042500060E082E090E00E947C2760E083E090E0F4
-:104260000E947C2760E084E090E00E947C2760E070
-:1042700085E090E00C947C2780E090E00E94762717
-:1042800021E08D3E9E4F09F020E0822F089582E0CC
-:1042900090E00C946E27682F82E090E00C947C27CD
-:1042A00083E090E00C946E27682F83E090E00C94FC
-:1042B0007C2784E090E00C946E27682F84E090E0E7
-:1042C0000C947C278091E40180FF0BC06091130166
-:1042D00085E0689FB0011124759567957595679580
-:1042E0002BC081FF09C06091130185E0689FB00178
-:1042F00011247595679520C082FF07C06091130156
-:1043000085E0689FB001112417C09091E5019923C1
-:10431000D1F060911201961788F72091130185E082
-:10432000289F90011124929FA001939F500D11246A
-:1043300070E0CA010E9440276038710540F46115A1
-:10434000710539F002C065E070E0862F08958FE7AF
-:10435000089581E008958091E40180FF08C0609194
-:10436000110170E0759567957595679521C081FF7E
-:1043700006C06091110170E07595679519C082FFC4
-:1043800004C06091110170E010C09091E501992383
-:10439000C1F0609110019617A0F780911101899FDB
-:1043A000C001112470E00E9440276038710528F494
-:1043B0006115710521F0862F08958FE7089581E03A
-:1043C000089561E070E0F4CF803F21F40E94622103
-:1043D000819504C0813F29F40E9462218093E80105
-:1043E0000895823F21F40E946221819504C0833F99
-:1043F00029F40E9462218093E7010895893F19F40E
-:104400000E94AB2105C08A3F31F40E94AB21819507
-:104410008093E90108958B3F21F40E94AB2181959F
-:1044200004C08C3F29F40E94AB218093EA010895D7
-:10443000843F21F48091E601816017C0853F21F41B
-:104440008091E601826011C0863F21F48091E601EF
-:1044500084600BC0873F21F48091E601886005C02D
-:10446000883F31F48091E60180618093E6010895F0
-:104470008D3F21F48091E40181600BC08E3F21F4D7
-:104480008091E401826005C08F3F29F48091E401AE
-:1044900084608093E4010895803F39F48091E801BD
-:1044A00087FF6CC01092E80169C0813F29F48091B8
-:1044B000E8011816BCF362C09091E701823F29F42D
-:1044C00097FF5CC01092E70159C0833F19F4191699
-:1044D000CCF354C0893F41F48091E90118160CF0E7
-:1044E0004DC01092E9014AC08A3F29F48091E90148
-:1044F00087FF44C0F6CF8B3F39F48091EA0187FFF4
-:104500003DC01092EA013AC08C3F29F48091EA0143
-:104510001816BCF333C0843F21F48091E6018E7FEE
-:1045200017C0853F21F48091E6018D7F11C0863F41
-:1045300021F48091E6018B7F0BC0873F21F48091AD
-:10454000E601877F05C0883F31F48091E6018F7EC8
-:104550008093E60113C08D3F21F48091E4018E7FAA
-:104560000BC08E3F21F48091E4018D7F05C08F3F09
-:1045700029F48091E4018B7F8093E4018091E7012D
-:1045800081110EC08091E80181110AC08091E9017A
-:10459000811106C08091EA01811102C01092E501EB
-:1045A000089586EE91E00E94A2130E943C1F909312
-:1045B000E3018093E20108951F93CF93DF938091ED
-:1045C000E2019091E3010E94481FAC019091E50146
-:1045D000992321F02091140130E006C020911501AB
-:1045E0008AE0289F900111244217530708F486C0DF
-:1045F0008091E701C091E801D091E9011091EA01B1
-:10460000811107C0C11176C0D11174C0111172C0DF
-:1046100075C09F3F19F09F5F9093E501181624F431
-:104620000E9462218093E7018091E70187FF05C026
-:104630000E94622181958093E7011C1624F40E9458
-:1046400062218093E8018091E80187FF05C00E9404
-:10465000622181958093E8016091E701662339F139
-:10466000C091E801CC2319F1772767FD7095872F5A
-:10467000972F0E94512623E333E343E35FE30E9435
-:10468000B5260E941E266093E7016C2F772767FDF1
-:104690007095872F972F0E94512623E333E343E33E
-:1046A0005FE30E94B5260E941E266093E8011D1656
-:1046B00024F40E94AB218093E9018091E90187FFF6
-:1046C00005C00E94AB2181958093E901111624F465
-:1046D0000E94AB218093EA018091EA0187FF05C027
-:1046E0000E94AB2181958093EA01DF91CF911F91C8
-:1046F0000C94D1229F3F09F08ECF96CFDF91CF91BE
-:104700001F910895E6EEF1E085E0DF011D928A95A4
-:10471000E9F71092E5011092E4010895833081F1E8
-:1047200028F4813059F08230D1F00895853009F4B1
-:1047300049C0B8F1863009F456C00895809115013A
-:10474000262F30E0280F311D2F3F310524F4680F4C
-:104750006093150108958FEF80931501089580915E
-:104760001401262F30E0280F311D2F3F310524F48E
-:10477000680F6093140108958FEF809314010895DA
-:1047800080911301262F30E0280F311D2F3F310576
-:1047900024F4680F6093130108958FEF8093130141
-:1047A000089580911201262F30E0280F311D2F3FF0
-:1047B000310524F4680F6093120108958FEF809300
-:1047C0001201089580911101262F30E0280F311D2C
-:1047D0002F3F310524F4680F6093110108958FEF86
-:1047E00080931101089580911001262F30E0280F49
-:1047F000311D2F3F310524F4680F60931001089597
-:104800008FEF809310010895833011F128F48130E7
-:1048100049F0823091F00895853081F120F18630A1
-:10482000C1F1089580911501681720F4861B8093CB
-:1048300015010895109215010895809114016817CB
-:1048400020F4861B8093140108951092140108959A
-:1048500080911301681720F4861B8093130108953B
-:1048600010921301089580911201681720F4861B9D
-:104870008093120108951092120108958091110100
-:10488000681720F4861B809311010895109211017E
-:10489000089580911001681720F4861B8093100101
-:1048A00008951092100108950F931F938D3109F40C
-:1048B0006BC008F03FC08E3009F47FC0C0F4873071
-:1048C00009F469C068F4863009F0B1C08091DC0158
-:1048D000817F8E7F8093DC0181E08093EC01A8C012
-:1048E000883009F4A2C08B3009F49FC0A0C0863183
-:1048F00009F49BC078F4803109F472C0813109F069
-:1049000096C00E94241890910D0181E08927809320
-:104910000D018BC0893109F488C08B3109F087C043
-:104920008091DC0181FB222720F991E0922790FB06
-:1049300081F94CC0853309F470C048F4873209F41A
-:104940006CC008F459C0893209F467C070C0833460
-:1049500038F48A3308F04EC0883309F466C067C063
-:10496000833409F45AC0883409F061C00E942418C5
-:104970000FEF13ED20E3015010402040E1F700C09D
-:1049800000000E94971F51C00E94D8250E948B13DF
-:104990000E94840C4AC09091DC01892F809581701F
-:1049A00080FB90F929F0966098609093DC0140C0FC
-:1049B000997F977F9093DC0138C08091DC0182FB66
-:1049C000222720F991E0922790FB82F98093DC0165
-:1049D000992359F18091DC0181608093DC0125C02D
-:1049E0008091DC0183FB222720F991E0922790FB44
-:1049F00083F9ECCF895301C08D5141E050E060E074
-:104A000070E08A019B0104C0000F111F221F331F99
-:104A10008A95D2F7C901B80104C061E070E080E076
-:104A200090E00E94E41B0E94241881E001C080E015
-:104A30001F910F91089580E0089580E00895CF932D
-:104A4000C82F8091EC01813079F018F08230E9F1C3
-:104A500087C0E0910E01F0910F018081813169F0F2
-:104A6000823209F07FC009C0E0910E01F0910F0180
-:104A70008081813111F0823261F48C2F0E941B25DC
-:104A8000811104C08C2F0E9454241DC081E090E04D
-:104A90001AC08C2F0E941D25811114C0C43179F0D9
-:104AA00048F4CB3079F0C03109F060C082E08093E7
-:104AB000EC0108C0C93219F0C83321F057C0109278
-:104AC000EC0154C081E0817053C0C93289F118F5FE
-:104AD000C43171F1A8F4C73009F046C08AE0809370
-:104AE000150194E19093140193E090931301809346
-:104AF000120188E08093110188E28093100134C094
-:104B0000CE51C63088F5EC2FF0E0E65DFE4F808197
-:104B10008093EB0129C0CE34E9F020F4CB3421F5A9
-:104B20006AE013C0C13579F0C235F1F461E00DC01F
-:104B30008091EB01882319F01092EB0115C081E000
-:104B40008093EC0115C061E006C08091EB010E94EA
-:104B50008E230AC06AE08091EB010E94042404C005
-:104B60001092EC0180E004C081E002C080E0ABCF95
-:104B7000CF910895E1E8F0E08081886080838081B2
-:104B8000816080838FB7F89493E09093890090EDD3
-:104B9000909388008FBF0895EFE6F0E080818260F7
-:104BA00080830895EFE6F0E080818D7F8083089513
-:104BB000EFE6F0E0908182E08927808308951F92DC
-:104BC0000F920FB60F9211242F933F934F935F9341
-:104BD0006F937F938F939F93AF93BF93EF93FF93C5
-:104BE0008091ED019091EE0101969093EE018093FA
-:104BF000ED01811103C082E00E94840CE091EE017E
-:104C0000E695E695F0E0E25FF74FE4918091ED01E3
-:104C10008E1303C080E00E94840CFF91EF91BF913E
-:104C2000AF919F918F917F916F915F914F913F9144
-:104C30002F910F900FBE0F901F90189504D068947D
-:104C4000B1118DC0089570D088F09F5790F0B92FA2
-:104C50009927B751A0F0D1F0660F771F881F991FD1
-:104C60001AF0BA95C9F712C0B13081F077D0B1E02F
-:104C7000089574C0672F782F8827B85F39F0B93F3F
-:104C8000CCF3869577956795B395D9F73EF49095D3
-:104C90008095709561957F4F8F4F9F4F0895E89451
-:104CA00009C097FB3EF490958095709561957F4F74
-:104CB0008F4F9F4F9923A9F0F92F96E9BB27939522
-:104CC000F695879577956795B795F111F8CFFAF432
-:104CD000BB0F11F460FF1BC06F5F7F4F8F4F9F4F63
-:104CE00016C0882311F096E911C0772321F09EE8C1
-:104CF000872F762F05C0662371F096E8862F70E027
-:104D000060E02AF09A95660F771F881FDAF7880F00
-:104D10009695879597F9089557FD9058440F551F1C
-:104D200059F05F3F71F04795880F97FB991F61F02D
-:104D30009F3F79F087950895121613061406551FA4
-:104D4000F2CF4695F1DF08C0161617061806991F10
-:104D5000F1CF86957105610508940895E894BB2705
-:104D600066277727CB0197F908950BD078C069D0D3
-:104D700028F06ED018F0952309F05AC05FC01124B6
-:104D8000EECFCADFA0F3959FD1F3950F50E0551FEA
-:104D9000629FF001729FBB27F00DB11D639FAA2790
-:104DA000F00DB11DAA1F649F6627B00DA11D661FDF
-:104DB000829F2227B00DA11D621F739FB00DA11D00
-:104DC000621F839FA00D611D221F749F3327A00DBA
-:104DD000611D231F849F600D211D822F762F6A2F56
-:104DE00011249F5750408AF0E1F088234AF0EE0FDB
-:104DF000FF1FBB1F661F771F881F91505040A9F7E8
-:104E00009E3F510570F014C0AACF5F3FECF3983E6F
-:104E1000DCF3869577956795B795F795E7959F5F4E
-:104E2000C1F7FE2B880F911D9695879597F90895E8
-:104E300097F99F6780E870E060E008959FEF80EC4D
-:104E4000089500240A9416161706180609060895F0
-:104E500000240A9412161306140605060895092E56
-:104E60000394000C11F4882352F0BB0F40F4BF2BC5
-:104E700011F460FF04C06F5F7F4F8F4F9F4F089505
-:104E800097FB072E16F4009407D077FD09D00E94F7
-:104E90005A2707FC05D03EF4909581959F4F0895C1
-:104EA000709561957F4F0895EE0FFF1F0590F49167
-:104EB000E02D0994AA1BBB1B51E107C0AA1FBB1F11
-:104EC000A617B70710F0A61BB70B881F991F5A9596
-:104ED000A9F780959095BC01CD010895F999FECF71
-:104EE00092BD81BDF89A992780B50895A8E1B0E0F8
-:104EF00042E050E00C949627262FF999FECF92BD00
-:104F000081BDF89A019700B4021639F01FBA20BD8E
-:104F10000FB6F894FA9AF99A0FBE08950196272FC2
-:104F20000E947D270C947C27DC01CB01FC01F999C0
-:104F3000FECF06C0F2BDE1BDF89A319600B40D92E5
-:0C4F400041505040B8F70895F894FFCF9E
-:104F4C000220860C140DF10CBD0C890C0101C90159
-:104F5C0028080A03140A3F4D3639CF0782074C073D
-:104F6C001307A606BF06D806F106010203040506C0
-:044F7C000708090019
-:00000001FF
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
deleted file mode 100644
index 5fcc14d518..0000000000
--- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
+++ /dev/null
@@ -1,783 +0,0 @@
-#include "ergodox_ez.h"
-#include "action_layer.h"
-#include "keymap.h"
-#include "keymap_german.h"
-
-#define UC_ASYMPTOTICALLY_EQUAL_TO 0
-#define UC_DIVISION_SIGN 1
-#define UC_DOWNWARDS_ARROW 2
-#define UC_ELEMENT_OF 3
-#define UC_EMPTY_SET 4
-#define UC_FOR_ALL 5
-#define UC_GREEK_CAPITAL_LETTER_ALPHA 6
-#define UC_GREEK_CAPITAL_LETTER_BETA 7
-#define UC_GREEK_CAPITAL_LETTER_CHI 8
-#define UC_GREEK_CAPITAL_LETTER_DELTA 9
-#define UC_GREEK_CAPITAL_LETTER_EPSILON 10
-#define UC_GREEK_CAPITAL_LETTER_ETA 11
-#define UC_GREEK_CAPITAL_LETTER_GAMMA 12
-#define UC_GREEK_CAPITAL_LETTER_IOTA 13
-#define UC_GREEK_CAPITAL_LETTER_KAPPA 14
-#define UC_GREEK_CAPITAL_LETTER_LAMDA 15
-#define UC_GREEK_CAPITAL_LETTER_MU 16
-#define UC_GREEK_CAPITAL_LETTER_NU 17
-#define UC_GREEK_CAPITAL_LETTER_OMEGA 18
-#define UC_GREEK_CAPITAL_LETTER_OMICRON 19
-#define UC_GREEK_CAPITAL_LETTER_PHI 20
-#define UC_GREEK_CAPITAL_LETTER_PI 21
-#define UC_GREEK_CAPITAL_LETTER_PSI 22
-#define UC_GREEK_CAPITAL_LETTER_RHO 23
-#define UC_GREEK_CAPITAL_LETTER_SIGMA 24
-#define UC_GREEK_CAPITAL_LETTER_TAU 25
-#define UC_GREEK_CAPITAL_LETTER_THETA 26
-#define UC_GREEK_CAPITAL_LETTER_UPSILON 27
-#define UC_GREEK_CAPITAL_LETTER_XI 28
-#define UC_GREEK_CAPITAL_LETTER_ZETA 29
-#define UC_GREEK_SMALL_LETTER_ALPHA 30
-#define UC_GREEK_SMALL_LETTER_BETA 31
-#define UC_GREEK_SMALL_LETTER_CHI 32
-#define UC_GREEK_SMALL_LETTER_DELTA 33
-#define UC_GREEK_SMALL_LETTER_EPSILON 34
-#define UC_GREEK_SMALL_LETTER_ETA 35
-#define UC_GREEK_SMALL_LETTER_FINAL_SIGMA 36
-#define UC_GREEK_SMALL_LETTER_GAMMA 37
-#define UC_GREEK_SMALL_LETTER_IOTA 38
-#define UC_GREEK_SMALL_LETTER_KAPPA 39
-#define UC_GREEK_SMALL_LETTER_LAMDA 40
-#define UC_GREEK_SMALL_LETTER_MU 41
-#define UC_GREEK_SMALL_LETTER_NU 42
-#define UC_GREEK_SMALL_LETTER_OMEGA 43
-#define UC_GREEK_SMALL_LETTER_OMICRON 44
-#define UC_GREEK_SMALL_LETTER_PHI 45
-#define UC_GREEK_SMALL_LETTER_PI 46
-#define UC_GREEK_SMALL_LETTER_PSI 47
-#define UC_GREEK_SMALL_LETTER_RHO 48
-#define UC_GREEK_SMALL_LETTER_SIGMA 49
-#define UC_GREEK_SMALL_LETTER_TAU 50
-#define UC_GREEK_SMALL_LETTER_THETA 51
-#define UC_GREEK_SMALL_LETTER_UPSILON 52
-#define UC_GREEK_SMALL_LETTER_XI 53
-#define UC_GREEK_SMALL_LETTER_ZETA 54
-#define UC_INFINITY 55
-#define UC_LEFTWARDS_ARROW 56
-#define UC_MULTIPLICATION_SIGN 57
-#define UC_NOT_AN_ELEMENT_OF 58
-#define UC_NOT_EQUAL_TO 59
-#define UC_PLUS_MINUS_SIGN 60
-#define UC_RIGHTWARDS_ARROW 61
-#define UC_SUBSCRIPT_EIGHT 62
-#define UC_SUBSCRIPT_FIVE 63
-#define UC_SUBSCRIPT_FOUR 64
-#define UC_SUBSCRIPT_NINE 65
-#define UC_SUBSCRIPT_ONE 66
-#define UC_SUBSCRIPT_SEVEN 67
-#define UC_SUBSCRIPT_SIX 68
-#define UC_SUBSCRIPT_THREE 69
-#define UC_SUBSCRIPT_TWO 70
-#define UC_SUBSCRIPT_ZERO 71
-#define UC_SUPERSCRIPT_EIGHT 72
-#define UC_SUPERSCRIPT_FIVE 73
-#define UC_SUPERSCRIPT_FOUR 74
-#define UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N 75
-#define UC_SUPERSCRIPT_NINE 76
-#define UC_SUPERSCRIPT_ONE 77
-#define UC_SUPERSCRIPT_SEVEN 78
-#define UC_SUPERSCRIPT_SIX 79
-#define UC_SUPERSCRIPT_THREE 80
-#define UC_SUPERSCRIPT_TWO 81
-#define UC_SUPERSCRIPT_ZERO 82
-#define UC_THERE_DOES_NOT_EXIST 83
-#define UC_THERE_EXISTS 84
-#define UC_UPWARDS_ARROW 85
-#define UC_VULGAR_FRACTION_ONE_EIGHTH 86
-#define UC_VULGAR_FRACTION_ONE_FIFTH 87
-#define UC_VULGAR_FRACTION_ONE_HALF 88
-#define UC_VULGAR_FRACTION_ONE_QUARTER 89
-#define UC_VULGAR_FRACTION_ONE_SIXTH 90
-#define UC_VULGAR_FRACTION_ONE_THIRD 91
-#define UC_VULGAR_FRACTION_THREE_QUARTERS 92
-#define UC_VULGAR_FRACTION_TWO_THIRDS 93
-#define UM 94
-
-#define L0 0 // layer_0
-#define L1 1 // layer_1
-#define L2 2 // layer_2
-#define L3 3 // layer_3
-#define L4 4 // layer_4
-#define L5 5 // layer_5
-#define L6 6 // layer_6
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/*
- * .------------------------------------.------------------------------------.
- * |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- * | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT|
- * '------------------------' '------------------------'
- * .-----------. .-----------.
- * |INS |TG(2)| !M(UM)|DELT |
- * .-----+-----+-----! !-----+-----+-----.
- * ! ! | APP | ! PGUP| ! !
- * ! ! !-----! !-----! ! !
- * |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
- * '-----------------' '-----------------'
- */
-[L0] = KEYMAP(
- MO(5), DE_1, DE_2, DE_3, DE_4, DE_5, DE_ACUT,
- MO(4), DE_X, DE_P, DE_F, DE_W, DE_G, KC_HOME,
- MO(1), DE_U, DE_I, DE_A, DE_E, DE_O,
- MO(3), DE_UE, DE_OE, DE_AE, DE_C, DE_V, KC_END,
- KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LCTL,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_INS, TG(2),
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_APP,
- /*-*/ /*-*/ /*-*/ /*-*/ KC_BSPC, KC_LSFT, KC_ESC,
- DE_GRV, DE_6, DE_7, DE_8, DE_9, DE_0, DE_CIRC,
- TG(2), DE_H, DE_J, DE_K, DE_L, DE_Q, DE_Z,
- /*-*/ DE_S, DE_N, DE_R, DE_T, DE_D, DE_SS,
- KC_TAB, DE_B, DE_M, DE_COMM, DE_DOT, KC_UP, DE_Y,
- /*-*/ /*-*/ KC_RCTL, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT,
- M(UM), KC_DELT,
- KC_PGUP,
- KC_PGDN, KC_ENTER, KC_SPACE
-),
-/*
- * .------------------------------------.------------------------------------.
- * | |EXLM|DQOT|PARA| | | | | | | | |RING| |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- * | | | | | | ! | | ← | ↓ | → |
- * '------------------------' '------------------------'
- * .-----------. .-----------.
- * | | | ! | |
- * .-----+-----+-----! !-----+-----+-----.
- * ! ! | | ! | ! !
- * ! ! !-----! !-----! ! !
- * | | | | ! | | |
- * '-----------------' '-----------------'
- */
-[L1] = KEYMAP(
- KC_TRNS, DE_EXLM, DE_DQOT, DE_PARA, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, DE_ASTR, DE_PIPE, DE_SLSH, DE_LCBR, DE_RCBR, KC_TRNS,
- KC_TRNS, DE_UNDS, DE_MINS, DE_AMPR, DE_LBRC, DE_RBRC,
- KC_TRNS, KC_TRNS, DE_PLUS, DE_EQL, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, DE_RING, KC_TRNS,
- KC_TRNS, DE_HASH, DE_LESS, DE_MORE, KC_TRNS, DE_DQOT, KC_TRNS,
- /*-*/ DE_DLR, DE_LPRN, DE_RPRN, DE_TILD, DE_QUOT, DE_QST,
- KC_TRNS, DE_BSLS, DE_PERC, DE_SCLN, DE_COLN, M(UC_UPWARDS_ARROW), KC_TRNS,
- /*-*/ /*-*/ KC_TRNS, KC_TRNS, M(UC_LEFTWARDS_ARROW), M(UC_DOWNWARDS_ARROW), M(UC_RIGHTWARDS_ARROW),
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- * | | | | | | ! P0 |PCMM|PDOT|PENT|PENT|
- * '------------------------' '------------------------'
- * .-----------. .-----------.
- * | | | ! | |
- * .-----+-----+-----! !-----+-----+-----.
- * ! ! | | ! | ! !
- * ! ! !-----! !-----! ! !
- * | | | | ! | | |
- * '-----------------' '-----------------'
- */
-[L2] = KEYMAP(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
- KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PEQL,
- KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PAST, KC_PSLS,
- /*-*/ KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PMNS,
- KC_NLCK, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PPLS,
- /*-*/ /*-*/ KC_P0, KC_PCMM, KC_PDOT, KC_PENT, KC_PENT,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- * | | | | | | ! | | | | |
- * '------------------------' '------------------------'
- * .-----------. .-----------.
- * | | | ! | |
- * .-----+-----+-----! !-----+-----+-----.
- * ! ! | | ! | ! !
- * ! ! !-----! !-----! ! !
- * | | | | ! | | |
- * '-----------------' '-----------------'
- */
-[L3] = KEYMAP(
- KC_TRNS, M(UC_SUPERSCRIPT_ONE), M(UC_SUPERSCRIPT_TWO), M(UC_SUPERSCRIPT_THREE), M(UC_SUPERSCRIPT_FOUR), M(UC_SUPERSCRIPT_FIVE), M(UC_FOR_ALL),
- KC_TRNS, M(UC_MULTIPLICATION_SIGN), M(UC_VULGAR_FRACTION_ONE_HALF), M(UC_DIVISION_SIGN), M(UC_VULGAR_FRACTION_ONE_QUARTER), M(UC_VULGAR_FRACTION_ONE_FIFTH), KC_TRNS,
- KC_TRNS, KC_TRNS, M(UC_PLUS_MINUS_SIGN), DE_AT, DE_EURO, M(UC_EMPTY_SET),
- KC_TRNS, M(UC_VULGAR_FRACTION_ONE_THIRD), M(UC_NOT_EQUAL_TO), M(UC_VULGAR_FRACTION_TWO_THIRDS), M(UC_VULGAR_FRACTION_THREE_QUARTERS), M(UC_ASYMPTOTICALLY_EQUAL_TO), KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, M(UC_SUPERSCRIPT_SIX), M(UC_SUPERSCRIPT_SEVEN), M(UC_SUPERSCRIPT_EIGHT), M(UC_SUPERSCRIPT_NINE), M(UC_SUPERSCRIPT_ZERO), KC_TRNS,
- KC_TRNS, M(UC_VULGAR_FRACTION_ONE_SIXTH), KC_TRNS, M(UC_VULGAR_FRACTION_ONE_EIGHTH), KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ M(UC_INFINITY), M(UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N), M(UC_THERE_EXISTS), M(UC_ELEMENT_OF), KC_TRNS, KC_TRNS,
- KC_TRNS, DE_EXLM, KC_TRNS, M(UC_THERE_DOES_NOT_EXIST), M(UC_NOT_AN_ELEMENT_OF), KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | | θ | | | | | | β | μ | | | | ψ |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- * | | | | | | ! | | | | |
- * '------------------------' '------------------------'
- * .-----------. .-----------.
- * | | | ! | |
- * .-----+-----+-----! !-----+-----+-----.
- * ! ! | | ! | ! !
- * ! ! !-----! !-----! ! !
- * | | | | ! | | |
- * '-----------------' '-----------------'
- */
-[L4] = KEYMAP(
- KC_TRNS, M(UC_SUBSCRIPT_ONE), M(UC_SUBSCRIPT_TWO), M(UC_SUBSCRIPT_THREE), M(UC_SUBSCRIPT_FOUR), M(UC_SUBSCRIPT_FIVE), KC_TRNS,
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_CHI), M(UC_GREEK_SMALL_LETTER_PI), M(UC_GREEK_SMALL_LETTER_PHI), M(UC_GREEK_SMALL_LETTER_OMEGA), M(UC_GREEK_SMALL_LETTER_GAMMA), KC_TRNS,
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_UPSILON), M(UC_GREEK_SMALL_LETTER_IOTA), M(UC_GREEK_SMALL_LETTER_ALPHA), M(UC_GREEK_SMALL_LETTER_EPSILON), M(UC_GREEK_SMALL_LETTER_OMICRON),
- KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, M(UC_SUBSCRIPT_SIX), M(UC_SUBSCRIPT_SEVEN), M(UC_SUBSCRIPT_EIGHT), M(UC_SUBSCRIPT_NINE), M(UC_SUBSCRIPT_ZERO), KC_TRNS,
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_ETA), M(UC_GREEK_SMALL_LETTER_XI), M(UC_GREEK_SMALL_LETTER_KAPPA), M(UC_GREEK_SMALL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_SMALL_LETTER_ZETA),
- /*-*/ M(UC_GREEK_SMALL_LETTER_SIGMA), M(UC_GREEK_SMALL_LETTER_NU), M(UC_GREEK_SMALL_LETTER_RHO), M(UC_GREEK_SMALL_LETTER_TAU), M(UC_GREEK_SMALL_LETTER_DELTA), M(UC_GREEK_SMALL_LETTER_FINAL_SIGMA),
- KC_TRNS, M(UC_GREEK_SMALL_LETTER_BETA), M(UC_GREEK_SMALL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_SMALL_LETTER_PSI),
- /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * | | | | | | | | | | | | | | |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | | Θ | | | | | | Β | Μ | | | | Ψ |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- * | | | | | | ! | | | | |
- * '------------------------' '------------------------'
- * .-----------. .-----------.
- * | | | ! | |
- * .-----+-----+-----! !-----+-----+-----.
- * ! ! | | ! | ! !
- * ! ! !-----! !-----! ! !
- * | | | | ! | | |
- * '-----------------' '-----------------'
- */
-[L5] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_CHI), M(UC_GREEK_CAPITAL_LETTER_PI), M(UC_GREEK_CAPITAL_LETTER_PHI), M(UC_GREEK_CAPITAL_LETTER_OMEGA), M(UC_GREEK_CAPITAL_LETTER_GAMMA), KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_UPSILON), M(UC_GREEK_CAPITAL_LETTER_IOTA), M(UC_GREEK_CAPITAL_LETTER_ALPHA), M(UC_GREEK_CAPITAL_LETTER_EPSILON), M(UC_GREEK_CAPITAL_LETTER_OMICRON),
- KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_THETA), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ETA), M(UC_GREEK_CAPITAL_LETTER_XI), M(UC_GREEK_CAPITAL_LETTER_KAPPA), M(UC_GREEK_CAPITAL_LETTER_LAMDA), KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_ZETA),
- /*-*/ M(UC_GREEK_CAPITAL_LETTER_SIGMA), M(UC_GREEK_CAPITAL_LETTER_NU), M(UC_GREEK_CAPITAL_LETTER_RHO), M(UC_GREEK_CAPITAL_LETTER_TAU), M(UC_GREEK_CAPITAL_LETTER_DELTA), KC_TRNS,
- KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_BETA), M(UC_GREEK_CAPITAL_LETTER_MU), KC_TRNS, KC_TRNS, KC_TRNS, M(UC_GREEK_CAPITAL_LETTER_PSI),
- /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-/*
- * .------------------------------------.------------------------------------.
- * | | | | | | | | | | | | | | |
- * !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- * | | | | | | | | | | | | | | |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | | | | | |-----!-----! | | | | | |
- * !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- * | | | | | | | | | | | | | | |
- * '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- * | | | | | | ! | | | | |
- * '------------------------' '------------------------'
- * .-----------. .-----------.
- * | | | ! | |
- * .-----+-----+-----! !-----+-----+-----.
- * ! ! | | ! | ! !
- * ! ! !-----! !-----! ! !
- * | | | | ! | | |
- * '-----------------' '-----------------'
- */
-[L6] = KEYMAP(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS,
- /*-*/ /*-*/ /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- /*-*/ /*-*/ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
- KC_TRNS, KC_TRNS,
- KC_TRNS,
- KC_TRNS, KC_TRNS, KC_TRNS
-),
-};
-
-const uint16_t PROGMEM fn_actions[] = {};
-
-#define UC_MODE_WIN 0
-#define UC_MODE_LINUX 1
-#define UC_MODE_OSX 2
-
-// TODO: allow default mode to be configured
-static uint16_t unicode_mode = UC_MODE_WIN;
-
-uint16_t hextokeycode(uint8_t hex) {
- if (hex == 0x0) {
- return KC_P0;
- }
- if (hex < 0xA) {
- return KC_P1 + (hex - 0x1);
- }
- return KC_A + (hex - 0xA);
-}
-
-void unicode_action_function(uint16_t hi, uint16_t lo) {
- switch (unicode_mode) {
- case UC_MODE_WIN:
- register_code(KC_LALT);
-
- register_code(KC_PPLS);
- unregister_code(KC_PPLS);
-
- register_code(hextokeycode((hi & 0xF0) >> 4));
- unregister_code(hextokeycode((hi & 0xF0) >> 4));
- register_code(hextokeycode((hi & 0x0F)));
- unregister_code(hextokeycode((hi & 0x0F)));
- register_code(hextokeycode((lo & 0xF0) >> 4));
- unregister_code(hextokeycode((lo & 0xF0) >> 4));
- register_code(hextokeycode((lo & 0x0F)));
- unregister_code(hextokeycode((lo & 0x0F)));
-
- unregister_code(KC_LALT);
- break;
- case UC_MODE_LINUX:
- register_code(KC_LCTL);
- register_code(KC_LSFT);
-
- register_code(KC_U);
- unregister_code(KC_U);
-
- register_code(hextokeycode((hi & 0xF0) >> 4));
- unregister_code(hextokeycode((hi & 0xF0) >> 4));
- register_code(hextokeycode((hi & 0x0F)));
- unregister_code(hextokeycode((hi & 0x0F)));
- register_code(hextokeycode((lo & 0xF0) >> 4));
- unregister_code(hextokeycode((lo & 0xF0) >> 4));
- register_code(hextokeycode((lo & 0x0F)));
- unregister_code(hextokeycode((lo & 0x0F)));
-
- unregister_code(KC_LCTL);
- unregister_code(KC_LSFT);
- break;
- case UC_MODE_OSX:
- break;
- }
-}
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
- if (!record->event.pressed) {
- return MACRO_NONE;
- }
- // MACRODOWN only works in this function
- switch(id) {
- case UM:
- unicode_mode = (unicode_mode + 1) % 2;
- break;
-
-case UC_GREEK_SMALL_LETTER_OMICRON:
- unicode_action_function(0x03, 0xbf);
- break;
-case UC_LEFTWARDS_ARROW:
- unicode_action_function(0x21, 0x90);
- break;
-case UC_GREEK_CAPITAL_LETTER_RHO:
- unicode_action_function(0x03, 0xa1);
- break;
-case UC_SUBSCRIPT_THREE:
- unicode_action_function(0x20, 0x83);
- break;
-case UC_VULGAR_FRACTION_ONE_EIGHTH:
- unicode_action_function(0x21, 0x5b);
- break;
-case UC_GREEK_SMALL_LETTER_LAMDA:
- unicode_action_function(0x03, 0xbb);
- break;
-case UC_VULGAR_FRACTION_ONE_THIRD:
- unicode_action_function(0x21, 0x53);
- break;
-case UC_GREEK_SMALL_LETTER_XI:
- unicode_action_function(0x03, 0xbe);
- break;
-case UC_THERE_DOES_NOT_EXIST:
- unicode_action_function(0x22, 0x04);
- break;
-case UC_SUPERSCRIPT_ONE:
- unicode_action_function(0x00, 0xb9);
- break;
-case UC_GREEK_SMALL_LETTER_BETA:
- unicode_action_function(0x03, 0xb2);
- break;
-case UC_SUBSCRIPT_FIVE:
- unicode_action_function(0x20, 0x85);
- break;
-case UC_GREEK_CAPITAL_LETTER_IOTA:
- unicode_action_function(0x03, 0x99);
- break;
-case UC_VULGAR_FRACTION_ONE_FIFTH:
- unicode_action_function(0x21, 0x55);
- break;
-case UC_GREEK_SMALL_LETTER_PSI:
- unicode_action_function(0x03, 0xc8);
- break;
-case UC_SUBSCRIPT_NINE:
- unicode_action_function(0x20, 0x89);
- break;
-case UC_SUPERSCRIPT_FOUR:
- unicode_action_function(0x20, 0x74);
- break;
-case UC_RIGHTWARDS_ARROW:
- unicode_action_function(0x21, 0x92);
- break;
-case UC_SUPERSCRIPT_SIX:
- unicode_action_function(0x20, 0x76);
- break;
-case UC_DOWNWARDS_ARROW:
- unicode_action_function(0x21, 0x93);
- break;
-case UC_GREEK_SMALL_LETTER_PI:
- unicode_action_function(0x03, 0xc0);
- break;
-case UC_SUPERSCRIPT_TWO:
- unicode_action_function(0x00, 0xb2);
- break;
-case UC_GREEK_CAPITAL_LETTER_OMEGA:
- unicode_action_function(0x03, 0xa9);
- break;
-case UC_GREEK_CAPITAL_LETTER_PSI:
- unicode_action_function(0x03, 0xa8);
- break;
-case UC_SUBSCRIPT_FOUR:
- unicode_action_function(0x20, 0x84);
- break;
-case UC_GREEK_CAPITAL_LETTER_NU:
- unicode_action_function(0x03, 0x9d);
- break;
-case UC_DIVISION_SIGN:
- unicode_action_function(0x00, 0xf7);
- break;
-case UC_GREEK_SMALL_LETTER_SIGMA:
- unicode_action_function(0x03, 0xc3);
- break;
-case UC_GREEK_SMALL_LETTER_RHO:
- unicode_action_function(0x03, 0xc1);
- break;
-case UC_VULGAR_FRACTION_ONE_SIXTH:
- unicode_action_function(0x21, 0x59);
- break;
-case UC_GREEK_SMALL_LETTER_GAMMA:
- unicode_action_function(0x03, 0xb3);
- break;
-case UC_VULGAR_FRACTION_TWO_THIRDS:
- unicode_action_function(0x21, 0x54);
- break;
-case UC_GREEK_SMALL_LETTER_NU:
- unicode_action_function(0x03, 0xbd);
- break;
-case UC_GREEK_SMALL_LETTER_ZETA:
- unicode_action_function(0x03, 0xb6);
- break;
-case UC_GREEK_SMALL_LETTER_EPSILON:
- unicode_action_function(0x03, 0xb5);
- break;
-case UC_GREEK_SMALL_LETTER_KAPPA:
- unicode_action_function(0x03, 0xba);
- break;
-case UC_SUPERSCRIPT_SEVEN:
- unicode_action_function(0x20, 0x77);
- break;
-case UC_GREEK_CAPITAL_LETTER_PI:
- unicode_action_function(0x03, 0xa0);
- break;
-case UC_GREEK_SMALL_LETTER_FINAL_SIGMA:
- unicode_action_function(0x03, 0xc2);
- break;
-case UC_GREEK_CAPITAL_LETTER_XI:
- unicode_action_function(0x03, 0x9e);
- break;
-case UC_GREEK_SMALL_LETTER_THETA:
- unicode_action_function(0x03, 0xb8);
- break;
-case UC_GREEK_SMALL_LETTER_ETA:
- unicode_action_function(0x03, 0xb7);
- break;
-case UC_SUBSCRIPT_TWO:
- unicode_action_function(0x20, 0x82);
- break;
-case UC_ASYMPTOTICALLY_EQUAL_TO:
- unicode_action_function(0x22, 0x43);
- break;
-case UC_GREEK_SMALL_LETTER_ALPHA:
- unicode_action_function(0x03, 0xb1);
- break;
-case UC_GREEK_CAPITAL_LETTER_PHI:
- unicode_action_function(0x03, 0xa6);
- break;
-case UC_GREEK_SMALL_LETTER_PHI:
- unicode_action_function(0x03, 0xc6);
- break;
-case UC_INFINITY:
- unicode_action_function(0x22, 0x1e);
- break;
-case UC_GREEK_CAPITAL_LETTER_OMICRON:
- unicode_action_function(0x03, 0x9f);
- break;
-case UC_ELEMENT_OF:
- unicode_action_function(0x22, 0x08);
- break;
-case UC_MULTIPLICATION_SIGN:
- unicode_action_function(0x00, 0xd7);
- break;
-case UC_SUBSCRIPT_ZERO:
- unicode_action_function(0x20, 0x80);
- break;
-case UC_GREEK_CAPITAL_LETTER_SIGMA:
- unicode_action_function(0x03, 0xa3);
- break;
-case UC_GREEK_SMALL_LETTER_OMEGA:
- unicode_action_function(0x03, 0xc9);
- break;
-case UC_SUBSCRIPT_ONE:
- unicode_action_function(0x20, 0x81);
- break;
-case UC_GREEK_CAPITAL_LETTER_ZETA:
- unicode_action_function(0x03, 0x96);
- break;
-case UC_GREEK_SMALL_LETTER_TAU:
- unicode_action_function(0x03, 0xc4);
- break;
-case UC_SUPERSCRIPT_FIVE:
- unicode_action_function(0x20, 0x75);
- break;
-case UC_THERE_EXISTS:
- unicode_action_function(0x22, 0x03);
- break;
-case UC_PLUS_MINUS_SIGN:
- unicode_action_function(0x00, 0xb1);
- break;
-case UC_VULGAR_FRACTION_THREE_QUARTERS:
- unicode_action_function(0x00, 0xbe);
- break;
-case UC_SUPERSCRIPT_THREE:
- unicode_action_function(0x00, 0xb3);
- break;
-case UC_EMPTY_SET:
- unicode_action_function(0x22, 0x05);
- break;
-case UC_UPWARDS_ARROW:
- unicode_action_function(0x21, 0x91);
- break;
-case UC_SUPERSCRIPT_NINE:
- unicode_action_function(0x20, 0x79);
- break;
-case UC_GREEK_SMALL_LETTER_DELTA:
- unicode_action_function(0x03, 0xb4);
- break;
-case UC_GREEK_SMALL_LETTER_MU:
- unicode_action_function(0x03, 0xbc);
- break;
-case UC_GREEK_CAPITAL_LETTER_KAPPA:
- unicode_action_function(0x03, 0x9a);
- break;
-case UC_SUBSCRIPT_EIGHT:
- unicode_action_function(0x20, 0x88);
- break;
-case UC_GREEK_CAPITAL_LETTER_ALPHA:
- unicode_action_function(0x03, 0x91);
- break;
-case UC_SUBSCRIPT_SEVEN:
- unicode_action_function(0x20, 0x87);
- break;
-case UC_GREEK_CAPITAL_LETTER_BETA:
- unicode_action_function(0x03, 0x92);
- break;
-case UC_GREEK_CAPITAL_LETTER_ETA:
- unicode_action_function(0x03, 0x97);
- break;
-case UC_SUPERSCRIPT_EIGHT:
- unicode_action_function(0x20, 0x78);
- break;
-case UC_SUPERSCRIPT_ZERO:
- unicode_action_function(0x20, 0x70);
- break;
-case UC_NOT_AN_ELEMENT_OF:
- unicode_action_function(0x22, 0x09);
- break;
-case UC_GREEK_SMALL_LETTER_UPSILON:
- unicode_action_function(0x03, 0xc5);
- break;
-case UC_NOT_EQUAL_TO:
- unicode_action_function(0x22, 0x60);
- break;
-case UC_GREEK_CAPITAL_LETTER_CHI:
- unicode_action_function(0x03, 0xa7);
- break;
-case UC_FOR_ALL:
- unicode_action_function(0x22, 0x00);
- break;
-case UC_GREEK_CAPITAL_LETTER_TAU:
- unicode_action_function(0x03, 0xa4);
- break;
-case UC_VULGAR_FRACTION_ONE_QUARTER:
- unicode_action_function(0x00, 0xbc);
- break;
-case UC_GREEK_SMALL_LETTER_CHI:
- unicode_action_function(0x03, 0xc7);
- break;
-case UC_GREEK_CAPITAL_LETTER_THETA:
- unicode_action_function(0x03, 0x98);
- break;
-case UC_GREEK_SMALL_LETTER_IOTA:
- unicode_action_function(0x03, 0xb9);
- break;
-case UC_GREEK_CAPITAL_LETTER_LAMDA:
- unicode_action_function(0x03, 0x9b);
- break;
-case UC_SUPERSCRIPT_LATIN_SMALL_LETTER_N:
- unicode_action_function(0x20, 0x7f);
- break;
-case UC_GREEK_CAPITAL_LETTER_UPSILON:
- unicode_action_function(0x03, 0xa5);
- break;
-case UC_GREEK_CAPITAL_LETTER_MU:
- unicode_action_function(0x03, 0x9c);
- break;
-case UC_GREEK_CAPITAL_LETTER_EPSILON:
- unicode_action_function(0x03, 0x95);
- break;
-case UC_GREEK_CAPITAL_LETTER_GAMMA:
- unicode_action_function(0x03, 0x93);
- break;
-case UC_SUBSCRIPT_SIX:
- unicode_action_function(0x20, 0x86);
- break;
-case UC_GREEK_CAPITAL_LETTER_DELTA:
- unicode_action_function(0x03, 0x94);
- break;
-case UC_VULGAR_FRACTION_ONE_HALF:
- unicode_action_function(0x00, 0xbd);
- break;
- default:
- break;
- }
- return MACRO_NONE;
-};
-
-// Runs just one time when the keyboard initializes.
-void matrix_init_user(void) {
-
-};
-
-// Runs constantly in the background, in a loop.
-void matrix_scan_user(void) {
- uint8_t layer = biton32(layer_state);
-
- ergodox_board_led_off();
- ergodox_right_led_1_off();
- ergodox_right_led_2_off();
- ergodox_right_led_3_off();
- switch (layer) {
- case L1:
- ergodox_right_led_1_on();
- break;
- case L2:
- ergodox_right_led_2_on();
- break;
- case L3:
- ergodox_right_led_3_on();
- break;
- case L4:
- ergodox_right_led_1_on();
- ergodox_right_led_2_on();
- break;
- case L5:
- ergodox_right_led_1_on();
- ergodox_right_led_3_on();
- break;
- // case L6:
- // ergodox_right_led_2_on();
- // ergodox_right_led_3_on();
- // break;
- // case L7:
- // ergodox_right_led_1_on();
- // ergodox_right_led_2_on();
- // ergodox_right_led_3_on();
- // break;
- default:
- ergodox_board_led_off();
- break;
- }
-};
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md
deleted file mode 100644
index 2c9e0a8376..0000000000
--- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.md
+++ /dev/null
@@ -1,188 +0,0 @@
-# ManuNeo Ergodox Keyboard Layout
-
-Compile this file to a `keymap.c` file using `compile_keymap.py`
-
- python compile_keymap.py keymaps/german-manuneo/keymap.md
-
-Tested with python 2.7 and python 3.4
-
-
-# Layout Config
-
- {
- "layout": "ergodox_ez",
- "keymaps_includes": [
- "ergodox_ez.h",
- "action_layer.h",
- "keymap_common.h",
- "keymap_extras/keymap_german.h",
- ],
- "key_prefixes": ["DE_", "KC_"],
- "macros": {
- // TODO: implement macros
- // "MUC": "",
- },
- // TODO: implement default unicode mode
- }
-
-
-# Layers
-
-
-## Layer 0
-
- .------------------------------------.------------------------------------.
- |MO(5)| 1 | 2 | 3 | 4 | 5 |ACUT | GRV | 6 | 7 | 8 | 9 | 0 |CIRC |
- !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- |MO(4)| X | P | F | W | G |HOME |TG(2)| H | J | K | L | Q | Z |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- |MO(1)| U | I | A | E | O |-----!-----! S | N | R | T | D | SS |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- |MO(3)| UE | OE | AE | C | V |END | TAB | B | M |COMM| DOT| UP | Y |
- '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | |LGUI|LALT|LCTL| !RCTL|RALT|LEFT|DOWN|RGHT|
- '------------------------' '------------------------'
- .-----------. .-----------.
- |INS |TG(2)| !M(UM)|DELT |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | APP | ! PGUP| ! !
- ! ! !-----! !-----! ! !
- |BSPC |LSFT | ESC | ! PGDN|ENTER|SPACE|
- '-----------------' '-----------------'
-
-
-## Layer 1
-
- .------------------------------------.------------------------------------.
- | |EXLM|DQOT|PARA| | | | | | | | |RING| |
- !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- | |ASTR|PIPE|SLSH|LCBR|RCBR| | |HASH|LESS|MORE| |DQOT| |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | |UNDS|MINS|AMPR|LBRC|RBRC|-----!-----!DLR |LPRN|RPRN|TILD|QUOT| QST |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | |PLUS|EQL | | | | |BSLS|PERC|SCLN|COLN| ↑ | |
- '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | | | | | ! | | ← | ↓ | → |
- '------------------------' '------------------------'
- .-----------. .-----------.
- | | | ! | |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | | ! | ! !
- ! ! !-----! !-----! ! !
- | | | | ! | | |
- '-----------------' '-----------------'
-
-
-## Layer 2
-
- .------------------------------------.------------------------------------.
- | | F1 | F2 | F3 | F4 | F5 | F11 | F12 | F6 | F7 | F8 | F9 |F10 |PEQL |
- !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- | | | | | | | | | | P7 | P8 | P9 |PAST|PSLS |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | | | | | |-----!-----! | P4 | P5 | P6 |PMNS|PMNS |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | | | | | | | NLCK| | P1 | P2 | P3 |PPLS|PPLS |
- '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | | | | | ! P0 |PCMM|PDOT|PENT|PENT|
- '------------------------' '------------------------'
- .-----------. .-----------.
- | | | ! | |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | | ! | ! !
- ! ! !-----! !-----! ! !
- | | | | ! | | |
- '-----------------' '-----------------'
-
-
-
-## Layer 3
-
-http://symbolcodes.tlt.psu.edu/bylanguage/mathchart.html
-
- .------------------------------------.------------------------------------.
- | | ¹ | ² | ³ | ⁴ | ⁵ | ∀ | | ⁶ | ⁷ | ⁸ | ⁹ | ⁰ | |
- !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- | | × | ½ | ÷ | ¼ | ⅕ | | | ⅙ | | ⅛ | | | |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | | ± | AT |EURO| ∅ |-----!-----! ∞ | ⁿ | ∃ | ∈ | | |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | ⅓ | ≠ | ⅔ | ¾ | ≃ | | |EXLM| | ∄ | ∉ | | |
- '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | | | | | ! | | | | |
- '------------------------' '------------------------'
- .-----------. .-----------.
- | | | ! | |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | | ! | ! !
- ! ! !-----! !-----! ! !
- | | | | ! | | |
- '-----------------' '-----------------'
-
-
-## Layer 4
-
-
- .------------------------------------.------------------------------------.
- | | ₁ | ₂ | ₃ | ₄ | ₅ | | | ₆ | ₇ | ₈ | ₉ | ₀ | |
- !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- | | χ | π | φ | ω | γ | | | η | ξ | κ | λ | | ζ |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | υ | ι | α | ε | ο |-----!-----! σ | ν | ρ | τ | δ | ς |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | | θ | | | | | | β | μ | | | | ψ |
- '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | | | | | ! | | | | |
- '------------------------' '------------------------'
- .-----------. .-----------.
- | | | ! | |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | | ! | ! !
- ! ! !-----! !-----! ! !
- | | | | ! | | |
- '-----------------' '-----------------'
-
-
-## Layer 5
-
- .------------------------------------.------------------------------------.
- | | | | | | | | | | | | | | |
- !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- | | Χ | Π | Φ | Ω | Γ | | | Η | Ξ | Κ | Λ | | Ζ |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | Υ | Ι | Α | Ε | Ο |-----!-----! Σ | Ν | Ρ | Τ | Δ | |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | | Θ | | | | | | Β | Μ | | | | Ψ |
- '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | | | | | ! | | | | |
- '------------------------' '------------------------'
- .-----------. .-----------.
- | | | ! | |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | | ! | ! !
- ! ! !-----! !-----! ! !
- | | | | ! | | |
- '-----------------' '-----------------'
-
-
-## Layer 6
-
- .------------------------------------.------------------------------------.
- | | | | | | | | | | | | | | |
- !-----+----+----+----+----+----------!-----+----+----+----+----+----+-----!
- | | | | | | | | | | | | | | |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | | | | | |-----!-----! | | | | | |
- !-----+----+----+----x----x----! ! !----x----x----+----+----+-----!
- | | | | | | | | | | | | | | |
- '-----+----+----+----+----+----------'----------+----+----+----+----+-----'
- | | | | | | ! | | | | |
- '------------------------' '------------------------'
- .-----------. .-----------.
- | | | ! | |
- .-----+-----+-----! !-----+-----+-----.
- ! ! | | ! | ! !
- ! ! !-----! !-----! ! !
- | | | | ! | | |
- '-----------------' '-----------------'
-