summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py37
-rw-r--r--keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c178
-rw-r--r--keyboard/preonic/Makefile4
-rw-r--r--keyboard/preonic/keymaps/default/keymap.c2
-rw-r--r--keyboard/preonic/keymaps/lock/keymap.c2
-rw-r--r--keyboard/preonic/preonic.c16
-rw-r--r--keyboard/preonic/preonic.h4
-rw-r--r--keyboard/preonic/preonic_music.hex1713
8 files changed, 1848 insertions, 108 deletions
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
index 3d26672762..7076a6ecb2 100644
--- a/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
+++ b/keyboard/ergodox_ez/keymaps/german-manuneo/compile_keymap.py
@@ -43,6 +43,9 @@ KEYBOARD_LAYOUTS = {
]
}
+ROW_INDENTS = {
+ 'ergodox_ez': [0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 5, 0, 6, 0, 4, 0]
+}
BLANK_LAYOUTS = [
# Compact Layout
@@ -591,16 +594,43 @@ def unicode_macro_cases(config):
)
-def iter_keymap_lines(keymap):
+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):
@@ -628,11 +658,12 @@ def iter_keymap_parts(config, keymaps):
# comment
layer_lines = config['layer_lines'][layer_name]
prefixed_lines = " * " + " * ".join(layer_lines)
- yield "/*\n{}*/\n".format(prefixed_lines)
+ yield "/*\n{} */\n".format(prefixed_lines)
# keymap codes
keymap = keymaps[layer_name]
- keymap_lines = "".join(iter_keymap_lines(keymap))
+ 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"
diff --git a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
index 92b712bd8a..d8911af412 100644
--- a/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
+++ b/keyboard/ergodox_ez/keymaps/german-manuneo/keymap.c
@@ -127,22 +127,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ! ! !-----! !-----! ! !
* |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,
+ 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
),
@@ -165,21 +165,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ! ! !-----! !-----! ! !
* | | | | ! | | |
* '-----------------' '-----------------'
-*/
+ */
[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, 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,
+ 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
@@ -203,21 +203,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ! ! !-----! !-----! ! !
* | | | | ! | | |
* '-----------------' '-----------------'
-*/
+ */
[L2] = KEYMAP(
- KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11,
+ 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,
+ 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
@@ -241,24 +241,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ! ! !-----! !-----! ! !
* | | | | ! | | |
* '-----------------' '-----------------'
-*/
+ */
[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, 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,
- 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
+ KC_TRNS, KC_TRNS, KC_TRNS
),
/*
* .------------------------------------.------------------------------------.
@@ -279,24 +279,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ! ! !-----! !-----! ! !
* | | | | ! | | |
* '-----------------' '-----------------'
-*/
+ */
[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, 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
+ KC_TRNS, KC_TRNS, KC_TRNS
),
/*
* .------------------------------------.------------------------------------.
@@ -317,24 +317,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ! ! !-----! !-----! ! !
* | | | | ! | | |
* '-----------------' '-----------------'
-*/
+ */
[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, 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
+ KC_TRNS, KC_TRNS, KC_TRNS
),
/*
* .------------------------------------.------------------------------------.
@@ -355,21 +355,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* ! ! !-----! !-----! ! !
* | | | | ! | | |
* '-----------------' '-----------------'
-*/
+ */
[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, 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
diff --git a/keyboard/preonic/Makefile b/keyboard/preonic/Makefile
index 89c48e50a9..664aff7321 100644
--- a/keyboard/preonic/Makefile
+++ b/keyboard/preonic/Makefile
@@ -139,8 +139,8 @@ COMMAND_ENABLE = yes # Commands for debug and configuration
# SLEEP_LED_ENABLE = yes # Breathing sleep LED during USB suspend
# NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
-# MIDI_ENABLE = YES # MIDI controls
-# AUDIO_ENABLE = YES # Audio output on port C6
+MIDI_ENABLE = YES # MIDI controls
+AUDIO_ENABLE = YES # Audio output on port C6
# UNICODE_ENABLE = YES # Unicode
# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with MIDI at the same time.
diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c
index 392197f1d8..5099b65817 100644
--- a/keyboard/preonic/keymaps/default/keymap.c
+++ b/keyboard/preonic/keymaps/default/keymap.c
@@ -88,7 +88,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
return MACRO_NONE;
};
-void * matrix_init_user(void) {
+void matrix_init_user(void) {
#ifdef AUDIO_ENABLE
init_notes();
play_notes(&start_up, 9, false);
diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c
index e253f25819..cfb7f08035 100644
--- a/keyboard/preonic/keymaps/lock/keymap.c
+++ b/keyboard/preonic/keymaps/lock/keymap.c
@@ -99,7 +99,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
return MACRO_NONE;
};
-void * matrix_init_user(void) {
+void matrix_init_user(void) {
init_notes();
play_notes(&start_up, 9, false);
}
diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c
index a678f7b09f..e9ececb6d8 100644
--- a/keyboard/preonic/preonic.c
+++ b/keyboard/preonic/preonic.c
@@ -1,16 +1,16 @@
#include "preonic.h"
__attribute__ ((weak))
-void * matrix_init_user(void) {
+void matrix_init_user(void) {
};
__attribute__ ((weak))
-void * matrix_scan_user(void) {
+void matrix_scan_user(void) {
};
-void * matrix_init_kb(void) {
+void matrix_init_kb(void) {
#ifdef BACKLIGHT_ENABLE
backlight_init_ports();
#endif
@@ -24,13 +24,9 @@ void * matrix_init_kb(void) {
DDRE |= (1<<6);
PORTE |= (1<<6);
- if (matrix_init_user) {
- (*matrix_init_user)();
- }
+ matrix_init_user();
};
-void * matrix_scan_kb(void) {
- if (matrix_scan_user) {
- (*matrix_scan_user)();
- }
+void matrix_scan_kb(void) {
+ matrix_scan_user();
};
diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h
index 42d2123290..6cfe14726a 100644
--- a/keyboard/preonic/preonic.h
+++ b/keyboard/preonic/preonic.h
@@ -44,7 +44,7 @@
{ k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
}
-void * matrix_init_user(void);
-void * matrix_scan_user(void);
+void matrix_init_user(void);
+void matrix_scan_user(void);
#endif
diff --git a/keyboard/preonic/preonic_music.hex b/keyboard/preonic/preonic_music.hex
new file mode 100644
index 0000000000..603693bffb
--- /dev/null
+++ b/keyboard/preonic/preonic_music.hex
@@ -0,0 +1,1713 @@
+:100000000C9410030C9454030C9454030C94540358
+:100010000C9454030C9454030C9454030C94540304
+:100020000C9454030C9454030C9410170C94E21782
+:100030000C94BD290C9454030C9454030C94540355
+:100040000C9454030C9454030C9454030C945403D4
+:100050000C9454030C942A2A0C9454030C945403C7
+:100060000C9454030C9454030C9454030C945403B4
+:100070000C9454030C9454030C9454030C945403A4
+:100080000C94440E0C9454030C9454030C94540399
+:100090000C9454030C9454030C9454030C94540384
+:1000A0000C9454030C9454030C9454030763423689
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD
+:1000D0000000803F08000000BE922449123EABAAF7
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52
+:1000F000AA3E00000000BF000000803F000000009A
+:1001000000084178D3BB4387D1133D190E3CC3BDD2
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F
+:1001200080EFFFBE01C4FF7F3F00000000003500EC
+:100130001E001F00200021002200230024002500B3
+:10014000260027002A002B0014001A0008001500C2
+:1001500017001C0018000C00120013002A002900D0
+:1001600004001600070009000A000B000D000E0035
+:100170000F0033003400E1001D001B0006001900D1
+:10018000050011001000360037003800280000304C
+:10019000E000E200E30003522C002C000452500067
+:1001A000510052004F0035001E001F0020002100AA
+:1001B0002200230024002500260027002A002B000F
+:1001C00014001A00090013000A000D000F001800A7
+:1001D0001C0033002A002900040015001600170037
+:1001E00007000B00110008000C0012003400E100B1
+:1001F0001D001B000600190005000E00100036004F
+:100200003700380028000030E000E200E30003522D
+:100210002C002C0004525000510052004F003500B9
+:100220001E001F00200021002200230024002500C2
+:10023000260027002A002B00340036003700130068
+:100240001C0009000A00060015000F002A00290002
+:1002500004001200080018000C0007000B00170033
+:10026000110016003800E100330014000D000E00EC
+:100270001B00050010001A0019001D0028000030A6
+:10028000E000E200E30003522C002C000452500076
+:10029000510052004F0035001E001F0020002100B9
+:1002A0002200230024002500260027002A00350212
+:1002B0001E021F0220022102220223022402250222
+:1002C000260227022A0001003A003B003C003D00C4
+:1002D0003E003F002D022E022F02300231020100AB
+:1002E00040004100420043004400450000530153D8
+:1002F0000253005001000100010001000100010053
+:10030000010001000100AB00AA00A900AE00350009
+:100310001E001F00200021002200230024002500D1
+:10032000260027002A0035001E001F0020002100A3
+:100330002200230024002500260027002A000100B7
+:100340003A003B003C003D003E003F002D002E00E7
+:100350002F00300031000100400041004200430006
+:1003600044004500005301530253005001000100B6
+:100370000100010001000100010001000100AB00CB
+:10038000AA00A900AE00006000600060006000608C
+:10039000006000600060006000600060006000605D
+:1003A000006000600060006000600060006000604D
+:1003B000006000600060006000600060006000603D
+:1003C000006000600060006000600060006000602D
+:1003D000006000600060006000600060006000601D
+:1003E00000600060006000300100010001000100B9
+:1003F00001000100010000600060006000602A034D
+:1004000054006800650020005000720065006F0015
+:100410006E006900630020004B00650079006200F7
+:100420006F0061007200640000002C034F00720036
+:10043000740068006F006C0069006E006500610068
+:10044000720020004B006500790062006F006100BF
+:100450007200640073000000040309040902D00064
+:10046000060100A0FA0904000001030101000921AE
+:1004700011010001223F000705810308000A090459
+:1004800001000103010200092111010001224D00B8
+:100490000705820308000A090402000103000000A6
+:1004A0000921110100012236000705830308000A13
+:1004B00009040300020300000009211101000122C8
+:1004C0002000070584032000010705040320000124
+:1004D00009040400000101000009240100010900D1
+:1004E00001050904050002010300000724010001C1
+:1004F0004100062402010100062402020200092430
+:1005000003010301020100092403020401010100A7
+:100510000905060240000500000525010101090545
+:1005200085024000050000052501010312011001AC
+:1005300000000008EDFE61600100010200010631CB
+:10054000FF0974A1010975150025FF952075088123
+:10055000020976150025FF952075089102C0050156
+:100560000980A101850216010026B7001A01002AA0
+:10057000B700751095018100C0050C0901A1018526
+:1005800003160100269C021A01002A9C0275109590
+:10059000018100C005010902A1010901A1000509AD
+:1005A000190129051500250195057501810295019F
+:1005B000750381010501093009311581257F9502F7
+:1005C0007508810609381581257F95017508810612
+:1005D000050C0A38021581257F950175088106C032
+:1005E000C005010906A101050719E029E715002545
+:1005F00001950875018102950175088101050819A9
+:100600000129059505750191029501750391010573
+:1006100007190029FF150025FF950675088100C000
+:1006200011241FBECFEFDAE0DEBFCDBF04B603FE5C
+:1006300024C08091050490910604A0910704B09114
+:1006400008048730904BA740B04BB9F410920504D2
+:1006500010920604109207041092080414BE84B786
+:10066000877F84BF88E10FB6F89480936000109272
+:1006700060000FBEE0E0F8E3099512E0A0E0B1E011
+:10068000E6ECF9E602C005900D92A832B107D9F761
+:1006900014E0A8E2B2E001C01D92A530B107E1F775
+:1006A0000E94C8130C94E1340C94000061111DC029
+:1006B000FC018281882351F085EE0E94901E0E94E9
+:1006C000BC3080E290E0A0E0B0E007C085EE0E9480
+:1006D000581F81E090E0A0E0B0E08093E1029093A9
+:1006E000E202A093E302B093E40280E090E0089578
+:1006F0000E94370E40E050E069E070E080E091E059
+:100700000C94880F08950E948B036E9A769A0C942D
+:1007100078030C948203279A2F988FEF9FEF909382
+:100720008700809386008AE08093800089E180932F
+:1007300081000C94653081110BC080918000877F0F
+:100740008093800010928D0010928C002F98089555
+:100750002F98833041F480918000886080938000DE
+:100760008FEF9FEF12C0909180009860909380006F
+:1007700023E030E0281B3109220F331F8FEF9FEF5A
+:1007800002C0969587952A95E2F790938D00809305
+:100790008C0008958B3B910568F4883A910530F5FB
+:1007A000853A9105C0F48430910598F4019709F0D9
+:1007B0006FC071C0803E910508F46AC0883E910503
+:1007C00040F09C01205F31092031310508F060C004
+:1007D0005CC09C01A1C0853A910509F45FC0863ACE
+:1007E000910509F45EC023E830E496C0883A91058B
+:1007F00009F45AC0893A910509F459C08A3A910519
+:1008000009F458C08B3A910509F457C08C3A910508
+:1008100009F456C08D3A910509F455C0803B910505
+:1008200009F454C08E3A910509F453C08F3A9105EA
+:1008300009F452C0813B910509F451C0823B9105F6
+:1008400009F450C0833B910509F44FC0843B9105E6
+:1008500009F44EC0853B910509F44DC0863B9105D6
+:1008600009F44CC0873B910509F44BC0883B9105C6
+:1008700009F44AC0893B910509F449C08A3B9105B6
+:1008800009F048C02AE236E447C09C01306544C004
+:1008900020E030E041C021E030E03EC021E830E41B
+:1008A0003BC022E830E438C022EE34E435C029EE03
+:1008B00034E432C02AEE34E42FC025EB34E42CC0FB
+:1008C00026EB34E429C027EB34E426C02CEC34E4D6
+:1008D00023C02DEC34E420C023E835E41DC02AE811
+:1008E00035E41AC022E935E417C024E935E414C020
+:1008F00021E236E411C023E236E40EC024E236E4FD
+:100900000BC025E236E408C026E236E405C027E243
+:1009100036E402C020E034E4C90108959CE0799FE8
+:10092000F00111249CE3899FE00DF11D1124E60FD5
+:10093000F11DEE0FFF1FE25DFE4F25913491C901BD
+:100940000895880F991F82559040FC01259134919C
+:10095000C9010895880F991F825D9E4FFC01259162
+:100960003491C90108950E948E049C019A958115C5
+:100970009F4110F4C9010895C90190528115904119
+:1009800028F4C9019F700E94AA040895C9019053D8
+:100990008115904120F4C9019927906C0895C901EF
+:1009A0009054409728F4C9018F709927946D089549
+:1009B000203180E4380719F480E091ED0895213169
+:1009C00090E4390719F480E090ED0895223140E475
+:1009D000340719F480E092ED0895233180E438075C
+:1009E00019F480E093ED0895211590E53907A1F4FD
+:1009F0000E948B2340E065E088E491E00E94880F2C
+:100A00002FEF44E38CE0215040408040E1F700C0EC
+:100A100000000E944F2A1EC1213090E5390731F4B1
+:100A20008091F10281608093F10214C1C901905557
+:100A30008115904108F062C0432F55274F7055270C
+:100A400041305105F9F4C90174E0880F991F7A9576
+:100A5000E1F788279370B901E3E0660F771FEA9505
+:100A6000E1F760767727862B972B9C6823703327D6
+:100A700002C0440F551F2A95E2F74F715527842B6A
+:100A8000952B08954230510529F4922F8827816FC4
+:100A9000906A089543305105B9F4C90153E0880FB5
+:100AA000991F5A95E1F7807E97702370332741E0B4
+:100AB00050E002C0440F551F2A95E2F74F715527A9
+:100AC000842B952B9C6808954430510589F5C90104
+:100AD00043E0880F991F4A95E1F7807E9770237055
+:100AE000332741E050E002C0440F551F2A95E2F73A
+:100AF0004F715527842B952B9A680895C9019056FC
+:100B00008115904118F4C901906F0895C90190575B
+:100B10008115904120F4C9019F7090620895C90128
+:100B200090588115904120F4C9019F70906A0895F2
+:100B3000203E3105E0F4203C310568F521333105D4
+:100B400009F475C048F42932310509F46BC02A3222
+:100B5000310509F07BC075C02933310501F1223818
+:100B60003105E9F02533310509F070C051C0233E4D
+:100B70003105B1F140F4203E3105D1F0223E31057E
+:100B800009F064C01CC0263E310579F1273E3105CD
+:100B900009F05CC038C0C9010E94A1040895809189
+:100BA000020380FD02C081FF51C080EE90E04FC083
+:100BB0008091020380FFF9CF89E390E048C08091E3
+:100BC000020382FF0AC08091020384FF03C080E019
+:100BD00090E03DC083EE90E03AC082EE90E037C0F6
+:100BE0008091020382FFEFCFF8CF8091020383FF51
+:100BF00007C08091020384FDEACF87EE90E027C012
+:100C000086EE90E024C08091020383FFF2CFF8CFFC
+:100C10008091020385FF03C089E290E018C085E35C
+:100C200090E015C08091020385FDF9CFF5CF80914A
+:100C3000020386FF03C08AE290E009C081E390E0EE
+:100C400006C08091020386FDF9CFF5CFC9010E944D
+:100C5000CA030895089508950C942B065F926F922D
+:100C60007F928F929F92AF92BF92CF92DF92EF923C
+:100C7000FF920F931F93CF93DF93CDB7DEB72A97E1
+:100C80000FB6F894DEBF0FBECDBF9E012F5F3F4F62
+:100C90004E018BE0880E911C60E070E000E010E0F7
+:100CA000E12CF12CC12CD12CA12CB12C8AE0782E76
+:100CB000622E532E41E050E0E3E9F1E0A62DB52D80
+:100CC000872D01900D928A95E1F7F901819191911B
+:100CD0009F01FC01E07FFF27E032F10559F48F709E
+:100CE0009927FA0102C0EE0FFF1F8A95E2F7AE2A9C
+:100CF000BF2A37C0E033F10559F48F709927FA0104
+:100D000002C0EE0FFF1F8A95E2F7CE2ADF2A29C024
+:100D1000E034F10559F48F709927FA0102C0EE0F03
+:100D2000FF1F8A95E2F7EE2AFF2A1BC0E035F10586
+:100D300059F48F709927FA0102C0EE0FFF1F8A95B0
+:100D4000E2F70E2B1F2B0DC0E036F10551F48F702A
+:100D50009927FA0102C0EE0FFF1F8A95E2F76E2B6A
+:100D60007F2B2815390509F0A7CF94B18A2D8095DE
+:100D7000892384B985B18A2985B997B18C2D80954D
+:100D8000892387B988B18C2988B99AB18E2D80952D
+:100D900089238AB98BB18E298BB99DB1802F80951B
+:100DA00089238DB98EB1802B8EB990B3862F809513
+:100DB000892380BB81B3862B81BB2A960FB6F8941A
+:100DC000DEBF0FBECDBFDF91CF911F910F91FF907E
+:100DD000EF90DF90CF90BF90AF909F908F907F90DB
+:100DE0006F905F9008955F926F927F928F929F9223
+:100DF000AF92BF92CF92DF92EF92FF920F931F9329
+:100E0000CF93DF93CDB7DEB768970FB6F894DEBF08
+:100E10000FBECDBF85B7806885BF85B7806885BFA9
+:100E20000E942E069E012F5F3F4F4E0189E1880EE2
+:100E3000911C60E070E000E010E0E12CF12CC12C8E
+:100E4000D12CA12CB12C98E1792E622E532E41E0A9
+:100E500050E0EDE9F1E0A62DB52D872D01900D9222
+:100E60008A95E1F7F901819191919F01FC01E07F61
+:100E7000FF27E032F10559F48F709927FA0102C07B
+:100E8000EE0FFF1F8A95E2F7AE2ABF2A37C0E03384
+:100E9000F10559F48F709927FA0102C0EE0FFF1F78
+:100EA0008A95E2F7CE2ADF2A29C0E034F10559F409
+:100EB0008F709927FA0102C0EE0FFF1F8A95E2F7A3
+:100EC000EE2AFF2A1BC0E035F10559F48F709927EF
+:100ED000FA0102C0EE0FFF1F8A95E2F70E2B1F2BBF
+:100EE0000DC0E036F10551F48F709927FA0102C068
+:100EF000EE0FFF1F8A95E2F76E2B7F2B2815390521
+:100F000009F0A7CF94B18A2D8095892384B985B142
+:100F10008A2985B997B18C2D8095892387B988B1A5
+:100F20008C2988B99AB18E2D809589238AB98BB185
+:100F30008E298BB99DB1802F809589238DB98EB173
+:100F4000802B8EB990B3862F8095892380BB81B387
+:100F5000862B81BB10922902109228021092330234
+:100F60001092320210922B0210922A021092350235
+:100F70001092340210922D0210922C02109237021D
+:100F80001092360210922F0210922E021092390205
+:100F900010923802109231021092300210923B02ED
+:100FA00010923A0268960FB6F894DEBF0FBECDBF1E
+:100FB000DF91CF911F910F91FF90EF90DF90CF9035
+:100FC000BF90AF909F908F907F906F905F900C94A8
+:100FD00083035F926F927F928F929F92AF92BF92A4
+:100FE000CF92DF92EF92FF920F931F93CF93DF93F5
+:100FF000CDB7DEB7A2970FB6F894DEBF0FBECDBF58
+:101000007E0149E1E40EF11C22E3C22E22E0D22E41
+:101010005E0153E2A50EB11C3AE0532E470101E0F8
+:1010200010E048E1642E55E0752EE3E9F1E0D401CB
+:10103000852D01900D928A95E1F7F70181919191AB
+:101040007F019C01207F33272032310589F424B1B0
+:101050008F709927A80102C0440F551F8A95E2F7A7
+:10106000CA01242B24B995B18095892385B94FC035
+:101070002033310589F427B18F709927F80102C018
+:10108000EE0FFF1F8A95E2F7CF012E2B27B998B1FB
+:101090008095892388B93BC02034310589F42AB171
+:1010A0008F709927A80102C0440F551F8A95E2F757
+:1010B000CA01242B2AB99BB1809589238BB927C0FB
+:1010C0002035310589F42DB18F709927F80102C0C0
+:1010D000EE0FFF1F8A95E2F7CF012E2B2DB99EB19F
+:1010E000809589238EB913C02036310581F420B351
+:1010F0008F709927A80102C0440F551F8A95E2F707
+:10110000CA01242B20BB91B38095892381BB50EA6F
+:101110005A95F1F7BE016F5F7F4F80E090E020E0CD
+:1011200030E0EDE9F1E0DE011196462D01900D92DF
+:101130004A95E1F7FB0141915191BF01FA01E07F2E
+:10114000FF27E032F10511F4E3B113C0E033F105FC
+:1011500011F4E6B10EC0E034F10511F4E9B109C0B3
+:10116000E035F10511F4ECB104C0E036F105B9F455
+:10117000EFB1F0E04F70552702C0F595E7954A951D
+:10118000E2F7E0FD08C0A801022E02C0440F551F7F
+:101190000A94E2F702C040E050E0842B952B2F5FC9
+:1011A0003F4F2C30310509F0BCCFF6012081318151
+:1011B0002817390721F091838083709270010E9473
+:1011C0002E06F2E0CF0ED11CEA14FB0409F02DCF5D
+:1011D000809170018823A1F1815080937001882350
+:1011E00039F08FE99FE00197F1F700C0000028C0B7
+:1011F00080913202909133029093290280932802C9
+:10120000809134029091350290932B0280932A02B0
+:10121000809136029091370290932D0280932C0298
+:10122000809138029091390290932F0280932E0280
+:1012300080913A0290913B02909331028093300268
+:101240000E94890381E0A2960FB6F894DEBF0FBE1C
+:10125000CDBFDF91CF911F910F91FF90EF90DF9065
+:10126000CF90BF90AF909F908F907F906F905F9046
+:101270000895E82FF0E0EE0FFF1FE85DFD4F80813D
+:10128000918108950895CF92DF92EF92FF920F938C
+:101290001F93CF93DF93CDB7DEB7CC5BD2400FB6B1
+:1012A000F894DEBF0FBECDBF8C01862F642F88233C
+:1012B00079F0F80192812FE7482F992329F084E0F3
+:1012C00093E00E94EC1904C084E093E00E94FC19B2
+:1012D000F80180818B3091F59181943009F0A8C29A
+:1012E0009281809173019923B1F08F5F8093730194
+:1012F00096E4E5EBF1E0DE01A958BD4F01900D92B7
+:101300009A95E1F7E0917101F0917201EE0FFF1FE4
+:1013100027E732E036C096E4E5EBF1E0DE01AF