import json
from datetime import timedelta

from flask import Blueprint, render_template, Response, request
from sqlalchemy import select, and_, asc, desc, func
from sqlalchemy import text
import datetime

from app import config

armada = Blueprint(
    'armada',
    __name__,
)


@armada.route('/', methods=['GET'])
def landing():
    #prep_upgrades()
    return render_template(
        'wip.html',
    )
    return render_template(
        'armada/base.html',
    )


def prep_systems():
    systems = [
        {
            'name': 'Aurea',
            'resource_bonus': 9,
            'vp_value': 1,
            'strategic_effect': 'Diplomats',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Centerpoint',
            'resource_bonus': 5,
            'vp_value': 0,
            'strategic_effect': 'Spynet',
            'objective_1_id': 30,
            'objective_2_id': 33,
            'objective_3_id': 34,
            'objective_4_id': 34,
            'special_assault': 25,
        },
        {
            'name': 'Corellia',
            'resource_bonus': 20,
            'vp_value': 2,
            'strategic_effect': 'Repair Yards',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Corfai',
            'resource_bonus': 19,
            'vp_value': 2,
            'strategic_effect': 'None',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Crash\'s Drift',
            'resource_bonus': 13,
            'vp_value': 1,
            'strategic_effect': 'Skilled Spacers',
            'objective_1_id': 32,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 33,
            'special_assault': 34,
        },
        {
            'name': 'Drall',
            'resource_bonus': 9,
            'vp_value': 1,
            'strategic_effect': 'Diplomats',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Duro',
            'resource_bonus': 17,
            'vp_value': 2,
            'strategic_effect': 'Skilled Spacers',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Forvand',
            'resource_bonus': 2,
            'vp_value': 0,
            'strategic_effect': 'Spynet',
            'objective_1_id': 32,
            'objective_2_id': 30,
            'objective_3_id': 34,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Froz',
            'resource_bonus': 0,
            'vp_value': 1,
            'strategic_effect': 'Diplomats',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 26,
        },
        {
            'name': 'New Plympto',
            'resource_bonus': 9,
            'vp_value': 0,
            'strategic_effect': 'None',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Nubia',
            'resource_bonus': 16,
            'vp_value': 2,
            'strategic_effect': 'Repair Yards',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Phemis',
            'resource_bonus': 2,
            'vp_value': 0,
            'strategic_effect': 'None',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 26,
        },
        {
            'name': 'Plympto',
            'resource_bonus': 1,
            'vp_value': 0,
            'strategic_effect': 'Skilled Spacers',
            'objective_1_id': 31,
            'objective_2_id': 30,
            'objective_3_id': 32,
            'objective_4_id': 34,
            'special_assault': 25,
        },
        {
            'name': 'Polanis',
            'resource_bonus': 15,
            'vp_value': 1,
            'strategic_effect': 'None',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Raider\'s Point',
            'resource_bonus': 4,
            'vp_value': 0,
            'strategic_effect': 'Spynet',
            'objective_1_id': 32,
            'objective_2_id': 34,
            'objective_3_id': 34,
            'objective_4_id': 34,
            'special_assault': 25,
        },
        {
            'name': 'Saberhing',
            'resource_bonus': 16,
            'vp_value': 2,
            'strategic_effect': 'Repair Yards',
            'objective_1_id': 31,
            'objective_2_id': 34,
            'objective_3_id': 34,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Sacorria',
            'resource_bonus': 10,
            'vp_value': 1,
            'strategic_effect': 'None',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 26,
        },
        {
            'name': 'Selonia',
            'resource_bonus': 12,
            'vp_value': 1,
            'strategic_effect': 'Repair Yards',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 34,
        },
        {
            'name': 'Sileria',
            'resource_bonus': 7,
            'vp_value': 0,
            'strategic_effect': 'Skilled Spacers',
            'objective_1_id': 31,
            'objective_2_id': 34,
            'objective_3_id': 34,
            'objective_4_id': 34,
            'special_assault': 26,
        },
        {
            'name': 'Talfaglio',
            'resource_bonus': 6,
            'vp_value': 0,
            'strategic_effect': 'None',
            'objective_1_id': 31,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 26,
        },
        {
            'name': 'Talus',
            'resource_bonus': 8,
            'vp_value': 1,
            'strategic_effect': 'Skilled Spacers',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 25,
        },
        {
            'name': 'Tralus',
            'resource_bonus': 8,
            'vp_value': 1,
            'strategic_effect': 'Skilled Spacers',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 25,
        },
        {
            'name': 'Truuzdann',
            'resource_bonus': 8,
            'vp_value': 0,
            'strategic_effect': 'None',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 25,
        },
        {
            'name': 'Vagran',
            'resource_bonus': 8,
            'vp_value': 1,
            'strategic_effect': 'Repair Yards',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 26,
        },
        {
            'name': 'Xyquine II',
            'resource_bonus': 11,
            'vp_value': 1,
            'strategic_effect': 'Repair Yards',
            'objective_1_id': 33,
            'objective_2_id': 33,
            'objective_3_id': 33,
            'objective_4_id': 34,
            'special_assault': 26,
        },
    ]

    config.A_SYSTEM_TABLE.insert(systems).execute()


