happyleavesaoc / aoc-mgz

Age of Empires II recorded game parsing and summarization in Python 3.
MIT License
197 stars 42 forks source link

TypeError: a bytes-like object is required, not 'str' #7

Closed gregstein closed 4 years ago

gregstein commented 4 years ago

Hello Happyleaves,

All your examples in the \examples\ directory work like a charm except for \examples\rec.py which returns this error "TypeError: a bytes-like object is required, not 'str'" rec exe

I tried to fix that function mgz\recorded_game__init__.py as follows

    def _parse_lobby_chat(self, messages, source, timestamp):
        """Parse a lobby chat message."""
        for message in messages:
            message = message.encode() #fix:  <------ encoding
            if message.message_length == 0:
                continue
            chat = ChatMessage(message.message, timestamp, self._players(), source=source)
            self._parse_chat(chat)

But.. more errors came up and basically the fix didn't resolve anything. Btw I'm using pyinstaller to convert the examples to windows compatibility.

There is another error in mgz\recorded_game\chat.py as you can observe in the image above.

I would appreciate it if you could take a look at that. Thank you,

Warm regards GregStein

gregstein commented 4 years ago

I ended up making major changes to your mgz library as well as the struct library itself. It took me a few hours but totally worth it :)

mgz_python

Thank you for the extraordinary work put into this library <3

Have a nice day. GregStein

happyleavesaoc commented 4 years ago

As you found, the examples are out of date. The actual parsing should all be correct though. If you want to see an up to date usage example, check mgz/summary.py.

happyleavesaoc commented 4 years ago

To address the specific issue: Strings are returned as bytes from the parser because the encoding is not known at parse-time. Once we detect encoding, we can then decode the strings appropriately. There is an encoding-detection function that uses a heuristic in the aforementioned file.

gregstein commented 4 years ago

Fantastic! Thank you! I will look into it and let you know in a few minutes.

gregstein commented 4 years ago

Hmm... I do not see any argument example within your class mgz/summary.py. rec.py seems to do the job.. I don't know

import sys
import pprint
from mgz.recorded_game import RecordedGame

if __name__ == "__main__":
    game = RecordedGame(sys.argv[1])
    pp = pprint.PrettyPrinter(indent=4)
    for op in game.operations(op_types=['message']):
        print(op)
    #pp.pprint(game.summarize())
    gh = open(sys.argv[2], 'w' )
    gh.write(pprint.pformat(game.summarize(), indent=4))
    gh.close()

Is this output correct and updated????

