"""
Static data.

For easy reference any variable should be prefixed with the name of the file it
was either in originally, or where the primary code utilising it is.
"""
from collections import OrderedDict

# Map numeric 'demand/supply brackets' to the names as shown in-game.
commodity_bracketmap = {
    0: '',
    1: 'Low',
    2: 'Med',
    3: 'High',
}

# Map values reported by the Companion interface to names displayed in-game.
# May be imported by plugins.
companion_category_map = {
    'Narcotics':      'Legal Drugs',
    'Slaves':         'Slavery',
    'Waste ':         'Waste',
    'NonMarketable':  False,  # Don't appear in the in-game market so don't report
}

# Map suit symbol names to English localised names
companion_suit_type_map = {
    'TacticalSuit_Class1':      'Dominator Suit',
}

# Map Coriolis's names to names displayed in the in-game shipyard.
coriolis_ship_map = {
    'Cobra Mk III': 'Cobra MkIII',
    'Cobra Mk IV':  'Cobra MkIV',
    'Krait Mk II':  'Krait MkII',
    'Viper':        'Viper MkIII',
    'Viper Mk IV':  'Viper MkIV',
}

# Map API slot names to E:D Shipyard slot names
edshipyard_slot_map = {
    'hugehardpoint':     'H',
    'largehardpoint':    'L',
    'mediumhardpoint':   'M',
    'smallhardpoint':    'S',
    'tinyhardpoint':     'U',
    'armour':            'BH',
    'powerplant':        'RB',
    'mainengines':       'TM',
    'frameshiftdrive':   'FH',
    'lifesupport':       'EC',
    'powerdistributor':  'PC',
    'radar':             'SS',
    'fueltank':          'FS',
    'military':          'MC',
}

# Map API module names to in-game names

outfitting_armour_map = OrderedDict([
    ('grade1',   'Lightweight Alloy'),
    ('grade2',   'Reinforced Alloy'),
    ('grade3',   'Military Grade Composite'),
    ('mirrored', 'Mirrored Surface Composite'),
    ('reactive', 'Reactive Surface Composite'),
])

outfitting_weapon_map = {
    'advancedtorppylon':                 'Torpedo Pylon',
    'atdumbfiremissile':                 'AX Missile Rack',
    'atmulticannon':                     'AX Multi-Cannon',
    'basicmissilerack':                  'Seeker Missile Rack',
    'beamlaser':                         'Beam Laser',
    ('beamlaser', 'heat'):               'Retributor Beam Laser',
    'cannon':                            'Cannon',
    'causticmissile':                    'Enzyme Missile Rack',
    'drunkmissilerack':                  'Pack-Hound Missile Rack',
    'dumbfiremissilerack':               'Missile Rack',
    ('dumbfiremissilerack', 'advanced'): 'Advanced Missile Rack',
    ('dumbfiremissilerack', 'lasso'):    'Rocket Propelled FSD Disruptor',
    'flakmortar':                        'Remote Release Flak Launcher',
    'flechettelauncher':                 'Remote Release Flechette Launcher',
    'guardian_gausscannon':              'Guardian Gauss Cannon',
    'guardian_plasmalauncher':           'Guardian Plasma Charger',
    'guardian_shardcannon':              'Guardian Shard Cannon',
    'minelauncher':                      'Mine Launcher',
    ('minelauncher', 'impulse'):         'Shock Mine Launcher',
    'mining_abrblstr':                   'Abrasion Blaster',
    'mining_seismchrgwarhd':             'Seismic Charge Launcher',
    'mining_subsurfdispmisle':           'Sub-Surface Displacement Missile',
    'mininglaser':                       'Mining Laser',
    ('mininglaser', 'advanced'):         'Mining Lance Beam Laser',
    'multicannon':                       'Multi-Cannon',
    ('multicannon', 'advanced'):         'Advanced Multi-Cannon',
    ('multicannon', 'strong'):           'Enforcer Cannon',
    'plasmaaccelerator':                 'Plasma Accelerator',
    ('plasmaaccelerator', 'advanced'):   'Advanced Plasma Accelerator',
    'plasmashockcannon':                 'Shock Cannon',
    'pulselaser':                        'Pulse Laser',
    ('pulselaser', 'disruptor'):         'Pulse Disruptor Laser',
    'pulselaserburst':                   'Burst Laser',
    ('pulselaserburst', 'scatter'):      'Cytoscrambler Burst Laser',
    'railgun':                           'Rail Gun',
    ('railgun', 'burst'):                'Imperial Hammer Rail Gun',
    'slugshot':                          'Fragment Cannon',
    ('slugshot', 'range'):               'Pacifier Frag-Cannon',
}

