create-expo-stack 2.10.5-next.5b73b74 → 2.10.5-next.5eefd28

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.
Files changed (29) hide show
  1. package/README.md +50 -50
  2. package/build/cli.js +51 -21
  3. package/build/commands/create-expo-stack.js +364 -320
  4. package/build/templates/base/components/Button.tsx.ejs +3 -2
  5. package/build/templates/packages/nativewind/components/Button.tsx.ejs +5 -4
  6. package/build/templates/packages/nativewindui/components/Button.tsx.ejs +3 -2
  7. package/build/templates/packages/restyle/components/Button.tsx.ejs +3 -7
  8. package/build/templates/packages/tamagui/components/Button.tsx.ejs +5 -11
  9. package/build/templates/packages/tamagui/tamagui.config.ts.ejs +25 -24
  10. package/build/templates/packages/unistyles/components/Button.tsx.ejs +3 -8
  11. package/build/utilities/bumpVersion.js +6 -6
  12. package/build/utilities/clearNavigationPackages.js +2 -2
  13. package/build/utilities/clearStylingPackages.js +2 -2
  14. package/build/utilities/configStorage.js +88 -31
  15. package/build/utilities/configureProjectFiles.js +83 -96
  16. package/build/utilities/copyBaseAssets.js +36 -4
  17. package/build/utilities/generateProjectFiles.js +16 -16
  18. package/build/utilities/getPackageManager.js +7 -7
  19. package/build/utilities/printOutput.js +211 -156
  20. package/build/utilities/renderTitle.js +62 -22
  21. package/build/utilities/runCLI.js +393 -334
  22. package/build/utilities/runEasConfigure.js +106 -61
  23. package/build/utilities/runIgnite.js +45 -9
  24. package/build/utilities/systemCommand.js +48 -11
  25. package/build/utilities/usePackage.js +2 -2
  26. package/build/utilities/validateProjectName.js +64 -27
  27. package/package.json +1 -1
  28. package/build/types/utilities/configAnalytics.d.ts +0 -17
  29. package/build/utilities/configAnalytics.js +0 -70
@@ -8,354 +8,413 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
11
38
  Object.defineProperty(exports, "__esModule", { value: true });
12
39
  exports.runCLI = void 0;