def prep_ships():
    # TITLE
    # OFFICER
    # OFFICER2
    # DEFENSIVE 1
    # DEFENSIVE 2
    # FLEET COMMAND
    # FLEET SUPPORT
    # ION CANNONS
    # OFFENSIVE RETROFIT 1
    # OFFENSIVE RETROFIT 2
    # ORDNANCE
    # ORDNANCE 2
    # SUPPORT TEAM
    # TURBOLASER 1
    # TURBOLASER 2
    # WEAPONS TEAM 1
    # WEAPONS TEAM 2
    # EXPERIMENTAL 1
    # EXPERIMENTAL 2

    ships = [
        {
            'name': 'Assault Frigate Mark II A',
            'cost': 81,
            'upgrades': '00-0----0----0-0---',
            'faction': 0,
        },
        {
            'name': 'Assault Frigate Mark II B',
            'cost': 72,
            'upgrades': '00-0----0----0-0---',
            'faction': 0,
        },
        {
            'name': 'CR90 Corvette A',
            'cost': 44,
            'upgrades': '00-0--------00-----',
            'faction': 0,
        },
        {
            'name': 'CR90 Corvette B',
            'cost': 39,
            'upgrades': '00-0---0----0------',
            'faction': 0,
        },
        {
            'name': 'GR-75 Combat Retrofits',
            'cost': 24,
            'upgrades': '00----0-0----------',
            'faction': 0,
        },
        {
            'name': 'GR-75 Medium Transports',
            'cost': 18,
            'upgrades': '00----0-0----------',
            'faction': 0,
        },
        {
            'name': 'Hammerhead Scout Corvette',
            'cost': 41,
            'upgrades': '00------0----0-0---',
            'faction': 0,
        },
        {
            'name': 'Hammerhead Torpedo Corvette',
            'cost': 36,
            'upgrades': '00------0-0----0---',
            'faction': 0,
        },
        {
            'name': 'MC30c Scout Frigate',
            'cost': 69,
            'upgrades': '00-0------0--0-0---',
            'faction': 0,
        },
        {
            'name': 'MC30c Torpedo Frigate',
            'cost': 63,
            'upgrades': '00-0------0--0-0---',
            'faction': 0,
        },
        {
            'name': 'MC75 Armored Cruiser',
            'cost': 104,
            'upgrades': '00-0---00-0--0-0---',
            'faction': 0,
        },
        {
            'name': 'MC75 Ordnance Cruiser',
            'cost': 100,
            'upgrades': '00-0----0-00---0---',
            'faction': 0,
        },
        {
            'name': 'MC80 Assault Cruiser',
            'cost': 114,
            'upgrades': '00-00--0----00-----',
            'faction': 0,
        },
        {
            'name': 'MC80 Battle Cruiser',
            'cost': 103,
            'upgrades': '00-----0----0000---',
            'faction': 0,
        },
        {
            'name': 'MC80 Command Cruiser',
            'cost': 106,
            'upgrades': '00-0---00---00-----',
            'faction': 0,
        },
        {
            'name': 'MC80 Star Cruiser',
            'cost': 96,
            'upgrades': '00-----0----0000---',
            'faction': 0,
        },
        {
            'name': 'Modified Pelta-class Assault Ship',
            'cost': 56,
            'upgrades': '00---0----0-0------',
            'faction': 0,
        },
        {
            'name': 'Modified Pelta-class Command Ship',
            'cost': 60,
            'upgrades': '00---0--0---0------',
            'faction': 0,
        },
        {
            'name': 'Nebulon-B Escort Frigate',
            'cost': 57,
            'upgrades': '00----------00-----',
            'faction': 0,
        },
        {
            'name': 'Nebulon-B Support Frigate',
            'cost': 51,
            'upgrades': '00----------00-----',
            'faction': 0,
        },
        {
            'name': 'Arquitens-class Command Cruiser',
            'cost': 59,
            'upgrades': '00-0--------00-----',
            'faction': 1,
        },
        {
            'name': 'Arquitens-class Light Cruiser',
            'cost': 54,
            'upgrades': '00-0---------0-----',
            'faction': 1,
        },
        {
            'name': 'Gladiator I-class Star Destroyer',
            'cost': 56,
            'upgrades': '00--------0-00-0---',
            'faction': 1,
        },
        {
            'name': 'Gladiator II-class Star Destroyer',
            'cost': 62,
            'upgrades': '00--------0-0--0---',
            'faction': 1,
        },
        {
            'name': 'Gozanti-class Assault Carriers',
            'cost': 28,
            'upgrades': '00----0-0----------',
            'faction': 1,
        },
        {
            'name': 'Gozanti-class Cruisers',
            'cost': 23,
            'upgrades': '00----0-0----------',
            'faction': 1,
        },
        {
            'name': 'Imperial I-class Star Destroyer',
            'cost': 110,
            'upgrades': '00-----000---0-0---',
            'faction': 1,
        },
        {
            'name': 'Imperial II-class Star Destroyer',
            'cost': 120,
            'upgrades': '00-0---00----0-0---',
            'faction': 1,
        },
        {
            'name': 'Imperial Star Destroyer Cymoon 1 Refit',
            'cost': 112,
            'upgrades': '00---0--0----000---',
            'faction': 1,
        },
        {
            'name': 'Imperial Star Destroyer Kuat Refit',
            'cost': 112,
            'upgrades': '00-0---00-0----0---',
            'faction': 1,
        },
        {
            'name': 'Interdictor-class Combat Refit',
            'cost': 93,
            'upgrades': '00-----00---0----0-',
            'faction': 1,
        },
        {
            'name': 'Interdictor-class Suppression Refit',
            'cost': 90,
            'upgrades': '00-----00---0----00',
            'faction': 1,
        },
        {
            'name': 'Quasar Fire I-class Cruiser-Carrier',
            'cost': 54,
            'upgrades': '00------0------0---',
            'faction': 1,
        },
        {
            'name': 'Quasar Fire II-class Cruiser-Carrier',
            'cost': 61,
            'upgrades': '00------0------00--',
            'faction': 1,
        },
        {
            'name': 'Raider I-class Corvette',
            'cost': 44,
            'upgrades': '00------0-0----0---',
            'faction': 1,
        },
        {
            'name': 'Raider II-class Corvette',
            'cost': 48,
            'upgrades': '00-----00------0---',
            'faction': 1,
        },
        {
            'name': 'Victory I-class Star Destroyer',
            'cost': 73,
            'upgrades': '00------0-0--0-0---',
            'faction': 1,
        },
        {
            'name': 'Victory II-class Star Destroyer',
            'cost': 85,
            'upgrades': '00-----00----0-0---',
            'faction': 1,
        },
    ]

    for ship in ships:
        if len(ship['upgrades']) != 19:
            print(ship)

    config.A_SHIP_TABLE.insert(ships).execute()


def prep_squadrons():
    squadrons = [
        {
            'name': 'A-Wing Squadron',
            'cost': 11,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'A-Wing (Green Squadron)',
            'cost': 12,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'A-Wing (Shara Bey)',
            'cost': 17,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'A-Wing (Tycho Celchu)',
            'cost': 16,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'B-Wing Squadron',
            'cost': 14,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'B-Wing (Dagger Squadron)',
            'cost': 15,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'B-Wing (Keyan Farlander)',
            'cost': 20,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'B-Wing (Ten Numb)',
            'cost': 19,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'E-Wing Squadron',
            'cost': 15,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'E-Wing (Corran Horn)',
            'cost': 22,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'HWK-290',
            'cost': 12,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'HWK-290 (Jan Ors)',
            'cost': 19,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'Lancer-class Pursuit Craft',
            'cost': 15,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'Lancer-class Pursuit Craft (Ketsu Onyo)',
            'cost': 22,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'Scurrg H-6 Bomber',
            'cost': 16,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'Scurrg H-6 Bomber (Nym)',
            'cost': 21,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'VCX-100 Freighter',
            'cost': 15,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'VCX-100 Freighter (Hera Syndulia)',
            'cost': 28,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'X-Wing Squadron',
            'cost': 13,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'X-Wing (Biggs Darklighter)',
            'cost': 19,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'X-Wing (Luke Skywalker)',
            'cost': 20,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'X-Wing (Rogue Squadron)',
            'cost': 14,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'X-Wing (Wedge Antilles)',
            'cost': 19,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'Y-Wing Squadron',
            'cost': 10,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'Y-Wing ("Dutch" Vander)',
            'cost': 16,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'Y-Wing (Gold Squadron)',
            'cost': 12,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'Y-Wing (Norra Wexley)',
            'cost': 17,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'YT-1300',
            'cost': 13,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'YT-1300 (Han Solo)',
            'cost': 26,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'YT-2400',
            'cost': 16,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'YT-2400 (Dash Rendar)',
            'cost': 24,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'Z-95 Headhunter Squadron',
            'cost': 7,
            'unique': 0,
            'faction': 0,
        },
        {
            'name': 'Z-95 Headhunter (Lieutenant Blount)',
            'cost': 14,
            'unique': 1,
            'faction': 0,
        },
        {
            'name': 'Aggressor Assault Fighter',
            'cost': 16,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'IG-2000 (IG-88)',
            'cost': 21,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'Firespray-31',
            'cost': 18,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'Firespray-31 (Bobba Fett)',
            'cost': 26,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'Jumpmaster 5000',
            'cost': 12,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'Punishing One (Dengar)',
            'cost': 20,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'Lambda-class Shuttle',
            'cost': 15,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'Lambda-class Shuttle (Colonel Jendon)',
            'cost': 20,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'Mandalorian Gauntlet Fighter',
            'cost': 20,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'Mandalorian Gauntlet Fighter (Gar Saxon)',
            'cost': 23,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Advanced Squadron',
            'cost': 12,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'TIE Advanced Squadron (Darth Vader)',
            'cost': 21,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Advanced Squadron (Tempest Squadron)',
            'cost': 13,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Advanced Squadron (Zertik Strom)',
            'cost': 15,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Bomber Squadron',
            'cost': 9,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'TIE Bomber (Captain Jonus)',
            'cost': 16,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Bomber (Gamma Squadron)',
            'cost': 10,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Bomber (Major Rhymer)',
            'cost': 16,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Defender Squadron',
            'cost': 16,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'TIE Defender (Maarek Stele)',
            'cost': 21,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Fighter Squadron',
            'cost': 8,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'TIE Fighter ("Howlrunner")',
            'cost': 16,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Fighter ("Mauler" Mithel)',
            'cost': 15,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Fighter ("Black Squadron")',
            'cost': 9,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Fighter (Valen Ruddr)',
            'cost': 13,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Interceptor Squadron',
            'cost': 11,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'TIE Interceptor (Ciena Ree)',
            'cost': 17,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Interceptor (Saber Squadron)',
            'cost': 12,
            'unique': 2,
            'faction': 1,
        },
        {
            'name': 'TIE Interceptor (Soontir Fel)',
            'cost': 18,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'TIE Phantom Squadron',
            'cost': 14,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'TIE Phantom ("Whisper")',
            'cost': 20,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'VT-49 Decimator',
            'cost': 22,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'VT-49 (Morna Kee)',
            'cost': 27,
            'unique': 1,
            'faction': 1,
        },
        {
            'name': 'YV-666',
            'cost': 15,
            'unique': 0,
            'faction': 1,
        },
        {
            'name': 'YV-666 (Bossk)',
            'cost': 23,
            'unique': 1,
            'faction': 1,
        },
    ]

    for squadron in squadrons:
        if squadron['cost'] == 0:
            print(squadron)
            return

    config.A_SQUADRON_TABLE.insert(squadrons).execute()