outfitting_missiletype_map = {
    'advancedtorppylon':         'Seeker',
    'atdumbfiremissile':         'Dumbfire',
    'basicmissilerack':          'Seeker',
    'causticmissile':            'Dumbfire',
    'drunkmissilerack':          'Swarm',
    'dumbfiremissilerack':       'Dumbfire',
    'mining_subsurfdispmisle':   'Seeker',
    'mining_seismchrgwarhd':     'Seeker',
}

outfitting_weaponmount_map = {
    'fixed':    'Fixed',
    'gimbal':   'Gimballed',
    'turret':   'Turreted',
}

outfitting_weaponclass_map = {
    'tiny':      '0',
    'small':     '1',
    'smallfree': '1',
    'medium':    '2',
    'large':     '3',
    'huge':      '4',
}

# There's no discernable pattern for weapon ratings, so here's a lookup table
outfitting_weaponrating_map = {
    'hpt_advancedtorppylon_fixed_small':         'I',
    'hpt_advancedtorppylon_fixed_medium':        'I',
    'hpt_advancedtorppylon_fixed_large':         'I',
    'hpt_atdumbfiremissile_fixed_medium':        'B',
    'hpt_atdumbfiremissile_fixed_large':         'A',
    'hpt_atdumbfiremissile_turret_medium':       'B',
    'hpt_atdumbfiremissile_turret_large':        'A',
    'hpt_atmulticannon_fixed_medium':            'E',
    'hpt_atmulticannon_fixed_large':             'C',
    'hpt_atmulticannon_turret_medium':           'F',
    'hpt_atmulticannon_turret_large':            'E',
    'hpt_basicmissilerack_fixed_small':          'B',
    'hpt_basicmissilerack_fixed_medium':         'B',
    'hpt_basicmissilerack_fixed_large':          'A',
    'hpt_beamlaser_fixed_small':                 'E',
    'hpt_beamlaser_fixed_medium':                'D',
    'hpt_beamlaser_fixed_large':                 'C',
    'hpt_beamlaser_fixed_huge':                  'A',
    'hpt_beamlaser_gimbal_small':                'E',
    'hpt_beamlaser_gimbal_medium':               'D',
    'hpt_beamlaser_gimbal_large':                'C',
    'hpt_beamlaser_gimbal_huge':                 'A',
    'hpt_beamlaser_turret_small':                'F',
    'hpt_beamlaser_turret_medium':               'E',
    'hpt_beamlaser_turret_large':                'D',
    'hpt_cannon_fixed_small':                    'D',
    'hpt_cannon_fixed_medium':                   'D',
    'hpt_cannon_fixed_large':                    'C',
    'hpt_cannon_fixed_huge':                     'B',
    'hpt_cannon_gimbal_small':                   'E',
    'hpt_cannon_gimbal_medium':                  'D',
    'hpt_cannon_gimbal_large':                   'C',
    'hpt_cannon_gimbal_huge':                    'B',
    'hpt_cannon_turret_small':                   'F',
    'hpt_cannon_turret_medium':                  'E',
    'hpt_cannon_turret_large':                   'D',
    'hpt_causticmissile_fixed_medium':           'B',
    'hpt_drunkmissilerack_fixed_medium':         'B',
    'hpt_dumbfiremissilerack_fixed_small':       'B',
    'hpt_dumbfiremissilerack_fixed_medium':      'B',
    'hpt_dumbfiremissilerack_fixed_large':       'A',
    'hpt_flakmortar_fixed_medium':               'B',
    'hpt_flakmortar_turret_medium':              'B',
    'hpt_flechettelauncher_fixed_medium':        'B',
    'hpt_flechettelauncher_turret_medium':       'B',
    'hpt_guardian_gausscannon_fixed_small':      'D',
    'hpt_guardian_gausscannon_fixed_medium':     'B',
    'hpt_guardian_plasmalauncher_fixed_small':   'D',
    'hpt_guardian_plasmalauncher_fixed_medium':  'B',
    'hpt_guardian_plasmalauncher_fixed_large':   'C',
    'hpt_guardian_plasmalauncher_turret_small':  'F',
    'hpt_guardian_plasmalauncher_turret_medium': 'E',
    'hpt_guardian_plasmalauncher_turret_large':  'D',
    'hpt_guardian_shardcannon_fixed_small':      'D',
    'hpt_guardian_shardcannon_fixed_medium':     'A',
    'hpt_guardian_shardcannon_fixed_large':      'C',
    'hpt_guardian_shardcannon_turret_small':     'F',
    'hpt_guardian_shardcannon_turret_medium':    'D',
    'hpt_guardian_shardcannon_turret_large':     'D',
    'hpt_minelauncher_fixed_small':              'I',
    'hpt_minelauncher_fixed_medium':             'I',
    'hpt_mining_abrblstr_fixed_small':           'D',
    'hpt_mining_abrblstr_turret_small':          'D',
    'hpt_mining_seismchrgwarhd_fixed_medium':    'B',
    'hpt_mining_seismchrgwarhd_turret_medium':   'B',
    'hpt_mining_subsurfdispmisle_fixed_small':   'B',
    'hpt_mining_subsurfdispmisle_fixed_medium':  'B',
    'hpt_mining_subsurfdispmisle_turret_small':  'B',
    'hpt_mining_subsurfdispmisle_turret_medium': 'B',
    'hpt_mininglaser_fixed_small':               'D',
    'hpt_mininglaser_fixed_medium':              'D',
    'hpt_mininglaser_turret_small':              'D',
    'hpt_mininglaser_turret_medium':             'D',
    'hpt_multicannon_fixed_small':               'F',
    'hpt_multicannon_fixed_medium':              'E',
    'hpt_multicannon_fixed_large':               'C',
    'hpt_multicannon_fixed_huge':                'A',
    'hpt_multicannon_gimbal_small':              'G',
    'hpt_multicannon_gimbal_medium':             'F',
    'hpt_multicannon_gimbal_large':              'C',
    'hpt_multicannon_gimbal_huge':               'A',
    'hpt_multicannon_turret_small':              'G',
    'hpt_multicannon_turret_medium':             'F',
    'hpt_multicannon_turret_large':              'E',
    'hpt_plasmaaccelerator_fixed_medium':        'C',
    'hpt_plasmaaccelerator_fixed_large':         'B',
    'hpt_plasmaaccelerator_fixed_huge':          'A',
    'hpt_plasmashockcannon_fixed_small':         'D',
    'hpt_plasmashockcannon_fixed_medium':        'D',
    'hpt_plasmashockcannon_fixed_large':         'C',
    'hpt_plasmashockcannon_gimbal_small':        'E',
    'hpt_plasmashockcannon_gimbal_medium':       'D',
    'hpt_plasmashockcannon_gimbal_large':        'C',
    'hpt_plasmashockcannon_turret_small':        'F',
    'hpt_plasmashockcannon_turret_medium':       'E',
    'hpt_plasmashockcannon_turret_large':        'D',
    'hpt_pulselaser_fixed_small':                'F',
    'hpt_pulselaser_fixed_smallfree':            'F',
    'hpt_pulselaser_fixed_medium':               'E',
    'hpt_pulselaser_fixed_large':                'D',
    'hpt_pulselaser_fixed_huge':                 'A',
    'hpt_pulselaser_gimbal_small':               'G',
    'hpt_pulselaser_gimbal_medium':              'F',
    'hpt_pulselaser_gimbal_large':               'E',
    'hpt_pulselaser_gimbal_huge':                'A',
    'hpt_pulselaser_turret_small':               'G',
    'hpt_pulselaser_turret_medium':              'F',
    'hpt_pulselaser_turret_large':               'F',
    'hpt_pulselaserburst_fixed_small':           'F',
    'hpt_pulselaserburst_fixed_medium':          'E',
    'hpt_pulselaserburst_fixed_large':           'D',
    'hpt_pulselaserburst_fixed_huge':            'E',
    'hpt_pulselaserburst_gimbal_small':          'G',
    'hpt_pulselaserburst_gimbal_medium':         'F',
    'hpt_pulselaserburst_gimbal_large':          'E',
    'hpt_pulselaserburst_gimbal_huge':           'E',
    'hpt_pulselaserburst_turret_small':          'G',
    'hpt_pulselaserburst_turret_medium':         'F',
    'hpt_pulselaserburst_turret_large':          'E',
    'hpt_railgun_fixed_small':                   'D',
    'hpt_railgun_fixed_medium':                  'B',
    'hpt_slugshot_fixed_small':                  'E',
    'hpt_slugshot_fixed_medium':                 'A',
    'hpt_slugshot_fixed_large':                  'C',
    'hpt_slugshot_gimbal_small':                 'E',
    'hpt_slugshot_gimbal_medium':                'D',
    'hpt_slugshot_gimbal_large':                 'C',
    'hpt_slugshot_turret_small':                 'E',
    'hpt_slugshot_turret_medium':                'D',
    'hpt_slugshot_turret_large':                 'C',
}