13
- const prompts_1 = require("@clack/prompts");
14
- const constants_1 = require("../constants");
15
- const getPackageManager_1 = require("./getPackageManager");
16
- const configStorage_1 = require("./configStorage");
17
- const recommendedBunVersion = '1.0.22';
40
+ var prompts_1 = require("@clack/prompts");
41
+ var constants_1 = require("../constants");
42
+ var getPackageManager_1 = require("./getPackageManager");
43
+ var configStorage_1 = require("./configStorage");
44
+ var recommendedBunVersion = '1.0.22';
18
45
  function runCLI(toolbox, projectName) {
19
- return __awaiter(this, void 0, void 0, function* () {
20
- const { parameters: { options }, print: { info, success, warning } } = toolbox;
21
- // Set the default options
22
- const cliResults = constants_1.defaultOptions;
23
- // Project name already validated, just set cliResults
24
- cliResults.projectName = projectName;
25
- cliResults.flags.overwrite = !!options.overwrite;
26
- cliResults.flags.eas = !!options.eas;
27
- // Clear default packages
28
- cliResults.packages = [];
29
- // Check whether the user has any saved create expo stack configurations
30
- const savedConfigs = yield (0, configStorage_1.loadConfigs)();
31
- // If the user has saved configurations, ask if they would like to use them
32
- if (savedConfigs.length > 0) {
33
- const useSavedConfig = yield (0, prompts_1.confirm)({
34
- message: 'Would you like to use a saved configuration?',
35
- initialValue: false
36
- });
37
- if ((0, prompts_1.isCancel)(useSavedConfig)) {
38
- (0, prompts_1.cancel)('Cancelled... 👋');
39
- return process.exit(0);
40
- }
41
- if (useSavedConfig) {
42
- const savedConfigSelect = yield (0, prompts_1.select)({
43
- message: 'Which saved configuration would you like to use?',
44
- options: savedConfigs.map((config) => ({ value: config.name, label: config.name }))
45
- });
46
- if ((0, prompts_1.isCancel)(savedConfigSelect)) {
47
- (0, prompts_1.cancel)('Cancelled... 👋');
48
- return process.exit(0);
49
- }
50
- const selectedConfig = savedConfigs.find((config) => config.name === savedConfigSelect);
51
- if (selectedConfig) {
52
- cliResults.packages = selectedConfig.cliResults.packages;
53
- cliResults.flags = selectedConfig.cliResults.flags;
54
- success(`Using saved configuration: ${selectedConfig.name}`);
55
- return cliResults;
56
- }
57
- else {
58
- warning('Saved configuration not found, continuing with default configuration.');
59
- }
60
- }
61
- }
62
- // Ask about TypeScript
63
- const shouldUseTypescript = yield (0, prompts_1.confirm)({
64
- message: 'Would you like to use TypeScript with this project?',
65
- initialValue: true
66
- });
67
- if ((0, prompts_1.isCancel)(shouldUseTypescript)) {
68
- (0, prompts_1.cancel)('Cancelled... 👋');
69
- return process.exit(0);
70
- }
71
- if (shouldUseTypescript) {
72
- success('Good call, now using TypeScript! 🚀');
73
- }
74
- else {
75
- success(`Wrong answer, we're gonna use Typescript.`);
76
- }
77
- const defaultPackageManagerVersion = (0, getPackageManager_1.getDefaultPackageManagerVersion)();
78
- if (cliResults.flags.packageManager) {
79
- if (options.bun || options.pnpm || options.npm || options.yarn) {
80
- cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
81
- }
82
- else {
83
- const shouldUseDefaultPackageManager = yield (0, prompts_1.confirm)({
84
- message: `\nWe've detected ${cliResults.flags.packageManager} ${defaultPackageManagerVersion ? `v${defaultPackageManagerVersion}` : ''} as your preferred package manager.\nWould you like to continue using it?`,
85
- initialValue: true
86
- });
87
- if ((0, prompts_1.isCancel)(shouldUseDefaultPackageManager)) {
88
- (0, prompts_1.cancel)('Cancelled... 👋');
89
- return process.exit(0);
90
- }
91
- if (!shouldUseDefaultPackageManager) {
92
- const packageManagerSelect = yield (0, prompts_1.select)({
93
- message: 'Gotcha! Which package manager would you like to use?',
46
+ return __awaiter(this, void 0, void 0, function () {
47
+ var options, _a, info, success, warning, cliResults, savedConfigs, useSavedConfig, savedConfigSelect_1, selectedConfig, shouldUseTypescript, defaultPackageManagerVersion, shouldUseDefaultPackageManager, packageManagerSelect, packageManagerSelect, navigationSelect, navigationType, shouldContinue, shouldContinue, stylingSelect, selectedComponents, authenticationSelect, easEnabled, shouldSaveConfig, name;
48
+ return __generator(this, function (_b) {
49
+ switch (_b.label) {
50
+ case 0:
51
+ options = toolbox.parameters.options, _a = toolbox.print, info = _a.info, success = _a.success, warning = _a.warning;
52
+ cliResults = constants_1.defaultOptions;
53
+ // Project name already validated, just set cliResults
54
+ cliResults.projectName = projectName;
55
+ cliResults.flags.overwrite = !!options.overwrite;
56
+ cliResults.flags.eas = !!options.eas;
57
+ // Clear default packages
58
+ cliResults.packages = [];
59
+ return [4 /*yield*/, (0, configStorage_1.loadConfigs)()];
60
+ case 1:
61
+ savedConfigs = _b.sent();
62
+ if (!(savedConfigs.length > 0)) return [3 /*break*/, 4];
63
+ return [4 /*yield*/, (0, prompts_1.confirm)({
64
+ message: 'Would you like to use a saved configuration?',
65
+ initialValue: false
66
+ })];
67
+ case 2:
68
+ useSavedConfig = _b.sent();
69
+ if ((0, prompts_1.isCancel)(useSavedConfig)) {
70
+ (0, prompts_1.cancel)('Cancelled... 👋');
71
+ return [2 /*return*/, process.exit(0)];
72
+ }
73
+ if (!useSavedConfig) return [3 /*break*/, 4];
74
+ return [4 /*yield*/, (0, prompts_1.select)({
75
+ message: 'Which saved configuration would you like to use?',
76
+ options: savedConfigs.map(function (config) { return ({ value: config.name, label: config.name }); })
77
+ })];
78
+ case 3:
79
+ savedConfigSelect_1 = _b.sent();
80
+ if ((0, prompts_1.isCancel)(savedConfigSelect_1)) {
81
+ (0, prompts_1.cancel)('Cancelled... 👋');
82
+ return [2 /*return*/, process.exit(0)];
83
+ }
84
+ selectedConfig = savedConfigs.find(function (config) { return config.name === savedConfigSelect_1; });
85
+ if (selectedConfig) {
86
+ cliResults.packages = selectedConfig.cliResults.packages;
87
+ cliResults.flags = selectedConfig.cliResults.flags;
88
+ success("Using saved configuration: ".concat(selectedConfig.name));
89
+ return [2 /*return*/, cliResults];
90
+ }
91
+ else {
92
+ warning('Saved configuration not found, continuing with default configuration.');
93
+ }
94
+ _b.label = 4;
95
+ case 4: return [4 /*yield*/, (0, prompts_1.confirm)({
96
+ message: 'Would you like to use TypeScript with this project?',
97
+ initialValue: true
98
+ })];
99
+ case 5:
100
+ shouldUseTypescript = _b.sent();
101
+ if ((0, prompts_1.isCancel)(shouldUseTypescript)) {
102
+ (0, prompts_1.cancel)('Cancelled... 👋');
103
+ return [2 /*return*/, process.exit(0)];
104
+ }
105
+ if (shouldUseTypescript) {
106
+ success('Good call, now using TypeScript! 🚀');
107
+ }
108
+ else {
109
+ success("Wrong answer, we're gonna use Typescript.");
110
+ }
111
+ defaultPackageManagerVersion = (0, getPackageManager_1.getDefaultPackageManagerVersion)();
112
+ if (!cliResults.flags.packageManager) return [3 /*break*/, 10];
113
+ if (!(options.bun || options.pnpm || options.npm || options.yarn)) return [3 /*break*/, 6];
114
+ cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
115
+ return [3 /*break*/, 9];
116
+ case 6: return [4 /*yield*/, (0, prompts_1.confirm)({
117
+ message: "\nWe've detected ".concat(cliResults.flags.packageManager, " ").concat(defaultPackageManagerVersion ? "v".concat(defaultPackageManagerVersion) : '', " as your preferred package manager.\nWould you like to continue using it?"),
118
+ initialValue: true
119
+ })];
120
+ case 7:
121
+ shouldUseDefaultPackageManager = _b.sent();
122
+ if ((0, prompts_1.isCancel)(shouldUseDefaultPackageManager)) {
123
+ (0, prompts_1.cancel)('Cancelled... 👋');
124
+ return [2 /*return*/, process.exit(0)];
125
+ }
126
+ if (!!shouldUseDefaultPackageManager) return [3 /*break*/, 9];
127
+ return [4 /*yield*/, (0, prompts_1.select)({
128
+ message: 'Gotcha! Which package manager would you like to use?',
129
+ options: [
130
+ { value: 'npm', label: 'npm' },
131
+ { value: 'yarn', label: 'yarn' },
132
+ { value: 'pnpm', label: 'pnpm' },
133
+ { value: 'bun', label: 'bun' }
134
+ ],
135
+ initialValue: 'npm'
136
+ })];
137
+ case 8:
138
+ packageManagerSelect = _b.sent();
139
+ if ((0, prompts_1.isCancel)(packageManagerSelect)) {
140
+ (0, prompts_1.cancel)('Cancelled... 👋');
141
+ return [2 /*return*/, process.exit(0)];
142
+ }
143
+ cliResults.flags.packageManager = packageManagerSelect;
144
+ _b.label = 9;
145
+ case 9: return [3 /*break*/, 13];
146
+ case 10:
147
+ if (!(options.bun || options.pnpm || options.npm || options.yarn)) return [3 /*break*/, 11];
148
+ cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
149
+ return [3 /*break*/, 13];
150
+ case 11: return [4 /*yield*/, (0, prompts_1.select)({
151
+ message: 'Which package manager would you like to use?',
94
152
  options: [
95
153
  { value: 'npm', label: 'npm' },
96
154
  { value: 'yarn', label: 'yarn' },
97
155
  { value: 'pnpm', label: 'pnpm' },
98
156
  { value: 'bun', label: 'bun' }
99
- ],
100
- initialValue: 'npm'
101
- });
157
+ ]
158
+ })];
159
+ case 12:
160
+ packageManagerSelect = _b.sent();
102
161
  if ((0, prompts_1.isCancel)(packageManagerSelect)) {
103
162
  (0, prompts_1.cancel)('Cancelled... 👋');
104
- return process.exit(0);
163
+ return [2 /*return*/, process.exit(0)];
105
164
  }
106
165
  cliResults.flags.packageManager = packageManagerSelect;
107
- }
108
- }
109
- }
110
- else {
111
- if (options.bun || options.pnpm || options.npm || options.yarn) {
112
- cliResults.flags.packageManager = options.bun ? 'bun' : options.pnpm ? 'pnpm' : options.npm ? 'npm' : 'yarn';
113
- }
114
- else {
115
- const packageManagerSelect = yield (0, prompts_1.select)({
116
- message: 'Which package manager would you like to use?',
117
- options: [
118
- { value: 'npm', label: 'npm' },
119
- { value: 'yarn', label: 'yarn' },
120
- { value: 'pnpm', label: 'pnpm' },
121
- { value: 'bun', label: 'bun' }
122
- ]
123
- });
124
- if ((0, prompts_1.isCancel)(packageManagerSelect)) {
125
- (0, prompts_1.cancel)('Cancelled... 👋');
126
- return process.exit(0);
127
- }
128
- cliResults.flags.packageManager = packageManagerSelect;
129
- }
130
- }
131
- const navigationSelect = yield (0, prompts_1.select)({
132
- message: 'What would you like to use for Navigation?',
133
- options: [
134
- { value: 'react-navigation', label: 'React Navigation' },
135
- { value: 'expo-router', label: 'Expo Router' },
136
- { value: undefined, label: 'None' }
137
- ],
138
- initialValue: 'expo-router'
139
- });
140
- if ((0, prompts_1.isCancel)(navigationSelect)) {
141
- (0, prompts_1.cancel)('Cancelled... 👋');
142
- return process.exit(0);
143
- }
144
- if (navigationSelect) {
145
- const navigationType = yield (0, prompts_1.select)({
146
- message: 'What type of navigation would you like to use?',
147
- options: [
148
- { value: 'stack', label: 'Stack' },
149
- { value: 'tabs', label: 'Tabs' },
150
- { value: 'drawer + tabs', label: 'Drawer + Tabs' }
151
- ]
152
- });
153
- if ((0, prompts_1.isCancel)(navigationType)) {
154
- (0, prompts_1.cancel)('Cancelled... 👋');
155
- return process.exit(0);
156
- }
157
- cliResults.packages.push({
158
- name: navigationSelect,
159
- type: 'navigation',
160
- options: {
161
- type: navigationType
162
- }
163
- });
164
- // If the user is using a version of bun that is anything but version 1.0.22, communicate a message
165
- if (cliResults.flags.packageManager === 'bun' &&
166
- defaultPackageManagerVersion &&
167
- defaultPackageManagerVersion !== recommendedBunVersion) {
168
- warning('⚠️' + ' ' + ` We've detected you're using Bun v${defaultPackageManagerVersion}.`);
169
- info('');
170
- warning(`Some packages may not work correctly if you continue. We recommend using Bun v${recommendedBunVersion} until peerDependencies are properly resolved with bun install.`);
171
- warning(`For more information, visit https://github.com/oven-sh/bun/issues/4946`);
172
- info('');
173
- warning(`To switch to Bun v${recommendedBunVersion}, run:`);
174
- info('');
175
- warning(`\tcurl -fsSL https://bun.sh/install | bash -s "bun-v${recommendedBunVersion}"`);
176
- info('');
177
- warning(`or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).`);
178
- info('');
179
- const shouldContinue = yield (0, prompts_1.confirm)({
180
- message: `Would you like to continue without switching to Bun v${recommendedBunVersion}?`,
181
- initialValue: false
182
- });
183
- if ((0, prompts_1.isCancel)(shouldContinue)) {
184
- (0, prompts_1.cancel)('Cancelled... 👋');
185
- return process.exit(0);
186
- }
187
- success(`Great, we'll use ${navigationSelect}!`);
188
- }
189
- else if (cliResults.flags.packageManager === 'bun' && !defaultPackageManagerVersion) {
190
- warning('⚠️' + ' ' + ` We've detected you're using Bun but we are unable to determine which version you are using.`);
191
- info('');
192
- warning(`We recommend using Bun v${recommendedBunVersion} until peerDependencies are properly resolved with bun install. If you continue with a version that is not v${recommendedBunVersion}, some packages may not work correctly.`);
193
- warning(`For more information, visit https://github.com/oven-sh/bun/issues/4946`);
194
- info('');
195
- warning(`To check your version of Bun, run:`);
196
- info('');
197
- warning(`\tbun -version`);
198
- info('');
199
- warning(`To switch to Bun v${recommendedBunVersion}, run:`);
200
- info('');
201
- warning(`\tcurl -fsSL https://bun.sh/install | bash -s "bun-v${recommendedBunVersion}"`);
202
- info('');
203
- warning(`or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).`);
204
- info('');
205
- const shouldContinue = yield (0, prompts_1.confirm)({
206
- message: `Would you like to continue with your current version of Bun?`,
207
- initialValue: false
208
- });
209
- if ((0, prompts_1.isCancel)(shouldContinue)) {
210
- (0, prompts_1.cancel)('Cancelled... 👋');
211
- return process.exit(0);
212
- }
213
- success(`Great, we'll use ${navigationSelect}!`);
214
- }
215
- }
216
- else {
217
- success(`No problem, skipping navigation for now.`);
218
- }
219
- const stylingSelect = yield (0, prompts_1.select)({
220
- message: 'What would you like to use for styling?',
221
- options: navigationSelect === 'expo-router'
222
- ? [
223
- { value: 'nativewindui', label: 'NativeWindUI' },
224
- { value: 'nativewind', label: 'NativeWind' },
225
- { value: 'restyle', label: 'Restyle' },
226
- { value: 'stylesheet', label: 'StyleSheet' },
227
- { value: 'tamagui', label: 'Tamagui (experimental)' },
228
- { value: 'unistyles', label: 'Unistyles' }
229
- ]
230
- : [
231
- { value: 'nativewind', label: 'NativeWind' },
232
- { value: 'restyle', label: 'Restyle' },
233
- { value: 'stylesheet', label: 'StyleSheet' },
234
- { value: 'tamagui', label: 'Tamagui (experimental)' },
235
- { value: 'unistyles', label: 'Unistyles' }
236
- ],
237
- initialValue: navigationSelect === 'expo-router' ? 'nativewindui' : 'nativewind'
238
- });
239
- if ((0, prompts_1.isCancel)(stylingSelect)) {
240
- (0, prompts_1.cancel)('Cancelled... 👋');
241
- return process.exit(0);
242
- }
243
- if (stylingSelect === 'nativewindui') {
244
- let selectedComponents = [];
245
- selectedComponents = (yield (0, prompts_1.multiselect)({
246
- message: 'Which components would you like to explore?',
247
- options: [
248
- { value: 'action-sheet', label: 'Action Sheet' },
249
- { value: 'activity-indicator', label: 'Activity Indicator' },
250
- { value: 'activity-view', label: 'Activity View' },
251
- { value: 'alert', label: 'Alert' },
252
- { value: 'avatar', label: 'Avatar' },
253
- { value: 'bottom-sheet', label: 'Bottom Sheet' },
254
- { value: 'context-menu', label: 'Context Menu' },
255
- { value: 'date-picker', label: 'Date Picker' },
256
- { value: 'dropdown-menu', label: 'Dropdown Menu' },
257
- { value: 'picker', label: 'Picker' },
258
- { value: 'progress-indicator', label: 'Progress Indicator' },
259
- { value: 'ratings-indicator', label: 'Ratings Indicator' },
260
- { value: 'segmented-control', label: 'Segmented Control' },
261
- { value: 'selectable-text', label: 'Selectable Text' },
262
- { value: 'slider', label: 'Slider' },
263
- { value: 'text', label: 'Text' },
264
- { value: 'toggle', label: 'Toggle' }
265
- ],
266
- required: false,
267
- initialValues: [
268
- 'action-sheet',
269
- 'activity-indicator',
270
- 'activity-view',
271
- 'alert',
272
- 'avatar',
273
- 'bottom-sheet',
274
- 'context-menu',
275
- 'date-picker',
276
- 'dropdown-menu',
277
- 'picker',
278
- 'progress-indicator',
279
- 'ratings-indicator',
280
- 'segmented-control',
281
- 'selectable-text',
282
- 'slider',
283
- 'text',
284
- 'toggle'
285
- ]
286
- }));
287
- if ((0, prompts_1.isCancel)(selectedComponents)) {
288
- (0, prompts_1.cancel)('Cancelled... 👋');
289
- return process.exit(0);
166
+ _b.label = 13;
167
+ case 13: return [4 /*yield*/, (0, prompts_1.select)({
168
+ message: 'What would you like to use for Navigation?',
169
+ options: [
170
+ { value: 'react-navigation', label: 'React Navigation' },
171
+ { value: 'expo-router', label: 'Expo Router' },
172
+ { value: undefined, label: 'None' }
173
+ ],
174
+ initialValue: 'expo-router'
175
+ })];
176
+ case 14:
177
+ navigationSelect = _b.sent();
178
+ if ((0, prompts_1.isCancel)(navigationSelect)) {
179
+ (0, prompts_1.cancel)('Cancelled... 👋');
180
+ return [2 /*return*/, process.exit(0)];
181
+ }
182
+ if (!navigationSelect) return [3 /*break*/, 20];
183
+ return [4 /*yield*/, (0, prompts_1.select)({
184
+ message: 'What type of navigation would you like to use?',
185
+ options: [
186
+ { value: 'stack', label: 'Stack' },
187
+ { value: 'tabs', label: 'Tabs' },
188
+ { value: 'drawer + tabs', label: 'Drawer + Tabs' }
189
+ ]
190
+ })];
191
+ case 15:
192
+ navigationType = _b.sent();
193
+ if ((0, prompts_1.isCancel)(navigationType)) {
194
+ (0, prompts_1.cancel)('Cancelled... 👋');
195
+ return [2 /*return*/, process.exit(0)];
196
+ }
197
+ cliResults.packages.push({
198
+ name: navigationSelect,
199
+ type: 'navigation',
200
+ options: {
201
+ type: navigationType
202
+ }
203
+ });
204
+ if (!(cliResults.flags.packageManager === 'bun' &&
205
+ defaultPackageManagerVersion &&
206
+ defaultPackageManagerVersion !== recommendedBunVersion)) return [3 /*break*/, 17];
207
+ warning('⚠️' + ' ' + " We've detected you're using Bun v".concat(defaultPackageManagerVersion, "."));
208
+ info('');
209
+ warning("Some packages may not work correctly if you continue. We recommend using Bun v".concat(recommendedBunVersion, " until peerDependencies are properly resolved with bun install."));
210
+ warning("For more information, visit https://github.com/oven-sh/bun/issues/4946");
211
+ info('');
212
+ warning("To switch to Bun v".concat(recommendedBunVersion, ", run:"));
213
+ info('');
214
+ warning("\tcurl -fsSL https://bun.sh/install | bash -s \"bun-v".concat(recommendedBunVersion, "\""));
215
+ info('');
216
+ warning("or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).");
217
+ info('');
218
+ return [4 /*yield*/, (0, prompts_1.confirm)({
219
+ message: "Would you like to continue without switching to Bun v".concat(recommendedBunVersion, "?"),
220
+ initialValue: false
221
+ })];
222
+ case 16:
223
+ shouldContinue = _b.sent();
224
+ if ((0, prompts_1.isCancel)(shouldContinue)) {
225
+ (0, prompts_1.cancel)('Cancelled... 👋');
226
+ return [2 /*return*/, process.exit(0)];
227
+ }
228
+ success("Great, we'll use ".concat(navigationSelect, "!"));
229
+ return [3 /*break*/, 19];
230
+ case 17:
231
+ if (!(cliResults.flags.packageManager === 'bun' && !defaultPackageManagerVersion)) return [3 /*break*/, 19];
232
+ warning('⚠️' + ' ' + " We've detected you're using Bun but we are unable to determine which version you are using.");
233
+ info('');
234
+ warning("We recommend using Bun v".concat(recommendedBunVersion, " until peerDependencies are properly resolved with bun install. If you continue with a version that is not v").concat(recommendedBunVersion, ", some packages may not work correctly."));
235
+ warning("For more information, visit https://github.com/oven-sh/bun/issues/4946");
236
+ info('');
237
+ warning("To check your version of Bun, run:");
238
+ info('');
239
+ warning("\tbun -version");
240
+ info('');
241
+ warning("To switch to Bun v".concat(recommendedBunVersion, ", run:"));
242
+ info('');
243
+ warning("\tcurl -fsSL https://bun.sh/install | bash -s \"bun-v".concat(recommendedBunVersion, "\""));
244
+ info('');
245
+ warning("or visit bun.sh/docs/installation for other installation methods (e.g. via Homebrew, npm, etc).");
246
+ info('');
247
+ return [4 /*yield*/, (0, prompts_1.confirm)({
248
+ message: "Would you like to continue with your current version of Bun?",
249
+ initialValue: false
250
+ })];
251
+ case 18:
252
+ shouldContinue = _b.sent();
253
+ if ((0, prompts_1.isCancel)(shouldContinue)) {
254
+ (0, prompts_1.cancel)('Cancelled... 👋');
255
+ return [2 /*return*/, process.exit(0)];
256
+ }
257
+ success("Great, we'll use ".concat(navigationSelect, "!"));
258
+ _b.label = 19;
259
+ case 19: return [3 /*break*/, 21];
260
+ case 20:
261
+ success("No problem, skipping navigation for now.");
262
+ _b.label = 21;
263
+ case 21: return [4 /*yield*/, (0, prompts_1.select)({
264
+ message: 'What would you like to use for styling?',
265
+ options: navigationSelect === 'expo-router'
266
+ ? [
267
+ { value: 'nativewindui', label: 'NativeWindUI' },
268
+ { value: 'nativewind', label: 'NativeWind' },
269
+ { value: 'restyle', label: 'Restyle' },
270
+ { value: 'stylesheet', label: 'StyleSheet' },
271
+ { value: 'tamagui', label: 'Tamagui (experimental)' },
272
+ { value: 'unistyles', label: 'Unistyles' }
273
+ ]
274
+ : [
275
+ { value: 'nativewind', label: 'NativeWind' },
276
+ { value: 'restyle', label: 'Restyle' },
277
+ { value: 'stylesheet', label: 'StyleSheet' },
278
+ { value: 'tamagui', label: 'Tamagui (experimental)' },
279
+ { value: 'unistyles', label: 'Unistyles' }
280
+ ],
281
+ initialValue: navigationSelect === 'expo-router' ? 'nativewindui' : 'nativewind'
282
+ })];
283
+ case 22:
284
+ stylingSelect = _b.sent();
285
+ if ((0, prompts_1.isCancel)(stylingSelect)) {
286
+ (0, prompts_1.cancel)('Cancelled... 👋');
287
+ return [2 /*return*/, process.exit(0)];
288
+ }
289
+ if (!(stylingSelect === 'nativewindui')) return [3 /*break*/, 24];
290
+ selectedComponents = [];
291
+ return [4 /*yield*/, (0, prompts_1.multiselect)({
292
+ message: 'Which components would you like to explore?',
293
+ options: [
294
+ { value: 'action-sheet', label: 'Action Sheet' },
295
+ { value: 'activity-indicator', label: 'Activity Indicator' },
296
+ { value: 'activity-view', label: 'Activity View' },
297
+ { value: 'alert', label: 'Alert' },
298
+ { value: 'avatar', label: 'Avatar' },
299
+ { value: 'bottom-sheet', label: 'Bottom Sheet' },
300
+ { value: 'context-menu', label: 'Context Menu' },
301
+ { value: 'date-picker', label: 'Date Picker' },
302
+ { value: 'dropdown-menu', label: 'Dropdown Menu' },
303
+ { value: 'picker', label: 'Picker' },
304
+ { value: 'progress-indicator', label: 'Progress Indicator' },
305
+ { value: 'ratings-indicator', label: 'Ratings Indicator' },
306
+ { value: 'segmented-control', label: 'Segmented Control' },
307
+ { value: 'selectable-text', label: 'Selectable Text' },
308
+ { value: 'slider', label: 'Slider' },
309
+ { value: 'text', label: 'Text' },
310
+ { value: 'toggle', label: 'Toggle' }
311
+ ],
312
+ required: false,
313
+ initialValues: [
314
+ 'action-sheet',
315
+ 'activity-indicator',
316
+ 'activity-view',
317
+ 'alert',
318
+ 'avatar',
319
+ 'bottom-sheet',
320
+ 'context-menu',
321
+ 'date-picker',
322
+ 'dropdown-menu',
323
+ 'picker',
324
+ 'progress-indicator',
325
+ 'ratings-indicator',
326
+ 'segmented-control',
327
+ 'selectable-text',
328
+ 'slider',
329
+ 'text',
330
+ 'toggle'
331
+ ]
332
+ })];
333
+ case 23:
334
+ selectedComponents = (_b.sent());
335
+ if ((0, prompts_1.isCancel)(selectedComponents)) {
336
+ (0, prompts_1.cancel)('Cancelled... 👋');
337
+ return [2 /*return*/, process.exit(0)];
338
+ }
339
+ cliResults.packages.push({
340
+ name: 'nativewindui',
341
+ type: 'styling',
342
+ options: {
343
+ selectedComponents: selectedComponents
344
+ }
345
+ });
346
+ success("You'll be styling with ease using NativeWindUI!");
347
+ return [3 /*break*/, 25];
348
+ case 24:
349
+ cliResults.packages.push({ name: stylingSelect, type: 'styling' });
350
+ success("You'll be styling with ease using ".concat(stylingSelect.toString().charAt(0).toUpperCase() + stylingSelect.toString().slice(1), "!"));
351
+ _b.label = 25;
352
+ case 25: return [4 /*yield*/, (0, prompts_1.select)({
353
+ message: 'What would you like to use for authentication?',
354
+ options: [
355
+ { value: undefined, label: 'None' },
356
+ { value: 'supabase', label: 'Supabase' },
357
+ { value: 'firebase', label: 'Firebase' }
358
+ ]
359
+ })];
360
+ case 26:
361
+ authenticationSelect = _b.sent();
362
+ if ((0, prompts_1.isCancel)(authenticationSelect)) {
363
+ (0, prompts_1.cancel)('Cancelled... 👋');
364
+ return [2 /*return*/, process.exit(0)];
365
+ }
366
+ if (authenticationSelect) {
367
+ cliResults.packages.push({ name: authenticationSelect, type: 'authentication' });
368
+ }
369
+ else {
370
+ success("No problem, skipping authentication for now.");
371
+ }
372
+ return [4 /*yield*/, (0, prompts_1.confirm)({
373
+ message: "Do you want to setup EAS",
374
+ initialValue: false
375
+ })];
376
+ case 27:
377
+ easEnabled = _b.sent();
378
+ if ((0, prompts_1.isCancel)(easEnabled)) {
379
+ (0, prompts_1.cancel)('Cancelled... 👋');
380
+ return [2 /*return*/, process.exit(0)];
381
+ }
382
+ if (easEnabled) {
383
+ cliResults.flags.eas = true;
384
+ success("We'll setup EAS for you.");
385
+ }
386
+ else {
387
+ success("No problem, skipping eas for now.");
388
+ }
389
+ return [4 /*yield*/, (0, prompts_1.confirm)({
390
+ message: 'Would you like to save this configuration for future use?',
391
+ initialValue: false
392
+ })];
393
+ case 28:
394
+ shouldSaveConfig = _b.sent();
395
+ if ((0, prompts_1.isCancel)(shouldSaveConfig)) {
396
+ (0, prompts_1.cancel)('Cancelled... 👋');
397
+ return [2 /*return*/, process.exit(0)];
398
+ }
399
+ if (!shouldSaveConfig) return [3 /*break*/, 31];
400
+ return [4 /*yield*/, (0, prompts_1.text)({
401
+ message: 'What do you want to name this configuration?',
402
+ placeholder: 'Default'
403
+ })];
404
+ case 29:
405
+ name = _b.sent();
406
+ if ((0, prompts_1.isCancel)(name)) {
407
+ (0, prompts_1.cancel)('Cancelled... 👋');
408
+ return [2 /*return*/, process.exit(0)];
409
+ }
410
+ return [4 /*yield*/, (0, configStorage_1.saveConfig)({ name: name, cliResults: cliResults })];
411
+ case 30:
412
+ _b.sent();
413
+ _b.label = 31;
414
+ case 31: return [2 /*return*/, cliResults];
290
415
  }
291
- cliResults.packages.push({
292
- name: 'nativewindui',
293
- type: 'styling',
294
- options: {
295
- selectedComponents: selectedComponents
296
- }
297
- });
298
- success(`You'll be styling with ease using NativeWindUI!`);
299
- }
300
- else {
301
- cliResults.packages.push({ name: stylingSelect, type: 'styling' });
302
- success(`You'll be styling with ease using ${stylingSelect.toString().charAt(0).toUpperCase() + stylingSelect.toString().slice(1)}!`);
303
- }
304
- const authenticationSelect = yield (0, prompts_1.select)({
305
- message: 'What would you like to use for authentication?',
306
- options: [
307
- { value: undefined, label: 'None' },
308
- { value: 'supabase', label: 'Supabase' },
309
- { value: 'firebase', label: 'Firebase' }
310
- ]
311
- });
312
- if ((0, prompts_1.isCancel)(authenticationSelect)) {
313
- (0, prompts_1.cancel)('Cancelled... 👋');
314
- return process.exit(0);
315
- }
316
- if (authenticationSelect) {
317
- cliResults.packages.push({ name: authenticationSelect, type: 'authentication' });
318
- }
319
- else {
320
- success(`No problem, skipping authentication for now.`);
321
- }
322
- const easEnabled = yield (0, prompts_1.confirm)({
323
- message: `Do you want to setup EAS`,
324
- initialValue: false
325
416
  });
326
- if ((0, prompts_1.isCancel)(easEnabled)) {
327
- (0, prompts_1.cancel)('Cancelled... 👋');
328
- return process.exit(0);
329
- }
330
- if (easEnabled) {
331
- cliResults.flags.eas = true;
332
- success(`We'll setup EAS for you.`);
333
- }
334
- else {
335
- success(`No problem, skipping eas for now.`);
336
- }
337
- // Offer user ability to save configuration
338
- const shouldSaveConfig = yield (0, prompts_1.confirm)({
339
- message: 'Would you like to save this configuration for future use?',
340
- initialValue: false
341
- });
342
- if ((0, prompts_1.isCancel)(shouldSaveConfig)) {
343
- (0, prompts_1.cancel)('Cancelled... 👋');
344
- return process.exit(0);
345
- }
346
- if (shouldSaveConfig) {
347
- const name = yield (0, prompts_1.text)({
348
- message: 'What do you want to name this configuration?',
349
- placeholder: 'Default'
350
- });
351
- if ((0, prompts_1.isCancel)(name)) {
352
- (0, prompts_1.cancel)('Cancelled... 👋');
353
- return process.exit(0);
354
- }
355
- yield (0, configStorage_1.saveConfig)({ name, cliResults });
356
- }
357
- return cliResults;
358
417
  });
359
418
  }
360
419
  exports.runCLI = runCLI;
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuQ0xJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5DTEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsNENBQXNGO0FBRXRGLDRDQUE4QztBQVU5QywyREFBc0U7QUFDdEUsbURBQTBEO0FBRTFELE1BQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBRXZDLFNBQXNCLE1BQU0sQ0FBQyxPQUFnQixFQUFFLFdBQW1COztRQUNoRSxNQUFNLEVBQ0osVUFBVSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQ3ZCLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQ2xDLEdBQUcsT0FBTyxDQUFDO1FBRVosMEJBQTBCO1FBQzFCLE1BQU0sVUFBVSxHQUFHLDBCQUFjLENBQUM7UUFFbEMsc0RBQXNEO1FBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ3JDLFVBQVUsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ2pELFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBRXJDLHlCQUF5QjtRQUN6QixVQUFVLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUV6Qix3RUFBd0U7UUFDeEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLDJCQUFXLEdBQUUsQ0FBQztRQUV6QywyRUFBMkU7UUFDM0UsSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBQSxpQkFBTyxFQUFDO2dCQUNuQyxPQUFPLEVBQUUsOENBQThDO2dCQUN2RCxZQUFZLEVBQUUsS0FBSzthQUNwQixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUM3QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFFRCxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixNQUFNLGlCQUFpQixHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDO29CQUNyQyxPQUFPLEVBQUUsa0RBQWtEO29CQUMzRCxPQUFPLEVBQUUsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztpQkFDcEYsQ0FBQyxDQUFDO2dCQUVILElBQUksSUFBQSxrQkFBUSxFQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztvQkFDaEMsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7b0JBQzFCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekIsQ0FBQztnQkFFRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLGlCQUFpQixDQUFDLENBQUM7Z0JBRXhGLElBQUksY0FBYyxFQUFFLENBQUM7b0JBQ25CLFVBQVUsQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7b0JBQ3pELFVBQVUsQ0FBQyxLQUFLLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7b0JBQ25ELE9BQU8sQ0FBQyw4QkFBOEIsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7b0JBRTdELE9BQU8sVUFBVSxDQUFDO2dCQUNwQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7Z0JBQ25GLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixNQUFNLG1CQUFtQixHQUFHLE1BQU0sSUFBQSxpQkFBTyxFQUFDO1lBQ3hDLE9BQU8sRUFBRSxxREFBcUQ7WUFDOUQsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFBLGtCQUFRLEVBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDO1lBQ2xDLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQ3hCLE9BQU8sQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO1FBQ2pELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELE1BQU0sNEJBQTRCLEdBQUcsSUFBQSxtREFBK0IsR0FBRSxDQUFDO1FBQ3ZFLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0QsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQy9HLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLDhCQUE4QixHQUFHLE1BQU0sSUFBQSxpQkFBTyxFQUFDO29CQUNuRCxPQUFPLEVBQUUsb0JBQW9CLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxJQUMxRCw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsSUFBSSw0QkFBNEIsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUN0RSwyRUFBMkU7b0JBQzNFLFlBQVksRUFBRSxJQUFJO2lCQUNuQixDQUFDLENBQUM7Z0JBRUgsSUFBSSxJQUFBLGtCQUFRLEVBQUMsOEJBQThCLENBQUMsRUFBRSxDQUFDO29CQUM3QyxJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELElBQUksQ0FBQyw4QkFBOEIsRUFBRSxDQUFDO29CQUNwQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDO3dCQUN4QyxPQUFPLEVBQUUsc0RBQXNEO3dCQUMvRCxPQUFPLEVBQUU7NEJBQ1AsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7NEJBQzlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFOzRCQUNoQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTs0QkFDaEMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7eUJBQzJCO3dCQUMzRCxZQUFZLEVBQUUsS0FBdUI7cUJBQ3RDLENBQUMsQ0FBQztvQkFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7d0JBQ25DLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3pCLENBQUM7b0JBRUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUM7Z0JBQ3pELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDL0QsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQy9HLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLG9CQUFvQixHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDO29CQUN4QyxPQUFPLEVBQUUsOENBQThDO29CQUN2RCxPQUFPLEVBQUU7d0JBQ1AsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7d0JBQzlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO3dCQUNoQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTt3QkFDaEMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7cUJBQy9CO2lCQUNGLENBQUMsQ0FBQztnQkFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7b0JBQ25DLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7Z0JBRUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsb0JBQXNDLENBQUM7WUFDM0UsQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDO1lBQ3BDLE9BQU8sRUFBRSw0Q0FBNEM7WUFDckQsT0FBTyxFQUFFO2dCQUNQLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRTtnQkFDeEQsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBQzlDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2FBQ3BDO1lBQ0QsWUFBWSxFQUFFLGFBQWE7U0FDNUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFBLGtCQUFRLEVBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQy9CLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBQSxnQkFBTSxFQUFDO2dCQUNsQyxPQUFPLEVBQUUsZ0RBQWdEO2dCQUN6RCxPQUFPLEVBQUU7b0JBQ1AsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7b0JBQ2xDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO29CQUNoQyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRTtpQkFDbkQ7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxjQUFjLENBQUMsRUFBRSxDQUFDO2dCQUM3QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFFRCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDdkIsSUFBSSxFQUFFLGdCQUFvQztnQkFDMUMsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsY0FBaUM7aUJBQ3hDO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsbUdBQW1HO1lBQ25HLElBQ0UsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEtBQUssS0FBSztnQkFDekMsNEJBQTRCO2dCQUM1Qiw0QkFBNEIsS0FBSyxxQkFBcUIsRUFDdEQsQ0FBQztnQkFDRCxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxxQ0FBcUMsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDO2dCQUMzRixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1QsT0FBTyxDQUNMLGlGQUFpRixxQkFBcUIsaUVBQWlFLENBQ3hLLENBQUM7Z0JBQ0YsT0FBTyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDVCxPQUFPLENBQUMscUJBQXFCLHFCQUFxQixRQUFRLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNULE9BQU8sQ0FBQyx1REFBdUQscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1QsT0FBTyxDQUFDLGlHQUFpRyxDQUFDLENBQUM7Z0JBQzNHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFVCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQztvQkFDbkMsT0FBTyxFQUFFLHdEQUF3RCxxQkFBcUIsR0FBRztvQkFDekYsWUFBWSxFQUFFLEtBQUs7aUJBQ3BCLENBQUMsQ0FBQztnQkFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUM3QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELE9BQU8sQ0FBQyxvQkFBb0IsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELENBQUM7aUJBQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsS0FBSyxLQUFLLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO2dCQUN0RixPQUFPLENBQ0wsSUFBSSxHQUFHLEdBQUcsR0FBRyw4RkFBOEYsQ0FDNUcsQ0FBQztnQkFDRixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1QsT0FBTyxDQUNMLDJCQUEyQixxQkFBcUIsK0dBQStHLHFCQUFxQix5Q0FBeUMsQ0FDOU4sQ0FBQztnQkFDRixPQUFPLENBQUMsd0VBQXdFLENBQUMsQ0FBQztnQkFDbEYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNULE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1QsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDVCxPQUFPLENBQUMscUJBQXFCLHFCQUFxQixRQUFRLENBQUMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNULE9BQU8sQ0FBQyx1REFBdUQscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1QsT0FBTyxDQUFDLGlHQUFpRyxDQUFDLENBQUM7Z0JBQzNHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFFVCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUEsaUJBQU8sRUFBQztvQkFDbkMsT0FBTyxFQUFFLDhEQUE4RDtvQkFDdkUsWUFBWSxFQUFFLEtBQUs7aUJBQ3BCLENBQUMsQ0FBQztnQkFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxjQUFjLENBQUMsRUFBRSxDQUFDO29CQUM3QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixDQUFDO2dCQUNELE9BQU8sQ0FBQyxvQkFBb0IsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsZ0JBQU0sRUFBQztZQUNqQyxPQUFPLEVBQUUseUNBQXlDO1lBQ2xELE9BQU8sRUFDTCxnQkFBZ0IsS0FBSyxhQUFhO2dCQUNoQyxDQUFDLENBQUM7b0JBQ0UsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7b0JBQ2hELEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO29CQUM1QyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtvQkFDdEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7b0JBQzVDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7b0JBQ3JELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2lCQUMzQztnQkFDSCxDQUFDLENBQUM7b0JBQ0UsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7b0JBQzVDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO29CQUN0QyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtvQkFDNUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRTtvQkFDckQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7aUJBQzNDO1lBQ1AsWUFBWSxFQUFFLGdCQUFnQixLQUFLLGFBQWEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxZQUFZO1NBQ2pGLENBQUMsQ0FBQztRQUVILElBQUksSUFBQSxrQkFBUSxFQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLGFBQWEsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUNyQyxJQUFJLGtCQUFrQixHQUF5QixFQUFFLENBQUM7WUFDbEQsa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLElBQUEscUJBQVcsRUFBQztnQkFDdEMsT0FBTyxFQUFFLDZDQUE2QztnQkFDdEQsT0FBTyxFQUFFO29CQUNQLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO29CQUNoRCxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7b0JBQzVELEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO29CQUNsRCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtvQkFDbEMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7b0JBQ3BDLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO29CQUNoRCxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRTtvQkFDaEQsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUU7b0JBQzlDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFO29CQUNsRCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtvQkFDcEMsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFO29CQUM1RCxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUU7b0JBQzFELEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtvQkFDMUQsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFO29CQUN0RCxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtvQkFDcEMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7b0JBQ2hDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2lCQUNyQztnQkFDRCxRQUFRLEVBQUUsS0FBSztnQkFDZixhQUFhLEVBQUU7b0JBQ2IsY0FBYztvQkFDZCxvQkFBb0I7b0JBQ3BCLGVBQWU7b0JBQ2YsT0FBTztvQkFDUCxRQUFRO29CQUNSLGNBQWM7b0JBQ2QsY0FBYztvQkFDZCxhQUFhO29CQUNiLGVBQWU7b0JBQ2YsUUFBUTtvQkFDUixvQkFBb0I7b0JBQ3BCLG1CQUFtQjtvQkFDbkIsbUJBQW1CO29CQUNuQixpQkFBaUI7b0JBQ2pCLFFBQVE7b0JBQ1IsTUFBTTtvQkFDTixRQUFRO2lCQUNUO2FBQ0YsQ0FBQyxDQUF5QixDQUFDO1lBRTVCLElBQUksSUFBQSxrQkFBUSxFQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztnQkFDakMsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzFCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBRUQsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksRUFBRSxjQUErQjtnQkFDckMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsT0FBTyxFQUFFO29CQUNQLGtCQUFrQixFQUFFLGtCQUEwQztpQkFDL0Q7YUFDRixDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsaURBQWlELENBQUMsQ0FBQztRQUM3RCxDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQThCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDcEYsT0FBTyxDQUNMLHFDQUNFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3JGLEdBQUcsQ0FDSixDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxJQUFBLGdCQUFNLEVBQUM7WUFDeEMsT0FBTyxFQUFFLGdEQUFnRDtZQUN6RCxPQUFPLEVBQUU7Z0JBQ1AsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0JBQ25DLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFO2dCQUN4QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTthQUN6QztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksSUFBQSxrQkFBUSxFQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUNELElBQUksb0JBQW9CLEVBQUUsQ0FBQztZQUN6QixVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxvQkFBNEMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxpQkFBTyxFQUFDO1lBQy9CLE9BQU8sRUFBRSwwQkFBMEI7WUFDbkMsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFBLGtCQUFRLEVBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN6QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUMxQixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7WUFDNUIsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFBLGlCQUFPLEVBQUM7WUFDckMsT0FBTyxFQUFFLDJEQUEyRDtZQUNwRSxZQUFZLEVBQUUsS0FBSztTQUNwQixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUEsa0JBQVEsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDL0IsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDMUIsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLGNBQUksRUFBQztnQkFDdEIsT0FBTyxFQUFFLDhDQUE4QztnQkFDdkQsV0FBVyxFQUFFLFNBQVM7YUFDdkIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFBLGtCQUFRLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzFCLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDO1lBRUQsTUFBTSxJQUFBLDBCQUFVLEVBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUFBO0FBellELHdCQXlZQyJ9
420
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuQ0xJLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxpdGllcy9ydW5DTEkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMENBQXNGO0FBRXRGLDBDQUE4QztBQVU5Qyx5REFBc0U7QUFDdEUsaURBQTBEO0FBRTFELElBQU0scUJBQXFCLEdBQUcsUUFBUSxDQUFDO0FBRXZDLFNBQXNCLE1BQU0sQ0FBQyxPQUFnQixFQUFFLFdBQW1COzs7Ozs7b0JBRWhELE9BQU8sR0FFbkIsT0FBTyxtQkFGWSxFQUNyQixLQUNFLE9BQU8sTUFEd0IsRUFBeEIsSUFBSSxVQUFBLEVBQUUsT0FBTyxhQUFBLEVBQUUsT0FBTyxhQUFBLENBQ3JCO29CQUdOLFVBQVUsR0FBRywwQkFBYyxDQUFDO29CQUVsQyxzREFBc0Q7b0JBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO29CQUNyQyxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQztvQkFDakQsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7b0JBRXJDLHlCQUF5QjtvQkFDekIsVUFBVSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBR0oscUJBQU0sSUFBQSwyQkFBVyxHQUFFLEVBQUE7O29CQUFsQyxZQUFZLEdBQUcsU0FBbUI7eUJBR3BDLENBQUEsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUEsRUFBdkIsd0JBQXVCO29CQUNGLHFCQUFNLElBQUEsaUJBQU8sRUFBQzs0QkFDbkMsT0FBTyxFQUFFLDhDQUE4Qzs0QkFDdkQsWUFBWSxFQUFFLEtBQUs7eUJBQ3BCLENBQUMsRUFBQTs7b0JBSEksY0FBYyxHQUFHLFNBR3JCO29CQUVGLElBQUksSUFBQSxrQkFBUSxFQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7d0JBQzdCLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixzQkFBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO29CQUN6QixDQUFDO3lCQUVHLGNBQWMsRUFBZCx3QkFBYztvQkFDVSxxQkFBTSxJQUFBLGdCQUFNLEVBQUM7NEJBQ3JDLE9BQU8sRUFBRSxrREFBa0Q7NEJBQzNELE9BQU8sRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQUMsTUFBTSxJQUFLLE9BQUEsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBNUMsQ0FBNEMsQ0FBQzt5QkFDcEYsQ0FBQyxFQUFBOztvQkFISSxzQkFBb0IsU0FHeEI7b0JBRUYsSUFBSSxJQUFBLGtCQUFRLEVBQUMsbUJBQWlCLENBQUMsRUFBRSxDQUFDO3dCQUNoQyxJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDMUIsc0JBQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztvQkFDekIsQ0FBQztvQkFFSyxjQUFjLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFDLE1BQU0sSUFBSyxPQUFBLE1BQU0sQ0FBQyxJQUFJLEtBQUssbUJBQWlCLEVBQWpDLENBQWlDLENBQUMsQ0FBQztvQkFFeEYsSUFBSSxjQUFjLEVBQUUsQ0FBQzt3QkFDbkIsVUFBVSxDQUFDLFFBQVEsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzt3QkFDekQsVUFBVSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQzt3QkFDbkQsT0FBTyxDQUFDLHFDQUE4QixjQUFjLENBQUMsSUFBSSxDQUFFLENBQUMsQ0FBQzt3QkFFN0Qsc0JBQU8sVUFBVSxFQUFDO29CQUNwQixDQUFDO3lCQUFNLENBQUM7d0JBQ04sT0FBTyxDQUFDLHVFQUF1RSxDQUFDLENBQUM7b0JBQ25GLENBQUM7O3dCQUt1QixxQkFBTSxJQUFBLGlCQUFPLEVBQUM7d0JBQ3hDLE9BQU8sRUFBRSxxREFBcUQ7d0JBQzlELFlBQVksRUFBRSxJQUFJO3FCQUNuQixDQUFDLEVBQUE7O29CQUhJLG1CQUFtQixHQUFHLFNBRzFCO29CQUVGLElBQUksSUFBQSxrQkFBUSxFQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQzt3QkFDbEMsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7d0JBQzFCLHNCQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUM7b0JBQ3pCLENBQUM7b0JBRUQsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO3dCQUN4QixPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQztvQkFDakQsQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO29CQUN2RCxDQUFDO29CQUVLLDRCQUE0QixHQUFHLElBQUEsbURBQStCLEdBQUUsQ0FBQzt5QkFDbkUsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQS9CLHlCQUErQjt5QkFDN0IsQ0FBQSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFBLEVBQTFELHdCQUEwRDtvQkFDNUQsVUFBVSxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDOzt3QkFFdEUscUJBQU0sSUFBQSxpQkFBTyxFQUFDO3dCQUNuRCxPQUFPLEVBQUUsMkJBQW9CLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxjQUMxRCw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsV0FBSSw0QkFBNEIsQ0FBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLDhFQUNHO3dCQUMzRSxZQUFZLEVBQUUsSUFBSTtxQkFDbkIsQ0FBQyxFQUFBOztvQkFMSSw4QkFBOEIsR0FBRyxTQUtyQztvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyw4QkFBOEIsQ0FBQyxFQUFFLENBQUM7d0JBQzdDLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixzQkFBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO29CQUN6QixDQUFDO3lCQUNHLENBQUMsOEJBQThCLEVBQS9CLHdCQUErQjtvQkFDSixxQkFBTSxJQUFBLGdCQUFNLEVBQUM7NEJBQ3hDLE9BQU8sRUFBRSxzREFBc0Q7NEJBQy9ELE9BQU8sRUFBRTtnQ0FDUCxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtnQ0FDOUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0NBQ2hDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO2dDQUNoQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTs2QkFDMkI7NEJBQzNELFlBQVksRUFBRSxLQUF1Qjt5QkFDdEMsQ0FBQyxFQUFBOztvQkFUSSxvQkFBb0IsR0FBRyxTQVMzQjtvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7d0JBQ25DLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixzQkFBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO29CQUN6QixDQUFDO29CQUVELFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLG9CQUFvQixDQUFDOzs7O3lCQUl2RCxDQUFBLE9BQU8sQ0FBQyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUEsRUFBMUQseUJBQTBEO29CQUM1RCxVQUFVLENBQUMsS0FBSyxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7O3lCQUVoRixxQkFBTSxJQUFBLGdCQUFNLEVBQUM7d0JBQ3hDLE9BQU8sRUFBRSw4Q0FBOEM7d0JBQ3ZELE9BQU8sRUFBRTs0QkFDUCxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTs0QkFDOUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7NEJBQ2hDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFOzRCQUNoQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTt5QkFDL0I7cUJBQ0YsQ0FBQyxFQUFBOztvQkFSSSxvQkFBb0IsR0FBRyxTQVEzQjtvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7d0JBQ25DLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixzQkFBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO29CQUN6QixDQUFDO29CQUVELFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLG9CQUFzQyxDQUFDOzt5QkFJcEQscUJBQU0sSUFBQSxnQkFBTSxFQUFDO3dCQUNwQyxPQUFPLEVBQUUsNENBQTRDO3dCQUNyRCxPQUFPLEVBQUU7NEJBQ1AsRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFOzRCQUN4RCxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTs0QkFDOUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7eUJBQ3BDO3dCQUNELFlBQVksRUFBRSxhQUFhO3FCQUM1QixDQUFDLEVBQUE7O29CQVJJLGdCQUFnQixHQUFHLFNBUXZCO29CQUVGLElBQUksSUFBQSxrQkFBUSxFQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQzt3QkFDL0IsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7d0JBQzFCLHNCQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUM7b0JBQ3pCLENBQUM7eUJBRUcsZ0JBQWdCLEVBQWhCLHlCQUFnQjtvQkFDSyxxQkFBTSxJQUFBLGdCQUFNLEVBQUM7NEJBQ2xDLE9BQU8sRUFBRSxnREFBZ0Q7NEJBQ3pELE9BQU8sRUFBRTtnQ0FDUCxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQ0FDbEMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7Z0NBQ2hDLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFOzZCQUNuRDt5QkFDRixDQUFDLEVBQUE7O29CQVBJLGNBQWMsR0FBRyxTQU9yQjtvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyxjQUFjLENBQUMsRUFBRSxDQUFDO3dCQUM3QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDMUIsc0JBQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztvQkFDekIsQ0FBQztvQkFFRCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDdkIsSUFBSSxFQUFFLGdCQUFvQzt3QkFDMUMsSUFBSSxFQUFFLFlBQVk7d0JBQ2xCLE9BQU8sRUFBRTs0QkFDUCxJQUFJLEVBQUUsY0FBaUM7eUJBQ3hDO3FCQUNGLENBQUMsQ0FBQzt5QkFJRCxDQUFBLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxLQUFLLEtBQUs7d0JBQ3pDLDRCQUE0Qjt3QkFDNUIsNEJBQTRCLEtBQUsscUJBQXFCLENBQUEsRUFGdEQseUJBRXNEO29CQUV0RCxPQUFPLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyw0Q0FBcUMsNEJBQTRCLE1BQUcsQ0FBQyxDQUFDO29CQUMzRixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1QsT0FBTyxDQUNMLHdGQUFpRixxQkFBcUIsb0VBQWlFLENBQ3hLLENBQUM7b0JBQ0YsT0FBTyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7b0JBQ2xGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDVCxPQUFPLENBQUMsNEJBQXFCLHFCQUFxQixXQUFRLENBQUMsQ0FBQztvQkFDNUQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNULE9BQU8sQ0FBQywrREFBdUQscUJBQXFCLE9BQUcsQ0FBQyxDQUFDO29CQUN6RixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1QsT0FBTyxDQUFDLGlHQUFpRyxDQUFDLENBQUM7b0JBQzNHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFFYyxxQkFBTSxJQUFBLGlCQUFPLEVBQUM7NEJBQ25DLE9BQU8sRUFBRSwrREFBd0QscUJBQXFCLE1BQUc7NEJBQ3pGLFlBQVksRUFBRSxLQUFLO3lCQUNwQixDQUFDLEVBQUE7O29CQUhJLGNBQWMsR0FBRyxTQUdyQjtvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyxjQUFjLENBQUMsRUFBRSxDQUFDO3dCQUM3QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDMUIsc0JBQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztvQkFDekIsQ0FBQztvQkFDRCxPQUFPLENBQUMsMkJBQW9CLGdCQUFnQixNQUFHLENBQUMsQ0FBQzs7O3lCQUN4QyxDQUFBLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxLQUFLLEtBQUssSUFBSSxDQUFDLDRCQUE0QixDQUFBLEVBQTFFLHlCQUEwRTtvQkFDbkYsT0FBTyxDQUNMLElBQUksR0FBRyxHQUFHLEdBQUcsOEZBQThGLENBQzVHLENBQUM7b0JBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNULE9BQU8sQ0FDTCxrQ0FBMkIscUJBQXFCLHlIQUErRyxxQkFBcUIsNENBQXlDLENBQzlOLENBQUM7b0JBQ0YsT0FBTyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7b0JBQ2xGLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDVCxPQUFPLENBQUMsb0NBQW9DLENBQUMsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNULE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUMxQixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1QsT0FBTyxDQUFDLDRCQUFxQixxQkFBcUIsV0FBUSxDQUFDLENBQUM7b0JBQzVELElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDVCxPQUFPLENBQUMsK0RBQXVELHFCQUFxQixPQUFHLENBQUMsQ0FBQztvQkFDekYsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNULE9BQU8sQ0FBQyxpR0FBaUcsQ0FBQyxDQUFDO29CQUMzRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBRWMscUJBQU0sSUFBQSxpQkFBTyxFQUFDOzRCQUNuQyxPQUFPLEVBQUUsOERBQThEOzRCQUN2RSxZQUFZLEVBQUUsS0FBSzt5QkFDcEIsQ0FBQyxFQUFBOztvQkFISSxjQUFjLEdBQUcsU0FHckI7b0JBRUYsSUFBSSxJQUFBLGtCQUFRLEVBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0IsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7d0JBQzFCLHNCQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUM7b0JBQ3pCLENBQUM7b0JBQ0QsT0FBTyxDQUFDLDJCQUFvQixnQkFBZ0IsTUFBRyxDQUFDLENBQUM7Ozs7b0JBR25ELE9BQU8sQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDOzt5QkFHaEMscUJBQU0sSUFBQSxnQkFBTSxFQUFDO3dCQUNqQyxPQUFPLEVBQUUseUNBQXlDO3dCQUNsRCxPQUFPLEVBQ0wsZ0JBQWdCLEtBQUssYUFBYTs0QkFDaEMsQ0FBQyxDQUFDO2dDQUNFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO2dDQUNoRCxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRTtnQ0FDNUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7Z0NBQ3RDLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dDQUM1QyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHdCQUF3QixFQUFFO2dDQUNyRCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTs2QkFDM0M7NEJBQ0gsQ0FBQyxDQUFDO2dDQUNFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO2dDQUM1QyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtnQ0FDdEMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUU7Z0NBQzVDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsd0JBQXdCLEVBQUU7Z0NBQ3JELEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFOzZCQUMzQzt3QkFDUCxZQUFZLEVBQUUsZ0JBQWdCLEtBQUssYUFBYSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFlBQVk7cUJBQ2pGLENBQUMsRUFBQTs7b0JBcEJJLGFBQWEsR0FBRyxTQW9CcEI7b0JBRUYsSUFBSSxJQUFBLGtCQUFRLEVBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQzt3QkFDNUIsSUFBQSxnQkFBTSxFQUFDLGlCQUFpQixDQUFDLENBQUM7d0JBQzFCLHNCQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUM7b0JBQ3pCLENBQUM7eUJBRUcsQ0FBQSxhQUFhLEtBQUssY0FBYyxDQUFBLEVBQWhDLHlCQUFnQztvQkFDOUIsa0JBQWtCLEdBQXlCLEVBQUUsQ0FBQztvQkFDNUIscUJBQU0sSUFBQSxxQkFBVyxFQUFDOzRCQUN0QyxPQUFPLEVBQUUsNkNBQTZDOzRCQUN0RCxPQUFPLEVBQUU7Z0NBQ1AsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7Z0NBQ2hELEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRTtnQ0FDNUQsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7Z0NBQ2xELEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2dDQUNsQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtnQ0FDcEMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxjQUFjLEVBQUU7Z0NBQ2hELEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFO2dDQUNoRCxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRTtnQ0FDOUMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUU7Z0NBQ2xELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dDQUNwQyxFQUFFLEtBQUssRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUU7Z0NBQzVELEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRTtnQ0FDMUQsRUFBRSxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFO2dDQUMxRCxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7Z0NBQ3RELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO2dDQUNwQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtnQ0FDaEMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7NkJBQ3JDOzRCQUNELFFBQVEsRUFBRSxLQUFLOzRCQUNmLGFBQWEsRUFBRTtnQ0FDYixjQUFjO2dDQUNkLG9CQUFvQjtnQ0FDcEIsZUFBZTtnQ0FDZixPQUFPO2dDQUNQLFFBQVE7Z0NBQ1IsY0FBYztnQ0FDZCxjQUFjO2dDQUNkLGFBQWE7Z0NBQ2IsZUFBZTtnQ0FDZixRQUFRO2dDQUNSLG9CQUFvQjtnQ0FDcEIsbUJBQW1CO2dDQUNuQixtQkFBbUI7Z0NBQ25CLGlCQUFpQjtnQ0FDakIsUUFBUTtnQ0FDUixNQUFNO2dDQUNOLFFBQVE7NkJBQ1Q7eUJBQ0YsQ0FBQyxFQUFBOztvQkF6Q0Ysa0JBQWtCLEdBQUcsQ0FBQyxTQXlDcEIsQ0FBeUIsQ0FBQztvQkFFNUIsSUFBSSxJQUFBLGtCQUFRLEVBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDO3dCQUNqQyxJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDMUIsc0JBQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztvQkFDekIsQ0FBQztvQkFFRCxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDdkIsSUFBSSxFQUFFLGNBQStCO3dCQUNyQyxJQUFJLEVBQUUsU0FBUzt3QkFDZixPQUFPLEVBQUU7NEJBQ1Asa0JBQWtCLEVBQUUsa0JBQTBDO3lCQUMvRDtxQkFDRixDQUFDLENBQUM7b0JBQ0gsT0FBTyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7OztvQkFFM0QsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBOEIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztvQkFDcEYsT0FBTyxDQUNMLDRDQUNFLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFDbkYsQ0FDSixDQUFDOzt5QkFHeUIscUJBQU0sSUFBQSxnQkFBTSxFQUFDO3dCQUN4QyxPQUFPLEVBQUUsZ0RBQWdEO3dCQUN6RCxPQUFPLEVBQUU7NEJBQ1AsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7NEJBQ25DLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFOzRCQUN4QyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTt5QkFDekM7cUJBQ0YsQ0FBQyxFQUFBOztvQkFQSSxvQkFBb0IsR0FBRyxTQU8zQjtvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyxvQkFBb0IsQ0FBQyxFQUFFLENBQUM7d0JBQ25DLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixzQkFBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO29CQUN6QixDQUFDO29CQUNELElBQUksb0JBQW9CLEVBQUUsQ0FBQzt3QkFDekIsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsb0JBQTRDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztvQkFDM0csQ0FBQzt5QkFBTSxDQUFDO3dCQUNOLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO29CQUMxRCxDQUFDO29CQUVrQixxQkFBTSxJQUFBLGlCQUFPLEVBQUM7NEJBQy9CLE9BQU8sRUFBRSwwQkFBMEI7NEJBQ25DLFlBQVksRUFBRSxLQUFLO3lCQUNwQixDQUFDLEVBQUE7O29CQUhJLFVBQVUsR0FBRyxTQUdqQjtvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyxVQUFVLENBQUMsRUFBRSxDQUFDO3dCQUN6QixJQUFBLGdCQUFNLEVBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDMUIsc0JBQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQztvQkFDekIsQ0FBQztvQkFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNmLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQzt3QkFDNUIsT0FBTyxDQUFDLDBCQUEwQixDQUFDLENBQUM7b0JBQ3RDLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsbUNBQW1DLENBQUMsQ0FBQztvQkFDL0MsQ0FBQztvQkFHd0IscUJBQU0sSUFBQSxpQkFBTyxFQUFDOzRCQUNyQyxPQUFPLEVBQUUsMkRBQTJEOzRCQUNwRSxZQUFZLEVBQUUsS0FBSzt5QkFDcEIsQ0FBQyxFQUFBOztvQkFISSxnQkFBZ0IsR0FBRyxTQUd2QjtvQkFFRixJQUFJLElBQUEsa0JBQVEsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7d0JBQy9CLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixzQkFBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO29CQUN6QixDQUFDO3lCQUVHLGdCQUFnQixFQUFoQix5QkFBZ0I7b0JBQ0wscUJBQU0sSUFBQSxjQUFJLEVBQUM7NEJBQ3RCLE9BQU8sRUFBRSw4Q0FBOEM7NEJBQ3ZELFdBQVcsRUFBRSxTQUFTO3lCQUN2QixDQUFDLEVBQUE7O29CQUhJLElBQUksR0FBRyxTQUdYO29CQUVGLElBQUksSUFBQSxrQkFBUSxFQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7d0JBQ25CLElBQUEsZ0JBQU0sRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUMxQixzQkFBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDO29CQUN6QixDQUFDO29CQUVELHFCQUFNLElBQUEsMEJBQVUsRUFBQyxFQUFFLElBQUksTUFBQSxFQUFFLFVBQVUsWUFBQSxFQUFFLENBQUMsRUFBQTs7b0JBQXRDLFNBQXNDLENBQUM7O3lCQUd6QyxzQkFBTyxVQUFVLEVBQUM7Ozs7Q0FDbkI7QUF6WUQsd0JBeVlDIn0=