def prep_upgrades():
    upgrades = [
        {
            'name': 'Admiral Ackbar',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 38,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admiral Raddus',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 26,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Commander Sato',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 32,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Garm Bel Iblis',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 25,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'General Cracken',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 26,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'General Doodnna',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 20,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'General Madine',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 30,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'General Rieekan',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 30,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Leia Organa',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 38,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Mon Mothma',
            'slot': '-1',
            'faction': 0,
            'modification': 0,
            'cost': 30,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Adar Tallon',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 10,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Ahsoka Tano',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Bail Organa',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'General Draven',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Lando Calrissian',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Leia Organa',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Major Derlin',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Ramus Antilles',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Toryn Farr',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Walex Blissex',
            'slot': '1',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Caitken and Shollan',
            'slot': '15',
            'faction': 0,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Cham Syndulla',
            'slot': '15',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 1,
            'missing_data': 1,  # TODO: double slot
        },
        {
            'name': 'Jyn Erso',
            'slot': '15',
            'faction': 0,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 1,
            'missing_data': 1,  # TODO: double slot
        },
        {
            'name': 'Admiral Konstantine',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 23,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admiral Motti',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 24,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admiral Ozzel',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 20,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admiral Screed',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 26,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Darth Vader',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 36,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'General Tagge',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 25,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Grand Admiral Thrawn',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 32,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Grand Moff Tarkin',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 38,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Moff Jerjerrod',
            'slot': '-1',
            'faction': 1,
            'modification': 0,
            'cost': 23,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admiral Chiraneau',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 10,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admiral Montferrat',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admiral Titus',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Agent Kallus',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Captain Brunson',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Captain Needa',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Commandant Aresko',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Director Isard',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Governor Pryce',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 0,
            'title': 0,
            'unique': 1,
            'missing_data': 1,  # TODO: Medium or large ships only.
        },
        {
            'name': 'Instructor Goran',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Minister Tua',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 1,
            'missing_data': 1,  # TODO: This can't be applied to medium or large ships with a defensive slot.
        },
        {
            'name': 'Taskmaster Grint',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'The Grand Inquisitor',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Wulff Yularen',
            'slot': '1',
            'faction': 1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Darth Vader',
            'slot': '16',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 1,
            'missing_data': 0,  # TODO: This has a double cost
        },
        {
            'name': 'Chart Officer',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Damage Control Officer',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Defense Liaison',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Engineering Captain',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Flight Commander',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Hondo Ohnaka',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Intel Officer',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Navigation Officer',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Skilled First Officer',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 1,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Strategic Adviser',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 1,
            'missing_data': 1,  # TODO: Large ships only.
        },
        {
            'name': 'Support Officer',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Tactical Expert',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Veteran Captain',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Weapons Liaison',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Wing Commander',
            'slot': '1',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Engine Techs',
            'slot': '13',
            'faction': -1,
            'modification': 0,
            'cost': 8,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Engineering Team',
            'slot': '13',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Fighter Coordination Team',
            'slot': '13',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Medical Team',
            'slot': '13',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Nav Team',
            'slot': '13',
            'faction': -1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Projection Experts',
            'slot': '13',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Dual Turbolaser Turrets',
            'slot': '14',
            'faction': -1,
            'modification': 1,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Enhanced Armament',
            'slot': '14',
            'faction': -1,
            'modification': 1,
            'cost': 10,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'H9 Turbolasers',
            'slot': '14',
            'faction': -1,
            'modification': 0,
            'cost': 8,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Heavy Turbolaser Turrets',
            'slot': '14',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Quad Battery Turrets',
            'slot': '14',
            'faction': -1,
            'modification': 1,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Quad Turbolaser Cannons',
            'slot': '14',
            'faction': -1,
            'modification': 0,
            'cost': 10,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Slaved Turrets',
            'slot': '14',
            'faction': -1,
            'modification': 1,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Spinal Armament',
            'slot': '14',
            'faction': -1,
            'modification': 1,
            'cost': 9,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Turbolaser Reroute Circuits',
            'slot': '14',
            'faction': -1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'XI7 Turbolasers',
            'slot': '14',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'XX-9 Turbolasers',
            'slot': '14',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'G-8 Experimental Projector',
            'slot': '18',
            'faction': -1,
            'modification': 0,
            'cost': 8,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'G7-X Grav Well Projector',
            'slot': '18',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Grav Shift Reroute',
            'slot': '18',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Targeting Scrambler',
            'slot': '18',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Advanced Projectors',
            'slot': '3',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Cluster Bombs',
            'slot': '3',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Early Warning System',
            'slot': '3',
            'faction': -1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Electronic Countermeasures',
            'slot': '3',
            'faction': -1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Redundant Shields',
            'slot': '3',
            'faction': -1,
            'modification': 1,
            'cost': 8,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Reinforced Blast Doors',
            'slot': '3',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'All Fighters, Follow Me!',
            'slot': '5',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Entrapment Formation',
            'slot': '5',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Intensify Firepower!',
            'slot': '5',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Shields to Maximum!',
            'slot': '5',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Boosted Comms',
            'slot': '8',
            'faction': -1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Disposable Capacitors',
            'slot': '8',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Expanded Hanger Bay',
            'slot': '8',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Hardened Bulkheads',
            'slot': '8',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 1,  # TODO: This is large ships only.
        },
        {
            'name': 'Phylon Q7 Tractor Beams',
            'slot': '8',
            'faction': -1,
            'modification': 1,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Point-Defense Reroute',
            'slot': '8',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Quad Laser Turrets',
            'slot': '8',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Rapid Launch Bays',
            'slot': '8',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Assault Concussion Missiles',
            'slot': '10',
            'faction': -1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Assault Proton Torpedoes',
            'slot': '10',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Expanded Launchers',
            'slot': '10',
            'faction': -1,
            'modification': 1,
            'cost': 13,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'External Racks',
            'slot': '10',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Flechette Torpedoes',
            'slot': '10',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Ordnance Pods',
            'slot': '10',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 1,  # TODO: This can only be applied to medium or large ships
        },
        {
            'name': 'Rapid Reload',
            'slot': '10',
            'faction': -1,
            'modification': 1,
            'cost': 8,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Wide-Area Barrage',
            'slot': '10',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Fire-Control Team',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Flight Controllers',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 6,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Gunnery Team',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 7,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Ordnance Experts',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Ruthless Strategists',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Sensor Team',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Veteran Gunners',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Boarding Engineers',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 0,
            'missing_data': 1,  # TODO: This has a two slot requirement
        },
        {
            'name': 'Boarding Troopers',
            'slot': '16',
            'faction': -1,
            'modification': 0,
            'cost': 3,
            'title': 0,
            'unique': 0,
            'missing_data': 1,  # TODO: This has a two slot requirement
        },
        {
            'name': 'Heavy Ion Emplacements',
            'slot': '7',
            'faction': -1,
            'modification': 0,
            'cost': 9,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'High-Capacity Ion Turbines',
            'slot': '7',
            'faction': -1,
            'modification': 1,
            'cost': 8,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Ion Cannon Batteries',
            'slot': '7',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Leading Shots',
            'slot': '7',
            'faction': -1,
            'modification': 0,
            'cost': 4,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'MS-1 Ion Cannons',
            'slot': '7',
            'faction': -1,
            'modification': 0,
            'cost': 2,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'NK-7 Ion Cannons',
            'slot': '7',
            'faction': -1,
            'modification': 0,
            'cost': 10,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Overload Pulse',
            'slot': '7',
            'faction': -1,
            'modification': 0,
            'cost': 8,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'SW-7 Ion Batteries',
            'slot': '7',
            'faction': -1,
            'modification': 0,
            'cost': 5,
            'title': 0,
            'unique': 0,
            'missing_data': 0,
        },
    ]

    titles = [
        {
            'name': 'Gallant Haven',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 8,
            'title': 1,
            'ship_id_1': 1,
            'ship_id_2': 2,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Paragon',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 1,
            'ship_id_2': 2,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Doodnna\'s Pride',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 6,
            'title': 1,
            'ship_id_1': 3,
            'ship_id_2': 4,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Jaina\'s Light',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 2,
            'title': 1,
            'ship_id_1': 3,
            'ship_id_2': 4,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Tantive IV',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 3,
            'ship_id_2': 4,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Bright Hope',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 2,
            'title': 1,
            'ship_id_1': 5,
            'ship_id_2': 6,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Quantum Storm',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 1,
            'title': 1,
            'ship_id_1': 5,
            'ship_id_2': 6,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Garel\'s Honor',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 7,
            'ship_id_2': 8,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Task Force Antilles',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 7,
            'ship_id_2': 8,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Task Force Organa',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 1,
            'title': 1,
            'ship_id_1': 7,
            'ship_id_2': 8,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Admonition',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 8,
            'title': 1,
            'ship_id_1': 9,
            'ship_id_2': 10,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Foresight',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 8,
            'title': 1,
            'ship_id_1': 9,
            'ship_id_2': 10,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Mon Calamari Exodus Fleet',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 9,
            'ship_id_2': 10,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Mon Calamari Exodus Fleet',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 11,
            'ship_id_2': 12,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Mon Calamari Exodus Fleet',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 13,
            'ship_id_2': 14,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Mon Calamari Exodus Fleet',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 15,
            'ship_id_2': 16,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Aspiration',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 11,
            'ship_id_2': 12,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Profundity',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 7,
            'title': 1,
            'ship_id_1': 11,
            'ship_id_2': 12,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Endeavor',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 14,
            'ship_id_2': 16,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Liberty',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 14,
            'ship_id_2': 16,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Mon Karren',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 8,
            'title': 1,
            'ship_id_1': 14,
            'ship_id_2': 16,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Defiance',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 13,
            'ship_id_2': 15,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Home One',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 7,
            'title': 1,
            'ship_id_1': 13,
            'ship_id_2': 15,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Independence',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 8,
            'title': 1,
            'ship_id_1': 13,
            'ship_id_2': 15,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Redemption',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 8,
            'title': 1,
            'ship_id_1': 19,
            'ship_id_2': 20,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Salvation',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 7,
            'title': 1,
            'ship_id_1': 19,
            'ship_id_2': 20,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Yavaris',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 15,
            'ship_id_2': 20,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Phoenix Home',
            'slot': '0',
            'faction': 0,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 17,
            'ship_id_2': 18,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Centicore',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 21,
            'ship_id_2': 22,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Hand of Justice',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 21,
            'ship_id_2': 22,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Seventh Fleet Star Destroyer',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 23,
            'ship_id_2': 24,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Seventh Fleet Star Destroyer',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 27,
            'ship_id_2': 28,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Seventh Fleet Star Destroyer',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 29,
            'ship_id_2': 30,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Seventh Fleet Star Destroyer',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 37,
            'ship_id_2': 38,
            'unique': 0,
            'missing_data': 0,
        },
        {
            'name': 'Demolisher',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 10,
            'title': 1,
            'ship_id_1': 23,
            'ship_id_2': 24,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Insidious',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 23,
            'ship_id_2': 24,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Suppressor',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 25,
            'ship_id_2': 26,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Vector',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 2,
            'title': 1,
            'ship_id_1': 25,
            'ship_id_2': 26,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Avenger',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 27,
            'ship_id_2': 28,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Avenger',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 29,
            'ship_id_2': 30,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Chimaera',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 27,
            'ship_id_2': 28,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Chimaera',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 29,
            'ship_id_2': 30,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Devastator',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 10,
            'title': 1,
            'ship_id_1': 27,
            'ship_id_2': 28,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Devastator',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 10,
            'title': 1,
            'ship_id_1': 29,
            'ship_id_2': 30,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Relentless',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 27,
            'ship_id_2': 28,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Relentless',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 29,
            'ship_id_2': 30,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Sovereign',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 27,
            'ship_id_2': 28,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Sovereign',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 29,
            'ship_id_2': 30,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Interdictor',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 31,
            'ship_id_2': 32,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Pursuant',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 2,
            'title': 1,
            'ship_id_1': 33,
            'ship_id_2': 34,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Squall',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 3,
            'title': 1,
            'ship_id_1': 33,
            'ship_id_2': 34,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Stronghold',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 33,
            'ship_id_2': 34,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Impetuous',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 35,
            'ship_id_2': 36,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Instigator',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 4,
            'title': 1,
            'ship_id_1': 35,
            'ship_id_2': 36,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Corrupter',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 5,
            'title': 1,
            'ship_id_1': 37,
            'ship_id_2': 38,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Dominator',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 12,
            'title': 1,
            'ship_id_1': 37,
            'ship_id_2': 38,
            'unique': 1,
            'missing_data': 0,
        },
        {
            'name': 'Warlord',
            'slot': '0',
            'faction': 1,
            'modification': 0,
            'cost': 8,
            'title': 1,
            'ship_id_1': 37,
            'ship_id_2': 38,
            'unique': 1,
            'missing_data': 0,
        },
    ]

    config.A_UPGRADE_TABLE.insert(upgrades).execute()
    config.A_UPGRADE_TABLE.insert(titles).execute()