# Old standard weapon variants
outfitting_weaponoldvariant_map = {
    'f':    'Focussed',
    'hi':   'High Impact',
    'lh':   'Low Heat',
    'oc':   'Overcharged',
    'ss':   'Scatter Spray',
}

outfitting_countermeasure_map = {
    'antiunknownshutdown':        ('Shutdown Field Neutraliser', 'F'),
    'chafflauncher':              ('Chaff Launcher', 'I'),
    'electroniccountermeasure':   ('Electronic Countermeasure', 'F'),
    'heatsinklauncher':           ('Heat Sink Launcher', 'I'),
    'plasmapointdefence':         ('Point Defence', 'I'),
    'xenoscanner':                ('Xeno Scanner', 'E'),
}

outfitting_utility_map = {
    'cargoscanner':               'Cargo Scanner',
    'cloudscanner':               'Frame Shift Wake Scanner',
    'crimescanner':               'Kill Warrant Scanner',
    'mrascanner':                 'Pulse Wave Analyser',
    'shieldbooster':              'Shield Booster',
}

outfitting_cabin_map = {
    '0': 'Prisoner Cells',
    '1': 'Economy Class Passenger Cabin',
    '2': 'Business Class Passenger Cabin',
    '3': 'First Class Passenger Cabin',
    '4': 'Luxury Class Passenger Cabin',
    '5': 'Passenger Cabin',  # not seen
}

