added support for BD game engine to Makefile for Android
[rocksndiamonds.git] / src / main.c
1 // ============================================================================
2 // Rocks'n'Diamonds - McDuffin Strikes Back!
3 // ----------------------------------------------------------------------------
4 // (c) 1995-2014 by Artsoft Entertainment
5 //                  Holger Schemel
6 //                  info@artsoft.org
7 //                  https://www.artsoft.org/
8 // ----------------------------------------------------------------------------
9 // main.c
10 // ============================================================================
11
12 #include "libgame/libgame.h"
13
14 #include "main.h"
15 #include "init.h"
16 #include "game.h"
17 #include "tape.h"
18 #include "tools.h"
19 #include "files.h"
20 #include "events.h"
21 #include "config.h"
22
23 Bitmap                         *bitmap_db_field;
24 Bitmap                         *bitmap_db_door_1;
25 Bitmap                         *bitmap_db_door_2;
26 Bitmap                         *bitmap_db_store_1;
27 Bitmap                         *bitmap_db_store_2;
28 DrawBuffer                     *fieldbuffer;
29 DrawBuffer                     *drawto_field;
30
31 int                             game_status = -1;
32 int                             game_status_last_screen = -1;
33 boolean                         level_editor_test_game = FALSE;
34 boolean                         score_info_tape_play = FALSE;
35 boolean                         network_playing = FALSE;
36
37 int                             key_joystick_mapping = 0;
38
39 short                           Tile[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
40 short                           Last[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
41 short                           MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
42 short                           MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
43 short                           MovDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
44 short                           ChangeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
45 short                           ChangePage[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
46 short                           CustomValue[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
47 short                           Store[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
48 short                           Store2[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
49 short                           StorePlayer[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
50 short                           Back[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
51 boolean                         Stop[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
52 boolean                         Pushed[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
53 short                           ChangeCount[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
54 short                           ChangeEvent[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
55 short                           WasJustMoving[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
56 short                           WasJustFalling[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
57 short                           CheckCollision[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
58 short                           CheckImpact[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
59 short                           AmoebaNr[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
60 short                           AmoebaCnt[MAX_NUM_AMOEBA];
61 short                           AmoebaCnt2[MAX_NUM_AMOEBA];
62 short                           ExplodeField[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
63 short                           ExplodePhase[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
64 short                           ExplodeDelay[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
65 int                             RunnerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
66 int                             PlayerVisit[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
67
68 int                             GfxFrame[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
69 int                             GfxRandom[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
70 int                             GfxRandomStatic[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
71 int                             GfxElement[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
72 int                             GfxElementEmpty[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
73 int                             GfxAction[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
74 int                             GfxDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
75 int                             GfxRedraw[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
76
77 int                             ActiveElement[MAX_NUM_ELEMENTS];
78 int                             ActiveButton[NUM_IMAGE_FILES];
79 int                             ActiveFont[NUM_FONTS];
80
81 int                             lev_fieldx, lev_fieldy;
82 int                             scroll_x, scroll_y;
83
84 int                             WIN_XSIZE = WIN_XSIZE_DEFAULT;
85 int                             WIN_YSIZE = WIN_YSIZE_DEFAULT;
86
87 int                             SCR_FIELDX = SCR_FIELDX_DEFAULT;
88 int                             SCR_FIELDY = SCR_FIELDY_DEFAULT;
89
90 int                             REAL_SX = 6, REAL_SY = 6;
91 int                             SX = 8, SY = 8;
92 int                             DX = 566, DY = 60;
93 int                             VX = 566, VY = 400;
94 int                             EX = 566, EY = 356;
95 int                             dDX, dDY;
96
97 int                             FULL_SXSIZE = 2 + SXSIZE_DEFAULT + 2;
98 int                             FULL_SYSIZE = 2 + SYSIZE_DEFAULT + 2;
99 int                             SXSIZE = SXSIZE_DEFAULT;
100 int                             SYSIZE = SYSIZE_DEFAULT;
101
102 int                             FADE_SX = 6, FADE_SY = 6;
103 int                             FADE_SXSIZE = 2 + SXSIZE_DEFAULT + 2;
104 int                             FADE_SYSIZE = 2 + SXSIZE_DEFAULT + 2;
105
106 int                             DXSIZE = 100;
107 int                             DYSIZE = 280;
108 int                             VXSIZE = 100;
109 int                             VYSIZE = 100;
110 int                             EXSIZE = 100;
111 int                             EYSIZE = 144;
112 int                             TILESIZE_VAR = TILESIZE;
113
114 int                             FX, FY;
115 int                             ScrollStepSize;
116 int                             ScreenMovDir = MV_NONE, ScreenMovPos = 0;
117 int                             ScreenGfxPos = 0;
118 int                             BorderElement = EL_STEELWALL;
119 int                             MenuFrameDelay = MENU_FRAME_DELAY;
120 int                             GameFrameDelay = GAME_FRAME_DELAY;
121 int                             FfwdFrameDelay = FFWD_FRAME_DELAY;
122 int                             BX1, BY1;
123 int                             BX2, BY2;
124 int                             SBX_Left, SBX_Right;
125 int                             SBY_Upper, SBY_Lower;
126
127 int                             TimeFrames, TimePlayed, TimeLeft;
128 int                             TapeTimeFrames, TapeTime;
129
130 boolean                         network_player_action_received = FALSE;
131
132 struct LevelInfo                level, level_template;
133 struct PlayerInfo               stored_player[MAX_PLAYERS], *local_player = NULL;
134 struct ScoreInfo                scores, server_scores;
135 struct TapeInfo                 tape;
136 struct GameInfo                 game;
137 struct GlobalInfo               global;
138 struct BorderInfo               border;
139 struct ViewportInfo             viewport;
140 struct TitleFadingInfo          fading;
141 struct TitleFadingInfo          title_initial_first_default;
142 struct TitleFadingInfo          title_initial_default;
143 struct TitleFadingInfo          title_first_default;
144 struct TitleFadingInfo          title_default;
145 struct TitleMessageInfo         titlescreen_initial_first_default;
146 struct TitleMessageInfo         titlescreen_initial_first[MAX_NUM_TITLE_IMAGES];
147 struct TitleMessageInfo         titlescreen_initial_default;
148 struct TitleMessageInfo         titlescreen_initial[MAX_NUM_TITLE_IMAGES];
149 struct TitleMessageInfo         titlescreen_first_default;
150 struct TitleMessageInfo         titlescreen_first[MAX_NUM_TITLE_IMAGES];
151 struct TitleMessageInfo         titlescreen_default;
152 struct TitleMessageInfo         titlescreen[MAX_NUM_TITLE_IMAGES];
153 struct TitleMessageInfo         titlemessage_initial_first_default;
154 struct TitleMessageInfo         titlemessage_initial_first[MAX_NUM_TITLE_MESSAGES];
155 struct TitleMessageInfo         titlemessage_initial_default;
156 struct TitleMessageInfo         titlemessage_initial[MAX_NUM_TITLE_MESSAGES];
157 struct TitleMessageInfo         titlemessage_first_default;
158 struct TitleMessageInfo         titlemessage_first[MAX_NUM_TITLE_MESSAGES];
159 struct TitleMessageInfo         titlemessage_default;
160 struct TitleMessageInfo         titlemessage[MAX_NUM_TITLE_MESSAGES];
161 struct TitleMessageInfo         readme;
162 struct InitInfo                 init, init_last;
163 struct MenuInfo                 menu;
164 struct DoorInfo                 door_1, door_2;
165 struct RequestInfo              request;
166 struct PreviewInfo              preview;
167 struct EditorInfo               editor;
168
169 struct GraphicInfo             *graphic_info = NULL;
170 struct SoundInfo               *sound_info = NULL;
171 struct MusicInfo               *music_info = NULL;
172 struct MusicFileInfo           *music_file_info = NULL;
173 struct HelpAnimInfo            *helpanim_info = NULL;
174
175 SetupFileHash                  *helptext_info = NULL;
176 SetupFileHash                  *image_config_hash = NULL;
177 SetupFileHash                  *sound_config_hash = NULL;
178 SetupFileHash                  *element_token_hash = NULL;
179 SetupFileHash                  *graphic_token_hash = NULL;
180 SetupFileHash                  *font_token_hash = NULL;
181 SetupFileHash                  *hide_setup_hash = NULL;
182 SetupFileHash                  *anim_url_hash = NULL;
183
184
185 // ----------------------------------------------------------------------------
186 // element definitions
187 // ----------------------------------------------------------------------------
188
189 struct ElementInfo element_info[MAX_NUM_ELEMENTS + 1];
190
191 // this contains predefined structure elements to initialize "element_info"
192 struct ElementNameInfo element_name_info[MAX_NUM_ELEMENTS + 1] =
193 {
194   // keyword to start parser: "ELEMENT_INFO_START" <-- do not change!
195
196   // --------------------------------------------------------------------------
197   // "real" level file elements
198   // --------------------------------------------------------------------------
199
200   {
201     "empty_space",
202     "empty_space",
203     "Empty space"
204   },
205   {
206     "sand",
207     "sand",
208     "Sand"
209   },
210   {
211     "wall",
212     "wall",
213     "Normal wall"
214   },
215   {
216     "wall_slippery",
217     "wall",
218     "Slippery wall"
219   },
220   {
221     "rock",
222     "rock",
223     "Rock"
224   },
225   {
226     "key_obsolete",
227     "obsolete",
228     "Key (obsolete)"
229   },
230   {
231     "emerald",
232     "emerald",
233     "Emerald"
234   },
235   {
236     "exit_closed",
237     "exit",
238     "Closed exit"
239   },
240   {
241     "player_obsolete",
242     "obsolete",
243     "Player (obsolete)"
244   },
245   {
246     "bug",
247     "bug",
248     "Bug (random start direction)"
249   },
250   {
251     "spaceship",
252     "spaceship",
253     "Spaceship (random start direction)"
254   },
255   {
256     "yamyam",
257     "yamyam",
258     "Yam yam (random start direction)"
259   },
260   {
261     "robot",
262     "robot",
263     "Robot"
264   },
265   {
266     "steelwall",
267     "steelwall",
268     "Steel wall"
269   },
270   {
271     "diamond",
272     "diamond",
273     "Diamond"
274   },
275   {
276     "amoeba_dead",
277     "amoeba",
278     "Dead amoeba"
279   },
280   {
281     "quicksand_empty",
282     "quicksand",
283     "Quicksand (empty)"
284   },
285   {
286     "quicksand_full",
287     "quicksand",
288     "Quicksand (with rock)"
289   },
290   {
291     "amoeba_drop",
292     "amoeba",
293     "Amoeba drop"
294   },
295   {
296     "bomb",
297     "bomb",
298     "Bomb"
299   },
300   {
301     "magic_wall",
302     "magic_wall",
303     "Magic wall"
304   },
305   {
306     "speed_pill",
307     "speed_pill",
308     "Speed pill"
309   },
310   {
311     "acid",
312     "acid",
313     "Acid"
314   },
315   {
316     "amoeba_wet",
317     "amoeba",
318     "Dropping amoeba (EM style)"
319   },
320   {
321     "amoeba_dry",
322     "amoeba",
323     "Normal amoeba"
324   },
325   {
326     "nut",
327     "nut",
328     "Nut with emerald"
329   },
330   {
331     "game_of_life",
332     "game_of_life",
333     "Conway's wall of life"
334   },
335   {
336     "biomaze",
337     "biomaze",
338     "Biomaze"
339   },
340   {
341     "dynamite.active",
342     "dynamite",
343     "Burning dynamite"
344   },
345   {
346     "stoneblock",
347     "wall",
348     "Wall"
349   },
350   {
351     "robot_wheel",
352     "robot_wheel",
353     "Magic wheel"
354   },
355   {
356     "robot_wheel.active",
357     "robot_wheel",
358     "Magic wheel (running)"
359   },
360   {
361     "key_1",
362     "key",
363     "Key 1"
364   },
365   {
366     "key_2",
367     "key",
368     "Key 2"
369   },
370   {
371     "key_3",
372     "key",
373     "Key 3"
374   },
375   {
376     "key_4",
377     "key",
378     "Key 4"
379   },
380   {
381     "gate_1",
382     "gate",
383     "Door 1"
384   },
385   {
386     "gate_2",
387     "gate",
388     "Door 2"
389   },
390   {
391     "gate_3",
392     "gate",
393     "Door 3"
394   },
395   {
396     "gate_4",
397     "gate",
398     "Door 4"
399   },
400   {
401     "gate_1_gray",
402     "gate",
403     "Gray door (opened by key 1)"
404   },
405   {
406     "gate_2_gray",
407     "gate",
408     "Gray door (opened by key 2)"
409   },
410   {
411     "gate_3_gray",
412     "gate",
413     "Gray door (opened by key 3)"
414   },
415   {
416     "gate_4_gray",
417     "gate",
418     "Gray door (opened by key 4)"
419   },
420   {
421     "dynamite",
422     "dynamite",
423     "Dynamite"
424   },
425   {
426     "pacman",
427     "pacman",
428     "Pac man (random start direction)"
429   },
430   {
431     "invisible_wall",
432     "wall",
433     "Invisible normal wall"
434   },
435   {
436     "lamp",
437     "lamp",
438     "Lamp (off)"
439   },
440   {
441     "lamp.active",
442     "lamp",
443     "Lamp (on)"
444   },
445   {
446     "wall_emerald",
447     "wall",
448     "Wall with emerald"
449   },
450   {
451     "wall_diamond",
452     "wall",
453     "Wall with diamond"
454   },
455   {
456     "amoeba_full",
457     "amoeba",
458     "Amoeba with content"
459   },
460   {
461     "bd_amoeba",
462     "bd_amoeba",
463     "Amoeba (BD style)"
464   },
465   {
466     "time_orb_full",
467     "time_orb_full",
468     "Time orb (full)"
469   },
470   {
471     "time_orb_empty",
472     "time_orb_empty",
473     "Time orb (empty)"
474   },
475   {
476     "expandable_wall",
477     "wall",
478     "Growing wall (horizontal, visible)"
479   },
480   {
481     "bd_diamond",
482     "bd_diamond",
483     "Diamond (BD style)"
484   },
485   {
486     "emerald_yellow",
487     "emerald",
488     "Yellow emerald"
489   },
490   {
491     "wall_bd_diamond",
492     "wall",
493     "Wall with BD style diamond"
494   },
495   {
496     "wall_emerald_yellow",
497     "wall",
498     "Wall with yellow emerald"
499   },
500   {
501     "dark_yamyam",
502     "dark_yamyam",
503     "Dark yam yam"
504   },
505   {
506     "bd_magic_wall",
507     "bd_magic_wall",
508     "Magic wall (BD style)"
509   },
510   {
511     "invisible_steelwall",
512     "steelwall",
513     "Invisible steel wall"
514   },
515   {
516     "sokoban_field_player",
517     "sokoban",
518     "Sokoban field with player"
519   },
520   {
521     "dynabomb_increase_number",
522     "dynabomb",
523     "Increases number of bombs"
524   },
525   {
526     "dynabomb_increase_size",
527     "dynabomb",
528     "Increases explosion size"
529   },
530   {
531     "dynabomb_increase_power",
532     "dynabomb",
533     "Increases power of explosion"
534   },
535   {
536     "sokoban_object",
537     "sokoban",
538     "Sokoban object"
539   },
540   {
541     "sokoban_field_empty",
542     "sokoban",
543     "Sokoban empty field"
544   },
545   {
546     "sokoban_field_full",
547     "sokoban",
548     "Sokoban field with object"
549   },
550   {
551     "bd_butterfly.right",
552     "bd_butterfly",
553     "Butterfly (starts moving right)"
554   },
555   {
556     "bd_butterfly.up",
557     "bd_butterfly",
558     "Butterfly (starts moving up)"
559   },
560   {
561     "bd_butterfly.left",
562     "bd_butterfly",
563     "Butterfly (starts moving left)"
564   },
565   {
566     "bd_butterfly.down",
567     "bd_butterfly",
568     "Butterfly (starts moving down)"
569   },
570   {
571     "bd_firefly.right",
572     "bd_firefly",
573     "Firefly (starts moving right)"
574   },
575   {
576     "bd_firefly.up",
577     "bd_firefly",
578     "Firefly (starts moving up)"
579   },
580   {
581     "bd_firefly.left",
582     "bd_firefly",
583     "Firefly (starts moving left)"
584   },
585   {
586     "bd_firefly.down",
587     "bd_firefly",
588     "Firefly (starts moving down)"
589   },
590   {
591     "bd_butterfly",
592     "bd_butterfly",
593     "Butterfly (random start direction)"
594   },
595   {
596     "bd_firefly",
597     "bd_firefly",
598     "Firefly (random start direction)"
599   },
600   {
601     "player_1",
602     "player",
603     "Player 1"
604   },
605   {
606     "player_2",
607     "player",
608     "Player 2"
609   },
610   {
611     "player_3",
612     "player",
613     "Player 3"
614   },
615   {
616     "player_4",
617     "player",
618     "Player 4"
619   },
620   {
621     "bug.right",
622     "bug",
623     "Bug (starts moving right)"
624   },
625   {
626     "bug.up",
627     "bug",
628     "Bug (starts moving up)"
629   },
630   {
631     "bug.left",
632     "bug",
633     "Bug (starts moving left)"
634   },
635   {
636     "bug.down",
637     "bug",
638     "Bug (starts moving down)"
639   },
640   {
641     "spaceship.right",
642     "spaceship",
643     "Spaceship (starts moving right)"
644   },
645   {
646     "spaceship.up",
647     "spaceship",
648     "Spaceship (starts moving up)"
649   },
650   {
651     "spaceship.left",
652     "spaceship",
653     "Spaceship (starts moving left)"
654   },
655   {
656     "spaceship.down",
657     "spaceship",
658     "Spaceship (starts moving down)"
659   },
660   {
661     "pacman.right",
662     "pacman",
663     "Pac man (starts moving right)"
664   },
665   {
666     "pacman.up",
667     "pacman",
668     "Pac man (starts moving up)"
669   },
670   {
671     "pacman.left",
672     "pacman",
673     "Pac man (starts moving left)"
674   },
675   {
676     "pacman.down",
677     "pacman",
678     "Pac man (starts moving down)"
679   },
680   {
681     "emerald_red",
682     "emerald",
683     "Red emerald"
684   },
685   {
686     "emerald_purple",
687     "emerald",
688     "Purple emerald"
689   },
690   {
691     "wall_emerald_red",
692     "wall",
693     "Wall with red emerald"
694   },
695   {
696     "wall_emerald_purple",
697     "wall",
698     "Wall with purple emerald"
699   },
700   {
701     "acid_pool_topleft",
702     "wall",
703     "Acid pool (top left)"
704   },
705   {
706     "acid_pool_topright",
707     "wall",
708     "Acid pool (top right)"
709   },
710   {
711     "acid_pool_bottomleft",
712     "wall",
713     "Acid pool (bottom left)"
714   },
715   {
716     "acid_pool_bottom",
717     "wall",
718     "Acid pool (bottom)"
719   },
720   {
721     "acid_pool_bottomright",
722     "wall",
723     "Acid pool (bottom right)"
724   },
725   {
726     "bd_wall",
727     "wall",
728     "Normal wall (BD style)"
729   },
730   {
731     "bd_rock",
732     "bd_rock",
733     "Rock (BD style)"
734   },
735   {
736     "exit_open",
737     "exit",
738     "Open exit"
739   },
740   {
741     "black_orb",
742     "black_orb",
743     "Black orb bomb"
744   },
745   {
746     "amoeba_to_diamond",
747     "amoeba",
748     "Amoeba"
749   },
750   {
751     "mole",
752     "mole",
753     "Mole (random start direction)"
754   },
755   {
756     "penguin",
757     "penguin",
758     "Penguin"
759   },
760   {
761     "satellite",
762     "satellite",
763     "Satellite"
764   },
765   {
766     "arrow_left",
767     "arrow",
768     "Arrow left"
769   },
770   {
771     "arrow_right",
772     "arrow",
773     "Arrow right"
774   },
775   {
776     "arrow_up",
777     "arrow",
778     "Arrow up"
779   },
780   {
781     "arrow_down",
782     "arrow",
783     "Arrow down"
784   },
785   {
786     "pig",
787     "pig",
788     "Pig"
789   },
790   {
791     "dragon",
792     "dragon",
793     "Fire breathing dragon"
794   },
795   {
796     "em_key_1_file_obsolete",
797     "obsolete",
798     "Key (obsolete)"
799   },
800   {
801     "char_space",
802     "char",
803     "Letter ' '"
804   },
805   {
806     "char_exclam",
807     "char",
808     "Letter '!'"
809   },
810   {
811     "char_quotedbl",
812     "char",
813     "Letter '\"'"
814   },
815   {
816     "char_numbersign",
817     "char",
818     "Letter '#'"
819   },
820   {
821     "char_dollar",
822     "char",
823     "Letter '$'"
824   },
825   {
826     "char_percent",
827     "char",
828     "Letter '%'"
829   },
830   {
831     "char_ampersand",
832     "char",
833     "Letter '&'"
834   },
835   {
836     "char_apostrophe",
837     "char",
838     "Letter '''"
839   },
840   {
841     "char_parenleft",
842     "char",
843     "Letter '('"
844   },
845   {
846     "char_parenright",
847     "char",
848     "Letter ')'"
849   },
850   {
851     "char_asterisk",
852     "char",
853     "Letter '*'"
854   },
855   {
856     "char_plus",
857     "char",
858     "Letter '+'"
859   },
860   {
861     "char_comma",
862     "char",
863     "Letter ','"
864   },
865   {
866     "char_minus",
867     "char",
868     "Letter '-'"
869   },
870   {
871     "char_period",
872     "char",
873     "Letter '.'"
874   },
875   {
876     "char_slash",
877     "char",
878     "Letter '/'"
879   },
880   {
881     "char_0",
882     "char",
883     "Letter '0'"
884   },
885   {
886     "char_1",
887     "char",
888     "Letter '1'"
889   },
890   {
891     "char_2",
892     "char",
893     "Letter '2'"
894   },
895   {
896     "char_3",
897     "char",
898     "Letter '3'"
899   },
900   {
901     "char_4",
902     "char",
903     "Letter '4'"
904   },
905   {
906     "char_5",
907     "char",
908     "Letter '5'"
909   },
910   {
911     "char_6",
912     "char",
913     "Letter '6'"
914   },
915   {
916     "char_7",
917     "char",
918     "Letter '7'"
919   },
920   {
921     "char_8",
922     "char",
923     "Letter '8'"
924   },
925   {
926     "char_9",
927     "char",
928     "Letter '9'"
929   },
930   {
931     "char_colon",
932     "char",
933     "Letter ':'"
934   },
935   {
936     "char_semicolon",
937     "char",
938     "Letter ';'"
939   },
940   {
941     "char_less",
942     "char",
943     "Letter '<'"
944   },
945   {
946     "char_equal",
947     "char",
948     "Letter '='"
949   },
950   {
951     "char_greater",
952     "char",
953     "Letter '>'"
954   },
955   {
956     "char_question",
957     "char",
958     "Letter '?'"
959   },
960   {
961     "char_at",
962     "char",
963     "Letter '@'"
964   },
965   {
966     "char_a",
967     "char",
968     "Letter 'A'"
969   },
970   {
971     "char_b",
972     "char",
973     "Letter 'B'"
974   },
975   {
976     "char_c",
977     "char",
978     "Letter 'C'"
979   },
980   {
981     "char_d",
982     "char",
983     "Letter 'D'"
984   },
985   {
986     "char_e",
987     "char",
988     "Letter 'E'"
989   },
990   {
991     "char_f",
992     "char",
993     "Letter 'F'"
994   },
995   {
996     "char_g",
997     "char",
998     "Letter 'G'"
999   },
1000   {
1001     "char_h",
1002     "char",
1003     "Letter 'H'"
1004   },
1005   {
1006     "char_i",
1007     "char",
1008     "Letter 'I'"
1009   },
1010   {
1011     "char_j",
1012     "char",
1013     "Letter 'J'"
1014   },
1015   {
1016     "char_k",
1017     "char",
1018     "Letter 'K'"
1019   },
1020   {
1021     "char_l",
1022     "char",
1023     "Letter 'L'"
1024   },
1025   {
1026     "char_m",
1027     "char",
1028     "Letter 'M'"
1029   },
1030   {
1031     "char_n",
1032     "char",
1033     "Letter 'N'"
1034   },
1035   {
1036     "char_o",
1037     "char",
1038     "Letter 'O'"
1039   },
1040   {
1041     "char_p",
1042     "char",
1043     "Letter 'P'"
1044   },
1045   {
1046     "char_q",
1047     "char",
1048     "Letter 'Q'"
1049   },
1050   {
1051     "char_r",
1052     "char",
1053     "Letter 'R'"
1054   },
1055   {
1056     "char_s",
1057     "char",
1058     "Letter 'S'"
1059   },
1060   {
1061     "char_t",
1062     "char",
1063     "Letter 'T'"
1064   },
1065   {
1066     "char_u",
1067     "char",
1068     "Letter 'U'"
1069   },
1070   {
1071     "char_v",
1072     "char",
1073     "Letter 'V'"
1074   },
1075   {
1076     "char_w",
1077     "char",
1078     "Letter 'W'"
1079   },
1080   {
1081     "char_x",
1082     "char",
1083     "Letter 'X'"
1084   },
1085   {
1086     "char_y",
1087     "char",
1088     "Letter 'Y'"
1089   },
1090   {
1091     "char_z",
1092     "char",
1093     "Letter 'Z'"
1094   },
1095   {
1096     "char_bracketleft",
1097     "char",
1098     "Letter '['"
1099   },
1100   {
1101     "char_backslash",
1102     "char",
1103     "Letter '\\'"
1104   },
1105   {
1106     "char_bracketright",
1107     "char",
1108     "Letter ']'"
1109   },
1110   {
1111     "char_asciicircum",
1112     "char",
1113     "Letter '^'"
1114   },
1115   {
1116     "char_underscore",
1117     "char",
1118     "Letter '_'"
1119   },
1120   {
1121     "char_copyright",
1122     "char",
1123     "Letter '\xa9'"
1124   },
1125   {
1126     "char_aumlaut",
1127     "char",
1128     "Letter '\xc4'"
1129   },
1130   {
1131     "char_oumlaut",
1132     "char",
1133     "Letter '\xd6'"
1134   },
1135   {
1136     "char_uumlaut",
1137     "char",
1138     "Letter '\xdc'"
1139   },
1140   {
1141     "char_degree",
1142     "char",
1143     "Letter '\xb0'"
1144   },
1145   {
1146     "char_trademark",
1147     "char",
1148     "Letter '\xae'"
1149   },
1150   {
1151     "char_cursor",
1152     "char",
1153     "Letter '\xa0'"
1154   },
1155   {
1156     "char_unused",
1157     "char",
1158     "Letter ''"
1159   },
1160   {
1161     "char_unused",
1162     "char",
1163     "Letter ''"
1164   },
1165   {
1166     "char_unused",
1167     "char",
1168     "Letter ''"
1169   },
1170   {
1171     "char_unused",
1172     "char",
1173     "Letter ''"
1174   },
1175   {
1176     "char_unused",
1177     "char",
1178     "Letter ''"
1179   },
1180   {
1181     "char_unused",
1182     "char",
1183     "Letter ''"
1184   },
1185   {
1186     "char_button",
1187     "char",
1188     "Letter 'button'"
1189   },
1190   {
1191     "char_up",
1192     "char",
1193     "Letter 'up'"
1194   },
1195   {
1196     "char_down",
1197     "char",
1198     "Letter 'down'"
1199   },
1200   {
1201     "expandable_wall_horizontal",
1202     "wall",
1203     "Growing wall (horizontal)"
1204   },
1205   {
1206     "expandable_wall_vertical",
1207     "wall",
1208     "Growing wall (vertical)"
1209   },
1210   {
1211     "expandable_wall_any",
1212     "wall",
1213     "Growing wall (any direction)"
1214   },
1215   {
1216     "em_gate_1",
1217     "gate",
1218     "Door 1 (EM style)"
1219   },
1220   {
1221     "em_gate_2",
1222     "gate",
1223     "Door 2 (EM style)"
1224   },
1225   {
1226     "em_gate_3",
1227     "gate",
1228     "Door 3 (EM style)"
1229   },
1230   {
1231     "em_gate_4",
1232     "gate",
1233     "Door 4 (EM style)"
1234   },
1235   {
1236     "em_key_2_file_obsolete",
1237     "obsolete",
1238     "Key (obsolete)"
1239   },
1240   {
1241     "em_key_3_file_obsolete",
1242     "obsolete",
1243     "Key (obsolete)"
1244   },
1245   {
1246     "em_key_4_file_obsolete",
1247     "obsolete",
1248     "Key (obsolete)"
1249   },
1250   {
1251     "sp_empty_space",
1252     "empty_space",
1253     "Empty space"
1254   },
1255   {
1256     "sp_zonk",
1257     "sp_zonk",
1258     "Zonk"
1259   },
1260   {
1261     "sp_base",
1262     "sp_base",
1263     "Base"
1264   },
1265   {
1266     "sp_murphy",
1267     "player",
1268     "Murphy"
1269   },
1270   {
1271     "sp_infotron",
1272     "sp_infotron",
1273     "Infotron"
1274   },
1275   {
1276     "sp_chip_single",
1277     "wall",
1278     "Chip (single)"
1279   },
1280   {
1281     "sp_hardware_gray",
1282     "wall",
1283     "Hardware"
1284   },
1285   {
1286     "sp_exit_closed",
1287     "sp_exit",
1288     "Exit"
1289   },
1290   {
1291     "sp_disk_orange",
1292     "sp_disk_orange",
1293     "Orange disk"
1294   },
1295   {
1296     "sp_port_right",
1297     "sp_port",
1298     "Port (leading right)"
1299   },
1300   {
1301     "sp_port_down",
1302     "sp_port",
1303     "Port (leading down)"
1304   },
1305   {
1306     "sp_port_left",
1307     "sp_port",
1308     "Port (leading left)"
1309   },
1310   {
1311     "sp_port_up",
1312     "sp_port",
1313     "Port (leading up)"
1314   },
1315   {
1316     "sp_gravity_port_right",
1317     "sp_gravity_port",
1318     "Gravity-on/off port (leading right)"
1319   },
1320   {
1321     "sp_gravity_port_down",
1322     "sp_gravity_port",
1323     "Gravity-on/off port (leading down)"
1324   },
1325   {
1326     "sp_gravity_port_left",
1327     "sp_gravity_port",
1328     "Gravity-on/off port (leading left)"
1329   },
1330   {
1331     "sp_gravity_port_up",
1332     "sp_gravity_port",
1333     "Gravity-on/off port (leading up)"
1334   },
1335   {
1336     "sp_sniksnak",
1337     "sp_sniksnak",
1338     "Snik snak"
1339   },
1340   {
1341     "sp_disk_yellow",
1342     "sp_disk_yellow",
1343     "Yellow disk"
1344   },
1345   {
1346     "sp_terminal",
1347     "sp_terminal",
1348     "Terminal"
1349   },
1350   {
1351     "sp_disk_red",
1352     "dynamite",
1353     "Red disk"
1354   },
1355   {
1356     "sp_port_vertical",
1357     "sp_port",
1358     "Port (vertical)"
1359   },
1360   {
1361     "sp_port_horizontal",
1362     "sp_port",
1363     "Port (horizontal)"
1364   },
1365   {
1366     "sp_port_any",
1367     "sp_port",
1368     "Port (any direction)"
1369   },
1370   {
1371     "sp_electron",
1372     "sp_electron",
1373     "Electron"
1374   },
1375   {
1376     "sp_buggy_base",
1377     "sp_buggy_base",
1378     "Buggy base"
1379   },
1380   {
1381     "sp_chip_left",
1382     "wall",
1383     "Chip (left half)"
1384   },
1385   {
1386     "sp_chip_right",
1387     "wall",
1388     "Chip (right half)"
1389   },
1390   {
1391     "sp_hardware_base_1",
1392     "wall",
1393     "Hardware"
1394   },
1395   {
1396     "sp_hardware_green",
1397     "wall",
1398     "Hardware"
1399   },
1400   {
1401     "sp_hardware_blue",
1402     "wall",
1403     "Hardware"
1404   },
1405   {
1406     "sp_hardware_red",
1407     "wall",
1408     "Hardware"
1409   },
1410   {
1411     "sp_hardware_yellow",
1412     "wall",
1413     "Hardware"
1414   },
1415   {
1416     "sp_hardware_base_2",
1417     "wall",
1418     "Hardware"
1419   },
1420   {
1421     "sp_hardware_base_3",
1422     "wall",
1423     "Hardware"
1424   },
1425   {
1426     "sp_hardware_base_4",
1427     "wall",
1428     "Hardware"
1429   },
1430   {
1431     "sp_hardware_base_5",
1432     "wall",
1433     "Hardware"
1434   },
1435   {
1436     "sp_hardware_base_6",
1437     "wall",
1438     "Hardware"
1439   },
1440   {
1441     "sp_chip_top",
1442     "wall",
1443     "Chip (upper half)"
1444   },
1445   {
1446     "sp_chip_bottom",
1447     "wall",
1448     "Chip (lower half)"
1449   },
1450   {
1451     "em_gate_1_gray",
1452     "gate",
1453     "Gray door (EM style, key 1)"
1454   },
1455   {
1456     "em_gate_2_gray",
1457     "gate",
1458     "Gray door (EM style, key 2)"
1459   },
1460   {
1461     "em_gate_3_gray",
1462     "gate",
1463     "Gray door (EM style, key 3)"
1464   },
1465   {
1466     "em_gate_4_gray",
1467     "gate",
1468     "Gray door (EM style, key 4)"
1469   },
1470   {
1471     "em_dynamite",
1472     "dynamite",
1473     "Dynamite (EM style)"
1474   },
1475   {
1476     "em_dynamite.active",
1477     "dynamite",
1478     "Burning dynamite (EM style)"
1479   },
1480   {
1481     "pearl",
1482     "pearl",
1483     "Pearl"
1484   },
1485   {
1486     "crystal",
1487     "crystal",
1488     "Crystal"
1489   },
1490   {
1491     "wall_pearl",
1492     "wall",
1493     "Wall with pearl"
1494   },
1495   {
1496     "wall_crystal",
1497     "wall",
1498     "Wall with crystal"
1499   },
1500   {
1501     "dc_gate_white",
1502     "gate",
1503     "White door"
1504   },
1505   {
1506     "dc_gate_white_gray",
1507     "gate",
1508     "Gray door (opened by white key)"
1509   },
1510   {
1511     "dc_key_white",
1512     "key",
1513     "White key"
1514   },
1515   {
1516     "shield_normal",
1517     "shield_normal",
1518     "Shield (normal)"
1519   },
1520   {
1521     "extra_time",
1522     "extra_time",
1523     "Extra time"
1524   },
1525   {
1526     "switchgate_open",
1527     "switchgate",
1528     "Switch gate (open)"
1529   },
1530   {
1531     "switchgate_closed",
1532     "switchgate",
1533     "Switch gate (closed)"
1534   },
1535   {
1536     "switchgate_switch_up",
1537     "switchgate_switch",
1538     "Switch for switch gate"
1539   },
1540   {
1541     "switchgate_switch_down",
1542     "switchgate_switch",
1543     "Switch for switch gate"
1544   },
1545   {
1546     "unused_269",
1547     "unused",
1548     "-"
1549   },
1550   {
1551     "unused_270",
1552     "unused",
1553     "-"
1554   },
1555   {
1556     "conveyor_belt_1_left",
1557     "conveyor_belt",
1558     "Conveyor belt 1 (left)"
1559   },
1560   {
1561     "conveyor_belt_1_middle",
1562     "conveyor_belt",
1563     "Conveyor belt 1 (middle)"
1564   },
1565   {
1566     "conveyor_belt_1_right",
1567     "conveyor_belt",
1568     "Conveyor belt 1 (right)"
1569   },
1570   {
1571     "conveyor_belt_1_switch_left",
1572     "conveyor_belt_switch",
1573     "Switch for conveyor belt 1 (left)"
1574   },
1575   {
1576     "conveyor_belt_1_switch_middle",
1577     "conveyor_belt_switch",
1578     "Switch for conveyor belt 1 (middle)"
1579   },
1580   {
1581     "conveyor_belt_1_switch_right",
1582     "conveyor_belt_switch",
1583     "Switch for conveyor belt 1 (right)"
1584   },
1585   {
1586     "conveyor_belt_2_left",
1587     "conveyor_belt",
1588     "Conveyor belt 2 (left)"
1589   },
1590   {
1591     "conveyor_belt_2_middle",
1592     "conveyor_belt",
1593     "Conveyor belt 2 (middle)"
1594   },
1595   {
1596     "conveyor_belt_2_right",
1597     "conveyor_belt",
1598     "Conveyor belt 2 (right)"
1599   },
1600   {
1601     "conveyor_belt_2_switch_left",
1602     "conveyor_belt_switch",
1603     "Switch for conveyor belt 2 (left)"
1604   },
1605   {
1606     "conveyor_belt_2_switch_middle",
1607     "conveyor_belt_switch",
1608     "Switch for conveyor belt 2 (middle)"
1609   },
1610   {
1611     "conveyor_belt_2_switch_right",
1612     "conveyor_belt_switch",
1613     "Switch for conveyor belt 2 (right)"
1614   },
1615   {
1616     "conveyor_belt_3_left",
1617     "conveyor_belt",
1618     "Conveyor belt 3 (left)"
1619   },
1620   {
1621     "conveyor_belt_3_middle",
1622     "conveyor_belt",
1623     "Conveyor belt 3 (middle)"
1624   },
1625   {
1626     "conveyor_belt_3_right",
1627     "conveyor_belt",
1628     "Conveyor belt 3 (right)"
1629   },
1630   {
1631     "conveyor_belt_3_switch_left",
1632     "conveyor_belt_switch",
1633     "Switch for conveyor belt 3 (left)"
1634   },
1635   {
1636     "conveyor_belt_3_switch_middle",
1637     "conveyor_belt_switch",
1638     "Switch for conveyor belt 3 (middle)"
1639   },
1640   {
1641     "conveyor_belt_3_switch_right",
1642     "conveyor_belt_switch",
1643     "Switch for conveyor belt 3 (right)"
1644   },
1645   {
1646     "conveyor_belt_4_left",
1647     "conveyor_belt",
1648     "Conveyor belt 4 (left)"
1649   },
1650   {
1651     "conveyor_belt_4_middle",
1652     "conveyor_belt",
1653     "Conveyor belt 4 (middle)"
1654   },
1655   {
1656     "conveyor_belt_4_right",
1657     "conveyor_belt",
1658     "Conveyor belt 4 (right)"
1659   },
1660   {
1661     "conveyor_belt_4_switch_left",
1662     "conveyor_belt_switch",
1663     "Switch for conveyor belt 4 (left)"
1664   },
1665   {
1666     "conveyor_belt_4_switch_middle",
1667     "conveyor_belt_switch",
1668     "Switch for conveyor belt 4 (middle)"
1669   },
1670   {
1671     "conveyor_belt_4_switch_right",
1672     "conveyor_belt_switch",
1673     "Switch for conveyor belt 4 (right)"
1674   },
1675   {
1676     "landmine",
1677     "landmine",
1678     "Land mine (not removable)"
1679   },
1680   {
1681     "envelope_obsolete",
1682     "obsolete",
1683     "Envelope (obsolete)"
1684   },
1685   {
1686     "light_switch",
1687     "light_switch",
1688     "Light switch (off)"
1689   },
1690   {
1691     "light_switch.active",
1692     "light_switch",
1693     "Light switch (on)"
1694   },
1695   {
1696     "sign_exclamation",
1697     "sign",
1698     "Sign (exclamation)"
1699   },
1700   {
1701     "sign_radioactivity",
1702     "sign",
1703     "Sign (radio activity)"
1704   },
1705   {
1706     "sign_stop",
1707     "sign",
1708     "Sign (stop)"
1709   },
1710   {
1711     "sign_wheelchair",
1712     "sign",
1713     "Sign (wheel chair)"
1714   },
1715   {
1716     "sign_parking",
1717     "sign",
1718     "Sign (parking)"
1719   },
1720   {
1721     "sign_no_entry",
1722     "sign",
1723     "Sign (no entry)"
1724   },
1725   {
1726     "sign_unused_1",
1727     "sign",
1728     "Sign (unused)"
1729   },
1730   {
1731     "sign_give_way",
1732     "sign",
1733     "Sign (give way)"
1734   },
1735   {
1736     "sign_entry_forbidden",
1737     "sign",
1738     "Sign (entry forbidden)"
1739   },
1740   {
1741     "sign_emergency_exit",
1742     "sign",
1743     "Sign (emergency exit)"
1744   },
1745   {
1746     "sign_yin_yang",
1747     "sign",
1748     "Sign (yin yang)"
1749   },
1750   {
1751     "sign_unused_2",
1752     "sign",
1753     "Sign (unused)"
1754   },
1755   {
1756     "mole.left",
1757     "mole",
1758     "Mole (starts moving left)"
1759   },
1760   {
1761     "mole.right",
1762     "mole",
1763     "Mole (starts moving right)"
1764   },
1765   {
1766     "mole.up",
1767     "mole",
1768     "Mole (starts moving up)"
1769   },
1770   {
1771     "mole.down",
1772     "mole",
1773     "Mole (starts moving down)"
1774   },
1775   {
1776     "steelwall_slippery",
1777     "steelwall",
1778     "Slippery steel wall"
1779   },
1780   {
1781     "invisible_sand",
1782     "sand",
1783     "Invisible sand"
1784   },
1785   {
1786     "dx_unknown_15",
1787     "unknown",
1788     "DX unknown element 15"
1789   },
1790   {
1791     "dx_unknown_42",
1792     "unknown",
1793     "DX unknown element 42"
1794   },
1795   {
1796     "unused_319",
1797     "unused",
1798     "(not used)"
1799   },
1800   {
1801     "unused_320",
1802     "unused",
1803     "(not used)"
1804   },
1805   {
1806     "shield_deadly",
1807     "shield_deadly",
1808     "Shield (deadly, kills enemies)"
1809   },
1810   {
1811     "timegate_open",
1812     "timegate",
1813     "Time gate (open)"
1814   },
1815   {
1816     "timegate_closed",
1817     "timegate",
1818     "Time gate (closed)"
1819   },
1820   {
1821     "timegate_switch.active",
1822     "timegate_switch",
1823     "Switch for time gate"
1824   },
1825   {
1826     "timegate_switch",
1827     "timegate_switch",
1828     "Switch for time gate"
1829   },
1830   {
1831     "balloon",
1832     "balloon",
1833     "Balloon"
1834   },
1835   {
1836     "balloon_switch_left",
1837     "balloon_switch",
1838     "Wind switch (left)"
1839   },
1840   {
1841     "balloon_switch_right",
1842     "balloon_switch",
1843     "Wind switch (right)"
1844   },
1845   {
1846     "balloon_switch_up",
1847     "balloon_switch",
1848     "Wind switch (up)"
1849   },
1850   {
1851     "balloon_switch_down",
1852     "balloon_switch",
1853     "Wind switch (down)"
1854   },
1855   {
1856     "balloon_switch_any",
1857     "balloon_switch",
1858     "Wind switch (any direction)"
1859   },
1860   {
1861     "emc_steelwall_1",
1862     "steelwall",
1863     "Steel wall 1 (EMC style)"
1864   },
1865   {
1866     "emc_steelwall_2",
1867     "steelwall",
1868     "Steel wall 2 (EMC style)"
1869   },
1870   {
1871     "emc_steelwall_3",
1872     "steelwall",
1873     "Steel wall 3 (EMC style)"
1874   },
1875   {
1876     "emc_steelwall_4",
1877     "steelwall",
1878     "Steel wall 4 (EMC style)"
1879   },
1880   {
1881     "emc_wall_1",
1882     "wall",
1883     "Normal wall 1 (EMC style)"
1884   },
1885   {
1886     "emc_wall_2",
1887     "wall",
1888     "Normal wall 2 (EMC style)"
1889   },
1890   {
1891     "emc_wall_3",
1892     "wall",
1893     "Normal wall 3 (EMC style)"
1894   },
1895   {
1896     "emc_wall_4",
1897     "wall",
1898     "Normal wall 4 (EMC style)"
1899   },
1900   {
1901     "emc_wall_5",
1902     "wall",
1903     "Normal wall 5 (EMC style)"
1904   },
1905   {
1906     "emc_wall_6",
1907     "wall",
1908     "Normal wall 6 (EMC style)"
1909   },
1910   {
1911     "emc_wall_7",
1912     "wall",
1913     "Normal wall 7 (EMC style)"
1914   },
1915   {
1916     "emc_wall_8",
1917     "wall",
1918     "Normal wall 8 (EMC style)"
1919   },
1920   {
1921     "tube_any",
1922     "tube",
1923     "Tube (any direction)"
1924   },
1925   {
1926     "tube_vertical",
1927     "tube",
1928     "Tube (vertical)"
1929   },
1930   {
1931     "tube_horizontal",
1932     "tube",
1933     "Tube (horizontal)"
1934   },
1935   {
1936     "tube_vertical_left",
1937     "tube",
1938     "Tube (vertical & left)"
1939   },
1940   {
1941     "tube_vertical_right",
1942     "tube",
1943     "Tube (vertical & right)"
1944   },
1945   {
1946     "tube_horizontal_up",
1947     "tube",
1948     "Tube (horizontal & up)"
1949   },
1950   {
1951     "tube_horizontal_down",
1952     "tube",
1953     "Tube (horizontal & down)"
1954   },
1955   {
1956     "tube_left_up",
1957     "tube",
1958     "Tube (left & up)"
1959   },
1960   {
1961     "tube_left_down",
1962     "tube",
1963     "Tube (left & down)"
1964   },
1965   {
1966     "tube_right_up",
1967     "tube",
1968     "Tube (right & up)"
1969   },
1970   {
1971     "tube_right_down",
1972     "tube",
1973     "Tube (right & down)"
1974   },
1975   {
1976     "spring",
1977     "spring",
1978     "Spring"
1979   },
1980   {
1981     "trap",
1982     "trap",
1983     "Trap"
1984   },
1985   {
1986     "dx_supabomb",
1987     "bomb",
1988     "Stable bomb (DX style)"
1989   },
1990   {
1991     "unused_358",
1992     "unused",
1993     "-"
1994   },
1995   {
1996     "unused_359",
1997     "unused",
1998     "-"
1999   },
2000   {
2001     "custom_1",
2002     "custom",
2003     "Custom element 1"
2004   },
2005   {
2006     "custom_2",
2007     "custom",
2008     "Custom element 2"
2009   },
2010   {
2011     "custom_3",
2012     "custom",
2013     "Custom element 3"
2014   },
2015   {
2016     "custom_4",
2017     "custom",
2018     "Custom element 4"
2019   },
2020   {
2021     "custom_5",
2022     "custom",
2023     "Custom element 5"
2024   },
2025   {
2026     "custom_6",
2027     "custom",
2028     "Custom element 6"
2029   },
2030   {
2031     "custom_7",
2032     "custom",
2033     "Custom element 7"
2034   },
2035   {
2036     "custom_8",
2037     "custom",
2038     "Custom element 8"
2039   },
2040   {
2041     "custom_9",
2042     "custom",
2043     "Custom element 9"
2044   },
2045   {
2046     "custom_10",
2047     "custom",
2048     "Custom element 10"
2049   },
2050   {
2051     "custom_11",
2052     "custom",
2053     "Custom element 11"
2054   },
2055   {
2056     "custom_12",
2057     "custom",
2058     "Custom element 12"
2059   },
2060   {
2061     "custom_13",
2062     "custom",
2063     "Custom element 13"
2064   },
2065   {
2066     "custom_14",
2067     "custom",
2068     "Custom element 14"
2069   },
2070   {
2071     "custom_15",
2072     "custom",
2073     "Custom element 15"
2074   },
2075   {
2076     "custom_16",
2077     "custom",
2078     "Custom element 16"
2079   },
2080   {
2081     "custom_17",
2082     "custom",
2083     "Custom element 17"
2084   },
2085   {
2086     "custom_18",
2087     "custom",
2088     "Custom element 18"
2089   },
2090   {
2091     "custom_19",
2092     "custom",
2093     "Custom element 19"
2094   },
2095   {
2096     "custom_20",
2097     "custom",
2098     "Custom element 20"
2099   },
2100   {
2101     "custom_21",
2102     "custom",
2103     "Custom element 21"
2104   },
2105   {
2106     "custom_22",
2107     "custom",
2108     "Custom element 22"
2109   },
2110   {
2111     "custom_23",
2112     "custom",
2113     "Custom element 23"
2114   },
2115   {
2116     "custom_24",
2117     "custom",
2118     "Custom element 24"
2119   },
2120   {
2121     "custom_25",
2122     "custom",
2123     "Custom element 25"
2124   },
2125   {
2126     "custom_26",
2127     "custom",
2128     "Custom element 26"
2129   },
2130   {
2131     "custom_27",
2132     "custom",
2133     "Custom element 27"
2134   },
2135   {
2136     "custom_28",
2137     "custom",
2138     "Custom element 28"
2139   },
2140   {
2141     "custom_29",
2142     "custom",
2143     "Custom element 29"
2144   },
2145   {
2146     "custom_30",
2147     "custom",
2148     "Custom element 30"
2149   },
2150   {
2151     "custom_31",
2152     "custom",
2153     "Custom element 31"
2154   },
2155   {
2156     "custom_32",
2157     "custom",
2158     "Custom element 32"
2159   },
2160   {
2161     "custom_33",
2162     "custom",
2163     "Custom element 33"
2164   },
2165   {
2166     "custom_34",
2167     "custom",
2168     "Custom element 34"
2169   },
2170   {
2171     "custom_35",
2172     "custom",
2173     "Custom element 35"
2174   },
2175   {
2176     "custom_36",
2177     "custom",
2178     "Custom element 36"
2179   },
2180   {
2181     "custom_37",
2182     "custom",
2183     "Custom element 37"
2184   },
2185   {
2186     "custom_38",
2187     "custom",
2188     "Custom element 38"
2189   },
2190   {
2191     "custom_39",
2192     "custom",
2193     "Custom element 39"
2194   },
2195   {
2196     "custom_40",
2197     "custom",
2198     "Custom element 40"
2199   },
2200   {
2201     "custom_41",
2202     "custom",
2203     "Custom element 41"
2204   },
2205   {
2206     "custom_42",
2207     "custom",
2208     "Custom element 42"
2209   },
2210   {
2211     "custom_43",
2212     "custom",
2213     "Custom element 43"
2214   },
2215   {
2216     "custom_44",
2217     "custom",
2218     "Custom element 44"
2219   },
2220   {
2221     "custom_45",
2222     "custom",
2223     "Custom element 45"
2224   },
2225   {
2226     "custom_46",
2227     "custom",
2228     "Custom element 46"
2229   },
2230   {
2231     "custom_47",
2232     "custom",
2233     "Custom element 47"
2234   },
2235   {
2236     "custom_48",
2237     "custom",
2238     "Custom element 48"
2239   },
2240   {
2241     "custom_49",
2242     "custom",
2243     "Custom element 49"
2244   },
2245   {
2246     "custom_50",
2247     "custom",
2248     "Custom element 50"
2249   },
2250   {
2251     "custom_51",
2252     "custom",
2253     "Custom element 51"
2254   },
2255   {
2256     "custom_52",
2257     "custom",
2258     "Custom element 52"
2259   },
2260   {
2261     "custom_53",
2262     "custom",
2263     "Custom element 53"
2264   },
2265   {
2266     "custom_54",
2267     "custom",
2268     "Custom element 54"
2269   },
2270   {
2271     "custom_55",
2272     "custom",
2273     "Custom element 55"
2274   },
2275   {
2276     "custom_56",
2277     "custom",
2278     "Custom element 56"
2279   },
2280   {
2281     "custom_57",
2282     "custom",
2283     "Custom element 57"
2284   },
2285   {
2286     "custom_58",
2287     "custom",
2288     "Custom element 58"
2289   },
2290   {
2291     "custom_59",
2292     "custom",
2293     "Custom element 59"
2294   },
2295   {
2296     "custom_60",
2297     "custom",
2298     "Custom element 60"
2299   },
2300   {
2301     "custom_61",
2302     "custom",
2303     "Custom element 61"
2304   },
2305   {
2306     "custom_62",
2307     "custom",
2308     "Custom element 62"
2309   },
2310   {
2311     "custom_63",
2312     "custom",
2313     "Custom element 63"
2314   },
2315   {
2316     "custom_64",
2317     "custom",
2318     "Custom element 64"
2319   },
2320   {
2321     "custom_65",
2322     "custom",
2323     "Custom element 65"
2324   },
2325   {
2326     "custom_66",
2327     "custom",
2328     "Custom element 66"
2329   },
2330   {
2331     "custom_67",
2332     "custom",
2333     "Custom element 67"
2334   },
2335   {
2336     "custom_68",
2337     "custom",
2338     "Custom element 68"
2339   },
2340   {
2341     "custom_69",
2342     "custom",
2343     "Custom element 69"
2344   },
2345   {
2346     "custom_70",
2347     "custom",
2348     "Custom element 70"
2349   },
2350   {
2351     "custom_71",
2352     "custom",
2353     "Custom element 71"
2354   },
2355   {
2356     "custom_72",
2357     "custom",
2358     "Custom element 72"
2359   },
2360   {
2361     "custom_73",
2362     "custom",
2363     "Custom element 73"
2364   },
2365   {
2366     "custom_74",
2367     "custom",
2368     "Custom element 74"
2369   },
2370   {
2371     "custom_75",
2372     "custom",
2373     "Custom element 75"
2374   },
2375   {
2376     "custom_76",
2377     "custom",
2378     "Custom element 76"
2379   },
2380   {
2381     "custom_77",
2382     "custom",
2383     "Custom element 77"
2384   },
2385   {
2386     "custom_78",
2387     "custom",
2388     "Custom element 78"
2389   },
2390   {
2391     "custom_79",
2392     "custom",
2393     "Custom element 79"
2394   },
2395   {
2396     "custom_80",
2397     "custom",
2398     "Custom element 80"
2399   },
2400   {
2401     "custom_81",
2402     "custom",
2403     "Custom element 81"
2404   },
2405   {
2406     "custom_82",
2407     "custom",
2408     "Custom element 82"
2409   },
2410   {
2411     "custom_83",
2412     "custom",
2413     "Custom element 83"
2414   },
2415   {
2416     "custom_84",
2417     "custom",
2418     "Custom element 84"
2419   },
2420   {
2421     "custom_85",
2422     "custom",
2423     "Custom element 85"
2424   },
2425   {
2426     "custom_86",
2427     "custom",
2428     "Custom element 86"
2429   },
2430   {
2431     "custom_87",
2432     "custom",
2433     "Custom element 87"
2434   },
2435   {
2436     "custom_88",
2437     "custom",
2438     "Custom element 88"
2439   },
2440   {
2441     "custom_89",
2442     "custom",
2443     "Custom element 89"
2444   },
2445   {
2446     "custom_90",
2447     "custom",
2448     "Custom element 90"
2449   },
2450   {
2451     "custom_91",
2452     "custom",
2453     "Custom element 91"
2454   },
2455   {
2456     "custom_92",
2457     "custom",
2458     "Custom element 92"
2459   },
2460   {
2461     "custom_93",
2462     "custom",
2463     "Custom element 93"
2464   },
2465   {
2466     "custom_94",
2467     "custom",
2468     "Custom element 94"
2469   },
2470   {
2471     "custom_95",
2472     "custom",
2473     "Custom element 95"
2474   },
2475   {
2476     "custom_96",
2477     "custom",
2478     "Custom element 96"
2479   },
2480   {
2481     "custom_97",
2482     "custom",
2483     "Custom element 97"
2484   },
2485   {
2486     "custom_98",
2487     "custom",
2488     "Custom element 98"
2489   },
2490   {
2491     "custom_99",
2492     "custom",
2493     "Custom element 99"
2494   },
2495   {
2496     "custom_100",
2497     "custom",
2498     "Custom element 100"
2499   },
2500   {
2501     "custom_101",
2502     "custom",
2503     "Custom element 101"
2504   },
2505   {
2506     "custom_102",
2507     "custom",
2508     "Custom element 102"
2509   },
2510   {
2511     "custom_103",
2512     "custom",
2513     "Custom element 103"
2514   },
2515   {
2516     "custom_104",
2517     "custom",
2518     "Custom element 104"
2519   },
2520   {
2521     "custom_105",
2522     "custom",
2523     "Custom element 105"
2524   },
2525   {
2526     "custom_106",
2527     "custom",
2528     "Custom element 106"
2529   },
2530   {
2531     "custom_107",
2532     "custom",
2533     "Custom element 107"
2534   },
2535   {
2536     "custom_108",
2537     "custom",
2538     "Custom element 108"
2539   },
2540   {
2541     "custom_109",
2542     "custom",
2543     "Custom element 109"
2544   },
2545   {
2546     "custom_110",
2547     "custom",
2548     "Custom element 110"
2549   },
2550   {
2551     "custom_111",
2552     "custom",
2553     "Custom element 111"
2554   },
2555   {
2556     "custom_112",
2557     "custom",
2558     "Custom element 112"
2559   },
2560   {
2561     "custom_113",
2562     "custom",
2563     "Custom element 113"
2564   },
2565   {
2566     "custom_114",
2567     "custom",
2568     "Custom element 114"
2569   },
2570   {
2571     "custom_115",
2572     "custom",
2573     "Custom element 115"
2574   },
2575   {
2576     "custom_116",
2577     "custom",
2578     "Custom element 116"
2579   },
2580   {
2581     "custom_117",
2582     "custom",
2583     "Custom element 117"
2584   },
2585   {
2586     "custom_118",
2587     "custom",
2588     "Custom element 118"
2589   },
2590   {
2591     "custom_119",
2592     "custom",
2593     "Custom element 119"
2594   },
2595   {
2596     "custom_120",
2597     "custom",
2598     "Custom element 120"
2599   },
2600   {
2601     "custom_121",
2602     "custom",
2603     "Custom element 121"
2604   },
2605   {
2606     "custom_122",
2607     "custom",
2608     "Custom element 122"
2609   },
2610   {
2611     "custom_123",
2612     "custom",
2613     "Custom element 123"
2614   },
2615   {
2616     "custom_124",
2617     "custom",
2618     "Custom element 124"
2619   },
2620   {
2621     "custom_125",
2622     "custom",
2623     "Custom element 125"
2624   },
2625   {
2626     "custom_126",
2627     "custom",
2628     "Custom element 126"
2629   },
2630   {
2631     "custom_127",
2632     "custom",
2633     "Custom element 127"
2634   },
2635   {
2636     "custom_128",
2637     "custom",
2638     "Custom element 128"
2639   },
2640   {
2641     "custom_129",
2642     "custom",
2643     "Custom element 129"
2644   },
2645   {
2646     "custom_130",
2647     "custom",
2648     "Custom element 130"
2649   },
2650   {
2651     "custom_131",
2652     "custom",
2653     "Custom element 131"
2654   },
2655   {
2656     "custom_132",
2657     "custom",
2658     "Custom element 132"
2659   },
2660   {
2661     "custom_133",
2662     "custom",
2663     "Custom element 133"
2664   },
2665   {
2666     "custom_134",
2667     "custom",
2668     "Custom element 134"
2669   },
2670   {
2671     "custom_135",
2672     "custom",
2673     "Custom element 135"
2674   },
2675   {
2676     "custom_136",
2677     "custom",
2678     "Custom element 136"
2679   },
2680   {
2681     "custom_137",
2682     "custom",
2683     "Custom element 137"
2684   },
2685   {
2686     "custom_138",
2687     "custom",
2688     "Custom element 138"
2689   },
2690   {
2691     "custom_139",
2692     "custom",
2693     "Custom element 139"
2694   },
2695   {
2696     "custom_140",
2697     "custom",
2698     "Custom element 140"
2699   },
2700   {
2701     "custom_141",
2702     "custom",
2703     "Custom element 141"
2704   },
2705   {
2706     "custom_142",
2707     "custom",
2708     "Custom element 142"
2709   },
2710   {
2711     "custom_143",
2712     "custom",
2713     "Custom element 143"
2714   },
2715   {
2716     "custom_144",
2717     "custom",
2718     "Custom element 144"
2719   },
2720   {
2721     "custom_145",
2722     "custom",
2723     "Custom element 145"
2724   },
2725   {
2726     "custom_146",
2727     "custom",
2728     "Custom element 146"
2729   },
2730   {
2731     "custom_147",
2732     "custom",
2733     "Custom element 147"
2734   },
2735   {
2736     "custom_148",
2737     "custom",
2738     "Custom element 148"
2739   },
2740   {
2741     "custom_149",
2742     "custom",
2743     "Custom element 149"
2744   },
2745   {
2746     "custom_150",
2747     "custom",
2748     "Custom element 150"
2749   },
2750   {
2751     "custom_151",
2752     "custom",
2753     "Custom element 151"
2754   },
2755   {
2756     "custom_152",
2757     "custom",
2758     "Custom element 152"
2759   },
2760   {
2761     "custom_153",
2762     "custom",
2763     "Custom element 153"
2764   },
2765   {
2766     "custom_154",
2767     "custom",
2768     "Custom element 154"
2769   },
2770   {
2771     "custom_155",
2772     "custom",
2773     "Custom element 155"
2774   },
2775   {
2776     "custom_156",
2777     "custom",
2778     "Custom element 156"
2779   },
2780   {
2781     "custom_157",
2782     "custom",
2783     "Custom element 157"
2784   },
2785   {
2786     "custom_158",
2787     "custom",
2788     "Custom element 158"
2789   },
2790   {
2791     "custom_159",
2792     "custom",
2793     "Custom element 159"
2794   },
2795   {
2796     "custom_160",
2797     "custom",
2798     "Custom element 160"
2799   },
2800   {
2801     "custom_161",
2802     "custom",
2803     "Custom element 161"
2804   },
2805   {
2806     "custom_162",
2807     "custom",
2808     "Custom element 162"
2809   },
2810   {
2811     "custom_163",
2812     "custom",
2813     "Custom element 163"
2814   },
2815   {
2816     "custom_164",
2817     "custom",
2818     "Custom element 164"
2819   },
2820   {
2821     "custom_165",
2822     "custom",
2823     "Custom element 165"
2824   },
2825   {
2826     "custom_166",
2827     "custom",
2828     "Custom element 166"
2829   },
2830   {
2831     "custom_167",
2832     "custom",
2833     "Custom element 167"
2834   },
2835   {
2836     "custom_168",
2837     "custom",
2838     "Custom element 168"
2839   },
2840   {
2841     "custom_169",
2842     "custom",
2843     "Custom element 169"
2844   },
2845   {
2846     "custom_170",
2847     "custom",
2848     "Custom element 170"
2849   },
2850   {
2851     "custom_171",
2852     "custom",
2853     "Custom element 171"
2854   },
2855   {
2856     "custom_172",
2857     "custom",
2858     "Custom element 172"
2859   },
2860   {
2861     "custom_173",
2862     "custom",
2863     "Custom element 173"
2864   },
2865   {
2866     "custom_174",
2867     "custom",
2868     "Custom element 174"
2869   },
2870   {
2871     "custom_175",
2872     "custom",
2873     "Custom element 175"
2874   },
2875   {
2876     "custom_176",
2877     "custom",
2878     "Custom element 176"
2879   },
2880   {
2881     "custom_177",
2882     "custom",
2883     "Custom element 177"
2884   },
2885   {
2886     "custom_178",
2887     "custom",
2888     "Custom element 178"
2889   },
2890   {
2891     "custom_179",
2892     "custom",
2893     "Custom element 179"
2894   },
2895   {
2896     "custom_180",
2897     "custom",
2898     "Custom element 180"
2899   },
2900   {
2901     "custom_181",
2902     "custom",
2903     "Custom element 181"
2904   },
2905   {
2906     "custom_182",
2907     "custom",
2908     "Custom element 182"
2909   },
2910   {
2911     "custom_183",
2912     "custom",
2913     "Custom element 183"
2914   },
2915   {
2916     "custom_184",
2917     "custom",
2918     "Custom element 184"
2919   },
2920   {
2921     "custom_185",
2922     "custom",
2923     "Custom element 185"
2924   },
2925   {
2926     "custom_186",
2927     "custom",
2928     "Custom element 186"
2929   },
2930   {
2931     "custom_187",
2932     "custom",
2933     "Custom element 187"
2934   },
2935   {
2936     "custom_188",
2937     "custom",
2938     "Custom element 188"
2939   },
2940   {
2941     "custom_189",
2942     "custom",
2943     "Custom element 189"
2944   },
2945   {
2946     "custom_190",
2947     "custom",
2948     "Custom element 190"
2949   },
2950   {
2951     "custom_191",
2952     "custom",
2953     "Custom element 191"
2954   },
2955   {
2956     "custom_192",
2957     "custom",
2958     "Custom element 192"
2959   },
2960   {
2961     "custom_193",
2962     "custom",
2963     "Custom element 193"
2964   },
2965   {
2966     "custom_194",
2967     "custom",
2968     "Custom element 194"
2969   },
2970   {
2971     "custom_195",
2972     "custom",
2973     "Custom element 195"
2974   },
2975   {
2976     "custom_196",
2977     "custom",
2978     "Custom element 196"
2979   },
2980   {
2981     "custom_197",
2982     "custom",
2983     "Custom element 197"
2984   },
2985   {
2986     "custom_198",
2987     "custom",
2988     "Custom element 198"
2989   },
2990   {
2991     "custom_199",
2992     "custom",
2993     "Custom element 199"
2994   },
2995   {
2996     "custom_200",
2997     "custom",
2998     "Custom element 200"
2999   },
3000   {
3001     "custom_201",
3002     "custom",
3003     "Custom element 201"
3004   },
3005   {
3006     "custom_202",
3007     "custom",
3008     "Custom element 202"
3009   },
3010   {
3011     "custom_203",
3012     "custom",
3013     "Custom element 203"
3014   },
3015   {
3016     "custom_204",
3017     "custom",
3018     "Custom element 204"
3019   },
3020   {
3021     "custom_205",
3022     "custom",
3023     "Custom element 205"
3024   },
3025   {
3026     "custom_206",
3027     "custom",
3028     "Custom element 206"
3029   },
3030   {
3031     "custom_207",
3032     "custom",
3033     "Custom element 207"
3034   },
3035   {
3036     "custom_208",
3037     "custom",
3038     "Custom element 208"
3039   },
3040   {
3041     "custom_209",
3042     "custom",
3043     "Custom element 209"
3044   },
3045   {
3046     "custom_210",
3047     "custom",
3048     "Custom element 210"
3049   },
3050   {
3051     "custom_211",
3052     "custom",
3053     "Custom element 211"
3054   },
3055   {
3056     "custom_212",
3057     "custom",
3058     "Custom element 212"
3059   },
3060   {
3061     "custom_213",
3062     "custom",
3063     "Custom element 213"
3064   },
3065   {
3066     "custom_214",
3067     "custom",
3068     "Custom element 214"
3069   },
3070   {
3071     "custom_215",
3072     "custom",
3073     "Custom element 215"
3074   },
3075   {
3076     "custom_216",
3077     "custom",
3078     "Custom element 216"
3079   },
3080   {
3081     "custom_217",
3082     "custom",
3083     "Custom element 217"
3084   },
3085   {
3086     "custom_218",
3087     "custom",
3088     "Custom element 218"
3089   },
3090   {
3091     "custom_219",
3092     "custom",
3093     "Custom element 219"
3094   },
3095   {
3096     "custom_220",
3097     "custom",
3098     "Custom element 220"
3099   },
3100   {
3101     "custom_221",
3102     "custom",
3103     "Custom element 221"
3104   },
3105   {
3106     "custom_222",
3107     "custom",
3108     "Custom element 222"
3109   },
3110   {
3111     "custom_223",
3112     "custom",
3113     "Custom element 223"
3114   },
3115   {
3116     "custom_224",
3117     "custom",
3118     "Custom element 224"
3119   },
3120   {
3121     "custom_225",
3122     "custom",
3123     "Custom element 225"
3124   },
3125   {
3126     "custom_226",
3127     "custom",
3128     "Custom element 226"
3129   },
3130   {
3131     "custom_227",
3132     "custom",
3133     "Custom element 227"
3134   },
3135   {
3136     "custom_228",
3137     "custom",
3138     "Custom element 228"
3139   },
3140   {
3141     "custom_229",
3142     "custom",
3143     "Custom element 229"
3144   },
3145   {
3146     "custom_230",
3147     "custom",
3148     "Custom element 230"
3149   },
3150   {
3151     "custom_231",
3152     "custom",
3153     "Custom element 231"
3154   },
3155   {
3156     "custom_232",
3157     "custom",
3158     "Custom element 232"
3159   },
3160   {
3161     "custom_233",
3162     "custom",
3163     "Custom element 233"
3164   },
3165   {
3166     "custom_234",
3167     "custom",
3168     "Custom element 234"
3169   },
3170   {
3171     "custom_235",
3172     "custom",
3173     "Custom element 235"
3174   },
3175   {
3176     "custom_236",
3177     "custom",
3178     "Custom element 236"
3179   },
3180   {
3181     "custom_237",
3182     "custom",
3183     "Custom element 237"
3184   },
3185   {
3186     "custom_238",
3187     "custom",
3188     "Custom element 238"
3189   },
3190   {
3191     "custom_239",
3192     "custom",
3193     "Custom element 239"
3194   },
3195   {
3196     "custom_240",
3197     "custom",
3198     "Custom element 240"
3199   },
3200   {
3201     "custom_241",
3202     "custom",
3203     "Custom element 241"
3204   },
3205   {
3206     "custom_242",
3207     "custom",
3208     "Custom element 242"
3209   },
3210   {
3211     "custom_243",
3212     "custom",
3213     "Custom element 243"
3214   },
3215   {
3216     "custom_244",
3217     "custom",
3218     "Custom element 244"
3219   },
3220   {
3221     "custom_245",
3222     "custom",
3223     "Custom element 245"
3224   },
3225   {
3226     "custom_246",
3227     "custom",
3228     "Custom element 246"
3229   },
3230   {
3231     "custom_247",
3232     "custom",
3233     "Custom element 247"
3234   },
3235   {
3236     "custom_248",
3237     "custom",
3238     "Custom element 248"
3239   },
3240   {
3241     "custom_249",
3242     "custom",
3243     "Custom element 249"
3244   },
3245   {
3246     "custom_250",
3247     "custom",
3248     "Custom element 250"
3249   },
3250   {
3251     "custom_251",
3252     "custom",
3253     "Custom element 251"
3254   },
3255   {
3256     "custom_252",
3257     "custom",
3258     "Custom element 252"
3259   },
3260   {
3261     "custom_253",
3262     "custom",
3263     "Custom element 253"
3264   },
3265   {
3266     "custom_254",
3267     "custom",
3268     "Custom element 254"
3269   },
3270   {
3271     "custom_255",
3272     "custom",
3273     "Custom element 255"
3274   },
3275   {
3276     "custom_256",
3277     "custom",
3278     "Custom element 256"
3279   },
3280   {
3281     "em_key_1",
3282     "key",
3283     "Key 1 (EM style)"
3284     },
3285   {
3286     "em_key_2",
3287     "key",
3288     "Key 2 (EM style)"
3289     },
3290   {
3291     "em_key_3",
3292     "key",
3293     "Key 3 (EM style)"
3294   },
3295   {
3296     "em_key_4",
3297     "key",
3298     "Key 4 (EM style)"
3299   },
3300   {
3301     "envelope_1",
3302     "envelope",
3303     "Mail envelope 1"
3304   },
3305   {
3306     "envelope_2",
3307     "envelope",
3308     "Mail envelope 2"
3309   },
3310   {
3311     "envelope_3",
3312     "envelope",
3313     "Mail envelope 3"
3314   },
3315   {
3316     "envelope_4",
3317     "envelope",
3318     "Mail envelope 4"
3319   },
3320   {
3321     "group_1",
3322     "group",
3323     "Group element 1"
3324   },
3325   {
3326     "group_2",
3327     "group",
3328     "Group element 2"
3329   },
3330   {
3331     "group_3",
3332     "group",
3333     "Group element 3"
3334   },
3335   {
3336     "group_4",
3337     "group",
3338     "Group element 4"
3339   },
3340   {
3341     "group_5",
3342     "group",
3343     "Group element 5"
3344   },
3345   {
3346     "group_6",
3347     "group",
3348     "Group element 6"
3349   },
3350   {
3351     "group_7",
3352     "group",
3353     "Group element 7"
3354   },
3355   {
3356     "group_8",
3357     "group",
3358     "Group element 8"
3359   },
3360   {
3361     "group_9",
3362     "group",
3363     "Group element 9"
3364   },
3365   {
3366     "group_10",
3367     "group",
3368     "Group element 10"
3369   },
3370   {
3371     "group_11",
3372     "group",
3373     "Group element 11"
3374   },
3375   {
3376     "group_12",
3377     "group",
3378     "Group element 12"
3379   },
3380   {
3381     "group_13",
3382     "group",
3383     "Group element 13"
3384   },
3385   {
3386     "group_14",
3387     "group",
3388     "Group element 14"
3389   },
3390   {
3391     "group_15",
3392     "group",
3393     "Group element 15"
3394   },
3395   {
3396     "group_16",
3397     "group",
3398     "Group element 16"
3399   },
3400   {
3401     "group_17",
3402     "group",
3403     "Group element 17"
3404   },
3405   {
3406     "group_18",
3407     "group",
3408     "Group element 18"
3409   },
3410   {
3411     "group_19",
3412     "group",
3413     "Group element 19"
3414   },
3415   {
3416     "group_20",
3417     "group",
3418     "Group element 20"
3419   },
3420   {
3421     "group_21",
3422     "group",
3423     "Group element 21"
3424   },
3425   {
3426     "group_22",
3427     "group",
3428     "Group element 22"
3429   },
3430   {
3431     "group_23",
3432     "group",
3433     "Group element 23"
3434   },
3435   {
3436     "group_24",
3437     "group",
3438     "Group element 24"
3439   },
3440   {
3441     "group_25",
3442     "group",
3443     "Group element 25"
3444   },
3445   {
3446     "group_26",
3447     "group",
3448     "Group element 26"
3449   },
3450   {
3451     "group_27",
3452     "group",
3453     "Group element 27"
3454   },
3455   {
3456     "group_28",
3457     "group",
3458     "Group element 28"
3459   },
3460   {
3461     "group_29",
3462     "group",
3463     "Group element 29"
3464   },
3465   {
3466     "group_30",
3467     "group",
3468     "Group element 30"
3469   },
3470   {
3471     "group_31",
3472     "group",
3473     "Group element 31"
3474   },
3475   {
3476     "group_32",
3477     "group",
3478     "Group element 32"
3479   },
3480   {
3481     "unknown",
3482     "unknown",
3483     "Unknown element"
3484   },
3485   {
3486     "trigger_element",
3487     "trigger",
3488     "Element triggering change"
3489   },
3490   {
3491     "trigger_player",
3492     "trigger",
3493     "Player triggering change"
3494   },
3495   {
3496     "sp_gravity_on_port_right",
3497     "sp_gravity_on_port",
3498     "Gravity-on port (leading right)"
3499   },
3500   {
3501     "sp_gravity_on_port_down",
3502     "sp_gravity_on_port",
3503     "Gravity-on port (leading down)"
3504   },
3505   {
3506     "sp_gravity_on_port_left",
3507     "sp_gravity_on_port",
3508     "Gravity-on port (leading left)"
3509   },
3510   {
3511     "sp_gravity_on_port_up",
3512     "sp_gravity_on_port",
3513     "Gravity-on port (leading up)"
3514   },
3515   {
3516     "sp_gravity_off_port_right",
3517     "sp_gravity_off_port",
3518     "Gravity-off port (leading right)"
3519   },
3520   {
3521     "sp_gravity_off_port_down",
3522     "sp_gravity_off_port",
3523     "Gravity-off port (leading down)"
3524   },
3525   {
3526     "sp_gravity_off_port_left",
3527     "sp_gravity_off_port",
3528     "Gravity-off port (leading left)"
3529   },
3530   {
3531     "sp_gravity_off_port_up",
3532     "sp_gravity_off_port",
3533     "Gravity-off port (leading up)"
3534   },
3535   {
3536     "balloon_switch_none",
3537     "balloon_switch",
3538     "Wind switch (off)"
3539   },
3540   {
3541     "emc_gate_5",
3542     "gate",
3543     "Door 5 (EMC style)",
3544   },
3545   {
3546     "emc_gate_6",
3547     "gate",
3548     "Door 6 (EMC style)",
3549   },
3550   {
3551     "emc_gate_7",
3552     "gate",
3553     "Door 7 (EMC style)",
3554   },
3555   {
3556     "emc_gate_8",
3557     "gate",
3558     "Door 8 (EMC style)",
3559   },
3560   {
3561     "emc_gate_5_gray",
3562     "gate",
3563     "Gray door (EMC style, key 5)",
3564   },
3565   {
3566     "emc_gate_6_gray",
3567     "gate",
3568     "Gray door (EMC style, key 6)",
3569   },
3570   {
3571     "emc_gate_7_gray",
3572     "gate",
3573     "Gray door (EMC style, key 7)",
3574   },
3575   {
3576     "emc_gate_8_gray",
3577     "gate",
3578     "Gray door (EMC style, key 8)",
3579   },
3580   {
3581     "emc_key_5",
3582     "key",
3583     "Key 5 (EMC style)",
3584   },
3585   {
3586     "emc_key_6",
3587     "key",
3588     "Key 6 (EMC style)",
3589   },
3590   {
3591     "emc_key_7",
3592     "key",
3593     "Key 7 (EMC style)",
3594   },
3595   {
3596     "emc_key_8",
3597     "key",
3598     "Key 8 (EMC style)",
3599   },
3600   {
3601     "emc_android",
3602     "emc_android",
3603     "Android",
3604   },
3605   {
3606     "emc_grass",
3607     "emc_grass",
3608     "Grass",
3609   },
3610   {
3611     "emc_magic_ball",
3612     "emc_magic_ball",
3613     "Magic ball",
3614   },
3615   {
3616     "emc_magic_ball.active",
3617     "emc_magic_ball",
3618     "Magic ball (activated)",
3619   },
3620   {
3621     "emc_magic_ball_switch",
3622     "emc_magic_ball_switch",
3623     "Magic ball switch (off)",
3624   },
3625   {
3626     "emc_magic_ball_switch.active",
3627     "emc_magic_ball_switch",
3628     "Magic ball switch (on)",
3629   },
3630   {
3631     "emc_spring_bumper",
3632     "emc_spring_bumper",
3633     "Spring bumper",
3634   },
3635   {
3636     "emc_plant",
3637     "emc_plant",
3638     "Plant",
3639   },
3640   {
3641     "emc_lenses",
3642     "emc_lenses",
3643     "Lenses",
3644   },
3645   {
3646     "emc_magnifier",
3647     "emc_magnifier",
3648     "Magnifier",
3649   },
3650   {
3651     "emc_wall_9",
3652     "wall",
3653     "Normal wall 9 (EMC style)"
3654   },
3655   {
3656     "emc_wall_10",
3657     "wall",
3658     "Normal wall 10 (EMC style)"
3659   },
3660   {
3661     "emc_wall_11",
3662     "wall",
3663     "Normal wall 11 (EMC style)"
3664   },
3665   {
3666     "emc_wall_12",
3667     "wall",
3668     "Normal wall 12 (EMC style)"
3669   },
3670   {
3671     "emc_wall_13",
3672     "wall",
3673     "Normal wall 13 (EMC style)"
3674   },
3675   {
3676     "emc_wall_14",
3677     "wall",
3678     "Normal wall 14 (EMC style)"
3679   },
3680   {
3681     "emc_wall_15",
3682     "wall",
3683     "Normal wall 15 (EMC style)"
3684   },
3685   {
3686     "emc_wall_16",
3687     "wall",
3688     "Normal wall 16 (EMC style)"
3689   },
3690   {
3691     "emc_wall_slippery_1",
3692     "wall",
3693     "Slippery wall 1 (EMC style)"
3694   },
3695   {
3696     "emc_wall_slippery_2",
3697     "wall",
3698     "Slippery wall 2 (EMC style)"
3699   },
3700   {
3701     "emc_wall_slippery_3",
3702     "wall",
3703     "Slippery wall 3 (EMC style)"
3704   },
3705   {
3706     "emc_wall_slippery_4",
3707     "wall",
3708     "Slippery wall 4 (EMC style)"
3709   },
3710   {
3711     "emc_fake_grass",
3712     "fake_grass",
3713     "Fake grass"
3714   },
3715   {
3716     "emc_fake_acid",
3717     "fake_acid",
3718     "Fake acid"
3719   },
3720   {
3721     "emc_dripper",
3722     "dripper",
3723     "Dripper"
3724   },
3725   {
3726     "trigger_ce_value",
3727     "trigger",
3728     "CE value of element triggering change"
3729   },
3730   {
3731     "trigger_ce_score",
3732     "trigger",
3733     "CE score of element triggering change"
3734   },
3735   {
3736     "current_ce_value",
3737     "current",
3738     "CE value of current element"
3739   },
3740   {
3741     "current_ce_score",
3742     "current",
3743     "CE score of current element"
3744   },
3745   {
3746     "yamyam.left",
3747     "yamyam",
3748     "Yam yam (starts moving left)"
3749   },
3750   {
3751     "yamyam.right",
3752     "yamyam",
3753     "Yam yam (starts moving right)"
3754   },
3755   {
3756     "yamyam.up",
3757     "yamyam",
3758     "Yam yam (starts moving up)"
3759   },
3760   {
3761     "yamyam.down",
3762     "yamyam",
3763     "Yam yam (starts moving down)"
3764   },
3765   {
3766     "bd_expandable_wall",
3767     "bd_expandable_wall",
3768     "Growing wall (horizontal, BD style)"
3769   },
3770   {
3771     "prev_ce_8",
3772     "prev_ce",
3773     "CE 8 positions earlier in list"
3774   },
3775   {
3776     "prev_ce_7",
3777     "prev_ce",
3778     "CE 7 positions earlier in list"
3779   },
3780   {
3781     "prev_ce_6",
3782     "prev_ce",
3783     "CE 6 positions earlier in list"
3784   },
3785   {
3786     "prev_ce_5",
3787     "prev_ce",
3788     "CE 5 positions earlier in list"
3789   },
3790   {
3791     "prev_ce_4",
3792     "prev_ce",
3793     "CE 4 positions earlier in list"
3794   },
3795   {
3796     "prev_ce_3",
3797     "prev_ce",
3798     "CE 3 positions earlier in list"
3799   },
3800   {
3801     "prev_ce_2",
3802     "prev_ce",
3803     "CE 2 positions earlier in list"
3804   },
3805   {
3806     "prev_ce_1",
3807     "prev_ce",
3808     "CE 1 position earlier in list"
3809   },
3810   {
3811     "self",
3812     "self",
3813     "The current custom element"
3814   },
3815   {
3816     "next_ce_1",
3817     "next_ce",
3818     "CE 1 position later in list"
3819   },
3820   {
3821     "next_ce_2",
3822     "next_ce",
3823     "CE 2 positions later in list"
3824   },
3825   {
3826     "next_ce_3",
3827     "next_ce",
3828     "CE 3 positions later in list"
3829   },
3830   {
3831     "next_ce_4",
3832     "next_ce",
3833     "CE 4 positions later in list"
3834   },
3835   {
3836     "next_ce_5",
3837     "next_ce",
3838     "CE 5 positions later in list"
3839   },
3840   {
3841     "next_ce_6",
3842     "next_ce",
3843     "CE 6 positions later in list"
3844   },
3845   {
3846     "next_ce_7",
3847     "next_ce",
3848     "CE 7 positions later in list"
3849   },
3850   {
3851     "next_ce_8",
3852     "next_ce",
3853     "CE 8 positions later in list"
3854   },
3855   {
3856     "any_element",
3857     "any_element",
3858     "This element matches any element"
3859   },
3860   {
3861     "steel_char_space",
3862     "steel_char",
3863     "Steel letter ' '"
3864   },
3865   {
3866     "steel_char_exclam",
3867     "steel_char",
3868     "Steel letter '!'"
3869   },
3870   {
3871     "steel_char_quotedbl",
3872     "steel_char",
3873     "Steel letter '\"'"
3874   },
3875   {
3876     "steel_char_numbersign",
3877     "steel_char",
3878     "Steel letter '#'"
3879   },
3880   {
3881     "steel_char_dollar",
3882     "steel_char",
3883     "Steel letter '$'"
3884   },
3885   {
3886     "steel_char_percent",
3887     "steel_char",
3888     "Steel letter '%'"
3889   },
3890   {
3891     "steel_char_ampersand",
3892     "steel_char",
3893     "Steel letter '&'"
3894   },
3895   {
3896     "steel_char_apostrophe",
3897     "steel_char",
3898     "Steel letter '''"
3899   },
3900   {
3901     "steel_char_parenleft",
3902     "steel_char",
3903     "Steel letter '('"
3904   },
3905   {
3906     "steel_char_parenright",
3907     "steel_char",
3908     "Steel letter ')'"
3909   },
3910   {
3911     "steel_char_asterisk",
3912     "steel_char",
3913     "Steel letter '*'"
3914   },
3915   {
3916     "steel_char_plus",
3917     "steel_char",
3918     "Steel letter '+'"
3919   },
3920   {
3921     "steel_char_comma",
3922     "steel_char",
3923     "Steel letter ','"
3924   },
3925   {
3926     "steel_char_minus",
3927     "steel_char",
3928     "Steel letter '-'"
3929   },
3930   {
3931     "steel_char_period",
3932     "steel_char",
3933     "Steel letter '.'"
3934   },
3935   {
3936     "steel_char_slash",
3937     "steel_char",
3938     "Steel letter '/'"
3939   },
3940   {
3941     "steel_char_0",
3942     "steel_char",
3943     "Steel letter '0'"
3944   },
3945   {
3946     "steel_char_1",
3947     "steel_char",
3948     "Steel letter '1'"
3949   },
3950   {
3951     "steel_char_2",
3952     "steel_char",
3953     "Steel letter '2'"
3954   },
3955   {
3956     "steel_char_3",
3957     "steel_char",
3958     "Steel letter '3'"
3959   },
3960   {
3961     "steel_char_4",
3962     "steel_char",
3963     "Steel letter '4'"
3964   },
3965   {
3966     "steel_char_5",
3967     "steel_char",
3968     "Steel letter '5'"
3969   },
3970   {
3971     "steel_char_6",
3972     "steel_char",
3973     "Steel letter '6'"
3974   },
3975   {
3976     "steel_char_7",
3977     "steel_char",
3978     "Steel letter '7'"
3979   },
3980   {
3981     "steel_char_8",
3982     "steel_char",
3983     "Steel letter '8'"
3984   },
3985   {
3986     "steel_char_9",
3987     "steel_char",
3988     "Steel letter '9'"
3989   },
3990   {
3991     "steel_char_colon",
3992     "steel_char",
3993     "Steel letter ':'"
3994   },
3995   {
3996     "steel_char_semicolon",
3997     "steel_char",
3998     "Steel letter ';'"
3999   },
4000   {
4001     "steel_char_less",
4002     "steel_char",
4003     "Steel letter '<'"
4004   },
4005   {
4006     "steel_char_equal",
4007     "steel_char",
4008     "Steel letter '='"
4009   },
4010   {
4011     "steel_char_greater",
4012     "steel_char",
4013     "Steel letter '>'"
4014   },
4015   {
4016     "steel_char_question",
4017     "steel_char",
4018     "Steel letter '?'"
4019   },
4020   {
4021     "steel_char_at",
4022     "steel_char",
4023     "Steel letter '@'"
4024   },
4025   {
4026     "steel_char_a",
4027     "steel_char",
4028     "Steel letter 'A'"
4029   },
4030   {
4031     "steel_char_b",
4032     "steel_char",
4033     "Steel letter 'B'"
4034   },
4035   {
4036     "steel_char_c",
4037     "steel_char",
4038     "Steel letter 'C'"
4039   },
4040   {
4041     "steel_char_d",
4042     "steel_char",
4043     "Steel letter 'D'"
4044   },
4045   {
4046     "steel_char_e",
4047     "steel_char",
4048     "Steel letter 'E'"
4049   },
4050   {
4051     "steel_char_f",
4052     "steel_char",
4053     "Steel letter 'F'"
4054   },
4055   {
4056     "steel_char_g",
4057     "steel_char",
4058     "Steel letter 'G'"
4059   },
4060   {
4061     "steel_char_h",
4062     "steel_char",
4063     "Steel letter 'H'"
4064   },
4065   {
4066     "steel_char_i",
4067     "steel_char",
4068     "Steel letter 'I'"
4069   },
4070   {
4071     "steel_char_j",
4072     "steel_char",
4073     "Steel letter 'J'"
4074   },
4075   {
4076     "steel_char_k",
4077     "steel_char",
4078     "Steel letter 'K'"
4079   },
4080   {
4081     "steel_char_l",
4082     "steel_char",
4083     "Steel letter 'L'"
4084   },
4085   {
4086     "steel_char_m",
4087     "steel_char",
4088     "Steel letter 'M'"
4089   },
4090   {
4091     "steel_char_n",
4092     "steel_char",
4093     "Steel letter 'N'"
4094   },
4095   {
4096     "steel_char_o",
4097     "steel_char",
4098     "Steel letter 'O'"
4099   },
4100   {
4101     "steel_char_p",
4102     "steel_char",
4103     "Steel letter 'P'"
4104   },
4105   {
4106     "steel_char_q",
4107     "steel_char",
4108     "Steel letter 'Q'"
4109   },
4110   {
4111     "steel_char_r",
4112     "steel_char",
4113     "Steel letter 'R'"
4114   },
4115   {
4116     "steel_char_s",
4117     "steel_char",
4118     "Steel letter 'S'"
4119   },
4120   {
4121     "steel_char_t",
4122     "steel_char",
4123     "Steel letter 'T'"
4124   },
4125   {
4126     "steel_char_u",
4127     "steel_char",
4128     "Steel letter 'U'"
4129   },
4130   {
4131     "steel_char_v",
4132     "steel_char",
4133     "Steel letter 'V'"
4134   },
4135   {
4136     "steel_char_w",
4137     "steel_char",
4138     "Steel letter 'W'"
4139   },
4140   {
4141     "steel_char_x",
4142     "steel_char",
4143     "Steel letter 'X'"
4144   },
4145   {
4146     "steel_char_y",
4147     "steel_char",
4148     "Steel letter 'Y'"
4149   },
4150   {
4151     "steel_char_z",
4152     "steel_char",
4153     "Steel letter 'Z'"
4154   },
4155   {
4156     "steel_char_bracketleft",
4157     "steel_char",
4158     "Steel letter '['"
4159   },
4160   {
4161     "steel_char_backslash",
4162     "steel_char",
4163     "Steel letter '\\'"
4164   },
4165   {
4166     "steel_char_bracketright",
4167     "steel_char",
4168     "Steel letter ']'"
4169   },
4170   {
4171     "steel_char_asciicircum",
4172     "steel_char",
4173     "Steel letter '^'"
4174   },
4175   {
4176     "steel_char_underscore",
4177     "steel_char",
4178     "Steel letter '_'"
4179   },
4180   {
4181     "steel_char_copyright",
4182     "steel_char",
4183     "Steel letter '\xa9'"
4184   },
4185   {
4186     "steel_char_aumlaut",
4187     "steel_char",
4188     "Steel letter '\xc4'"
4189   },
4190   {
4191     "steel_char_oumlaut",
4192     "steel_char",
4193     "Steel letter '\xd6'"
4194   },
4195   {
4196     "steel_char_uumlaut",
4197     "steel_char",
4198     "Steel letter '\xdc'"
4199   },
4200   {
4201     "steel_char_degree",
4202     "steel_char",
4203     "Steel letter '\xb0'"
4204   },
4205   {
4206     "steel_char_trademark",
4207     "steel_char",
4208     "Steel letter '\xae'"
4209   },
4210   {
4211     "steel_char_cursor",
4212     "steel_char",
4213     "Steel letter '\xa0'"
4214   },
4215   {
4216     "steel_char_unused",
4217     "steel_char",
4218     "Steel letter ''"
4219   },
4220   {
4221     "steel_char_unused",
4222     "steel_char",
4223     "Steel letter ''"
4224   },
4225   {
4226     "steel_char_unused",
4227     "steel_char",
4228     "Steel letter ''"
4229   },
4230   {
4231     "steel_char_unused",
4232     "steel_char",
4233     "Steel letter ''"
4234   },
4235   {
4236     "steel_char_unused",
4237     "steel_char",
4238     "Steel letter ''"
4239   },
4240   {
4241     "steel_char_unused",
4242     "steel_char",
4243     "Steel letter ''"
4244   },
4245   {
4246     "steel_char_button",
4247     "steel_char",
4248     "Steel letter 'button'"
4249   },
4250   {
4251     "steel_char_up",
4252     "steel_char",
4253     "Steel letter 'up'"
4254   },
4255   {
4256     "steel_char_down",
4257     "steel_char",
4258     "Steel letter 'down'"
4259   },
4260   {
4261     "sperms",
4262     "frankie",
4263     "Sperms"
4264   },
4265   {
4266     "bullet",
4267     "frankie",
4268     "Bullet"
4269   },
4270   {
4271     "heart",
4272     "frankie",
4273     "Heart"
4274   },
4275   {
4276     "cross",
4277     "frankie",
4278     "Cross"
4279   },
4280   {
4281     "frankie",
4282     "frankie",
4283     "Frankie"
4284   },
4285   {
4286     "sign_sperms",
4287     "sign",
4288     "Sign (sperms)"
4289   },
4290   {
4291     "sign_bullet",
4292     "sign",
4293     "Sign (bullet)"
4294   },
4295   {
4296     "sign_heart",
4297     "sign",
4298     "Sign (heart)"
4299   },
4300   {
4301     "sign_cross",
4302     "sign",
4303     "Sign (cross)"
4304   },
4305   {
4306     "sign_frankie",
4307     "sign",
4308     "Sign (frankie)"
4309   },
4310   {
4311     "steel_exit_closed",
4312     "steel_exit",
4313     "Closed steel exit"
4314   },
4315   {
4316     "steel_exit_open",
4317     "steel_exit",
4318     "Open steel exit"
4319   },
4320   {
4321     "dc_steelwall_1_left",
4322     "steelwall",
4323     "Steel wall 1 (left)"
4324   },
4325   {
4326     "dc_steelwall_1_right",
4327     "steelwall",
4328     "Steel wall 1 (right)"
4329   },
4330   {
4331     "dc_steelwall_1_top",
4332     "steelwall",
4333     "Steel wall 1 (top)"
4334   },
4335   {
4336     "dc_steelwall_1_bottom",
4337     "steelwall",
4338     "Steel wall 1 (bottom)"
4339   },
4340   {
4341     "dc_steelwall_1_horizontal",
4342     "steelwall",
4343     "Steel wall 1 (top/bottom)"
4344   },
4345   {
4346     "dc_steelwall_1_vertical",
4347     "steelwall",
4348     "Steel wall 1 (left/right)"
4349   },
4350   {
4351     "dc_steelwall_1_topleft",
4352     "steelwall",
4353     "Steel wall 1 (top/left)"
4354   },
4355   {
4356     "dc_steelwall_1_topright",
4357     "steelwall",
4358     "Steel wall 1 (top/right)"
4359   },
4360   {
4361     "dc_steelwall_1_bottomleft",
4362     "steelwall",
4363     "Steel wall 1 (bottom/left)"
4364   },
4365   {
4366     "dc_steelwall_1_bottomright",
4367     "steelwall",
4368     "Steel wall 1 (bottom/right)"
4369   },
4370   {
4371     "dc_steelwall_1_topleft_2",
4372     "steelwall",
4373     "Steel wall 1 (top/left corner)"
4374   },
4375   {
4376     "dc_steelwall_1_topright_2",
4377     "steelwall",
4378     "Steel wall 1 (top/right corner)"
4379   },
4380   {
4381     "dc_steelwall_1_bottomleft_2",
4382     "steelwall",
4383     "Steel wall 1 (bottom/left corner)"
4384   },
4385   {
4386     "dc_steelwall_1_bottomright_2",
4387     "steelwall",
4388     "Steel wall 1 (bottom/right corner)"
4389   },
4390   {
4391     "dc_steelwall_2_left",
4392     "steelwall",
4393     "Steel wall 2 (left)"
4394   },
4395   {
4396     "dc_steelwall_2_right",
4397     "steelwall",
4398     "Steel wall 2 (right)"
4399   },
4400   {
4401     "dc_steelwall_2_top",
4402     "steelwall",
4403     "Steel wall 2 (top)"
4404   },
4405   {
4406     "dc_steelwall_2_bottom",
4407     "steelwall",
4408     "Steel wall 2 (bottom)"
4409   },
4410   {
4411     "dc_steelwall_2_horizontal",
4412     "steelwall",
4413     "Steel wall 2 (horizontal)"
4414   },
4415   {
4416     "dc_steelwall_2_vertical",
4417     "steelwall",
4418     "Steel wall 2 (vertical)"
4419   },
4420   {
4421     "dc_steelwall_2_middle",
4422     "steelwall",
4423     "Steel wall 2 (middle)"
4424   },
4425   {
4426     "dc_steelwall_2_single",
4427     "steelwall",
4428     "Steel wall 2 (single)"
4429   },
4430   {
4431     "dc_switchgate_switch_up",
4432     "switchgate_switch",
4433     "Switch for switch gate (steel)"
4434   },
4435   {
4436     "dc_switchgate_switch_down",
4437     "switchgate_switch",
4438     "Switch for switch gate (steel)"
4439   },
4440   {
4441     "dc_timegate_switch",
4442     "timegate_switch",
4443     "Switch for time gate (steel)"
4444   },
4445   {
4446     "dc_timegate_switch.active",
4447     "timegate_switch",
4448     "Switch for time gate (steel)"
4449   },
4450   {
4451     "dc_landmine",
4452     "dc_landmine",
4453     "Land mine (DC style, removable)"
4454   },
4455   {
4456     "expandable_steelwall",
4457     "steelwall",
4458     "Growing steel wall"
4459   },
4460   {
4461     "expandable_steelwall_horizontal",
4462     "steelwall",
4463     "Growing steel wall (horizontal)"
4464   },
4465   {
4466     "expandable_steelwall_vertical",
4467     "steelwall",
4468     "Growing steel wall (vertical)"
4469   },
4470   {
4471     "expandable_steelwall_any",
4472     "steelwall",
4473     "Growing steel wall (any direction)"
4474   },
4475   {
4476     "em_exit_closed",
4477     "em_exit",
4478     "Closed exit (EM style)"
4479   },
4480   {
4481     "em_exit_open",
4482     "em_exit",
4483     "Open exit (EM style)"
4484   },
4485   {
4486     "em_steel_exit_closed",
4487     "em_steel_exit",
4488     "Closed steel exit (EM style)"
4489   },
4490   {
4491     "em_steel_exit_open",
4492     "em_steel_exit",
4493     "Open steel exit (EM style)"
4494   },
4495   {
4496     "dc_gate_fake_gray",
4497     "gate",
4498     "Gray door (opened by no key)"
4499   },
4500   {
4501     "dc_magic_wall",
4502     "dc_magic_wall",
4503     "Magic wall (DC style)"
4504   },
4505   {
4506     "quicksand_fast_empty",
4507     "quicksand",
4508     "Fast quicksand (empty)"
4509   },
4510   {
4511     "quicksand_fast_full",
4512     "quicksand",
4513     "Fast quicksand (with rock)"
4514   },
4515   {
4516     "from_level_template",
4517     "from_level_template",
4518     "Element taken from level template"
4519   },
4520   {
4521     "mm_empty_space",
4522     "empty_space",
4523     "Empty space"
4524   },
4525   {
4526     "mm_mirror_1",
4527     "mm_mirror",
4528     "Mirror (0\xb0)"
4529   },
4530   {
4531     "mm_mirror_2",
4532     "mm_mirror",
4533     "Mirror (11.25\xb0)"
4534   },
4535   {
4536     "mm_mirror_3",
4537     "mm_mirror",
4538     "Mirror (22.5\xb0)"
4539   },
4540   {
4541     "mm_mirror_4",
4542     "mm_mirror",
4543     "Mirror (33.75\xb0)"
4544   },
4545   {
4546     "mm_mirror_5",
4547     "mm_mirror",
4548     "Mirror (45\xb0)"
4549   },
4550   {
4551     "mm_mirror_6",
4552     "mm_mirror",
4553     "Mirror (56.25\xb0)"
4554   },
4555   {
4556     "mm_mirror_7",
4557     "mm_mirror",
4558     "Mirror (67.5\xb0)"
4559   },
4560   {
4561     "mm_mirror_8",
4562     "mm_mirror",
4563     "Mirror (78.75\xb0)"
4564   },
4565   {
4566     "mm_mirror_9",
4567     "mm_mirror",
4568     "Mirror (90\xb0)"
4569   },
4570   {
4571     "mm_mirror_10",
4572     "mm_mirror",
4573     "Mirror (101.25\xb0)"
4574   },
4575   {
4576     "mm_mirror_11",
4577     "mm_mirror",
4578     "Mirror (112.5\xb0)"
4579   },
4580   {
4581     "mm_mirror_12",
4582     "mm_mirror",
4583     "Mirror (123.75\xb0)"
4584   },
4585   {
4586     "mm_mirror_13",
4587     "mm_mirror",
4588     "Mirror (135\xb0)"
4589   },
4590   {
4591     "mm_mirror_14",
4592     "mm_mirror",
4593     "Mirror (146.25\xb0)"
4594   },
4595   {
4596     "mm_mirror_15",
4597     "mm_mirror",
4598     "Mirror (157.5\xb0)"
4599   },
4600   {
4601     "mm_mirror_16",
4602     "mm_mirror",
4603     "Mirror (168.75\xb0)"
4604   },
4605   {
4606     "mm_steel_grid_fixed_1",
4607     "mm_steel_grid_fixed",
4608     "Fixed steel polarizer (0\xb0)"
4609   },
4610   {
4611     "mm_steel_grid_fixed_2",
4612     "mm_steel_grid_fixed",
4613     "Fixed steel polarizer (90\xb0)"
4614   },
4615   {
4616     "mm_steel_grid_fixed_3",
4617     "mm_steel_grid_fixed",
4618     "Fixed steel polarizer (45\xb0)"
4619   },
4620   {
4621     "mm_steel_grid_fixed_4",
4622     "mm_steel_grid_fixed",
4623     "Fixed steel polarizer (135\xb0)"
4624   },
4625   {
4626     "mm_mcduffin.right",
4627     "mm_mcduffin",
4628     "Gregor McDuffin (looking right)"
4629   },
4630   {
4631     "mm_mcduffin.up",
4632     "mm_mcduffin",
4633     "Gregor McDuffin (looking up)"
4634   },
4635   {
4636     "mm_mcduffin.left",
4637     "mm_mcduffin",
4638     "Gregor McDuffin (looking left)"
4639   },
4640   {
4641     "mm_mcduffin.down",
4642     "mm_mcduffin",
4643     "Gregor McDuffin (looking down)"
4644   },
4645   {
4646     "mm_exit_closed",
4647     "mm_exit",
4648     "Closed exit (MM style)"
4649   },
4650   {
4651     "mm_exit_opening_1",
4652     "mm_exit",
4653     "Opening exit 1"
4654   },
4655   {
4656     "mm_exit_opening_2",
4657     "mm_exit",
4658     "Opening exit 2"
4659   },
4660   {
4661     "mm_exit_open",
4662     "mm_exit",
4663     "Open exit (MM style)"
4664   },
4665   {
4666     "mm_kettle",
4667     "mm_kettle",
4668     "Magic cauldron"
4669   },
4670   {
4671     "mm_bomb",
4672     "mm_bomb",
4673     "Bomb (MM style)"
4674   },
4675   {
4676     "mm_prism",
4677     "mm_prism",
4678     "Prism"
4679   },
4680   {
4681     "mm_steel_wall_1",
4682     "mm_steel_wall",
4683     "Steel wall 1 (MM style)"
4684   },
4685   {
4686     "mm_steel_wall_2",
4687     "mm_steel_wall",
4688     "Steel wall 2 (MM style)"
4689   },
4690   {
4691     "mm_steel_wall_3",
4692     "mm_steel_wall",
4693     "Steel wall 3 (MM style)"
4694   },
4695   {
4696     "mm_steel_wall_4",
4697     "mm_steel_wall",
4698     "Steel wall 4 (MM style)"
4699   },
4700   {
4701     "mm_steel_wall_5",
4702     "mm_steel_wall",
4703     "Steel wall 5 (MM style)"
4704   },
4705   {
4706     "mm_steel_wall_6",
4707     "mm_steel_wall",
4708     "Steel wall 6 (MM style)"
4709   },
4710   {
4711     "mm_steel_wall_7",
4712     "mm_steel_wall",
4713     "Steel wall 7 (MM style)"
4714   },
4715   {
4716     "mm_steel_wall_8",
4717     "mm_steel_wall",
4718     "Steel wall 8 (MM style)"
4719   },
4720   {
4721     "mm_steel_wall_9",
4722     "mm_steel_wall",
4723     "Steel wall 9 (MM style)"
4724   },
4725   {
4726     "mm_steel_wall_10",
4727     "mm_steel_wall",
4728     "Steel wall 10 (MM style)"
4729   },
4730   {
4731     "mm_steel_wall_11",
4732     "mm_steel_wall",
4733     "Steel wall 11 (MM style)"
4734   },
4735   {
4736     "mm_steel_wall_12",
4737     "mm_steel_wall",
4738     "Steel wall 12 (MM style)"
4739   },
4740   {
4741     "mm_steel_wall_13",
4742     "mm_steel_wall",
4743     "Steel wall 13 (MM style)"
4744   },
4745   {
4746     "mm_steel_wall_14",
4747     "mm_steel_wall",
4748     "Steel wall 14 (MM style)"
4749   },
4750   {
4751     "mm_steel_wall_15",
4752     "mm_steel_wall",
4753     "Steel wall 15 (MM style)"
4754   },
4755   {
4756     "mm_steel_wall_16",
4757     "mm_steel_wall",
4758     "Steel wall 16 (MM style)"
4759   },
4760   {
4761     "mm_wooden_wall_1",
4762     "mm_wooden_wall",
4763     "Wooden wall 1 (MM style)"
4764   },
4765   {
4766     "mm_wooden_wall_2",
4767     "mm_wooden_wall",
4768     "Wooden wall 2 (MM style)"
4769   },
4770   {
4771     "mm_wooden_wall_3",
4772     "mm_wooden_wall",
4773     "Wooden wall 3 (MM style)"
4774   },
4775   {
4776     "mm_wooden_wall_4",
4777     "mm_wooden_wall",
4778     "Wooden wall 4 (MM style)"
4779   },
4780   {
4781     "mm_wooden_wall_5",
4782     "mm_wooden_wall",
4783     "Wooden wall 5 (MM style)"
4784   },
4785   {
4786     "mm_wooden_wall_6",
4787     "mm_wooden_wall",
4788     "Wooden wall 6 (MM style)"
4789   },
4790   {
4791     "mm_wooden_wall_7",
4792     "mm_wooden_wall",
4793     "Wooden wall 7 (MM style)"
4794   },
4795   {
4796     "mm_wooden_wall_8",
4797     "mm_wooden_wall",
4798     "Wooden wall 8 (MM style)"
4799   },
4800   {
4801     "mm_wooden_wall_9",
4802     "mm_wooden_wall",
4803     "Wooden wall 9 (MM style)"
4804   },
4805   {
4806     "mm_wooden_wall_10",
4807     "mm_wooden_wall",
4808     "Wooden wall 10 (MM style)"
4809   },
4810   {
4811     "mm_wooden_wall_11",
4812     "mm_wooden_wall",
4813     "Wooden wall 11 (MM style)"
4814   },
4815   {
4816     "mm_wooden_wall_12",
4817     "mm_wooden_wall",
4818     "Wooden wall 12 (MM style)"
4819   },
4820   {
4821     "mm_wooden_wall_13",
4822     "mm_wooden_wall",
4823     "Wooden wall 13 (MM style)"
4824   },
4825   {
4826     "mm_wooden_wall_14",
4827     "mm_wooden_wall",
4828     "Wooden wall 14 (MM style)"
4829   },
4830   {
4831     "mm_wooden_wall_15",
4832     "mm_wooden_wall",
4833     "Wooden wall 15 (MM style)"
4834   },
4835   {
4836     "mm_wooden_wall_16",
4837     "mm_wooden_wall",
4838     "Wooden wall 16 (MM style)"
4839   },
4840   {
4841     "mm_ice_wall_1",
4842     "mm_ice_wall",
4843     "Ice wall 1"
4844   },
4845   {
4846     "mm_ice_wall_2",
4847     "mm_ice_wall",
4848     "Ice wall 2"
4849   },
4850   {
4851     "mm_ice_wall_3",
4852     "mm_ice_wall",
4853     "Ice wall 3"
4854   },
4855   {
4856     "mm_ice_wall_4",
4857     "mm_ice_wall",
4858     "Ice wall 4"
4859   },
4860   {
4861     "mm_ice_wall_5",
4862     "mm_ice_wall",
4863     "Ice wall 5"
4864   },
4865   {
4866     "mm_ice_wall_6",
4867     "mm_ice_wall",
4868     "Ice wall 6"
4869   },
4870   {
4871     "mm_ice_wall_7",
4872     "mm_ice_wall",
4873     "Ice wall 7"
4874   },
4875   {
4876     "mm_ice_wall_8",
4877     "mm_ice_wall",
4878     "Ice wall 8"
4879   },
4880   {
4881     "mm_ice_wall_9",
4882     "mm_ice_wall",
4883     "Ice wall 9"
4884   },
4885   {
4886     "mm_ice_wall_10",
4887     "mm_ice_wall",
4888     "Ice wall 10"
4889   },
4890   {
4891     "mm_ice_wall_11",
4892     "mm_ice_wall",
4893     "Ice wall 11"
4894   },
4895   {
4896     "mm_ice_wall_12",
4897     "mm_ice_wall",
4898     "Ice wall 12"
4899   },
4900   {
4901     "mm_ice_wall_13",
4902     "mm_ice_wall",
4903     "Ice wall 13"
4904   },
4905   {
4906     "mm_ice_wall_14",
4907     "mm_ice_wall",
4908     "Ice wall 14"
4909   },
4910   {
4911     "mm_ice_wall_15",
4912     "mm_ice_wall",
4913     "Ice wall 15"
4914   },
4915   {
4916     "mm_ice_wall_16",
4917     "mm_ice_wall",
4918     "Ice wall 16"
4919   },
4920   {
4921     "mm_amoeba_wall_1",
4922     "mm_amoeba_wall",
4923     "Amoeba wall 1"
4924   },
4925   {
4926     "mm_amoeba_wall_2",
4927     "mm_amoeba_wall",
4928     "Amoeba wall 2"
4929   },
4930   {
4931     "mm_amoeba_wall_3",
4932     "mm_amoeba_wall",
4933     "Amoeba wall 3"
4934   },
4935   {
4936     "mm_amoeba_wall_4",
4937     "mm_amoeba_wall",
4938     "Amoeba wall 4"
4939   },
4940   {
4941     "mm_amoeba_wall_5",
4942     "mm_amoeba_wall",
4943     "Amoeba wall 5"
4944   },
4945   {
4946     "mm_amoeba_wall_6",
4947     "mm_amoeba_wall",
4948     "Amoeba wall 6"
4949   },
4950   {
4951     "mm_amoeba_wall_7",
4952     "mm_amoeba_wall",
4953     "Amoeba wall 7"
4954   },
4955   {
4956     "mm_amoeba_wall_8",
4957     "mm_amoeba_wall",
4958     "Amoeba wall 8"
4959   },
4960   {
4961     "mm_amoeba_wall_9",
4962     "mm_amoeba_wall",
4963     "Amoeba wall 9"
4964   },
4965   {
4966     "mm_amoeba_wall_10",
4967     "mm_amoeba_wall",
4968     "Amoeba wall 10"
4969   },
4970   {
4971     "mm_amoeba_wall_11",
4972     "mm_amoeba_wall",
4973     "Amoeba wall 11"
4974   },
4975   {
4976     "mm_amoeba_wall_12",
4977     "mm_amoeba_wall",
4978     "Amoeba wall 12"
4979   },
4980   {
4981     "mm_amoeba_wall_13",
4982     "mm_amoeba_wall",
4983     "Amoeba wall 13"
4984   },
4985   {
4986     "mm_amoeba_wall_14",
4987     "mm_amoeba_wall",
4988     "Amoeba wall 14"
4989   },
4990   {
4991     "mm_amoeba_wall_15",
4992     "mm_amoeba_wall",
4993     "Amoeba wall 15"
4994   },
4995   {
4996     "mm_amoeba_wall_16",
4997     "mm_amoeba_wall",
4998     "Amoeba wall 16"
4999   },
5000   {
5001     "mm_wooden_block",
5002     "mm_wooden_block",
5003     "Wooden block"
5004   },
5005   {
5006     "mm_gray_ball",
5007     "mm_gray_ball",
5008     "Gray ball"
5009   },
5010   {
5011     "mm_teleporter_1",
5012     "mm_teleporter",
5013     "Teleporter (0\xb0)"
5014   },
5015   {
5016     "mm_teleporter_2",
5017     "mm_teleporter",
5018     "Teleporter (22.5\xb0)"
5019   },
5020   {
5021     "mm_teleporter_3",
5022     "mm_teleporter",
5023     "Teleporter (45\xb0)"
5024   },
5025   {
5026     "mm_teleporter_4",
5027     "mm_teleporter",
5028     "Teleporter (67.5\xb0)"
5029   },
5030   {
5031     "mm_teleporter_5",
5032     "mm_teleporter",
5033     "Teleporter (90\xb0)"
5034   },
5035   {
5036     "mm_teleporter_6",
5037     "mm_teleporter",
5038     "Teleporter (112.5\xb0)"
5039   },
5040   {
5041     "mm_teleporter_7",
5042     "mm_teleporter",
5043     "Teleporter (135\xb0)"
5044   },
5045   {
5046     "mm_teleporter_8",
5047     "mm_teleporter",
5048     "Teleporter (157.5\xb0)"
5049   },
5050   {
5051     "mm_teleporter_9",
5052     "mm_teleporter",
5053     "Teleporter (180\xb0)"
5054   },
5055   {
5056     "mm_teleporter_10",
5057     "mm_teleporter",
5058     "Teleporter (202.5\xb0)"
5059   },
5060   {
5061     "mm_teleporter_11",
5062     "mm_teleporter",
5063     "Teleporter (225\xb0)"
5064   },
5065   {
5066     "mm_teleporter_12",
5067     "mm_teleporter",
5068     "Teleporter (247.5\xb0)"
5069   },
5070   {
5071     "mm_teleporter_13",
5072     "mm_teleporter",
5073     "Teleporter (270\xb0)"
5074   },
5075   {
5076     "mm_teleporter_14",
5077     "mm_teleporter",
5078     "Teleporter (292.5\xb0)"
5079   },
5080   {
5081     "mm_teleporter_15",
5082     "mm_teleporter",
5083     "Teleporter (315\xb0)"
5084   },
5085   {
5086     "mm_teleporter_16",
5087     "mm_teleporter",
5088     "Teleporter (337.5\xb0)"
5089   },
5090   {
5091     "mm_fuse.active",
5092     "mm_fuse",
5093     "Fuse (on)"
5094   },
5095   {
5096     "mm_pacman.right",
5097     "mm_pacman",
5098     "Pac man (starts moving right)"
5099   },
5100   {
5101     "mm_pacman.up",
5102     "mm_pacman",
5103     "Pac man (starts moving up)"
5104   },
5105   {
5106     "mm_pacman.left",
5107     "mm_pacman",
5108     "Pac man (starts moving left)"
5109   },
5110   {
5111     "mm_pacman.down",
5112     "mm_pacman",
5113     "Pac man (starts moving down)"
5114   },
5115   {
5116     "mm_polarizer_1",
5117     "mm_polarizer",
5118     "Polarizer (0\xb0)"
5119   },
5120   {
5121     "mm_polarizer_2",
5122     "mm_polarizer",
5123     "Polarizer (11.25\xb0)"
5124   },
5125   {
5126     "mm_polarizer_3",
5127     "mm_polarizer",
5128     "Polarizer (22.5\xb0)"
5129   },
5130   {
5131     "mm_polarizer_4",
5132     "mm_polarizer",
5133     "Polarizer (33.75\xb0)"
5134   },
5135   {
5136     "mm_polarizer_5",
5137     "mm_polarizer",
5138     "Polarizer (45\xb0)"
5139   },
5140   {
5141     "mm_polarizer_6",
5142     "mm_polarizer",
5143     "Polarizer (56.25\xb0)"
5144   },
5145   {
5146     "mm_polarizer_7",
5147     "mm_polarizer",
5148     "Polarizer (67.5\xb0)"
5149   },
5150   {
5151     "mm_polarizer_8",
5152     "mm_polarizer",
5153     "Polarizer (78.75\xb0)"
5154   },
5155   {
5156     "mm_polarizer_9",
5157     "mm_polarizer",
5158     "Polarizer (90\xb0)"
5159   },
5160   {
5161     "mm_polarizer_10",
5162     "mm_polarizer",
5163     "Polarizer (101.25\xb0)"
5164   },
5165   {
5166     "mm_polarizer_11",
5167     "mm_polarizer",
5168     "Polarizer (112.5\xb0)"
5169   },
5170   {
5171     "mm_polarizer_12",
5172     "mm_polarizer",
5173     "Polarizer (123.75\xb0)"
5174   },
5175   {
5176     "mm_polarizer_13",
5177     "mm_polarizer",
5178     "Polarizer (135\xb0)"
5179   },
5180   {
5181     "mm_polarizer_14",
5182     "mm_polarizer",
5183     "Polarizer (146.25\xb0)"
5184   },
5185   {
5186     "mm_polarizer_15",
5187     "mm_polarizer",
5188     "Polarizer (157.5\xb0)"
5189   },
5190   {
5191     "mm_polarizer_16",
5192     "mm_polarizer",
5193     "Polarizer (168.75\xb0)"
5194   },
5195   {
5196     "mm_polarizer_cross_1",
5197     "mm_polarizer_cross",
5198     "Two-way polarizer (0\xb0)"
5199   },
5200   {
5201     "mm_polarizer_cross_2",
5202     "mm_polarizer_cross",
5203     "Two-way polarizer (22.5\xb0)"
5204   },
5205   {
5206     "mm_polarizer_cross_3",
5207     "mm_polarizer_cross",
5208     "Two-way polarizer (45\xb0)"
5209   },
5210   {
5211     "mm_polarizer_cross_4",
5212     "mm_polarizer_cross",
5213     "Two-way polarizer (67.5\xb0)"
5214   },
5215   {
5216     "mm_mirror_fixed_1",
5217     "mm_mirror_fixed",
5218     "Fixed mirror (0\xb0)"
5219   },
5220   {
5221     "mm_mirror_fixed_2",
5222     "mm_mirror_fixed",
5223     "Fixed mirror (45\xb0)"
5224   },
5225   {
5226     "mm_mirror_fixed_3",
5227     "mm_mirror_fixed",
5228     "Fixed mirror (90\xb0)"
5229   },
5230   {
5231     "mm_mirror_fixed_4",
5232     "mm_mirror_fixed",
5233     "Fixed mirror (135\xb0)"
5234   },
5235   {
5236     "mm_steel_lock",
5237     "mm_steel_lock",
5238     "Steel lock"
5239   },
5240   {
5241     "mm_key",
5242     "mm_key",
5243     "Key (MM style)"
5244   },
5245   {
5246     "mm_lightbulb",
5247     "mm_lightbulb",
5248     "Light bulb (off)"
5249   },
5250   {
5251     "mm_lightbulb.active",
5252     "mm_lightbulb",
5253     "Light bulb (on)"
5254   },
5255   {
5256     "mm_lightball",
5257     "mm_lightball",
5258     "Bonus ball"
5259   },
5260   {
5261     "mm_steel_block",
5262     "mm_steel_block",
5263     "Steel block"
5264   },
5265   {
5266     "mm_wooden_lock",
5267     "mm_wooden_lock",
5268     "Wooden lock"
5269   },
5270   {
5271     "mm_fuel_full",
5272     "mm_fuel",
5273     "Extra energy ball (full)"
5274   },
5275   {
5276     "mm_wooden_grid_fixed_1",
5277     "mm_wooden_grid_fixed",
5278     "Fixed wooden polarizer (0\xb0)"
5279   },
5280   {
5281     "mm_wooden_grid_fixed_2",
5282     "mm_wooden_grid_fixed",
5283     "Fixed wooden polarizer (90\xb0)"
5284   },
5285   {
5286     "mm_wooden_grid_fixed_3",
5287     "mm_wooden_grid_fixed",
5288     "Fixed wooden polarizer (45\xb0)"
5289   },
5290   {
5291     "mm_wooden_grid_fixed_4",
5292     "mm_wooden_grid_fixed",
5293     "Fixed wooden polarizer (135\xb0)"
5294   },
5295   {
5296     "mm_fuel_empty",
5297     "mm_fuel",
5298     "Extra energy ball (empty)"
5299   },
5300   {
5301     "mm_envelope_1",
5302     "mm_envelope",
5303     "Mail envelope 1 (MM style)"
5304   },
5305   {
5306     "mm_envelope_2",
5307     "mm_envelope",
5308     "Mail envelope 2 (MM style)"
5309   },
5310   {
5311     "mm_envelope_3",
5312     "mm_envelope",
5313     "Mail envelope 3 (MM style)"
5314   },
5315   {
5316     "mm_envelope_4",
5317     "mm_envelope",
5318     "Mail envelope 4 (MM style)"
5319   },
5320   {
5321     "df_mirror_1",
5322     "df_mirror",
5323     "Mirror (DF style) (0\xb0)"
5324   },
5325   {
5326     "df_mirror_2",
5327     "df_mirror",
5328     "Mirror (DF style) (11.25\xb0)"
5329   },
5330   {
5331     "df_mirror_3",
5332     "df_mirror",
5333     "Mirror (DF style) (22.5\xb0)"
5334   },
5335   {
5336     "df_mirror_4",
5337     "df_mirror",
5338     "Mirror (DF style) (33.75\xb0)"
5339   },
5340   {
5341     "df_mirror_5",
5342     "df_mirror",
5343     "Mirror (DF style) (45\xb0)"
5344   },
5345   {
5346     "df_mirror_6",
5347     "df_mirror",
5348     "Mirror (DF style) (56.25\xb0)"
5349   },
5350   {
5351     "df_mirror_7",
5352     "df_mirror",
5353     "Mirror (DF style) (67.5\xb0)"
5354   },
5355   {
5356     "df_mirror_8",
5357     "df_mirror",
5358     "Mirror (DF style) (78.75\xb0)"
5359   },
5360   {
5361     "df_mirror_9",
5362     "df_mirror",
5363     "Mirror (DF style) (90\xb0)"
5364   },
5365   {
5366     "df_mirror_10",
5367     "df_mirror",
5368     "Mirror (DF style) (101.25\xb0)"
5369   },
5370   {
5371     "df_mirror_11",
5372     "df_mirror",
5373     "Mirror (DF style) (112.5\xb0)"
5374   },
5375   {
5376     "df_mirror_12",
5377     "df_mirror",
5378     "Mirror (DF style) (123.75\xb0)"
5379   },
5380   {
5381     "df_mirror_13",
5382     "df_mirror",
5383     "Mirror (DF style) (135\xb0)"
5384   },
5385   {
5386     "df_mirror_14",
5387     "df_mirror",
5388     "Mirror (DF style) (146.25\xb0)"
5389   },
5390   {
5391     "df_mirror_15",
5392     "df_mirror",
5393     "Mirror (DF style) (157.5\xb0)"
5394   },
5395   {
5396     "df_mirror_16",
5397     "df_mirror",
5398     "Mirror (DF style) (168.75\xb0)"
5399   },
5400   {
5401     "df_wooden_grid_fixed_1",
5402     "df_wooden_grid_fixed",
5403     "Fixed wooden polarizer (DF) (0\xb0)"
5404   },
5405   {
5406     "df_wooden_grid_fixed_2",
5407     "df_wooden_grid_fixed",
5408     "Fixed wooden polarizer (DF) (22.5\xb0)"
5409   },
5410   {
5411     "df_wooden_grid_fixed_3",
5412     "df_wooden_grid_fixed",
5413     "Fixed wooden polarizer (DF) (45\xb0)"
5414   },
5415   {
5416     "df_wooden_grid_fixed_4",
5417     "df_wooden_grid_fixed",
5418     "Fixed wooden polarizer (DF) (67.5\xb0)"
5419   },
5420   {
5421     "df_wooden_grid_fixed_5",
5422     "df_wooden_grid_fixed",
5423     "Fixed wooden polarizer (DF) (90\xb0)"
5424   },
5425   {
5426     "df_wooden_grid_fixed_6",
5427     "df_wooden_grid_fixed",
5428     "Fixed wooden polarizer (DF) (112.5\xb0)"
5429   },
5430   {
5431     "df_wooden_grid_fixed_7",
5432     "df_wooden_grid_fixed",
5433     "Fixed wooden polarizer (DF) (135\xb0)"
5434   },
5435   {
5436     "df_wooden_grid_fixed_8",
5437     "df_wooden_grid_fixed",
5438     "Fixed wooden polarizer (DF) (157.5\xb0)"
5439   },
5440   {
5441     "df_steel_grid_fixed_1",
5442     "df_steel_grid_fixed",
5443     "Fixed steel polarizer (DF) (0\xb0)"
5444   },
5445   {
5446     "df_steel_grid_fixed_2",
5447     "df_steel_grid_fixed",
5448     "Fixed steel polarizer (DF) (22.5\xb0)"
5449   },
5450   {
5451     "df_steel_grid_fixed_3",
5452     "df_steel_grid_fixed",
5453     "Fixed steel polarizer (DF) (45\xb0)"
5454   },
5455   {
5456     "df_steel_grid_fixed_4",
5457     "df_steel_grid_fixed",
5458     "Fixed steel polarizer (DF) (67.5\xb0)"
5459   },
5460   {
5461     "df_steel_grid_fixed_5",
5462     "df_steel_grid_fixed",
5463     "Fixed steel polarizer (DF) (90\xb0)"
5464   },
5465   {
5466     "df_steel_grid_fixed_6",
5467     "df_steel_grid_fixed",
5468     "Fixed steel polarizer (DF) (112.5\xb0)"
5469   },
5470   {
5471     "df_steel_grid_fixed_7",
5472     "df_steel_grid_fixed",
5473     "Fixed steel polarizer (DF) (135\xb0)"
5474   },
5475   {
5476     "df_steel_grid_fixed_8",
5477     "df_steel_grid_fixed",
5478     "Fixed steel polarizer (DF) (157.5\xb0)"
5479   },
5480   {
5481     "df_wooden_wall_1",
5482     "df_wooden_wall",
5483     "Wooden wall 1 (DF style)"
5484   },
5485   {
5486     "df_wooden_wall_2",
5487     "df_wooden_wall",
5488     "Wooden wall 2 (DF style)"
5489   },
5490   {
5491     "df_wooden_wall_3",
5492     "df_wooden_wall",
5493     "Wooden wall 3 (DF style)"
5494   },
5495   {
5496     "df_wooden_wall_4",
5497     "df_wooden_wall",
5498     "Wooden wall 4 (DF style)"
5499   },
5500   {
5501     "df_wooden_wall_5",
5502     "df_wooden_wall",
5503     "Wooden wall 5 (DF style)"
5504   },
5505   {
5506     "df_wooden_wall_6",
5507     "df_wooden_wall",
5508     "Wooden wall 6 (DF style)"
5509   },
5510   {
5511     "df_wooden_wall_7",
5512     "df_wooden_wall",
5513     "Wooden wall 7 (DF style)"
5514   },
5515   {
5516     "df_wooden_wall_8",
5517     "df_wooden_wall",
5518     "Wooden wall 8 (DF style)"
5519   },
5520   {
5521     "df_wooden_wall_9",
5522     "df_wooden_wall",
5523     "Wooden wall 9 (DF style)"
5524   },
5525   {
5526     "df_wooden_wall_10",
5527     "df_wooden_wall",
5528     "Wooden wall 10 (DF style)"
5529   },
5530   {
5531     "df_wooden_wall_11",
5532     "df_wooden_wall",
5533     "Wooden wall 11 (DF style)"
5534   },
5535   {
5536     "df_wooden_wall_12",
5537     "df_wooden_wall",
5538     "Wooden wall 12 (DF style)"
5539   },
5540   {
5541     "df_wooden_wall_13",
5542     "df_wooden_wall",
5543     "Wooden wall 13 (DF style)"
5544   },
5545   {
5546     "df_wooden_wall_14",
5547     "df_wooden_wall",
5548     "Wooden wall 14 (DF style)"
5549   },
5550   {
5551     "df_wooden_wall_15",
5552     "df_wooden_wall",
5553     "Wooden wall 15 (DF style)"
5554   },
5555   {
5556     "df_wooden_wall_16",
5557     "df_wooden_wall",
5558     "Wooden wall 16 (DF style)"
5559   },
5560   {
5561     "df_steel_wall_1",
5562     "df_steel_wall",
5563     "Steel wall 1 (DF style)"
5564   },
5565   {
5566     "df_steel_wall_2",
5567     "df_steel_wall",
5568     "Steel wall 2 (DF style)"
5569   },
5570   {
5571     "df_steel_wall_3",
5572     "df_steel_wall",
5573     "Steel wall 3 (DF style)"
5574   },
5575   {
5576     "df_steel_wall_4",
5577     "df_steel_wall",
5578     "Steel wall 4 (DF style)"
5579   },
5580   {
5581     "df_steel_wall_5",
5582     "df_steel_wall",
5583     "Steel wall 5 (DF style)"
5584   },
5585   {
5586     "df_steel_wall_6",
5587     "df_steel_wall",
5588     "Steel wall 6 (DF style)"
5589   },
5590   {
5591     "df_steel_wall_7",
5592     "df_steel_wall",
5593     "Steel wall 7 (DF style)"
5594   },
5595   {
5596     "df_steel_wall_8",
5597     "df_steel_wall",
5598     "Steel wall 8 (DF style)"
5599   },
5600   {
5601     "df_steel_wall_9",
5602     "df_steel_wall",
5603     "Steel wall 9 (DF style)"
5604   },
5605   {
5606     "df_steel_wall_10",
5607     "df_steel_wall",
5608     "Steel wall 10 (DF style)"
5609   },
5610   {
5611     "df_steel_wall_11",
5612     "df_steel_wall",
5613     "Steel wall 11 (DF style)"
5614   },
5615   {
5616     "df_steel_wall_12",
5617     "df_steel_wall",
5618     "Steel wall 12 (DF style)"
5619   },
5620   {
5621     "df_steel_wall_13",
5622     "df_steel_wall",
5623     "Steel wall 13 (DF style)"
5624   },
5625   {
5626     "df_steel_wall_14",
5627     "df_steel_wall",
5628     "Steel wall 14 (DF style)"
5629   },
5630   {
5631     "df_steel_wall_15",
5632     "df_steel_wall",
5633     "Steel wall 15 (DF style)"
5634   },
5635   {
5636     "df_steel_wall_16",
5637     "df_steel_wall",
5638     "Steel wall 16 (DF style)"
5639   },
5640   {
5641     "df_empty_space",
5642     "empty_space",
5643     "Empty space"
5644   },
5645   {
5646     "df_cell",
5647     "df_cell",
5648     "Cell"
5649   },
5650   {
5651     "df_mine",
5652     "df_mine",
5653     "Mine"
5654   },
5655   {
5656     "df_refractor",
5657     "df_refractor",
5658     "Refractor"
5659   },
5660   {
5661     "df_laser.right",
5662     "df_laser",
5663     "Laser cannon (shooting right)"
5664   },
5665   {
5666     "df_laser.up",
5667     "df_laser",
5668     "Laser cannon (shooting up)"
5669   },
5670   {
5671     "df_laser.left",
5672     "df_laser",
5673     "Laser cannon (shooting left)"
5674   },
5675   {
5676     "df_laser.down",
5677     "df_laser",
5678     "Laser cannon (shooting down)"
5679   },
5680   {
5681     "df_receiver.right",
5682     "df_receiver",
5683     "Laser receiver (directed right)"
5684   },
5685   {
5686     "df_receiver.up",
5687     "df_receiver",
5688     "Laser receiver (directed up)"
5689   },
5690   {
5691     "df_receiver.left",
5692     "df_receiver",
5693     "Laser receiver (directed left)"
5694   },
5695   {
5696     "df_receiver.down",
5697     "df_receiver",
5698     "Laser receiver (directed down)"
5699   },
5700   {
5701     "df_fibre_optic_red_1",
5702     "df_fibre_optic",
5703     "Red fibre optic (part 1)"
5704   },
5705   {
5706     "df_fibre_optic_red_2",
5707     "df_fibre_optic",
5708     "Red fibre optic (part 2)"
5709   },
5710   {
5711     "df_fibre_optic_yellow_1",
5712     "df_fibre_optic",
5713     "Yellow fibre optic (part 1)"
5714   },
5715   {
5716     "df_fibre_optic_yellow_2",
5717     "df_fibre_optic",
5718     "Yellow fibre optic (part 2)"
5719   },
5720   {
5721     "df_fibre_optic_green_1",
5722     "df_fibre_optic",
5723     "Green fibre optic (part 1)"
5724   },
5725   {
5726     "df_fibre_optic_green_2",
5727     "df_fibre_optic",
5728     "Green fibre optic (part 2)"
5729   },
5730   {
5731     "df_fibre_optic_blue_1",
5732     "df_fibre_optic",
5733     "Blue fibre optic (part 1)"
5734   },
5735   {
5736     "df_fibre_optic_blue_2",
5737     "df_fibre_optic",
5738     "Blue fibre optic (part 2)"
5739   },
5740   {
5741     "df_mirror_rotating_1",
5742     "df_mirror_rotating",
5743     "Rotating mirror (0\xb0)"
5744   },
5745   {
5746     "df_mirror_rotating_2",
5747     "df_mirror_rotating",
5748     "Rotating mirror (11.25\xb0)"
5749   },
5750   {
5751     "df_mirror_rotating_3",
5752     "df_mirror_rotating",
5753     "Rotating mirror (22.5\xb0)"
5754   },
5755   {
5756     "df_mirror_rotating_4",
5757     "df_mirror_rotating",
5758     "Rotating mirror (33.75\xb0)"
5759   },
5760   {
5761     "df_mirror_rotating_5",
5762     "df_mirror_rotating",
5763     "Rotating mirror (45\xb0)"
5764   },
5765   {
5766     "df_mirror_rotating_6",
5767     "df_mirror_rotating",
5768     "Rotating mirror (56.25\xb0)"
5769   },
5770   {
5771     "df_mirror_rotating_7",
5772     "df_mirror_rotating",
5773     "Rotating mirror (67.5\xb0)"
5774   },
5775   {
5776     "df_mirror_rotating_8",
5777     "df_mirror_rotating",
5778     "Rotating mirror (78.75\xb0)"
5779   },
5780   {
5781     "df_mirror_rotating_9",
5782     "df_mirror_rotating",
5783     "Rotating mirror (90\xb0)"
5784   },
5785   {
5786     "df_mirror_rotating_10",
5787     "df_mirror_rotating",
5788     "Rotating mirror (101.25\xb0)"
5789   },
5790   {
5791     "df_mirror_rotating_11",
5792     "df_mirror_rotating",
5793     "Rotating mirror (112.5\xb0)"
5794   },
5795   {
5796     "df_mirror_rotating_12",
5797     "df_mirror_rotating",
5798     "Rotating mirror (123.75\xb0)"
5799   },
5800   {
5801     "df_mirror_rotating_13",
5802     "df_mirror_rotating",
5803     "Rotating mirror (135\xb0)"
5804   },
5805   {
5806     "df_mirror_rotating_14",
5807     "df_mirror_rotating",
5808     "Rotating mirror (146.25\xb0)"
5809   },
5810   {
5811     "df_mirror_rotating_15",
5812     "df_mirror_rotating",
5813     "Rotating mirror (157.5\xb0)"
5814   },
5815   {
5816     "df_mirror_rotating_16",
5817     "df_mirror_rotating",
5818     "Rotating mirror (168.75\xb0)"
5819   },
5820   {
5821     "df_wooden_grid_rotating_1",
5822     "df_wooden_grid_rotating",
5823     "Rotating wooden polarizer (0\xb0)"
5824   },
5825   {
5826     "df_wooden_grid_rotating_2",
5827     "df_wooden_grid_rotating",
5828     "Rotating wooden polarizer (22.5\xb0)"
5829   },
5830   {
5831     "df_wooden_grid_rotating_3",
5832     "df_wooden_grid_rotating",
5833     "Rotating wooden polarizer (45\xb0)"
5834   },
5835   {
5836     "df_wooden_grid_rotating_4",
5837     "df_wooden_grid_rotating",
5838     "Rotating wooden polarizer (67.5\xb0)"
5839   },
5840   {
5841     "df_wooden_grid_rotating_5",
5842     "df_wooden_grid_rotating",
5843     "Rotating wooden polarizer (90\xb0)"
5844   },
5845   {
5846     "df_wooden_grid_rotating_6",
5847     "df_wooden_grid_rotating",
5848     "Rotating wooden polarizer (112.5\xb0)"
5849   },
5850   {
5851     "df_wooden_grid_rotating_7",
5852     "df_wooden_grid_rotating",
5853     "Rotating wooden polarizer (135\xb0)"
5854   },
5855   {
5856     "df_wooden_grid_rotating_8",
5857     "df_wooden_grid_rotating",
5858     "Rotating wooden polarizer (157.5\xb0)"
5859   },
5860   {
5861     "df_steel_grid_rotating_1",
5862     "df_steel_grid_rotating",
5863     "Rotating steel polarizer (0\xb0)"
5864   },
5865   {
5866     "df_steel_grid_rotating_2",
5867     "df_steel_grid_rotating",
5868     "Rotating steel polarizer (22.5\xb0)"
5869   },
5870   {
5871     "df_steel_grid_rotating_3",
5872     "df_steel_grid_rotating",
5873     "Rotating steel polarizer (45\xb0)"
5874   },
5875   {
5876     "df_steel_grid_rotating_4",
5877     "df_steel_grid_rotating",
5878     "Rotating steel polarizer (67.5\xb0)"
5879   },
5880   {
5881     "df_steel_grid_rotating_5",
5882     "df_steel_grid_rotating",
5883     "Rotating steel polarizer (90\xb0)"
5884   },
5885   {
5886     "df_steel_grid_rotating_6",
5887     "df_steel_grid_rotating",
5888     "Rotating steel polarizer (112.5\xb0)"
5889   },
5890   {
5891     "df_steel_grid_rotating_7",
5892     "df_steel_grid_rotating",
5893     "Rotating steel polarizer (135\xb0)"
5894   },
5895   {
5896     "df_steel_grid_rotating_8",
5897     "df_steel_grid_rotating",
5898     "Rotating steel polarizer (157.5\xb0)"
5899   },
5900   {
5901     "mm_teleporter_red_1",
5902     "mm_teleporter",
5903     "Red teleporter (0\xb0)"
5904   },
5905   {
5906     "mm_teleporter_red_2",
5907     "mm_teleporter",
5908     "Red teleporter (22.5\xb0)"
5909   },
5910   {
5911     "mm_teleporter_red_3",
5912     "mm_teleporter",
5913     "Red teleporter (45\xb0)"
5914   },
5915   {
5916     "mm_teleporter_red_4",
5917     "mm_teleporter",
5918     "Red teleporter (67.5\xb0)"
5919   },
5920   {
5921     "mm_teleporter_red_5",
5922     "mm_teleporter",
5923     "Red teleporter (90\xb0)"
5924   },
5925   {
5926     "mm_teleporter_red_6",
5927     "mm_teleporter",
5928     "Red teleporter (112.5\xb0)"
5929   },
5930   {
5931     "mm_teleporter_red_7",
5932     "mm_teleporter",
5933     "Red teleporter (135\xb0)"
5934   },
5935   {
5936     "mm_teleporter_red_8",
5937     "mm_teleporter",
5938     "Red teleporter (157.5\xb0)"
5939   },
5940   {
5941     "mm_teleporter_red_9",
5942     "mm_teleporter",
5943     "Red teleporter (180\xb0)"
5944   },
5945   {
5946     "mm_teleporter_red_10",
5947     "mm_teleporter",
5948     "Red teleporter (202.5\xb0)"
5949   },
5950   {
5951     "mm_teleporter_red_11",
5952     "mm_teleporter",
5953     "Red teleporter (225\xb0)"
5954   },
5955   {
5956     "mm_teleporter_red_12",
5957     "mm_teleporter",
5958     "Red teleporter (247.5\xb0)"
5959   },
5960   {
5961     "mm_teleporter_red_13",
5962     "mm_teleporter",
5963     "Red teleporter (270\xb0)"
5964   },
5965   {
5966     "mm_teleporter_red_14",
5967     "mm_teleporter",
5968     "Red teleporter (292.5\xb0)"
5969   },
5970   {
5971     "mm_teleporter_red_15",
5972     "mm_teleporter",
5973     "Red teleporter (315\xb0)"
5974   },
5975   {
5976     "mm_teleporter_red_16",
5977     "mm_teleporter",
5978     "Red teleporter (337.5\xb0)"
5979   },
5980   {
5981     "mm_teleporter_yellow_1",
5982     "mm_teleporter",
5983     "Yellow teleporter (0\xb0)"
5984   },
5985   {
5986     "mm_teleporter_yellow_2",
5987     "mm_teleporter",
5988     "Yellow teleporter (22.5\xb0)"
5989   },
5990   {
5991     "mm_teleporter_yellow_3",
5992     "mm_teleporter",
5993     "Yellow teleporter (45\xb0)"
5994   },
5995   {
5996     "mm_teleporter_yellow_4",
5997     "mm_teleporter",
5998     "Yellow teleporter (67.5\xb0)"
5999   },
6000   {
6001     "mm_teleporter_yellow_5",
6002     "mm_teleporter",
6003     "Yellow teleporter (90\xb0)"
6004   },
6005   {
6006     "mm_teleporter_yellow_6",
6007     "mm_teleporter",
6008     "Yellow teleporter (112.5\xb0)"
6009   },
6010   {
6011     "mm_teleporter_yellow_7",
6012     "mm_teleporter",
6013     "Yellow teleporter (135\xb0)"
6014   },
6015   {
6016     "mm_teleporter_yellow_8",
6017     "mm_teleporter",
6018     "Yellow teleporter (157.5\xb0)"
6019   },
6020   {
6021     "mm_teleporter_yellow_9",
6022     "mm_teleporter",
6023     "Yellow teleporter (180\xb0)"
6024   },
6025   {
6026     "mm_teleporter_yellow_10",
6027     "mm_teleporter",
6028     "Yellow teleporter (202.5\xb0)"
6029   },
6030   {
6031     "mm_teleporter_yellow_11",
6032     "mm_teleporter",
6033     "Yellow teleporter (225\xb0)"
6034   },
6035   {
6036     "mm_teleporter_yellow_12",
6037     "mm_teleporter",
6038     "Yellow teleporter (247.5\xb0)"
6039   },
6040   {
6041     "mm_teleporter_yellow_13",
6042     "mm_teleporter",
6043     "Yellow teleporter (270\xb0)"
6044   },
6045   {
6046     "mm_teleporter_yellow_14",
6047     "mm_teleporter",
6048     "Yellow teleporter (292.5\xb0)"
6049   },
6050   {
6051     "mm_teleporter_yellow_15",
6052     "mm_teleporter",
6053     "Yellow teleporter (315\xb0)"
6054   },
6055   {
6056     "mm_teleporter_yellow_16",
6057     "mm_teleporter",
6058     "Yellow teleporter (337.5\xb0)"
6059   },
6060   {
6061     "mm_teleporter_green_1",
6062     "mm_teleporter",
6063     "Green teleporter (0\xb0)"
6064   },
6065   {
6066     "mm_teleporter_green_2",
6067     "mm_teleporter",
6068     "Green teleporter (22.5\xb0)"
6069   },
6070   {
6071     "mm_teleporter_green_3",
6072     "mm_teleporter",
6073     "Green teleporter (45\xb0)"
6074   },
6075   {
6076     "mm_teleporter_green_4",
6077     "mm_teleporter",
6078     "Green teleporter (67.5\xb0)"
6079   },
6080   {
6081     "mm_teleporter_green_5",
6082     "mm_teleporter",
6083     "Green teleporter (90\xb0)"
6084   },
6085   {
6086     "mm_teleporter_green_6",
6087     "mm_teleporter",
6088     "Green teleporter (112.5\xb0)"
6089   },
6090   {
6091     "mm_teleporter_green_7",
6092     "mm_teleporter",
6093     "Green teleporter (135\xb0)"
6094   },
6095   {
6096     "mm_teleporter_green_8",
6097     "mm_teleporter",
6098     "Green teleporter (157.5\xb0)"
6099   },
6100   {
6101     "mm_teleporter_green_9",
6102     "mm_teleporter",
6103     "Green teleporter (180\xb0)"
6104   },
6105   {
6106     "mm_teleporter_green_10",
6107     "mm_teleporter",
6108     "Green teleporter (202.5\xb0)"
6109   },
6110   {
6111     "mm_teleporter_green_11",
6112     "mm_teleporter",
6113     "Green teleporter (225\xb0)"
6114   },
6115   {
6116     "mm_teleporter_green_12",
6117     "mm_teleporter",
6118     "Green teleporter (247.5\xb0)"
6119   },
6120   {
6121     "mm_teleporter_green_13",
6122     "mm_teleporter",
6123     "Green teleporter (270\xb0)"
6124   },
6125   {
6126     "mm_teleporter_green_14",
6127     "mm_teleporter",
6128     "Green teleporter (292.5\xb0)"
6129   },
6130   {
6131     "mm_teleporter_green_15",
6132     "mm_teleporter",
6133     "Green teleporter (315\xb0)"
6134   },
6135   {
6136     "mm_teleporter_green_16",
6137     "mm_teleporter",
6138     "Green teleporter (337.5\xb0)"
6139   },
6140   {
6141     "mm_teleporter_blue_1",
6142     "mm_teleporter",
6143     "Blue teleporter (0\xb0)"
6144   },
6145   {
6146     "mm_teleporter_blue_2",
6147     "mm_teleporter",
6148     "Blue teleporter (22.5\xb0)"
6149   },
6150   {
6151     "mm_teleporter_blue_3",
6152     "mm_teleporter",
6153     "Blue teleporter (45\xb0)"
6154   },
6155   {
6156     "mm_teleporter_blue_4",
6157     "mm_teleporter",
6158     "Blue teleporter (67.5\xb0)"
6159   },
6160   {
6161     "mm_teleporter_blue_5",
6162     "mm_teleporter",
6163     "Blue teleporter (90\xb0)"
6164   },
6165   {
6166     "mm_teleporter_blue_6",
6167     "mm_teleporter",
6168     "Blue teleporter (112.5\xb0)"
6169   },
6170   {
6171     "mm_teleporter_blue_7",
6172     "mm_teleporter",
6173     "Blue teleporter (135\xb0)"
6174   },
6175   {
6176     "mm_teleporter_blue_8",
6177     "mm_teleporter",
6178     "Blue teleporter (157.5\xb0)"
6179   },
6180   {
6181     "mm_teleporter_blue_9",
6182     "mm_teleporter",
6183     "Blue teleporter (180\xb0)"
6184   },
6185   {
6186     "mm_teleporter_blue_10",
6187     "mm_teleporter",
6188     "Blue teleporter (202.5\xb0)"
6189   },
6190   {
6191     "mm_teleporter_blue_11",
6192     "mm_teleporter",
6193     "Blue teleporter (225\xb0)"
6194   },
6195   {
6196     "mm_teleporter_blue_12",
6197     "mm_teleporter",
6198     "Blue teleporter (247.5\xb0)"
6199   },
6200   {
6201     "mm_teleporter_blue_13",
6202     "mm_teleporter",
6203     "Blue teleporter (270\xb0)"
6204   },
6205   {
6206     "mm_teleporter_blue_14",
6207     "mm_teleporter",
6208     "Blue teleporter (292.5\xb0)"
6209   },
6210   {
6211     "mm_teleporter_blue_15",
6212     "mm_teleporter",
6213     "Blue teleporter (315\xb0)"
6214   },
6215   {
6216     "mm_teleporter_blue_16",
6217     "mm_teleporter",
6218     "Blue teleporter (337.5\xb0)"
6219   },
6220   {
6221     "mm_mcduffin",
6222     "mm_mcduffin",
6223     "Gregor McDuffin"
6224   },
6225   {
6226     "mm_pacman",
6227     "mm_pacman",
6228     "Pac man (MM style)"
6229   },
6230   {
6231     "mm_fuse",
6232     "mm_fuse",
6233     "Fuse (off)",
6234   },
6235   {
6236     "mm_steel_wall",
6237     "mm_steel_wall",
6238     "Steel wall (MM style)",
6239   },
6240   {
6241     "mm_wooden_wall",
6242     "mm_wooden_wall",
6243     "Wooden wall (MM style)",
6244   },
6245   {
6246     "mm_ice_wall",
6247     "mm_ice_wall",
6248     "Ice wall",
6249   },
6250   {
6251     "mm_amoeba_wall",
6252     "mm_amoeba_wall",
6253     "Amoeba wall",
6254   },
6255   {
6256     "df_laser",
6257     "df_laser",
6258     "Laser cannon"
6259   },
6260   {
6261     "df_receiver",
6262     "df_receiver",
6263     "Laser receiver"
6264   },
6265   {
6266     "df_steel_wall",
6267     "df_steel_wall",
6268     "Steel wall (DF style)",
6269   },
6270   {
6271     "df_wooden_wall",
6272     "df_wooden_wall",
6273     "Wooden wall (DF style)",
6274   },
6275   {
6276     "spring.left",
6277     "spring",
6278     "Spring (starts moving left)"
6279   },
6280   {
6281     "spring.right",
6282     "spring",
6283     "Spring (starts moving right)"
6284   },
6285   {
6286     "empty_space_1",
6287     "empty_space",
6288     "Empty space 1"
6289   },
6290   {
6291     "empty_space_2",
6292     "empty_space",
6293     "Empty space 2"
6294   },
6295   {
6296     "empty_space_3",
6297     "empty_space",
6298     "Empty space 3"
6299   },
6300   {
6301     "empty_space_4",
6302     "empty_space",
6303     "Empty space 4"
6304   },
6305   {
6306     "empty_space_5",
6307     "empty_space",
6308     "Empty space 5"
6309   },
6310   {
6311     "empty_space_6",
6312     "empty_space",
6313     "Empty space 6"
6314   },
6315   {
6316     "empty_space_7",
6317     "empty_space",
6318     "Empty space 7"
6319   },
6320   {
6321     "empty_space_8",
6322     "empty_space",
6323     "Empty space 8"
6324   },
6325   {
6326     "empty_space_9",
6327     "empty_space",
6328     "Empty space 9"
6329   },
6330   {
6331     "empty_space_10",
6332     "empty_space",
6333     "Empty space 10"
6334   },
6335   {
6336     "empty_space_11",
6337     "empty_space",
6338     "Empty space 11"
6339   },
6340   {
6341     "empty_space_12",
6342     "empty_space",
6343     "Empty space 12"
6344   },
6345   {
6346     "empty_space_13",
6347     "empty_space",
6348     "Empty space 13"
6349   },
6350   {
6351     "empty_space_14",
6352     "empty_space",
6353     "Empty space 14"
6354   },
6355   {
6356     "empty_space_15",
6357     "empty_space",
6358     "Empty space 15"
6359   },
6360   {
6361     "empty_space_16",
6362     "empty_space",
6363     "Empty space 16"
6364   },
6365   {
6366     "df_mirror_fixed_1",
6367     "df_mirror_fixed",
6368     "Fixed mirror (DF style) (0\xb0)"
6369   },
6370   {
6371     "df_mirror_fixed_2",
6372     "df_mirror_fixed",
6373     "Fixed mirror (DF style) (11.25\xb0)"
6374   },
6375   {
6376     "df_mirror_fixed_3",
6377     "df_mirror_fixed",
6378     "Fixed mirror (DF style) (22.5\xb0)"
6379   },
6380   {
6381     "df_mirror_fixed_4",
6382     "df_mirror_fixed",
6383     "Fixed mirror (DF style) (33.75\xb0)"
6384   },
6385   {
6386     "df_mirror_fixed_5",
6387     "df_mirror_fixed",
6388     "Fixed mirror (DF style) (45\xb0)"
6389   },
6390   {
6391     "df_mirror_fixed_6",
6392     "df_mirror_fixed",
6393     "Fixed mirror (DF style) (56.25\xb0)"
6394   },
6395   {
6396     "df_mirror_fixed_7",
6397     "df_mirror_fixed",
6398     "Fixed mirror (DF style) (67.5\xb0)"
6399   },
6400   {
6401     "df_mirror_fixed_8",
6402     "df_mirror_fixed",
6403     "Fixed mirror (DF style) (78.75\xb0)"
6404   },
6405   {
6406     "df_mirror_fixed_9",
6407     "df_mirror_fixed",
6408     "Fixed mirror (DF style) (90\xb0)"
6409   },
6410   {
6411     "df_mirror_fixed_10",
6412     "df_mirror_fixed",
6413     "Fixed mirror (DF style) (101.25\xb0)"
6414   },
6415   {
6416     "df_mirror_fixed_11",
6417     "df_mirror_fixed",
6418     "Fixed mirror (DF style) (112.5\xb0)"
6419   },
6420   {
6421     "df_mirror_fixed_12",
6422     "df_mirror_fixed",
6423     "Fixed mirror (DF style) (123.75\xb0)"
6424   },
6425   {
6426     "df_mirror_fixed_13",
6427     "df_mirror_fixed",
6428     "Fixed mirror (DF style) (135\xb0)"
6429   },
6430   {
6431     "df_mirror_fixed_14",
6432     "df_mirror_fixed",
6433     "Fixed mirror (DF style) (146.25\xb0)"
6434   },
6435   {
6436     "df_mirror_fixed_15",
6437     "df_mirror_fixed",
6438     "Fixed mirror (DF style) (157.5\xb0)"
6439   },
6440   {
6441     "df_mirror_fixed_16",
6442     "df_mirror_fixed",
6443     "Fixed mirror (DF style) (168.75\xb0)"
6444   },
6445   {
6446     "df_slope_1",
6447     "df_slope",
6448     "Slope (DF style) (45\xb0)"
6449   },
6450   {
6451     "df_slope_2",
6452     "df_slope",
6453     "Slope (DF style) (135\xb0)"
6454   },
6455   {
6456     "df_slope_3",
6457     "df_slope",
6458     "Slope (DF style) (225\xb0)"
6459   },
6460   {
6461     "df_slope_4",
6462     "df_slope",
6463     "Slope (DF style) (315\xb0)"
6464   },
6465   {
6466     "bdx_empty_space",
6467     "empty_space",
6468     "Empty space"
6469   },
6470   {
6471     "bdx_sand_1",
6472     "bdx_sand",
6473     "Sand"
6474   },
6475   {
6476     "bdx_sand_2",
6477     "bdx_sand",
6478     "Sand 2"
6479   },
6480   {
6481     "bdx_sand_ball",
6482     "bdx_sand_ball",
6483     "Sand ball"
6484   },
6485   {
6486     "bdx_sand_loose",
6487     "bdx_sand_loose",
6488     "Loose sand"
6489   },
6490   {
6491     "bdx_sand_sloped_up_right",
6492     "bdx_sand_sloped",
6493     "Sand (sloped up right)"
6494   },
6495   {
6496     "bdx_sand_sloped_up_left",
6497     "bdx_sand_sloped",
6498     "Sand (sloped up left)"
6499   },
6500   {
6501     "bdx_sand_sloped_down_left",
6502     "bdx_sand_sloped",
6503     "Sand (sloped down left)"
6504   },
6505   {
6506     "bdx_sand_sloped_down_right",
6507     "bdx_sand_sloped",
6508     "Sand (sloped down right)"
6509   },
6510   {
6511     "bdx_sand_glued",
6512     "bdx_sand_glued",
6513     "Glued sand"
6514   },
6515   {
6516     "bdx_wall_sloped_up_right",
6517     "bdx_wall_sloped",
6518     "Wall (sloped up right)"
6519   },
6520   {
6521     "bdx_wall_sloped_up_left",
6522     "bdx_wall_sloped",
6523     "Wall (sloped up left)"
6524   },
6525   {
6526     "bdx_wall_sloped_down_left",
6527     "bdx_wall_sloped",
6528     "Wall (sloped down left)"
6529   },
6530   {
6531     "bdx_wall_sloped_down_right",
6532     "bdx_wall_sloped",
6533     "Wall (sloped down right)"
6534   },
6535   {
6536     "bdx_wall_non_sloped",
6537     "bdx_wall",
6538     "Wall (non sloped)"
6539   },
6540   {
6541     "bdx_wall_diggable",
6542     "bdx_wall",
6543     "Diggable wall"
6544   },
6545   {
6546     "bdx_wall_diamond",
6547     "bdx_wall",
6548     "Wall with diamond"
6549   },
6550   {
6551     "bdx_wall_key_1",
6552     "bdx_wall",
6553     "Wall with key 1"
6554   },
6555   {
6556     "bdx_wall_key_2",
6557     "bdx_wall",
6558     "Wall with key 2"
6559   },
6560   {
6561     "bdx_wall_key_3",
6562     "bdx_wall",
6563     "Wall with key 3"
6564   },
6565   {
6566     "bdx_falling_wall",
6567     "bdx_wall",
6568     "Falling wall"
6569   },
6570   {
6571     "bdx_steelwall",
6572     "bdx_steelwall",
6573     "Steel wall"
6574   },
6575   {
6576     "bdx_steelwall_sloped_up_right",
6577     "bdx_steelwall_sloped",
6578     "Steel wall (sloped up right)"
6579   },
6580   {
6581     "bdx_steelwall_sloped_up_left",
6582     "bdx_steelwall_sloped",
6583     "Steel wall (sloped up left)"
6584   },
6585   {
6586     "bdx_steelwall_sloped_down_left",
6587     "bdx_steelwall_sloped",
6588     "Steel wall (sloped down left)"
6589   },
6590   {
6591     "bdx_steelwall_sloped_down_right",
6592     "bdx_steelwall_sloped",
6593     "Steel wall (sloped down right)"
6594   },
6595   {
6596     "bdx_steelwall_explodable",
6597     "bdx_steelwall",
6598     "Explodable steel wall"
6599   },
6600   {
6601     "bdx_steelwall_diggable",
6602     "bdx_steelwall",
6603     "Diggable steel wall"
6604   },
6605   {
6606     "bdx_expandable_wall_horizontal",
6607     "bdx_expandable_wall",
6608     "Expandable wall (horizontal)"
6609   },
6610   {
6611     "bdx_expandable_wall_vertical",
6612     "bdx_expandable_wall",
6613     "Expandable wall (vertical)"
6614   },
6615   {
6616     "bdx_expandable_wall_any",
6617     "bdx_expandable_wall",
6618     "Expandable wall (any direction)"
6619   },
6620   {
6621     "bdx_expandable_steelwall_horizontal",
6622     "bdx_expandable_steelwall",
6623     "Expandable steelwall (horizontal)"
6624   },
6625   {
6626     "bdx_expandable_steelwall_vertical",
6627     "bdx_expandable_steelwall",
6628     "Expandable steelwall (vertical)"
6629   },
6630   {
6631     "bdx_expandable_steelwall_any",
6632     "bdx_expandable_steelwall",
6633     "Expandable steelwall (any direction)"
6634   },
6635   {
6636     "bdx_expandable_wall_switch",
6637     "bdx_expandable_wall_switch",
6638     "Expandable wall switch"
6639   },
6640   {
6641     "bdx_expandable_wall_switch.active",
6642     "bdx_expandable_wall_switch",
6643     "Expandable wall switch (active)"
6644   },
6645   {
6646     "bdx_inbox",
6647     "bdx_inbox",
6648     "Inbox with player"
6649   },
6650   {
6651     "bdx_exit_closed",
6652     "bdx_exit",
6653     "Closed exit"
6654   },
6655   {
6656     "bdx_exit_open",
6657     "bdx_exit",
6658     "Open exit"
6659   },
6660   {
6661     "bdx_invisible_exit_closed",
6662     "bdx_invisible_exit",
6663     "Invisible exit (closed)"
6664   },
6665   {
6666     "bdx_invisible_exit_open",
6667     "bdx_invisible_exit",
6668     "Invisible exit (open)"
6669   },
6670   {
6671     "bdx_flying_rock",
6672     "bdx_flying_rock",
6673     "Flying rock"
6674   },
6675   {
6676     "bdx_mega_rock",
6677     "bdx_mega_rock",
6678     "Mega rock"
6679   },
6680   {
6681     "bdx_rock_glued",
6682     "bdx_rock_glued",
6683     "Glued rock"
6684   },
6685   {
6686     "bdx_flying_diamond",
6687     "bdx_flying_diamond",
6688     "Flying diamond"
6689   },
6690   {
6691     "bdx_diamond_glued",
6692     "bdx_diamond_glued",
6693     "Glued diamond"
6694   },
6695   {
6696     "bdx_diamond_key",
6697     "bdx_diamond_key",
6698     "Diamond key"
6699   },
6700   {
6701     "bdx_trapped_diamond",
6702     "bdx_trapped_diamond",
6703     "Trapped diamond"
6704   },
6705   {
6706     "bdx_nut",
6707     "bdx_nut",
6708     "Nut"
6709   },
6710   {
6711     "bdx_amoeba_1",
6712     "bdx_amoeba",
6713     "Amoeba 1"
6714   },
6715   {
6716     "bdx_amoeba_2",
6717     "bdx_amoeba",
6718     "Amoeba 2"
6719   },
6720   {
6721     "bdx_bladder",
6722     "bdx_bladder",
6723     "Bladder"
6724   },
6725   {
6726     "bdx_bladder_spender",
6727     "bdx_bladder_spender",
6728     "Bladder spender"
6729   },
6730   {
6731     "bdx_creature_switch",
6732     "bdx_creature_switch",
6733     "Creature direction switch"
6734   },
6735   {
6736     "bdx_creature_switch.active",
6737     "bdx_creature_switch",
6738     "Creature direction switch (active)"
6739   },
6740   {
6741     "bdx_biter_switch_1",
6742     "bdx_biter_switch",
6743     "Biter switch"
6744   },
6745   {
6746     "bdx_biter_switch_2",
6747     "bdx_biter_switch",
6748     "Biter switch"
6749   },
6750   {
6751     "bdx_biter_switch_3",
6752     "bdx_biter_switch",
6753     "Biter switch"
6754   },
6755   {
6756     "bdx_biter_switch_4",
6757     "bdx_biter_switch",
6758     "Biter switch"
6759   },
6760   {
6761     "bdx_replicator",
6762     "bdx_replicator",
6763     "Replicator"
6764   },
6765   {
6766     "bdx_replicator.active",
6767     "bdx_replicator",
6768     "Replicator (active)"
6769   },
6770   {
6771     "bdx_replicator_switch",
6772     "bdx_replicator_switch",
6773     "Replicator switch"
6774   },
6775   {
6776     "bdx_replicator_switch.active",
6777     "bdx_replicator_switch",
6778     "Replicator switch (active)"
6779   },
6780   {
6781     "bdx_conveyor_left",
6782     "bdx_conveyor",
6783     "Conveyor belt (moving left)"
6784   },
6785   {
6786     "bdx_conveyor_left.active",
6787     "bdx_conveyor",
6788     "Conveyor belt (moving left) (active)"
6789   },
6790   {
6791     "bdx_conveyor_right",
6792     "bdx_conveyor",
6793     "Conveyor belt (moving right)"
6794   },
6795   {
6796     "bdx_conveyor_right.active",
6797     "bdx_conveyor",
6798     "Conveyor belt (moving right) (active)"
6799   },
6800   {
6801     "bdx_conveyor_switch",
6802     "bdx_conveyor_switch",
6803     "Conveyor belt power switch"
6804   },
6805   {
6806     "bdx_conveyor_switch.active",
6807     "bdx_conveyor_switch",
6808     "Conveyor belt power switch (active)"
6809   },
6810   {
6811     "bdx_conveyor_dir_switch",
6812     "bdx_conveyor_dir_switch",
6813     "Conveyor belt direction switch"
6814   },
6815   {
6816     "bdx_conveyor_dir_switch.active",
6817     "bdx_conveyor_dir_switch",
6818     "Conveyor belt direction switch (active)"
6819   },
6820   {
6821     "bdx_gravity_switch",
6822     "bdx_gravity_switch",
6823     "Gravity switch"
6824   },
6825   {
6826     "bdx_gravity_switch.active",
6827     "bdx_gravity_switch",
6828     "Gravity switch (active)"
6829   },
6830   {
6831     "bdx_acid",
6832     "bdx_acid",
6833     "Acid"
6834   },
6835   {
6836     "bdx_box",
6837     "bdx_box",
6838     "Box"
6839   },
6840   {
6841     "bdx_time_penalty",
6842     "bdx_time_penalty",
6843     "Time penalty"
6844   },
6845   {
6846     "bdx_gravestone",
6847     "bdx_gravestone",
6848     "Gravestone"
6849   },
6850   {
6851     "bdx_clock",
6852     "bdx_clock",
6853     "Clock"
6854   },
6855   {
6856     "bdx_pot",
6857     "bdx_pot",
6858     "Pot"
6859   },
6860   {
6861     "bdx_pneumatic_hammer",
6862     "bdx_pneumatic_hammer",
6863     "Pneumatic hammer"
6864   },
6865   {
6866     "bdx_teleporter",
6867     "bdx_teleporter",
6868     "Teleporter"
6869   },
6870   {
6871     "bdx_skeleton",
6872     "bdx_skeleton",
6873     "Skeleton"
6874   },
6875   {
6876     "bdx_water",
6877     "bdx_water",
6878     "Water"
6879   },
6880   {
6881     "bdx_key_1",
6882     "bdx_key",
6883     "Key 1"
6884     },
6885   {
6886     "bdx_key_2",
6887     "bdx_key",
6888     "Key 2"
6889     },
6890   {
6891     "bdx_key_3",
6892     "bdx_key",
6893     "Key 3"
6894   },
6895   {
6896     "bdx_gate_1",
6897     "bdx_gate",
6898     "Door 1"
6899   },
6900   {
6901     "bdx_gate_2",
6902     "bdx_gate",
6903     "Door 2"
6904   },
6905   {
6906     "bdx_gate_3",
6907     "bdx_gate",
6908     "Door 3"
6909   },
6910   {
6911     "bdx_lava",
6912     "bdx_lava",
6913     "Lava"
6914   },
6915   {
6916     "bdx_sweet",
6917     "bdx_sweet",
6918     "Sweet"
6919   },
6920   {
6921     "bdx_voodoo_doll",
6922     "bdx_voodoo_doll",
6923     "Voodoo doll"
6924   },
6925   {
6926     "bdx_slime",
6927     "bdx_slime",
6928     "Slime"
6929   },
6930   {
6931     "bdx_waiting_rock",
6932     "bdx_waiting_rock",
6933     "Waiting rock"
6934   },
6935   {
6936     "bdx_chasing_rock",
6937     "bdx_chasing_rock",
6938     "Chasing rock"
6939   },
6940   {
6941     "bdx_ghost",
6942     "bdx_ghost",
6943     "Ghost"
6944   },
6945   {
6946     "bdx_cow",
6947     "bdx_cow",
6948     "Cow (random start direction)"
6949   },
6950   {
6951     "bdx_cow.left",
6952     "bdx_cow",
6953     "Cow (starts moving left)"
6954   },
6955   {
6956     "bdx_cow.up",
6957     "bdx_cow",
6958     "Cow (starts moving up)"
6959   },
6960   {
6961     "bdx_cow.right",
6962     "bdx_cow",
6963     "Cow (starts moving right)"
6964   },
6965   {
6966     "bdx_cow.down",
6967     "bdx_cow",
6968     "Cow (starts moving down)"
6969   },
6970   {
6971     "bdx_butterfly_1",
6972     "bdx_butterfly",
6973     "Butterfly 1 (random start direction)"
6974   },
6975   {
6976     "bdx_butterfly_1.right",
6977     "bdx_butterfly",
6978     "Butterfly 1 (starts moving right)"
6979   },
6980   {
6981     "bdx_butterfly_1.up",
6982     "bdx_butterfly",
6983     "Butterfly 1 (starts moving up)"
6984   },
6985   {
6986     "bdx_butterfly_1.left",
6987     "bdx_butterfly",
6988     "Butterfly 1 (starts moving left)"
6989   },
6990   {
6991     "bdx_butterfly_1.down",
6992     "bdx_butterfly",
6993     "Butterfly 1 (starts moving down)"
6994   },
6995   {
6996     "bdx_butterfly_2",
6997     "bdx_butterfly",
6998     "Butterfly 2 (random start direction)"
6999   },
7000   {
7001     "bdx_butterfly_2.right",
7002     "bdx_butterfly",
7003     "Butterfly 2 (starts moving right)"
7004   },
7005   {
7006     "bdx_butterfly_2.up",
7007     "bdx_butterfly",
7008     "Butterfly 2 (starts moving up)"
7009   },
7010   {
7011     "bdx_butterfly_2.left",
7012     "bdx_butterfly",
7013     "Butterfly 2 (starts moving left)"
7014   },
7015   {
7016     "bdx_butterfly_2.down",
7017     "bdx_butterfly",
7018     "Butterfly 2 (starts moving down)"
7019   },
7020   {
7021     "bdx_firefly_1",
7022     "bdx_firefly",
7023     "Firefly 1 (random start direction)"
7024   },
7025   {
7026     "bdx_firefly_1.right",
7027     "bdx_firefly",
7028     "Firefly 1 (starts moving right)"
7029   },
7030   {
7031     "bdx_firefly_1.up",
7032     "bdx_firefly",
7033     "Firefly 1 (starts moving up)"
7034   },
7035   {
7036     "bdx_firefly_1.left",
7037     "bdx_firefly",
7038     "Firefly 1 (starts moving left)"
7039   },
7040   {
7041     "bdx_firefly_1.down",
7042     "bdx_firefly",
7043     "Firefly 1 (starts moving down)"
7044   },
7045   {
7046     "bdx_firefly_2",
7047     "bdx_firefly",
7048     "Firefly 2 (random start direction)"
7049   },
7050   {
7051     "bdx_firefly_2.right",
7052     "bdx_firefly",
7053     "Firefly 2 (starts moving right)"
7054   },
7055   {
7056     "bdx_firefly_2.up",
7057     "bdx_firefly",
7058     "Firefly 2 (starts moving up)"
7059   },
7060   {
7061     "bdx_firefly_2.left",
7062     "bdx_firefly",
7063     "Firefly 2 (starts moving left)"
7064   },
7065   {
7066     "bdx_firefly_2.down",
7067     "bdx_firefly",
7068     "Firefly 2 (starts moving down)"
7069   },
7070   {
7071     "bdx_stonefly",
7072     "bdx_stonefly",
7073     "Stonefly (random start direction)"
7074   },
7075   {
7076     "bdx_stonefly.right",
7077     "bdx_stonefly",
7078     "Stonefly (starts moving right)"
7079   },
7080   {
7081     "bdx_stonefly.up",
7082     "bdx_stonefly",
7083     "Stonefly (starts moving up)"
7084   },
7085   {
7086     "bdx_stonefly.left",
7087     "bdx_stonefly",
7088     "Stonefly (starts moving left)"
7089   },
7090   {
7091     "bdx_stonefly.down",
7092     "bdx_stonefly",
7093     "Stonefly (starts moving down)"
7094   },
7095   {
7096     "bdx_biter",
7097     "bdx_biter",
7098     "Biter (random start direction)"
7099   },
7100   {
7101     "bdx_biter.right",
7102     "bdx_biter",
7103     "Biter (starts moving right)"
7104   },
7105   {
7106     "bdx_biter.up",
7107     "bdx_biter",
7108     "Biter (starts moving up)"
7109   },
7110   {
7111     "bdx_biter.left",
7112     "bdx_biter",
7113     "Biter (starts moving left)"
7114   },
7115   {
7116     "bdx_biter.down",
7117     "bdx_biter",
7118     "Biter (starts moving down)"
7119   },
7120   {
7121     "bdx_dragonfly",
7122     "bdx_dragonfly",
7123     "Dragonfly (random start direction)"
7124   },
7125   {
7126     "bdx_dragonfly.right",
7127     "bdx_dragonfly",
7128     "Dragonfly (starts moving right)"
7129   },
7130   {
7131     "bdx_dragonfly.up",
7132     "bdx_dragonfly",
7133     "Dragonfly (starts moving up)"
7134   },
7135   {
7136     "bdx_dragonfly.left",
7137     "bdx_dragonfly",
7138     "Dragonfly (starts moving left)"
7139   },
7140   {
7141     "bdx_dragonfly.down",
7142     "bdx_dragonfly",
7143     "Dragonfly (starts moving down)"
7144   },
7145   {
7146     "bdx_bomb",
7147     "bdx_bomb",
7148     "Bomb"
7149   },
7150   {
7151     "bdx_nitro_pack",
7152     "bdx_nitro_pack",
7153     "Nitro pack"
7154   },
7155   {
7156     "bdx_player",
7157     "bdx_player",
7158     "Player"
7159   },
7160   {
7161     "bdx_player_with_bomb",
7162     "bdx_player",
7163     "Player with bomb",
7164   },
7165   {
7166     "bdx_player_with_rocket_launcher",
7167     "bdx_player",
7168     "Player with rocket launcher",
7169   },
7170   {
7171     "bdx_player_glued",
7172     "bdx_player",
7173     "Glued player",
7174   },
7175   {
7176     "bdx_player_stirring",
7177     "bdx_player",
7178     "Stirring player"
7179   },
7180   {
7181     "bdx_rocket_launcher",
7182     "bdx_rocket_launcher",
7183     "Rocket launcher",
7184   },
7185   {
7186     "bdx_rocket",
7187     "bdx_rocket",
7188     "Rocket",
7189   },
7190   {
7191     "bdx_rocket.right",
7192     "bdx_rocket",
7193     "Rocket (starts moving right)"
7194   },
7195   {
7196     "bdx_rocket.up",
7197     "bdx_rocket",
7198     "Rocket (starts moving up)"
7199   },
7200   {
7201     "bdx_rocket.left",
7202     "bdx_rocket",
7203     "Rocket (starts moving left)"
7204   },
7205   {
7206     "bdx_rocket.down",
7207     "bdx_rocket",
7208     "Rocket (starts moving down)"
7209   },
7210   {
7211     "bdx_fake_bonus",
7212     "bdx_fake_bonus",
7213     "Fake bonus"
7214   },
7215   {
7216     "bdx_covered",
7217     "bdx_covered",
7218     "Covered"
7219   },
7220   {
7221     "bdx_wall",
7222     "wall",
7223     "Normal wall"
7224   },
7225   {
7226     "bdx_rock",
7227     "bdx_rock",
7228     "Rock"
7229   },
7230   {
7231     "bdx_diamond",
7232     "bdx_diamond",
7233     "Diamond"
7234   },
7235   {
7236     "bdx_magic_wall",
7237     "bdx_magic_wall",
7238     "Magic wall"
7239   },
7240   {
7241     "bdx_sand_ball.falling",
7242     "bdx_sand_ball",
7243     "Sand ball (falling)"
7244   },
7245   {
7246     "bdx_sand_loose.falling",
7247     "bdx_sand_loose",
7248     "Loose sand (falling)"
7249   },
7250   {
7251     "bdx_rock.falling",
7252     "bdx_rock",
7253     "Rock (falling)"
7254   },
7255   {
7256     "bdx_flying_rock.flying",
7257     "bdx_flying_rock",
7258     "Flying rock (flying)"
7259   },
7260   {
7261     "bdx_mega_rock.falling",
7262     "bdx_mega_rock",
7263     "Mega rock (falling)"
7264   },
7265   {
7266     "bdx_diamond.falling",
7267     "bdx_diamond",
7268     "Diamond (falling)"
7269   },
7270   {
7271     "bdx_flying_diamond.flying",
7272     "bdx_flying_diamond",
7273     "Flying diamond (flying)"
7274   },
7275   {
7276     "bdx_nut.falling",
7277     "bdx_nut",
7278     "Nut (falling)"
7279   },
7280   {
7281     "bdx_falling_wall.falling",
7282     "bdx_wall",
7283     "Falling wall (falling)"
7284   },
7285   {
7286     "bdx_nitro_pack.falling",
7287     "bdx_nitro_pack",
7288     "Nitro pack (falling)"
7289   },
7290   {
7291     "bdx_water_1",
7292     "bdx_water",
7293     "Water (1)"
7294   },
7295   {
7296     "bdx_water_2",
7297     "bdx_water",
7298     "Water (2)"
7299   },
7300   {
7301     "bdx_water_3",
7302     "bdx_water",
7303     "Water (3)"
7304   },
7305   {
7306     "bdx_water_4",
7307     "bdx_water",
7308     "Water (4)"
7309   },
7310   {
7311     "bdx_water_5",
7312     "bdx_water",
7313     "Water (5)"
7314   },
7315   {
7316     "bdx_water_6",
7317     "bdx_water",
7318     "Water (6)"
7319   },
7320   {
7321     "bdx_water_7",
7322     "bdx_water",
7323     "Water (7)"
7324   },
7325   {
7326     "bdx_water_8",
7327     "bdx_water",
7328     "Water (8)"
7329   },
7330   {
7331     "bdx_water_9",
7332     "bdx_water",
7333     "Water (9)"
7334   },
7335   {
7336     "bdx_water_10",
7337     "bdx_water",
7338     "Water (10)"
7339   },
7340   {
7341     "bdx_water_11",
7342     "bdx_water",
7343     "Water (11)"
7344   },
7345   {
7346     "bdx_water_12",
7347     "bdx_water",
7348     "Water (12)"
7349   },
7350   {
7351     "bdx_water_13",
7352     "bdx_water",
7353     "Water (13)"
7354   },
7355   {
7356     "bdx_water_14",
7357     "bdx_water",
7358     "Water (14)"
7359   },
7360   {
7361     "bdx_water_15",
7362     "bdx_water",
7363     "Water (15)"
7364   },
7365   {
7366     "bdx_water_16",
7367     "bdx_water",
7368     "Water (16)"
7369   },
7370   {
7371     "bdx_cow_enclosed_1",
7372     "bdx_cow",
7373     "Enclosed cow (1)"
7374   },
7375   {
7376     "bdx_cow_enclosed_2",
7377     "bdx_cow",
7378     "Enclosed cow (2)"
7379   },
7380   {
7381     "bdx_cow_enclosed_3",
7382     "bdx_cow",
7383     "Enclosed cow (3)"
7384   },
7385   {
7386     "bdx_cow_enclosed_4",
7387     "bdx_cow",
7388     "Enclosed cow (4)"
7389   },
7390   {
7391     "bdx_cow_enclosed_5",
7392     "bdx_cow",
7393     "Enclosed cow (5)"
7394   },
7395   {
7396     "bdx_cow_enclosed_6",
7397     "bdx_cow",
7398     "Enclosed cow (6)"
7399   },
7400   {
7401     "bdx_cow_enclosed_7",
7402     "bdx_cow",
7403     "Enclosed cow (7)"
7404   },
7405   {
7406     "bdx_bladder_1",
7407     "bdx_bladder",
7408     "Bladder (1)"
7409   },
7410   {
7411     "bdx_bladder_2",
7412     "bdx_bladder",
7413     "Bladder (2)"
7414   },
7415   {
7416     "bdx_bladder_3",
7417     "bdx_bladder",
7418     "Bladder (3)"
7419   },
7420   {
7421     "bdx_bladder_4",
7422     "bdx_bladder",
7423     "Bladder (4)"
7424   },
7425   {
7426     "bdx_bladder_5",
7427     "bdx_bladder",
7428     "Bladder (5)"
7429   },
7430   {
7431     "bdx_bladder_6",
7432     "bdx_bladder",
7433     "Bladder (6)"
7434   },
7435   {
7436     "bdx_bladder_7",
7437     "bdx_bladder",
7438     "Bladder (7)"
7439   },
7440   {
7441     "bdx_bladder_8",
7442     "bdx_bladder",
7443     "Bladder (8)"
7444   },
7445   {
7446     "bdx_player.growing_1",
7447     "bdx_player",
7448     "Player birth (1)"
7449   },
7450   {
7451     "bdx_player.growing_2",
7452     "bdx_player",
7453     "Player birth (2)"
7454   },
7455   {
7456     "bdx_player.growing_3",
7457     "bdx_player",
7458     "Player birth (3)"
7459   },
7460   {
7461     "bdx_bomb.ticking_1",
7462     "bdx_bomb",
7463     "Ticking bomb (1)"
7464   },
7465   {
7466     "bdx_bomb.ticking_2",
7467     "bdx_bomb",
7468     "Ticking bomb (2)"
7469   },
7470   {
7471     "bdx_bomb.ticking_3",
7472     "bdx_bomb",
7473     "Ticking bomb (3)"
7474   },
7475   {
7476     "bdx_bomb.ticking_4",
7477     "bdx_bomb",
7478     "Ticking bomb (4)"
7479   },
7480   {
7481     "bdx_bomb.ticking_5",
7482     "bdx_bomb",
7483     "Ticking bomb (5)"
7484   },
7485   {
7486     "bdx_bomb.ticking_6",
7487     "bdx_bomb",
7488     "Ticking bomb (6)"
7489   },
7490   {
7491     "bdx_bomb.ticking_7",
7492     "bdx_bomb",
7493     "Ticking bomb (7)"
7494   },
7495   {
7496     "bdx_clock.growing_1",
7497     "bdx_clock",
7498     "Clock birth (1)"
7499   },
7500   {
7501     "bdx_clock.growing_2",
7502     "bdx_clock",
7503     "Clock birth (2)"
7504   },
7505   {
7506     "bdx_clock.growing_3",
7507     "bdx_clock",
7508     "Clock birth (3)"
7509   },
7510   {
7511     "bdx_clock.growing_4",
7512     "bdx_clock",
7513     "Clock birth (4)"
7514   },
7515   {
7516     "bdx_diamond.growing_1",
7517     "bdx_diamond",
7518     "Diamond birth (1)"
7519   },
7520   {
7521     "bdx_diamond.growing_2",
7522     "bdx_diamond",
7523     "Diamond birth (2)"
7524   },
7525   {
7526     "bdx_diamond.growing_3",
7527     "bdx_diamond",
7528     "Diamond birth (3)"
7529   },
7530   {
7531     "bdx_diamond.growing_4",
7532     "bdx_diamond",
7533     "Diamond birth (4)"
7534   },
7535   {
7536     "bdx_diamond.growing_5",
7537     "bdx_diamond",
7538     "Diamond birth (5)"
7539   },
7540   {
7541     "bdx_exploding_1",
7542     "bdx_exploding",
7543     "Explosion (1)"
7544   },
7545   {
7546     "bdx_exploding_2",
7547     "bdx_exploding",
7548     "Explosion (2)"
7549   },
7550   {
7551     "bdx_exploding_3",
7552     "bdx_exploding",
7553     "Explosion (3)"
7554   },
7555   {
7556     "bdx_exploding_4",
7557     "bdx_exploding",
7558     "Explosion (4)"
7559   },
7560   {
7561     "bdx_exploding_5",
7562     "bdx_exploding",
7563     "Explosion (5)"
7564   },
7565   {
7566     "bdx_rock.growing_1",
7567     "bdx_rock",
7568     "Rock birth (1)"
7569   },
7570   {
7571     "bdx_rock.growing_2",
7572     "bdx_rock",
7573     "Rock birth (2)"
7574   },
7575   {
7576     "bdx_rock.growing_3",
7577     "bdx_rock",
7578     "Rock birth (3)"
7579   },
7580   {
7581     "bdx_rock.growing_4",
7582     "bdx_rock",
7583     "Rock birth (4)"
7584   },
7585   {
7586     "bdx_steelwall.growing_1",
7587     "bdx_steelwall",
7588     "Steelwall birth (1)"
7589   },
7590   {
7591     "bdx_steelwall.growing_2",
7592     "bdx_steelwall",
7593     "Steelwall birth (2)"
7594   },
7595   {
7596     "bdx_steelwall.growing_3",
7597     "bdx_steelwall",
7598     "Steelwall birth (3)"
7599   },
7600   {
7601     "bdx_steelwall.growing_4",
7602     "bdx_steelwall",
7603     "Steelwall birth (4)"
7604   },
7605   {
7606     "bdx_ghost.exploding_1",
7607     "bdx_ghost",
7608     "Ghost explosion (1)"
7609   },
7610   {
7611     "bdx_ghost.exploding_2",
7612     "bdx_ghost",
7613     "Ghost explosion (2)"
7614   },
7615   {
7616     "bdx_ghost.exploding_3",
7617     "bdx_ghost",
7618     "Ghost explosion (3)"
7619   },
7620   {
7621     "bdx_ghost.exploding_4",
7622     "bdx_ghost",
7623     "Ghost explosion (4)"
7624   },
7625   {
7626     "bdx_bomb.exploding_1",
7627     "bdx_bomb",
7628     "Bomb explosion (1)"
7629   },
7630   {
7631     "bdx_bomb.exploding_2",
7632     "bdx_bomb",
7633     "Bomb explosion (2)"
7634   },
7635   {
7636     "bdx_bomb.exploding_3",
7637     "bdx_bomb",
7638     "Bomb explosion (3)"
7639   },
7640   {
7641     "bdx_bomb.exploding_4",
7642     "bdx_bomb",
7643     "Bomb explosion (4)"
7644   },
7645   {
7646     "bdx_nitro_pack.exploding",
7647     "bdx_nitro_pack",
7648     "Nitro pack (triggered)"
7649   },
7650   {
7651     "bdx_nitro_pack.exploding_1",
7652     "bdx_nitro_pack",
7653     "Nitro pack explosion (1)"
7654   },
7655   {
7656     "bdx_nitro_pack.exploding_2",
7657     "bdx_nitro_pack",
7658     "Nitro pack explosion (2)"
7659   },
7660   {
7661     "bdx_nitro_pack.exploding_3",
7662     "bdx_nitro_pack",
7663     "Nitro pack explosion (3)"
7664   },
7665   {
7666     "bdx_nitro_pack.exploding_4",
7667     "bdx_nitro_pack",
7668     "Nitro pack explosion (4)"
7669   },
7670   {
7671     "bdx_amoeba_2.exploding_1",
7672     "bdx_amoeba",
7673     "Amoeba 2 explosion (1)"
7674   },
7675   {
7676     "bdx_amoeba_2.exploding_2",
7677     "bdx_amoeba",
7678     "Amoeba 2 explosion (2)"
7679   },
7680   {
7681     "bdx_amoeba_2.exploding_3",
7682     "bdx_amoeba",
7683     "Amoeba 2 explosion (3)"
7684   },
7685   {
7686     "bdx_amoeba_2.exploding_4",
7687     "bdx_amoeba",
7688     "Amoeba 2 explosion (4)"
7689   },
7690   {
7691     "bdx_nut.breaking_1",
7692     "bdx_nut",
7693     "Nut explosion (1)"
7694   },
7695   {
7696     "bdx_nut.breaking_2",
7697     "bdx_nut",
7698     "Nut explosion (2)"
7699   },
7700   {
7701     "bdx_nut.breaking_3",
7702     "bdx_nut",
7703     "Nut explosion (3)"
7704   },
7705   {
7706     "bdx_nut.breaking_4",
7707     "bdx_nut",
7708     "Nut explosion (4)"
7709   },
7710
7711   // --------------------------------------------------------------------------
7712   // "real" (and therefore drawable) runtime elements
7713   // --------------------------------------------------------------------------
7714
7715   {
7716     "dynabomb_player_1.active",
7717     "dynabomb",
7718     "-"
7719   },
7720   {
7721     "dynabomb_player_2.active",
7722     "dynabomb",
7723     "-"
7724   },
7725   {
7726     "dynabomb_player_3.active",
7727     "dynabomb",
7728     "-"
7729   },
7730   {
7731     "dynabomb_player_4.active",
7732     "dynabomb",
7733     "-"
7734   },
7735   {
7736     "sp_disk_red.active",
7737     "dynamite",
7738     "-"
7739   },
7740   {
7741     "switchgate.opening",
7742     "switchgate",
7743     "-"
7744   },
7745   {
7746     "switchgate.closing",
7747     "switchgate",
7748     "-"
7749   },
7750   {
7751     "timegate.opening",
7752     "timegate",
7753     "-"
7754   },
7755   {
7756     "timegate.closing",
7757     "timegate",
7758     "-"
7759   },
7760   {
7761     "pearl.breaking",
7762     "pearl",
7763     "-"
7764   },
7765   {
7766     "trap.active",
7767     "trap",
7768     "-"
7769   },
7770   {
7771     "invisible_steelwall.active",
7772     "steelwall",
7773     "-"
7774   },
7775   {
7776     "invisible_wall.active",
7777     "wall",
7778     "-"
7779   },
7780   {
7781     "invisible_sand.active",
7782     "sand",
7783     "-"
7784   },
7785   {
7786     "conveyor_belt_1_left.active",
7787     "conveyor_belt",
7788     "-"
7789   },
7790   {
7791     "conveyor_belt_1_middle.active",
7792     "conveyor_belt",
7793     "-"
7794   },
7795   {
7796     "conveyor_belt_1_right.active",
7797     "conveyor_belt",
7798     "-"
7799   },
7800   {
7801     "conveyor_belt_2_left.active",
7802     "conveyor_belt",
7803     "-"
7804   },
7805   {
7806     "conveyor_belt_2_middle.active",
7807     "conveyor_belt",
7808     "-"
7809   },
7810   {
7811     "conveyor_belt_2_right.active",
7812     "conveyor_belt",
7813     "-"
7814   },
7815   {
7816     "conveyor_belt_3_left.active",
7817     "conveyor_belt",
7818     "-"
7819   },
7820   {
7821     "conveyor_belt_3_middle.active",
7822     "conveyor_belt",
7823     "-"
7824   },
7825   {
7826     "conveyor_belt_3_right.active",
7827     "conveyor_belt",
7828     "-"
7829   },
7830   {
7831     "conveyor_belt_4_left.active",
7832     "conveyor_belt",
7833     "-"
7834   },
7835   {
7836     "conveyor_belt_4_middle.active",
7837     "conveyor_belt",
7838     "-"
7839   },
7840   {
7841     "conveyor_belt_4_right.active",
7842     "conveyor_belt",
7843     "-"
7844   },
7845   {
7846     "exit.opening",
7847     "exit",
7848     "-"
7849   },
7850   {
7851     "exit.closing",
7852     "exit",
7853     "-"
7854   },
7855   {
7856     "steel_exit.opening",
7857     "steel_exit",
7858     "-"
7859   },
7860   {
7861     "steel_exit.closing",
7862     "steel_exit",
7863     "-"
7864   },
7865   {
7866     "em_exit.opening",
7867     "em_exit",
7868     "-"
7869   },
7870   {
7871     "em_exit.closing",
7872     "em_exit",
7873     "-"
7874   },
7875   {
7876     "em_steel_exit.opening",
7877     "em_steel_exit",
7878     "-"
7879   },
7880   {
7881     "em_steel_exit.closing",
7882     "em_steel_exit",
7883     "-"
7884   },
7885   {
7886     "sp_exit.opening",
7887     "sp_exit",
7888     "-"
7889   },
7890   {
7891     "sp_exit.closing",
7892     "sp_exit",
7893     "-"
7894   },
7895   {
7896     "sp_exit_open",
7897     "sp_exit",
7898     "-"
7899   },
7900   {
7901     "sp_terminal.active",
7902     "sp_terminal",
7903     "-"
7904   },
7905   {
7906     "sp_buggy_base.activating",
7907     "sp_buggy_base",
7908     "-"
7909   },
7910   {
7911     "sp_buggy_base.active",
7912     "sp_buggy_base",
7913     "-"
7914   },
7915   {
7916     "sp_murphy_clone",
7917     "murphy_clone",
7918     "-"
7919   },
7920   {
7921     "amoeba.dropping",
7922     "amoeba",
7923     "-"
7924   },
7925   {
7926     "quicksand.emptying",
7927     "quicksand",
7928     "-"
7929   },
7930   {
7931     "quicksand_fast.emptying",
7932     "quicksand",
7933     "-"
7934   },
7935   {
7936     "magic_wall.active",
7937     "magic_wall",
7938     "-"
7939   },
7940   {
7941     "bd_magic_wall.active",
7942     "magic_wall",
7943     "-"
7944   },
7945   {
7946     "dc_magic_wall.active",
7947     "magic_wall",
7948     "-"
7949   },
7950   {
7951     "magic_wall_full",
7952     "magic_wall",
7953     "-"
7954   },
7955   {
7956     "bd_magic_wall_full",
7957     "magic_wall",
7958     "-"
7959   },
7960   {
7961     "dc_magic_wall_full",
7962     "magic_wall",
7963     "-"
7964   },
7965   {
7966     "magic_wall.emptying",
7967     "magic_wall",
7968     "-"
7969   },
7970   {
7971     "bd_magic_wall.emptying",
7972     "magic_wall",
7973     "-"
7974   },
7975   {
7976     "dc_magic_wall.emptying",
7977     "magic_wall",
7978     "-"
7979   },
7980   {
7981     "magic_wall_dead",
7982     "magic_wall",
7983     "-"
7984   },
7985   {
7986     "bd_magic_wall_dead",
7987     "magic_wall",
7988     "-"
7989   },
7990   {
7991     "dc_magic_wall_dead",
7992     "magic_wall",
7993     "-"
7994   },
7995
7996   {
7997     "emc_fake_grass.active",
7998     "fake_grass",
7999     "-"
8000   },
8001   {
8002     "gate_1_gray.active",
8003     "gate",
8004     ""
8005   },
8006   {
8007     "gate_2_gray.active",
8008     "gate",
8009     ""
8010   },
8011   {
8012     "gate_3_gray.active",
8013     "gate",
8014     ""
8015   },
8016   {
8017     "gate_4_gray.active",
8018     "gate",
8019     ""
8020   },
8021   {
8022     "em_gate_1_gray.active",
8023     "gate",
8024     ""
8025   },
8026   {
8027     "em_gate_2_gray.active",
8028     "gate",
8029     ""
8030   },
8031   {
8032     "em_gate_3_gray.active",
8033     "gate",
8034     ""
8035   },
8036   {
8037     "em_gate_4_gray.active",
8038     "gate",
8039     ""
8040   },
8041   {
8042     "emc_gate_5_gray.active",
8043     "gate",
8044     "",
8045   },
8046   {
8047     "emc_gate_6_gray.active",
8048     "gate",
8049     "",
8050   },
8051   {
8052     "emc_gate_7_gray.active",
8053     "gate",
8054     "",
8055   },
8056   {
8057     "emc_gate_8_gray.active",
8058     "gate",
8059     "",
8060   },
8061   {
8062     "dc_gate_white_gray.active",
8063     "gate",
8064     "",
8065   },
8066   {
8067     "emc_dripper.active",
8068     "dripper",
8069     "Dripper"
8070   },
8071   {
8072     "emc_spring_bumper.active",
8073     "emc_spring_bumper",
8074     "Spring bumper",
8075   },
8076   {
8077     "mm_exit.opening",
8078     "mm_exit",
8079     "-"
8080   },
8081   {
8082     "mm_exit.closing",
8083     "mm_exit",
8084     "-"
8085   },
8086   {
8087     "mm_gray_ball.active",
8088     "mm_gray_ball",
8089     "-",
8090   },
8091   {
8092     "mm_gray_ball.opening",
8093     "mm_gray_ball",
8094     "-",
8095   },
8096   {
8097     "mm_ice_wall.shrinking",
8098     "mm_ice_wall",
8099     "-",
8100   },
8101   {
8102     "mm_amoeba_wall.growing",
8103     "mm_amoeba_wall",
8104     "-",
8105   },
8106   {
8107     "mm_pacman.eating.right",
8108     "mm_pacman",
8109     "Pac man (eating right)"
8110   },
8111   {
8112     "mm_pacman.eating.up",
8113     "mm_pacman",
8114     "Pac man (eating up)"
8115   },
8116   {
8117     "mm_pacman.eating.left",
8118     "mm_pacman",
8119     "Pac man (eating left)"
8120   },
8121   {
8122     "mm_pacman.eating.down",
8123     "mm_pacman",
8124     "Pac man (eating down)"
8125   },
8126   {
8127     "mm_bomb.active",
8128     "mm_bomb",
8129     "Active bomb (MM style)"
8130   },
8131   {
8132     "df_mine.active",
8133     "df_mine",
8134     "Active mine"
8135   },
8136   {
8137     "bdx_magic_wall.active",
8138     "magic_wall",
8139     "-"
8140   },
8141
8142   // --------------------------------------------------------------------------
8143   // "unreal" (and therefore not drawable) runtime elements
8144   // --------------------------------------------------------------------------
8145
8146   {
8147     "blocked",
8148     "-",
8149     "-"
8150   },
8151   {
8152     "explosion",
8153     "-",
8154     "-"
8155   },
8156   {
8157     "nut.breaking",
8158     "-",
8159     "-"
8160   },
8161   {
8162     "diamond.breaking",
8163     "-",
8164     "-"
8165   },
8166   {
8167     "acid_splash_left",
8168     "-",
8169     "-"
8170   },
8171   {
8172     "acid_splash_right",
8173     "-",
8174     "-"
8175   },
8176   {
8177     "amoeba.growing",
8178     "-",
8179     "-"
8180   },
8181   {
8182     "amoeba.shrinking",
8183     "-",
8184     "-"
8185   },
8186   {
8187     "expandable_wall.growing",
8188     "-",
8189     "-"
8190   },
8191   {
8192     "expandable_steelwall.growing",
8193     "-",
8194     "-"
8195   },
8196   {
8197     "flames",
8198     "-",
8199     "-"
8200   },
8201   {
8202     "player_is_leaving",
8203     "-",
8204     "-"
8205   },
8206   {
8207     "player_is_exploding_1",
8208     "-",
8209     "-"
8210   },
8211   {
8212     "player_is_exploding_2",
8213     "-",
8214     "-"
8215   },
8216   {
8217     "player_is_exploding_3",
8218     "-",
8219     "-"
8220   },
8221   {
8222     "player_is_exploding_4",
8223     "-",
8224     "-"
8225   },
8226   {
8227     "quicksand.filling",
8228     "quicksand",
8229     "-"
8230   },
8231   {
8232     "quicksand_fast.filling",
8233     "quicksand",
8234     "-"
8235   },
8236   {
8237     "magic_wall.filling",
8238     "-",
8239     "-"
8240   },
8241   {
8242     "bd_magic_wall.filling",
8243     "-",
8244     "-"
8245   },
8246   {
8247     "dc_magic_wall.filling",
8248     "-",
8249     "-"
8250   },
8251   {
8252     "element.snapping",
8253     "-",
8254     "-"
8255   },
8256   {
8257     "diagonal.shrinking",
8258     "-",
8259     "-"
8260   },
8261   {
8262     "diagonal.growing",
8263     "-",
8264     "-"
8265   },
8266
8267   // --------------------------------------------------------------------------
8268   // dummy elements (never used as game elements, only used as graphics)
8269   // --------------------------------------------------------------------------
8270
8271   {
8272     "steelwall_topleft",
8273     "-",
8274     "-"
8275   },
8276   {
8277     "steelwall_topright",
8278     "-",
8279     "-"
8280   },
8281   {
8282     "steelwall_bottomleft",
8283     "-",
8284     "-"
8285   },
8286   {
8287     "steelwall_bottomright",
8288     "-",
8289     "-"
8290   },
8291   {
8292     "steelwall_horizontal",
8293     "-",
8294     "-"
8295   },
8296   {
8297     "steelwall_vertical",
8298     "-",
8299     "-"
8300   },
8301   {
8302     "invisible_steelwall_topleft",
8303     "-",
8304     "-"
8305   },
8306   {
8307     "invisible_steelwall_topright",
8308     "-",
8309     "-"
8310   },
8311   {
8312     "invisible_steelwall_bottomleft",
8313     "-",
8314     "-"
8315   },
8316   {
8317     "invisible_steelwall_bottomright",
8318     "-",
8319     "-"
8320   },
8321   {
8322     "invisible_steelwall_horizontal",
8323     "-",
8324     "-"
8325   },
8326   {
8327     "invisible_steelwall_vertical",
8328     "-",
8329     "-"
8330   },
8331   {
8332     "dynabomb",
8333     "-",
8334     "-"
8335   },
8336   {
8337     "dynabomb.active",
8338     "-",
8339     "-"
8340   },
8341   {
8342     "dynabomb_player_1",
8343     "-",
8344     "-"
8345   },
8346   {
8347     "dynabomb_player_2",
8348     "-",
8349     "-"
8350   },
8351   {
8352     "dynabomb_player_3",
8353     "-",
8354     "-"
8355   },
8356   {
8357     "dynabomb_player_4",
8358     "-",
8359     "-"
8360   },
8361   {
8362     "shield_normal.active",
8363     "-",
8364     "-"
8365   },
8366   {
8367     "shield_deadly.active",
8368     "-",
8369     "-"
8370   },
8371   {
8372     "amoeba",
8373     "amoeba",
8374     "-"
8375   },
8376   {
8377     "mm_lightball_red",
8378     "-",
8379     "-"
8380   },
8381   {
8382     "mm_lightball_blue",
8383     "-",
8384     "-"
8385   },
8386   {
8387     "mm_lightball_yellow",
8388     "-",
8389     "-"
8390   },
8391   {
8392     "[default]",
8393     "default",
8394     "-"
8395   },
8396   {
8397     "[bd_default]",
8398     "bd_default",
8399     "-"
8400   },
8401   {
8402     "[bdx_default]",
8403     "bdx_default",
8404     "-"
8405   },
8406   {
8407     "[sp_default]",
8408     "sp_default",
8409     "-"
8410   },
8411   {
8412     "[sb_default]",
8413     "sb_default",
8414     "-"
8415   },
8416   {
8417     "[mm_default]",
8418     "mm_default",
8419     "-"
8420   },
8421   {
8422     "graphic_1",
8423     "graphic",
8424     "-"
8425   },
8426   {
8427     "graphic_2",
8428     "graphic",
8429     "-"
8430   },
8431   {
8432     "graphic_3",
8433     "graphic",
8434     "-"
8435   },
8436   {
8437     "graphic_4",
8438     "graphic",
8439     "-"
8440   },
8441   {
8442     "graphic_5",
8443     "graphic",
8444     "-"
8445   },
8446   {
8447     "graphic_6",
8448     "graphic",
8449     "-"
8450   },
8451   {
8452     "graphic_7",
8453     "graphic",
8454     "-"
8455   },
8456   {
8457     "graphic_8",
8458     "graphic",
8459     "-"
8460   },
8461   {
8462     "bdx_game_graphics_color_template",
8463     "-",
8464     "-"
8465   },
8466   {
8467     "internal_clipboard_custom",
8468     "internal",
8469     "Empty custom element"
8470   },
8471   {
8472     "internal_clipboard_change",
8473     "internal",
8474     "Empty change page"
8475   },
8476   {
8477     "internal_clipboard_group",
8478     "internal",
8479     "Empty group element"
8480   },
8481   {
8482     "internal_dummy",
8483     "internal",
8484     "-"
8485   },
8486   {
8487     "internal_cascade_bd",
8488     "internal",
8489     "Show Boulder Dash elements"
8490   },
8491   {
8492     "internal_cascade_bd.active",
8493     "internal",
8494     "Hide Boulder Dash elements"
8495   },
8496   {
8497     "internal_cascade_bdx",
8498     "internal",
8499     "Show Boulder Dash native elements"
8500   },
8501   {
8502     "internal_cascade_bdx.active",
8503     "internal",
8504     "Hide Boulder Dash native elements"
8505   },
8506   {
8507     "internal_cascade_bdx_effects",
8508     "internal",
8509     "Show Boulder Dash effects elements"
8510   },
8511   {
8512     "internal_cascade_bdx_effects.active",
8513     "internal",
8514     "Hide Boulder Dash effects elements"
8515   },
8516   {
8517     "internal_cascade_em",
8518     "internal",
8519     "Show Emerald Mine elements"
8520   },
8521   {
8522     "internal_cascade_em.active",
8523     "internal",
8524     "Hide Emerald Mine elements"
8525   },
8526   {
8527     "internal_cascade_emc",
8528     "internal",
8529     "Show Emerald Mine Club elements"
8530   },
8531   {
8532     "internal_cascade_emc.active",
8533     "internal",
8534     "Hide Emerald Mine Club elements"
8535   },
8536   {
8537     "internal_cascade_rnd",
8538     "internal",
8539     "Show Rocks'n'Diamonds elements"
8540   },
8541   {
8542     "internal_cascade_rnd.active",
8543     "internal",
8544     "Hide Rocks'n'Diamonds elements"
8545   },
8546   {
8547     "internal_cascade_sb",
8548     "internal",
8549     "Show Sokoban elements"
8550   },
8551   {
8552     "internal_cascade_sb.active",
8553     "internal",
8554     "Hide Sokoban elements"
8555   },
8556   {
8557     "internal_cascade_sp",
8558     "internal",
8559     "Show Supaplex elements"
8560   },
8561   {
8562     "internal_cascade_sp.active",
8563     "internal",
8564     "Hide Supaplex elements"
8565   },
8566   {
8567     "internal_cascade_dc",
8568     "internal",
8569     "Show Diamond Caves II elements"
8570   },
8571   {
8572     "internal_cascade_dc.active",
8573     "internal",
8574     "Hide Diamond Caves II elements"
8575   },
8576   {
8577     "internal_cascade_dx",
8578     "internal",
8579     "Show DX Boulderdash elements"
8580   },
8581   {
8582     "internal_cascade_dx.active",
8583     "internal",
8584     "Hide DX Boulderdash elements"
8585   },
8586   {
8587     "internal_cascade_mm",
8588     "internal",
8589     "Show Mirror Magic elements"
8590   },
8591   {
8592     "internal_cascade_mm.active",
8593     "internal",
8594     "Hide Mirror Magic elements"
8595   },
8596   {
8597     "internal_cascade_df",
8598     "internal",
8599     "Show Deflektor elements"
8600   },
8601   {
8602     "internal_cascade_df.active",
8603     "internal",
8604     "Hide Deflektor elements"
8605   },
8606   {
8607     "internal_cascade_chars",
8608     "internal",
8609     "Show text elements"
8610   },
8611   {
8612     "internal_cascade_chars.active",
8613     "internal",
8614     "Hide text elements"
8615   },
8616   {
8617     "internal_cascade_steel_chars",
8618     "internal",
8619     "Show steel text elements"
8620   },
8621   {
8622     "internal_cascade_steel_chars.active",
8623     "internal",
8624     "Hide steel text elements"
8625   },
8626   {
8627     "internal_cascade_ce",
8628     "internal",
8629     "Show custom elements"
8630   },
8631   {
8632     "internal_cascade_ce.active",
8633     "internal",
8634     "Hide custom elements"
8635   },
8636   {
8637     "internal_cascade_ge",
8638     "internal",
8639     "Show group elements"
8640   },
8641   {
8642     "internal_cascade_ge.active",
8643     "internal",
8644     "Hide group elements"
8645   },
8646   {
8647     "internal_cascade_es",
8648     "internal",
8649     "Show empty space elements"
8650   },
8651   {
8652     "internal_cascade_es.active",
8653     "internal",
8654     "Hide empty space elements"
8655   },
8656   {
8657     "internal_cascade_ref",
8658     "internal",
8659     "Show reference elements"
8660   },
8661   {
8662     "internal_cascade_ref.active",
8663     "internal",
8664     "Hide reference elements"
8665   },
8666   {
8667     "internal_cascade_user",
8668     "internal",
8669     "Show user defined elements"
8670   },
8671   {
8672     "internal_cascade_user.active",
8673     "internal",
8674     "Hide user defined elements"
8675   },
8676   {
8677     "internal_cascade_dynamic",
8678     "internal",
8679     "Show elements used in this level"
8680   },
8681   {
8682     "internal_cascade_dynamic.active",
8683     "internal",
8684     "Hide elements used in this level"
8685   },
8686
8687   // keyword to stop parser: "ELEMENT_INFO_END" <-- do not change!
8688
8689   {
8690     NULL,
8691     NULL,
8692     NULL
8693   }
8694 };
8695
8696
8697 // ----------------------------------------------------------------------------
8698 // element action and direction definitions
8699 // ----------------------------------------------------------------------------
8700
8701 struct ElementActionInfo element_action_info[NUM_ACTIONS + 1 + 1] =
8702 {
8703   { ".[DEFAULT]",               ACTION_DEFAULT,                 TRUE    },
8704   { ".waiting",                 ACTION_WAITING,                 TRUE    },
8705   { ".falling",                 ACTION_FALLING,                 TRUE    },
8706   { ".moving",                  ACTION_MOVING,                  TRUE    },
8707   { ".digging",                 ACTION_DIGGING,                 FALSE   },
8708   { ".snapping",                ACTION_SNAPPING,                FALSE   },
8709   { ".collecting",              ACTION_COLLECTING,              FALSE   },
8710   { ".dropping",                ACTION_DROPPING,                FALSE   },
8711   { ".pushing",                 ACTION_PUSHING,                 FALSE   },
8712   { ".walking",                 ACTION_WALKING,                 FALSE   },
8713   { ".passing",                 ACTION_PASSING,                 FALSE   },
8714   { ".impact",                  ACTION_IMPACT,                  FALSE   },
8715   { ".breaking",                ACTION_BREAKING,                FALSE   },
8716   { ".activating",              ACTION_ACTIVATING,              FALSE   },
8717   { ".deactivating",            ACTION_DEACTIVATING,            FALSE   },
8718   { ".opening",                 ACTION_OPENING,                 FALSE   },
8719   { ".closing",                 ACTION_CLOSING,                 FALSE   },
8720   { ".attacking",               ACTION_ATTACKING,               TRUE    },
8721   { ".growing",                 ACTION_GROWING,                 TRUE    },
8722   { ".shrinking",               ACTION_SHRINKING,               FALSE   },
8723   { ".active",                  ACTION_ACTIVE,                  TRUE    },
8724   { ".filling",                 ACTION_FILLING,                 FALSE   },
8725   { ".emptying",                ACTION_EMPTYING,                FALSE   },
8726   { ".changing",                ACTION_CHANGING,                FALSE   },
8727   { ".exploding",               ACTION_EXPLODING,               FALSE   },
8728   { ".boring",                  ACTION_BORING,                  FALSE   },
8729   { ".boring[1]",               ACTION_BORING_1,                FALSE   },
8730   { ".boring[2]",               ACTION_BORING_2,                FALSE   },
8731   { ".boring[3]",               ACTION_BORING_3,                FALSE   },
8732   { ".boring[4]",               ACTION_BORING_4,                FALSE   },
8733   { ".boring[5]",               ACTION_BORING_5,                FALSE   },
8734   { ".boring[6]",               ACTION_BORING_6,                FALSE   },
8735   { ".boring[7]",               ACTION_BORING_7,                FALSE   },
8736   { ".boring[8]",               ACTION_BORING_8,                FALSE   },
8737   { ".boring[9]",               ACTION_BORING_9,                FALSE   },
8738   { ".boring[10]",              ACTION_BORING_10,               FALSE   },
8739   { ".sleeping",                ACTION_SLEEPING,                FALSE   },
8740   { ".sleeping[1]",             ACTION_SLEEPING_1,              FALSE   },
8741   { ".sleeping[2]",             ACTION_SLEEPING_2,              FALSE   },
8742   { ".sleeping[3]",             ACTION_SLEEPING_3,              FALSE   },
8743   { ".awakening",               ACTION_AWAKENING,               FALSE   },
8744   { ".dying",                   ACTION_DYING,                   FALSE   },
8745   { ".turning",                 ACTION_TURNING,                 FALSE   },
8746   { ".turning_from_left",       ACTION_TURNING_FROM_LEFT,       FALSE   },
8747   { ".turning_from_right",      ACTION_TURNING_FROM_RIGHT,      FALSE   },
8748   { ".turning_from_up",         ACTION_TURNING_FROM_UP,         FALSE   },
8749   { ".turning_from_down",       ACTION_TURNING_FROM_DOWN,       FALSE   },
8750   { ".smashed_by_rock",         ACTION_SMASHED_BY_ROCK,         FALSE   },
8751   { ".smashed_by_spring",       ACTION_SMASHED_BY_SPRING,       FALSE   },
8752   { ".eating",                  ACTION_EATING,                  FALSE   },
8753   { ".twinkling",               ACTION_TWINKLING,               FALSE   },
8754   { ".splashing",               ACTION_SPLASHING,               FALSE   },
8755   { ".hitting",                 ACTION_HITTING,                 FALSE   },
8756   { ".flying",                  ACTION_FLYING,                  FALSE   },
8757   { ".page[1]",                 ACTION_PAGE_1,                  FALSE   },
8758   { ".page[2]",                 ACTION_PAGE_2,                  FALSE   },
8759   { ".page[3]",                 ACTION_PAGE_3,                  FALSE   },
8760   { ".page[4]",                 ACTION_PAGE_4,                  FALSE   },
8761   { ".page[5]",                 ACTION_PAGE_5,                  FALSE   },
8762   { ".page[6]",                 ACTION_PAGE_6,                  FALSE   },
8763   { ".page[7]",                 ACTION_PAGE_7,                  FALSE   },
8764   { ".page[8]",                 ACTION_PAGE_8,                  FALSE   },
8765   { ".page[9]",                 ACTION_PAGE_9,                  FALSE   },
8766   { ".page[10]",                ACTION_PAGE_10,                 FALSE   },
8767   { ".page[11]",                ACTION_PAGE_11,                 FALSE   },
8768   { ".page[12]",                ACTION_PAGE_12,                 FALSE   },
8769   { ".page[13]",                ACTION_PAGE_13,                 FALSE   },
8770   { ".page[14]",                ACTION_PAGE_14,                 FALSE   },
8771   { ".page[15]",                ACTION_PAGE_15,                 FALSE   },
8772   { ".page[16]",                ACTION_PAGE_16,                 FALSE   },
8773   { ".page[17]",                ACTION_PAGE_17,                 FALSE   },
8774   { ".page[18]",                ACTION_PAGE_18,                 FALSE   },
8775   { ".page[19]",                ACTION_PAGE_19,                 FALSE   },
8776   { ".page[20]",                ACTION_PAGE_20,                 FALSE   },
8777   { ".page[21]",                ACTION_PAGE_21,                 FALSE   },
8778   { ".page[22]",                ACTION_PAGE_22,                 FALSE   },
8779   { ".page[23]",                ACTION_PAGE_23,                 FALSE   },
8780   { ".page[24]",                ACTION_PAGE_24,                 FALSE   },
8781   { ".page[25]",                ACTION_PAGE_25,                 FALSE   },
8782   { ".page[26]",                ACTION_PAGE_26,                 FALSE   },
8783   { ".page[27]",                ACTION_PAGE_27,                 FALSE   },
8784   { ".page[28]",                ACTION_PAGE_28,                 FALSE   },
8785   { ".page[29]",                ACTION_PAGE_29,                 FALSE   },
8786   { ".page[30]",                ACTION_PAGE_30,                 FALSE   },
8787   { ".page[31]",                ACTION_PAGE_31,                 FALSE   },
8788   { ".page[32]",                ACTION_PAGE_32,                 FALSE   },
8789   { ".part_1",                  ACTION_PART_1,                  FALSE   },
8790   { ".part_2",                  ACTION_PART_2,                  FALSE   },
8791   { ".part_3",                  ACTION_PART_3,                  FALSE   },
8792   { ".part_4",                  ACTION_PART_4,                  FALSE   },
8793   { ".part_5",                  ACTION_PART_5,                  FALSE   },
8794   { ".part_6",                  ACTION_PART_6,                  FALSE   },
8795   { ".part_7",                  ACTION_PART_7,                  FALSE   },
8796   { ".part_8",                  ACTION_PART_8,                  FALSE   },
8797   { ".part_9",                  ACTION_PART_9,                  FALSE   },
8798   { ".part_10",                 ACTION_PART_10,                 FALSE   },
8799   { ".part_11",                 ACTION_PART_11,                 FALSE   },
8800   { ".part_12",                 ACTION_PART_12,                 FALSE   },
8801   { ".part_13",                 ACTION_PART_13,                 FALSE   },
8802   { ".part_14",                 ACTION_PART_14,                 FALSE   },
8803   { ".part_15",                 ACTION_PART_15,                 FALSE   },
8804   { ".part_16",                 ACTION_PART_16,                 FALSE   },
8805   { ".part_17",                 ACTION_PART_17,                 FALSE   },
8806   { ".part_18",                 ACTION_PART_18,                 FALSE   },
8807   { ".part_19",                 ACTION_PART_19,                 FALSE   },
8808   { ".part_20",                 ACTION_PART_20,                 FALSE   },
8809   { ".part_21",                 ACTION_PART_21,                 FALSE   },
8810   { ".part_22",                 ACTION_PART_22,                 FALSE   },
8811   { ".part_23",                 ACTION_PART_23,                 FALSE   },
8812   { ".part_24",                 ACTION_PART_24,                 FALSE   },
8813   { ".part_25",                 ACTION_PART_25,                 FALSE   },
8814   { ".part_26",                 ACTION_PART_26,                 FALSE   },
8815   { ".part_27",                 ACTION_PART_27,                 FALSE   },
8816   { ".part_28",                 ACTION_PART_28,                 FALSE   },
8817   { ".part_29",                 ACTION_PART_29,                 FALSE   },
8818   { ".part_30",                 ACTION_PART_30,                 FALSE   },
8819   { ".part_31",                 ACTION_PART_31,                 FALSE   },
8820   { ".part_32",                 ACTION_PART_32,                 FALSE   },
8821   { ".other",                   ACTION_OTHER,                   FALSE   },
8822
8823   // empty suffix always matches -- check as last entry in InitSoundInfo()
8824   { "",                         ACTION_DEFAULT,                 TRUE    },
8825
8826   { NULL,                       0,                              0       }
8827 };
8828
8829 struct ElementDirectionInfo element_direction_info[NUM_DIRECTIONS_FULL + 1] =
8830 {
8831   { ".left",                    MV_BIT_LEFT                             },
8832   { ".right",                   MV_BIT_RIGHT                            },
8833   { ".up",                      MV_BIT_UP                               },
8834   { ".down",                    MV_BIT_DOWN                             },
8835   { ".upleft",                  MV_BIT_UP                               },
8836   { ".upright",                 MV_BIT_RIGHT                            },
8837   { ".downleft",                MV_BIT_LEFT                             },
8838   { ".downright",               MV_BIT_DOWN                             },
8839
8840   { NULL,                       0                                       }
8841 };
8842
8843 struct SpecialSuffixInfo special_suffix_info[NUM_SPECIAL_GFX_ARGS + 1 + 1] =
8844 {
8845   { ".[DEFAULT]",               GFX_SPECIAL_ARG_DEFAULT,                },
8846   { ".LOADING_INITIAL",         GFX_SPECIAL_ARG_LOADING_INITIAL,        },
8847   { ".LOADING",                 GFX_SPECIAL_ARG_LOADING,                },
8848   { ".TITLE_INITIAL",           GFX_SPECIAL_ARG_TITLE_INITIAL,          },
8849   { ".TITLE_INITIAL_1",         GFX_SPECIAL_ARG_TITLE_INITIAL_1,        },
8850   { ".TITLE_INITIAL_2",         GFX_SPECIAL_ARG_TITLE_INITIAL_2,        },
8851   { ".TITLE_INITIAL_3",         GFX_SPECIAL_ARG_TITLE_INITIAL_3,        },
8852   { ".TITLE_INITIAL_4",         GFX_SPECIAL_ARG_TITLE_INITIAL_4,        },
8853   { ".TITLE_INITIAL_5",         GFX_SPECIAL_ARG_TITLE_INITIAL_5,        },
8854   { ".TITLE",                   GFX_SPECIAL_ARG_TITLE,                  },
8855   { ".TITLE_1",                 GFX_SPECIAL_ARG_TITLE_1,                },
8856   { ".TITLE_2",                 GFX_SPECIAL_ARG_TITLE_2,                },
8857   { ".TITLE_3",                 GFX_SPECIAL_ARG_TITLE_3,                },
8858   { ".TITLE_4",                 GFX_SPECIAL_ARG_TITLE_4,                },
8859   { ".TITLE_5",                 GFX_SPECIAL_ARG_TITLE_5,                },
8860   { ".MAIN",                    GFX_SPECIAL_ARG_MAIN,                   },
8861   { ".NAMES",                   GFX_SPECIAL_ARG_NAMES,                  },
8862   { ".LEVELS",                  GFX_SPECIAL_ARG_LEVELS                  },
8863   { ".LEVELNR",                 GFX_SPECIAL_ARG_LEVELNR                 },
8864   { ".SCORES",                  GFX_SPECIAL_ARG_SCORES,                 },
8865   { ".SCOREINFO",               GFX_SPECIAL_ARG_SCOREINFO,              },
8866   { ".EDITOR",                  GFX_SPECIAL_ARG_EDITOR,                 },
8867   { ".INFO",                    GFX_SPECIAL_ARG_INFO,                   },
8868   { ".SETUP",                   GFX_SPECIAL_ARG_SETUP,                  },
8869   { ".PLAYING",                 GFX_SPECIAL_ARG_PLAYING,                },
8870   { ".DOOR",                    GFX_SPECIAL_ARG_DOOR,                   },
8871   { ".TAPE",                    GFX_SPECIAL_ARG_TAPE,                   },
8872   { ".PANEL",                   GFX_SPECIAL_ARG_PANEL,                  },
8873   { ".PREVIEW",                 GFX_SPECIAL_ARG_PREVIEW,                },
8874   { ".CRUMBLED",                GFX_SPECIAL_ARG_CRUMBLED,               },
8875   { ".MAINONLY",                GFX_SPECIAL_ARG_MAINONLY,               },
8876   { ".NAMESONLY",               GFX_SPECIAL_ARG_NAMESONLY,              },
8877   { ".SCORESONLY",              GFX_SPECIAL_ARG_SCORESONLY,             },
8878   { ".TYPENAME",                GFX_SPECIAL_ARG_TYPENAME,               },
8879   { ".TYPENAMES",               GFX_SPECIAL_ARG_TYPENAMES,              },
8880   { ".SUBMENU",                 GFX_SPECIAL_ARG_SUBMENU,                },
8881   { ".MENU",                    GFX_SPECIAL_ARG_MENU,                   },
8882   { ".TOONS",                   GFX_SPECIAL_ARG_TOONS,                  },
8883   { ".SCORESOLD",               GFX_SPECIAL_ARG_SCORESOLD,              },
8884   { ".SCORESNEW",               GFX_SPECIAL_ARG_SCORESNEW,              },
8885   { ".NO_TITLE",                GFX_SPECIAL_ARG_NO_TITLE,               },
8886   { ".FADING",                  GFX_SPECIAL_ARG_FADING,                 },
8887   { ".QUIT",                    GFX_SPECIAL_ARG_QUIT,                   },
8888
8889   // empty suffix always matches -- check as last entry in InitMusicInfo()
8890   { "",                         GFX_SPECIAL_ARG_DEFAULT,                },
8891
8892   { NULL,                       0,                                      }
8893 };
8894
8895 #include "conf_var.c"   // include auto-generated data structure definitions
8896
8897
8898 // ----------------------------------------------------------------------------
8899 // font definitions
8900 // ----------------------------------------------------------------------------
8901
8902 // Important: When one entry is a prefix of another entry, the longer entry
8903 // must come first, because the dynamic configuration does prefix matching!
8904 // (These definitions must match the corresponding definitions in "main.h"!)
8905
8906 struct FontInfo font_info[NUM_FONTS + 1] =
8907 {
8908   { "font.initial_1"            },
8909   { "font.initial_2"            },
8910   { "font.initial_3"            },
8911   { "font.initial_4"            },
8912   { "font.title_1"              },
8913   { "font.title_2"              },
8914   { "font.menu_1.active"        },
8915   { "font.menu_2.active"        },
8916   { "font.menu_1"               },
8917   { "font.menu_2"               },
8918   { "font.text_1.active"        },
8919   { "font.text_2.active"        },
8920   { "font.text_3.active"        },
8921   { "font.text_4.active"        },
8922   { "font.text_1"               },
8923   { "font.text_2"               },
8924   { "font.text_3"               },
8925   { "font.text_4"               },
8926   { "font.envelope_1"           },
8927   { "font.envelope_2"           },
8928   { "font.envelope_3"           },
8929   { "font.envelope_4"           },
8930   { "font.request_narrow"       },
8931   { "font.request"              },
8932   { "font.input_1.active"       },
8933   { "font.input_2.active"       },
8934   { "font.input_1"              },
8935   { "font.input_2"              },
8936   { "font.option_off_narrow"    },
8937   { "font.option_off"           },
8938   { "font.option_on_narrow"     },
8939   { "font.option_on"            },
8940   { "font.value_1"              },
8941   { "font.value_2"              },
8942   { "font.value_old_narrow"     },
8943   { "font.value_old"            },
8944   { "font.value_narrow"         },
8945   { "font.level_number.active"  },
8946   { "font.level_number"         },
8947   { "font.tape_recorder"        },
8948   { "font.game_info"            },
8949   { "font.info.elements"        },
8950   { "font.info.levelset"        },
8951   { "font.main.network_players" },
8952
8953   { NULL                        }
8954 };
8955
8956 struct GlobalAnimInfo global_anim_info[NUM_GLOBAL_ANIM_TOKENS + 1];
8957
8958 // this contains predefined structure elements to init "global_anim_info"
8959 struct GlobalAnimNameInfo global_anim_name_info[NUM_GLOBAL_ANIM_TOKENS + 1] =
8960 {
8961   // (real) graphic definitions used to define animation graphics
8962   { "gfx.global.anim_1",        },
8963   { "gfx.global.anim_2",        },
8964   { "gfx.global.anim_3",        },
8965   { "gfx.global.anim_4",        },
8966   { "gfx.global.anim_5",        },
8967   { "gfx.global.anim_6",        },
8968   { "gfx.global.anim_7",        },
8969   { "gfx.global.anim_8",        },
8970   { "gfx.global.anim_9",        },
8971   { "gfx.global.anim_10",       },
8972   { "gfx.global.anim_11",       },
8973   { "gfx.global.anim_12",       },
8974   { "gfx.global.anim_13",       },
8975   { "gfx.global.anim_14",       },
8976   { "gfx.global.anim_15",       },
8977   { "gfx.global.anim_16",       },
8978   { "gfx.global.anim_17",       },
8979   { "gfx.global.anim_18",       },
8980   { "gfx.global.anim_19",       },
8981   { "gfx.global.anim_20",       },
8982   { "gfx.global.anim_21",       },
8983   { "gfx.global.anim_22",       },
8984   { "gfx.global.anim_23",       },
8985   { "gfx.global.anim_24",       },
8986   { "gfx.global.anim_25",       },
8987   { "gfx.global.anim_26",       },
8988   { "gfx.global.anim_27",       },
8989   { "gfx.global.anim_28",       },
8990   { "gfx.global.anim_29",       },
8991   { "gfx.global.anim_30",       },
8992   { "gfx.global.anim_31",       },
8993   { "gfx.global.anim_32",       },
8994
8995   // (dummy) graphic definitions used to define animation controls
8996   { "global.anim_1",            },
8997   { "global.anim_2",            },
8998   { "global.anim_3",            },
8999   { "global.anim_4",            },
9000   { "global.anim_5",            },
9001   { "global.anim_6",            },
9002   { "global.anim_7",            },
9003   { "global.anim_8",            },
9004   { "global.anim_9",            },
9005   { "global.anim_10",           },
9006   { "global.anim_11",           },
9007   { "global.anim_12",           },
9008   { "global.anim_13",           },
9009   { "global.anim_14",           },
9010   { "global.anim_15",           },
9011   { "global.anim_16",           },
9012   { "global.anim_17",           },
9013   { "global.anim_18",           },
9014   { "global.anim_19",           },
9015   { "global.anim_20",           },
9016   { "global.anim_21",           },
9017   { "global.anim_22",           },
9018   { "global.anim_23",           },
9019   { "global.anim_24",           },
9020   { "global.anim_25",           },
9021   { "global.anim_26",           },
9022   { "global.anim_27",           },
9023   { "global.anim_28",           },
9024   { "global.anim_29",           },
9025   { "global.anim_30",           },
9026   { "global.anim_31",           },
9027   { "global.anim_32",           },
9028
9029   { NULL                        }
9030 };
9031
9032 struct GlobalAnimEventInfo global_anim_event_info =
9033 {
9034   NULL, 0
9035 };
9036
9037
9038 // ----------------------------------------------------------------------------
9039 // music token prefix definitions
9040 // ----------------------------------------------------------------------------
9041
9042 struct MusicPrefixInfo music_prefix_info[NUM_MUSIC_PREFIXES + 1] =
9043 {
9044   { "background",               TRUE    },
9045
9046   { NULL,                       0       }
9047 };
9048
9049
9050 // ============================================================================
9051 // main()
9052 // ============================================================================
9053
9054 static void print_usage(void)
9055 {
9056   Print("\n"
9057         "Usage: %s [OPTION]... [HOSTNAME [PORT]]\n"
9058         "\n"
9059         "Options:\n"
9060         "  -b, --basepath DIRECTORY         alternative base DIRECTORY\n"
9061         "  -l, --levels DIRECTORY           alternative levels DIRECTORY\n"
9062         "  -g, --graphics DIRECTORY         alternative graphics DIRECTORY\n"
9063         "  -s, --sounds DIRECTORY           alternative sounds DIRECTORY\n"
9064         "  -m, --music DIRECTORY            alternative music DIRECTORY\n"
9065         "      --display NR                 open program window on display NR\n"
9066         "      --mytapes                    use private tapes for tape tests\n"
9067         "  -n, --network                    network multiplayer game\n"
9068         "      --serveronly                 only start network server\n"
9069         "  -v, --verbose                    verbose mode\n"
9070         "  -V, --version                    show program version\n"
9071         "      --debug[=MODE]               show (and limit) debug output\n"
9072         "  -e, --execute COMMAND            execute batch COMMAND\n"
9073         "\n"
9074         "Valid commands for '--execute' option:\n"
9075         "  \"print graphicsinfo.conf\"        print default graphics config\n"
9076         "  \"print soundsinfo.conf\"          print default sounds config\n"
9077         "  \"print musicinfo.conf\"           print default music config\n"
9078         "  \"print editorsetup.conf\"         print default editor config\n"
9079         "  \"print helpanim.conf\"            print default helpanim config\n"
9080         "  \"print helptext.conf\"            print default helptext config\n"
9081         "  \"dump levelset FILE|LEVELDIR\"    dump levelset info for LEVELDIR\n"
9082         "  \"dump level FILE\"                dump level data from FILE\n"
9083         "  \"dump tape FILE\"                 dump tape data from FILE\n"
9084         "  \"autoplay LEVELDIR [NR ...]\"     play level tapes for LEVELDIR\n"
9085         "  \"autoffwd LEVELDIR [NR ...]\"     ffwd level tapes for LEVELDIR\n"
9086         "  \"autowarp LEVELDIR [NR ...]\"     warp level tapes for LEVELDIR\n"
9087         "  \"autotest LEVELDIR [NR ...]\"     test level tapes for LEVELDIR\n"
9088         "  \"autofix LEVELDIR [NR ...]\"      test and fix tapes for LEVELDIR\n"
9089         "  \"patch tapes MODE LEVELDIR [NR]\" patch level tapes for LEVELDIR\n"
9090         "  \"convert LEVELDIR [NR]\"          convert levels in LEVELDIR\n"
9091         "  \"create sketch images DIRECTORY\" write BMP images to DIRECTORY\n"
9092         "  \"create collect image DIRECTORY\" write BMP image to DIRECTORY\n"
9093         "\n",
9094         program.command_basename);
9095 }
9096
9097 static void print_version(void)
9098 {
9099   Print("%s", getProgramInitString());
9100
9101   if (!strEqual(getProgramVersionString(), getProgramRealVersionString()))
9102   {
9103     Print(" (%s %d.%d.%d.%d%s)",
9104           PROGRAM_TITLE_STRING,
9105           PROGRAM_VERSION_SUPER,
9106           PROGRAM_VERSION_MAJOR,
9107           PROGRAM_VERSION_MINOR,
9108           PROGRAM_VERSION_PATCH,
9109           PROGRAM_VERSION_EXTRA);
9110   }
9111
9112   Print("\n");
9113
9114   if (options.debug)
9115   {
9116     SDL_version sdl_version;
9117
9118     SDL_VERSION(&sdl_version);
9119     Print("- SDL %d.%d.%d\n",
9120           sdl_version.major,
9121           sdl_version.minor,
9122           sdl_version.patch);
9123
9124     SDL_IMAGE_VERSION(&sdl_version);
9125     Print("- SDL_image %d.%d.%d\n",
9126           sdl_version.major,
9127           sdl_version.minor,
9128           sdl_version.patch);
9129
9130     SDL_MIXER_VERSION(&sdl_version);
9131     Print("- SDL_mixer %d.%d.%d\n",
9132           sdl_version.major,
9133           sdl_version.minor,
9134           sdl_version.patch);
9135
9136     SDL_NET_VERSION(&sdl_version);
9137     Print("- SDL_net %d.%d.%d\n",
9138           sdl_version.major,
9139           sdl_version.minor,
9140           sdl_version.patch);
9141   }
9142 }
9143
9144 static void InitProgramConfig(char *command_filename)
9145 {
9146   char *program_title = PROGRAM_TITLE_STRING;
9147   char *program_icon_file = PROGRAM_ICON_FILENAME;
9148   char *program_version = getProgramRealVersionString();
9149   char *program_basename = getBaseNameNoSuffix(command_filename);
9150   char *config_filename = getProgramConfigFilename(command_filename);
9151   char *userdata_subdir;
9152
9153   // read default program config, if existing
9154   if (fileExists(config_filename))
9155     LoadSetupFromFilename(config_filename);
9156
9157   // set program title from potentially redefined program title
9158   if (setup.internal.program_title != NULL &&
9159       strlen(setup.internal.program_title) > 0)
9160     program_title = getStringCopy(setup.internal.program_title);
9161
9162   // set program version from potentially redefined program version
9163   if (setup.internal.program_version != NULL &&
9164       strlen(setup.internal.program_version) > 0)
9165     program_version = getStringCopy(setup.internal.program_version);
9166
9167   // set program icon file from potentially redefined program icon file
9168   if (setup.internal.program_icon_file != NULL &&
9169       strlen(setup.internal.program_icon_file) > 0)
9170     program_icon_file = getStringCopy(setup.internal.program_icon_file);
9171
9172 #if defined(PLATFORM_WINDOWS) || defined(PLATFORM_MAC) || defined(PLATFORM_EMSCRIPTEN)
9173   userdata_subdir = program_title;
9174 #elif defined(PLATFORM_UNIX)
9175   userdata_subdir = getStringCat2(".", program_basename);
9176 #else
9177   userdata_subdir = USERDATA_DIRECTORY_OTHER;
9178 #endif
9179
9180   // set default window size (only relevant on program startup)
9181   if (setup.internal.default_window_width  != 0 &&
9182       setup.internal.default_window_height != 0)
9183   {
9184     WIN_XSIZE = setup.internal.default_window_width;
9185     WIN_YSIZE = setup.internal.default_window_height;
9186   }
9187
9188   InitProgramInfo(command_filename,
9189                   config_filename,
9190                   userdata_subdir,
9191                   program_basename,
9192                   program_title,
9193                   program_icon_file,
9194                   COOKIE_PREFIX,
9195                   program_version,
9196                   GAME_VERSION_ACTUAL);
9197 }
9198
9199 int main(int argc, char *argv[])
9200 {
9201   InitProgramConfig(argv[0]);
9202
9203   InitWindowTitleFunction(getWindowTitleString);
9204   InitExitMessageFunction(DisplayExitMessage);
9205   InitExitFunction(CloseAllAndExit);
9206   InitPlatformDependentStuff();
9207
9208   GetOptions(argc, argv, print_usage, print_version);
9209   OpenAll();
9210
9211   EventLoop();
9212   CloseAllAndExit(0);
9213
9214   return 0;     // to keep compilers happy
9215 }