{   'action_histogram': {   'backtowork': 33,
                            'gatherpoint': 320,
                            'order': 55,
                            'patrol': 101,
                            'postgame': 1,
                            'queue': 561,
                            'release': 71,
                            'stance': 322,
                            'stop': 5,
                            'waypoint': 9},
    'diplomacy': {   '1v1': True,
                     'TG': False,
                     'ffa': False,
                     'teams': [   {'player_numbers': [1], 'winner': False},
                                  {'player_numbers': [4], 'winner': True}],
                     'type': '1v1'},
    'duration': '00:39:31',
    'finished': True,
    'map': {   'arena': 'False',
               'hash': 'b86e20ed7b327d72a52f7814058419032b632d6a',
               'name': 'Arabia',
               'nomad': 'False',
               'regicide': 'False',
               'size': 'tiny',
               'x': '120',
               'y': '120'},
    'metadata': {   'filename': 'example1.mgz',
                    'hash': '08883c52a12224af4f70a756f8dbf253c208e399',
                    'sub_version': 11.76,
                    'timestamp': 'None',
                    'version': 'userpatch 1.4 rc 2'},
    'mod': None,
    'number_of_ai': 0,
    'number_of_humans': 2,
    'players': [   {   'achievements': {   'buildings_lost': 4,
                                           'buildings_razed': 0,
                                           'conversions': 0,
                                           'explored_percent': 50,
                                           'food_collected': 12340,
                                           'gold_collected': 8666,
                                           'relic_gold': 96,
                                           'relics_collected': 1,
                                           'stone_collected': 680,
                                           'total_castles': 0,
                                           'trade_gold': 0,
                                           'tribute_received': 0,
                                           'tribute_sent': 0,
                                           'units_killed': 58,
                                           'units_lost': 94,
                                           'villager_high': 114,
                                           'wood_collected': 16081},
                       'action_histogram': {   'build': 89,
                                               'delete': 16,
                                               'interact': 227,
                                               'move': 948,
                                               'research': 40,
                                               'resign': 1,
                                               'sell': 12,
                                               'wall': 16},
                       'ages': {   'castle': datetime.time(0, 18, 21),
                                   'feudal': datetime.time(0, 10, 13),
                                   'imperial': datetime.time(0, 37, 43)},
                       'apm': 46,
                       'build': [   {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 11.0, 'y': 71.0},
                                        'timestamp': datetime.time(0, 2, 1)},
                                    {   'building': 'Mill',
                                        'coordinates': {'x': 25.0, 'y': 71.0},
                                        'timestamp': datetime.time(0, 4, 13)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 27.0, 'y': 77.0},
                                        'timestamp': datetime.time(0, 6, 47)},
                                    {   'building': 'Barracks',
                                        'coordinates': {'x': 28.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 8, 58)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 25.5, 'y': 59.5},
                                        'timestamp': datetime.time(0, 10, 14)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 16.0, 'y': 75.0},
                                        'timestamp': datetime.time(0, 10, 53)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 60.5},
                                        'timestamp': datetime.time(0, 10, 59)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 63.5},
                                        'timestamp': datetime.time(0, 11, 1)},
                                    {   'building': 'Blacksmith',
                                        'coordinates': {'x': 11.5, 'y': 56.5},
                                        'timestamp': datetime.time(0, 12, 3)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 17.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 12, 12)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 14.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 12, 14)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 14.5, 'y': 58.5},
                                        'timestamp': datetime.time(0, 12, 48)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 17.5, 'y': 58.5},
                                        'timestamp': datetime.time(0, 12, 50)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 13.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 13, 4)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 11.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 13, 6)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 10.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 14, 7)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 16.5, 'y': 55.5},
                                        'timestamp': datetime.time(0, 14, 24)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 19.5, 'y': 54.5},
                                        'timestamp': datetime.time(0, 15, 36)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 57.5},
                                        'timestamp': datetime.time(0, 16, 36)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 66.5},
                                        'timestamp': datetime.time(0, 16, 55)},
                                    {   'building': 'Town Center',
                                        'coordinates': {'x': 17.0, 'y': 81.0},
                                        'timestamp': datetime.time(0, 18, 24)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 22.5, 'y': 70.5},
                                        'timestamp': datetime.time(0, 19, 40)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 18.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 21, 13)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 21.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 21, 15)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 16.5, 'y': 69.5},
                                        'timestamp': datetime.time(0, 21, 22)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 23.5, 'y': 67.5},
                                        'timestamp': datetime.time(0, 21, 39)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 13.5, 'y': 68.5},
                                        'timestamp': datetime.time(0, 22, 12)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 23.5, 'y': 73.5},
                                        'timestamp': datetime.time(0, 22, 23)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 10.5, 'y': 68.5},
                                        'timestamp': datetime.time(0, 22, 40)},
                                    {   'building': 'Town Center',
                                        'coordinates': {'x': 28.0, 'y': 85.0},
                                        'timestamp': datetime.time(0, 23, 35)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 13.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 24, 22)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 81.5},
                                        'timestamp': datetime.time(0, 24, 25)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 17.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 24, 56)},
                                    {   'building': 'University',
                                        'coordinates': {'x': 14.0, 'y': 89.0},
                                        'timestamp': datetime.time(0, 25, 5)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 14.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 25, 9)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 19.5, 'y': 69.5},
                                        'timestamp': datetime.time(0, 25, 12)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 13.5, 'y': 84.5},
                                        'timestamp': datetime.time(0, 25, 21)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 63.5},
                                        'timestamp': datetime.time(0, 25, 48)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 10.0, 'y': 76.0},
                                        'timestamp': datetime.time(0, 25, 55)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 24.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 26, 42)},
                                    {   'building': 'Mill',
                                        'coordinates': {'x': 6.0, 'y': 66.0},
                                        'timestamp': datetime.time(0, 27, 45)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 16.5, 'y': 84.5},
                                        'timestamp': datetime.time(0, 27, 55)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 8.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 27, 58)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 7.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 27, 59)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 6.5, 'y': 69.5},
                                        'timestamp': datetime.time(0, 28, 2)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 2.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 28, 3)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 13.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 28, 4)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 3.5, 'y': 68.5},
                                        'timestamp': datetime.time(0, 28, 33)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 11.5, 'y': 65.5},
                                        'timestamp': datetime.time(0, 28, 34)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 23.5, 'y': 64.5},
                                        'timestamp': datetime.time(0, 29, 11)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 30.5, 'y': 88.5},
                                        'timestamp': datetime.time(0, 29, 22)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 24.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 29, 24)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 2.0, 'y': 77.0},
                                        'timestamp': datetime.time(0, 29, 32)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 26.5, 'y': 73.5},
                                        'timestamp': datetime.time(0, 29, 40)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 4.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 29, 50)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 84.5},
                                        'timestamp': datetime.time(0, 30)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 74.5},
                                        'timestamp': datetime.time(0, 30, 4)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 23.5, 'y': 48.5},
                                        'timestamp': datetime.time(0, 30, 20)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 8.5, 'y': 58.5},
                                        'timestamp': datetime.time(0, 30, 44)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 10.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 31, 2)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 24.5, 'y': 86.5},
                                        'timestamp': datetime.time(0, 31, 23)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 27.5, 'y': 81.5},
                                        'timestamp': datetime.time(0, 31, 25)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 66.5},
                                        'timestamp': datetime.time(0, 31, 34)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 5.5, 'y': 58.5},
                                        'timestamp': datetime.time(0, 32, 9)},
                                    {   'building': 'Market',
                                        'coordinates': {'x': 25.0, 'y': 94.0},
                                        'timestamp': datetime.time(0, 32, 19)},
                                    {   'building': 'Monastery',
                                        'coordinates': {'x': 24.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 32, 22)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 6.0, 'y': 87.0},
                                        'timestamp': datetime.time(0, 33, 9)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 12.5, 'y': 59.5},
                                        'timestamp': datetime.time(0, 33, 26)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 18.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 34, 11)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 23.5, 'y': 73.5},
                                        'timestamp': datetime.time(0, 34, 25)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 15.5, 'y': 50.5},
                                        'timestamp': datetime.time(0, 34, 37)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 21.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 34, 51)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 22.5, 'y': 70.5},
                                        'timestamp': datetime.time(0, 34, 51)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 9.0, 'y': 101.0},
                                        'timestamp': datetime.time(0, 35, 4)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 6.0, 'y': 100.0},
                                        'timestamp': datetime.time(0, 35, 10)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 18.0, 'y': 103.0},
                                        'timestamp': datetime.time(0, 35, 46)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 20.5, 'y': 81.5},
                                        'timestamp': datetime.time(0, 36, 3)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 13.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 36, 12)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 8.0, 'y': 79.0},
                                        'timestamp': datetime.time(0, 36, 14)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 8.0, 'y': 110.0},
                                        'timestamp': datetime.time(0, 36, 18)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 8.5, 'y': 93.5},
                                        'timestamp': datetime.time(0, 37, 29)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 12.5, 'y': 94.5},
                                        'timestamp': datetime.time(0, 37, 29)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 15.5, 'y': 95.5},
                                        'timestamp': datetime.time(0, 37, 30)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 2.5, 'y': 93.5},
                                        'timestamp': datetime.time(0, 37, 30)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 2.5, 'y': 93.5},
                                        'timestamp': datetime.time(0, 37, 30)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 15.5, 'y': 100.5},
                                        'timestamp': datetime.time(0, 37, 32)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 33.5, 'y': 88.5},
                                        'timestamp': datetime.time(0, 38, 14)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 1.0, 'y': 55.0},
                                        'timestamp': datetime.time(0, 38, 28)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 18.5, 'y': 95.5},
                                        'timestamp': datetime.time(0, 39, 22)}],
                       'civilization': 'Huns',
                       'color': 'blue',
                       'coordinates': {'x': 17.0, 'y': 62.0},
                       'index': 1,
                       'mvp': False,
                       'name': '[TyRanT]_DauT_',
                       'number': 1,
                       'position': 'southwest',
                       'research': [   {   'technology': 'Loom',
                                           'timestamp': datetime.time(0, 7, 35)},
                                       {   'technology': 'Loom',
                                           'timestamp': datetime.time(0, 7, 36)},
                                       {   'technology': 'Feudal Age',
                                           'timestamp': datetime.time(0, 8, 2)},
                                       {   'technology': 'Feudal Age',
                                           'timestamp': datetime.time(0, 8, 2)},
                                       {   'technology': 'Double-Bit Axe',
                                           'timestamp': datetime.time(0, 10, 23)},
                                       {   'technology': 'Double-Bit Axe',
                                           'timestamp': datetime.time(0, 10, 23)},
                                       {   'technology': 'Horse Collar',
                                           'timestamp': datetime.time(0, 10, 28)},
                                       {   'technology': 'Horse Collar',
                                           'timestamp': datetime.time(0, 10, 28)},
                                       {   'technology': 'Castle Age',
                                           'timestamp': datetime.time(0, 15, 41)},
                                       {   'technology': 'Castle Age',
                                           'timestamp': datetime.time(0, 15, 41)},
                                       {   'technology': 'Gold Mining',
                                           'timestamp': datetime.time(0, 16, 22)},
                                       {   'technology': 'Gold Mining',
                                           'timestamp': datetime.time(0, 16, 22)},
                                       {   'technology': 'Fletching',
                                           'timestamp': datetime.time(0, 16, 49)},
                                       {   'technology': 'Fletching',
                                           'timestamp': datetime.time(0, 16, 49)},
                                       {   'technology': 'Bodkin Arrow',
                                           'timestamp': datetime.time(0, 18, 28)},
                                       {   'technology': 'Bodkin Arrow',
                                           'timestamp': datetime.time(0, 18, 28)},
                                       {   'technology': 'Bow Saw',
                                           'timestamp': datetime.time(0, 18, 50)},
                                       {   'technology': 'Bow Saw',
                                           'timestamp': datetime.time(0, 18, 50)},
                                       {   'technology': 'Town Watch',
                                           'timestamp': datetime.time(0, 23, 58)},
                                       {   'technology': 'Wheelbarrow',
                                           'timestamp': datetime.time(0, 25, 46)},
                                       {   'technology': 'Ballistics',
                                           'timestamp': datetime.time(0, 26, 25)},
                                       {   'technology': 'Ballistics',
                                           'timestamp': datetime.time(0, 26, 25)},
                                       {   'technology': 'Bloodlines',
                                           'timestamp': datetime.time(0, 28, 18)},
                                       {   'technology': 'Bloodlines',
                                           'timestamp': datetime.time(0, 28, 18)},
                                       {   'technology': 'Padded Archer Armor',
                                           'timestamp': datetime.time(0, 29, 4)},
                                       {   'technology': 'Leather Archer Armor',
                                           'timestamp': datetime.time(0, 30, 12)},
                                       {   'technology': 'Leather Archer Armor',
                                           'timestamp': datetime.time(0, 30, 13)},
                                       {   'technology': 'Thumb Ring',
                                           'timestamp': datetime.time(0, 31, 11)},
                                       {   'technology': 'Thumb Ring',
                                           'timestamp': datetime.time(0, 31, 11)},
                                       {   'technology': 'Imperial Age',
                                           'timestamp': datetime.time(0, 34, 33)},
                                       {   'technology': 'Imperial Age',
                                           'timestamp': datetime.time(0, 34, 34)},
                                       {   'technology': 'Hand Cart',
                                           'timestamp': datetime.time(0, 34, 48)},
                                       {   'technology': 'Hand Cart',
                                           'timestamp': datetime.time(0, 34, 48)},
                                       {   'technology': 'Light Cavalry',
                                           'timestamp': datetime.time(0, 37, 36)},
                                       {   'technology': 'Light Cavalry',
                                           'timestamp': datetime.time(0, 37, 37)},
                                       {   'technology': 'Heavy Cav Archer',
                                           'timestamp': datetime.time(0, 37, 49)},
                                       {   'technology': 'Heavy Cav Archer',
                                           'timestamp': datetime.time(0, 37, 49)},
                                       {   'technology': 'Bracer',
                                           'timestamp': datetime.time(0, 37, 55)},
                                       {   'technology': 'Bracer',
                                           'timestamp': datetime.time(0, 37, 55)},
                                       {   'technology': 'Chemistry',
                                           'timestamp': datetime.time(0, 38, 20)}],
                       'score': 6529,
                       'voobly': {   'nation': None,
                                     'rating_current': None,
                                     'rating_game': 2299,
                                     'uid': None},
                       'winner': False},
                   {   'achievements': {   'buildings_lost': 0,
                                           'buildings_razed': 4,
                                           'conversions': 0,
                                           'explored_percent': 76,
                                           'food_collected': 13278,
                                           'gold_collected': 10738,
                                           'relic_gold': 168,
                                           'relics_collected': 1,
                                           'stone_collected': 755,
                                           'total_castles': 0,
                                           'trade_gold': 0,
                                           'tribute_received': 0,
                                           'tribute_sent': 0,
                                           'units_killed': 95,
                                           'units_lost': 58,
                                           'villager_high': 112,
                                           'wood_collected': 16029},
                       'action_histogram': {   'build': 113,
                                               'delete': 13,
                                               'formation': 492,
                                               'game': 3,
                                               'interact': 313,
                                               'move': 1672,
                                               'research': 69,
                                               'wall': 7},
                       'ages': {   'castle': datetime.time(0, 16, 58),
                                   'feudal': datetime.time(0, 12, 49),
                                   'imperial': datetime.time(0, 36, 20)},
                       'apm': 92,
                       'build': [   {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 115.0, 'y': 85.0},
                                        'timestamp': datetime.time(0, 1, 47)},
                                    {   'building': 'Mill',
                                        'coordinates': {'x': 98.0, 'y': 85.0},
                                        'timestamp': datetime.time(0, 4, 3)},
                                    {   'building': 'Barracks',
                                        'coordinates': {'x': 94.5, 'y': 70.5},
                                        'timestamp': datetime.time(0, 6, 30)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 73.5},
                                        'timestamp': datetime.time(0, 7, 44)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 75.5},
                                        'timestamp': datetime.time(0, 8, 39)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 79.5},
                                        'timestamp': datetime.time(0, 8, 40)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 78.5},
                                        'timestamp': datetime.time(0, 8, 46)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 9, 27)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 104.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 9, 44)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 9, 46)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 108.0, 'y': 65.0},
                                        'timestamp': datetime.time(0, 10, 27)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 74.5},
                                        'timestamp': datetime.time(0, 11, 6)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 81.5},
                                        'timestamp': datetime.time(0, 11, 12)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 72.5},
                                        'timestamp': datetime.time(0, 11, 33)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 99.5, 'y': 67.5},
                                        'timestamp': datetime.time(0, 12, 53)},
                                    {   'building': 'Blacksmith',
                                        'coordinates': {'x': 100.5, 'y': 92.5},
                                        'timestamp': datetime.time(0, 13, 16)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 110.0, 'y': 93.0},
                                        'timestamp': datetime.time(0, 13, 53)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 101.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 15, 10)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 97.5, 'y': 63.5},
                                        'timestamp': datetime.time(0, 15, 51)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 73.5},
                                        'timestamp': datetime.time(0, 17, 7)},
                                    {   'building': 'Town Center',
                                        'coordinates': {'x': 110.0, 'y': 61.0},
                                        'timestamp': datetime.time(0, 17, 9)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 75.5},
                                        'timestamp': datetime.time(0, 17, 24)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 78.5},
                                        'timestamp': datetime.time(0, 17, 47)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 18, 24)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 104.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 19, 7)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 19, 12)},
                                    {   'building': 'Town Center',
                                        'coordinates': {'x': 112.0, 'y': 87.0},
                                        'timestamp': datetime.time(0, 20, 9)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 74.5},
                                        'timestamp': datetime.time(0, 21, 1)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 108.5, 'y': 90.5},
                                        'timestamp': datetime.time(0, 21, 23)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 108.5, 'y': 87.5},
                                        'timestamp': datetime.time(0, 21, 23)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 108.5, 'y': 84.5},
                                        'timestamp': datetime.time(0, 21, 24)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 111.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 21, 25)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 105.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 21, 33)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 72.5},
                                        'timestamp': datetime.time(0, 21, 49)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 72.5},
                                        'timestamp': datetime.time(0, 21, 49)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 72.5},
                                        'timestamp': datetime.time(0, 21, 49)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 93.5, 'y': 58.5},
                                        'timestamp': datetime.time(0, 22, 21)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 116.0, 'y': 87.0},
                                        'timestamp': datetime.time(0, 22, 41)},
                                    {   'building': 'University',
                                        'coordinates': {'x': 99.0, 'y': 55.0},
                                        'timestamp': datetime.time(0, 23, 15)},
                                    {   'building': 'Stable',
                                        'coordinates': {'x': 94.5, 'y': 53.5},
                                        'timestamp': datetime.time(0, 24, 18)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 89.5, 'y': 54.5},
                                        'timestamp': datetime.time(0, 25, 13)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 88.5, 'y': 58.5},
                                        'timestamp': datetime.time(0, 25, 14)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 102.0, 'y': 65.0},
                                        'timestamp': datetime.time(0, 25, 25)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 105.0, 'y': 99.0},
                                        'timestamp': datetime.time(0, 25, 33)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 106.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 26, 3)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 109.5, 'y': 57.5},
                                        'timestamp': datetime.time(0, 26, 5)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 75.5},
                                        'timestamp': datetime.time(0, 26, 8)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 75.5},
                                        'timestamp': datetime.time(0, 26, 8)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 73.5},
                                        'timestamp': datetime.time(0, 26, 9)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 101.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 26, 9)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 78.5},
                                        'timestamp': datetime.time(0, 26, 26)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 78.5},
                                        'timestamp': datetime.time(0, 26, 26)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 114.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 27, 36)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 114.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 27, 36)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 113.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 27, 37)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 113.5, 'y': 74.5},
                                        'timestamp': datetime.time(0, 27, 38)},
                                    {   'building': 'Mill',
                                        'coordinates': {'x': 116.0, 'y': 78.0},
                                        'timestamp': datetime.time(0, 27, 39)},
                                    {   'building': 'Town Center',
                                        'coordinates': {'x': 103.0, 'y': 45.0},
                                        'timestamp': datetime.time(0, 28, 23)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 111.5, 'y': 90.5},
                                        'timestamp': datetime.time(0, 29, 17)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 117.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 29, 18)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 48.5},
                                        'timestamp': datetime.time(0, 30, 4)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 48.5},
                                        'timestamp': datetime.time(0, 30, 4)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 100.5, 'y': 48.5},
                                        'timestamp': datetime.time(0, 30, 10)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 99.5, 'y': 45.5},
                                        'timestamp': datetime.time(0, 30, 11)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 99.5, 'y': 42.5},
                                        'timestamp': datetime.time(0, 30, 12)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 41.5},
                                        'timestamp': datetime.time(0, 30, 12)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 106.5, 'y': 41.5},
                                        'timestamp': datetime.time(0, 30, 13)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 117.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 30, 36)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 117.0, 'y': 89.0},
                                        'timestamp': datetime.time(0, 30, 41)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 31, 21)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 104.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 31, 22)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 31, 22)},
                                    {   'building': 'Monastery',
                                        'coordinates': {'x': 86.5, 'y': 43.5},
                                        'timestamp': datetime.time(0, 31, 30)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 115.5, 'y': 86.5},
                                        'timestamp': datetime.time(0, 31, 52)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 118.5, 'y': 86.5},
                                        'timestamp': datetime.time(0, 31, 53)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 85.5, 'y': 51.5},
                                        'timestamp': datetime.time(0, 32, 15)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 85.5, 'y': 47.5},
                                        'timestamp': datetime.time(0, 32, 15)},
                                    {   'building': 'Archery Range',
                                        'coordinates': {'x': 82.5, 'y': 43.5},
                                        'timestamp': datetime.time(0, 32, 19)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 114.0, 'y': 61.0},
                                        'timestamp': datetime.time(0, 32, 48)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 107.0, 'y': 35.0},
                                        'timestamp': datetime.time(0, 32, 51)},
                                    {   'building': 'Siege Workshop',
                                        'coordinates': {'x': 52.0, 'y': 67.0},
                                        'timestamp': datetime.time(0, 33, 28)},
                                    {   'building': 'Siege Workshop',
                                        'coordinates': {'x': 51.0, 'y': 61.0},
                                        'timestamp': datetime.time(0, 33, 28)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 111.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 33, 45)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 111.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 33, 45)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 111.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 33, 45)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 108.5, 'y': 90.5},
                                        'timestamp': datetime.time(0, 33, 47)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 108.5, 'y': 87.5},
                                        'timestamp': datetime.time(0, 33, 47)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 103.5, 'y': 74.5},
                                        'timestamp': datetime.time(0, 34, 34)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 72.5},
                                        'timestamp': datetime.time(0, 34, 34)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 108.5, 'y': 84.5},
                                        'timestamp': datetime.time(0, 34, 36)},
                                    {   'building': 'Siege Workshop',
                                        'coordinates': {'x': 51.0, 'y': 61.0},
                                        'timestamp': datetime.time(0, 35, 7)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 114.0, 'y': 99.0},
                                        'timestamp': datetime.time(0, 35, 22)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 84.0, 'y': 69.0},
                                        'timestamp': datetime.time(0, 36, 1)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 113.0, 'y': 70.0},
                                        'timestamp': datetime.time(0, 36, 8)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 105.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 36, 19)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 105.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 36, 19)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 116.0, 'y': 94.0},
                                        'timestamp': datetime.time(0, 37, 32)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 114.5, 'y': 90.5},
                                        'timestamp': datetime.time(0, 37, 33)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 78.5},
                                        'timestamp': datetime.time(0, 37, 34)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 78.5},
                                        'timestamp': datetime.time(0, 37, 34)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 78.5},
                                        'timestamp': datetime.time(0, 37, 34)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 110.5, 'y': 75.5},
                                        'timestamp': datetime.time(0, 37, 34)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 107.5, 'y': 73.5},
                                        'timestamp': datetime.time(0, 37, 35)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 106.5, 'y': 62.5},
                                        'timestamp': datetime.time(0, 38, 34)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 109.5, 'y': 57.5},
                                        'timestamp': datetime.time(0, 38, 34)},
                                    {   'building': 'Mining Camp',
                                        'coordinates': {'x': 39.0, 'y': 38.0},
                                        'timestamp': datetime.time(0, 38, 37)},
                                    {   'building': 'Lumber Camp',
                                        'coordinates': {'x': 92.0, 'y': 83.0},
                                        'timestamp': datetime.time(0, 39, 9)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 101.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 39, 9)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 114.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 39, 19)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 114.5, 'y': 83.5},
                                        'timestamp': datetime.time(0, 39, 19)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 114.5, 'y': 80.5},
                                        'timestamp': datetime.time(0, 39, 20)},
                                    {   'building': 'Farm',
                                        'coordinates': {'x': 113.5, 'y': 77.5},
                                        'timestamp': datetime.time(0, 39, 21)},
                                    {   'building': 'Castle',
                                        'coordinates': {'x': 43.0, 'y': 80.0},
                                        'timestamp': datetime.time(0, 39, 30)}],
                       'civilization': 'Huns',
                       'color': 'yellow',
                       'coordinates': {'x': 107.0, 'y': 77.0},
                       'index': 2,
                       'mvp': False,
                       'name': 'TheViper',
                       'number': 4,
                       'position': 'northeast',
                       'research': [   {   'technology': 'Loom',
                                           'timestamp': datetime.time(0, 9, 20)},
                                       {   'technology': 'Loom',
                                           'timestamp': datetime.time(0, 9, 20)},
                                       {   'technology': 'Feudal Age',
                                           'timestamp': datetime.time(0, 10, 39)},
                                       {   'technology': 'Feudal Age',
                                           'timestamp': datetime.time(0, 10, 39)},
                                       {   'technology': 'Castle Age',
                                           'timestamp': datetime.time(0, 14, 18)},
                                       {   'technology': 'Castle Age',
                                           'timestamp': datetime.time(0, 14, 18)},
                                       {   'technology': 'Double-Bit Axe',
                                           'timestamp': datetime.time(0, 15, 5)},
                                       {   'technology': 'Fletching',
                                           'timestamp': datetime.time(0, 15, 20)},
                                       {   'technology': 'Fletching',
                                           'timestamp': datetime.time(0, 15, 21)},
                                       {   'technology': 'Crossbowman',
                                           'timestamp': datetime.time(0, 17, 1)},
                                       {   'technology': 'Crossbowman',
                                           'timestamp': datetime.time(0, 17, 1)},
                                       {   'technology': 'Crossbowman',
                                           'timestamp': datetime.time(0, 17, 2)},
                                       {   'technology': 'Bodkin Arrow',
                                           'timestamp': datetime.time(0, 17, 2)},
                                       {   'technology': 'Bodkin Arrow',
                                           'timestamp': datetime.time(0, 17, 3)},
                                       {   'technology': 'Bodkin Arrow',
                                           'timestamp': datetime.time(0, 17, 3)},
                                       {   'technology': 'Horse Collar',
                                           'timestamp': datetime.time(0, 18, 31)},
                                       {   'technology': 'Bow Saw',
                                           'timestamp': datetime.time(0, 21, 38)},
                                       {   'technology': 'Bow Saw',
                                           'timestamp': datetime.time(0, 21, 38)},
                                       {   'technology': 'Bow Saw',
                                           'timestamp': datetime.time(0, 21, 39)},
                                       {   'technology': 'Bow Saw',
                                           'timestamp': datetime.time(0, 21, 39)},
                                       {   'technology': 'Wheelbarrow',
                                           'timestamp': datetime.time(0, 23, 49)},
                                       {   'technology': 'Wheelbarrow',
                                           'timestamp': datetime.time(0, 23, 49)},
                                       {   'technology': 'Wheelbarrow',
                                           'timestamp': datetime.time(0, 23, 50)},
                                       {   'technology': 'Wheelbarrow',
                                           'timestamp': datetime.time(0, 23, 50)},
                                       {   'technology': 'Ballistics',
                                           'timestamp': datetime.time(0, 25, 46)},
                                       {   'technology': 'Ballistics',
                                           'timestamp': datetime.time(0, 25, 46)},
                                       {   'technology': 'Ballistics',
                                           'timestamp': datetime.time(0, 25, 46)},
                                       {   'technology': 'Padded Archer Armor',
                                           'timestamp': datetime.time(0, 26, 30)},
                                       {   'technology': 'Padded Archer Armor',
                                           'timestamp': datetime.time(0, 26, 30)},
                                       {   'technology': 'Padded Archer Armor',
                                           'timestamp': datetime.time(0, 26, 30)},
                                       {   'technology': 'Bloodlines',
                                           'timestamp': datetime.time(0, 29, 3)},
                                       {   'technology': 'Bloodlines',
                                           'timestamp': datetime.time(0, 29, 3)},
                                       {   'technology': 'Gold Mining',
                                           'timestamp': datetime.time(0, 29, 29)},
                                       {   'technology': 'Gold Mining',
                                           'timestamp': datetime.time(0, 29, 29)},
                                       {   'technology': 'Leather Archer Armor',
                                           'timestamp': datetime.time(0, 30, 54)},
                                       {   'technology': 'Leather Archer Armor',
                                           'timestamp': datetime.time(0, 30, 54)},
                                       {   'technology': 'Imperial Age',
                                           'timestamp': datetime.time(0, 33, 9)},
                                       {   'technology': 'Thumb Ring',
                                           'timestamp': datetime.time(0, 33, 10)},
                                       {   'technology': 'Thumb Ring',
                                           'timestamp': datetime.time(0, 33, 32)},
                                       {   'technology': 'Thumb Ring',
                                           'timestamp': datetime.time(0, 33, 32)},
                                       {   'technology': 'Thumb Ring',
                                           'timestamp': datetime.time(0, 33, 33)},
                                       {   'technology': 'Hand Cart',
                                           'timestamp': datetime.time(0, 34, 5)},
                                       {   'technology': 'Hand Cart',
                                           'timestamp': datetime.time(0, 34, 5)},
                                       {   'technology': 'Hand Cart',
                                           'timestamp': datetime.time(0, 34, 6)},
                                       {   'technology': 'Hand Cart',
                                           'timestamp': datetime.time(0, 34, 6)},
                                       {   'technology': 'Husbandry',
                                           'timestamp': datetime.time(0, 34, 39)},
                                       {   'technology': 'Husbandry',
                                           'timestamp': datetime.time(0, 34, 39)},
                                       {   'technology': 'Gold Shaft Mining',
                                           'timestamp': datetime.time(0, 34, 58)},
                                       {   'technology': 'Gold Shaft Mining',
                                           'timestamp': datetime.time(0, 34, 59)},
                                       {   'technology': 'Gold Shaft Mining',
                                           'timestamp': datetime.time(0, 34, 59)},
                                       {   'technology': 'Bracer',
                                           'timestamp': datetime.time(0, 36, 22)},
                                       {   'technology': 'Bracer',
                                           'timestamp': datetime.time(0, 36, 22)},
                                       {   'technology': 'Two-Man Saw',
                                           'timestamp': datetime.time(0, 36, 22)},
                                       {   'technology': 'Two-Man Saw',
                                           'timestamp': datetime.time(0, 36, 23)},
                                       {   'technology': 'Two-Man Saw',
                                           'timestamp': datetime.time(0, 36, 23)},
                                       {   'technology': 'Parthian Tactics',
                                           'timestamp': datetime.time(0, 36, 25)},
                                       {   'technology': 'Parthian Tactics',
                                           'timestamp': datetime.time(0, 36, 25)},
                                       {   'technology': 'Parthian Tactics',
                                           'timestamp': datetime.time(0, 36, 25)},
                                       {   'technology': 'Parthian Tactics',
                                           'timestamp': datetime.time(0, 36, 25)},
                                       {   'technology': 'Capped Ram',
                                           'timestamp': datetime.time(0, 36, 41)},
                                       {   'technology': 'Capped Ram',
                                           'timestamp': datetime.time(0, 36, 41)},
                                       {   'technology': 'Capped Ram',
                                           'timestamp': datetime.time(0, 36, 41)},
                                       {   'technology': 'Capped Ram',
                                           'timestamp': datetime.time(0, 36, 41)},
                                       {   'technology': 'Heavy Plow',
                                           'timestamp': datetime.time(0, 37, 36)},
                                       {   'technology': 'Heavy Plow',
                                           'timestamp': datetime.time(0, 37, 37)},
                                       {   'technology': 'Heavy Cav Archer',
                                           'timestamp': datetime.time(0, 38, 13)},
                                       {   'technology': 'Heavy Cav Archer',
                                           'timestamp': datetime.time(0, 38, 13)},
                                       {   'technology': 'Chemistry',
                                           'timestamp': datetime.time(0, 39, 1)},
                                       {   'technology': 'Chemistry',
                                           'timestamp': datetime.time(0, 39, 2)}],
                       'score': 8585,
                       'voobly': {   'nation': None,
                                     'rating_current': None,
                                     'rating_game': 2407,
                                     'uid': None},
                       'winner': True}],
    'queue': [   {'timestamp': datetime.time(0, 0, 2), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 2), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 4), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 4), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 4), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 8), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 8), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 8), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 10), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 10), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 10), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 10), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 0, 10), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 1, 24), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 1, 25), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 1, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 1, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 1, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 1, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 1, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 2), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 16), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 18), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 2, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 3, 9), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 3, 18), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 3, 19), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 3, 41), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 3, 41), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 3, 47), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 3, 47), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 36), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 36), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 36), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 4, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 8), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 29), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 29), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 29), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 45), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 45), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 46), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 46), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 5, 47), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 5), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 9), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 10), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 33), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 33), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 57), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 6, 59), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 7, 18), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 7, 19), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 7, 19), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 7, 30), 'unit': 'Militia'},
                 {'timestamp': datetime.time(0, 7, 31), 'unit': 'Militia'},
                 {'timestamp': datetime.time(0, 7, 41), 'unit': 'Militia'},
                 {'timestamp': datetime.time(0, 7, 44), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 8, 3), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 8, 6), 'unit': 'Militia'},
                 {'timestamp': datetime.time(0, 8, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 8, 38), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 9, 48), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 10, 3), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 10, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 10, 32), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 10, 39), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 10, 55), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 11, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 11, 57), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 11, 57), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 12, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 12, 52), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 12, 54), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 13, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 13, 29), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 13, 39), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 14, 20), 'unit': 'Archer'},
                 {'timestamp': datetime.time(0, 14, 28), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 15, 17), 'unit': 'Archer'},
                 {'timestamp': datetime.time(0, 15, 31), 'unit': 'Archer'},
                 {'timestamp': datetime.time(0, 15, 53), 'unit': 'Archer'},
                 {'timestamp': datetime.time(0, 16, 20), 'unit': 'Archer'},
                 {'timestamp': datetime.time(0, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 17, 18), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 17, 29),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 17, 39), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 17, 57),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 17, 58),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 18, 9),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 18, 25),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 18, 25),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 18, 26),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 18, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 18, 27), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 18, 38),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 18, 41), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 18, 44), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 18, 47),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 18, 47),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 18, 53), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 18, 53), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 18, 54), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 19, 2),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 19, 3),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 19, 11), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 19, 14),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 19, 18), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 19, 32), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 19, 37), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 19, 43),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 19, 44),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 19, 44),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 19, 52), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 5), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 19), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 31), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 31), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 20, 33),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 20, 34), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 20, 34),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 20, 46),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 20, 51),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 20, 52),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 20, 55), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 56), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 20, 59), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 21), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 21, 9), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 21, 9),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 21, 10),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 21, 24),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 21, 34), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 21, 40),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 21, 40),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 21, 41),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 21, 42),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 21, 58), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 21, 58), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 21, 58), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 22), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 22, 12),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 22, 12),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 22, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 22, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 22, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 22, 19), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 22, 20),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 22, 21),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 22, 21),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 22, 33),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 22, 33),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 22, 34),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 22, 35), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 22, 36), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 22, 36), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 22, 47), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 22, 55),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 22, 55),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 23), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 23, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 23, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 23, 1), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 23, 10),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 23, 12), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 23, 13), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 23, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 23, 16), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 23, 20),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 23, 25),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 23, 25),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 23, 37),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 23, 37),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 23, 37),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 23, 43), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 23, 43), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 23, 58),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 23, 59), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 23, 59),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 24), 'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 8),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 9),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 9),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 24, 14), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 24, 14), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 24, 19), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 24, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 24, 42), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 24, 43), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 24, 45), 'unit': 'Archer'},
                 {   'timestamp': datetime.time(0, 24, 47),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 48),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 50),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 24, 53), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 24, 54), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 24, 54),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 55),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 55),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 24, 56),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 25, 3), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 5), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 5), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 6), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 8), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 22), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 22), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 22), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 25, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 25, 29),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 25, 31),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 25, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 35), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 36), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 38), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 25, 48),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 25, 48),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 25, 48),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 25, 54), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 25, 55), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 26, 2), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 26, 8), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 26, 9), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 26, 14), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 26, 15),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 26, 16), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 26, 16),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 26, 16),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 26, 17), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 26, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 26, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 26, 29),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 26, 38), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 26, 39), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 26, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 26, 51), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 26, 55),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 26, 56),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 26, 56),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 2), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 27, 4),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 4),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 4),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 27, 14), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 16), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 27), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 27, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 33),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 27, 34), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 27, 43),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 44),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 44),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 45),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 45),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 50),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 27, 50),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 27, 50), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 52), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 27, 53), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 11), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 12), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 16), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 28, 21),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 21),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 21),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 25),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 28, 28), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 29), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 30), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 28, 31), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 28, 45),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 45),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 46),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 46),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 46),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 51),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 52),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 28, 52),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 4),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 4),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 4), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 29, 4),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 5),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 5),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 5), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 29, 5),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 6), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 29, 12),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 13),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 13), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 29, 14),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 14), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 29, 14),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 14), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 16), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 18), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 19), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 26), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 29, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 33),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 35), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 37), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 41), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 41), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 42), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 29, 43),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 29, 43),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 29, 56), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 58), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 58), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 29, 58), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 9), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 30, 13),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 13),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 15),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 18),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 19),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 19),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 20),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 20),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 30, 24), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 25), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 33), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 33), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 34), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 30, 35),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 35),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 36),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 49),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 49),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 30, 50), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 30, 50),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 30, 50),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 30, 51), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 30, 51),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 30, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 30, 58), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 30, 59),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 30, 59), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 4), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 12), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 18), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 21), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 21), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 27), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 28), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 31, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 30),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 30),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 34),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 34),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 34),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 34),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 35),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 35),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 31, 45), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 46), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 47), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 47), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 48), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 31, 48), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 31, 58),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 31, 58),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 32, 1), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 32, 1), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 32, 8),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 8),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 10),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 32, 13), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 32, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 32, 15), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 32, 21), 'unit': 'Monk'},
                 {   'timestamp': datetime.time(0, 32, 29),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 30),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 31),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 43),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 44),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 53),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 54),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 32, 54),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 33, 6),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 33, 17), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 33, 18), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 33, 18), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 33, 21),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 33, 22),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 33, 22),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 33, 22),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 33, 22),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 33, 23),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 33, 33), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 33, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 33, 34), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 33, 36), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 33, 38), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 34, 7),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 7),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 7),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 7),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 7),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 8),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 8),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 8),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 30),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 30),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 31),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 31),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 32),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 32),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 34, 37), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 34, 38),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 34, 38), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 34, 38),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 48),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 34, 49), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 34, 49),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 49),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 50),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 50),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 51),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 34, 51),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 34, 53), 'unit': 'Monk'},
                 {'timestamp': datetime.time(0, 35, 13), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 35, 14), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 35, 14), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 35, 19), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 35, 20), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 35, 27),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 28),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 29),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 29),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 29),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 29),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 30),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 35, 37), 'unit': 'Monk'},
                 {'timestamp': datetime.time(0, 35, 39), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 35, 42), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 35, 53),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 54),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 54),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 54),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 55),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 55),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 55),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 35, 55),
                     'unit': 'Battering Ram'},
                 {   'timestamp': datetime.time(0, 35, 57),
                     'unit': 'Battering Ram'},
                 {'timestamp': datetime.time(0, 36, 2), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 36, 2), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 36, 7), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 36, 36),
                     'unit': 'Battering Ram'},
                 {'timestamp': datetime.time(0, 36, 37), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 36, 48),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 36, 49),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 36, 49),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 36, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 36, 51), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 36, 52), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 37, 11),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 37, 11),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 37, 11),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 37, 12),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 37, 13),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 37, 14),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 37, 14),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 37, 15),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 37, 25), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 37, 26), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 37, 39), 'unit': 'Monk'},
                 {   'timestamp': datetime.time(0, 38, 1),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 1),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 1),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 2),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 2),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 2),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 3),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 14),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 14),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 15),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 15),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 15),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 15),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 15),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 16),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 21),
                     'unit': 'Battering Ram'},
                 {   'timestamp': datetime.time(0, 38, 21),
                     'unit': 'Battering Ram'},
                 {   'timestamp': datetime.time(0, 38, 22),
                     'unit': 'Battering Ram'},
                 {   'timestamp': datetime.time(0, 38, 22),
                     'unit': 'Battering Ram'},
                 {'timestamp': datetime.time(0, 38, 32), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 38, 33), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 38, 47),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 47),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 47),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 47),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 48),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 38, 48),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 38, 56), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 38, 56), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 39), 'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 39), 'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 2),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 3),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 3),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 3),
                     'unit': 'Cavalry Archer'},
                 {'timestamp': datetime.time(0, 39, 10), 'unit': 'Villager'},
                 {'timestamp': datetime.time(0, 39, 12), 'unit': 'Villager'},
                 {   'timestamp': datetime.time(0, 39, 12),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 13),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 13),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 18),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 18),
                     'unit': 'Scout Cavalry'},
                 {   'timestamp': datetime.time(0, 39, 18),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 18),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 18),
                     'unit': 'Scout Cavalry'},
                 {   'timestamp': datetime.time(0, 39, 18),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 18),
                     'unit': 'Cavalry Archer'},
                 {   'timestamp': datetime.time(0, 39, 20),
                     'unit': 'Scout Cavalry'},
                 {   'timestamp': datetime.time(0, 39, 21),
                     'unit': 'Scout Cavalry'},
                 {   'timestamp': datetime.time(0, 39, 22),
                     'unit': 'Scout Cavalry'},
                 {   'timestamp': datetime.time(0, 39, 28),
                     'unit': 'Cavalry Archer'}],
    'rec_owner_index': '2',
    'rec_owner_number': '4',
    'restore': {   'restored': 'False',
                   'start_int': '0',
                   'start_time': '00:00:00'},
    'settings': {   'all_technologies': 'False',
                    'cheats': 'False',
                    'difficulty': 'easy',
                    'lock_speed': 'True',
                    'lock_teams': 'True',
                    'population_limit': '200',
                    'record_game': 'True',
                    'resource_level': 'standard',
                    'reveal_map': 'normal',
                    'speed': 'standard',
                    'starting_age': 'Dark',
                    'team_together': 'True',
                    'type': 'RM',
                    'victory_condition': 'conquest'},
    'time_int': '2371950',
    'voobly': {'ladder': 'RM - 1v1', 'rated': True},
    'won_in': 'Imperial'}