outfitting_rating_map = {
    '1': 'E',
    '2': 'D',
    '3': 'C',
    '4': 'B',
    '5': 'A',
}

# Ratings are weird for the following

outfitting_corrosion_rating_map = {
    '1': 'E',
    '2': 'F',
}

outfitting_planet_rating_map = {
    '1': 'H',
    '2': 'G',
}

outfitting_fighter_rating_map = {
    '1': 'D',
}

outfitting_misc_internal_map = {
    ('detailedsurfacescanner',      'tiny'):          ('Detailed Surface Scanner',       'I'),
    ('dockingcomputer',             'advanced'):      ('Advanced Docking Computer',      'E'),
    ('dockingcomputer',             'standard'):      ('Standard Docking Computer',      'E'),
    'planetapproachsuite':                            ('Planetary Approach Suite',       'I'),
    ('stellarbodydiscoveryscanner', 'standard'):      ('Basic Discovery Scanner',        'E'),
    ('stellarbodydiscoveryscanner', 'intermediate'):  ('Intermediate Discovery Scanner', 'D'),
    ('stellarbodydiscoveryscanner', 'advanced'):      ('Advanced Discovery Scanner',     'C'),
    'supercruiseassist':                              ('Supercruise Assist',             'E'),
}

outfitting_standard_map = {
    # 'armour':                     handled separately
    'engine':                       'Thrusters',
    ('engine', 'fast'):             'Enhanced Performance Thrusters',
    'fueltank':                     'Fuel Tank',
    'guardianpowerdistributor':     'Guardian Hybrid Power Distributor',
    'guardianpowerplant':           'Guardian Hybrid Power Plant',
    'hyperdrive':                   'Frame Shift Drive',
    'lifesupport':                  'Life Support',
    # 'planetapproachsuite':        handled separately
    'powerdistributor':             'Power Distributor',
    'powerplant':                   'Power Plant',
    'sensors':                      'Sensors',
}

outfitting_internal_map = {
    'buggybay':                     'Planetary Vehicle Hangar',
    'cargorack':                    'Cargo Rack',
    'collection':                   'Collector Limpet Controller',
    'corrosionproofcargorack':      'Corrosion Resistant Cargo Rack',
    'decontamination':              'Decontamination Limpet Controller',
    'fighterbay':                   'Fighter Hangar',
    'fsdinterdictor':               'Frame Shift Drive Interdictor',
    'fuelscoop':                    'Fuel Scoop',
    'fueltransfer':                 'Fuel Transfer Limpet Controller',
    'guardianfsdbooster':           'Guardian FSD Booster',
    'guardianhullreinforcement':    'Guardian Hull Reinforcement',
    'guardianmodulereinforcement':  'Guardian Module Reinforcement',
    'guardianshieldreinforcement':  'Guardian Shield Reinforcement',
    'hullreinforcement':            'Hull Reinforcement Package',
    'metaalloyhullreinforcement':   'Meta Alloy Hull Reinforcement',
    'modulereinforcement':          'Module Reinforcement Package',
    'passengercabin':               'Passenger Cabin',
    'prospector':                   'Prospector Limpet Controller',
    'refinery':                     'Refinery',
    'recon':                        'Recon Limpet Controller',
    'repair':                       'Repair Limpet Controller',
    'repairer':                     'Auto Field-Maintenance Unit',
    'resourcesiphon':               'Hatch Breaker Limpet Controller',
    'shieldcellbank':               'Shield Cell Bank',
    'shieldgenerator':              'Shield Generator',
    ('shieldgenerator', 'fast'):    'Bi-Weave Shield Generator',
    ('shieldgenerator', 'strong'):  'Prismatic Shield Generator',
    'unkvesselresearch':            'Research Limpet Controller',
}

# Dashboard Flags constants
FlagsDocked = 1 << 0             # on a landing pad
FlagsLanded = 1 << 1             # on planet surface
FlagsLandingGearDown = 1 << 2
FlagsShieldsUp = 1 << 3
FlagsSupercruise = 1 << 4
FlagsFlightAssistOff = 1 << 5
FlagsHardpointsDeployed = 1 << 6
FlagsInWing = 1 << 7
FlagsLightsOn = 1 << 8
FlagsCargoScoopDeployed = 1 << 9
FlagsSilentRunning = 1 << 10
FlagsScoopingFuel = 1 << 11
FlagsSrvHandbrake = 1 << 12
FlagsSrvTurret = 1 << 13         # using turret view
FlagsSrvUnderShip = 1 << 14      # turret retracted
FlagsSrvDriveAssist = 1 << 15
FlagsFsdMassLocked = 1 << 16
FlagsFsdCharging = 1 << 17
FlagsFsdCooldown = 1 << 18
FlagsLowFuel = 1 << 19           # < 25%
FlagsOverHeating = 1 << 20       # > 100%, or is this 80% now ?
FlagsHasLatLong = 1 << 21
FlagsIsInDanger = 1 << 22
FlagsBeingInterdicted = 1 << 23
FlagsInMainShip = 1 << 24
FlagsInFighter = 1 << 25
FlagsInSRV = 1 << 26
FlagsAnalysisMode = 1 << 27      # Hud in Analysis mode
FlagsNightVision = 1 << 28
FlagsAverageAltitude = 1 << 29   # Altitude from Average radius
FlagsFsdJump = 1 << 30
FlagsSrvHighBeam = 1 << 31

# Status.json / Dashboard flags2
Flags2OnFoot = 1 << 0
Flags2InTaxi = 1 << 1  # (or dropship/shuttle)
Flags2InMulticrew = 1 << 2  # (ie in someone else’s ship)
Flags2OnFootInStation = 1 << 3
Flags2OnFootOnPlanet = 1 << 4
Flags2AimDownSight = 1 << 5
Flags2LowOxygen = 1 << 6
Flags2LowHealth = 1 << 7
Flags2Cold = 1 << 8
Flags2Hot = 1 << 9
Flags2VeryCold = 1 << 10
Flags2VeryHot = 1 << 11
Flags2GlideMode = 1 << 12
Flags2OnFootInHangar = 1 << 13
Flags2OnFootSocialSpace = 1 << 14
Flags2OnFootExterior = 1 << 15
Flags2BreathableAtmosphere = 1 << 16

# Dashboard GuiFocus constants
GuiFocusNoFocus = 0
GuiFocusInternalPanel = 1        # right hand side
GuiFocusExternalPanel = 2        # left hand side
GuiFocusCommsPanel = 3		     # top
GuiFocusRolePanel = 4		     # bottom
GuiFocusStationServices = 5
GuiFocusGalaxyMap = 6
GuiFocusSystemMap = 7
GuiFocusOrrery = 8
GuiFocusFSS = 9
GuiFocusSAA = 10
GuiFocusCodex = 11

ship_name_map = {
    'adder':                        'Adder',
    'anaconda':                     'Anaconda',
    'asp':                          'Asp Explorer',
    'asp_scout':                    'Asp Scout',
    'belugaliner':                  'Beluga Liner',
    'cobramkiii':                   'Cobra MkIII',
    'cobramkiv':                    'Cobra MkIV',
    'clipper':                      'Panther Clipper',
    'cutter':                       'Imperial Cutter',
    'diamondback':                  'Diamondback Scout',
    'diamondbackxl':                'Diamondback Explorer',
    'dolphin':                      'Dolphin',
    'eagle':                        'Eagle',
    'empire_courier':               'Imperial Courier',
    'empire_eagle':                 'Imperial Eagle',
    'empire_fighter':               'Imperial Fighter',
    'empire_trader':                'Imperial Clipper',
    'federation_corvette':          'Federal Corvette',
    'federation_dropship':          'Federal Dropship',
    'federation_dropship_mkii':     'Federal Assault Ship',
    'federation_gunship':           'Federal Gunship',
    'federation_fighter':           'F63 Condor',
    'ferdelance':                   'Fer-de-Lance',
    'hauler':                       'Hauler',
    'independant_trader':           'Keelback',
    'independent_fighter':          'Taipan Fighter',
    'krait_mkii':                   'Krait MkII',
    'krait_light':                  'Krait Phantom',
    'mamba':                        'Mamba',
    'orca':                         'Orca',
    'python':                       'Python',
    'scout':                        'Taipan Fighter',
    'sidewinder':                   'Sidewinder',
    'testbuggy':                    'Scarab',
    'type6':                        'Type-6 Transporter',
    'type7':                        'Type-7 Transporter',
    'type9':                        'Type-9 Heavy',
    'type9_military':               'Type-10 Defender',
    'typex':                        'Alliance Chieftain',
    'typex_2':                      'Alliance Crusader',
    'typex_3':                      'Alliance Challenger',
    'viper':                        'Viper MkIII',
    'viper_mkiv':                   'Viper MkIV',
    'vulture':                      'Vulture',
}