def prep_objectives():
    objectives = [
        {
            'name': 'Advanced Gunnery',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Most Wanted',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Precision Strike',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Opening Salvo',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Station Assault',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Close-Range Intel Scan',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Blockade Run',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Targeting Beacons',
            'category': 'Assault',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Hyperspace Assault',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Planetary Ion Cannon',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Capture the VIP',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Fire Lanes',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Jamming Barrier',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Contested Outpost',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Fleet Ambush',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Fighter Ambush',
            'category': 'Defense',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Dangerous Territory',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Minefields',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Solar Corona',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Sensor Net',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Navigational Hazards',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Intel Sweep',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Superior Positions',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Salvage Run',
            'category': 'Navigation',
            'special': 0,
            'vp_modifier': '1',
        },
        {
            'name': 'Hyperlane Raid',
            'category': 'Special Assault',
            'special': 1,
            'vp_modifier': '0',
        },
        {
            'name': 'Show of Force',
            'category': 'Special Assault',
            'special': 1,
            'vp_modifier': '0',
        },
        {
            'name': 'Base Defense: Fighter Wing',
            'category': 'Base Defense',
            'special': 1,
            'vp_modifier': '1',
        },
        {
            'name': 'Base Defense: Armed Station',
            'category': 'Base Defense',
            'special': 1,
            'vp_modifier': '1',
        },
        {
            'name': 'Base Defense: Ion Cannon',
            'category': 'Base Defense',
            'special': 1,
            'vp_modifier': '1',
        },
        {
            'name': 'Independent Station',
            'category': 'Campaign Objective',
            'special': 1,
            'vp_modifier': '1',
        },
        {
            'name': 'Asteroids',
            'category': 'Campaign Objective',
            'special': 1,
            'vp_modifier': '1',
        },
        {
            'name': 'Nebula Outskirts',
            'category': 'Campaign Objective',
            'special': 1,
            'vp_modifier': '1',
        },
        {
            'name': 'ANY',
            'category': 'MISC',
            'special': 0,
            'vp_modifier': '0',
        },
        {
            'name': 'NONE',
            'category': 'Misc',
            'special': 0,
            'vp_modifier': '1',
        },
    ]

    config.A_OBJECTIVE_TABLE.insert(objectives).execute()
