- Click a button to load a preset
- To transfer a seat from one band to another, first click the band that will lose a seat (it will highlight) then click the band that will receive that seat.
Last active
July 31, 2018 20:02
-
-
Save anbnyc/453f39aca51727b524767813a51a7f38 to your computer and use it in GitHub Desktop.
Composition
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
license: mit | |
height: 500 | |
border: no |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*** data: each U.S. State with hard-coded positions in tile map | |
and one race in races array per race this year ***/ | |
const data = { | |
'AL': { key: 'AL', position: [7,5], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 9, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
}}, | |
'AK': { key: 'AK', position: [0,0], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'I', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'AZ': { key: 'AZ', position: [2,4], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 11, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'AR': { key: 'AR', position: [5,4], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'CA': { key: 'CA', position: [1,3], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 55, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'CO': { key: 'CO', position: [3,3], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 9, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'CT': { key: 'CT', position: [10,2], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 7, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'DE': { key: 'DE', position: [10,3], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'DC': { key: 'DC', position: [9,4], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'NA', scenario: 'U', votes: 0, elec2018: false }], | |
'S': [{ lastWinner: 'NA', scenario: 'U', votes: 0, elec2018: false },{ lastWinner: 'NA', scenario: 'U', votes: 0, elec2018: false }], | |
} }, | |
'FL': { key: 'FL', position: [9,6], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 29, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'GA': { key: 'GA', position: [8,5], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 16, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'HI': { key: 'HI', position: [0,6], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 4, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'ID': { key: 'ID', position: [2,1], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 4, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'IL': { key: 'IL', position: [6,1], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 20, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'IN': { key: 'IN', position: [6,2], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 11, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1 , elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'IA': { key: 'IA', position: [5,2], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'KS': { key: 'KS', position: [4,4], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'KY': { key: 'KY', position: [6,3], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 8, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'LA': { key: 'LA', position: [5,5], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 8, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'ME': { key: 'ME', position: [11,0], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true },{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'I', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'MD': { key: 'MD', position: [9,3], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 10, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'MA': { key: 'MA', position: [10,1], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 11, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'MI': { key: 'MI', position: [8,1], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 16, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1 , elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'MN': { key: 'MN', position: [5,1], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 10, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
} }, | |
'MS': { key: 'MS', position: [6,5], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
} }, | |
'MO': { key: 'MO', position: [5,3], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 10, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'MT': { key: 'MT', position: [3,1], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'NE': { key: 'NE', position: [4,3], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 4, elec2018: true },{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'NV': { key: 'NV', position: [2,2], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 6, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'NH': { key: 'NH', position: [10,0], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 4, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'NJ': { key: 'NJ', position: [9,2], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 14, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'NM': { key: 'NM', position: [3,4], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 5, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'NY': { key: 'NY', position: [9,1], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 29, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'NC': { key: 'NC', position: [7,4], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 15, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'ND': { key: 'ND', position: [4,1], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'OH': { key: 'OH', position: [7,2], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 18, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'OK': { key: 'OK', position: [4,5], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 7, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'OR': { key: 'OR', position: [1,2], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 7, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'PA': { key: 'PA', position: [8,2], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 20, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'RI': { key: 'RI', position: [11,1], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 4, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'SC': { key: 'SC', position: [8,4], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 9, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'SD': { key: 'SD', position: [4,2], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'TN': { key: 'TN', position: [6,4], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 11, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'TX': { key: 'TX', position: [4,6], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 38, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'UT': { key: 'UT', position: [2,3], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'VT': { key: 'VT', position: [9,0], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'I', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'VA': { key: 'VA', position: [8,3], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 13, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'WA': { key: 'WA', position: [1,1], levels: { | |
'P': [{ lastWinner: 'D', scenario: 'U', votes: 12, elec2018: true }], | |
'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'WV': { key: 'WV', position: [7,3], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 5, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'WI': { key: 'WI', position: [7,1], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 10, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
'WY': { key: 'WY', position: [3,2], levels: { | |
'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }], | |
'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }], | |
'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }], | |
} }, | |
}; | |
export default data; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@font-face{font-family:FlamaCond;font-style:normal;src:url(FlamaCond-Semibold_Alt_9_29_16_tilde.ttf)}@font-face{font-family:FlamaCond-Basic;font-style:normal;src:url(FlamaCond-Basic_Alt_9_29_16_tilde.ttf)}*{box-sizing:border-box}.container{margin:20px 8.333%;font-family:FlamaCond;position:relative}.container .big-labels{width:calc(100% - 20px);margin:0 10px;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:justify;justify-content:space-between;line-height:140px}.container .big-labels .big-label{font-size:160px}.markers{position:absolute;top:25px;color:#333;font-size:80px;width:100%}.markers .marker-number{text-align:center;position:relative}.markers .marker-number:after,.markers .marker-number:before{position:absolute;content:'';left:calc(50% - 22px);border-left:22px solid transparent;border-right:22px solid transparent}.markers .marker-number:before{top:80px;border-top:34px solid #333}.markers .marker-number:after{transition-property:top;transition-duration:.5s;top:136px;border-bottom:34px solid #333}.markers .marker-number.expanded:after{top:276px}.bars{position:relative;width:100%}.bars .bar,.bars .bar .text{position:absolute;transition-duration:.5s}.bars .bar{transition-property:width,left,height;height:20px}.bars .bar.expanded{height:160px}.bars .bar.loser{-webkit-filter:brightness(1.2);filter:brightness(1.2)}.bars .bar .text{right:10px;left:10px;width:calc(100% - 20px);transition-property:opacity,bottom;white-space:nowrap}.bars .bar .text .light{font-family:FlamaCond-Basic}.bars .bar .text.disappearL.label,.bars .bar .text.disappearV.value{opacity:0}.bars .bar .text.value{font-size:80px;bottom:40px;color:#fff}.bars .bar .text.value.major{font-size:120px;bottom:0}.bars .bar .text.label{font-size:50px;bottom:0;color:#000}.bars .bar .text.label.major{display:none} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!function(t){function e(c){if(n[c])return n[c].exports;var l=n[c]={i:c,l:!1,exports:{}};return t[c].call(l.exports,l,l.exports,e),l.l=!0,l.exports}var n={};e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,c){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:c})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=2)}([function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _data = __webpack_require__(1);\n\nvar _data2 = _interopRequireDefault(_data);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction datify(scenario, key) {\n\tvar _lookup$key = lookup[key],\n\t color = _lookup$key.color,\n\t label = _lookup$key.label,\n\t order = _lookup$key.order;\n\n\treturn {\n\t\tcolor: color, label: label, order: order, key: key,\n\t\tvalue: values[scenario][key],\n\t\tmajor: key === 'D' || key === 'R',\n\t\tminValue: key === 'LD' || key === 'LR' ? 'L' : key === 'U' ? 'M' : 'S',\n\t\talign: order === 3 ? 'center' : order < 3 ? 'left' : 'right'\n\t};\n}\n\nfunction compCount(data) {\n\tvar filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function (d) {\n\t\treturn true;\n\t};\n\tvar key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \"lastWinner\";\n\tvar defaults = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\treturn Object.values(data).reduce(function (t, v) {\n\t\treturn [].concat(_toConsumableArray(t), _toConsumableArray(v.levels['S'] ? v.levels['S'].filter(filter) : []));\n\t}, []).reduce(function (t, v) {\n\t\treturn _extends({}, t, _defineProperty({}, v[key], t[v[key]] ? t[v[key]] + v.votes : v.votes));\n\t}, defaults);\n}\n\nvar values = {\n\t'SABATO': {\n\t\t'D': 36,\n\t\t'LD': 6,\n\t\t'I': 2,\n\t\t'U': 7,\n\t\t'LR': 3,\n\t\t'R': 46\n\t},\n\t'Z70TOWIN': {\n\t\t'D': 35,\n\t\t'LD': 7,\n\t\t'I': 2,\n\t\t'U': 7,\n\t\t'LR': 4,\n\t\t'R': 45\n\t},\n\t'PRETTY': {\n\t\t'D': 15,\n\t\t'LD': 20,\n\t\t'I': 12,\n\t\t'U': 18,\n\t\t'LR': 20,\n\t\t'R': 15\n\t},\n\t'STATE DATA': compCount(_data2.default, function (d) {\n\t\treturn d.elec2018;\n\t}, \"scenario\", compCount(_data2.default, function (d) {\n\t\treturn !d.elec2018;\n\t}, \"lastWinner\", { 'LD': 0, 'LR': 0, 'I': 0, 'U': 0 }))\n};\n\nvar lookup = {\n\t'D': { color: '#005dc1', label: 'DEM', order: 0 },\n\t'LD': { color: '#4abfff', label: 'LIKELY DEM', order: 1 },\n\t'I': { color: '#525252', label: 'IND', order: 2 },\n\t'U': { color: 'black', label: 'TOSS UP', order: 3 },\n\t'NA': { color: '#efe4d2', label: 'Not Applicable', order: 4 },\n\t'LR': { color: '#f2927f', label: 'LIKELY REP', order: 5 },\n\t'R': { color: '#d31616', label: 'REP', order: 6 }\n};\n\nexports.default = Object.keys(values).reduce(function (t, p) {\n\treturn _extends({}, t, _defineProperty({}, p, Object.keys(values[p]).map(function (k, i) {\n\t\treturn datify(p, k);\n\t}).sort(function (a, b) {\n\t\treturn a.order - b.order;\n\t})));\n}, {});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9wcmVzZXRzLmpzP2NmNzAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0YXRlRGF0YSBmcm9tICcuL2RhdGEuanMnXG5cbmZ1bmN0aW9uIGRhdGlmeShzY2VuYXJpbywga2V5KXtcblx0Y29uc3QgeyBjb2xvciwgbGFiZWwsIG9yZGVyIH0gPSBsb29rdXBba2V5XVxuXHRyZXR1cm4ge1xuXHRcdGNvbG9yLCBsYWJlbCwgb3JkZXIsIGtleSxcblx0XHR2YWx1ZTogdmFsdWVzW3NjZW5hcmlvXVtrZXldLFxuXHRcdG1ham9yOiBrZXkgPT09ICdEJyB8fCBrZXkgPT09ICdSJyxcblx0XHRtaW5WYWx1ZToga2V5ID09PSAnTEQnIHx8IGtleSA9PT0gJ0xSJ1xuXHRcdFx0PyAnTCdcblx0XHRcdDoga2V5ID09PSAnVSdcblx0XHRcdFx0PyAnTSdcblx0XHRcdFx0OiAnUycsXG5cdFx0YWxpZ246IG9yZGVyID09PSAzIFxuXHRcdFx0PyAnY2VudGVyJyBcblx0XHRcdDogb3JkZXIgPCAzXG5cdFx0XHRcdD8gJ2xlZnQnXG5cdFx0XHRcdDogJ3JpZ2h0Jyxcblx0fVxufVxuXG5mdW5jdGlvbiBjb21wQ291bnQoZGF0YSwgZmlsdGVyPWQ9PnRydWUsIGtleT1cImxhc3RXaW5uZXJcIiwgZGVmYXVsdHM9e30pe1xuXHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhkYXRhKVxuXHRcdC5yZWR1Y2UoKHQsdikgPT4gWyAuLi50LCAuLi4odi5sZXZlbHNbJ1MnXSA/IHYubGV2ZWxzWydTJ10uZmlsdGVyKGZpbHRlcikgOiBbXSldLCBbXSlcblx0XHQucmVkdWNlKCh0LHYpID0+ICh7IFxuXHRcdCAgXHQuLi50LCBcblx0XHQgICAgW3Zba2V5XV06IHRbdltrZXldXSA/IHRbdltrZXldXSArIHYudm90ZXMgOiB2LnZvdGVzXG5cdFx0ICB9KSwgZGVmYXVsdHMpXG59XG5cbmNvbnN0IHZhbHVlcyA9IHtcblx0J1NBQkFUTyc6IHtcblx0XHQnRCc6IDM2LFxuXHRcdCdMRCc6IDYsXG5cdFx0J0knOiAyLFxuXHRcdCdVJzogNyxcblx0XHQnTFInOiAzLFxuXHRcdCdSJzogNDYsXHRcdFxuXHR9LFxuXHQnWjcwVE9XSU4nOiB7XG5cdFx0J0QnOiAzNSxcblx0XHQnTEQnOiA3LFxuXHRcdCdJJzogMixcblx0XHQnVSc6IDcsXG5cdFx0J0xSJzogNCxcblx0XHQnUic6IDQ1LFxuXHR9LFxuXHQnUFJFVFRZJzoge1xuXHRcdCdEJzogMTUsXG5cdFx0J0xEJzogMjAsXG5cdFx0J0knOiAxMixcblx0XHQnVSc6IDE4LFxuXHRcdCdMUic6IDIwLFxuXHRcdCdSJzogMTVcblx0fSxcblx0J1NUQVRFIERBVEEnOiBjb21wQ291bnQoXG5cdFx0c3RhdGVEYXRhLCBcblx0XHRkID0+IGQuZWxlYzIwMTgsIFxuXHRcdFwic2NlbmFyaW9cIixcblx0XHRjb21wQ291bnQoXG5cdFx0XHRzdGF0ZURhdGEsIFxuXHRcdFx0ZCA9PiAhZC5lbGVjMjAxOCwgXG5cdFx0XHRcImxhc3RXaW5uZXJcIixcblx0XHRcdHsgJ0xEJzogMCwgJ0xSJzogMCwgJ0knOiAwLCAnVSc6IDAgfVxuXHRcdClcblx0KVxufVxuXG5jb25zdCBsb29rdXAgPSB7IFxuXHQnRCc6IHsgY29sb3I6ICcjMDA1ZGMxJywgbGFiZWw6J0RFTScsIG9yZGVyOiAwIH0sXG5cdCdMRCc6IHsgY29sb3I6ICcjNGFiZmZmJywgbGFiZWw6J0xJS0VMWSBERU0nLCBvcmRlcjogMSB9LFxuXHQnSSc6IHsgY29sb3I6ICcjNTI1MjUyJywgbGFiZWw6J0lORCcsIG9yZGVyOiAyIH0sXG5cdCdVJzogeyBjb2xvcjogJ2JsYWNrJywgbGFiZWw6J1RPU1MgVVAnLCBvcmRlcjogMyB9LFxuXHQnTkEnOiB7IGNvbG9yOiAnI2VmZTRkMicsIGxhYmVsOidOb3QgQXBwbGljYWJsZScsIG9yZGVyOiA0IH0sXG5cdCdMUic6IHsgY29sb3I6ICcjZjI5MjdmJywgbGFiZWw6J0xJS0VMWSBSRVAnLCBvcmRlcjogNSB9LFxuXHQnUic6IHsgY29sb3I6ICcjZDMxNjE2JywgbGFiZWw6J1JFUCcsIG9yZGVyOiA2IH0sXG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5rZXlzKHZhbHVlcykucmVkdWNlKCh0LHApID0+ICh7XG5cdC4uLnQsXG5cdFtwXTogT2JqZWN0LmtleXModmFsdWVzW3BdKVxuXHRcdC5tYXAoKGssaSkgPT4gZGF0aWZ5KHAsIGspKVxuXHRcdC5zb3J0KChhLGIpID0+IGEub3JkZXIgLSBiLm9yZGVyKVxufSkse30pXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHByZXNldHMuanMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTs7Ozs7Ozs7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBVEE7QUFlQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkE7QUFRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQU5BO0FBUUE7QUFFQTtBQUFBO0FBSUE7QUFBQTtBQS9CQTtBQUNBO0FBcUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQTtBQUNBO0FBU0E7QUFBQTtBQUdBO0FBQUE7QUFDQTtBQUFBO0FBSkEiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///0\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n/*** data: each U.S. State with hard-coded positions in tile map\n\tand one race in races array per race this year ***/\nvar data = {\n\t'AL': { key: 'AL', position: [7, 5], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 9, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'AK': { key: 'AK', position: [0, 0], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'I', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'AZ': { key: 'AZ', position: [2, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 11, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'AR': { key: 'AR', position: [5, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'CA': { key: 'CA', position: [1, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 55, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'CO': { key: 'CO', position: [3, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 9, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'CT': { key: 'CT', position: [10, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 7, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'DE': { key: 'DE', position: [10, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'DC': { key: 'DC', position: [9, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'NA', scenario: 'U', votes: 0, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'NA', scenario: 'U', votes: 0, elec2018: false }, { lastWinner: 'NA', scenario: 'U', votes: 0, elec2018: false }]\n\t\t} },\n\t'FL': { key: 'FL', position: [9, 6], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 29, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'GA': { key: 'GA', position: [8, 5], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 16, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'HI': { key: 'HI', position: [0, 6], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 4, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'ID': { key: 'ID', position: [2, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 4, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'IL': { key: 'IL', position: [6, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 20, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'IN': { key: 'IN', position: [6, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 11, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'IA': { key: 'IA', position: [5, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'KS': { key: 'KS', position: [4, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'KY': { key: 'KY', position: [6, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 8, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'LA': { key: 'LA', position: [5, 5], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 8, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'ME': { key: 'ME', position: [11, 0], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'I', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'MD': { key: 'MD', position: [9, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 10, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'MA': { key: 'MA', position: [10, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 11, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'MI': { key: 'MI', position: [8, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 16, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'MN': { key: 'MN', position: [5, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 10, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }]\n\t\t} },\n\t'MS': { key: 'MS', position: [6, 5], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }]\n\t\t} },\n\t'MO': { key: 'MO', position: [5, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 10, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'MT': { key: 'MT', position: [3, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'NE': { key: 'NE', position: [4, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 4, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'NV': { key: 'NV', position: [2, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 6, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'NH': { key: 'NH', position: [10, 0], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 4, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'NJ': { key: 'NJ', position: [9, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 14, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'NM': { key: 'NM', position: [3, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 5, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'NY': { key: 'NY', position: [9, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 29, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'NC': { key: 'NC', position: [7, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 15, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'ND': { key: 'ND', position: [4, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'OH': { key: 'OH', position: [7, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 18, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'OK': { key: 'OK', position: [4, 5], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 7, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'OR': { key: 'OR', position: [1, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 7, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'PA': { key: 'PA', position: [8, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 20, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'RI': { key: 'RI', position: [11, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 4, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'SC': { key: 'SC', position: [8, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 9, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'SD': { key: 'SD', position: [4, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'TN': { key: 'TN', position: [6, 4], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 11, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'TX': { key: 'TX', position: [4, 6], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 38, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'UT': { key: 'UT', position: [2, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 6, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'VT': { key: 'VT', position: [9, 0], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'I', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'VA': { key: 'VA', position: [8, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 13, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'WA': { key: 'WA', position: [1, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'D', scenario: 'U', votes: 12, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'D', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'D', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'WV': { key: 'WV', position: [7, 3], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 5, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: false }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'WI': { key: 'WI', position: [7, 1], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 10, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'D', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} },\n\t'WY': { key: 'WY', position: [3, 2], levels: {\n\t\t\t'P': [{ lastWinner: 'R', scenario: 'U', votes: 3, elec2018: true }],\n\t\t\t'G': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }],\n\t\t\t'S': [{ lastWinner: 'R', scenario: 'U', votes: 1, elec2018: true }, { lastWinner: 'R', scenario: 'U', votes: 1, elec2018: false }]\n\t\t} }\n};\nexports.default = data;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMS5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9kYXRhLmpzP2E1YTAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqKiBkYXRhOiBlYWNoIFUuUy4gU3RhdGUgd2l0aCBoYXJkLWNvZGVkIHBvc2l0aW9ucyBpbiB0aWxlIG1hcFxuXHRhbmQgb25lIHJhY2UgaW4gcmFjZXMgYXJyYXkgcGVyIHJhY2UgdGhpcyB5ZWFyICoqKi9cbmNvbnN0IGRhdGEgPSB7XG5cdCdBTCc6IHsga2V5OiAnQUwnLCBwb3NpdGlvbjogWzcsNV0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogOSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9LCB7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fX0sXG5cdCdBSyc6IHsga2V5OiAnQUsnLCBwb3NpdGlvbjogWzAsMF0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnSScsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnQVonOiB7IGtleTogJ0FaJywgcG9zaXRpb246IFsyLDRdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDExLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J0FSJzogeyBrZXk6ICdBUicsIHBvc2l0aW9uOiBbNSw0XSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiA2LCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH0sIHsgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdDQSc6IHsga2V5OiAnQ0EnLCBwb3NpdGlvbjogWzEsM10sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNTUsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnQ08nOiB7IGtleTogJ0NPJywgcG9zaXRpb246IFszLDNdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDksIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J0NUJzogeyBrZXk6ICdDVCcsIHBvc2l0aW9uOiBbMTAsMl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNywgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdERSc6IHsga2V5OiAnREUnLCBwb3NpdGlvbjogWzEwLDNdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDMsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J0RDJzogeyBrZXk6ICdEQycsIHBvc2l0aW9uOiBbOSw0XSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAzLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdOQScsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAwLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnTkEnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMCwgZWxlYzIwMTg6IGZhbHNlIH0seyBsYXN0V2lubmVyOiAnTkEnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMCwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdGTCc6IHsga2V5OiAnRkwnLCBwb3NpdGlvbjogWzksNl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMjksIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnR0EnOiB7IGtleTogJ0dBJywgcG9zaXRpb246IFs4LDVdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDE2LCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH0sIHsgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdISSc6IHsga2V5OiAnSEknLCBwb3NpdGlvbjogWzAsNl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNCwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdJRCc6IHsga2V5OiAnSUQnLCBwb3NpdGlvbjogWzIsMV0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNCwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnSUwnOiB7IGtleTogJ0lMJywgcG9zaXRpb246IFs2LDFdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDIwLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdJTic6IHsga2V5OiAnSU4nLCBwb3NpdGlvbjogWzYsMl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMTEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSAsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdJQSc6IHsga2V5OiAnSUEnLCBwb3NpdGlvbjogWzUsMl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNiwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnS1MnOiB7IGtleTogJ0tTJywgcG9zaXRpb246IFs0LDRdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDYsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J0tZJzogeyBrZXk6ICdLWScsIHBvc2l0aW9uOiBbNiwzXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiA4LCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDMsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnTEEnOiB7IGtleTogJ0xBJywgcG9zaXRpb246IFs1LDVdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDgsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH0sIHsgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdNRSc6IHsga2V5OiAnTUUnLCBwb3NpdGlvbjogWzExLDBdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDMsIGVsZWMyMDE4OiB0cnVlIH0seyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0knLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J01EJzogeyBrZXk6ICdNRCcsIHBvc2l0aW9uOiBbOSwzXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxMCwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdNQSc6IHsga2V5OiAnTUEnLCBwb3NpdGlvbjogWzEwLDFdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDExLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J01JJzogeyBrZXk6ICdNSScsIHBvc2l0aW9uOiBbOCwxXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxNiwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEgLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnTU4nOiB7IGtleTogJ01OJywgcG9zaXRpb246IFs1LDFdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEwLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0fSB9LFxuXHQnTVMnOiB7IGtleTogJ01TJywgcG9zaXRpb246IFs2LDVdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDYsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0fSAgfSxcblx0J01PJzogeyBrZXk6ICdNTycsIHBvc2l0aW9uOiBbNSwzXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxMCwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAzLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnTVQnOiB7IGtleTogJ01UJywgcG9zaXRpb246IFszLDFdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDMsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J05FJzogeyBrZXk6ICdORScsIHBvc2l0aW9uOiBbNCwzXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiA0LCBlbGVjMjAxODogdHJ1ZSAgfSx7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnTlYnOiB7IGtleTogJ05WJywgcG9zaXRpb246IFsyLDJdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDYsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnTkgnOiB7IGtleTogJ05IJywgcG9zaXRpb246IFsxMCwwXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiA0LCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdOSic6IHsga2V5OiAnTkonLCBwb3NpdGlvbjogWzksMl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMTQsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J05NJzogeyBrZXk6ICdOTScsIHBvc2l0aW9uOiBbMyw0XSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiA1LCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J05ZJzogeyBrZXk6ICdOWScsIHBvc2l0aW9uOiBbOSwxXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAyOSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdOQyc6IHsga2V5OiAnTkMnLCBwb3NpdGlvbjogWzcsNF0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMTUsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH0sIHsgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdORCc6IHsga2V5OiAnTkQnLCBwb3NpdGlvbjogWzQsMV0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAzLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnT0gnOiB7IGtleTogJ09IJywgcG9zaXRpb246IFs3LDJdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDE4LCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J09LJzogeyBrZXk6ICdPSycsIHBvc2l0aW9uOiBbNCw1XSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiA3LCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH0sIHsgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdPUic6IHsga2V5OiAnT1InLCBwb3NpdGlvbjogWzEsMl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNywgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9LCB7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnUEEnOiB7IGtleTogJ1BBJywgcG9zaXRpb246IFs4LDJdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDIwLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J1JJJzogeyBrZXk6ICdSSScsIHBvc2l0aW9uOiBbMTEsMV0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNCwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdTQyc6IHsga2V5OiAnU0MnLCBwb3NpdGlvbjogWzgsNF0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogOSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnU0QnOiB7IGtleTogJ1NEJywgcG9zaXRpb246IFs0LDJdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDMsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J1ROJzogeyBrZXk6ICdUTicsIHBvc2l0aW9uOiBbNiw0XSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdUWCc6IHsga2V5OiAnVFgnLCBwb3NpdGlvbjogWzQsNl0sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMzgsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnVVQnOiB7IGtleTogJ1VUJywgcG9zaXRpb246IFsyLDNdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDYsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdHJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMywgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J1ZUJzogeyBrZXk6ICdWVCcsIHBvc2l0aW9uOiBbOSwwXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAzLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0knLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J1ZBJzogeyBrZXk6ICdWQScsIHBvc2l0aW9uOiBbOCwzXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxMywgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAzLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnV0EnOiB7IGtleTogJ1dBJywgcG9zaXRpb246IFsxLDFdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEyLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDMsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0XHQnUyc6IFt7IGxhc3RXaW5uZXI6ICdEJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH0sIHsgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IGZhbHNlIH1dLFxuXHR9IH0sXG5cdCdXVic6IHsga2V5OiAnV1YnLCBwb3NpdGlvbjogWzcsM10sIGxldmVsczoge1xuXHRcdCdQJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogNSwgZWxlYzIwMTg6IHRydWUgfV0sXG5cdFx0J0cnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAzLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdFx0J1MnOiBbeyBsYXN0V2lubmVyOiAnRCcsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogdHJ1ZSB9LCB7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiBmYWxzZSB9XSxcblx0fSB9LFxuXHQnV0knOiB7IGtleTogJ1dJJywgcG9zaXRpb246IFs3LDFdLCBsZXZlbHM6IHtcblx0XHQnUCc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEwLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ0QnLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcblx0J1dZJzogeyBrZXk6ICdXWScsIHBvc2l0aW9uOiBbMywyXSwgbGV2ZWxzOiB7XG5cdFx0J1AnOiBbeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAzLCBlbGVjMjAxODogdHJ1ZSB9XSxcblx0XHQnRyc6IFt7IGxhc3RXaW5uZXI6ICdSJywgc2NlbmFyaW86ICdVJywgdm90ZXM6IDEsIGVsZWMyMDE4OiB0cnVlIH1dLFxuXHRcdCdTJzogW3sgbGFzdFdpbm5lcjogJ1InLCBzY2VuYXJpbzogJ1UnLCB2b3RlczogMSwgZWxlYzIwMTg6IHRydWUgfSwgeyBsYXN0V2lubmVyOiAnUicsIHNjZW5hcmlvOiAnVScsIHZvdGVzOiAxLCBlbGVjMjAxODogZmFsc2UgfV0sXG5cdH0gfSxcbn07XG5leHBvcnQgZGVmYXVsdCBkYXRhO1xuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBkYXRhLmpzIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBSEE7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUhBO0FBM1BBO0FBaVFBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1\n")},function(module,exports,__webpack_require__){"use strict";eval("\n\nvar _presets = __webpack_require__(0);\n\nvar _presets2 = _interopRequireDefault(_presets);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*** global params ***/\nvar props = {\n\tpreset: 'STATE DATA', // choose from ['SABATO', 'Z20TOWIN', 'PRETTY', 'STATE DATA']\n\tpresets: _presets2.default,\n\texpanded: true\n\n\t/*** Helper functions/utilities ***/\n};var createMerge = function createMerge(parent, el, cl, data, acc) {\n\tvar sel = parent.selectAll(el + (cl ? cl.split(' ').map(function (c) {\n\t\treturn '.' + c;\n\t}).join('') : '')).data(data, function (d) {\n\t\treturn acc && acc(d);\n\t});\n\tsel.exit().remove();\n\treturn sel.enter().append(el).attr('class', cl).merge(sel);\n};\nvar createOnce = function createOnce(parent, el, cl) {\n\treturn createMerge(parent, el, cl, [null]);\n};\n\n/*** Functions attached to DOM elements to set behavior/style/attrs ***/\nfunction getTextTween(d) {\n\tvar that = d3.select(this);\n\tvar i = d3.interpolateNumber(+that.text(), d.value);\n\treturn function (t) {\n\t\treturn that.text(Math.round(i(t)));\n\t};\n}\n\nfunction getNumTextTween(d) {\n\tvar that = d3.select(this);\n\tvar text = +((that.text() || '0').match(/[0-9]+/g) || ['0'])[0];\n\tvar i = d3.interpolateNumber(text, d.value);\n\treturn function (t) {\n\t\treturn that.text(d.key + Math.round(i(t)));\n\t};\n}\n\nfunction getDisappearStatus(type, max) {\n\tvar minValueLookup = {\n\t\tXS: max * (32 / 411),\n\t\tS: max * (49 / 411),\n\t\tM: max * (65 / 411),\n\t\tL: max * (80 / 411)\n\t};\n\treturn {\n\t\tvalue: function value(d) {\n\t\t\treturn d.major ? d.value < minValueLookup[d.minValue] : d.value < minValueLookup.XS;\n\t\t},\n\t\tlabel: function label(d) {\n\t\t\treturn d.value < minValueLookup[d.minValue];\n\t\t}\n\t}[type];\n}\n\nfunction getTextLabelHtml(d, i) {\n\treturn d.key === 'LD' || d.key === 'LR' ? '<span>' + d.label.split(' ')[0] + '</span> <span class=\"light\">' + d.label.split(' ')[1] + '</span>' : '<span>' + d.label + '</span>';\n}\n\nfunction getTextLabelColor(d) {\n\treturn {\n\t\t'LD': '#005dc1',\n\t\t'LR': '#d31616',\n\t\t'U': '#fff'\n\t}[d.key] || 'black';\n}\n\nfunction getBigLabelColor(d) {\n\treturn {\n\t\t'D': '#005dc1',\n\t\t'R': '#d31616'\n\t}[d.key];\n}\n\nfunction render() {\n\tvar loser = props.loser,\n\t preset = props.preset,\n\t expanded = props.expanded,\n\t presets = props.presets;\n\n\tvar data = presets[preset];\n\tdata.forEach(function (e, i, a) {\n\t\te.v0 = i === 0 ? 0 : a[i - 1].v1;\n\t\te.v1 = e.v0 + e.value;\n\t});\n\tvar max = data[data.length - 1].v1;\n\tvar xScale = d3.scaleLinear().domain([0, max]).range([0, 100]); //% scale\n\n\tvar body = d3.select('body');\n\tvar container = createOnce(body, 'div', 'container');\n\n\tvar labels = createOnce(container, 'div', 'big-labels');\n\tvar label = createMerge(labels, 'div', 'big-label', data.filter(function (d) {\n\t\treturn d.major;\n\t}), function (d) {\n\t\treturn d.key;\n\t}).style('color', getBigLabelColor);\n\tif (expanded) {\n\t\tlabel.text(function (d) {\n\t\t\treturn d.label;\n\t\t});\n\t} else {\n\t\tlabel.transition().duration(500).tween('text', getNumTextTween);\n\t}\n\n\tvar halfway = Math.round(.5 * max);\n\tvar markers = createOnce(container, 'div', 'markers');\n\tvar number = createOnce(markers, 'div', 'marker-number').classed('expanded', expanded).text(halfway);\n\n\tvar bars = createOnce(container, 'div', 'bars');\n\tvar bar = createMerge(bars, 'div', 'bar', data, function (d) {\n\t\treturn d.key;\n\t}).classed('expanded', expanded).classed('loser', function (d) {\n\t\treturn d.key === loser;\n\t}).style('width', function (d) {\n\t\treturn xScale(d.value) + '%';\n\t}).style('left', function (d) {\n\t\treturn xScale(d.v0) + '%';\n\t}).style('background', function (d) {\n\t\treturn d.color;\n\t}).on('click', function (d) {\n\t\treturn toggleCount(d);\n\t});\n\n\tvar textValue = createMerge(bar, 'div', 'text value', function (d) {\n\t\treturn expanded ? [d] : [];\n\t}).classed('disappearV', getDisappearStatus('value', max)).classed('major', function (d) {\n\t\treturn d.major;\n\t}).style('text-align', function (d) {\n\t\treturn d.align;\n\t});\n\ttextValue.transition().duration(500).tween('text', getTextTween);\n\n\tvar textLabel = createMerge(bar, 'div', 'text label', function (d) {\n\t\treturn expanded ? [d] : [];\n\t}).classed('disappearL', getDisappearStatus('label', max)).classed('major', function (d) {\n\t\treturn d.major;\n\t}).style('color', getTextLabelColor).style('text-align', function (d) {\n\t\treturn d.align;\n\t}).html(getTextLabelHtml);\n}\n\nrender();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMi5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy9zY3JpcHQuanM/OWE5NSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcHJlc2V0cyBmcm9tICcuL3ByZXNldHMuanMnXG5cbi8qKiogZ2xvYmFsIHBhcmFtcyAqKiovXG5sZXQgcHJvcHMgPSB7XG5cdHByZXNldDogJ1NUQVRFIERBVEEnLCAvLyBjaG9vc2UgZnJvbSBbJ1NBQkFUTycsICdaMjBUT1dJTicsICdQUkVUVFknLCAnU1RBVEUgREFUQSddXG5cdHByZXNldHMsXG5cdGV4cGFuZGVkOiB0cnVlLFxufVxuXG4vKioqIEhlbHBlciBmdW5jdGlvbnMvdXRpbGl0aWVzICoqKi9cbmNvbnN0IGNyZWF0ZU1lcmdlID0gKHBhcmVudCwgZWwsIGNsLCBkYXRhLCBhY2MpID0+e1xuXHRjb25zdCBzZWwgPSBwYXJlbnQuc2VsZWN0QWxsKGVsKyAoY2wgPyBjbC5zcGxpdCgnICcpLm1hcChjID0+ICcuJytjKS5qb2luKCcnKSA6ICcnKSlcblx0XHQuZGF0YShkYXRhLCBkID0+IGFjYyAmJiBhY2MoZCkpXG5cdHNlbC5leGl0KCkucmVtb3ZlKClcblx0cmV0dXJuIHNlbFxuXHRcdC5lbnRlcigpLmFwcGVuZChlbClcblx0XHQuYXR0cignY2xhc3MnLGNsKVxuXHRcdC5tZXJnZShzZWwpXG59XG5jb25zdCBjcmVhdGVPbmNlID0gKHBhcmVudCwgZWwsIGNsKSA9PiBjcmVhdGVNZXJnZShwYXJlbnQsIGVsLCBjbCwgW251bGxdKVxuXG4vKioqIEZ1bmN0aW9ucyBhdHRhY2hlZCB0byBET00gZWxlbWVudHMgdG8gc2V0IGJlaGF2aW9yL3N0eWxlL2F0dHJzICoqKi9cbmZ1bmN0aW9uIGdldFRleHRUd2VlbihkKXtcblx0Y29uc3QgdGhhdCA9IGQzLnNlbGVjdCh0aGlzKVxuXHRsZXQgaSA9IGQzLmludGVycG9sYXRlTnVtYmVyKCt0aGF0LnRleHQoKSwgZC52YWx1ZSk7XG5cdHJldHVybiBmdW5jdGlvbih0KXtcblx0XHRyZXR1cm4gdGhhdC50ZXh0KE1hdGgucm91bmQoaSh0KSkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGdldE51bVRleHRUd2VlbihkKXtcblx0Y29uc3QgdGhhdCA9IGQzLnNlbGVjdCh0aGlzKVxuXHRjb25zdCB0ZXh0ID0gKygoKHRoYXQudGV4dCgpIHx8ICcwJykubWF0Y2goL1swLTldKy9nKSB8fCBbJzAnXSlbMF0pXG5cdGxldCBpID0gZDMuaW50ZXJwb2xhdGVOdW1iZXIodGV4dCwgZC52YWx1ZSk7XG5cdHJldHVybiBmdW5jdGlvbih0KXtcblx0XHRyZXR1cm4gdGhhdC50ZXh0KGQua2V5ICsgTWF0aC5yb3VuZChpKHQpKSk7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0RGlzYXBwZWFyU3RhdHVzKHR5cGUsIG1heCl7XG5cdGNvbnN0IG1pblZhbHVlTG9va3VwID0ge1xuXHRcdFhTOiBtYXgqKDMyIC8gNDExKSxcblx0XHRTOiBtYXgqKDQ5IC8gNDExKSxcblx0XHRNOiBtYXgqKDY1IC8gNDExKSxcblx0XHRMOiBtYXgqKDgwIC8gNDExKVxuXHR9XG5cdHJldHVybiB7XG5cdFx0dmFsdWU6IGQgPT4gZC5tYWpvciBcblx0XHRcdD8gZC52YWx1ZSA8IG1pblZhbHVlTG9va3VwW2QubWluVmFsdWVdIFxuXHRcdFx0OiBkLnZhbHVlIDwgbWluVmFsdWVMb29rdXAuWFMsXG5cdFx0bGFiZWw6IGQgPT4gZC52YWx1ZSA8IG1pblZhbHVlTG9va3VwW2QubWluVmFsdWVdIFxuXHR9W3R5cGVdXG59XG5cbmZ1bmN0aW9uIGdldFRleHRMYWJlbEh0bWwoZCxpKXtcblx0cmV0dXJuIChkLmtleSA9PT0gJ0xEJyB8fCBkLmtleSA9PT0gJ0xSJylcblx0XHQ/IGA8c3Bhbj4ke2QubGFiZWwuc3BsaXQoJyAnKVswXX08L3NwYW4+IDxzcGFuIGNsYXNzPVwibGlnaHRcIj4ke2QubGFiZWwuc3BsaXQoJyAnKVsxXX08L3NwYW4+YFxuXHRcdDogYDxzcGFuPiR7ZC5sYWJlbH08L3NwYW4+YFxufVxuXG5mdW5jdGlvbiBnZXRUZXh0TGFiZWxDb2xvcihkKXtcblx0cmV0dXJuIHtcblx0XHQnTEQnOiAnIzAwNWRjMScsXG5cdFx0J0xSJzogJyNkMzE2MTYnLFxuXHRcdCdVJzogJyNmZmYnLFxuXHR9W2Qua2V5XSB8fCAnYmxhY2snXG59XG5cbmZ1bmN0aW9uIGdldEJpZ0xhYmVsQ29sb3IoZCl7XG5cdHJldHVybiB7XG5cdFx0J0QnOiAnIzAwNWRjMScsXG5cdFx0J1InOiAnI2QzMTYxNidcblx0fVtkLmtleV1cbn1cblxuZnVuY3Rpb24gcmVuZGVyKCl7XG5cdGNvbnN0IHsgbG9zZXIsIHByZXNldCwgZXhwYW5kZWQsIHByZXNldHMgfSA9IHByb3BzXG5cdGNvbnN0IGRhdGEgPSBwcmVzZXRzW3ByZXNldF1cblx0ZGF0YS5mb3JFYWNoKChlLGksYSkgPT4ge1xuXHRcdGUudjAgPSBpID09PSAwID8gMCA6IGFbaS0xXS52MVxuXHRcdGUudjEgPSBlLnYwICsgZS52YWx1ZVxuXHR9KVxuXHRjb25zdCBtYXggPSBkYXRhW2RhdGEubGVuZ3RoIC0gMV0udjFcblx0Y29uc3QgeFNjYWxlID0gZDMuc2NhbGVMaW5lYXIoKVxuXHRcdC5kb21haW4oWzAsIG1heF0pXG5cdFx0LnJhbmdlKFswLCAxMDBdKSAvLyUgc2NhbGVcblxuXHRjb25zdCBib2R5ID0gZDMuc2VsZWN0KCdib2R5Jylcblx0Y29uc3QgY29udGFpbmVyID0gY3JlYXRlT25jZShib2R5LCAnZGl2JywgJ2NvbnRhaW5lcicpXG5cblx0bGV0IGxhYmVscyA9IGNyZWF0ZU9uY2UoY29udGFpbmVyLCAnZGl2JywgJ2JpZy1sYWJlbHMnKVxuXHRsZXQgbGFiZWwgPSBjcmVhdGVNZXJnZShsYWJlbHMsICdkaXYnLCAnYmlnLWxhYmVsJywgZGF0YS5maWx0ZXIoZCA9PiBkLm1ham9yKSwgZCA9PiBkLmtleSlcblx0XHQuc3R5bGUoJ2NvbG9yJywgZ2V0QmlnTGFiZWxDb2xvcilcblx0aWYoZXhwYW5kZWQpe1x0XG5cdFx0bGFiZWwudGV4dChkID0+IGQubGFiZWwpXG5cdH0gZWxzZSB7XG5cdFx0bGFiZWwudHJhbnNpdGlvbigpXG5cdFx0XHQuZHVyYXRpb24oNTAwKVxuXHRcdFx0LnR3ZWVuKCd0ZXh0JywgZ2V0TnVtVGV4dFR3ZWVuKVxuXHR9XG5cblx0Y29uc3QgaGFsZndheSA9IE1hdGgucm91bmQoLjUqbWF4KVxuXHRsZXQgbWFya2VycyA9IGNyZWF0ZU9uY2UoY29udGFpbmVyLCAnZGl2JywgJ21hcmtlcnMnKVxuXHRsZXQgbnVtYmVyID0gY3JlYXRlT25jZShtYXJrZXJzLCAnZGl2JywgJ21hcmtlci1udW1iZXInKVxuXHRcdC5jbGFzc2VkKCdleHBhbmRlZCcsIGV4cGFuZGVkKVxuXHRcdC50ZXh0KGhhbGZ3YXkpXG5cblx0bGV0IGJhcnMgPSBjcmVhdGVPbmNlKGNvbnRhaW5lciwgJ2RpdicsICdiYXJzJylcblx0bGV0IGJhciA9IGNyZWF0ZU1lcmdlKGJhcnMsICdkaXYnLCAnYmFyJywgZGF0YSwgZCA9PiBkLmtleSlcblx0XHQuY2xhc3NlZCgnZXhwYW5kZWQnLCBleHBhbmRlZClcblx0XHQuY2xhc3NlZCgnbG9zZXInLCBkID0+IGQua2V5ID09PSBsb3Nlcilcblx0XHQuc3R5bGUoJ3dpZHRoJywgZCA9PiB4U2NhbGUoZC52YWx1ZSkrJyUnKVxuXHRcdC5zdHlsZSgnbGVmdCcsIGQgPT4geFNjYWxlKGQudjApKyclJylcblx0XHQuc3R5bGUoJ2JhY2tncm91bmQnLCBkID0+IGQuY29sb3IpXG5cdFx0Lm9uKCdjbGljaycsIGQgPT4gdG9nZ2xlQ291bnQoZCkpXG5cblx0bGV0IHRleHRWYWx1ZSA9IGNyZWF0ZU1lcmdlKGJhciwgJ2RpdicsICd0ZXh0IHZhbHVlJywgZCA9PiBleHBhbmRlZCA/IFtkXSA6IFtdKVxuXHRcdC5jbGFzc2VkKCdkaXNhcHBlYXJWJywgZ2V0RGlzYXBwZWFyU3RhdHVzKCd2YWx1ZScsIG1heCkpXG5cdFx0LmNsYXNzZWQoJ21ham9yJywgZCA9PiBkLm1ham9yKVxuXHRcdC5zdHlsZSgndGV4dC1hbGlnbicsIGQgPT4gZC5hbGlnbilcblx0dGV4dFZhbHVlLnRyYW5zaXRpb24oKVxuXHRcdC5kdXJhdGlvbig1MDApXG5cdFx0LnR3ZWVuKCd0ZXh0JywgZ2V0VGV4dFR3ZWVuKVxuXG5cdGxldCB0ZXh0TGFiZWwgPSBjcmVhdGVNZXJnZShiYXIsICdkaXYnLCAndGV4dCBsYWJlbCcsIGQgPT4gZXhwYW5kZWQgPyBbZF0gOiBbXSlcblx0XHQuY2xhc3NlZCgnZGlzYXBwZWFyTCcsIGdldERpc2FwcGVhclN0YXR1cygnbGFiZWwnLCBtYXgpKVxuXHRcdC5jbGFzc2VkKCdtYWpvcicsIGQgPT4gZC5tYWpvcilcblx0XHQuc3R5bGUoJ2NvbG9yJywgZ2V0VGV4dExhYmVsQ29sb3IpXG5cdFx0LnN0eWxlKCd0ZXh0LWFsaWduJywgZCA9PiBkLmFsaWduKVxuXHRcdC5odG1sKGdldFRleHRMYWJlbEh0bWwpXG59XG5cbnJlbmRlcigpXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc2NyaXB0LmpzIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0E7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFOQTtBQVFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUpBO0FBTUE7QUFDQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBQUE7QUFKQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFIQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUZBO0FBSUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///2\n")}]); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@font-face | |
font-family FlamaCond | |
font-style normal | |
src url(./FlamaCond-Semibold_Alt_9_29_16_tilde.ttf) | |
@font-face | |
font-family FlamaCond-Basic | |
font-style normal | |
src url(./FlamaCond-Basic_Alt_9_29_16_tilde.ttf) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<title>Compositions</title> | |
<link href='dist.css' rel='stylesheet' /> | |
<link rel="shortcut icon" href="./favicon.ico"> | |
<body> | |
<script src='https://d3js.org/d3.v5.min.js'></script> | |
<script src='dist.js'></script> | |
</body> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"lockfileVersion": 1 | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"standard": { | |
"globals": [ | |
"d3" | |
] | |
}, | |
"dependencies": {} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import stateData from './data.js' | |
function datify(scenario, key){ | |
const { color, label, order } = lookup[key] | |
return { | |
color, label, order, key, | |
value: values[scenario][key], | |
major: key === 'D' || key === 'R', | |
minValue: key === 'LD' || key === 'LR' | |
? 'L' | |
: key === 'U' | |
? 'M' | |
: 'S', | |
align: order === 3 | |
? 'center' | |
: order < 3 | |
? 'left' | |
: 'right', | |
} | |
} | |
function compCount(data, filter=d=>true, key="lastWinner", defaults={}){ | |
return Object.values(data) | |
.reduce((t,v) => [ ...t, ...(v.levels['S'] ? v.levels['S'].filter(filter) : [])], []) | |
.reduce((t,v) => ({ | |
...t, | |
[v[key]]: t[v[key]] ? t[v[key]] + v.votes : v.votes | |
}), defaults) | |
} | |
const values = { | |
'SABATO': { | |
'D': 36, | |
'LD': 6, | |
'I': 2, | |
'U': 7, | |
'LR': 3, | |
'R': 46, | |
}, | |
'Z70TOWIN': { | |
'D': 35, | |
'LD': 7, | |
'I': 2, | |
'U': 7, | |
'LR': 4, | |
'R': 45, | |
}, | |
'PRETTY': { | |
'D': 15, | |
'LD': 20, | |
'I': 12, | |
'U': 18, | |
'LR': 20, | |
'R': 15 | |
}, | |
'STATE DATA': compCount( | |
stateData, | |
d => d.elec2018, | |
"scenario", | |
compCount( | |
stateData, | |
d => !d.elec2018, | |
"lastWinner", | |
{ 'LD': 0, 'LR': 0, 'I': 0, 'U': 0 } | |
) | |
) | |
} | |
const lookup = { | |
'D': { color: '#005dc1', label:'DEM', order: 0 }, | |
'LD': { color: '#4abfff', label:'LIKELY DEM', order: 1 }, | |
'I': { color: '#525252', label:'IND', order: 2 }, | |
'U': { color: 'black', label:'TOSS UP', order: 3 }, | |
'NA': { color: '#efe4d2', label:'Not Applicable', order: 4 }, | |
'LR': { color: '#f2927f', label:'LIKELY REP', order: 5 }, | |
'R': { color: '#d31616', label:'REP', order: 6 }, | |
} | |
export default Object.keys(values).reduce((t,p) => ({ | |
...t, | |
[p]: Object.keys(values[p]) | |
.map((k,i) => datify(p, k)) | |
.sort((a,b) => a.order - b.order) | |
}),{}) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import presets from './presets.js' | |
/*** global params ***/ | |
let props = { | |
preset: 'STATE DATA', // choose from ['SABATO', 'Z20TOWIN', 'PRETTY', 'STATE DATA'] | |
presets, | |
expanded: true, | |
} | |
/*** Helper functions/utilities ***/ | |
const createMerge = (parent, el, cl, data, acc) =>{ | |
const sel = parent.selectAll(el+ (cl ? cl.split(' ').map(c => '.'+c).join('') : '')) | |
.data(data, d => acc && acc(d)) | |
sel.exit().remove() | |
return sel | |
.enter().append(el) | |
.attr('class',cl) | |
.merge(sel) | |
} | |
const createOnce = (parent, el, cl) => createMerge(parent, el, cl, [null]) | |
/*** Functions attached to DOM elements to set behavior/style/attrs ***/ | |
function getTextTween(d){ | |
const that = d3.select(this) | |
let i = d3.interpolateNumber(+that.text(), d.value); | |
return function(t){ | |
return that.text(Math.round(i(t))); | |
} | |
} | |
function getNumTextTween(d){ | |
const that = d3.select(this) | |
const text = +(((that.text() || '0').match(/[0-9]+/g) || ['0'])[0]) | |
let i = d3.interpolateNumber(text, d.value); | |
return function(t){ | |
return that.text(d.key + Math.round(i(t))); | |
} | |
} | |
function getDisappearStatus(type, max){ | |
const minValueLookup = { | |
XS: max*(32 / 411), | |
S: max*(49 / 411), | |
M: max*(65 / 411), | |
L: max*(80 / 411) | |
} | |
return { | |
value: d => d.major | |
? d.value < minValueLookup[d.minValue] | |
: d.value < minValueLookup.XS, | |
label: d => d.value < minValueLookup[d.minValue] | |
}[type] | |
} | |
function getTextLabelHtml(d,i){ | |
return (d.key === 'LD' || d.key === 'LR') | |
? `<span>${d.label.split(' ')[0]}</span> <span class="light">${d.label.split(' ')[1]}</span>` | |
: `<span>${d.label}</span>` | |
} | |
function getTextLabelColor(d){ | |
return { | |
'LD': '#005dc1', | |
'LR': '#d31616', | |
'U': '#fff', | |
}[d.key] || 'black' | |
} | |
function getBigLabelColor(d){ | |
return { | |
'D': '#005dc1', | |
'R': '#d31616' | |
}[d.key] | |
} | |
function render(){ | |
const { loser, preset, expanded, presets } = props | |
const data = presets[preset] | |
data.forEach((e,i,a) => { | |
e.v0 = i === 0 ? 0 : a[i-1].v1 | |
e.v1 = e.v0 + e.value | |
}) | |
const max = data[data.length - 1].v1 | |
const xScale = d3.scaleLinear() | |
.domain([0, max]) | |
.range([0, 100]) //% scale | |
const body = d3.select('body') | |
const container = createOnce(body, 'div', 'container') | |
let labels = createOnce(container, 'div', 'big-labels') | |
let label = createMerge(labels, 'div', 'big-label', data.filter(d => d.major), d => d.key) | |
.style('color', getBigLabelColor) | |
if(expanded){ | |
label.text(d => d.label) | |
} else { | |
label.transition() | |
.duration(500) | |
.tween('text', getNumTextTween) | |
} | |
const halfway = Math.round(.5*max) | |
let markers = createOnce(container, 'div', 'markers') | |
let number = createOnce(markers, 'div', 'marker-number') | |
.classed('expanded', expanded) | |
.text(halfway) | |
let bars = createOnce(container, 'div', 'bars') | |
let bar = createMerge(bars, 'div', 'bar', data, d => d.key) | |
.classed('expanded', expanded) | |
.classed('loser', d => d.key === loser) | |
.style('width', d => xScale(d.value)+'%') | |
.style('left', d => xScale(d.v0)+'%') | |
.style('background', d => d.color) | |
.on('click', d => toggleCount(d)) | |
let textValue = createMerge(bar, 'div', 'text value', d => expanded ? [d] : []) | |
.classed('disappearV', getDisappearStatus('value', max)) | |
.classed('major', d => d.major) | |
.style('text-align', d => d.align) | |
textValue.transition() | |
.duration(500) | |
.tween('text', getTextTween) | |
let textLabel = createMerge(bar, 'div', 'text label', d => expanded ? [d] : []) | |
.classed('disappearL', getDisappearStatus('label', max)) | |
.classed('major', d => d.major) | |
.style('color', getTextLabelColor) | |
.style('text-align', d => d.align) | |
.html(getTextLabelHtml) | |
} | |
render() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@import fonts | |
* | |
box-sizing border-box | |
.container | |
margin: 20px 8.333% | |
font-family: FlamaCond | |
position: relative | |
.big-labels | |
width: calc(100% - 20px) | |
margin: 0px 10px | |
display: flex | |
flex-direction: row | |
justify-content: space-between | |
line-height: 140px | |
.big-label{ | |
font-size: 160px | |
} | |
.markers{ | |
position: absolute | |
top: 25px | |
color: #333 | |
font-size: 80px | |
width: 100% | |
.marker-number{ | |
text-align: center | |
position: relative | |
&:before{ | |
position: absolute; | |
content: '' | |
top: 80px; | |
left: calc(50% - 22px); | |
border-top: 34px solid #333; | |
border-left: 22px solid transparent; | |
border-right: 22px solid transparent; | |
} | |
&:after{ | |
transition-property: top; | |
transition-duration: 500ms; | |
position: absolute; | |
content: '' | |
top: 136px; | |
left: calc(50% - 22px); | |
border-bottom: 34px solid #333; | |
border-left: 22px solid transparent; | |
border-right: 22px solid transparent; | |
} | |
&.expanded:after{ | |
top: 276px; | |
} | |
} | |
} | |
.bars | |
position: relative | |
width: 100% | |
.bar | |
position: absolute | |
transition-duration: 500ms | |
transition-property: width, left, height | |
height: 20px | |
&.expanded{ | |
height: 160px | |
} | |
&.loser | |
filter: brightness(1.2) | |
.text{ | |
right: 10px; | |
left: 10px; | |
position: absolute | |
width: calc(100% - 20px); | |
transition-property: opacity, bottom | |
transition-duration: 500ms | |
white-space:nowrap | |
.light{ | |
font-family: 'FlamaCond-Basic'; | |
} | |
&.disappearL.label{ | |
opacity: 0 | |
} | |
&.disappearV.value{ | |
opacity: 0 | |
} | |
&.value{ | |
font-size: 80px | |
bottom: 40px; | |
color: white | |
&.major{ | |
font-size: 120px | |
bottom: 0px; | |
} | |
} | |
&.label{ | |
font-size: 50px | |
bottom: 0px; | |
color: black | |
&.major{ | |
display: none | |
} | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment