@dra2020/dra-types 1.8.72 → 1.8.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/csv.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Util } from '@dra2020/baseclient';
1
+ import { Util, G } from '@dra2020/baseclient';
2
2
  import * as VF from './vfeature';
3
3
  export declare type BlockMap = {
4
4
  [id: string]: number;
@@ -31,7 +31,7 @@ export declare function parseCSVLine(line: string): OneCSVLine;
31
31
  export declare function csvLine(coder: Util.Coder, line: string): OneCSVLine;
32
32
  export interface ConvertResult {
33
33
  inBlockMap: BlockMapping;
34
- inStateMap: BlockMapping;
34
+ inMbm: G.MultiBlockMapping;
35
35
  outValid: boolean;
36
36
  outState: string;
37
37
  outMap: BlockMapping;
@@ -44,7 +44,7 @@ export interface ConvertResult {
44
44
  nSplitBlocks: number;
45
45
  }
46
46
  export declare function blockmapToState(blockMap: BlockMapping): string;
47
- export declare function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping, stateMap: BlockMapping, altBlocks: AltBlockMapping): ConvertResult;
47
+ export declare function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult;
48
48
  export declare const StateIdToStateCode: any;
49
49
  export declare const StateCodeToStateId: any;
50
50
  export declare function geoidToState(geoid: string): string;
package/dist/dra-types.js CHANGED
@@ -423,7 +423,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
423
423
  exports.StateNameMap = exports.StateCodesOrdered = exports.isValidStateNameForUrl = exports.geoidToState = exports.StateCodeToStateId = exports.StateIdToStateCode = exports.blockmapToVTDmap = exports.blockmapToState = exports.csvLine = exports.parseCSVLine = exports.canonicalDistrictIDOrdering = exports.canonicalDistrictIDGapFill = exports.canonicalDistrictIDFromNumber = exports.canonicalNumericFromDistrictID = exports.canonicalSortingDistrictID = exports.canonicalDistrictID = void 0;
424
424
  // Public libraries
425
425
  const baseclient_1 = __webpack_require__(/*! @dra2020/baseclient */ "@dra2020/baseclient");
426
- const reverse_1 = __webpack_require__(/*! ./reverse */ "./lib/reverse.ts");
427
426
  let reNumeric = /^(\D*)(\d*)(\D*)$/;
428
427
  let reDistrictNumber = /^\d+$/;
429
428
  let reDistrictNumeric = /^\d/;
@@ -438,6 +437,19 @@ function canonicalDistrictID(districtID) {
438
437
  return districtID;
439
438
  }
440
439
  exports.canonicalDistrictID = canonicalDistrictID;
440
+ function reverseSubMapping(mbm, n) {
441
+ let rev = {};
442
+ mbm.forEach(blockid => {
443
+ let geoid = blockid.substr(0, n);
444
+ if (!rev[geoid])
445
+ rev[geoid] = [];
446
+ rev[geoid].push(blockid);
447
+ });
448
+ return rev;
449
+ }
450
+ function reverseBlockgroupMapping(mbm) {
451
+ return reverseSubMapping(mbm, 12);
452
+ }
441
453
  // Normalize any numeric part to have four digits with padded leading zeros
442
454
  // so alphabetic sorting will result in correct numeric sort for mixed alphanumber
443
455
  // district labels.
@@ -599,10 +611,10 @@ exports.blockmapToState = blockmapToState;
599
611
  // The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do
600
612
  // not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.
601
613
  //
602
- function blockmapToVTDmap(revMap, blockMap, stateMap, altBlocks) {
614
+ function blockmapToVTDmap(blockMap, mbm, altBlocks) {
603
615
  let res = {
604
616
  inBlockMap: blockMap,
605
- inStateMap: stateMap,
617
+ inMbm: mbm,
606
618
  outValid: true,
607
619
  outState: null,
608
620
  outMap: {},
@@ -615,9 +627,7 @@ function blockmapToVTDmap(revMap, blockMap, stateMap, altBlocks) {
615
627
  nSplitBlocks: 0,
616
628
  };
617
629
  let bmGather = {};
618
- revMap = revMap || (0, reverse_1.reverseBlockMapping)(stateMap);
619
630
  let revBG; // lazy create on demand
620
- let revTract; // lazy create on demand
621
631
  if (altBlocks) {
622
632
  // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}
623
633
  let revAltBlocks = {};
@@ -632,7 +642,7 @@ function blockmapToVTDmap(revMap, blockMap, stateMap, altBlocks) {
632
642
  for (var id in blockMap)
633
643
  if (blockMap.hasOwnProperty(id)) {
634
644
  let n = id.length;
635
- if (n >= 15 && !(stateMap && stateMap[id] !== undefined) && revAltBlocks[id]) {
645
+ if (n >= 15 && !(mbm && mbm.map(id) !== undefined) && revAltBlocks[id]) {
636
646
  if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop) {
637
647
  bestAlt[revAltBlocks[id].blockid] = { dist: blockMap[id], pop: revAltBlocks[id].pop };
638
648
  blockMapP[revAltBlocks[id].blockid] = blockMap[id];
@@ -665,13 +675,14 @@ function blockmapToVTDmap(revMap, blockMap, stateMap, altBlocks) {
665
675
  let ids;
666
676
  res.nBlocks++;
667
677
  // Simple test for block id (vs. voting district or block group) id
668
- if (n >= 15) {
678
+ // Also skip longer custom precinct ids
679
+ if (n >= 15 && (!mbm || !mbm.rev(id))) {
669
680
  ids = [id];
670
- if (stateMap && stateMap[id] !== undefined)
671
- geoids = [stateMap[id]];
681
+ if (mbm && mbm.map(id) !== undefined)
682
+ geoids = [mbm.map(id)];
672
683
  else {
673
684
  geoids = [id.substr(0, 12)];
674
- if (stateMap && !revMap[geoids[0]]) {
685
+ if (mbm && !mbm.rev(geoids[0])) {
675
686
  res.outValid = false;
676
687
  break;
677
688
  }
@@ -679,10 +690,10 @@ function blockmapToVTDmap(revMap, blockMap, stateMap, altBlocks) {
679
690
  }
680
691
  else if (n == 12) {
681
692
  if (!revBG)
682
- revBG = (0, reverse_1.reverseBlockgroupMapping)(stateMap);
693
+ revBG = reverseBlockgroupMapping(mbm);
683
694
  if (revBG[id]) {
684
695
  ids = revBG[id];
685
- geoids = ids.map(id => stateMap[id]);
696
+ geoids = ids.map(id => mbm.map(id));
686
697
  }
687
698
  else {
688
699
  ids = [id];
@@ -715,7 +726,7 @@ function blockmapToVTDmap(revMap, blockMap, stateMap, altBlocks) {
715
726
  let bWhole = false;
716
727
  if (baseclient_1.Util.countKeys(districtToBlocks) == 1) {
717
728
  let blocks = Object.keys(districtToBlocks[baseclient_1.Util.nthKey(districtToBlocks)]);
718
- if (blocks[0] === geoid || (revMap[geoid] && blocks.length === revMap[geoid].length))
729
+ if (blocks[0] === geoid || (mbm.rev(geoid) && blocks.length === mbm.rev(geoid).length))
719
730
  bWhole = true;
720
731
  }
721
732
  if (bWhole) {
@@ -1 +1 @@
1
- {"version":3,"file":"dra-types.js","mappings":"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","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/colordata.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/gencolor.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/before-startup","webpack://dra-types/webpack/startup","webpack://dra-types/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, function() {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './colordata';\nexport * from './gencolor';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './precincts';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","export const DefaultColorNames: string[] = \r\n[\r\n'GhostWhite',\r\n'Blue',\r\n'Green',\r\n'DarkMagenta',\r\n'Red',\r\n'Gold',\r\n'Teal',\r\n'Chocolate', //'DarkGray', // \r\n'SlateBlue',\r\n'Cyan',\r\n'DeepPink',\r\n'Chartreuse',\r\n'CornflowerBlue',\r\n'DarkSalmon',\r\n'Olive',\r\n'DarkOrange',\r\n'Lime',\r\n'DarkSlateBlue',\r\n'Yellow',\r\n'YellowGreen',\r\n'Pink',\r\n'Maroon',\r\n'Sienna',\r\n'Aquamarine',\r\n'Indigo',\r\n'PaleVioletRed',\r\n'Navy', // 'Gray', // \r\n'SpringGreen',\r\n'Plum',\r\n'DarkSeaGreen',\r\n'LightCoral',\r\n'Khaki',\r\n'OrangeRed',\r\n'RoyalBlue',\r\n'LimeGreen',\r\n'DarkOrchid',\r\n'Orange',\r\n'DodgerBlue',\r\n'MediumAquamarine',\r\n'Moccasin',\r\n'Firebrick',\r\n'LightSteelBlue',\r\n'LawnGreen',\r\n'Magenta',\r\n'MediumVioletRed',\r\n'Turquoise',\r\n'Tomato',\r\n'Thistle',\r\n'SandyBrown',\r\n'IndianRed',\r\n'PowderBlue',\r\n'SaddleBrown',\r\n'OliveDrab',\r\n'Fuchsia', // 'Gainsboro', //\r\n'PeachPuff',\r\n'RosyBrown',\r\n];\r\n\r\nexport interface ColorLookup\r\n{\r\n [key: string]: string;\r\n}\r\n\r\nexport const ColorValues: ColorLookup =\r\n{\r\n 'AliceBlue': '#F0F8FF',\r\n 'AntiqueWhite': '#FAEBD7',\r\n 'Aqua': '#00FFFF',\r\n 'Aquamarine': '#7FFFD4',\r\n 'Azure': '#F0FFFF',\r\n 'Beige': '#F5F5DC',\r\n 'Bisque': '#FFE4C4',\r\n 'Black': '#000000',\r\n 'BlanchedAlmond': '#FFEBCD',\r\n 'Blue': '#0000FF',\r\n 'BlueViolet': '#8A2BE2',\r\n 'Brown': '#A52A2A',\r\n 'BurlyWood': '#DEB887',\r\n 'CadetBlue': '#5F9EA0',\r\n 'Chartreuse': '#7FFF00',\r\n 'Chocolate': '#D2691E',\r\n 'Coral': '#FF7F50',\r\n 'CornflowerBlue': '#6495ED',\r\n 'Cornsilk': '#FFF8DC',\r\n 'Crimson': '#DC143C',\r\n 'Cyan': '#00FFFF',\r\n 'DarkBlue': '#00008B',\r\n 'DarkCyan': '#008B8B',\r\n 'DarkGoldenrod': '#B8860B',\r\n 'DarkGray': '#A9A9A9',\r\n 'DarkGreen': '#006400',\r\n 'DarkKhaki': '#BDB76B',\r\n 'DarkMagenta': '#8B008B',\r\n 'DarkOliveGreen': '#556B2F',\r\n 'DarkOrange': '#FF8C00',\r\n 'DarkOrchid': '#9932CC',\r\n 'DarkRed': '#8B0000',\r\n 'DarkSalmon': '#E9967A',\r\n 'DarkSeaGreen': '#8FBC8F',\r\n 'DarkSlateBlue': '#483D8B',\r\n 'DarkSlateGray': '#2F4F4F',\r\n 'DarkTurquoise': '#00CED1',\r\n 'DarkViolet': '#9400D3',\r\n 'DeepPink': '#FF1493',\r\n 'DeepSkyBlue': '#00BFFF',\r\n 'DimGray': '#696969',\r\n 'DodgerBlue': '#1E90FF',\r\n 'Firebrick': '#B22222',\r\n 'FloralWhite': '#FFFAF0',\r\n 'ForestGreen': '#228B22',\r\n 'Fuchsia': '#FF00FF',\r\n 'Gainsboro': '#DCDCDC',\r\n 'GhostWhite': '#F8F8FF',\r\n 'Gold': '#FFD700',\r\n 'Goldenrod': '#DAA520',\r\n 'Gray': '#808080',\r\n 'Green': '#008000',\r\n 'GreenYellow': '#ADFF2F',\r\n 'Honeydew': '#F0FFF0',\r\n 'HotPink': '#FF69B4',\r\n 'IndianRed': '#CD5C5C',\r\n 'Indigo': '#4B0082',\r\n 'Ivory': '#FFFFF0',\r\n 'Khaki': '#F0E68C',\r\n 'Lavender': '#E6E6FA',\r\n 'LavenderBlush': '#FFF0F5',\r\n 'LawnGreen': '#7CFC00',\r\n 'LemonChiffon': '#FFFACD',\r\n 'LightBlue': '#ADD8E6',\r\n 'LightCoral': '#F08080',\r\n 'LightCyan': '#E0FFFF',\r\n 'LightGoldenrodYellow': '#FAFAD2',\r\n 'LightGray': '#D3D3D3',\r\n 'LightGreen': '#90EE90',\r\n 'LightPink': '#FFB6C1',\r\n 'LightSalmon': '#FFA07A',\r\n 'LightSeaGreen': '#20B2AA',\r\n 'LightSkyBlue': '#87CEFA',\r\n 'LightSlateGray': '#778899',\r\n 'LightSteelBlue': '#B0C4DE',\r\n 'LightYellow': '#FFFFE0',\r\n 'Lime': '#00FF00',\r\n 'LimeGreen': '#32CD32',\r\n 'Linen': '#FAF0E6',\r\n 'Magenta': '#FF00FF',\r\n 'Maroon': '#800000',\r\n 'MediumAquamarine': '#66CDAA',\r\n 'MediumBlue': '#0000CD',\r\n 'MediumOrchid': '#BA55D3',\r\n 'MediumPurple': '#9370DB',\r\n 'MediumSeaGreen': '#3CB371',\r\n 'MediumSlateBlue': '#7B68EE',\r\n 'MediumSpringGreen': '#00FA9A',\r\n 'MediumTurquoise': '#48D1CC',\r\n 'MediumVioletRed': '#C71585',\r\n 'MidnightBlue': '#191970',\r\n 'MintCream': '#F5FFFA',\r\n 'MistyRose': '#FFE4E1',\r\n 'Moccasin': '#FFE4B5',\r\n 'NavajoWhite': '#FFDEAD',\r\n 'Navy': '#000080',\r\n 'OldLace': '#FDF5E6',\r\n 'Olive': '#808000',\r\n 'OliveDrab': '#6B8E23',\r\n 'Orange': '#FFA500',\r\n 'OrangeRed': '#FF4500',\r\n 'Orchid': '#DA70D6',\r\n 'PaleGoldenrod': '#EEE8AA',\r\n 'PaleGreen': '#98FB98',\r\n 'PaleTurquoise': '#AFEEEE',\r\n 'PaleVioletRed': '#DB7093',\r\n 'PapayaWhip': '#FFEFD5',\r\n 'PeachPuff': '#FFDAB9',\r\n 'Peru': '#CD853F',\r\n 'Pink': '#FFC0CB',\r\n 'Plum': '#DDA0DD',\r\n 'PowderBlue': '#B0E0E6',\r\n 'Purple': '#800080',\r\n 'Red': '#FF0000',\r\n 'RosyBrown': '#BC8F8F',\r\n 'RoyalBlue': '#4169E1',\r\n 'SaddleBrown': '#8B4513',\r\n 'Salmon': '#FA8072',\r\n 'SandyBrown': '#F4A460',\r\n 'SeaGreen': '#2E8B57',\r\n 'SeaShell': '#FFF5EE',\r\n 'Sienna': '#A0522D',\r\n 'Silver': '#C0C0C0',\r\n 'SkyBlue': '#87CEEB',\r\n 'SlateBlue': '#6A5ACD',\r\n 'SlateGray': '#708090',\r\n 'Snow': '#FFFAFA',\r\n 'SpringGreen': '#00FF7F',\r\n 'SteelBlue': '#4682B4',\r\n 'Tan': '#D2B48C',\r\n 'Teal': '#008080',\r\n 'Thistle': '#D8BFD8',\r\n 'Tomato': '#FF6347',\r\n 'Turquoise': '#40E0D0',\r\n 'Violet': '#EE82EE',\r\n 'Wheat': '#F5DEB3',\r\n 'White': '#FFFFFF',\r\n 'WhiteSmoke': '#F5F5F5',\r\n 'Yellow': '#FFFF00',\r\n 'YellowGreen': '#9ACD32',\r\n};\r\n\r\nexport const ColorBySolidWhite = 0;\r\nexport const ColorBySolidBlack = 1;\r\nexport const ColorBySolidHispanic = 2;\r\nexport const ColorBySolidAsian = 3;\r\nexport const ColorByMostlyWhite = 4;\r\nexport const ColorByMostlyBlack = 5;\r\nexport const ColorByMostlyHispanic = 6;\r\nexport const ColorByMostlyAsian = 7;\r\nexport const ColorByMostlyNative = 8;\r\nexport const ColorByMix = 9;\r\nexport const ColorByHispanicWhite = 10;\r\nexport const ColorByBlackWhite = 11;\r\nexport const ColorByHispanicBlack = 12;\r\nexport const ColorByAsianWhite = 13;\r\nexport const ColorByAsianHispanic = 14;\r\nexport const ColorByBlackAsian = 15;\r\n\r\nexport const EthnicBackgroundColor: string[] = [\r\n '#c0392b', // solid white\r\n '#3498db', // solid black\r\n '#2ecc71', // solid hispanic\r\n '#9b59b6', // solid asian\r\n '#d98880', // mostly white\r\n '#aed6f1', // mostly black\r\n '#abebc6', // mostly hispanic\r\n '#bb8fce', // mostly asian\r\n '#f1c40f', // mostly native\r\n '#aab7b8', // mix\r\n '#d5f5e3', // hispanic / white\r\n '#d6eaf8', // black / white\r\n '#186a3b', // hispanic / black\r\n '#e8daef', // asian / white\r\n '#45b39d', // asian / hispanic\r\n '#4a235a', // black / asian\r\n ];\r\nexport const EthnicTextColor: string[] = [\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n ];\r\nexport const EthnicLabel: string[] = [\r\n 'Solid White',\r\n 'Solid Black',\r\n 'Solid Hispanic',\r\n 'Solid Asian',\r\n 'Mostly White',\r\n 'Mostly Black',\r\n 'Mostly Hispanic',\r\n 'Mostly Asian',\r\n 'Mostly Native',\r\n 'Mixed',\r\n 'Hispanic / White Mix',\r\n 'Black / White Mix',\r\n 'Hispanic / Black Mix',\r\n 'Asian / White Mix',\r\n 'Asian / Hispanic Mix',\r\n 'Black / Asian Mix'\r\n ];\r\n\r\nexport const ColorByGreatR = 0;\r\nexport const ColorByGoodR = 1;\r\nexport const ColorByFairR = 2;\r\nexport const ColorByEven = 3;\r\nexport const ColorByFairD = 4;\r\nexport const ColorByGoodD = 5;\r\nexport const ColorByGreatD = 6;\r\n\r\nexport const ElectionBackgroundColor: string[] = [\r\n '#CF0000', // greatR\r\n '#FF4555', // goodR\r\n '#FFB0CB', // fairR\r\n '#9932CC', // even\r\n '#87CEEB', // fairD\r\n '#1E90FF', // goodD\r\n '#0000CF', // greatD\r\n];\r\n\r\nexport const ElectionTextColor: string[] = [\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n];\r\nexport const ElectionLabel: string[] = [\r\n 'Great Republican',\r\n 'Good Republican',\r\n 'Fair Republican',\r\n 'Even',\r\n 'Fair Democrat',\r\n 'Good Democrat',\r\n 'Great Democrat'\r\n ];\r\n\r\nconst lum: number[] = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255];\r\nexport let IntensityBackgroundColor: string[] = [];\r\nlum.forEach((n: number) => { IntensityBackgroundColor.push(`rgba(${n}, ${n}, ${n}, 1.0)`) } );\r\n","// Public libraries\nimport { Util, CSV } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\nimport { reverseBlockMapping, reverseBlockgroupMapping, reverseTractMapping } from './reverse';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inStateMap: BlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping, stateMap: BlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inStateMap: stateMap,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n revMap = revMap || reverseBlockMapping(stateMap);\n let revBG: RevBlockMapping; // lazy create on demand\n let revTract: RevBlockMapping; // lazy create on demand\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (n >= 15 && !(stateMap && stateMap[id] !== undefined) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n if (n >= 15)\n {\n ids = [id];\n if (stateMap && stateMap[id] !== undefined)\n geoids = [stateMap[id]];\n else\n {\n geoids = [id.substr(0, 12)];\n if (stateMap && !revMap[geoids[0]])\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(stateMap);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => stateMap[id]);\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (revMap[geoid] && blocks.length === revMap[geoid].length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\n","import * as ColorData from \"./colordata\";\n\nlet ColorTable: string[] = null;\nconst MaxColors: number = 100;\n\nexport function genColor(i: number, useFirstColor: boolean): string\n{\n // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable\n function gen_table(): void\n {\n ColorTable = [];\n for (let i: number = 0; i < MaxColors; i++)\n {\n // A little funky math below to skip the first (white) color\n let j = (i % (ColorData.DefaultColorNames.length - 1)) + 1;\n ColorTable.push(ColorData.ColorValues[ColorData.DefaultColorNames[j]]);\n }\n }\n\n if (ColorTable == null)\n gen_table();\n \n if (i == 0)\n return ColorData.ColorValues[ColorData.DefaultColorNames[0]];\n return ColorTable[((i - 1) + (useFirstColor ? 0 : 1)) % MaxColors];\n}\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","export interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, blockmapping: G.MultiBlockMapping): G.GeoFeature\n{\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n f.properties.datasets = {};\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n contiguity.set(id === 'OUT_OF_STATE' ? id : blockmapping.map(id));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n return f;\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./lib/all.ts\");\n",""],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"dra-types.js","mappings":"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EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEW,0BAAkB,GAAQ;IACrC,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,SAAgB,YAAY,CAAC,KAAa;IAExC,IAAI,EAAE,GAAG,UAAU,CAAC;IAEpB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,0BAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAPD,oCAOC;AA8DD,MAAM,qBAAqB,GAA8B;IACvD,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,IAAI;IAChB,sBAAsB,EAAE,IAAI;IAC5B,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,IAAI;IACrB,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,IAAI;IAClB,UAAU,EAAE,IAAI;IAChB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,MAAM,EAAE,IAAI;IACZ,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,IAAI;IACpB,gBAAgB,EAAE,IAAI;IACtB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,IAAI;IACZ,SAAS,EAAE,IAAI;IACf,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,IAAI;IAClB,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;IACf,aAAa,EAAE,IAAI;CACpB,CAAC;AAEF,SAAgB,sBAAsB,CAAC,CAAM;IAE3C,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC;AAC/D,CAAC;AAHD,wDAGC;AAED,gDAAgD;AACnC,yBAAiB,GAAa;IACzC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACL,CAAC;AAEW,oBAAY,GAA8B;IACrD,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,cAAc;IACpB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,aAAa;CACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AEvwBF,+EAAyC;AAEzC,IAAI,UAAU,GAAa,IAAI,CAAC;AAChC,MAAM,SAAS,GAAW,GAAG,CAAC;AAE9B,SAAgB,QAAQ,CAAC,CAAS,EAAE,aAAsB;IAExD,0FAA0F;IAC1F,SAAS,SAAS;QAEhB,UAAU,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAC1C;YACE,4DAA4D;YAC5D,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxE;IACH,CAAC;IAED,IAAI,UAAU,IAAI,IAAI;QACpB,SAAS,EAAE,CAAC;IAEd,IAAI,CAAC,IAAI,CAAC;QACR,OAAO,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;AACrE,CAAC;AApBD,4BAoBC;;;;;;;;;;;;;;AClBY,mBAAW,GAAG,CAAC,CAAC;AAChB,sBAAc,GAAG,CAAC,CAAC;AACnB,kBAAU,GAAG,CAAC,CAAC;AACf,qBAAa,GAAG,CAAC,CAAC;AAClB,qBAAa,GAAG,EAAE,CAAC;AACnB,mBAAW,GAAG,EAAE,CAAC;AAE9B,SAAgB,SAAS,CAAC,KAAa;IAErC,OAAO,CAAC,KAAK,GAAG,CAAC,qBAAa,GAAC,qBAAa,CAAC,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAHD,8BAGC;AAED,SAAgB,UAAU,CAAC,KAAa;IAEtC,OAAO,CAAC,KAAK,GAAG,CAAC,mBAAW,GAAC,mBAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAHD,gCAGC;;;;;;;;;;;;;;ACtBD,2FAA8C;AAY9C,SAAgB,qBAAqB,CAAC,SAAoB;IAExD,IAAI,SAAS,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,GAAG,GAA2B,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC9E,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACjC,IAAI,CAAC,GAAiB;YAClB,IAAI,EAAE,SAAS;YACf,UAAU,EAAE;gBACR,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B;YACH,QAAQ,EAAE;gBACN,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,CAAC,CAAC,KAAK;aACrB;SACJ,CAAC;QACJ,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC;AArBD,sDAqBC;AAED,SAAgB,qBAAqB,CAAC,GAA2B;IAE/D,IAAI,SAAS,GAAc,EAAE,CAAC;IAC9B,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ;QAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAe,EAAE,EAAE;YAC9D,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAC/B;gBACE,IAAI,CAAC,GAAQ,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACpC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAC5E;oBACE,IAAI,QAAQ,GAAa;wBACvB,EAAE,EAAE,iBAAI,CAAC,UAAU,EAAE;wBACrB,IAAI,EAAE,cAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACnB,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE;wBAC3C,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClB,CAAC;oBACJ,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;iBACnC;aACF;QACH,CAAC,CAAC,CAAC;IACL,OAAO,SAAS,CAAC;AACnB,CAAC;AApBD,sDAoBC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AGvDD,SAAgB,mBAAmB,CAAC,EAAO;IAEzC,IAAI,GAAG,GAAQ,EAAE,CAAC;IAElB,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,KAAK,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC;YACxB,IAAI,CAAE,GAAG,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACtD,OAAO,GAAG,CAAC;AACb,CAAC;AAXD,kDAWC;AAED,SAAgB,iBAAiB,CAAC,EAAO,EAAE,CAAS;IAElD,IAAI,GAAG,GAAQ,EAAE,CAAC;IAElB,IAAI,EAAE;QAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,IAAI,CAAE,GAAG,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAClC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC;AAVD,8CAUC;AAED,SAAgB,wBAAwB,CAAC,EAAO;IAE9C,OAAO,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAHD,4DAGC;AAED,SAAgB,mBAAmB,CAAC,EAAO;IAEzC,OAAO,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAHD,kDAGC;;;;;;;;;;;;;;ACjCU,eAAO,GAAQ;IACxB,OAAO,EACL;QACE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;QACtD,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,QAAQ,EAAE,GAAG;YACb,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,KAAK,EAAE,MAAM,EAAE;YACjB,EAAE,UAAU,EAAE,MAAM,EAAE;YACtB,EAAE,SAAS,EAAE,MAAM,EAAE;SACtB;KACJ;IACH,OAAO,EACL;QACE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE;QACxD,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,GAAG;YACf,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,GAAG;YACX,MAAM,EAAE,GAAG;YACX,GAAG,EAAE,GAAG;SACT;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAC7C,sBAAsB,EAAE;YACpB,EAAE,SAAS,EAAE,MAAM,EAAE;YACrB,EAAE,GAAG,EAAE,MAAM,EAAE;YACf,EAAE,EAAE,EAAE,MAAM,EAAE;SACf,EAAG,SAAS;KAChB;IACH,cAAc,EACZ;QACE,WAAW,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE;QACxD,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,GAAG;YACf,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,YAAY,EACV;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;SAClC;KACJ;IACH,UAAU,EACR;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,GAAG;YACb,SAAS,EAAE,GAAG;YACd,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,KAAK,EAAE,MAAM,EAAE;SAClB;KACJ;IACH,YAAY,EACV;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,GAAG;SACZ;KACF;IACH,QAAQ,EACN;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1C,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,SAAS,EACP;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,YAAY,EAAE,GAAG;YACjB,gBAAgB;SACjB;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,SAAS,EACP;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,WAAW,EACT,EAAE;IACJ,OAAO,EACL,EAAE;IACJ,UAAU,EACR,EAAE;IACJ,OAAO,EACL,EAAE;IACJ,WAAW,EACT,EAAE;IACJ,WAAW,EACT;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,QAAQ,EAAE,GAAG;YACb,YAAY,EAAE,GAAG;YACjB,MAAM,EAAE,GAAG;SACZ;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACzB,sBAAsB,EAAE;YACpB,EAAE,QAAQ,EAAE,MAAM,EAAE;SACrB;KACJ;IACH,WAAW,EACT;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,QAAQ,EAAE,GAAG;YACb,YAAY,EAAE,GAAG;YACjB,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,GAAG;SACd;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,OAAO,EACL;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAC7C,sBAAsB,EAAE;YACpB,EAAE,SAAS,EAAE,MAAM,EAAE;YACrB,EAAE,EAAE,EAAE,MAAM,EAAE;SACf,EAAG,SAAS;KAChB;IACH,QAAQ,EACN;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;SACjB;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,aAAa,EACX;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,GAAG;SACX;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;KACxC;IACH,YAAY,EACV;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,GAAG,EAAE,GAAG;YACR,UAAU,EAAE,GAAG;SAChB;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE;KACxC;IACH,eAAe,EACb;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,GAAG;SACb;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;KAC9C;IACH,MAAM,EACJ;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,GAAG,EAAE,GAAG;YACR,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,GAAG;SACb;QACD,SAAS,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;KAC1B;IACH,WAAW,EACT;QACE,WAAW,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;QAC1B,MAAM,EAAE;YACN,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,GAAG;YACV,UAAU,EAAE,GAAG;YACf,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,GAAG;YACd,UAAU,EAAE,GAAG;YACf,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,MAAM;SACjB;QACD,SAAS,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE;QAC7C,sBAAsB,EAAE;YACpB,EAAE,EAAE,EAAE,MAAM,EAAE;YACd,EAAE,SAAS,EAAE,MAAM,EAAE;SACtB,EAAG,SAAS;KAChB;CACJ;;;;;;;;;;;;;;ACvSD,2FAAoD;AACpD,sEAAiC;AAEjC,mGAAmG;AACnG,EAAE;AAEF,SAAgB,iBAAiB,CAAC,KAAoB,EAAE,YAAuB,EAAE,YAAiC;IAEhH,IAAI,UAAU,GAAG,IAAI,iBAAI,CAAC,YAAY,EAAE,CAAC;IACzC,IAAI,gBAAgB,GAAG,IAAI,iBAAI,CAAC,YAAY,EAAE,CAAC;IAC/C,IAAI,CAAC,GAAG,iBAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC3B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ;YACvB,iBAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,EAC3B;YACE,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAU,EAAE,EAAE;gBAC3C,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAU,EAAE,EAAE;gBAC3C,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;IACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,WAAW,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC;IAChF,CAAC,CAAC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC,CAAC,UAAU,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACnC,OAAO,CAAC,CAAC;AACX,CAAC;AA1BD,8CA0BC;;;;;;;;;;;;;;ACjBY,wBAAgB,GAA+B;IAC1D,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACjO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC5K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IACjO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC5K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAC/N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC5K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IACpM,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IACjO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAChO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IACnO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAC/N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAClO,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9K,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,GAAG,EAAC,EAAC,EAAC;IAC/N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC9N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,EAAE,EAAC,EAAC,EAAC;IAC7N,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAC;IACzK,IAAI,EAAE,EAAC,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAE,SAAS,EAAE,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAE,KAAK,EAAE,EAAC,UAAU,EAAE,CAAC,EAAC,EAAC,EAAC;CACrK,CAAC;AAEF,SAAgB,WAAW,CAAC,SAAiB,EAAE,QAAqB,EAAE,MAAgB;IAEpF,4DAA4D;IAC5D,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,IAAI,QAAQ,KAAK,OAAO;QACpE,OAAO,KAAK,CAAC;IAEf,mEAAmE;IACnE,IAAI,QAAQ,KAAK,UAAU;QACzB,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YACvJ,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAClC;QACE,OAAO,KAAK,CAAC;KACd;IAED,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,MAAM;QAC9C,OAAO,KAAK,CAAC;IAEf,OAAO,IAAI,CAAC;AACd,CAAC;AAlBD,kCAkBC;AAED,SAAgB,+BAA+B,CAAC,SAAiB;IAE/D,OAAO,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9F,CAAC;AAHD,0EAGC;AAED,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,QAAqB,EAAE,UAAkB;IAE/F,IAAI,QAAQ,KAAK,KAAK;QACpB,OAAO,CAAC,CAAC;IACX,IAAI,UAAU,KAAK,SAAS;QAC1B,UAAU,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC;QACrI,OAAO,CAAC,CAAC;IAEX,MAAM,aAAa,GAAkB,wBAAgB,CAAC,SAAS,CAAC,CAAC,UAAqC,CAAC,CAAC;IACxG,OAAO,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAXD,oDAWC;AAED,6HAA6H;AAC7H,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,UAAkB;IAExE,IAAI,UAAU,KAAK,SAAS;QAC1B,UAAU,GAAG,SAAS,CAAC;IACzB,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,CAAC;QACxD,OAAO,CAAC,CAAC;IAEX,MAAM,aAAa,GAAkB,wBAAgB,CAAC,SAAS,CAAC,CAAC,UAAqC,CAAC,CAAC;IACxG,OAAO,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AATD,oDASC;AAED,SAAgB,aAAa,CAAC,SAAiB,EAAE,UAAkB,EAAE,UAAkB,EAAE,IAAc;IAErG,wCAAwC;IACxC,MAAM,aAAa,GAAW,oBAAoB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACtF,MAAM,UAAU,GAAW,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAChF,MAAM,UAAU,GAAW,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAChF,OAAO,CACL,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,aAAa,GAAG,CAAC,IAAI,UAAU,IAAI,aAAa,GAAG,CAAC,CAAC,IAAI,UAAU,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC5H,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,CAAC;AACb,CAAC;AAXD,sCAWC;;;;;;;;;;;;ACpID,6FAA6F;AAC7F,8FAA8F;AAC9F,6FAA6F;AAC7F,iGAAiG;AACjG,EAAE;AACF,6CAA6C;AAC7C,kGAAkG;AAClG,kFAAkF;AAClF,2EAA2E;AAC3E,EAAE;;;AAGW,kBAAU,GAAG,CAAC,CAAC;AACf,kBAAU,GAAG,CAAC,CAAC;AACf,mBAAW,GAAG,CAAC,CAAC;AAE7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAE,oDAAoD;AAE5F,SAAgB,cAAc;IAE5B,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC;AALD,wCAKC;AAoCD,sFAAsF;AACtF,mFAAmF;AAEnF,SAAgB,eAAe,CAAC,EAAa,EAAE,GAAW,EAAE,OAAgB;IAE1E,IAAI,EAAE,KAAK,SAAS;QAAE,EAAE,GAAG,EAAE,CAAC;IAC9B,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG;QACtC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG;QACtC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC;IACb,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC;AACZ,CAAC;AAVD,0CAUC;AAED,SAAgB,YAAY,CAAC,EAAY,EAAE,OAAe,CAAC;IAEzD,IAAI,EAAE,IAAI,IAAI;QAAE,EAAE,GAAG,EAAE,CAAC;IACxB,EAAE,CAAC,OAAO,GAAG,mBAAW,CAAC;IACzB,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAC,IAAI,CAAC;IAC/D,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAC,IAAI,CAAC;IAClE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAC,IAAI,CAAC;IAC/D,OAAO,EAAE,CAAC;AACZ,CAAC;AARD,oCAQC;AAEY,iBAAS,GAAG,IAAI,GAAG,EAAE,CAAC;AACtB,eAAO,GAAG,iBAAS,GAAG,EAAE,CAAC;AACzB,cAAM,GAAG,eAAO,GAAG,EAAE,CAAC;AAEnC,SAAgB,gBAAgB,CAAC,EAAY,EAAE,MAAc;IAE3D,IAAI,CAAC,MAAM,GAAG,iBAAS,CAAC,IAAI,CAAC,EAC7B;QACE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QACxB,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;KAChB;IACD,IAAI,CAAC,MAAM,GAAG,eAAO,CAAC,IAAI,CAAC,EAC3B;QACE,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC1B,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,CAAC,MAAM,GAAG,cAAM,CAAC,IAAI,CAAC,EAC1B;QACE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;QACxB,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;KAChB;AACH,CAAC;AAjBD,4CAiBC;AAED,SAAgB,mBAAmB,CAAC,KAAqB,EAAE,EAAkB;IAE3E,IAAI,KAAK,IAAI,IAAI;QAAE,KAAK,GAAG,EAAE,CAAC;IAE9B,mDAAmD;IACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,mBAAW;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC;IAEpG,oCAAoC;IACpC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,OAAO,IAAI,mBAAW;YAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;aAEhB;YACE,IAAI,EAAE,GAAG,EAAe,CAAC;YACzB,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,EAAe,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;SACjE;IACH,CAAC,CAAC,CAAC;IACL,OAAO,KAAK,CAAC;AACf,CAAC;AAnBD,kDAmBC;AAED,SAAgB,sBAAsB,CAAC,EAAkB,EAAE,MAAc;IAEvE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,OAAO,IAAI,mBAAW;YAC3B,gBAAgB,CAAC,EAAc,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACP,CAAC;AAPD,wDAOC;AAED,SAAgB,eAAe,CAAC,KAAiB,EAAE,EAAc;IAE/D,IAAI,KAAK,IAAI,IAAI;QACf,KAAK,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAClG,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC3B,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;IACrB,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC;AARD,0CAQC;AAED,6EAA6E;AAC7E,+BAA+B;AAC/B,EAAE;AAEF,SAAgB,cAAc,CAAC,KAAgB,EAAE,EAAa;IAE5D,IAAI,KAAK,IAAI,IAAI,EACjB;QACE,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;KAC5B;IACD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;QAC/C,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACrB,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;QAC/C,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;IACrB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;QAC7B,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAC7B,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAU;QAC7B,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,GAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAC/D,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAU,EACpC;QACE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;QAC/D,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1D,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;KACnC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,wCAsBC;AAED,SAAgB,aAAa,CAAC,KAAe,EAAE,EAAY;IAEzD,IAAI,KAAK,IAAI,IAAI,EACjB;QACE,KAAK,GAAG,EAAE,CAAC;QACX,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;KAC5B;IACD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/H,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/H,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzH,OAAO,KAAK,CAAC;AACf,CAAC;AAdD,sCAcC;AAED,SAAgB,cAAc,CAAC,KAAqB,EAAE,EAAkB;IAEtE,IAAI,KAAK,IAAI,IAAI;QAAE,KAAK,GAAG,EAAE,CAAC;IAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAS,EAAE,EAAE;QAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,EAAE,CAAC,OAAO,IAAI,mBAAW;YAC3B,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAa,EAAE,EAAc,CAAC,CAAC;;YAE/D,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAc,EAAE,EAAe,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACL,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,wCAWC;;;;;;;;;;;;;;AC1MD,mBAAmB;AACnB,mEAAoC;AAwBpC,uCAAuC;AACvC,SAAgB,KAAK,CAAC,CAAM;IAE1B,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI;QACjE,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAJD,sBAIC;AAED,wDAAwD;AACxD,IAAI,GAAG,GAAG,oBAAoB,CAAC;AAE/B,SAAgB,UAAU,CAAC,EAAU;IAEnC,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAHD,gCAGC;AAED,uCAAuC;AACvC,SAAgB,KAAK,CAAC,CAAM;IAE1B,OAAO,IAAI,CAAC,CAAC,EACX,EAAE,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,IAAI;QACtB,uDAAuD;QACvD,WAAW,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,UAAU,CAAC;KACnG,CAAC,CAAC;AACP,CAAC;AATD,sBASC;AAED,mDAAmD;AACnD,+BAA+B;AAE/B,SAAgB,aAAa,CAAC,MAAc;IAE1C,IAAI,KAAK,GAAG,eAAe,CAAC;IAC5B,IAAI,KAAK,GAAG,sBAAsB,CAAC;IACnC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAC9B;QACE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YAC5B,OAAO,EAAE,CAAC;KACb;IACD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACd,CAAC;AAZD,sCAYC;AAED,SAAgB,aAAa,CAAC,CAAa;IAEzC,WAAW;IACX,IAAI,CAAC,CAAC,MAAM;QACV,OAAO,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;IAEpC,WAAW;IACX,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS;QACpB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;IAChB,OAAO,YAAY,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;AAClD,CAAC;AAZD,sCAYC;AAED,SAAgB,cAAc,CAAC,CAAa;IAE1C,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9B,CAAC;AAHD,wCAGC;AAED,SAAgB,aAAa,CAAC,MAAc;IAE1C,gEAAgE;IAChE,0EAA0E;IAC1E,6CAA6C;IAC7C,IAAI,EAAE,GAAG,iCAAiC,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QACpB,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;;QAElC,MAAM,GAAG,IAAI,CAAC;IAEhB,OAAO,MAAM,CAAC;AAChB,CAAC;AAbD,sCAaC;AAED,SAAgB,aAAa,CAAC,KAAa,EAAE,UAAkB,EAAE,MAAc;IAE7E,IAAI,KAAK,GAAG,kBAAkB,CAAC;IAC/B,IAAI,KAAK,GAAG,iCAAiC,CAAC;IAC9C,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACpG,OAAO,IAAI,CAAC;AACd,CAAC;AAXD,sCAWC;AAED,SAAgB,YAAY,CAAC,MAAc;IAEzC,gEAAgE;IAChE,IAAI,EAAE,GAAG,iCAAiC,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QACpB,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;QAEd,MAAM,GAAG,IAAI,CAAC;IAEhB,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,oCAWC;AAED,SAAgB,UAAU,CAAC,KAAa;IAEtC,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAHD,gCAGC;AAED,SAAgB,eAAe,CAAC,CAAa;IAE3C,IAAI,CAAC,CAAC,MAAM;QACV,OAAO,IAAI,CAAC;IACd,IAAI,CAAC,CAAC,EAAE,KAAK,SAAS;QACpB,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;IAEhB,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,aAAa,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC;AACtF,CAAC;AAVD,0CAUC;AAED,SAAgB,eAAe,CAAC,CAAS;IAEvC,IAAI,EAAE,GAAG,uDAAuD;IAChE,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3B,+EAA+E;IAC/E,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC7F,CAAC;AAPD,0CAOC;AAED,SAAgB,eAAe,CAAC,CAAa;IAE3C,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;QACvB,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;IAEhB,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,mBAAmB,CAAC,CAAC,KAAK,UAAU,CAAC;AACzE,CAAC;AAND,0CAMC;AAED,SAAgB,aAAa,CAAC,CAAa;IAEzC,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAC1B;QACE,IAAI,EAAE,GAAG,oCAAoC,CAAC;QAC9C,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;YACpB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,CAAC,EAAE,CAAC;KACb;IACD,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;AACvC,CAAC;AAXD,sCAWC;AAED,SAAgB,oBAAoB,CAAC,IAAc;IAEjD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAHD,oDAGC;;;;;;;;;;;;;;;;;;;;;;;AEnLD;;;;;;;;;;ACAA;;;;;;UCAA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;UEtBA;UACA;UACA;UACA","sources":["webpack://dra-types/webpack/universalModuleDefinition","webpack://dra-types/./lib/all.ts","webpack://dra-types/./lib/bucketmap.ts","webpack://dra-types/./lib/colordata.ts","webpack://dra-types/./lib/csv.ts","webpack://dra-types/./lib/dra-types.ts","webpack://dra-types/./lib/gencolor.ts","webpack://dra-types/./lib/groups.ts","webpack://dra-types/./lib/landmark.ts","webpack://dra-types/./lib/layer.ts","webpack://dra-types/./lib/precincts.ts","webpack://dra-types/./lib/reverse.ts","webpack://dra-types/./lib/schemas.ts","webpack://dra-types/./lib/splittogeofeature.ts","webpack://dra-types/./lib/stateinfo.ts","webpack://dra-types/./lib/stats.ts","webpack://dra-types/./lib/vfeature.ts","webpack://dra-types/./lib/workqueue.ts","webpack://dra-types/external commonjs \"@dra2020/baseclient\"","webpack://dra-types/external commonjs \"object-hash\"","webpack://dra-types/webpack/bootstrap","webpack://dra-types/webpack/before-startup","webpack://dra-types/webpack/startup","webpack://dra-types/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dra-types\"] = factory();\n\telse\n\t\troot[\"dra-types\"] = factory();\n})(global, function() {\nreturn ","export * from './dra-types';\nexport * from './schemas';\nexport * from './bucketmap';\nexport * from './colordata';\nexport * from './gencolor';\nexport * from './vfeature';\nexport * from './csv';\nexport * from './stats';\nexport * from './layer';\nexport * from './stateinfo';\nexport * from './workqueue';\nexport * from './landmark';\nexport * from './splittogeofeature';\nexport * from './reverse';\nexport * from './groups';\nexport * from './precincts';\n","export const BucketMap: any =\n {\n 'default': 'dev-dra-us-west-2-723398989493',\n 'development': 'dev-dra-us-west-2-723398989493',\n 'production': 'dra-us-west-2-723398989493',\n 'state': 'dra-us-west-2-723398989493',\n 'state-dev': 'dev-dra-us-west-2-723398989493',\n 'logs': 'dra-uswest-logs',\n 'logs-dev': 'dra-uswest-logs',\n 'memsqs': 'dra-uswest-memsqs',\n 'memsqs-dev': 'dra-uswest-memsqs',\n 'images': 'dra-uswest-images',\n 'images-dev': 'dra-uswest-images',\n 'layers': 'dra-uswest-layers',\n 'layers-dev': 'dra-uswest-layers',\n 'data': 'dra-us-west-datafiles',\n 'data-dev': 'dra-us-west-datafiles-dev',\n 'splits': 'dra-block-cache',\n 'splits-dev': 'dra-block-cache-dev',\n 'counties': 'dra-county-cache',\n 'counties-dev': 'dra-county-cache-dev',\n 'geojson': 'dra-uswest-geojson',\n 'geojson-dev': 'dra-uswest-geojson',\n 'transfers': 'dra-transfers',\n 'transfers-dev': 'dra-transfers-dev',\n 'downloads': 'dra-uswest-downloads',\n 'downloads-dev': 'dra-uswest-downloads',\n 'editcache': 'dra-uswest-editcache',\n 'editcache-dev': 'dra-uswest-editcache-dev',\n }\n","export const DefaultColorNames: string[] = \r\n[\r\n'GhostWhite',\r\n'Blue',\r\n'Green',\r\n'DarkMagenta',\r\n'Red',\r\n'Gold',\r\n'Teal',\r\n'Chocolate', //'DarkGray', // \r\n'SlateBlue',\r\n'Cyan',\r\n'DeepPink',\r\n'Chartreuse',\r\n'CornflowerBlue',\r\n'DarkSalmon',\r\n'Olive',\r\n'DarkOrange',\r\n'Lime',\r\n'DarkSlateBlue',\r\n'Yellow',\r\n'YellowGreen',\r\n'Pink',\r\n'Maroon',\r\n'Sienna',\r\n'Aquamarine',\r\n'Indigo',\r\n'PaleVioletRed',\r\n'Navy', // 'Gray', // \r\n'SpringGreen',\r\n'Plum',\r\n'DarkSeaGreen',\r\n'LightCoral',\r\n'Khaki',\r\n'OrangeRed',\r\n'RoyalBlue',\r\n'LimeGreen',\r\n'DarkOrchid',\r\n'Orange',\r\n'DodgerBlue',\r\n'MediumAquamarine',\r\n'Moccasin',\r\n'Firebrick',\r\n'LightSteelBlue',\r\n'LawnGreen',\r\n'Magenta',\r\n'MediumVioletRed',\r\n'Turquoise',\r\n'Tomato',\r\n'Thistle',\r\n'SandyBrown',\r\n'IndianRed',\r\n'PowderBlue',\r\n'SaddleBrown',\r\n'OliveDrab',\r\n'Fuchsia', // 'Gainsboro', //\r\n'PeachPuff',\r\n'RosyBrown',\r\n];\r\n\r\nexport interface ColorLookup\r\n{\r\n [key: string]: string;\r\n}\r\n\r\nexport const ColorValues: ColorLookup =\r\n{\r\n 'AliceBlue': '#F0F8FF',\r\n 'AntiqueWhite': '#FAEBD7',\r\n 'Aqua': '#00FFFF',\r\n 'Aquamarine': '#7FFFD4',\r\n 'Azure': '#F0FFFF',\r\n 'Beige': '#F5F5DC',\r\n 'Bisque': '#FFE4C4',\r\n 'Black': '#000000',\r\n 'BlanchedAlmond': '#FFEBCD',\r\n 'Blue': '#0000FF',\r\n 'BlueViolet': '#8A2BE2',\r\n 'Brown': '#A52A2A',\r\n 'BurlyWood': '#DEB887',\r\n 'CadetBlue': '#5F9EA0',\r\n 'Chartreuse': '#7FFF00',\r\n 'Chocolate': '#D2691E',\r\n 'Coral': '#FF7F50',\r\n 'CornflowerBlue': '#6495ED',\r\n 'Cornsilk': '#FFF8DC',\r\n 'Crimson': '#DC143C',\r\n 'Cyan': '#00FFFF',\r\n 'DarkBlue': '#00008B',\r\n 'DarkCyan': '#008B8B',\r\n 'DarkGoldenrod': '#B8860B',\r\n 'DarkGray': '#A9A9A9',\r\n 'DarkGreen': '#006400',\r\n 'DarkKhaki': '#BDB76B',\r\n 'DarkMagenta': '#8B008B',\r\n 'DarkOliveGreen': '#556B2F',\r\n 'DarkOrange': '#FF8C00',\r\n 'DarkOrchid': '#9932CC',\r\n 'DarkRed': '#8B0000',\r\n 'DarkSalmon': '#E9967A',\r\n 'DarkSeaGreen': '#8FBC8F',\r\n 'DarkSlateBlue': '#483D8B',\r\n 'DarkSlateGray': '#2F4F4F',\r\n 'DarkTurquoise': '#00CED1',\r\n 'DarkViolet': '#9400D3',\r\n 'DeepPink': '#FF1493',\r\n 'DeepSkyBlue': '#00BFFF',\r\n 'DimGray': '#696969',\r\n 'DodgerBlue': '#1E90FF',\r\n 'Firebrick': '#B22222',\r\n 'FloralWhite': '#FFFAF0',\r\n 'ForestGreen': '#228B22',\r\n 'Fuchsia': '#FF00FF',\r\n 'Gainsboro': '#DCDCDC',\r\n 'GhostWhite': '#F8F8FF',\r\n 'Gold': '#FFD700',\r\n 'Goldenrod': '#DAA520',\r\n 'Gray': '#808080',\r\n 'Green': '#008000',\r\n 'GreenYellow': '#ADFF2F',\r\n 'Honeydew': '#F0FFF0',\r\n 'HotPink': '#FF69B4',\r\n 'IndianRed': '#CD5C5C',\r\n 'Indigo': '#4B0082',\r\n 'Ivory': '#FFFFF0',\r\n 'Khaki': '#F0E68C',\r\n 'Lavender': '#E6E6FA',\r\n 'LavenderBlush': '#FFF0F5',\r\n 'LawnGreen': '#7CFC00',\r\n 'LemonChiffon': '#FFFACD',\r\n 'LightBlue': '#ADD8E6',\r\n 'LightCoral': '#F08080',\r\n 'LightCyan': '#E0FFFF',\r\n 'LightGoldenrodYellow': '#FAFAD2',\r\n 'LightGray': '#D3D3D3',\r\n 'LightGreen': '#90EE90',\r\n 'LightPink': '#FFB6C1',\r\n 'LightSalmon': '#FFA07A',\r\n 'LightSeaGreen': '#20B2AA',\r\n 'LightSkyBlue': '#87CEFA',\r\n 'LightSlateGray': '#778899',\r\n 'LightSteelBlue': '#B0C4DE',\r\n 'LightYellow': '#FFFFE0',\r\n 'Lime': '#00FF00',\r\n 'LimeGreen': '#32CD32',\r\n 'Linen': '#FAF0E6',\r\n 'Magenta': '#FF00FF',\r\n 'Maroon': '#800000',\r\n 'MediumAquamarine': '#66CDAA',\r\n 'MediumBlue': '#0000CD',\r\n 'MediumOrchid': '#BA55D3',\r\n 'MediumPurple': '#9370DB',\r\n 'MediumSeaGreen': '#3CB371',\r\n 'MediumSlateBlue': '#7B68EE',\r\n 'MediumSpringGreen': '#00FA9A',\r\n 'MediumTurquoise': '#48D1CC',\r\n 'MediumVioletRed': '#C71585',\r\n 'MidnightBlue': '#191970',\r\n 'MintCream': '#F5FFFA',\r\n 'MistyRose': '#FFE4E1',\r\n 'Moccasin': '#FFE4B5',\r\n 'NavajoWhite': '#FFDEAD',\r\n 'Navy': '#000080',\r\n 'OldLace': '#FDF5E6',\r\n 'Olive': '#808000',\r\n 'OliveDrab': '#6B8E23',\r\n 'Orange': '#FFA500',\r\n 'OrangeRed': '#FF4500',\r\n 'Orchid': '#DA70D6',\r\n 'PaleGoldenrod': '#EEE8AA',\r\n 'PaleGreen': '#98FB98',\r\n 'PaleTurquoise': '#AFEEEE',\r\n 'PaleVioletRed': '#DB7093',\r\n 'PapayaWhip': '#FFEFD5',\r\n 'PeachPuff': '#FFDAB9',\r\n 'Peru': '#CD853F',\r\n 'Pink': '#FFC0CB',\r\n 'Plum': '#DDA0DD',\r\n 'PowderBlue': '#B0E0E6',\r\n 'Purple': '#800080',\r\n 'Red': '#FF0000',\r\n 'RosyBrown': '#BC8F8F',\r\n 'RoyalBlue': '#4169E1',\r\n 'SaddleBrown': '#8B4513',\r\n 'Salmon': '#FA8072',\r\n 'SandyBrown': '#F4A460',\r\n 'SeaGreen': '#2E8B57',\r\n 'SeaShell': '#FFF5EE',\r\n 'Sienna': '#A0522D',\r\n 'Silver': '#C0C0C0',\r\n 'SkyBlue': '#87CEEB',\r\n 'SlateBlue': '#6A5ACD',\r\n 'SlateGray': '#708090',\r\n 'Snow': '#FFFAFA',\r\n 'SpringGreen': '#00FF7F',\r\n 'SteelBlue': '#4682B4',\r\n 'Tan': '#D2B48C',\r\n 'Teal': '#008080',\r\n 'Thistle': '#D8BFD8',\r\n 'Tomato': '#FF6347',\r\n 'Turquoise': '#40E0D0',\r\n 'Violet': '#EE82EE',\r\n 'Wheat': '#F5DEB3',\r\n 'White': '#FFFFFF',\r\n 'WhiteSmoke': '#F5F5F5',\r\n 'Yellow': '#FFFF00',\r\n 'YellowGreen': '#9ACD32',\r\n};\r\n\r\nexport const ColorBySolidWhite = 0;\r\nexport const ColorBySolidBlack = 1;\r\nexport const ColorBySolidHispanic = 2;\r\nexport const ColorBySolidAsian = 3;\r\nexport const ColorByMostlyWhite = 4;\r\nexport const ColorByMostlyBlack = 5;\r\nexport const ColorByMostlyHispanic = 6;\r\nexport const ColorByMostlyAsian = 7;\r\nexport const ColorByMostlyNative = 8;\r\nexport const ColorByMix = 9;\r\nexport const ColorByHispanicWhite = 10;\r\nexport const ColorByBlackWhite = 11;\r\nexport const ColorByHispanicBlack = 12;\r\nexport const ColorByAsianWhite = 13;\r\nexport const ColorByAsianHispanic = 14;\r\nexport const ColorByBlackAsian = 15;\r\n\r\nexport const EthnicBackgroundColor: string[] = [\r\n '#c0392b', // solid white\r\n '#3498db', // solid black\r\n '#2ecc71', // solid hispanic\r\n '#9b59b6', // solid asian\r\n '#d98880', // mostly white\r\n '#aed6f1', // mostly black\r\n '#abebc6', // mostly hispanic\r\n '#bb8fce', // mostly asian\r\n '#f1c40f', // mostly native\r\n '#aab7b8', // mix\r\n '#d5f5e3', // hispanic / white\r\n '#d6eaf8', // black / white\r\n '#186a3b', // hispanic / black\r\n '#e8daef', // asian / white\r\n '#45b39d', // asian / hispanic\r\n '#4a235a', // black / asian\r\n ];\r\nexport const EthnicTextColor: string[] = [\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n ];\r\nexport const EthnicLabel: string[] = [\r\n 'Solid White',\r\n 'Solid Black',\r\n 'Solid Hispanic',\r\n 'Solid Asian',\r\n 'Mostly White',\r\n 'Mostly Black',\r\n 'Mostly Hispanic',\r\n 'Mostly Asian',\r\n 'Mostly Native',\r\n 'Mixed',\r\n 'Hispanic / White Mix',\r\n 'Black / White Mix',\r\n 'Hispanic / Black Mix',\r\n 'Asian / White Mix',\r\n 'Asian / Hispanic Mix',\r\n 'Black / Asian Mix'\r\n ];\r\n\r\nexport const ColorByGreatR = 0;\r\nexport const ColorByGoodR = 1;\r\nexport const ColorByFairR = 2;\r\nexport const ColorByEven = 3;\r\nexport const ColorByFairD = 4;\r\nexport const ColorByGoodD = 5;\r\nexport const ColorByGreatD = 6;\r\n\r\nexport const ElectionBackgroundColor: string[] = [\r\n '#CF0000', // greatR\r\n '#FF4555', // goodR\r\n '#FFB0CB', // fairR\r\n '#9932CC', // even\r\n '#87CEEB', // fairD\r\n '#1E90FF', // goodD\r\n '#0000CF', // greatD\r\n];\r\n\r\nexport const ElectionTextColor: string[] = [\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n '#000000',\r\n '#000000',\r\n '#ffffff',\r\n];\r\nexport const ElectionLabel: string[] = [\r\n 'Great Republican',\r\n 'Good Republican',\r\n 'Fair Republican',\r\n 'Even',\r\n 'Fair Democrat',\r\n 'Good Democrat',\r\n 'Great Democrat'\r\n ];\r\n\r\nconst lum: number[] = [0, 25, 50, 75, 100, 125, 150, 175, 200, 225, 255];\r\nexport let IntensityBackgroundColor: string[] = [];\r\nlum.forEach((n: number) => { IntensityBackgroundColor.push(`rgba(${n}, ${n}, ${n}, 1.0)`) } );\r\n","// Public libraries\nimport { Util, CSV, G } from '@dra2020/baseclient';\n\n// Local library\nimport * as VF from './vfeature';\n\n// Used internally to index into District Properties Array\nexport type BlockMap = { [id: string]: number };\n\n// Used more generically and allows string districtIDs\nexport type BlockMapping = { [id: string]: string };\n\nexport type RevBlockMapping = { [id: string]: string[] };\n\n// Alternate block mapping (only supports <1 std>: <Many alt>)\nexport type AltBlockMapping = { [blockid: string]: {[blockid: string]: number} }; // {stdblock: {altblock1: pop1, altblock2: pop2, ...}}\n\nlet reNumeric = /^(\\D*)(\\d*)(\\D*)$/;\nlet reDistrictNumber = /^\\d+$/;\nlet reDistrictNumeric = /^\\d/;\n\n// Normalize any numeric part to have no padded leading zeros\nexport function canonicalDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n if (a[2].length > 0)\n a[2] = String(Number(a[2]));\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\nfunction reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping\n{\n let rev: any = {};\n\n mbm.forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nfunction reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping\n{\n return reverseSubMapping(mbm, 12);\n}\n\n// Normalize any numeric part to have four digits with padded leading zeros\n// so alphabetic sorting will result in correct numeric sort for mixed alphanumber\n// district labels.\nexport function canonicalSortingDistrictID(districtID: string): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n {\n switch (s.length)\n {\n case 1: s = `000${s}`; break;\n case 2: s = `00${s}`; break;\n case 3: s = `0${s}`; break;\n }\n a[2] = s;\n }\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n return districtID;\n}\n\n// Return numeric part of districtID (or -1 if there is none)\nexport function canonicalNumericFromDistrictID(districtID: string): number\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n let s = a[2];\n if (s.length > 0)\n return Number(s);\n }\n return -1;\n}\n\nexport function canonicalDistrictIDFromNumber(districtID: string, n: number): string\n{\n let a = reNumeric.exec(districtID);\n if (a && a.length == 4)\n {\n a[2] = String(n);\n districtID = `${a[1]}${a[2]}${a[3]}`;\n }\n else\n districtID = String(n);\n return districtID;\n}\n\n// Numbers start at 1\nexport type DistrictOrder = { [districtID: string]: number };\n\n// If purely numeric districtIDs and we are missing some number of IDs less than\nexport function canonicalDistrictIDGapFill(keys: string[]): string[]\n{\n if (keys == null || keys.length == 0) return keys;\n let nonNumeric = keys.find((s: string) => !reDistrictNumber.test(s)) !== undefined;\n if (nonNumeric) return keys;\n let max = Number(keys[keys.length-1]);\n if (max == keys.length || (max - keys.length) > keys.length) return keys; // no gaps or too many gaps\n\n // OK, finally going to fill some gaps\n for (let i: number = 0; i < keys.length; i++)\n {\n let here = Number(keys[i]);\n while (here > i+1)\n {\n keys.splice(i, 0, canonicalSortingDistrictID(String(i+1)));\n i++;\n }\n }\n\n return keys;\n}\n\nexport function canonicalDistrictIDOrdering(order: DistrictOrder): DistrictOrder\n{\n let keys = Object.keys(order);\n let i: number;\n let a: any = [];\n let template: string = undefined;\n\n keys = keys.map((s: string) => canonicalSortingDistrictID(s));\n\n // Let's omit this. Some official maps have odd numbering schemes and we don't\n // want to generate anomalous spurious extra districts.\n //keys = canonicalDistrictIDGapFill(keys);\n\n keys.sort();\n order = {};\n for (i = 0; i < keys.length; i++)\n order[canonicalDistrictID(keys[i])] = i+1;\n\n // Remove water districts\n if (order['ZZZ']) delete order['ZZZ'];\n if (order['ZZ']) delete order['ZZ'];\n\n return order;\n}\n\nexport interface OneCSVLine\n{\n geoid: string;\n districtID: string;\n}\n\nlet reArray = [\n // comma-delimited\n /^(\\d\\d[^\\s,']*)[\\s]*,[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s,\"]*)[\\s]*,[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s,]*)[\\s]*,[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*,[\\s]*([^\\s]+)[\\s]*$/,\n\n // pipe-delimited, new 2020 Census Bureau format\n /^(\\d\\d[^\\s\\|']*)[\\s]*\\|[\\s]*([^\\s']+)[\\s]*$/,\n /^(\\d\\d[^\\s\\|\"]*)[\\s]*\\|[\\s]*([^\\s\"]+)[\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[']([^']*)['][\\s]*$/,\n /^(\\d\\d[^\\s\\|]*)[\\s]*\\|[\\s]*[\"]([^\"]*)[\"][\\s]*$/,\n /^['](\\d\\d[^']*)['][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n /^[\"](\\d\\d[^\"]*)[\"][\\s]*\\|[\\s]*([^\\s]+)[\\s]*$/,\n ];\nlet reStart = 0; // last successful regex\n\nexport function parseCSVLine(line: string): OneCSVLine\n{\n if (line == null || line == '') return null;\n\n // start at last successful parse so we don't have to\n // iterate through all the regex's for each line.\n for (let i = reStart; i < reArray.length; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n for (let i = 0; i < reStart; i++)\n {\n let a = reArray[i].exec(line);\n if (a && a.length === 3)\n {\n reStart = i;\n return { geoid: a[1], districtID: a[2] };\n }\n }\n return null;\n}\n\nexport function csvLine(coder: Util.Coder, line: string): OneCSVLine\n{\n if (!coder || !line) return null;\n let parse = new CSV.ParseOne(coder, line);\n if (parse.length != 2) return null;\n let re = /^\\d\\d/;\n if (!re.exec(parse.fields[0])) return null;\n return { geoid: parse.fields[0], districtID: parse.fields[1] };\n}\n\nexport interface ConvertResult\n{\n inBlockMap: BlockMapping;\n inMbm: G.MultiBlockMapping;\n outValid: boolean;\n outState: string;\n outMap: BlockMapping;\n outOrder: DistrictOrder;\n outDistrictToSplit: VF.DistrictToSplitBlock;\n nFeatures: number;\n nSplitFromFeatures: number;\n nSplitToFeatures: number;\n nBlocks: number;\n nSplitBlocks: number;\n}\n\nexport function blockmapToState(blockMap: BlockMapping): string\n{\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n return geoidToState(id);\n return null;\n}\n\n// blockToVTD:\n// Take BlockMapping (simple map of GEOID to districtID) and a per-state map of block-level GEOID to VTD\n// and return the output mapping of VTD to districtID, as well a data structure that describes any VTD's\n// that need to be split between districtIDs. Also returns the DistrictOrder structure that defines the\n// districtIDs that were used by the file.\n//\n// The state (as specified by the first two digits of the GEOID) is also determined. If the GEOID's do\n// not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.\n//\n\nexport function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult\n{\n let res: ConvertResult = {\n inBlockMap: blockMap,\n inMbm: mbm,\n outValid: true,\n outState: null,\n outMap: {},\n outOrder: {},\n outDistrictToSplit: {},\n nFeatures: 0,\n nSplitFromFeatures: 0,\n nSplitToFeatures: 0,\n nBlocks: 0,\n nSplitBlocks: 0,\n };\n\n let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};\n\n let revBG: RevBlockMapping; // lazy create on demand\n\n if (altBlocks)\n {\n // Create reverse of altBlocks if they exist {altBlockid: {stdBlockid, pop}, ...}\n let revAltBlocks: {[altBlockid: string]: {blockid: string, pop: number}} = {};\n Object.keys(altBlocks).forEach(blockid =>\n {\n Object.keys(altBlocks[blockid]).forEach(altBlockid =>\n {\n revAltBlocks[altBlockid] = {blockid: blockid, pop: altBlocks[blockid][altBlockid]}\n })\n });\n // Now walk input and build new blockMap with altBlocks replaced with stdBlocks\n let blockMapP: BlockMapping = {};\n let bestAlt: {[blockid: string]: {dist: string, pop: number}} = {};\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let n: number = id.length;\n if (n >= 15 && !(mbm && mbm.map(id) !== undefined) && revAltBlocks[id])\n {\n if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)\n {\n bestAlt[revAltBlocks[id].blockid] = {dist: blockMap[id], pop: revAltBlocks[id].pop};\n blockMapP[revAltBlocks[id].blockid] = blockMap[id];\n }\n }\n else\n {\n blockMapP[id] = blockMap[id];\n }\n }\n blockMap = blockMapP;\n }\n\n // First aggregate into features across all the blocks\n for (var id in blockMap) if (blockMap.hasOwnProperty(id))\n {\n let state = geoidToState(id);\n if (res.outState == null)\n res.outState = state;\n else if (res.outState !== state)\n {\n res.outValid = false;\n break;\n }\n\n let districtID: string = canonicalDistrictID(blockMap[id]);\n\n // Just ignore ZZZ (water) blocks\n if (districtID === 'ZZZ')\n continue;\n\n if (res.outOrder[districtID] === undefined)\n res.outOrder[districtID] = 0;\n\n let n: number = id.length;\n let geoids: string[];\n let ids: string[];\n res.nBlocks++;\n\n // Simple test for block id (vs. voting district or block group) id\n // Also skip longer custom precinct ids\n if (n >= 15 && (!mbm || !mbm.rev(id)))\n {\n ids = [id];\n if (mbm && mbm.map(id) !== undefined)\n geoids = [mbm.map(id)];\n else\n {\n geoids = [id.substr(0, 12)];\n if (mbm && !mbm.rev(geoids[0]))\n {\n res.outValid = false;\n break;\n }\n }\n }\n else if (n == 12)\n {\n if (!revBG) revBG = reverseBlockgroupMapping(mbm);\n if (revBG[id])\n {\n ids = revBG[id];\n geoids = ids.map(id => mbm.map(id));\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n }\n else\n {\n ids = [id];\n geoids = [id];\n }\n\n ids.forEach((id: string, i: number) => {\n let geoid = geoids[i];\n let districtToBlocks: { [districtID: string]: { [blockid: string]: boolean } } = bmGather[geoid];\n if (districtToBlocks === undefined)\n bmGather[geoid] = { [districtID]: { [id]: true } };\n else\n {\n let thisDistrict: { [blockid: string]: boolean } = districtToBlocks[districtID];\n if (thisDistrict === undefined)\n {\n thisDistrict = { };\n districtToBlocks[districtID] = thisDistrict;\n }\n thisDistrict[id] = true;\n }\n });\n }\n\n // Now determine actual mapping of blocks to features, looking for split features\n for (let geoid in bmGather) if (bmGather.hasOwnProperty(geoid))\n {\n let districtToBlocks = bmGather[geoid];\n let bWhole = false;\n if (Util.countKeys(districtToBlocks) == 1)\n {\n let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);\n if (blocks[0] === geoid || (mbm.rev(geoid) && blocks.length === mbm.rev(geoid).length))\n bWhole = true;\n }\n if (bWhole)\n {\n res.outMap[geoid] = Util.nthKey(districtToBlocks);\n res.nFeatures++;\n }\n else\n {\n for (let districtID in districtToBlocks) if (districtToBlocks.hasOwnProperty(districtID))\n {\n let split: VF.SplitBlock = { state: '', datasource: '', geoid: geoid, blocks: Object.keys(districtToBlocks[districtID]) };\n res.nSplitBlocks += split.blocks.length;\n let splits = res.outDistrictToSplit[districtID];\n if (splits === undefined)\n {\n splits = [];\n res.outDistrictToSplit[districtID] = splits;\n }\n splits.push(split);\n res.nFeatures++;\n res.nSplitToFeatures++;\n }\n res.nSplitFromFeatures++;\n }\n }\n\n res.outOrder = canonicalDistrictIDOrdering(res.outOrder);\n\n return res;\n}\n\nexport const StateIdToStateCode: any = {\n '01': 'AL',\n '02': 'AK',\n '04': 'AZ',\n '05': 'AR',\n '06': 'CA',\n '08': 'CO',\n '09': 'CT',\n '10': 'DE',\n '11': 'DC',\n '12': 'FL',\n '13': 'GA',\n '15': 'HI',\n '16': 'ID',\n '17': 'IL',\n '18': 'IN',\n '19': 'IA',\n '20': 'KS',\n '21': 'KY',\n '22': 'LA',\n '23': 'ME',\n '24': 'MD',\n '25': 'MA',\n '26': 'MI',\n '27': 'MN',\n '28': 'MS',\n '29': 'MO',\n '30': 'MT',\n '31': 'NE',\n '32': 'NV',\n '33': 'NH',\n '34': 'NJ',\n '35': 'NM',\n '36': 'NY',\n '37': 'NC',\n '38': 'ND',\n '39': 'OH',\n '40': 'OK',\n '41': 'OR',\n '42': 'PA',\n '44': 'RI',\n '45': 'SC',\n '46': 'SD',\n '47': 'TN',\n '48': 'TX',\n '49': 'UT',\n '50': 'VT',\n '51': 'VA',\n '53': 'WA',\n '54': 'WV',\n '55': 'WI',\n '56': 'WY',\n '72': 'PR',\n};\n\nexport const StateCodeToStateId: any = {\n 'AL': '01',\n 'AK': '02',\n 'AZ': '04',\n 'AR': '05',\n 'CA': '06',\n 'CO': '08',\n 'CT': '09',\n 'DE': '10',\n 'DC': '11',\n 'FL': '12',\n 'GA': '13',\n 'HI': '15',\n 'ID': '16',\n 'IL': '17',\n 'IN': '18',\n 'IA': '19',\n 'KS': '20',\n 'KY': '21',\n 'LA': '22',\n 'ME': '23',\n 'MD': '24',\n 'MA': '25',\n 'MI': '26',\n 'MN': '27',\n 'MS': '28',\n 'MO': '29',\n 'MT': '30',\n 'NE': '31',\n 'NV': '32',\n 'NH': '33',\n 'NJ': '34',\n 'NM': '35',\n 'NY': '36',\n 'NC': '37',\n 'ND': '38',\n 'OH': '39',\n 'OK': '40',\n 'OR': '41',\n 'PA': '42',\n 'RI': '44',\n 'SC': '45',\n 'SD': '46',\n 'TN': '47',\n 'TX': '48',\n 'UT': '49',\n 'VT': '50',\n 'VA': '51',\n 'WA': '53',\n 'WV': '54',\n 'WI': '55',\n 'WY': '56',\n 'PR': '72',\n};\n\nexport function geoidToState(geoid: string): string\n{\n let re = /^(..).*$/;\n\n let a = re.exec(geoid);\n if (a == null || a.length != 2) return null;\n return StateIdToStateCode[a[1]];\n}\n\nexport type StateUrls = (\n 'alabama' |\n 'alaska' |\n 'arizona' |\n 'arkansas' |\n 'california' |\n 'colorado' |\n 'connecticut' |\n 'delaware' |\n 'district-of-columbia' |\n 'florida' |\n 'georgia' |\n 'hawaii' |\n 'idaho' |\n 'illinois' |\n 'indiana' |\n 'iowa' |\n 'kansas' |\n 'kentucky' |\n 'louisiana' |\n 'maine' |\n 'maryland' |\n 'massachusetts' |\n 'michigan' |\n 'minnesota' |\n 'mississippi' |\n 'missouri' |\n 'montana' |\n 'nebraska' |\n 'nevada' |\n 'new-hampshire' |\n 'new-jersey' |\n 'new-mexico' |\n 'new-york' |\n 'north-carolina' |\n 'north-dakota' |\n 'ohio' |\n 'oklahoma' |\n 'oregon' |\n 'pennsylvania' |\n 'rhode-island' |\n 'south-carolina' |\n 'south-dakota' |\n 'tennessee' |\n 'texas' |\n 'utah' |\n 'vermont' |\n 'virginia' |\n 'washington' |\n 'west-virginia' |\n 'wisconsin' |\n 'wyoming' |\n 'puerto-rico'\n);\n\nexport type ValidStateNamesForUrlType =\n{\n readonly [stateUrl in StateUrls]: boolean;\n};\n\nconst ValidStateNamesForUrl: ValidStateNamesForUrlType = {\n 'alabama': true,\n 'alaska': true,\n 'arizona': true,\n 'arkansas': true,\n 'california': true,\n 'colorado': true,\n 'connecticut': true,\n 'delaware': true,\n 'district-of-columbia': true,\n 'florida': true,\n 'georgia': true,\n 'hawaii': true,\n 'idaho': true,\n 'illinois': true,\n 'indiana': true,\n 'iowa': true,\n 'kansas': true,\n 'kentucky': true,\n 'louisiana': true,\n 'maine': true,\n 'maryland': true,\n 'massachusetts': true,\n 'michigan': true,\n 'minnesota': true,\n 'mississippi': true,\n 'missouri': true,\n 'montana': true,\n 'nebraska': true,\n 'nevada': true,\n 'new-hampshire': true,\n 'new-jersey': true,\n 'new-mexico': true,\n 'new-york': true,\n 'north-carolina': true,\n 'north-dakota': true,\n 'ohio': true,\n 'oklahoma': true,\n 'oregon': true,\n 'pennsylvania': true,\n 'rhode-island': true,\n 'south-carolina': true,\n 'south-dakota': true,\n 'tennessee': true,\n 'texas': true,\n 'utah': true,\n 'vermont': true,\n 'virginia': true,\n 'washington': true,\n 'west-virginia': true,\n 'wisconsin': true,\n 'wyoming': true,\n 'puerto-rico': true,\n};\n\nexport function isValidStateNameForUrl(s: any): s is StateUrls\n{\n return (typeof s === 'string' && s in ValidStateNamesForUrl);\n}\n\n// StateCodes in state name alphabetically order\nexport const StateCodesOrdered: string[] = [\n \"AL\",\n \"AK\",\n \"AZ\",\n \"AR\",\n \"CA\",\n \"CO\",\n \"CT\",\n \"DE\",\n \"DC\",\n \"FL\",\n \"GA\",\n \"HI\",\n \"ID\",\n \"IL\",\n \"IN\",\n \"IA\",\n \"KS\",\n \"KY\",\n \"LA\",\n \"ME\",\n \"MD\",\n \"MA\",\n \"MI\",\n \"MN\",\n \"MS\",\n \"MO\",\n \"MT\",\n \"NE\",\n \"NV\",\n \"NH\",\n \"NJ\",\n \"NM\",\n \"NY\",\n \"NC\",\n \"ND\",\n \"OH\",\n \"OK\",\n \"OR\",\n \"PA\",\n \"RI\",\n \"SC\",\n \"SD\",\n \"TN\",\n \"TX\",\n \"UT\",\n \"VT\",\n \"VA\",\n \"WA\",\n \"WV\",\n \"WI\",\n \"WY\",\n \"PR\",\n];\n\nexport const StateNameMap : {[key: string] : string} = {\n \"AL\": \"Alabama\",\n \"AK\": \"Alaska\",\n \"AZ\": \"Arizona\",\n \"AR\": \"Arkansas\",\n \"CA\": \"California\",\n \"CO\": \"Colorado\",\n \"CT\": \"Connecticut\",\n \"DE\": \"Delaware\",\n \"FL\": \"Florida\",\n \"GA\": \"Georgia\",\n \"HI\": \"Hawaii\",\n \"ID\": \"Idaho\",\n \"IL\": \"Illinois\",\n \"IN\": \"Indiana\",\n \"IA\": \"Iowa\",\n \"KS\": \"Kansas\",\n \"KY\": \"Kentucky\",\n \"LA\": \"Louisiana\",\n \"ME\": \"Maine\",\n \"MD\": \"Maryland\",\n \"MA\": \"Massachusetts\",\n \"MI\": \"Michigan\",\n \"MN\": \"Minnesota\",\n \"MS\": \"Mississippi\",\n \"MO\": \"Missouri\",\n \"MT\": \"Montana\",\n \"NE\": \"Nebraska\",\n \"NV\": \"Nevada\",\n \"NH\": \"New Hampshire\",\n \"NJ\": \"New Jersey\",\n \"NM\": \"New Mexico\",\n \"NY\": \"New York\",\n \"NC\": \"North Carolina\",\n \"ND\": \"North Dakota\",\n \"OH\": \"Ohio\",\n \"OK\": \"Oklahoma\",\n \"OR\": \"Oregon\",\n \"PA\": \"Pennsylvania\",\n \"RI\": \"Rhode Island\",\n \"SC\": \"South Carolina\",\n \"SD\": \"South Dakota\",\n \"TN\": \"Tennessee\",\n \"TX\": \"Texas\",\n \"UT\": \"Utah\",\n \"VT\": \"Vermont\",\n \"VA\": \"Virginia\",\n \"WA\": \"Washington\",\n \"WV\": \"West Virginia\",\n \"WI\": \"Wisconsin\",\n \"WY\": \"Wyoming\",\n \"DC\": \"District of Columbia\",\n \"PR\": \"Puerto Rico\",\n};\n","// Type for single comment\nexport interface Comment\n{\n userid: string;\n text: string;\n date: string;\n recommend: number;\n}\n\n// Comment record associated with a map\nexport interface CommentList\n{\n id?: string;\n [commentid: string]: Comment | string; // Really just Comment but make TypeScript happy\n}\n\n// Supported like kinds\nexport type LikeKind = 'like' | 'love' | 'wow' | 'angry' | 'funny';\n\n// Like record for an individual like\nexport interface Like\n{\n date: string;\n kind: LikeKind;\n}\n\n// Record for likes associated with a map\nexport interface LikeList\n{\n id?: string;\n [userid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Record for likes an individual user has performed\nexport interface UserLikes\n{\n id?: string;\n [aid: string]: Like | string; // Really just Like but make TypeScript happy\n}\n\n// Type of redistricting plan (Note: 'upper' is used when there is only 1 legislative map or body)\n// congress, upper, lower and other => the plan is for entire state\n// county and city => plan is for a single county or city within a state\nexport type PlanType = 'congress' | 'upper' | 'lower' | 'county' | 'city' | 'coi' | 'other';\n","import * as ColorData from \"./colordata\";\n\nlet ColorTable: string[] = null;\nconst MaxColors: number = 100;\n\nexport function genColor(i: number, useFirstColor: boolean): string\n{\n // i is district number, 0 => District[0] (unassigned), so subtract 1 to access ColorTable\n function gen_table(): void\n {\n ColorTable = [];\n for (let i: number = 0; i < MaxColors; i++)\n {\n // A little funky math below to skip the first (white) color\n let j = (i % (ColorData.DefaultColorNames.length - 1)) + 1;\n ColorTable.push(ColorData.ColorValues[ColorData.DefaultColorNames[j]]);\n }\n }\n\n if (ColorTable == null)\n gen_table();\n \n if (i == 0)\n return ColorData.ColorValues[ColorData.DefaultColorNames[0]];\n return ColorTable[((i - 1) + (useFirstColor ? 0 : 1)) % MaxColors];\n}\n","export interface Group\n{\n id: string,\n name: string,\n description: string,\n}\n\nexport const GROUP_OWNER = 1;\nexport const GROUP_VERIFIED = 2;\nexport const GROUP_SEEN = 4;\nexport const GROUP_REMOVED = 8;\nexport const GROUP_BLOCKED = 16;\nexport const GROUP_ADMIN = 32;\n\nexport function hideGroup(flags: number): boolean\n{\n return (flags & (GROUP_REMOVED|GROUP_BLOCKED)) != 0;\n}\n\nexport function adminGroup(flags: number): boolean\n{\n return (flags & (GROUP_ADMIN|GROUP_OWNER)) != 0;\n}\n\nexport interface GroupUser\n{\n id: string,\n uid: string,\n flags: number,\n}\n\nexport interface GroupMap\n{\n id: string, // group id\n sid: string, // map (session) id\n permission: number, // permissions (read or readwrite)\n}\n\nexport type GroupUserIndex = { [groupid: string]: number }; // GroupUser flags\nexport type GroupMapIndex = { [groupid: string]: number }; // GroupMap permission\nexport type GroupIndex = { [groupid: string]: Group };\n","import { Util, G } from '@dra2020/baseclient';\n\nexport interface Landmark\n{\n id: string,\n name: string,\n description: string,\n coord: [number, number],\n}\n\nexport type Landmarks = { [id: string]: Landmark };\n\nexport function landmarksToCollection(landmarks: Landmarks): G.GeoFeatureCollection\n{\n if (landmarks == null) return null;\n\n let col: G.GeoFeatureCollection = { type: 'FeatureCollection', features: [] };\n Object.values(landmarks).forEach(l => {\n let f: G.GeoFeature = {\n type: 'Feature',\n properties: {\n id: l.id,\n name: l.name,\n description: l.description,\n },\n geometry: {\n type: 'Point',\n coordinates: l.coord,\n },\n };\n col.features.push(f);\n });\n return col;\n}\n\nexport function collectionToLandmarks(col: G.GeoFeatureCollection): Landmarks\n{\n let landmarks: Landmarks = {};\n if (col && col.features) col.features.forEach((f: G.GeoFeature) => {\n if (f.geometry.type === 'Point')\n {\n let c: any = f.geometry.coordinates;\n if (Array.isArray(c) && typeof c[0] === 'number' && typeof c[1] === 'number')\n {\n let landmark: Landmark = {\n id: Util.createGuid(),\n name: G.flexName(f),\n description: f.properties.description || '',\n coord: [c[0], c[1]],\n };\n landmarks[landmark.id] = landmark;\n }\n }\n });\n return landmarks;\n}\n","export interface UserLayerMeta\n{\n createdBy: string,\n id: string,\n name?: string,\n description?: string,\n state?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean\n}\n\nexport type UserLayerMetaIndex = {\n [id: string]: UserLayerMeta\n}\n\nexport type LayerType = 'layer' | 'map' | 'restriction' | 'precincts';\n\nexport interface UserLayerRef\n{\n id: string,\n name?: string,\n layerType?: LayerType,\n geojsonName?: string,\n blockmapName?: string,\n cacheState?: string,\n cacheDatasource?: string,\n cachePlanType?: string,\n fill: boolean,\n stroke: boolean,\n label: boolean,\n landmark: boolean,\n strokeColor: string,\n strokeOpacity: number,\n fillColor: string,\n fillOpacity: number,\n lineWidth?: number,\n}\n\nexport type UserLayerRefIndex = {\n [id: string]: UserLayerRef\n}\n","export interface Precincts\n{\n id?: string,\n state?: string,\n datasource?: string,\n name?: string,\n description?: string,\n labels?: string[],\n createdBy?: string,\n createTime?: string,\n modifyTime?: string,\n deleted?: boolean,\n published?: string,\n official?: boolean,\n}\n\nexport type PrecinctsIndex = { [id: string]: Precincts };\n","export function reverseBlockMapping(bm: any): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = bm[blockid];\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n Object.values(rev).forEach((a: string[]) => a.sort());\n return rev;\n}\n\nexport function reverseSubMapping(bm: any, n: number): any\n{\n let rev: any = {};\n\n if (bm) Object.keys(bm).forEach(blockid => {\n let geoid = blockid.substr(0, n);\n if (! rev[geoid]) rev[geoid] = [];\n rev[geoid].push(blockid);\n });\n return rev;\n}\n\nexport function reverseBlockgroupMapping(bm: any): any\n{\n return reverseSubMapping(bm, 12);\n}\n\nexport function reverseTractMapping(bm: any): any\n{\n return reverseSubMapping(bm, 11);\n}\n","export let Schemas: any = {\n 'users':\n {\n FileOptions: { version: 5, name: 'users', map: false },\n Schema: {\n id: 'S',\n name: 'S',\n email: 'S',\n hashPW: 'S',\n verified: 'BOOL',\n admin: 'BOOL',\n roles: 'M',\n verifyGUID: 'S',\n resetGUID: 'S',\n resetTime: 'S',\n lastActive: 'S',\n modifyTime: 'S',\n resetCount: 'N',\n accessed: 'M',\n likeID: 'S',\n visitData: 'M',\n groups: 'M',\n cache: 'N',\n cached: 'N',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { email: 'HASH' },\n { verifyGUID: 'HASH' },\n { resetGUID: 'HASH' },\n ],\n },\n 'state':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n flags: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n groups: 'M',\n xid: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { xid: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'expungestate':\n {\n FileOptions: { version: 7, name: 'sessions', map: true },\n Schema: {\n id: 'S',\n name: 'S',\n type: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n lastActive: 'S',\n createTime: 'S',\n modifyTime: 'S',\n clientCount: 'N',\n maxClients: 'N',\n requestCount: 'N',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n loadFailed: 'BOOL',\n accessMap: 'M',\n revisions: 'L',\n xprops: 'M',\n },\n KeySchema: { id: 'HASH' },\n },\n 'splitblock':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { chunkKey: 'HASH', id: 'RANGE' },\n ],\n },\n 'blockset':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n chunk: 'S',\n chunkKey: 'S',\n chunkList: 'L',\n state: 'S',\n datasource: 'S',\n geoid: 'S',\n blocks: 'L'\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { state: 'HASH' },\n ],\n },\n 'blockchunk':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n recompute: 'BOOL',\n splits: 'L',\n },\n },\n 'access':\n {\n FileOptions: { map: true, noobject: true },\n Schema: {\n id: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'visitor':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastModified: 'S',\n /* ... others */\n },\n KeySchema: { id: 'HASH' }\n },\n 'session':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n lastActive: 'S',\n value: 'S',\n },\n KeySchema: { id: 'HASH' }\n },\n 'userlikes':\n {},\n 'likes':\n {},\n 'comments':\n {},\n 'stats':\n {},\n 'livestats':\n {},\n 'workqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n },\n KeySchema: { id: 'HASH' },\n GlobalSecondaryIndexes: [\n { priority: 'HASH' },\n ],\n },\n 'failqueue':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n priority: 'N',\n functionName: 'S',\n params: 'M',\n failType: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'layer':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n state: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { published: 'HASH' },\n { id: 'HASH' }\n ], // sparse\n },\n 'groups':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n name: 'S',\n description: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'groupsusers':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n uid: 'S',\n flags: 'N',\n },\n KeySchema: { id: 'HASH', uid: 'RANGE' },\n },\n 'groupsmaps':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n sid: 'S',\n permission: 'N',\n },\n KeySchema: { id: 'HASH', sid: 'RANGE' },\n },\n 'notifications':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n createdBy: 'S',\n message: 'S',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n },\n 'cull':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n key: 'S',\n bucket: 'S',\n expires: 'S',\n },\n KeySchema: { id: 'HASH' },\n },\n 'precincts':\n {\n FileOptions: { map: true },\n Schema: {\n id: 'S',\n state: 'S',\n datasource: 'S',\n name: 'S',\n description: 'S',\n labels: 'L',\n createdBy: 'S',\n createTime: 'S',\n modifyTime: 'S',\n deleted: 'BOOL',\n published: 'S',\n official: 'BOOL',\n },\n KeySchema: { createdBy: 'HASH', id: 'RANGE' },\n GlobalSecondaryIndexes: [\n { id: 'HASH' },\n { published: 'HASH' },\n ], // sparse\n },\n}\n","import * as geojson from 'geojson';\nimport { Util, Poly, G } from '@dra2020/baseclient';\nimport * as DT from './vfeature';\n\n// Given the topology for a precinct and a split, compute the feature data for the virtual feature.\n//\n\nexport function splitToGeoFeature(split: DT.SplitBlock, topoPrecinct: Poly.Topo, blockmapping: G.MultiBlockMapping): G.GeoFeature\n{\n let contiguity = new Util.IndexedArray();\n let block_contiguity = new Util.IndexedArray();\n let f = Poly.topoMerge(topoPrecinct, split.blocks);\n f.properties.datasets = {};\n split.blocks.forEach(blockid => {\n let b = topoPrecinct.objects[blockid];\n if (b.properties.datasets)\n Util.deepAccum(f.properties.datasets, b.properties.datasets);\n if (b.properties.contiguity)\n {\n b.properties.contiguity.forEach((id: string) => {\n contiguity.set(id === 'OUT_OF_STATE' ? id : blockmapping.map(id));\n });\n b.properties.contiguity.forEach((id: string) => {\n block_contiguity.set(id);\n });\n }\n });\n f.properties.id = DT.splitToVgeoid(split);\n f.properties.name = `Part of ${split.geoid} from ${split.blocks.length} blocks`;\n f.properties.contiguity = contiguity.asArray();\n f.properties.block_contiguity = block_contiguity.asArray();\n f.properties.blocks = split.blocks;\n return f;\n}\n","import * as DT from './dra-types';\n\nexport interface StateYearInfo\n{\n population: number,\n congress: {nDistricts: number}, \n upper: {nDistricts: number}, \n lower?: {nDistricts: number}, \n}\n\nexport interface StateInfo\n{\n '2010_VD': StateYearInfo,\n '2020_VD': StateYearInfo,\n}\n\nexport const StatePlanInfoMap: {[key: string]: StateInfo} = {\n \"AL\": {\"2010_VD\": {population: 4779736, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}, \"2020_VD\": { population: 0, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 105}}},\n \"AK\": {\"2010_VD\": {population: 710231, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 20}, lower: {nDistricts: 40}}},\n \"AZ\": {\"2010_VD\": {population: 6392017, congress: {nDistricts: 9}, upper: {nDistricts: 30}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 30}}},\n \"AR\": {\"2010_VD\": {population: 2915918, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 35}, lower: {nDistricts: 100}}},\n \"CA\": {\"2010_VD\": {population: 37253956, congress: {nDistricts: 53}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}, \"2020_VD\": {population: 6, congress: {nDistricts: 52}, upper: {nDistricts: 40}, lower: {nDistricts: 80}}},\n \"CO\": {\"2010_VD\": {population: 5029196, congress: {nDistricts: 7}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 35}, lower: {nDistricts: 65}}},\n \"CT\": {\"2010_VD\": {population: 3574097, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 36}, lower: {nDistricts: 151}}},\n \"DE\": {\"2010_VD\": {population: 897934, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 21}, lower: {nDistricts: 41}}},\n \"FL\": {\"2010_VD\": {population: 18801310, congress: {nDistricts: 27}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 28}, upper: {nDistricts: 40}, lower: {nDistricts: 120}}},\n \"GA\": {\"2010_VD\": {population: 9687653, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 56}, lower: {nDistricts: 180}}},\n \"HI\": {\"2010_VD\": {population: 1360301, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 25}, lower: {nDistricts: 51}}},\n \"ID\": {\"2010_VD\": {population: 1567582, congress: {nDistricts: 2}, upper: {nDistricts: 35}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}}},\n \"IL\": {\"2010_VD\": {population: 12830632, congress: {nDistricts: 18}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 59}, lower: {nDistricts: 118}}},\n \"IN\": {\"2010_VD\": {population: 6483802, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"IA\": {\"2010_VD\": {population: 3046355, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"KS\": {\"2010_VD\": {population: 2853118, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 40}, lower: {nDistricts: 125}}},\n \"KY\": {\"2010_VD\": {population: 4339367, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 38}, lower: {nDistricts: 100}}},\n \"LA\": {\"2010_VD\": {population: 4533372, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 39}, lower: {nDistricts: 105}}},\n \"ME\": {\"2010_VD\": {population: 1328361, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 35}, lower: {nDistricts: 151}}},\n \"MD\": {\"2010_VD\": {population: 5773552, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 47}, lower: {nDistricts: 67}}},\n \"MA\": {\"2010_VD\": {population: 6547629, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 40}, lower: {nDistricts: 160}}},\n \"MI\": {\"2010_VD\": {population: 9883640, congress: {nDistricts: 14}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}, \"2020_VD\": {population: 6, congress: {nDistricts: 13}, upper: {nDistricts: 38}, lower: {nDistricts: 110}}},\n \"MN\": {\"2010_VD\": {population: 5303925, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 67}, lower: {nDistricts: 134}}},\n \"MS\": {\"2010_VD\": {population: 2967297, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 52}, lower: {nDistricts: 122}}},\n \"MO\": {\"2010_VD\": {population: 5988927, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 34}, lower: {nDistricts: 163}}},\n \"MT\": {\"2010_VD\": {population: 989415, congress: {nDistricts: 1}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 50}, lower: {nDistricts: 100}}},\n \"NE\": {\"2010_VD\": {population: 1826341, congress: {nDistricts: 3}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 49}}},\n \"NV\": {\"2010_VD\": {population: 2700551, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 21}, lower: {nDistricts: 42}}},\n \"NH\": {\"2010_VD\": {population: 1316470, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 161}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 24}, lower: {nDistricts: 164}}},\n \"NJ\": {\"2010_VD\": {population: 8791894, congress: {nDistricts: 12}, upper: {nDistricts: 40}}, \"2020_VD\": {population: 6, congress: {nDistricts: 12}, upper: {nDistricts: 40}}},\n \"NM\": {\"2010_VD\": {population: 2059179, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}, \"2020_VD\": {population: 6, congress: {nDistricts: 3}, upper: {nDistricts: 42}, lower: {nDistricts: 70}}},\n \"NY\": {\"2010_VD\": {population: 19378102, congress: {nDistricts: 27}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 26}, upper: {nDistricts: 63}, lower: {nDistricts: 150}}},\n \"NC\": {\"2010_VD\": {population: 9535483, congress: {nDistricts: 13}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}, \"2020_VD\": {population: 6, congress: {nDistricts: 14}, upper: {nDistricts: 50}, lower: {nDistricts: 120}}},\n \"ND\": {\"2010_VD\": {population: 672591, congress: {nDistricts: 1}, upper: {nDistricts: 47}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 47}, lower: {nDistricts: 49}}},\n \"OH\": {\"2010_VD\": {population: 11536504, congress: {nDistricts: 16}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 15}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"OK\": {\"2010_VD\": {population: 3751351, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}, \"2020_VD\": {population: 6, congress: {nDistricts: 5}, upper: {nDistricts: 48}, lower: {nDistricts: 101}}},\n \"OR\": {\"2010_VD\": {population: 3831074, congress: {nDistricts: 5}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 6}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}},\n \"PA\": {\"2010_VD\": {population: 12702379, congress: {nDistricts: 18}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}, \"2020_VD\": {population: 6, congress: {nDistricts: 17}, upper: {nDistricts: 50}, lower: {nDistricts: 203}}},\n \"RI\": {\"2010_VD\": {population: 1052567, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 38}, lower: {nDistricts: 75}}},\n \"SC\": {\"2010_VD\": {population: 4625364, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}, \"2020_VD\": {population: 6, congress: {nDistricts: 7}, upper: {nDistricts: 46}, lower: {nDistricts: 124}}},\n \"SD\": {\"2010_VD\": {population: 814180, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 35}, lower: {nDistricts: 37}}},\n \"TN\": {\"2010_VD\": {population: 6346105, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 9}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"TX\": {\"2010_VD\": {population: 25145561, congress: {nDistricts: 36}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}, \"2020_VD\": {population: 6, congress: {nDistricts: 38}, upper: {nDistricts: 31}, lower: {nDistricts: 150}}},\n \"UT\": {\"2010_VD\": {population: 2763885, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}, \"2020_VD\": {population: 6, congress: {nDistricts: 4}, upper: {nDistricts: 29}, lower: {nDistricts: 75}}},\n \"VT\": {\"2010_VD\": {population: 625741, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 13}, lower: {nDistricts: 104}}},\n \"VA\": {\"2010_VD\": {population: 8001024, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}, \"2020_VD\": {population: 6, congress: {nDistricts: 11}, upper: {nDistricts: 40}, lower: {nDistricts: 100}}},\n \"WA\": {\"2010_VD\": {population: 6724540, congress: {nDistricts: 10}, upper: {nDistricts: 49}}, \"2020_VD\": {population: 6, congress: {nDistricts: 10}, upper: {nDistricts: 49}}},\n \"WV\": {\"2010_VD\": {population: 1852994, congress: {nDistricts: 3}, upper: {nDistricts: 17}, lower: {nDistricts: 67}}, \"2020_VD\": {population: 6, congress: {nDistricts: 2}, upper: {nDistricts: 17}, lower: {nDistricts: 100}}},\n \"WI\": {\"2010_VD\": {population: 5686986, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}, \"2020_VD\": {population: 6, congress: {nDistricts: 8}, upper: {nDistricts: 33}, lower: {nDistricts: 99}}},\n \"WY\": {\"2010_VD\": {population: 563626, congress: {nDistricts: 1}, upper: {nDistricts: 30}, lower: {nDistricts: 60}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 31}, lower: {nDistricts: 62}}},\n \"DC\": {\"2010_VD\": {population: 601723, congress: {nDistricts: 1}, upper: {nDistricts: 8}}, \"2020_VD\": {population: 6, congress: {nDistricts: 1}, upper: {nDistricts: 8}}},\n \"PR\": {\"2010_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}, \"2020_VD\": {population: 0, congress: {nDistricts: 1}, upper: {nDistricts: 1}}},\n};\n\nexport function hasPlanType(stateCode: string, planType: DT.PlanType, is2020?: boolean): boolean\n{\n // handle unicameral states (hence no lower house districts)\n if ((stateCode === 'NE' || stateCode === 'DC') && planType === 'lower')\n return false;\n\n // handle states with only 1 congressional district (hence no plan)\n if (planType === 'congress' &&\n (stateCode === 'AK' || stateCode === 'DE' || stateCode === 'ND' || stateCode === 'SD' || stateCode === 'VT' || stateCode === 'WY' || stateCode === 'DC' ||\n (stateCode === 'MT' && !is2020)))\n {\n return false;\n }\n\n if (planType === 'county' || planType === 'city')\n return false;\n\n return true;\n}\n\nexport function hasOneLegislativePlanBothHouses(stateCode: string): boolean\n{\n return stateCode === 'AZ' || stateCode === 'ID' || stateCode === 'NJ' || stateCode === 'WA';\n}\n\nexport function getPlanDistrictCount(stateCode: string, planType: DT.PlanType, datasource: string): number\n{\n if (planType === 'coi')\n return 1;\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD') || (planType !== 'congress' && planType !== 'upper' && planType !== 'lower'))\n return 0;\n \n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo && stateYearInfo[planType] ? stateYearInfo[planType]['nDistricts'] : 0;\n}\n\n// TODO: This is not currently used (3/2/21). 2020_VD population numbers are not set; update them when apportionment happens \nexport function getStateYearTotalPop(stateCode: string, datasource: string): number\n{\n if (datasource === '2016_BG')\n datasource = '2010_VD';\n if ((datasource !== '2010_VD' && datasource !== '2020_VD'))\n return 0;\n\n const stateYearInfo: StateYearInfo = StatePlanInfoMap[stateCode][datasource as ('2010_VD' | '2020_VD')];\n return stateYearInfo ? stateYearInfo['population'] : 0;\n}\n\nexport function inferPlanType(stateCode: string, datasource: string, nDistricts: number, flex?: boolean): DT.PlanType\n{\n // Intended for datasource === '2020_VD'\n const congressCount: number = getPlanDistrictCount(stateCode, 'congress', datasource);\n const upperCount: number = getPlanDistrictCount(stateCode, 'upper', datasource);\n const lowerCount: number = getPlanDistrictCount(stateCode, 'lower', datasource);\n return (\n ((flex && nDistricts <= congressCount + 2 && nDistricts >= congressCount - 3) || nDistricts == congressCount) ? 'congress' :\n (nDistricts == upperCount) ? 'upper' :\n (nDistricts == lowerCount) ? 'lower' :\n 'other');\n}\n","// In constrast to logging, the stats manager is responsible for tracking live server status.\n// The results are stored in a compact database record which can be easily queried for current\n// status. Each server instance maintains its own field in the overall \"values\" record in the\n// stats database. The reporting tool aggregates all instances to report overall server activity.\n//\n// There are basically three kinds of values:\n// Sum - we want to sum the value across all server instances (e.g. number of connnected clients)\n// Avg - we just take average across all server instances (e.g. memory heap size)\n// Rate - we want to track the rate of some activity over some time period\n//\n\nexport type ValType = number;\nexport const ValTypeSum = 0;\nexport const ValTypeAvg = 1;\nexport const ValTypeRate = 2;\n\nconst ExpiryAge = 1000 * 60 * 60 * 24; // throw away instance record after this time period\n\nexport function statExpiryTime(): string\n{\n let time = new Date();\n time.setTime(time.getTime() + ExpiryAge);\n return time.toJSON();\n}\n\nexport interface StatRecord\n{\n id: string;\n production: boolean;\n expires: string;\n time: string;\n index: StatEntryIndex;\n}\n\nexport type StatEntry = StatValue | StatRate;\n\nexport type StatEntryIndex = { [name: string]: StatEntry };\n\nexport interface StatValue\n{\n valType?: ValType;\n cur?: number;\n min?: number;\n max?: number;\n tot?: number;\n cnt?: number;\n}\n\nexport interface StatRate\n{\n valType?: ValType;\n thisMin?: number;\n lastMin?: number;\n thisHour?: number;\n lastHour?: number;\n thisDay?: number;\n lastDay?: number;\n}\n\n// Aggregate running value. This applies both in memory (logging multiple times before\n// saving to database) as well as aggregating into an instance structure in the DB.\n\nexport function statValueRecord(sv: StatValue, cur: number, valType: ValType): StatValue\n{\n if (sv === undefined) sv = {};\n if (sv.min === undefined || cur < sv.min)\n sv.min = cur;\n if (sv.max === undefined || cur > sv.max)\n sv.max = cur;\n sv.cur = cur;\n sv.valType = valType;\n return sv;\n}\n\nexport function statRateIncr(sr: StatRate, incr: number = 1): StatRate\n{\n if (sr == null) sr = {};\n sr.valType = ValTypeRate;\n sr.thisMin = sr.thisMin === undefined ? incr : sr.thisMin+incr;\n sr.thisHour = sr.thisHour === undefined ? incr : sr.thisHour+incr;\n sr.thisDay = sr.thisDay === undefined ? incr : sr.thisDay+incr;\n return sr;\n}\n\nexport const OneMinute = 1000 * 60;\nexport const OneHour = OneMinute * 60;\nexport const OneDay = OneHour * 24;\n\nexport function statRateRollover(sr: StatRate, period: number): void\n{\n if ((period % OneMinute) == 0)\n {\n sr.lastMin = sr.thisMin;\n sr.thisMin = 0;\n }\n if ((period % OneHour) == 0)\n {\n sr.lastHour = sr.thisHour;\n sr.thisHour = 0;\n }\n if ((period % OneDay) == 0)\n {\n sr.lastDay = sr.thisDay;\n sr.thisDay = 0;\n }\n}\n\nexport function statEntryIndexMerge(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n\n // We just discard and replace old rate information\n Object.keys(accum).forEach((p: string) => { if (accum[p].valType == ValTypeRate) delete accum[p] });\n\n // But merge in all the other values\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = se;\n else\n {\n let sv = se as StatValue;\n accum[p] = statValueRecord(se as StatValue, sv.cur, sv.valType);\n }\n });\n return accum;\n}\n\nexport function statEntryIndexRollover(si: StatEntryIndex, period: number): void\n{\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n statRateRollover(se as StatRate, period);\n });\n}\n\nexport function statRecordMerge(accum: StatRecord, si: StatRecord): StatRecord\n{\n if (accum == null)\n accum = { id: si.id, production: si.production, time: si.time, expires: si.expires, index: {} };\n accum.expires = si.expires;\n accum.time = si.time;\n statEntryIndexMerge(accum.index, si.index);\n return accum;\n}\n\n// Accumulate a set of values together (e.g. from multiple running instances)\n// for reporting current state.\n//\n\nexport function statValueAccum(accum: StatValue, sv: StatValue): StatEntry\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sv.valType;\n }\n if (accum.min === undefined || sv.min < accum.min)\n accum.min = sv.min;\n if (accum.max === undefined || sv.max > accum.max)\n accum.max = sv.max;\n if (accum.valType === undefined)\n accum.valType = sv.valType;\n if (accum.valType == ValTypeSum)\n accum.cur = (accum.cur === undefined ? sv.cur : accum.cur+sv.cur);\n else if (accum.valType == ValTypeAvg)\n {\n accum.tot = (accum.tot === undefined ? 0 : accum.tot) + sv.cur;\n accum.cnt = (accum.cnt === undefined ? 0 : accum.cnt) + 1;\n accum.cur = accum.tot / accum.cnt;\n }\n return accum;\n}\n\nexport function statRateAccum(accum: StatRate, sr: StatRate): StatRate\n{\n if (accum == null)\n {\n accum = {};\n accum.valType = sr.valType;\n }\n accum.thisMin = accum.thisMin === undefined ? sr.thisMin : (accum.thisMin + (sr.thisMin === undefined ? 0 : sr.thisMin));\n accum.lastMin = accum.lastMin === undefined ? sr.lastMin : (accum.lastMin + (sr.lastMin === undefined ? 0 : sr.lastMin));\n accum.thisHour = accum.thisHour === undefined ? sr.thisHour : (accum.thisHour + (sr.thisHour === undefined ? 0 : sr.thisHour));\n accum.lastHour = accum.lastHour === undefined ? sr.lastHour : (accum.lastHour + (sr.lastHour === undefined ? 0 : sr.lastHour));\n accum.thisDay = accum.thisDay === undefined ? sr.thisDay : (accum.thisDay + (sr.thisDay === undefined ? 0 : sr.thisDay));\n accum.lastDay = accum.lastDay === undefined ? sr.lastDay : (accum.lastDay + (sr.lastDay === undefined ? 0 : sr.lastDay));\n return accum;\n}\n\nexport function statIndexAccum(accum: StatEntryIndex, si: StatEntryIndex): StatEntryIndex\n{\n if (accum == null) accum = {};\n Object.keys(si).forEach((p: string) => {\n let se = si[p];\n if (se.valType == ValTypeRate)\n accum[p] = statRateAccum(accum[p] as StatRate, se as StatRate);\n else\n accum[p] = statValueAccum(accum[p] as StatValue, se as StatValue);\n });\n return accum;\n}\n","// Public libraries\nimport * as Hash from 'object-hash';\n\nexport interface SplitBlock\n{\n id?: string;\n chunkKey?: string;\n chunkList?: string[];\n chunk?: string;\n state: string;\n datasource: string;\n geoid: string;\n blocks?: string[];\n bitset?: string;\n}\n\nexport interface SplitChunk\n{\n id?: string;\n recompute?: boolean;\n splits?: string[];\n}\n\nexport type DistrictToSplitBlock = { [districtID: string]: SplitBlock[] };\n\n// Canonical hashing of custom precinct\nexport function chash(o: any): string\n{\n return Hash(o, { respectType: false, unorderedArrays: true, unorderedObjects: true,\n excludeKeys: (k: string) => (k === 'id') });\n}\n\n// Is custom feature - 5 digit county id + 'cust' + hash\nlet reC = /^\\d\\d\\d\\d\\dcust.*$/;\n\nexport function isCfeature(id: string): boolean\n{\n return id && reC.test(id);\n}\n\n// Canonical hashing of splitblock data\nexport function vhash(o: any): string\n{\n return Hash(o,\n { respectType: false,\n unorderedArrays: true,\n unorderedObjects: true,\n // basically, include (state,datasource,geoid,blocks[])\n excludeKeys: (k: string) => (k === 'id' || k === 'chunk' || k === 'chunkList' || k === 'chunkKey')\n });\n}\n\n// old style \"vfeature_[geoid]_[numericchunk]_[id]\"\n// new style \"B_[geoid]_bitset\"\n\nexport function vgeoidToGeoid(vgeoid: string): string\n{\n let reNew = /^B_([^_]*)_.*/;\n let reOld = /^vfeature_([^_]*)_.*/;\n let a = reNew.exec(vgeoid);\n if (a == null || a.length != 2)\n {\n a = reOld.exec(vgeoid);\n if (a == null || a.length != 2)\n return '';\n }\n return a[1];\n}\n\nexport function splitToVgeoid(s: SplitBlock): string\n{\n // Newstyle\n if (s.bitset)\n return `B_${s.geoid}_${s.bitset}`;\n\n // oldstyle\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = '0';\n return `vfeature_${s.geoid}_${s.chunk}_${s.id}`;\n}\n\nexport function splitCommitted(s: SplitBlock): boolean\n{\n return !!s.id || !!s.bitset;\n}\n\nexport function vgeoidToChunk(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n // the contents are chunked into a file of form \"vfeature_chunk_[chunkid]\"\n // So extract the chunk ID and download that.\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = `vfeature_chunk_${a[2]}`;\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function vgeoidToSplit(state: string, datasource: string, vgeoid: string): SplitBlock\n{\n let reNew = /^B_([^_]*)_(.*)$/;\n let reOld = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = reNew.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], bitset: a[2] };\n a = reOld.exec(vgeoid);\n if (a)\n return { state: state, datasource: datasource, geoid: a[1], id: a[3], chunk: a[2], blocks: null };\n return null;\n}\n\nexport function vgeoidToHash(vgeoid: string): string\n{\n // vgeoid is string of form: \"vfeature_[geoid]_[chunkid]_[hash]\"\n let re = /^vfeature_([^_]*)_([^_*])_(.*)$/;\n let a = re.exec(vgeoid);\n if (a && a.length == 4)\n vgeoid = a[3];\n else\n vgeoid = null;\n\n return vgeoid;\n}\n\nexport function isVfeature(geoid: string): boolean\n{\n return geoid.indexOf('B') === 0 || geoid.indexOf('vfeature') === 0;\n}\n\nexport function splitToCacheKey(s: SplitBlock): string\n{\n if (s.bitset)\n return null;\n if (s.id === undefined)\n s.id = vhash(s);\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_${s.geoid}_${s.chunk}_${s.id}.geojson`;\n}\n\nexport function cacheKeyToSplit(s: string): SplitBlock\n{\n let re = /^_(..)_(.*)_vfeature_([^_]+)_([^_]+)_([^_]+).geojson$/\n let a = re.exec(s);\n if (a == null) return null;\n // 0: whole string, 1: statecode, 2: datasource, 3: geoid, 4: chunk, 5: id hash\n return { id: a[5], state: a[1], datasource: a[2], geoid: a[3], chunk: a[4], blocks: null };\n}\n\nexport function splitToChunkKey(s: SplitBlock): string\n{\n if (s.chunk === undefined)\n s.chunk = \"0\";\n\n return `_${s.state}_${s.datasource}_vfeature_chunk_${s.chunk}.geojson`;\n}\n\nexport function splitToPrefix(s: SplitBlock): string\n{\n if (s.blocks === undefined)\n {\n let re = /_([^_]*)_(.*)_vfeature.*\\.geojson$/;\n let a = re.exec(s.id);\n if (a && a.length == 3)\n return `_${a[1]}_${a[2]}`;\n return s.id;\n }\n return `_${s.state}_${s.datasource}`;\n}\n\nexport function cacheKeysToChunkHash(keys: string[]): string\n{\n return vhash(keys);\n}\n","export type WorkQueueFailure = 'hard' | 'soft';\n\nexport interface WorkQueueItem\n{\n id: string,\n functionName: string,\n params: any,\n priority: number,\n failType?: WorkQueueFailure,\n}\n","module.exports = require(\"@dra2020/baseclient\");","module.exports = require(\"object-hash\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./lib/all.ts\");\n",""],"names":[],"sourceRoot":""}
package/lib/csv.ts CHANGED
@@ -1,9 +1,8 @@
1
1
  // Public libraries
2
- import { Util, CSV } from '@dra2020/baseclient';
2
+ import { Util, CSV, G } from '@dra2020/baseclient';
3
3
 
4
4
  // Local library
5
5
  import * as VF from './vfeature';
6
- import { reverseBlockMapping, reverseBlockgroupMapping, reverseTractMapping } from './reverse';
7
6
 
8
7
  // Used internally to index into District Properties Array
9
8
  export type BlockMap = { [id: string]: number };
@@ -33,6 +32,23 @@ export function canonicalDistrictID(districtID: string): string
33
32
  return districtID;
34
33
  }
35
34
 
35
+ function reverseSubMapping(mbm: G.MultiBlockMapping, n: number): G.ReverseBlockMapping
36
+ {
37
+ let rev: any = {};
38
+
39
+ mbm.forEach(blockid => {
40
+ let geoid = blockid.substr(0, n);
41
+ if (! rev[geoid]) rev[geoid] = [];
42
+ rev[geoid].push(blockid);
43
+ });
44
+ return rev;
45
+ }
46
+
47
+ function reverseBlockgroupMapping(mbm: G.MultiBlockMapping): G.ReverseBlockMapping
48
+ {
49
+ return reverseSubMapping(mbm, 12);
50
+ }
51
+
36
52
  // Normalize any numeric part to have four digits with padded leading zeros
37
53
  // so alphabetic sorting will result in correct numeric sort for mixed alphanumber
38
54
  // district labels.
@@ -203,7 +219,7 @@ export function csvLine(coder: Util.Coder, line: string): OneCSVLine
203
219
  export interface ConvertResult
204
220
  {
205
221
  inBlockMap: BlockMapping;
206
- inStateMap: BlockMapping;
222
+ inMbm: G.MultiBlockMapping;
207
223
  outValid: boolean;
208
224
  outState: string;
209
225
  outMap: BlockMapping;
@@ -233,11 +249,11 @@ export function blockmapToState(blockMap: BlockMapping): string
233
249
  // not all specify the same state, the mapping is considered invalid and the outValid flag is set to false.
234
250
  //
235
251
 
236
- export function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping, stateMap: BlockMapping, altBlocks: AltBlockMapping): ConvertResult
252
+ export function blockmapToVTDmap(blockMap: BlockMapping, mbm: G.MultiBlockMapping, altBlocks: AltBlockMapping): ConvertResult
237
253
  {
238
254
  let res: ConvertResult = {
239
255
  inBlockMap: blockMap,
240
- inStateMap: stateMap,
256
+ inMbm: mbm,
241
257
  outValid: true,
242
258
  outState: null,
243
259
  outMap: {},
@@ -252,9 +268,7 @@ export function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping
252
268
 
253
269
  let bmGather: { [geoid: string]: { [district: string]: { [blockid: string]: boolean } } } = {};
254
270
 
255
- revMap = revMap || reverseBlockMapping(stateMap);
256
271
  let revBG: RevBlockMapping; // lazy create on demand
257
- let revTract: RevBlockMapping; // lazy create on demand
258
272
 
259
273
  if (altBlocks)
260
274
  {
@@ -273,7 +287,7 @@ export function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping
273
287
  for (var id in blockMap) if (blockMap.hasOwnProperty(id))
274
288
  {
275
289
  let n: number = id.length;
276
- if (n >= 15 && !(stateMap && stateMap[id] !== undefined) && revAltBlocks[id])
290
+ if (n >= 15 && !(mbm && mbm.map(id) !== undefined) && revAltBlocks[id])
277
291
  {
278
292
  if (!bestAlt[revAltBlocks[id].blockid] || bestAlt[revAltBlocks[id].blockid].pop < revAltBlocks[id].pop)
279
293
  {
@@ -316,15 +330,16 @@ export function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping
316
330
  res.nBlocks++;
317
331
 
318
332
  // Simple test for block id (vs. voting district or block group) id
319
- if (n >= 15)
333
+ // Also skip longer custom precinct ids
334
+ if (n >= 15 && (!mbm || !mbm.rev(id)))
320
335
  {
321
336
  ids = [id];
322
- if (stateMap && stateMap[id] !== undefined)
323
- geoids = [stateMap[id]];
337
+ if (mbm && mbm.map(id) !== undefined)
338
+ geoids = [mbm.map(id)];
324
339
  else
325
340
  {
326
341
  geoids = [id.substr(0, 12)];
327
- if (stateMap && !revMap[geoids[0]])
342
+ if (mbm && !mbm.rev(geoids[0]))
328
343
  {
329
344
  res.outValid = false;
330
345
  break;
@@ -333,11 +348,11 @@ export function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping
333
348
  }
334
349
  else if (n == 12)
335
350
  {
336
- if (!revBG) revBG = reverseBlockgroupMapping(stateMap);
351
+ if (!revBG) revBG = reverseBlockgroupMapping(mbm);
337
352
  if (revBG[id])
338
353
  {
339
354
  ids = revBG[id];
340
- geoids = ids.map(id => stateMap[id]);
355
+ geoids = ids.map(id => mbm.map(id));
341
356
  }
342
357
  else
343
358
  {
@@ -377,7 +392,7 @@ export function blockmapToVTDmap(revMap: RevBlockMapping, blockMap: BlockMapping
377
392
  if (Util.countKeys(districtToBlocks) == 1)
378
393
  {
379
394
  let blocks = Object.keys(districtToBlocks[Util.nthKey(districtToBlocks)]);
380
- if (blocks[0] === geoid || (revMap[geoid] && blocks.length === revMap[geoid].length))
395
+ if (blocks[0] === geoid || (mbm.rev(geoid) && blocks.length === mbm.rev(geoid).length))
381
396
  bWhole = true;
382
397
  }
383
398
  if (bWhole)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dra2020/dra-types",
3
- "version": "1.8.72",
3
+ "version": "1.8.75",
4
4
  "description": "Shared types used between client, server and tools.",
5
5
  "main": "dist/dra-types.js",
6
6
  "types": "./dist/all.d.ts",
@@ -34,7 +34,7 @@
34
34
  "webpack-cli": "^4.9.1"
35
35
  },
36
36
  "dependencies": {
37
- "@dra2020/baseclient": "^1.0.86",
37
+ "@dra2020/baseclient": "^1.0.88",
38
38
  "geojson": "^0.5.0",
39
39
  "object-hash": "^2.2.0"
40
40
  }