@libs-ui/components-color-picker 0.2.29 → 0.2.30-6.2

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.
@@ -1,5 +1,155 @@
1
- import { get, isNil, set } from "@libs-ui/utils";
2
- export const ColorNames = { 'aliceblue': '#F0F8FF', 'antiquewhite': '#FAEBD7', 'aqua': '#00FFFF', 'aquamarine': '#7FFFD4', 'azure': '#F0FFFF', 'beige': '#F5F5DC', 'bisque': '#FFE4C4', 'black': '#000000', 'blanchedalmond': '#FFEBCD', 'blue': '#0000FF', 'blueviolet': '#8A2BE2', 'brown': '#A52A2A', 'burlywood': '#DEB887', 'cadetblue': '#5F9EA0', 'chartreuse': '#7FFF00', 'chocolate': '#D2691E', 'coral': '#FF7F50', 'cornflowerblue': '#6495ED', 'cornsilk': '#FFF8DC', 'crimson': '#DC143C', 'cyan': '#00FFFF', 'darkblue': '#00008B', 'darkcyan': '#008B8B', 'darkgoldenrod': '#B8860B', 'darkgray': '#A9A9A9', 'darkgrey': '#A9A9A9', 'darkgreen': '#006400', 'darkkhaki': '#BDB76B', 'darkmagenta': '#8B008B', 'darkolivegreen': '#556B2F', 'darkorange': '#FF8C00', 'darkorchid': '#9932CC', 'darkred': '#8B0000', 'darksalmon': '#E9967A', 'darkseagreen': '#8FBC8F', 'darkslateblue': '#483D8B', 'darkslategray': '#2F4F4F', 'darkslategrey': '#2F4F4F', 'darkturquoise': '#00CED1', 'darkviolet': '#9400D3', 'deeppink': '#FF1493', 'deepskyblue': '#00BFFF', 'dimgray': '#696969', 'dimgrey': '#696969', 'dodgerblue': '#1E90FF', 'firebrick': '#B22222', 'floralwhite': '#FFFAF0', 'forestgreen': '#228B22', 'fuchsia': '#FF00FF', 'gainsboro': '#DCDCDC', 'ghostwhite': '#F8F8FF', 'gold': '#FFD700', 'goldenrod': '#DAA520', 'gray': '#808080', 'grey': '#808080', 'green': '#008000', 'greenyellow': '#ADFF2F', 'honeydew': '#F0FFF0', 'hotpink': '#FF69B4', 'indianred ': '#CD5C5C', 'indigo ': '#4B0082', 'ivory': '#FFFFF0', 'khaki': '#F0E68C', 'lavender': '#E6E6FA', 'lavenderblush': '#FFF0F5', 'lawngreen': '#7CFC00', 'lemonchiffon': '#FFFACD', 'lightblue': '#ADD8E6', 'lightcoral': '#F08080', 'lightcyan': '#E0FFFF', 'lightgoldenrodyellow': '#FAFAD2', 'lightgray': '#D3D3D3', 'lightgrey': '#D3D3D3', 'lightgreen': '#90EE90', 'lightpink': '#FFB6C1', 'lightsalmon': '#FFA07A', 'lightseagreen': '#20B2AA', 'lightskyblue': '#87CEFA', 'lightslategray': '#778899', 'lightslategrey': '#778899', 'lightsteelblue': '#B0C4DE', 'lightyellow': '#FFFFE0', 'lime': '#00FF00', 'limegreen': '#32CD32', 'linen': '#FAF0E6', 'magenta': '#FF00FF', 'maroon': '#800000', 'mediumaquamarine': '#66CDAA', 'mediumblue': '#0000CD', 'mediumorchid': '#BA55D3', 'mediumpurple': '#9370DB', 'mediumseagreen': '#3CB371', 'mediumslateblue': '#7B68EE', 'mediumspringgreen': '#00FA9A', 'mediumturquoise': '#48D1CC', 'mediumvioletred': '#C71585', 'midnightblue': '#191970', 'mintcream': '#F5FFFA', 'mistyrose': '#FFE4E1', 'moccasin': '#FFE4B5', 'navajowhite': '#FFDEAD', 'navy': '#000080', 'oldlace': '#FDF5E6', 'olive': '#808000', 'olivedrab': '#6B8E23', 'orange': '#FFA500', 'orangered': '#FF4500', 'orchid': '#DA70D6', 'palegoldenrod': '#EEE8AA', 'palegreen': '#98FB98', 'paleturquoise': '#AFEEEE', 'palevioletred': '#DB7093', 'papayawhip': '#FFEFD5', 'peachpuff': '#FFDAB9', 'peru': '#CD853F', 'pink': '#FFC0CB', 'plum': '#DDA0DD', 'powderblue': '#B0E0E6', 'purple': '#800080', 'rebeccapurple': '#663399', 'red': '#FF0000', 'rosybrown': '#BC8F8F', 'royalblue': '#4169E1', 'saddlebrown': '#8B4513', 'salmon': '#FA8072', 'sandybrown': '#F4A460', 'seagreen': '#2E8B57', 'seashell': '#FFF5EE', 'sienna': '#A0522D', 'silver': '#C0C0C0', 'skyblue': '#87CEEB', 'slateblue': '#6A5ACD', 'slategray': '#708090', 'slategrey': '#708090', 'snow': '#FFFAFA', 'springgreen': '#00FF7F', 'steelblue': '#4682B4', 'tan': '#D2B48C', 'teal': '#008080', 'thistle': '#D8BFD8', 'tomato': '#FF6347', 'turquoise': '#40E0D0', 'violet': '#EE82EE', 'wheat': '#F5DEB3', 'white': '#FFFFFF', 'whitesmoke': '#F5F5F5', 'yellow': '#FFFF00', 'yellowgreen': '#9ACD32' };
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { get, isNil, set } from '@libs-ui/utils';
3
+ export const ColorNames = {
4
+ aliceblue: '#F0F8FF',
5
+ antiquewhite: '#FAEBD7',
6
+ aqua: '#00FFFF',
7
+ aquamarine: '#7FFFD4',
8
+ azure: '#F0FFFF',
9
+ beige: '#F5F5DC',
10
+ bisque: '#FFE4C4',
11
+ black: '#000000',
12
+ blanchedalmond: '#FFEBCD',
13
+ blue: '#0000FF',
14
+ blueviolet: '#8A2BE2',
15
+ brown: '#A52A2A',
16
+ burlywood: '#DEB887',
17
+ cadetblue: '#5F9EA0',
18
+ chartreuse: '#7FFF00',
19
+ chocolate: '#D2691E',
20
+ coral: '#FF7F50',
21
+ cornflowerblue: '#6495ED',
22
+ cornsilk: '#FFF8DC',
23
+ crimson: '#DC143C',
24
+ cyan: '#00FFFF',
25
+ darkblue: '#00008B',
26
+ darkcyan: '#008B8B',
27
+ darkgoldenrod: '#B8860B',
28
+ darkgray: '#A9A9A9',
29
+ darkgrey: '#A9A9A9',
30
+ darkgreen: '#006400',
31
+ darkkhaki: '#BDB76B',
32
+ darkmagenta: '#8B008B',
33
+ darkolivegreen: '#556B2F',
34
+ darkorange: '#FF8C00',
35
+ darkorchid: '#9932CC',
36
+ darkred: '#8B0000',
37
+ darksalmon: '#E9967A',
38
+ darkseagreen: '#8FBC8F',
39
+ darkslateblue: '#483D8B',
40
+ darkslategray: '#2F4F4F',
41
+ darkslategrey: '#2F4F4F',
42
+ darkturquoise: '#00CED1',
43
+ darkviolet: '#9400D3',
44
+ deeppink: '#FF1493',
45
+ deepskyblue: '#00BFFF',
46
+ dimgray: '#696969',
47
+ dimgrey: '#696969',
48
+ dodgerblue: '#1E90FF',
49
+ firebrick: '#B22222',
50
+ floralwhite: '#FFFAF0',
51
+ forestgreen: '#228B22',
52
+ fuchsia: '#FF00FF',
53
+ gainsboro: '#DCDCDC',
54
+ ghostwhite: '#F8F8FF',
55
+ gold: '#FFD700',
56
+ goldenrod: '#DAA520',
57
+ gray: '#808080',
58
+ grey: '#808080',
59
+ green: '#008000',
60
+ greenyellow: '#ADFF2F',
61
+ honeydew: '#F0FFF0',
62
+ hotpink: '#FF69B4',
63
+ indianred: '#CD5C5C',
64
+ indigo: '#4B0082',
65
+ ivory: '#FFFFF0',
66
+ khaki: '#F0E68C',
67
+ lavender: '#E6E6FA',
68
+ lavenderblush: '#FFF0F5',
69
+ lawngreen: '#7CFC00',
70
+ lemonchiffon: '#FFFACD',
71
+ lightblue: '#ADD8E6',
72
+ lightcoral: '#F08080',
73
+ lightcyan: '#E0FFFF',
74
+ lightgoldenrodyellow: '#FAFAD2',
75
+ lightgray: '#D3D3D3',
76
+ lightgrey: '#D3D3D3',
77
+ lightgreen: '#90EE90',
78
+ lightpink: '#FFB6C1',
79
+ lightsalmon: '#FFA07A',
80
+ lightseagreen: '#20B2AA',
81
+ lightskyblue: '#87CEFA',
82
+ lightslategray: '#778899',
83
+ lightslategrey: '#778899',
84
+ lightsteelblue: '#B0C4DE',
85
+ lightyellow: '#FFFFE0',
86
+ lime: '#00FF00',
87
+ limegreen: '#32CD32',
88
+ linen: '#FAF0E6',
89
+ magenta: '#FF00FF',
90
+ maroon: '#800000',
91
+ mediumaquamarine: '#66CDAA',
92
+ mediumblue: '#0000CD',
93
+ mediumorchid: '#BA55D3',
94
+ mediumpurple: '#9370DB',
95
+ mediumseagreen: '#3CB371',
96
+ mediumslateblue: '#7B68EE',
97
+ mediumspringgreen: '#00FA9A',
98
+ mediumturquoise: '#48D1CC',
99
+ mediumvioletred: '#C71585',
100
+ midnightblue: '#191970',
101
+ mintcream: '#F5FFFA',
102
+ mistyrose: '#FFE4E1',
103
+ moccasin: '#FFE4B5',
104
+ navajowhite: '#FFDEAD',
105
+ navy: '#000080',
106
+ oldlace: '#FDF5E6',
107
+ olive: '#808000',
108
+ olivedrab: '#6B8E23',
109
+ orange: '#FFA500',
110
+ orangered: '#FF4500',
111
+ orchid: '#DA70D6',
112
+ palegoldenrod: '#EEE8AA',
113
+ palegreen: '#98FB98',
114
+ paleturquoise: '#AFEEEE',
115
+ palevioletred: '#DB7093',
116
+ papayawhip: '#FFEFD5',
117
+ peachpuff: '#FFDAB9',
118
+ peru: '#CD853F',
119
+ pink: '#FFC0CB',
120
+ plum: '#DDA0DD',
121
+ powderblue: '#B0E0E6',
122
+ purple: '#800080',
123
+ rebeccapurple: '#663399',
124
+ red: '#FF0000',
125
+ rosybrown: '#BC8F8F',
126
+ royalblue: '#4169E1',
127
+ saddlebrown: '#8B4513',
128
+ salmon: '#FA8072',
129
+ sandybrown: '#F4A460',
130
+ seagreen: '#2E8B57',
131
+ seashell: '#FFF5EE',
132
+ sienna: '#A0522D',
133
+ silver: '#C0C0C0',
134
+ skyblue: '#87CEEB',
135
+ slateblue: '#6A5ACD',
136
+ slategray: '#708090',
137
+ slategrey: '#708090',
138
+ snow: '#FFFAFA',
139
+ springgreen: '#00FF7F',
140
+ steelblue: '#4682B4',
141
+ tan: '#D2B48C',
142
+ teal: '#008080',
143
+ thistle: '#D8BFD8',
144
+ tomato: '#FF6347',
145
+ turquoise: '#40E0D0',
146
+ violet: '#EE82EE',
147
+ wheat: '#F5DEB3',
148
+ white: '#FFFFFF',
149
+ whitesmoke: '#F5F5F5',
150
+ yellow: '#FFFF00',
151
+ yellowgreen: '#9ACD32',
152
+ };
3
153
  export const optionsDefault = () => {
4
154
  return {
5
155
  showHsl: false,
@@ -8,14 +158,14 @@ export const optionsDefault = () => {
8
158
  showAlpha: false,
9
159
  color: '#ff0000',
10
160
  format: 'color',
11
- slBarSize: [316, 200],
12
- hueBarSize: [316, 20],
13
- alphaBarSize: [316, 20]
161
+ slBarSize: [420, 200],
162
+ hueBarSize: [420, 20],
163
+ alphaBarSize: [420, 20],
14
164
  };
15
165
  };
16
166
  export const limit = (value, min, max) => {
17
167
  value = +value;
18
- return isNaN(value) ? min : (value < min ? min : (value > max ? max : value));
168
+ return isNaN(value) ? min : value < min ? min : value > max ? max : value;
19
169
  };
20
170
  export const hslToRgb = (h, s, l) => {
21
171
  let r, g, b;
@@ -38,10 +188,10 @@ export const hslToRgb = (h, s, l) => {
38
188
  return p;
39
189
  };
40
190
  const q = l < 0.5 ? l * (1 + s) : l + s - l * s;
41
- const p = (2 * l) - q;
42
- r = hueToRgb(p, q, h + (1 / 3));
191
+ const p = 2 * l - q;
192
+ r = hueToRgb(p, q, h + 1 / 3);
43
193
  g = hueToRgb(p, q, h);
44
- b = hueToRgb(p, q, h - (1 / 3));
194
+ b = hueToRgb(p, q, h - 1 / 3);
45
195
  return [r * 255, g * 255, b * 255].map(Math.round);
46
196
  };
47
197
  export const cssColorToRgba = (color) => {
@@ -49,32 +199,17 @@ export const cssColorToRgba = (color) => {
49
199
  const colorByName = get(ColorNames, color.toLowerCase());
50
200
  const [, , , r, g, b, a, , rr, gg, bb, aa] = /^\s*#?((([0-9A-F])([0-9A-F])([0-9A-F])([0-9A-F])?)|(([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})?))\s*$/i.exec(colorByName || color) || [];
51
201
  if (!isNil(r)) {
52
- return [
53
- parseInt(r + r, 16),
54
- parseInt(g + g, 16),
55
- parseInt(b + b, 16),
56
- a ? +((parseInt(a + a, 16)) / 255).toFixed(2) : 1
57
- ];
202
+ return [parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), a ? +(parseInt(a + a, 16) / 255).toFixed(2) : 1];
58
203
  }
59
204
  if (!isNil(rr)) {
60
- return [
61
- parseInt(rr, 16),
62
- parseInt(gg, 16),
63
- parseInt(bb, 16),
64
- aa ? +((parseInt(aa, 16)) / 255).toFixed(2) : 1
65
- ];
205
+ return [parseInt(rr, 16), parseInt(gg, 16), parseInt(bb, 16), aa ? +(parseInt(aa, 16) / 255).toFixed(2) : 1];
66
206
  }
67
207
  }
68
208
  return undefined;
69
209
  };