# Odyssey Suit Names
edmc_suit_shortnames = {
    'Flight Suit':            'Flight',     # EN
    'Artemis Suit':           'Artemis',    # EN
    'Dominator Suit':         'Dominator',  # EN
    'Maverick Suit':          'Maverick',   # EN

    'Flug-Anzug':             'Flug',       # DE
    'Artemis-Anzug':          'Artemis',    # DE
    'Dominator-Anzug':        'Dominator',  # DE
    'Maverick-Anzug':         'Maverick',   # DE

    'Traje de vuelo':         'de vuelo',   # ES
    'Traje Artemis':          'Artemis',    # ES
    'Traje Dominator':        'Dominator',  # ES
    'Traje Maverick':         'Maverick',   # ES

    'Combinaison de vol':     'de vol',     # FR
    'Combinaison Artemis':    'Artemis',    # FR
    'Combinaison Dominator':  'Dominator',  # FR
    'Combinaison Maverick':   'Maverick',   # FR

    'Traje voador':           'voador',     # PT-BR
    #  These are duplicates of the ES ones, but kept here for clarity
    #  'Traje Artemis':          'Artemis',    # PT-BR
    #  'Traje Dominator':        'Dominator',  # PT-BR
    #  'Traje Maverick':         'Maverick',   # PT-BR

    'Летный комбинезон':      'Летный',     # RU
    'Комбинезон Artemis':     'Artemis',    # RU
    'Комбинезон Dominator':   'Dominator',  # RU
    'Комбинезон Maverick':    'Maverick',   # RU
}

edmc_suit_symbol_localised = {
    # The key here should match what's seen in Fileheader 'language', but with
    # any in-file `\\` already unescaped to a single `\`.
    r'English\UK': {
        'flightsuit':      'Flight Suit',
        'explorationsuit': 'Artemis Suit',
        'tacticalsuit':    'Dominator Suit',
        'utilitysuit':     'Maverick Suit',
    },
    r'German\DE': {
        'flightsuit':      'Flug-Anzug',
        'explorationsuit': 'Artemis-Anzug',
        'tacticalsuit':    'Dominator-Anzug',
        'utilitysuit':     'Maverick-Anzug',
    },
    r'French\FR': {
        'flightsuit':      'Combinaison de vol',
        'explorationsuit': 'Combinaison Artemis',
        'tacticalsuit':    'Combinaison Dominator',
        'utilitysuit':     'Combinaison Maverick',
    },
    r'Portuguese\BR': {
        'flightsuit':      'Traje voador',
        'explorationsuit': 'Traje Artemis',
        'tacticalsuit':    'Traje Dominator',
        'utilitysuit':     'Traje Maverick',
    },
    r'Russian\RU': {
        'flightsuit':      'Летный комбинезон',
        'explorationsuit': 'Комбинезон Artemis',
        'tacticalsuit':    'Комбинезон Dominator',
        'utilitysuit':     'Комбинезон Maverick',
    },
    r'Spanish\ES': {
        'flightsuit':      'Traje de vuelo',
        'explorationsuit': 'Traje Artemis',
        'tacticalsuit':    'Traje Dominator',
        'utilitysuit':     'Traje Maverick',
    },
}

# WORKAROUND 2021-07-03 | 4.0.0.600 Update 5: duplicates of `fileheader` keys in `LoadGame`,
# but the GameLanguage in the latter has doubled up the `\`, so cater for either here.
# This is sourced from what the game is passed by the launcher, caveat emptor. It was mentioned that / is also
# an option
# This is only run once when this file is imported by something, no runtime cost or repeated expansions will occur
__keys = list(edmc_suit_symbol_localised.keys())
for lang in __keys:
    new_lang = lang.replace('\\', r'\\')
    new_lang_2 = lang.replace('\\', '/')

    edmc_suit_symbol_localised[new_lang] = edmc_suit_symbol_localised[lang]
    edmc_suit_symbol_localised[new_lang_2] = edmc_suit_symbol_localised[lang]


# Local webserver for debugging. See implementation in debug_webserver.py
DEBUG_WEBSERVER_HOST = '127.0.0.1'
DEBUG_WEBSERVER_PORT = 9090