70
210
  export const parseColorToRgba = (color) => {
71
211
  if (Array.isArray(color)) {
72
- return [
73
- limit(color[0], 0, 255),
74
- limit(color[1], 0, 255),
75
- limit(color[2], 0, 255),
76
- limit(color[3] ?? 1, 0, 1)
77
- ];
212
+ return [limit(color[0], 0, 255), limit(color[1], 0, 255), limit(color[2], 0, 255), limit(color[3] ?? 1, 0, 1)];
78
213
  }
79
214
  const parsed = cssColorToRgba(color) || cssRgbaToRgba(color);
80
215
  if (parsed && parsed.length === 3) {
@@ -98,12 +233,7 @@ export const cssHslaToHsla = (hsla) => {
98
233
  };
99
234
  export const parseColorToHsla = (color) => {
100
235
  if (Array.isArray(color)) {
101
- return [
102
- limit(color[0], 0, 360),
103
- limit(color[1], 0, 100),
104
- limit(color[2], 0, 100),
105
- limit(color[3] ?? 1, 0, 1)
106
- ];
236
+ return [limit(color[0], 0, 360), limit(color[1], 0, 100), limit(color[2], 0, 100), limit(color[3] ?? 1, 0, 1)];
107
237
  }
108
238
  const parsed = cssHslaToHsla(color);
109
239
  if (parsed && parsed.length === 3) {
@@ -125,13 +255,13 @@ export const rgbToHsl = (r, g, b) => {
125
255
  s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
126
256
  switch (max) {
127
257
  case r:
128
- h = ((g - b) / d) + (g < b ? 6 : 0);
258
+ h = (g - b) / d + (g < b ? 6 : 0);
129
259
  break;
130
260
  case g:
131
- h = ((b - r) / d) + 2;
261
+ h = (b - r) / d + 2;
132
262
  break;
133
263
  case b:
134
- h = ((r - g) / d) + 4;
264
+ h = (r - g) / d + 4;
135
265
  break;
136
266
  }
137
267
  h = (h || 0) / 6;
@@ -139,7 +269,7 @@ export const rgbToHsl = (r, g, b) => {
139
269
  };
140
270
  export const rgbToHex = (r, g, b) => {
141
271
  [r, g, b] = [limit(r, 0, 255), limit(g, 0, 255), limit(b, 0, 255)];
142
- return "#" + ("000000" + ((r << 16) | (g << 8) | b).toString(16)).slice(-6);
272
+ return '#' + ('000000' + ((r << 16) | (g << 8) | b).toString(16)).slice(-6);
143
273
  };
144
274
  export const rgbToInt = (r, g, b) => {
145
275
  return (r << 16) | (g << 8) | b;
@@ -224,9 +354,11 @@ export const parseColor = (color, format) => {
224
354
  };
225
355
  export const defaultHelper = () => {
226
356
  return {
227
- setHue: () => { return; },
357
+ setHue: () => {
358
+ return;
359
+ },
228
360
  grabColor: () => [],
229
- findColor: () => []
361
+ findColor: () => [],
230
362
  };
231
363
  };
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9zcmMvdXRpbHMvcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxX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YSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQUFBRCxFQUFHLENBQUMsQ0FBQyxHQUFHLDRFQUE0RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEgsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7SUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNULE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQUFBRCxFQUFHLENBQUMsQ0FBQyxHQUFHLDRFQUE0RSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFeEgsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FB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Q0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRTtJQUMxRCxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzFELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDckYsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2YsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2QsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNwQixDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBRTVCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVOLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFDRCxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxNQUFNO1FBQ2pELEtBQUssQ0FBQztZQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsTUFBTTtRQUNuQyxLQUFLLENBQUM7WUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUFDLE1BQU07SUFDckMsQ0FBQztJQUNELENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBbUIsRUFBRSxNQUFjLEVBQUUsRUFBRTtJQUNqRSxRQUFRLE1BQU0sRUFBRSxDQUFDO1FBQ2YsS0FBSyxLQUFLLENBQUM7UUFDWDtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDbkQsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQy9ELEtBQUssTUFBTTtZQUNULE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxTQUFTO1lBQ1osT0FBTyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ2hFLEtBQUssS0FBSztZQUNSLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsS0FBSyxRQUFRO1lBQ1gsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTNDLE9BQU8sT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ25ELEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztZQUNmLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsS0FBSyxNQUFNO1lBQ1QsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUs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QUFDLEVBQUU7UUFDbkIsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7S0FDcEIsQ0FBQztBQUNKLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldCwgaXNOaWwsIHNldCB9IGZyb20gXCJAbGlicy11aS91dGlsc1wiO1xuaW1wb3J0IHsgSVBpY2tlck9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiO1xuXG5leHBvcnQgY29uc3QgQ29sb3JOYW1lcyA9IHsgJ2FsaWNlYmx1ZSc6ICcjRjBGOEZGJywgJ2FudGlxdWV3aGl0ZSc6ICcjRkFFQkQ3JywgJ2FxdWEnOiAnIzAwRkZGRicsICdhcXVhbWFyaW5lJzogJyM3RkZGRDQnLCAnYXp1cmUnOiAnI0YwRkZGRicsICdiZWlnZSc6ICcjRjVGNURDJywgJ2Jpc3F1ZSc6ICcjRkZFNEM0JywgJ2JsYWNrJzogJyMwMDAwMDAnLCAnYmxhbmNoZWRhbG1vbmQnOiAnI0ZGRUJDRCcsICdibHVlJzogJyMwMDAwRkYnLCAnYmx1ZXZpb2xldCc6ICcjOEEyQkUyJywgJ2Jyb3duJzogJyNBNTJBMkEnLCAnYnVybHl3b29kJzogJyNERUI4ODcnLCAnY2FkZXRibHVlJzogJyM1RjlFQTAnLCAnY2hhcnRyZXVzZSc6ICcjN0ZGRjAwJywgJ2Nob2NvbGF0ZSc6ICcjRDI2OTFFJywgJ2NvcmFsJzogJyNGRjdGNTAnLCAnY29ybmZsb3dlcmJsdWUnOiAnIzY0OTVFRCcsICdjb3Juc2lsayc6ICcjRkZGOERDJywgJ2NyaW1zb24nOiAnI0RDMTQzQycsICdjeWFuJzogJyMwMEZGRkYnLCAnZGFya2JsdWUnOiAnIzAwMDA4QicsICdkYXJrY3lhbic6ICcjMDA4QjhCJywgJ2Rhcmtnb2xkZW5yb2QnOiAnI0I4ODYwQicsICdkYXJrZ3JheSc6ICcjQTlBOUE5JywgJ2RhcmtncmV5JzogJyNBOUE5QTknLCAnZGFya2dyZWVuJzogJyMwMDY0MDAnLCAnZGFya2toYWtpJzogJyNCREI3NkInLCAnZGFya21hZ2VudGEnOiAnIzhCMDA4QicsICdkYXJrb2xpdmVncmVlbic6ICcjNTU2QjJGJywgJ2RhcmtvcmFuZ2UnOiAnI0ZGOEMwMCcsICdkYXJrb3JjaGlkJzogJyM5OTMyQ0MnLCAnZGFya3JlZCc6ICcjOEIwMDAwJywgJ2RhcmtzYWxtb24nOiAnI0U5OTY3QScsICdkYXJrc2VhZ3JlZW4nOiAnIzhGQkM4RicsICdkYXJrc2xhdGVibHVlJzogJyM0ODNEOEInLCAnZGFya3NsYXRlZ3JheSc6ICcjMkY0RjRGJywgJ2RhcmtzbGF0ZWdyZXknOiAnIzJGNEY0RicsICdkYXJrdHVycXVvaXNlJzogJyMwMENFRDEnLCAnZGFya3Zpb2xldCc6ICcjOTQwMEQzJywgJ2RlZXBwaW5rJzogJyNGRjE0OTMnLCAnZGVlcHNreWJsdWUnOiAnIzAwQkZGRicsICdkaW1ncmF5JzogJyM2OTY5NjknLCAnZGltZ3JleSc6ICcjNjk2OTY5JywgJ2RvZGdlcmJsdWUnOiAnIzFFOTBGRicsICdmaXJlYnJpY2snOiAnI0IyMjIyMicsICdmbG9yYWx3aGl0ZSc6ICcjRkZGQUYwJywgJ2ZvcmVzdGdyZWVuJzogJyMyMjhCMjInLCAnZnVjaHNpYSc6ICcjRkYwMEZGJywgJ2dhaW5zYm9ybyc6ICcjRENEQ0RDJywgJ2dob3N0d2hpdGUnOiAnI0Y4RjhGRicsICdnb2xkJzogJyNGRkQ3MDAnLCAnZ29sZGVucm9kJzogJyNEQUE1MjAnLCAnZ3JheSc6ICcjODA4MDgwJywgJ2dyZXknOiAnIzgwODA4MCcsICdncmVlbic6ICcjMDA4MDAwJywgJ2dyZWVueWVsbG93JzogJyNBREZGMkYnLCAnaG9uZXlkZXcnOiAnI0YwRkZGMCcsICdob3RwaW5rJzogJyNGRjY5QjQnLCAnaW5kaWFucmVkICc6ICcjQ0Q1QzVDJywgJ2luZGlnbyAnOiAnIzRCMDA4MicsICdpdm9yeSc6ICcjRkZGRkYwJywgJ2toYWtpJzogJyNGMEU2OEMnLCAnbGF2ZW5kZXInOiAnI0U2RTZGQScsICdsYXZlbmRlcmJsdXNoJzogJyNGRkYwRjUnLCAnbGF3bmdyZWVuJzogJyM3Q0ZDMDAnLCAnbGVtb25jaGlmZm9uJzogJyNGRkZBQ0QnLCAnbGlnaHRibHVlJzogJyNBREQ4RTYnLCAnbGlnaHRjb3JhbCc6ICcjRjA4MDgwJywgJ2xpZ2h0Y3lhbic6ICcjRTBGRkZGJywgJ2xpZ2h0Z29sZGVucm9keWVsbG93JzogJyNGQUZBRDInLCAnbGlnaHRncmF5JzogJyNEM0QzRDMnLCAnbGlnaHRncmV5JzogJyNEM0QzRDMnLCAnbGlnaHRncmVlbic6ICcjOTBFRTkwJywgJ2xpZ2h0cGluayc6ICcjRkZCNkMxJywgJ2xpZ2h0c2FsbW9uJzogJyNGRkEwN0EnLCAnbGlnaHRzZWFncmVlbic6ICcjMjBCMkFBJywgJ2xpZ2h0c2t5Ymx1ZSc6ICcjODdDRUZBJywgJ2xpZ2h0c2xhdGVncmF5JzogJyM3Nzg4OTknLCAnbGlnaHRzbGF0ZWdyZXknOiAnIzc3ODg5OScsICdsaWdodHN0ZWVsYmx1ZSc6ICcjQjBDNERFJywgJ2xpZ2h0eWVsbG93JzogJyNGRkZGRTAnLCAnbGltZSc6ICcjMDBGRjAwJywgJ2xpbWVncmVlbic6ICcjMzJDRDMyJywgJ2xpbmVuJzogJyNGQUYwRTYnLCAnbWFnZW50YSc6ICcjRkYwMEZGJywgJ21hcm9vbic6ICcjODAwMDAwJywgJ21lZGl1bWFxdWFtYXJpbmUnOiAnIzY2Q0RBQScsICdtZWRpdW1ibHVlJzogJyMwMDAwQ0QnLCAnbWVkaXVtb3JjaGlkJzogJyNCQTU1RDMnLCAnbWVkaXVtcHVycGxlJzogJyM5MzcwREInLCAnbWVkaXVtc2VhZ3JlZW4nOiAnIzNDQjM3MScsICdtZWRpdW1zbGF0ZWJsdWUnOiAnIzdCNjhFRScsICdtZWRpdW1zcHJpbmdncmVlbic6ICcjMDBGQTlBJywgJ21lZGl1bXR1cnF1b2lzZSc6ICcjNDhEMUNDJywgJ21lZGl1bXZpb2xldHJlZCc6ICcjQzcxNTg1JywgJ21pZG5pZ2h0Ymx1ZSc6ICcjMTkxOTcwJywgJ21pbnRjcmVhbSc6ICcjRjVGRkZBJywgJ21pc3R5cm9zZSc6ICcjRkZFNEUxJywgJ21vY2Nhc2luJzogJyNGRkU0QjUnLCAnbmF2YWpvd2hpdGUnOiAnI0ZGREVBRCcsICduYXZ5JzogJyMwMDAwODAnLCAnb2xkbGFjZSc6ICcjRkRGNUU2JywgJ29saXZlJzogJyM4MDgwMDAnLCAnb2xpdmVkcmFiJzogJyM2QjhFMjMnLCAnb3JhbmdlJzogJyNGRkE1MDAnLCAnb3JhbmdlcmVkJzogJyNGRjQ1MDAnLCAnb3JjaGlkJzogJyNEQTcwRDYnLCAncGFsZWdvbGRlbnJvZCc6ICcjRUVFOEFBJywgJ3BhbGVncmVlbic6ICcjOThGQjk4JywgJ3BhbGV0dXJxdW9pc2UnOiAnI0FGRUVFRScsICdwYWxldmlvbGV0cmVkJzogJyNEQjcwOTMnLCAncGFwYXlhd2hpcCc6ICcjRkZFRkQ1JywgJ3BlYWNocHVmZic6ICcjRkZEQUI5JywgJ3BlcnUnOiAnI0NEODUzRicsICdwaW5rJzogJyNGRkMwQ0InLCAncGx1bSc6ICcjRERBMEREJywgJ3Bvd2RlcmJsdWUnOiAnI0IwRTBFNicsICdwdXJwbGUnOiAnIzgwMDA4MCcsICdyZWJlY2NhcHVycGxlJzogJyM2NjMzOTknLCAncmVkJzogJyNGRjAwMDAnLCAncm9zeWJyb3duJzogJyNCQzhGOEYnLCAncm95YWxibHVlJzogJyM0MTY5RTEnLCAnc2FkZGxlYnJvd24nOiAnIzhCNDUxMycsICdzYWxtb24nOiAnI0ZBODA3MicsICdzYW5keWJyb3duJzogJyNGNEE0NjAnLCAnc2VhZ3JlZW4nOiAnIzJFOEI1NycsICdzZWFzaGVsbCc6ICcjRkZGNUVFJywgJ3NpZW5uYSc6ICcjQTA1MjJEJywgJ3NpbHZlcic6ICcjQzBDMEMwJywgJ3NreWJsdWUnOiAnIzg3Q0VFQicsICdzbGF0ZWJsdWUnOiAnIzZBNUFDRCcsICdzbGF0ZWdyYXknOiAnIzcwODA5MCcsICdzbGF0ZWdyZXknOiAnIzcwODA5MCcsICdzbm93JzogJyNGRkZBRkEnLCAnc3ByaW5nZ3JlZW4nOiAnIzAwRkY3RicsICdzdGVlbGJsdWUnOiAnIzQ2ODJCNCcsICd0YW4nOiAnI0QyQjQ4QycsICd0ZWFsJzogJyMwMDgwODAnLCAndGhpc3RsZSc6ICcjRDhCRkQ4JywgJ3RvbWF0byc6ICcjRkY2MzQ3JywgJ3R1cnF1b2lzZSc6ICcjNDBFMEQwJywgJ3Zpb2xldCc6ICcjRUU4MkVFJywgJ3doZWF0JzogJyNGNURFQjMnLCAnd2hpdGUnOiAnI0ZGRkZGRicsICd3aGl0ZXNtb2tlJzogJyNGNUY1RjUnLCAneWVsbG93JzogJyNGRkZGMDAnLCAneWVsbG93Z3JlZW4nOiAnIzlBQ0QzMicgfTtcbmV4cG9ydCBjb25zdCBvcHRpb25zRGVmYXVsdCA9ICgpOiBJUGlja2VyT3B0aW9ucyA9PiB7XG4gIHJldHVybiB7XG4gICAgc2hvd0hzbDogZmFsc2UsXG4gICAgc2hvd1JnYjogdHJ1ZSxcbiAgICBzaG93SGV4OiB0cnVlLFxuICAgIHNob3dBbHBoYTogZmFsc2UsXG4gICAgY29sb3I6ICcjZmYwMDAwJyxcbiAgICBmb3JtYXQ6ICdjb2xvcicsXG4gICAgc2xCYXJTaXplOiBbMzE2LCAyMDBdLFxuICAgIGh1ZUJhclNpemU6IFszMTYsIDIwXSxcbiAgICBhbHBoYUJhclNpemU6IFszMTYsIDIwXVxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgbGltaXQgPSAodmFsdWU6IG51bWJlciB8IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSA9PiB7XG4gIHZhbHVlID0gK3ZhbHVlO1xuICByZXR1cm4gaXNOYU4odmFsdWUpID8gbWluIDogKHZhbHVlIDwgbWluID8gbWluIDogKHZhbHVlID4gbWF4ID8gbWF4IDogdmFsdWUpKTtcbn1cblxuZXhwb3J0IGNvbnN0IGhzbFRvUmdiID0gKGg6IG51bWJlciwgczogbnVtYmVyLCBsOiBudW1iZXIpID0+IHtcbiAgbGV0IHIsIGcsIGI7XG4gIFtoLCBzLCBsXSA9IFtsaW1pdChoLCAwLCAzNjApIC8gMzYwLCBsaW1pdChzLCAwLCAxMDApIC8gMTAwLCBsaW1pdChsLCAwLCAxMDApIC8gMTAwXTtcblxuICBpZiAocyA9PSAwKSB7XG4gICAgciA9IGcgPSBiID0gbDsgLy8gYWNocm9tYXRpY1xuXG4gICAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XS5tYXAoTWF0aC5yb3VuZCk7XG4gIH1cbiAgY29uc3QgaHVlVG9SZ2IgPSAocDogbnVtYmVyLCBxOiBudW1iZXIsIHQ6IG51bWJlcikgPT4ge1xuICAgIGlmICh0IDwgMCkgdCArPSAxO1xuICAgIGlmICh0ID4gMSkgdCAtPSAxO1xuICAgIGlmICh0IDwgMSAvIDYpIHJldHVybiBwICsgKHEgLSBwKSAqIDYgKiB0O1xuICAgIGlmICh0IDwgMSAvIDIpIHJldHVybiBxO1xuICAgIGlmICh0IDwgMiAvIDMpIHJldHVybiBwICsgKHEgLSBwKSAqICgyIC8gMyAtIHQpICogNjtcblxuICAgIHJldHVybiBwO1xuICB9O1xuICBjb25zdCBxID0gbCA8IDAuNSA/IGwgKiAoMSArIHMpIDogbCArIHMgLSBsICogcztcbiAgY29uc3QgcCA9ICgyICogbCkgLSBxO1xuXG4gIHIgPSBodWVUb1JnYihwLCBxLCBoICsgKDEgLyAzKSk7XG4gIGcgPSBodWVUb1JnYihwLCBxLCBoKTtcbiAgYiA9IGh1ZVRvUmdiKHAsIHEsIGggLSAoMSAvIDMpKTtcblxuICByZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdLm1hcChNYXRoLnJvdW5kKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNzc0NvbG9yVG9SZ2JhID0gKGNvbG9yOiBzdHJpbmcpID0+IHtcbiAgaWYgKGNvbG9yKSB7XG4gICAgY29uc3QgY29sb3JCeU5hbWUgPSBnZXQoQ29sb3JOYW1lcywgY29sb3IudG9Mb3dlckNhc2UoKSk7XG4gICAgY29uc3QgWywgLCAsIHIsIGcsIGIsIGEsICwgcnIsIGdnLCBiYiwgYWFdID0gL15cXHMqIz8oKChbMC05QS1GXSkoWzAtOUEtRl0pKFswLTlBLUZdKShbMC05QS1GXSk/KXwoKFswLTlBLUZdezJ9KShbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0pKFswLTlBLUZdezJ9KT8pKVxccyokL2kuZXhlYyhjb2xvckJ5TmFtZSB8fCBjb2xvcikgfHwgW107XG4gICAgaWYgKCFpc05pbChyKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgcGFyc2VJbnQociArIHIsIDE2KSxcbiAgICAgICAgcGFyc2VJbnQoZyArIGcsIDE2KSxcbiAgICAgICAgcGFyc2VJbnQoYiArIGIsIDE2KSxcbiAgICAgICAgYSA/ICsoKHBhcnNlSW50KGEgKyBhLCAxNikpIC8gMjU1KS50b0ZpeGVkKDIpIDogMVxuICAgICAgXTtcbiAgICB9XG4gICAgaWYgKCFpc05pbChycikpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHBhcnNlSW50KHJyLCAxNiksXG4gICAgICAgIHBhcnNlSW50KGdnLCAxNiksXG4gICAgICAgIHBhcnNlSW50KGJiLCAxNiksXG4gICAgICAgIGFhID8gKygocGFyc2VJbnQoYWEsIDE2KSkgLyAyNTUpLnRvRml4ZWQoMikgOiAxXG4gICAgICBdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9SZ2JhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbXG4gICAgICBsaW1pdChjb2xvclswXSwgMCwgMjU1KSxcbiAgICAgIGxpbWl0KGNvbG9yWzFdLCAwLCAyNTUpLFxuICAgICAgbGltaXQoY29sb3JbMl0sIDAsIDI1NSksXG4gICAgICBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKVxuICAgIF07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzQ29sb3JUb1JnYmEoY29sb3IpIHx8IGNzc1JnYmFUb1JnYmEoY29sb3IpO1xuXG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLmxlbmd0aCA9PT0gMykge1xuICAgIHBhcnNlZC5wdXNoKDEpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn1cblxuZXhwb3J0IGNvbnN0IGNzc1JnYmFUb1JnYmEgPSAocmdiYTogc3RyaW5nKSA9PiB7XG4gIGlmIChyZ2JhKSB7XG4gICAgY29uc3QgW20sIHIsIGcsIGIsICwgYV0gPSAvXnJnYmE/XFwoKFxcZCspXFxzKltcXHMsXVxccyooXFxkKylcXHMqW1xccyxdXFxzKihcXGQrKShcXHMqW1xccyxdXFxzKihcXGQqKC5cXGQrKT8pKT9cXCkvaS5leGVjKHJnYmEpIHx8IFtdO1xuXG4gICAgcmV0dXJuIG0gPyBbbGltaXQociwgMCwgMjU1KSwgbGltaXQoZywgMCwgMjU1KSwgbGltaXQoYiwgMCwgMjU1KSwgbGltaXQoYSA/PyAxLCAwLCAxKV0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgY29uc3QgY3NzSHNsYVRvSHNsYSA9IChoc2xhOiBzdHJpbmcpID0+IHtcbiAgaWYgKGhzbGEpIHtcbiAgICBjb25zdCBbbSwgaCwgcywgbCwgLCBhXSA9IC9eaHNsYT9cXCgoXFxkKylcXHMqW1xccyxdXFxzKihcXGQrKVxccypbXFxzLF1cXHMqKFxcZCspKFxccypbXFxzLF1cXHMqKFxcZCooLlxcZCspPykpP1xcKS9pLmV4ZWMoaHNsYSkgfHwgW107XG5cbiAgICByZXR1cm4gbSA/IFtsaW1pdChoLCAwLCAyNTUpLCBsaW1pdChzLCAwLCAyNTUpLCBsaW1pdChsLCAwLCAyNTUpLCBsaW1pdChhID8/IDEsIDAsIDEpXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9Ic2xhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbXG4gICAgICBsaW1pdChjb2xvclswXSwgMCwgMzYwKSxcbiAgICAgIGxpbWl0KGNvbG9yWzFdLCAwLCAxMDApLFxuICAgICAgbGltaXQoY29sb3JbMl0sIDAsIDEwMCksXG4gICAgICBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKVxuICAgIF07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzSHNsYVRvSHNsYShjb2xvcik7XG5cbiAgaWYgKHBhcnNlZCAmJiBwYXJzZWQubGVuZ3RoID09PSAzKSB7XG4gICAgcGFyc2VkLnB1c2goMSk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkO1xufVxuXG5leHBvcnQgY29uc3QgcmdiVG9Ic2wgPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBbciwgZywgYl0gPSBbbGltaXQociwgMCwgMjU1KSAvIDI1NSwgbGltaXQoZywgMCwgMjU1KSAvIDI1NSwgbGltaXQoYiwgMCwgMjU1KSAvIDI1NV07XG4gIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICBjb25zdCBtaW4gPSBNYXRoLm1pbihyLCBnLCBiKTtcbiAgbGV0IGgsIHMgPSAobWF4ICsgbWluKSAvIDI7XG4gIGNvbnN0IGwgPSAobWF4ICsgbWluKSAvIDI7XG5cbiAgaWYgKG1heCA9PSBtaW4pIHtcbiAgICBoID0gcyA9IDA7IC8vIGFjaHJvbWF0aWNcblxuICAgIHJldHVybiBbaCAqIDM2MCwgcyAqIDEwMCwgbCAqIDEwMF0ubWFwKE1hdGgucm91bmQpO1xuICB9XG4gIGNvbnN0IGQgPSBtYXggLSBtaW47XG5cbiAgcyA9IGwgPiAwLjUgPyBkIC8gKDIgLSBtYXggLSBtaW4pIDogZCAvIChtYXggKyBtaW4pO1xuICBzd2l0Y2ggKG1heCkge1xuICAgIGNhc2UgcjpcbiAgICAgIGggPSAoKGcgLSBiKSAvIGQpICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBnOlxuICAgICAgaCA9ICgoYiAtIHIpIC8gZCkgKyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBiOlxuICAgICAgaCA9ICgociAtIGcpIC8gZCkgKyA0O1xuICAgICAgYnJlYWs7XG4gIH1cbiAgaCA9IChoIHx8IDApIC8gNjtcblxuICByZXR1cm4gW2ggKiAzNjAsIHMgKiAxMDAsIGwgKiAxMDBdLm1hcChNYXRoLnJvdW5kKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJnYlRvSGV4ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgW3IsIGcsIGJdID0gW2xpbWl0KHIsIDAsIDI1NSksIGxpbWl0KGcsIDAsIDI1NSksIGxpbWl0KGIsIDAsIDI1NSldO1xuXG4gIHJldHVybiBcIiNcIiArIChcIjAwMDAwMFwiICsgKChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYikudG9TdHJpbmcoMTYpKS5zbGljZSgtNik7XG59XG5cbmV4cG9ydCBjb25zdCByZ2JUb0ludCA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIHJldHVybiAociA8PCAxNikgfCAoZyA8PCA4KSB8IGI7XG59XG5cbmV4cG9ydCBjb25zdCByZ2JUb0hzdiA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIFtyLCBnLCBiXSA9IFtsaW1pdChyLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChnLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChiLCAwLCAyNTUpIC8gMjU1XTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCwgcyA9IG1heDtcbiAgY29uc3QgdiA9IG1heDtcbiAgY29uc3QgZCA9IG1heCAtIG1pbjtcbiAgcyA9IG1heCA9PT0gMCA/IDAgOiBkIC8gbWF4O1xuXG4gIGlmIChtYXggPT0gbWluKSB7XG4gICAgaCA9IDA7XG5cbiAgICByZXR1cm4gW2gsIHMsIHZdO1xuICB9XG4gIHN3aXRjaCAobWF4KSB7XG4gICAgY2FzZSByOiBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7IGJyZWFrO1xuICAgIGNhc2UgZzogaCA9IChiIC0gcikgLyBkICsgMjsgYnJlYWs7XG4gICAgY2FzZSBiOiBoID0gKHIgLSBnKSAvIGQgKyA0OyBicmVhaztcbiAgfVxuICBoID0gKGggfHwgMCkgLyA2O1xuXG4gIHJldHVybiBbaCwgcywgdl07XG59XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDb2xvciA9IChkYXRhOiBBcnJheTxudW1iZXI+LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ3JnYic6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRhLnNsaWNlKDAsIDMpO1xuICAgIGNhc2UgJ3JnYmNzcyc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAncmdiY3NzNCc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAncmdiYSc6XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICBjYXNlICdyZ2JhY3NzJzpcbiAgICAgIHJldHVybiBgcmdiYSgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAnaHNsJzpcbiAgICAgIHJldHVybiByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoc2xjc3MnOlxuICAgICAgZGF0YSA9IHJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pO1xuXG4gICAgICByZXR1cm4gYGhzbCgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAnaHNsY3NzNCc6IHtcbiAgICAgIGNvbnN0IGhoID0gcmdiVG9Ic2woZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG5cbiAgICAgIHJldHVybiBgaHNsKCR7aGhbMF19LCAke2hoWzFdfSwgJHtoaFsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaHNsYSc6XG4gICAgICByZXR1cm4gWy4uLnJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXTtcbiAgICBjYXNlICdoc2xhY3NzJzoge1xuICAgICAgY29uc3QgaGEgPSByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcblxuICAgICAgcmV0dXJuIGBoc2xhKCR7aGFbMF19LCAke2hhWzFdfSwgJHtoYVsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaGV4JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoZXhjc3M0JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKSArICgnMDAnICsgcGFyc2VJbnQoKGRhdGFbM10gKiAyNTUpLnRvU3RyaW5nKCkpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIGNhc2UgJ2ludCc6XG4gICAgICByZXR1cm4gcmdiVG9JbnQoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29sb3IgPSAoY29sb3I6IHN0cmluZyB8IEFycmF5PG51bWJlcj4sIGZvcm1hdDogc3RyaW5nIHwgb2JqZWN0KSA9PiB7XG4gIGlmICghaXNOaWwoY29sb3IpKSB7XG4gICAgbGV0IGRhdGE6IEFycmF5PG51bWJlcj4gfCB1bmRlZmluZWQgPSBbXTtcblxuICAgIGRhdGEgPSBwYXJzZUNvbG9yVG9SZ2JhKGNvbG9yKSB8fCAocGFyc2VDb2xvclRvSHNsYShjb2xvcikgJiYgWy4uLmhzbFRvUmdiKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXSk7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmICh0eXBlb2YgZm9ybWF0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gWydyZ2InLCAncmdiY3NzJywgJ3JnYmNzczQnLCAncmdiYScsICdyZ2JhY3NzJywgJ2hzbCcsICdoc2xjc3MnLCAnaHNsY3NzNCcsICdoc2xhJywgJ2hzbGFjc3MnLCAnaGV4JywgJ2hleGNzczQnLCAnaW50J10ucmVkdWNlKChtLCBmKSA9PiB7XG4gICAgICAgICAgc2V0KG0sIGYsIGZvcm1hdENvbG9yKGRhdGEsIGYpKTtcblxuICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICB9LCBmb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybWF0Q29sb3IoZGF0YSwgZm9ybWF0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRIZWxwZXIgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgc2V0SHVlOiAoKSA9PiB7IHJldHVybiB9LFxuICAgIGdyYWJDb2xvcjogKCkgPT4gW10sXG4gICAgZmluZENvbG9yOiAoKSA9PiBbXVxuICB9O1xufSJdfQ==
364
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2NvbG9yLXBpY2tlci9zcmMvdXRpbHMvcGlja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdqRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQVc7SUFDaEMsU0FBUyxFQUFFLFNBQVM7SUFDcEIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsSUFBSSxFQUFFLFNBQVM7SUFDZixVQUFVLEVBQUUsU0FBUztJQUNyQixLQUFLLEVBQUUsU0FBUztJQUNoQixLQUFLLEVBQUUsU0FBUztJQUNoQixNQUFNLEVBQUUsU0FBUztJQUNqQixLQUFLLEVBQUUsU0FBUztJQUNoQixjQUFjLEVBQUUsU0FBUztJQUN6QixJQUFJLEVBQUUsU0FBUztJQUNmLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLElBQUksRUFBRSxTQUFTO0lBQ2YsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsVUFBVSxFQUFFLFNBQVM7SUFDckIsVUFBVSxFQUFFLFNBQVM7SUFDckIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsSUFBSSxFQUFFLFNBQVM7SUFDZixTQUFTLEVBQUUsU0FBUztJQUNwQixJQUFJLEVBQUUsU0FBUztJQUNmLElBQUksRUFBRSxTQUFTO0lBQ2YsS0FBSyxFQUFFLFNBQVM7SUFDaEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsTUFBTSxFQUFFLFNBQVM7SUFDakIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsYUFBYSxFQUFFLFNBQVM7SUFDeEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsb0JBQW9CLEVBQUUsU0FBUztJQUMvQixTQUFTLEVBQUUsU0FBUztJQUNwQixTQUFTLEVBQUUsU0FBUztJQUNwQixVQUFVLEVBQUUsU0FBUztJQUNyQixTQUFTLEVBQUUsU0FBUztJQUNwQixXQUFXLEVBQUUsU0FBUztJQUN0QixhQUFhLEVBQUUsU0FBUztJQUN4QixZQUFZLEVBQUUsU0FBUztJQUN2QixjQUFjLEVBQUUsU0FBUztJQUN6QixjQUFjLEVBQUUsU0FBUztJQUN6QixjQUFjLEVBQUUsU0FBUztJQUN6QixXQUFXLEVBQUUsU0FBUztJQUN0QixJQUFJLEVBQUUsU0FBUztJQUNmLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLGdCQUFnQixFQUFFLFNBQVM7SUFDM0IsVUFBVSxFQUFFLFNBQVM7SUFDckIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsY0FBYyxFQUFFLFNBQVM7SUFDekIsZUFBZSxFQUFFLFNBQVM7SUFDMUIsaUJBQWlCLEVBQUUsU0FBUztJQUM1QixlQUFlLEVBQUUsU0FBUztJQUMxQixlQUFlLEVBQUUsU0FBUztJQUMxQixZQUFZLEVBQUUsU0FBUztJQUN2QixTQUFTLEVBQUUsU0FBUztJQUNwQixTQUFTLEVBQUUsU0FBUztJQUNwQixRQUFRLEVBQUUsU0FBUztJQUNuQixXQUFXLEVBQUUsU0FBUztJQUN0QixJQUFJLEVBQUUsU0FBUztJQUNmLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLGFBQWEsRUFBRSxTQUFTO0lBQ3hCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLGFBQWEsRUFBRSxTQUFTO0lBQ3hCLGFBQWEsRUFBRSxTQUFTO0lBQ3hCLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLElBQUksRUFBRSxTQUFTO0lBQ2YsSUFBSSxFQUFFLFNBQVM7SUFDZixJQUFJLEVBQUUsU0FBUztJQUNmLFVBQVUsRUFBRSxTQUFTO0lBQ3JCLE1BQU0sRUFBRSxTQUFTO0lBQ2pCLGFBQWEsRUFBRSxTQUFTO0lBQ3hCLEdBQUcsRUFBRSxTQUFTO0lBQ2QsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsV0FBVyxFQUFFLFNBQVM7SUFDdEIsTUFBTSxFQUFFLFNBQVM7SUFDakIsVUFBVSxFQUFFLFNBQVM7SUFDckIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsUUFBUSxFQUFFLFNBQVM7SUFDbkIsTUFBTSxFQUFFLFNBQVM7SUFDakIsTUFBTSxFQUFFLFNBQVM7SUFDakIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsSUFBSSxFQUFFLFNBQVM7SUFDZixXQUFXLEVBQUUsU0FBUztJQUN0QixTQUFTLEVBQUUsU0FBUztJQUNwQixHQUFHLEVBQUUsU0FBUztJQUNkLElBQUksRUFBRSxTQUFTO0lBQ2YsT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLFNBQVM7SUFDakIsU0FBUyxFQUFFLFNBQVM7SUFDcEIsTUFBTSxFQUFFLFNBQVM7SUFDakIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsVUFBVSxFQUFFLFNBQVM7SUFDckIsTUFBTSxFQUFFLFNBQVM7SUFDakIsV0FBVyxFQUFFLFNBQVM7Q0FDdkIsQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxHQUFtQixFQUFFO0lBQ2pELE9BQU87UUFDTCxPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLElBQUk7UUFDYixTQUFTLEVBQUUsS0FBSztRQUNoQixLQUFLLEVBQUUsU0FBUztRQUNoQixNQUFNLEVBQUUsT0FBTztRQUNmLFNBQVMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7UUFDckIsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztRQUNyQixZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDO0tBQ3hCLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxLQUFzQixFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsRUFBRTtJQUN4RSxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFDZixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUU7SUFDMUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNaLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFFckYsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDWCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBRTVCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsRUFBRTtRQUNuRCxJQUFJLENBQUMsR0FBRyxDQUFDO1lBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDO1lBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztZQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFcEQsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUM7SUFDRixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVwQixDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QixDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEIsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFOUIsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtJQUM5QyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsRUFBRSxBQUFELEVBQUcsQUFBRCxFQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFELEVBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsa0hBQWtILENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDak0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2QsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUgsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNmLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0csQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtJQUNoRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFN0QsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUM1QyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFELEVBQUcsQ0FBQyxDQUFDLEdBQUcsNEVBQTRFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4SCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtJQUM1QyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxBQUFELEVBQUcsQ0FBQyxDQUFDLEdBQUcsNEVBQTRFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4SCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQTZCLEVBQUUsRUFBRTtJQUNoRSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakgsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUU7SUFDMUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNyRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxFQUNILENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTFCLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhO1FBRXhCLE9BQU8sQ0FBQyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFFcEIsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ1osS0FBSyxDQUFDO1lBQ0osQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTTtRQUNSLEtBQUssQ0FBQztZQUNKLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BCLE1BQU07UUFDUixLQUFLLENBQUM7WUFDSixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNwQixNQUFNO0lBQ1YsQ0FBQztJQUNELENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFakIsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzFELENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFbkUsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RSxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFO0lBQzFELE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLEVBQUU7SUFDMUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNyRixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxFQUNILENBQUMsR0FBRyxHQUFHLENBQUM7SUFDVixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDZCxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFFNUIsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRU4sT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJ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QUUsQ0FBQyxFQUFFO1FBQ25CLFNBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO0tBQ3BCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBnZXQsIGlzTmlsLCBzZXQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBJQ29sb3IsIElQaWNrZXJPcHRpb25zIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBDb2xvck5hbWVzOiBJQ29sb3IgPSB7XG4gIGFsaWNlYmx1ZTogJyNGMEY4RkYnLFxuICBhbnRpcXVld2hpdGU6ICcjRkFFQkQ3JyxcbiAgYXF1YTogJyMwMEZGRkYnLFxuICBhcXVhbWFyaW5lOiAnIzdGRkZENCcsXG4gIGF6dXJlOiAnI0YwRkZGRicsXG4gIGJlaWdlOiAnI0Y1RjVEQycsXG4gIGJpc3F1ZTogJyNGRkU0QzQnLFxuICBibGFjazogJyMwMDAwMDAnLFxuICBibGFuY2hlZGFsbW9uZDogJyNGRkVCQ0QnLFxuICBibHVlOiAnIzAwMDBGRicsXG4gIGJsdWV2aW9sZXQ6ICcjOEEyQkUyJyxcbiAgYnJvd246ICcjQTUyQTJBJyxcbiAgYnVybHl3b29kOiAnI0RFQjg4NycsXG4gIGNhZGV0Ymx1ZTogJyM1RjlFQTAnLFxuICBjaGFydHJldXNlOiAnIzdGRkYwMCcsXG4gIGNob2NvbGF0ZTogJyNEMjY5MUUnLFxuICBjb3JhbDogJyNGRjdGNTAnLFxuICBjb3JuZmxvd2VyYmx1ZTogJyM2NDk1RUQnLFxuICBjb3Juc2lsazogJyNGRkY4REMnLFxuICBjcmltc29uOiAnI0RDMTQzQycsXG4gIGN5YW46ICcjMDBGRkZGJyxcbiAgZGFya2JsdWU6ICcjMDAwMDhCJyxcbiAgZGFya2N5YW46ICcjMDA4QjhCJyxcbiAgZGFya2dvbGRlbnJvZDogJyNCODg2MEInLFxuICBkYXJrZ3JheTogJyNBOUE5QTknLFxuICBkYXJrZ3JleTogJyNBOUE5QTknLFxuICBkYXJrZ3JlZW46ICcjMDA2NDAwJyxcbiAgZGFya2toYWtpOiAnI0JEQjc2QicsXG4gIGRhcmttYWdlbnRhOiAnIzhCMDA4QicsXG4gIGRhcmtvbGl2ZWdyZWVuOiAnIzU1NkIyRicsXG4gIGRhcmtvcmFuZ2U6ICcjRkY4QzAwJyxcbiAgZGFya29yY2hpZDogJyM5OTMyQ0MnLFxuICBkYXJrcmVkOiAnIzhCMDAwMCcsXG4gIGRhcmtzYWxtb246ICcjRTk5NjdBJyxcbiAgZGFya3NlYWdyZWVuOiAnIzhGQkM4RicsXG4gIGRhcmtzbGF0ZWJsdWU6ICcjNDgzRDhCJyxcbiAgZGFya3NsYXRlZ3JheTogJyMyRjRGNEYnLFxuICBkYXJrc2xhdGVncmV5OiAnIzJGNEY0RicsXG4gIGRhcmt0dXJxdW9pc2U6ICcjMDBDRUQxJyxcbiAgZGFya3Zpb2xldDogJyM5NDAwRDMnLFxuICBkZWVwcGluazogJyNGRjE0OTMnLFxuICBkZWVwc2t5Ymx1ZTogJyMwMEJGRkYnLFxuICBkaW1ncmF5OiAnIzY5Njk2OScsXG4gIGRpbWdyZXk6ICcjNjk2OTY5JyxcbiAgZG9kZ2VyYmx1ZTogJyMxRTkwRkYnLFxuICBmaXJlYnJpY2s6ICcjQjIyMjIyJyxcbiAgZmxvcmFsd2hpdGU6ICcjRkZGQUYwJyxcbiAgZm9yZXN0Z3JlZW46ICcjMjI4QjIyJyxcbiAgZnVjaHNpYTogJyNGRjAwRkYnLFxuICBnYWluc2Jvcm86ICcjRENEQ0RDJyxcbiAgZ2hvc3R3aGl0ZTogJyNGOEY4RkYnLFxuICBnb2xkOiAnI0ZGRDcwMCcsXG4gIGdvbGRlbnJvZDogJyNEQUE1MjAnLFxuICBncmF5OiAnIzgwODA4MCcsXG4gIGdyZXk6ICcjODA4MDgwJyxcbiAgZ3JlZW46ICcjMDA4MDAwJyxcbiAgZ3JlZW55ZWxsb3c6ICcjQURGRjJGJyxcbiAgaG9uZXlkZXc6ICcjRjBGRkYwJyxcbiAgaG90cGluazogJyNGRjY5QjQnLFxuICBpbmRpYW5yZWQ6ICcjQ0Q1QzVDJyxcbiAgaW5kaWdvOiAnIzRCMDA4MicsXG4gIGl2b3J5OiAnI0ZGRkZGMCcsXG4gIGtoYWtpOiAnI0YwRTY4QycsXG4gIGxhdmVuZGVyOiAnI0U2RTZGQScsXG4gIGxhdmVuZGVyYmx1c2g6ICcjRkZGMEY1JyxcbiAgbGF3bmdyZWVuOiAnIzdDRkMwMCcsXG4gIGxlbW9uY2hpZmZvbjogJyNGRkZBQ0QnLFxuICBsaWdodGJsdWU6ICcjQUREOEU2JyxcbiAgbGlnaHRjb3JhbDogJyNGMDgwODAnLFxuICBsaWdodGN5YW46ICcjRTBGRkZGJyxcbiAgbGlnaHRnb2xkZW5yb2R5ZWxsb3c6ICcjRkFGQUQyJyxcbiAgbGlnaHRncmF5OiAnI0QzRDNEMycsXG4gIGxpZ2h0Z3JleTogJyNEM0QzRDMnLFxuICBsaWdodGdyZWVuOiAnIzkwRUU5MCcsXG4gIGxpZ2h0cGluazogJyNGRkI2QzEnLFxuICBsaWdodHNhbG1vbjogJyNGRkEwN0EnLFxuICBsaWdodHNlYWdyZWVuOiAnIzIwQjJBQScsXG4gIGxpZ2h0c2t5Ymx1ZTogJyM4N0NFRkEnLFxuICBsaWdodHNsYXRlZ3JheTogJyM3Nzg4OTknLFxuICBsaWdodHNsYXRlZ3JleTogJyM3Nzg4OTknLFxuICBsaWdodHN0ZWVsYmx1ZTogJyNCMEM0REUnLFxuICBsaWdodHllbGxvdzogJyNGRkZGRTAnLFxuICBsaW1lOiAnIzAwRkYwMCcsXG4gIGxpbWVncmVlbjogJyMzMkNEMzInLFxuICBsaW5lbjogJyNGQUYwRTYnLFxuICBtYWdlbnRhOiAnI0ZGMDBGRicsXG4gIG1hcm9vbjogJyM4MDAwMDAnLFxuICBtZWRpdW1hcXVhbWFyaW5lOiAnIzY2Q0RBQScsXG4gIG1lZGl1bWJsdWU6ICcjMDAwMENEJyxcbiAgbWVkaXVtb3JjaGlkOiAnI0JBNTVEMycsXG4gIG1lZGl1bXB1cnBsZTogJyM5MzcwREInLFxuICBtZWRpdW1zZWFncmVlbjogJyMzQ0IzNzEnLFxuICBtZWRpdW1zbGF0ZWJsdWU6ICcjN0I2OEVFJyxcbiAgbWVkaXVtc3ByaW5nZ3JlZW46ICcjMDBGQTlBJyxcbiAgbWVkaXVtdHVycXVvaXNlOiAnIzQ4RDFDQycsXG4gIG1lZGl1bXZpb2xldHJlZDogJyNDNzE1ODUnLFxuICBtaWRuaWdodGJsdWU6ICcjMTkxOTcwJyxcbiAgbWludGNyZWFtOiAnI0Y1RkZGQScsXG4gIG1pc3R5cm9zZTogJyNGRkU0RTEnLFxuICBtb2NjYXNpbjogJyNGRkU0QjUnLFxuICBuYXZham93aGl0ZTogJyNGRkRFQUQnLFxuICBuYXZ5OiAnIzAwMDA4MCcsXG4gIG9sZGxhY2U6ICcjRkRGNUU2JyxcbiAgb2xpdmU6ICcjODA4MDAwJyxcbiAgb2xpdmVkcmFiOiAnIzZCOEUyMycsXG4gIG9yYW5nZTogJyNGRkE1MDAnLFxuICBvcmFuZ2VyZWQ6ICcjRkY0NTAwJyxcbiAgb3JjaGlkOiAnI0RBNzBENicsXG4gIHBhbGVnb2xkZW5yb2Q6ICcjRUVFOEFBJyxcbiAgcGFsZWdyZWVuOiAnIzk4RkI5OCcsXG4gIHBhbGV0dXJxdW9pc2U6ICcjQUZFRUVFJyxcbiAgcGFsZXZpb2xldHJlZDogJyNEQjcwOTMnLFxuICBwYXBheWF3aGlwOiAnI0ZGRUZENScsXG4gIHBlYWNocHVmZjogJyNGRkRBQjknLFxuICBwZXJ1OiAnI0NEODUzRicsXG4gIHBpbms6ICcjRkZDMENCJyxcbiAgcGx1bTogJyNEREEwREQnLFxuICBwb3dkZXJibHVlOiAnI0IwRTBFNicsXG4gIHB1cnBsZTogJyM4MDAwODAnLFxuICByZWJlY2NhcHVycGxlOiAnIzY2MzM5OScsXG4gIHJlZDogJyNGRjAwMDAnLFxuICByb3N5YnJvd246ICcjQkM4RjhGJyxcbiAgcm95YWxibHVlOiAnIzQxNjlFMScsXG4gIHNhZGRsZWJyb3duOiAnIzhCNDUxMycsXG4gIHNhbG1vbjogJyNGQTgwNzInLFxuICBzYW5keWJyb3duOiAnI0Y0QTQ2MCcsXG4gIHNlYWdyZWVuOiAnIzJFOEI1NycsXG4gIHNlYXNoZWxsOiAnI0ZGRjVFRScsXG4gIHNpZW5uYTogJyNBMDUyMkQnLFxuICBzaWx2ZXI6ICcjQzBDMEMwJyxcbiAgc2t5Ymx1ZTogJyM4N0NFRUInLFxuICBzbGF0ZWJsdWU6ICcjNkE1QUNEJyxcbiAgc2xhdGVncmF5OiAnIzcwODA5MCcsXG4gIHNsYXRlZ3JleTogJyM3MDgwOTAnLFxuICBzbm93OiAnI0ZGRkFGQScsXG4gIHNwcmluZ2dyZWVuOiAnIzAwRkY3RicsXG4gIHN0ZWVsYmx1ZTogJyM0NjgyQjQnLFxuICB0YW46ICcjRDJCNDhDJyxcbiAgdGVhbDogJyMwMDgwODAnLFxuICB0aGlzdGxlOiAnI0Q4QkZEOCcsXG4gIHRvbWF0bzogJyNGRjYzNDcnLFxuICB0dXJxdW9pc2U6ICcjNDBFMEQwJyxcbiAgdmlvbGV0OiAnI0VFODJFRScsXG4gIHdoZWF0OiAnI0Y1REVCMycsXG4gIHdoaXRlOiAnI0ZGRkZGRicsXG4gIHdoaXRlc21va2U6ICcjRjVGNUY1JyxcbiAgeWVsbG93OiAnI0ZGRkYwMCcsXG4gIHllbGxvd2dyZWVuOiAnIzlBQ0QzMicsXG59O1xuZXhwb3J0IGNvbnN0IG9wdGlvbnNEZWZhdWx0ID0gKCk6IElQaWNrZXJPcHRpb25zID0+IHtcbiAgcmV0dXJuIHtcbiAgICBzaG93SHNsOiBmYWxzZSxcbiAgICBzaG93UmdiOiB0cnVlLFxuICAgIHNob3dIZXg6IHRydWUsXG4gICAgc2hvd0FscGhhOiBmYWxzZSxcbiAgICBjb2xvcjogJyNmZjAwMDAnLFxuICAgIGZvcm1hdDogJ2NvbG9yJyxcbiAgICBzbEJhclNpemU6IFs0MjAsIDIwMF0sXG4gICAgaHVlQmFyU2l6ZTogWzQyMCwgMjBdLFxuICAgIGFscGhhQmFyU2l6ZTogWzQyMCwgMjBdLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGxpbWl0ID0gKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikgPT4ge1xuICB2YWx1ZSA9ICt2YWx1ZTtcbiAgcmV0dXJuIGlzTmFOKHZhbHVlKSA/IG1pbiA6IHZhbHVlIDwgbWluID8gbWluIDogdmFsdWUgPiBtYXggPyBtYXggOiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xUb1JnYiA9IChoOiBudW1iZXIsIHM6IG51bWJlciwgbDogbnVtYmVyKSA9PiB7XG4gIGxldCByLCBnLCBiO1xuICBbaCwgcywgbF0gPSBbbGltaXQoaCwgMCwgMzYwKSAvIDM2MCwgbGltaXQocywgMCwgMTAwKSAvIDEwMCwgbGltaXQobCwgMCwgMTAwKSAvIDEwMF07XG5cbiAgaWYgKHMgPT0gMCkge1xuICAgIHIgPSBnID0gYiA9IGw7IC8vIGFjaHJvbWF0aWNcblxuICAgIHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV0ubWFwKE1hdGgucm91bmQpO1xuICB9XG4gIGNvbnN0IGh1ZVRvUmdiID0gKHA6IG51bWJlciwgcTogbnVtYmVyLCB0OiBudW1iZXIpID0+IHtcbiAgICBpZiAodCA8IDApIHQgKz0gMTtcbiAgICBpZiAodCA+IDEpIHQgLT0gMTtcbiAgICBpZiAodCA8IDEgLyA2KSByZXR1cm4gcCArIChxIC0gcCkgKiA2ICogdDtcbiAgICBpZiAodCA8IDEgLyAyKSByZXR1cm4gcTtcbiAgICBpZiAodCA8IDIgLyAzKSByZXR1cm4gcCArIChxIC0gcCkgKiAoMiAvIDMgLSB0KSAqIDY7XG5cbiAgICByZXR1cm4gcDtcbiAgfTtcbiAgY29uc3QgcSA9IGwgPCAwLjUgPyBsICogKDEgKyBzKSA6IGwgKyBzIC0gbCAqIHM7XG4gIGNvbnN0IHAgPSAyICogbCAtIHE7XG5cbiAgciA9IGh1ZVRvUmdiKHAsIHEsIGggKyAxIC8gMyk7XG4gIGcgPSBodWVUb1JnYihwLCBxLCBoKTtcbiAgYiA9IGh1ZVRvUmdiKHAsIHEsIGggLSAxIC8gMyk7XG5cbiAgcmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XS5tYXAoTWF0aC5yb3VuZCk7XG59O1xuXG5leHBvcnQgY29uc3QgY3NzQ29sb3JUb1JnYmEgPSAoY29sb3I6IHN0cmluZykgPT4ge1xuICBpZiAoY29sb3IpIHtcbiAgICBjb25zdCBjb2xvckJ5TmFtZSA9IGdldChDb2xvck5hbWVzLCBjb2xvci50b0xvd2VyQ2FzZSgpKTtcbiAgICBjb25zdCBbLCAsICwgciwgZywgYiwgYSwgLCByciwgZ2csIGJiLCBhYV0gPSAvXlxccyojPygoKFswLTlBLUZdKShbMC05QS1GXSkoWzAtOUEtRl0pKFswLTlBLUZdKT8pfCgoWzAtOUEtRl17Mn0pKFswLTlBLUZdezJ9KShbMC05QS1GXXsyfSkoWzAtOUEtRl17Mn0pPykpXFxzKiQvaS5leGVjKGNvbG9yQnlOYW1lIHx8IGNvbG9yKSB8fCBbXTtcbiAgICBpZiAoIWlzTmlsKHIpKSB7XG4gICAgICByZXR1cm4gW3BhcnNlSW50KHIgKyByLCAxNiksIHBhcnNlSW50KGcgKyBnLCAxNiksIHBhcnNlSW50KGIgKyBiLCAxNiksIGEgPyArKHBhcnNlSW50KGEgKyBhLCAxNikgLyAyNTUpLnRvRml4ZWQoMikgOiAxXTtcbiAgICB9XG4gICAgaWYgKCFpc05pbChycikpIHtcbiAgICAgIHJldHVybiBbcGFyc2VJbnQocnIsIDE2KSwgcGFyc2VJbnQoZ2csIDE2KSwgcGFyc2VJbnQoYmIsIDE2KSwgYWEgPyArKHBhcnNlSW50KGFhLCAxNikgLyAyNTUpLnRvRml4ZWQoMikgOiAxXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29sb3JUb1JnYmEgPSAoY29sb3I6IHN0cmluZyB8IEFycmF5PG51bWJlcj4pID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sb3IpKSB7XG4gICAgcmV0dXJuIFtsaW1pdChjb2xvclswXSwgMCwgMjU1KSwgbGltaXQoY29sb3JbMV0sIDAsIDI1NSksIGxpbWl0KGNvbG9yWzJdLCAwLCAyNTUpLCBsaW1pdChjb2xvclszXSA/PyAxLCAwLCAxKV07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gY3NzQ29sb3JUb1JnYmEoY29sb3IpIHx8IGNzc1JnYmFUb1JnYmEoY29sb3IpO1xuXG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLmxlbmd0aCA9PT0gMykge1xuICAgIHBhcnNlZC5wdXNoKDEpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjc3NSZ2JhVG9SZ2JhID0gKHJnYmE6IHN0cmluZykgPT4ge1xuICBpZiAocmdiYSkge1xuICAgIGNvbnN0IFttLCByLCBnLCBiLCAsIGFdID0gL15yZ2JhP1xcKChcXGQrKVxccypbXFxzLF1cXHMqKFxcZCspXFxzKltcXHMsXVxccyooXFxkKykoXFxzKltcXHMsXVxccyooXFxkKiguXFxkKyk/KSk/XFwpL2kuZXhlYyhyZ2JhKSB8fCBbXTtcblxuICAgIHJldHVybiBtID8gW2xpbWl0KHIsIDAsIDI1NSksIGxpbWl0KGcsIDAsIDI1NSksIGxpbWl0KGIsIDAsIDI1NSksIGxpbWl0KGEgPz8gMSwgMCwgMSldIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBjc3NIc2xhVG9Ic2xhID0gKGhzbGE6IHN0cmluZykgPT4ge1xuICBpZiAoaHNsYSkge1xuICAgIGNvbnN0IFttLCBoLCBzLCBsLCAsIGFdID0gL15oc2xhP1xcKChcXGQrKVxccypbXFxzLF1cXHMqKFxcZCspXFxzKltcXHMsXVxccyooXFxkKykoXFxzKltcXHMsXVxccyooXFxkKiguXFxkKyk/KSk/XFwpL2kuZXhlYyhoc2xhKSB8fCBbXTtcblxuICAgIHJldHVybiBtID8gW2xpbWl0KGgsIDAsIDI1NSksIGxpbWl0KHMsIDAsIDI1NSksIGxpbWl0KGwsIDAsIDI1NSksIGxpbWl0KGEgPz8gMSwgMCwgMSldIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yVG9Ic2xhID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+KSA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkge1xuICAgIHJldHVybiBbbGltaXQoY29sb3JbMF0sIDAsIDM2MCksIGxpbWl0KGNvbG9yWzFdLCAwLCAxMDApLCBsaW1pdChjb2xvclsyXSwgMCwgMTAwKSwgbGltaXQoY29sb3JbM10gPz8gMSwgMCwgMSldO1xuICB9XG4gIGNvbnN0IHBhcnNlZCA9IGNzc0hzbGFUb0hzbGEoY29sb3IpO1xuXG4gIGlmIChwYXJzZWQgJiYgcGFyc2VkLmxlbmd0aCA9PT0gMykge1xuICAgIHBhcnNlZC5wdXNoKDEpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZDtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JUb0hzbCA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIFtyLCBnLCBiXSA9IFtsaW1pdChyLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChnLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChiLCAwLCAyNTUpIC8gMjU1XTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCxcbiAgICBzID0gKG1heCArIG1pbikgLyAyO1xuICBjb25zdCBsID0gKG1heCArIG1pbikgLyAyO1xuXG4gIGlmIChtYXggPT0gbWluKSB7XG4gICAgaCA9IHMgPSAwOyAvLyBhY2hyb21hdGljXG5cbiAgICByZXR1cm4gW2ggKiAzNjAsIHMgKiAxMDAsIGwgKiAxMDBdLm1hcChNYXRoLnJvdW5kKTtcbiAgfVxuICBjb25zdCBkID0gbWF4IC0gbWluO1xuXG4gIHMgPSBsID4gMC41ID8gZCAvICgyIC0gbWF4IC0gbWluKSA6IGQgLyAobWF4ICsgbWluKTtcbiAgc3dpdGNoIChtYXgpIHtcbiAgICBjYXNlIHI6XG4gICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGc6XG4gICAgICBoID0gKGIgLSByKSAvIGQgKyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBiOlxuICAgICAgaCA9IChyIC0gZykgLyBkICsgNDtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGggPSAoaCB8fCAwKSAvIDY7XG5cbiAgcmV0dXJuIFtoICogMzYwLCBzICogMTAwLCBsICogMTAwXS5tYXAoTWF0aC5yb3VuZCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmdiVG9IZXggPSAocjogbnVtYmVyLCBnOiBudW1iZXIsIGI6IG51bWJlcikgPT4ge1xuICBbciwgZywgYl0gPSBbbGltaXQociwgMCwgMjU1KSwgbGltaXQoZywgMCwgMjU1KSwgbGltaXQoYiwgMCwgMjU1KV07XG5cbiAgcmV0dXJuICcjJyArICgnMDAwMDAwJyArICgociA8PCAxNikgfCAoZyA8PCA4KSB8IGIpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTYpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJnYlRvSW50ID0gKHI6IG51bWJlciwgZzogbnVtYmVyLCBiOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIChyIDw8IDE2KSB8IChnIDw8IDgpIHwgYjtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JUb0hzdiA9IChyOiBudW1iZXIsIGc6IG51bWJlciwgYjogbnVtYmVyKSA9PiB7XG4gIFtyLCBnLCBiXSA9IFtsaW1pdChyLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChnLCAwLCAyNTUpIC8gMjU1LCBsaW1pdChiLCAwLCAyNTUpIC8gMjU1XTtcbiAgY29uc3QgbWF4ID0gTWF0aC5tYXgociwgZywgYik7XG4gIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuICBsZXQgaCxcbiAgICBzID0gbWF4O1xuICBjb25zdCB2ID0gbWF4O1xuICBjb25zdCBkID0gbWF4IC0gbWluO1xuICBzID0gbWF4ID09PSAwID8gMCA6IGQgLyBtYXg7XG5cbiAgaWYgKG1heCA9PSBtaW4pIHtcbiAgICBoID0gMDtcblxuICAgIHJldHVybiBbaCwgcywgdl07XG4gIH1cbiAgc3dpdGNoIChtYXgpIHtcbiAgICBjYXNlIHI6XG4gICAgICBoID0gKGcgLSBiKSAvIGQgKyAoZyA8IGIgPyA2IDogMCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGc6XG4gICAgICBoID0gKGIgLSByKSAvIGQgKyAyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBiOlxuICAgICAgaCA9IChyIC0gZykgLyBkICsgNDtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGggPSAoaCB8fCAwKSAvIDY7XG5cbiAgcmV0dXJuIFtoLCBzLCB2XTtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDb2xvciA9IChkYXRhOiBBcnJheTxudW1iZXI+LCBmb3JtYXQ6IHN0cmluZykgPT4ge1xuICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgIGNhc2UgJ3JnYic6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkYXRhLnNsaWNlKDAsIDMpO1xuICAgIGNhc2UgJ3JnYmNzcyc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAncmdiY3NzNCc6XG4gICAgICByZXR1cm4gYHJnYigke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAncmdiYSc6XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICBjYXNlICdyZ2JhY3NzJzpcbiAgICAgIHJldHVybiBgcmdiYSgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19LCAke2RhdGFbM119KWA7XG4gICAgY2FzZSAnaHNsJzpcbiAgICAgIHJldHVybiByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoc2xjc3MnOlxuICAgICAgZGF0YSA9IHJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pO1xuXG4gICAgICByZXR1cm4gYGhzbCgke2RhdGFbMF19LCAke2RhdGFbMV19LCAke2RhdGFbMl19KWA7XG4gICAgY2FzZSAnaHNsY3NzNCc6IHtcbiAgICAgIGNvbnN0IGhoID0gcmdiVG9Ic2woZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG5cbiAgICAgIHJldHVybiBgaHNsKCR7aGhbMF19LCAke2hoWzFdfSwgJHtoaFsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaHNsYSc6XG4gICAgICByZXR1cm4gWy4uLnJnYlRvSHNsKGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pLCBkYXRhWzNdXTtcbiAgICBjYXNlICdoc2xhY3NzJzoge1xuICAgICAgY29uc3QgaGEgPSByZ2JUb0hzbChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcblxuICAgICAgcmV0dXJuIGBoc2xhKCR7aGFbMF19LCAke2hhWzFdfSwgJHtoYVsyXX0sICR7ZGF0YVszXX0pYDtcbiAgICB9XG4gICAgY2FzZSAnaGV4JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKTtcbiAgICBjYXNlICdoZXhjc3M0JzpcbiAgICAgIHJldHVybiByZ2JUb0hleChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKSArICgnMDAnICsgcGFyc2VJbnQoKGRhdGFbM10gKiAyNTUpLnRvU3RyaW5nKCkpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIGNhc2UgJ2ludCc6XG4gICAgICByZXR1cm4gcmdiVG9JbnQoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbG9yID0gKGNvbG9yOiBzdHJpbmcgfCBBcnJheTxudW1iZXI+LCBmb3JtYXQ6IHN0cmluZyB8IG9iamVjdCkgPT4ge1xuICBpZiAoIWlzTmlsKGNvbG9yKSkge1xuICAgIGxldCBkYXRhOiBBcnJheTxudW1iZXI+IHwgdW5kZWZpbmVkID0gW107XG5cbiAgICBkYXRhID0gcGFyc2VDb2xvclRvUmdiYShjb2xvcikgfHwgKHBhcnNlQ29sb3JUb0hzbGEoY29sb3IpICYmIFsuLi5oc2xUb1JnYihkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdKSwgZGF0YVszXV0pO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGZvcm1hdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIFsncmdiJywgJ3JnYmNzcycsICdyZ2Jjc3M0JywgJ3JnYmEnLCAncmdiYWNzcycsICdoc2wnLCAnaHNsY3NzJywgJ2hzbGNzczQnLCAnaHNsYScsICdoc2xhY3NzJywgJ2hleCcsICdoZXhjc3M0JywgJ2ludCddLnJlZHVjZSgobSwgZikgPT4ge1xuICAgICAgICAgIHNldDxhbnk+KG0sIGYsIGZvcm1hdENvbG9yKGRhdGEsIGYpKTtcblxuICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICB9LCBmb3JtYXQpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm9ybWF0Q29sb3IoZGF0YSwgZm9ybWF0IGFzIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0SGVscGVyID0gKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIHNldEh1ZTogKCkgPT4ge1xuICAgICAgcmV0dXJuO1xuICAgIH0sXG4gICAgZ3JhYkNvbG9yOiAoKSA9PiBbXSxcbiAgICBmaW5kQ29sb3I6ICgpID0+IFtdLFxuICB9O1xufTtcbiJdfQ==