From ce6cbdb187871c5f8498c7596e8b4e4b902d2638 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 7 Aug 2025 22:28:10 -0500 Subject: [PATCH 01/31] feat(dart_frog_cli): support for Dart workspaces --- .../addDockerfile}} | 1 + .../lib/src/disable_workspace_resolution.dart | 20 ++++++++++++++ .../lib/src/uses_workspace_resolution.dart | 26 +++++++++++++++++++ .../dart_frog_prod_server/hooks/pre_gen.dart | 23 +++++++++++----- .../dart_frog_prod_server/hooks/pubspec.yaml | 1 + 5 files changed, 65 insertions(+), 6 deletions(-) create mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart create mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart diff --git a/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} b/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} index 419aae58a..003367138 100644 --- a/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} +++ b/bricks/dart_frog_prod_server/__brick__/build/{{#addDockerfile}}Dockerfile{{/addDockerfile}} @@ -19,6 +19,7 @@ COPY ./pubspec_overrides.yaml ./pubspec_overrides.yaml {{/hasExternalDependencies}} # Resolve app dependencies. COPY pubspec.* ./ +COPY pubspec_overrides.yaml* ./ RUN dart pub get # Copy app source code and AOT compile it. diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart new file mode 100644 index 000000000..d749dcc16 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -0,0 +1,20 @@ +import 'dart:io'; +import 'package:mason/mason.dart'; +import 'package:path/path.dart' as path; + +/// Opts out of dart workspaces until we can generate per package lockfiles. +/// https://github.com/dart-lang/pub/issues/4594 +void disableWorkspaceResolution( + HookContext context, { + required String workingDirectory, + required void Function(int exitCode) exit, +}) { + try { + File( + path.join(workingDirectory, 'pubspec_overrides.yaml'), + ).writeAsStringSync('resolution: null', mode: FileMode.append); + } on Exception catch (e) { + context.logger.err('$e'); + exit(1); + } +} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart new file mode 100644 index 000000000..db8aee704 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart @@ -0,0 +1,26 @@ +import 'dart:io'; +import 'package:mason/mason.dart'; +import 'package:path/path.dart' as path; +import 'package:pubspec_parse/pubspec_parse.dart'; + +/// Determines whether the project in the provided [workingDirectory] +/// is configured to use `resolution: workspace`. +bool usesWorkspaceResolution( + HookContext context, { + required String workingDirectory, + required void Function(int exitCode) exit, +}) { + final pubspecFile = File(path.join(workingDirectory, 'pubspec.yaml')); + if (!pubspecFile.existsSync()) return false; + + final Pubspec pubspec; + try { + pubspec = Pubspec.parse(pubspecFile.readAsStringSync()); + } on Exception catch (e) { + context.logger.err('$e'); + exit(1); + return false; + } + + return pubspec.resolution == 'workspace'; +} diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index 9d257d741..2b3410b51 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -3,6 +3,8 @@ import 'dart:io' as io; import 'package:dart_frog_gen/dart_frog_gen.dart'; import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; +import 'package:dart_frog_prod_server_hooks/src/disable_workspace_resolution.dart'; +import 'package:dart_frog_prod_server_hooks/src/uses_workspace_resolution.dart'; import 'package:io/io.dart' as io_expanded; import 'package:mason/mason.dart' show HookContext, defaultForeground, lightCyan; @@ -23,6 +25,19 @@ Future preGen( Future Function(String from, String to) copyPath = io_expanded.copyPath, }) async { final projectDirectory = directory ?? io.Directory.current; + final usesWorkspaces = usesWorkspaceResolution( + context, + workingDirectory: projectDirectory.path, + exit: exit, + ); + + if (usesWorkspaces) { + disableWorkspaceResolution( + context, + workingDirectory: projectDirectory.path, + exit: exit, + ); + } // We need to make sure that the pubspec.lock file is up to date await dartPubGet( @@ -62,9 +77,7 @@ Future preGen( '''Route conflict detected. ${lightCyan.wrap(originalFilePath)} and ${lightCyan.wrap(conflictingFilePath)} both resolve to ${lightCyan.wrap(conflictingEndpoint)}.''', ); }, - onViolationEnd: () { - exit(1); - }, + onViolationEnd: () => exit(1), ); reportRogueRoutes( @@ -74,9 +87,7 @@ Future preGen( '''Rogue route detected.${defaultForeground.wrap(' ')}Rename ${lightCyan.wrap(filePath)} to ${lightCyan.wrap(idealPath)}.''', ); }, - onViolationEnd: () { - exit(1); - }, + onViolationEnd: () => exit(1), ); final customDockerFile = io.File( diff --git a/bricks/dart_frog_prod_server/hooks/pubspec.yaml b/bricks/dart_frog_prod_server/hooks/pubspec.yaml index 2e4c17ae8..d2db4f35b 100644 --- a/bricks/dart_frog_prod_server/hooks/pubspec.yaml +++ b/bricks/dart_frog_prod_server/hooks/pubspec.yaml @@ -10,6 +10,7 @@ dependencies: io: ^1.0.3 mason: ^0.1.0 path: ^1.8.1 + pubspec_parse: ^1.5.0 yaml: ^3.1.2 dev_dependencies: From 0695bdb0f83a5e64d7bb09fa95eeab9db7f43abe Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 7 Aug 2025 22:30:31 -0500 Subject: [PATCH 02/31] chore: update barrel --- .../hooks/lib/dart_frog_prod_server_hooks.dart | 2 ++ bricks/dart_frog_prod_server/hooks/pre_gen.dart | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart index 8a36f3de3..3fe46487e 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart @@ -1,6 +1,8 @@ export 'src/create_bundle.dart'; export 'src/create_external_packages_folder.dart'; export 'src/dart_pub_get.dart'; +export 'src/disable_workspace_resolution.dart'; export 'src/exit_overrides.dart'; export 'src/get_internal_path_dependencies.dart'; export 'src/get_pubspec_lock.dart'; +export 'src/uses_workspace_resolution.dart'; diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index 2b3410b51..d60564769 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -3,8 +3,6 @@ import 'dart:io' as io; import 'package:dart_frog_gen/dart_frog_gen.dart'; import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; -import 'package:dart_frog_prod_server_hooks/src/disable_workspace_resolution.dart'; -import 'package:dart_frog_prod_server_hooks/src/uses_workspace_resolution.dart'; import 'package:io/io.dart' as io_expanded; import 'package:mason/mason.dart' show HookContext, defaultForeground, lightCyan; From c1978a33b1d147fe4290bcb4deaabf561453b064 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Aug 2025 17:41:32 -0500 Subject: [PATCH 03/31] fix: use workspace lockfile in production build --- .../lib/dart_frog_prod_server_hooks.dart | 3 +- .../lib/src/copy_workspace_pubspec_lock.dart | 68 ++++ .../src/create_external_packages_folder.dart | 43 ++- .../lib/src/disable_workspace_resolution.dart | 6 +- .../src/get_internal_path_dependencies.dart | 19 +- .../hooks/lib/src/get_pubspec.dart | 20 ++ .../hooks/lib/src/get_pubspec_lock.dart | 19 -- .../lib/src/pubspec_lock/pubspec_lock.dart | 232 ------------- .../dart_frog_prod_server/hooks/pre_gen.dart | 39 +-- .../src/pubspec_lock/pubspec_lock_test.dart | 318 ------------------ .../dart_frog_prod_server_bundle.dart | 158 ++++++++- 11 files changed, 282 insertions(+), 643 deletions(-) create mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart create mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart delete mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart delete mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart delete mode 100644 bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart diff --git a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart index 3fe46487e..f4382304f 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart @@ -1,8 +1,9 @@ +export 'src/copy_workspace_pubspec_lock.dart'; export 'src/create_bundle.dart'; export 'src/create_external_packages_folder.dart'; export 'src/dart_pub_get.dart'; export 'src/disable_workspace_resolution.dart'; export 'src/exit_overrides.dart'; export 'src/get_internal_path_dependencies.dart'; -export 'src/get_pubspec_lock.dart'; +export 'src/get_pubspec.dart'; export 'src/uses_workspace_resolution.dart'; diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart new file mode 100644 index 000000000..9d33da8b7 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart @@ -0,0 +1,68 @@ +import 'dart:io'; +import 'package:mason/mason.dart'; +import 'package:path/path.dart' as path; +import 'package:pubspec_parse/pubspec_parse.dart'; + +/// Opts out of dart workspaces until we can generate per package lockfiles. +void copyWorkspacePubspecLock( + HookContext context, { + required String buildDirectory, + required String workingDirectory, + required void Function(int exitCode) exit, +}) { + final workspaceRoot = _getWorkspaceRoot(); + if (workspaceRoot == null) { + context.logger.err( + 'Unable to determine workspace root for $workingDirectory', + ); + return exit(1); + } + final pubspecLockFile = File(path.join(workspaceRoot.path, 'pubspec.lock')); + if (!pubspecLockFile.existsSync()) return; + + try { + pubspecLockFile.copySync(path.join(buildDirectory, 'pubspec.lock')); + } on Exception catch (error) { + context.logger.err('$error'); + return exit(1); + } +} + +/// Returns the root directory of the nearest Flutter project. +Directory? _getWorkspaceRoot() { + final file = _findNearestAncestor( + where: (path) => _getWorkspaceRootPubspecYaml(cwd: Directory(path)), + ); + if (file == null || !file.existsSync()) return null; + return Directory(path.dirname(file.path)); +} + +/// The workspace root `pubspec.yaml` file for this project. +File? _getWorkspaceRootPubspecYaml({required Directory cwd}) { + try { + final pubspecYamlFile = File(path.join(cwd.path, 'pubspec.yaml')); + if (!pubspecYamlFile.existsSync()) return null; + final pubspec = Pubspec.parse(pubspecYamlFile.readAsStringSync()); + if (pubspec.workspace?.isEmpty ?? true) return null; + return pubspecYamlFile; + } on Exception { + return null; + } +} + +/// Finds nearest ancestor file +/// relative to the [cwd] that satisfies [where]. +File? _findNearestAncestor({ + required File? Function(String path) where, + Directory? cwd, +}) { + Directory? prev; + var dir = cwd ?? Directory.current; + while (prev?.path != dir.path) { + final file = where(dir.path); + if (file?.existsSync() ?? false) return file; + prev = dir; + dir = dir.parent; + } + return null; +} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart index 21221adde..4ec3b0139 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart @@ -3,6 +3,7 @@ import 'dart:io'; import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:io/io.dart' as io; import 'package:path/path.dart' as path; +import 'package:pubspec_parse/pubspec_parse.dart'; /// Signature of [io.copyPath]. typedef CopyPath = Future Function(String from, String to); @@ -13,34 +14,27 @@ Future> createExternalPackagesFolder({ CopyPath copyPath = io.copyPath, }) async { final pathResolver = path.context; - final pubspecLock = await getPubspecLock( + final pubspec = await getPubspec( projectDirectory.path, pathContext: path.context, ); - final externalPathDependencies = pubspecLock.packages + final externalPathDependencies = pubspec.dependencies.values .map( (dependency) { - final pathDescription = dependency.pathDescription; - if (pathDescription == null) { - return null; - } - - final isExternal = !pathResolver.isWithin('', pathDescription.path); - if (!isExternal) return null; + if (dependency is! PathDependency) return null; + if (pathResolver.isWithin('', dependency.path)) return null; return _ExternalPathDependency( - name: dependency.name, - path: path.join(projectDirectory.path, pathDescription.path), + name: path.basenameWithoutExtension(dependency.path), + path: path.join(projectDirectory.path, dependency.path), ); }, ) .whereType<_ExternalPathDependency>() .toList(); - if (externalPathDependencies.isEmpty) { - return []; - } + if (externalPathDependencies.isEmpty) return []; final packagesDirectory = Directory( pathResolver.join( @@ -68,17 +62,20 @@ Future> createExternalPackagesFolder({ buildDirectory.path, 'pubspec_overrides.yaml', ), - ).writeAsString(''' + ).writeAsString( + ''' dependency_overrides: ${copiedExternalPathDependencies.map( - (dependency) { - final name = dependency.name; - final path = - pathResolver.relative(dependency.path, from: buildDirectory.path); - return ' $name:\n path: $path'; - }, - ).join('\n')} -'''); + (dependency) { + final name = dependency.name; + final path = + pathResolver.relative(dependency.path, from: buildDirectory.path); + return ' $name:\n path: $path'; + }, + ).join('\n')} +''', + mode: FileMode.append, + ); return copiedExternalPathDependencies .map((dependency) => dependency.path) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index d749dcc16..4830c8d5c 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -6,13 +6,13 @@ import 'package:path/path.dart' as path; /// https://github.com/dart-lang/pub/issues/4594 void disableWorkspaceResolution( HookContext context, { - required String workingDirectory, + required String buildDirectory, required void Function(int exitCode) exit, }) { try { File( - path.join(workingDirectory, 'pubspec_overrides.yaml'), - ).writeAsStringSync('resolution: null', mode: FileMode.append); + path.join(buildDirectory, 'pubspec_overrides.yaml'), + ).writeAsStringSync('resolution: null\n', mode: FileMode.append); } on Exception catch (e) { context.logger.err('$e'); exit(1); diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart b/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart index 70fc0ae08..10a19307f 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart @@ -2,22 +2,17 @@ import 'dart:io' as io; import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:path/path.dart' as path; +import 'package:pubspec_parse/pubspec_parse.dart'; Future> getInternalPathDependencies(io.Directory directory) async { - final pubspecLock = await getPubspecLock(directory.path); + final pubspec = await getPubspec(directory.path); - final internalPathDependencies = pubspecLock.packages.where( + final internalPathDependencies = pubspec.dependencies.values.where( (dependency) { - final pathDescription = dependency.pathDescription; - if (pathDescription == null) { - return false; - } - - return path.isWithin('', pathDescription.path); + if (dependency is! PathDependency) return false; + return path.isWithin('', dependency.path); }, - ); + ).cast(); - return internalPathDependencies - .map((dependency) => dependency.pathDescription!.path) - .toList(); + return internalPathDependencies.map((dependency) => dependency.path).toList(); } diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart b/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart new file mode 100644 index 000000000..8b996dd3b --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart @@ -0,0 +1,20 @@ +import 'dart:io'; + +import 'package:path/path.dart' as path; +import 'package:pubspec_parse/pubspec_parse.dart'; + +Future getPubspec( + String workingDirectory, { + path.Context? pathContext, +}) async { + const pubspecYaml = 'pubspec.yaml'; + final pathResolver = pathContext ?? path.context; + final pubspecFile = File( + workingDirectory.isEmpty + ? pubspecYaml + : pathResolver.join(workingDirectory, pubspecYaml), + ); + + final content = await pubspecFile.readAsString(); + return Pubspec.parse(content); +} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart deleted file mode 100644 index 25d2d821b..000000000 --- a/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'dart:io'; - -import 'package:dart_frog_prod_server_hooks/src/pubspec_lock/pubspec_lock.dart'; -import 'package:path/path.dart' as path; - -Future getPubspecLock( - String workingDirectory, { - path.Context? pathContext, -}) async { - final pathResolver = pathContext ?? path.context; - final pubspecLockFile = File( - workingDirectory.isEmpty - ? 'pubspec.lock' - : pathResolver.join(workingDirectory, 'pubspec.lock'), - ); - - final content = await pubspecLockFile.readAsString(); - return PubspecLock.fromString(content); -} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart deleted file mode 100644 index 942926e06..000000000 --- a/bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart +++ /dev/null @@ -1,232 +0,0 @@ -import 'dart:collection'; - -import 'package:equatable/equatable.dart'; -import 'package:yaml/yaml.dart'; - -/// {@template pubspec_lock_parse_exception} -/// Thrown when a [PubspecLock] fails to parse. -/// {@endtemplate} -class PubspecLockParseException implements Exception { - /// {@macro pubspec_lock_parse_exception} - const PubspecLockParseException(); -} - -/// A representation of a pubspec.lock file. -class PubspecLock { - const PubspecLock._({ - required this.packages, - }); - - /// Parses a [PubspecLock] from a string. - /// - /// If no packages are found, an empty [PubspecLock] is returned. Those - /// packages entries that cannot be parsed are ignored. - /// - /// It throws a [PubspecLockParseException] if the string cannot be parsed - /// as a [YamlMap]. - factory PubspecLock.fromString(String content) { - late final YamlMap yaml; - try { - yaml = loadYaml(content) as YamlMap; - // ignoring for backward compatibility - // ignore: avoid_catches_without_on_clauses - } catch (_) { - throw const PubspecLockParseException(); - } - - if (!yaml.containsKey('packages')) { - return PubspecLock.empty; - } - - final packages = yaml['packages'] as YamlMap; - - final parsedPackages = []; - for (final entry in packages.entries) { - try { - final package = PubspecLockPackage.fromYamlMap( - name: entry.key as String, - data: entry.value as YamlMap, - ); - parsedPackages.add(package); - // ignoring for backward compatibility - // ignore: avoid_catches_without_on_clauses - } catch (_) { - // Ignore those packages that for some reason cannot be parsed. - } - } - - return PubspecLock._( - packages: UnmodifiableListView(parsedPackages), - ); - } - - /// An empty [PubspecLock]. - static PubspecLock empty = PubspecLock._( - packages: UnmodifiableListView([]), - ); - - /// All the dependencies in the pubspec.lock file. - final UnmodifiableListView packages; -} - -/// {@template pubspec_lock_dependency} -/// A representation of a dependency in a pubspec.lock file. -/// {@endtemplate} -class PubspecLockPackage extends Equatable { - /// {@macro pubspec_lock_dependency} - const PubspecLockPackage({ - required this.name, - required this.type, - this.pathDescription, - }); - - /// Parses a [PubspecLockPackage] from a [YamlMap]. - factory PubspecLockPackage.fromYamlMap({ - required String name, - required YamlMap data, - }) { - final dependency = data['dependency'] as String; - final dependencyType = PubspecLockPackageDependencyType.parse(dependency); - - final description = data['description'] as YamlMap?; - final pathDescription = description != null - ? PubspecPackagePathDescription.tryParse(description) - : null; - - return PubspecLockPackage( - name: name, - type: dependencyType, - pathDescription: pathDescription, - ); - } - - /// The name of the dependency. - final String name; - - /// {@macro pubspec_lock_dependency_type} - final PubspecLockPackageDependencyType type; - - /// {@macro pubspec_package_path_description} - final PubspecPackagePathDescription? pathDescription; - - @override - List get props => [name, type, pathDescription]; -} - -/// {@template pubspec_lock_dependency_type} -/// The type of a [PubspecLockPackage]. -/// {@endtemplate} -enum PubspecLockPackageDependencyType { - /// Another package that your package needs to work. - /// - /// See also: - /// - /// * [Dart's dependency documentation](https://dart.dev/tools/pub/dependencies) - directMain._('direct main'), - - /// Another package that your package needs during development. - /// - /// See also: - /// - /// * [Dart's developer dependency documentation](https://dart.dev/tools/pub/dependencies#dev-dependencies) - directDev._('direct dev'), - - /// A dependency that your package indirectly uses because one of its - /// dependencies requires it. - /// - /// See also: - /// - /// * [Dart's transitive dependency documentation](https://dart.dev/tools/pub/glossary#transitive-) - transitive._('transitive'), - - /// A dependency that your package overrides that is not already a - /// `direct main` or `direct dev` dependency. - /// - /// See also: - /// - /// * [Dart's dependency override documentation](https://dart.dev/tools/pub/dependencies#dependency-overrides) - directOverridden._('direct overridden'); - - const PubspecLockPackageDependencyType._(this.value); - - /// Parses a [PubspecLockPackageDependencyType] from a string. - /// - /// Throws an [ArgumentError] if the string is not a valid dependency type. - factory PubspecLockPackageDependencyType.parse(String value) { - if (_valueMap.containsKey(value)) { - return _valueMap[value]!; - } - - throw ArgumentError.value( - value, - 'value', - 'Invalid PubspecLockPackageDependencyType value.', - ); - } - - static Map _valueMap = { - for (final type in PubspecLockPackageDependencyType.values) - type.value: type, - }; - - /// The string representation of the [PubspecLockPackageDependencyType] - /// as it appears in a pubspec.lock file. - final String value; -} - -/// {@template pubspec_package_path_description} -/// The description of a path dependency in a pubspec.lock file. -/// -/// For example, in: -/// ```yaml -/// my_package: -/// dependency: "direct main" -/// description: -/// path: "packages/my_package" -/// relative: true -/// source: path -/// version: "1.0.0+1" -/// ``` -/// -/// The description is: -/// ```yaml -/// path: "packages/my_package" -/// relative: true -/// ``` -/// -/// See also: -/// -/// * [PubspecPackagePathDescription.tryParse], which attempts to parses a -/// [YamlMap] into a [PubspecPackagePathDescription]. -/// {@endtemplate} -class PubspecPackagePathDescription extends Equatable { - const PubspecPackagePathDescription({ - required this.path, - required this.relative, - }); - - /// Attempts to parse a [YamlMap] into a [PubspecPackagePathDescription]. - /// - /// Returns `null` if the [YamlMap] does not contain the required data - /// to create a [PubspecPackagePathDescription]. - static PubspecPackagePathDescription? tryParse(YamlMap data) { - if ((!data.containsKey('path') || data['path'] is! String) || - (!data.containsKey('relative') || data['relative'] is! bool)) { - return null; - } - - final path = data['path'] as String; - final relative = data['relative'] as bool; - - return PubspecPackagePathDescription( - path: path, - relative: relative, - ); - } - - final String path; - final bool relative; - - @override - List get props => [path, relative]; -} diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index d60564769..ea5d43df1 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -23,39 +23,40 @@ Future preGen( Future Function(String from, String to) copyPath = io_expanded.copyPath, }) async { final projectDirectory = directory ?? io.Directory.current; + final buildDirectory = io.Directory( + path.join(projectDirectory.path, 'build'), + ); final usesWorkspaces = usesWorkspaceResolution( context, workingDirectory: projectDirectory.path, exit: exit, ); + await createBundle( + context: context, + projectDirectory: projectDirectory, + buildDirectory: buildDirectory, + exit: exit, + ); + if (usesWorkspaces) { + // Disable workspace resolution until we can generate per-package lockfiles. + // https://github.com/dart-lang/pub/issues/4594 disableWorkspaceResolution( context, + buildDirectory: buildDirectory.path, + exit: exit, + ); + // Copy the pubspec.lock from the workspace root to ensure the same versions + // of dependencies are used in the production build. + copyWorkspacePubspecLock( + context, + buildDirectory: buildDirectory.path, workingDirectory: projectDirectory.path, exit: exit, ); } - // We need to make sure that the pubspec.lock file is up to date - await dartPubGet( - context, - workingDirectory: projectDirectory.path, - runProcess: runProcess, - exit: exit, - ); - - final buildDirectory = io.Directory( - path.join(projectDirectory.path, 'build'), - ); - - await createBundle( - context: context, - projectDirectory: projectDirectory, - buildDirectory: buildDirectory, - exit: exit, - ); - final RouteConfiguration configuration; try { configuration = buildConfiguration(projectDirectory); diff --git a/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart deleted file mode 100644 index 47a9c80f4..000000000 --- a/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart +++ /dev/null @@ -1,318 +0,0 @@ -// ignoring for testing purposes -// ignore_for_file: prefer_const_constructors - -import 'package:dart_frog_prod_server_hooks/src/pubspec_lock/pubspec_lock.dart'; -import 'package:test/test.dart'; -import 'package:yaml/yaml.dart'; - -void main() { - group('$PubspecLock', () { - group('fromString', () { - test('parses correctly', () { - final pubspecLock = PubspecLock.fromString(_pubspecLockContent); - - expect( - pubspecLock.packages, - equals( - const [ - PubspecLockPackage( - name: 'very_good_test_runner', - type: PubspecLockPackageDependencyType.directMain, - ), - PubspecLockPackage( - name: 'very_good_analysis', - type: PubspecLockPackageDependencyType.directDev, - ), - PubspecLockPackage( - name: 'yaml', - type: PubspecLockPackageDependencyType.transitive, - ), - PubspecLockPackage( - name: 'path', - type: PubspecLockPackageDependencyType.directOverridden, - ), - PubspecLockPackage( - name: 'foo', - type: PubspecLockPackageDependencyType.directMain, - pathDescription: PubspecPackagePathDescription( - path: 'packages/foo', - relative: true, - ), - ), - PubspecLockPackage( - name: 'yaml2', - type: PubspecLockPackageDependencyType.transitive, - ), - ], - ), - ); - }); - - test('throws a $PubspecLockParseException when content is empty', () { - expect( - () => PubspecLock.fromString(''), - throwsA(isA()), - ); - }); - - test('returns empty PubspecLock when content has no packages entry', () { - final pubspecLock = PubspecLock.fromString(_emptyPubspecLockContent); - expect(pubspecLock.packages, isEmpty); - }); - }); - }); - - group('$PubspecLockPackage', () { - test('can be instantiated', () { - expect( - PubspecLockPackage( - name: 'foo', - type: PubspecLockPackageDependencyType.directMain, - ), - isA(), - ); - }); - - test('supports value equality', () { - final package1 = PubspecLockPackage( - name: 'foo', - type: PubspecLockPackageDependencyType.directMain, - ); - final package2 = PubspecLockPackage( - name: 'foo', - type: PubspecLockPackageDependencyType.directMain, - ); - final package3 = PubspecLockPackage( - name: 'bar', - type: PubspecLockPackageDependencyType.transitive, - ); - - expect(package1, equals(package2)); - expect(package1, isNot(equals(package3))); - expect(package2, isNot(equals(package3))); - }); - }); - - group('$PubspecLockPackageDependencyType', () { - group('parse', () { - test('parses successfully `direct main`', () { - expect( - PubspecLockPackageDependencyType.parse('direct main'), - equals(PubspecLockPackageDependencyType.directMain), - ); - }); - - test('parses successfully `direct dev`', () { - expect( - PubspecLockPackageDependencyType.parse('direct dev'), - equals(PubspecLockPackageDependencyType.directDev), - ); - }); - - test('parses successfully `direct overridden`', () { - expect( - PubspecLockPackageDependencyType.parse('direct overridden'), - equals(PubspecLockPackageDependencyType.directOverridden), - ); - }); - - test('parses successfully `transitive`', () { - expect( - PubspecLockPackageDependencyType.parse('transitive'), - equals(PubspecLockPackageDependencyType.transitive), - ); - }); - - test('throws a $ArgumentError when type is invalid', () { - expect( - () => PubspecLockPackageDependencyType.parse('invalid'), - throwsA(isA()), - ); - }); - }); - }); - - group('$PubspecPackagePathDescription', () { - test('can be instantiated', () { - expect( - PubspecPackagePathDescription( - path: 'packages/foo', - relative: true, - ), - isA(), - ); - }); - - test('supports value equality', () { - final description1 = PubspecPackagePathDescription( - path: 'packages/foo', - relative: true, - ); - final description2 = PubspecPackagePathDescription( - path: 'packages/foo', - relative: true, - ); - final description3 = PubspecPackagePathDescription( - path: 'packages/bar', - relative: true, - ); - final description4 = PubspecPackagePathDescription( - path: 'packages/foo', - relative: false, - ); - - expect(description1, equals(description2)); - expect(description1, isNot(equals(description3))); - expect(description1, isNot(equals(description4))); - expect(description3, isNot(equals(description4))); - }); - - group('tryParse', () { - test('parses', () { - final data = loadYaml( - ''' -path: "packages/foo" -relative: true - ''', - ) as YamlMap; - - final description = PubspecPackagePathDescription.tryParse(data); - - expect( - description, - equals( - PubspecPackagePathDescription( - path: 'packages/foo', - relative: true, - ), - ), - ); - }); - - group('returns null', () { - test('when missing "path"', () { - final data = loadYaml( - ''' -relative: true - ''', - ) as YamlMap; - - final description = PubspecPackagePathDescription.tryParse(data); - - expect(description, isNull); - }); - - test('when "path" is not a String', () { - final data = loadYaml( - ''' -path: 1 -relative: true - ''', - ) as YamlMap; - - final description = PubspecPackagePathDescription.tryParse(data); - - expect(description, isNull); - }); - - test('when missing "relative"', () { - final data = loadYaml( - ''' -path: "packages/foo" - ''', - ) as YamlMap; - - final description = PubspecPackagePathDescription.tryParse(data); - - expect(description, isNull); - }); - - test('when "relative" is not a bool', () { - final data = loadYaml( - ''' -path: "packages/foo" -relative: 5 - ''', - ) as YamlMap; - - final description = PubspecPackagePathDescription.tryParse(data); - - expect(description, isNull); - }); - }); - }); - }); -} - -/// An example pubspec.lock content used to test the [PubspecLock] class. -/// -/// It has been artificially crafted to include: -/// - one pub hosted direct main package entry -/// - one pub hosted direct dev package entry -/// - one pub hosted transitive package entry -/// - one pub hosted overridden package entry -/// - one path direct main package entry -/// - one not pub hosted transitive package entry -/// - one invalid package entry -const _pubspecLockContent = ''' -packages: - very_good_test_runner: - dependency: "direct main" - description: - name: very_good_test_runner - sha256: "4d41e5d7677d259b9a1599c78645ac2d36bc2bd6ff7773507bcb0bab41417fe2" - url: "https://pub.dev" - source: hosted - version: "0.1.2" - very_good_analysis: - dependency: "direct dev" - description: - name: very_good_analysis - sha256: "9ae7f3a3bd5764fb021b335ca28a34f040cd0ab6eec00a1b213b445dae58a4b8" - url: "https://pub.dev" - source: hosted - version: "5.1.0" - yaml: - dependency: transitive - description: - name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://pub.dev" - source: hosted - version: "3.1.2" - path: - dependency: "direct overridden" - description: - name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - foo: - dependency: "direct main" - description: - path: "packages/foo" - relative: true - source: path - version: "1.0.0+1" - yaml2: - dependency: transitive - description: - name: yaml - sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://not-pub.dev" - source: hosted - version: "3.1.2" - bad_package: - not_dependency: "bad" -sdks: - dart: ">=3.1.0 <4.0.0" - -'''; - -/// A valid pubspec lock file with no packages. -const _emptyPubspecLockContent = ''' -sdks: - dart: ">=3.1.0 <4.0.0" - -'''; diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 14ab90541..8dcc3e00f 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -20,17 +20,143 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/{{#addDockerfile}}Dockerfile{{/addDockerfile}}", "data": - "IyBPZmZpY2lhbCBEYXJ0IGltYWdlOiBodHRwczovL2h1Yi5kb2NrZXIuY29tL18vZGFydAojIFNwZWNpZnkgdGhlIERhcnQgU0RLIGJhc2UgaW1hZ2UgdmVyc2lvbiB1c2luZyBkYXJ0Ojx2ZXJzaW9uPiAoZXg6IGRhcnQ6Mi4xNykKRlJPTSBkYXJ0Ont7ZGFydFZlcnNpb259fSBBUyBidWlsZAoKV09SS0RJUiAvYXBwCnt7I2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KCiMgQ29weSBleHRlcm5hbCBkZXBlbmRlbmNpZXMKQ09QWSAuLy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMgIC4vLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcwpDT1BZIC4vcHVic3BlY19vdmVycmlkZXMueWFtbCAuL3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwKe3svaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXN9fQojIENvcHkgRGVwZW5kZW5jaWVzCnt7I3BhdGhEZXBlbmRlbmNpZXN9fUNPUFkge3t7Ln19fSAuL3t7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7Xmhhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBJbnN0YWxsIERlcGVuZGVuY2llcwp7eyNwYXRoRGVwZW5kZW5jaWVzfX1SVU4gZGFydCBwdWIgZ2V0IC1DIHt7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7L2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBSZXNvbHZlIGFwcCBkZXBlbmRlbmNpZXMuCkNPUFkgcHVic3BlYy4qIC4vClJVTiBkYXJ0IHB1YiBnZXQKCiMgQ29weSBhcHAgc291cmNlIGNvZGUgYW5kIEFPVCBjb21waWxlIGl0LgpDT1BZIC4gLgojIEVuc3VyZSBwYWNrYWdlcyBhcmUgc3RpbGwgdXAtdG8tZGF0ZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdlZApSVU4gZGFydCBwdWIgZ2V0IC0tb2ZmbGluZQpSVU4gZGFydCBjb21waWxlIGV4ZSBiaW4vc2VydmVyLmRhcnQgLW8gYmluL3NlcnZlcgoKIyBCdWlsZCBtaW5pbWFsIHNlcnZpbmcgaW1hZ2UgZnJvbSBBT1QtY29tcGlsZWQgYC9zZXJ2ZXJgIGFuZCByZXF1aXJlZCBzeXN0ZW0KIyBsaWJyYXJpZXMgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMgc3RvcmVkIGluIGAvcnVudGltZS9gIGZyb20gdGhlIGJ1aWxkIHN0YWdlLgpGUk9NIHNjcmF0Y2gKQ09QWSAtLWZyb209YnVpbGQgL3J1bnRpbWUvIC8KQ09QWSAtLWZyb209YnVpbGQgL2FwcC9iaW4vc2VydmVyIC9hcHAvYmluLwp7eyNzZXJ2ZVN0YXRpY0ZpbGVzfX1DT1BZIC0tZnJvbT1idWlsZCAvYXBwL3B1YmxpYyAvcHVibGljL3t7L3NlcnZlU3RhdGljRmlsZXN9fQoKIyBTdGFydCBzZXJ2ZXIuCkNNRCBbIi9hcHAvYmluL3NlcnZlciJdCg==", + "IyBPZmZpY2lhbCBEYXJ0IGltYWdlOiBodHRwczovL2h1Yi5kb2NrZXIuY29tL18vZGFydAojIFNwZWNpZnkgdGhlIERhcnQgU0RLIGJhc2UgaW1hZ2UgdmVyc2lvbiB1c2luZyBkYXJ0Ojx2ZXJzaW9uPiAoZXg6IGRhcnQ6Mi4xNykKRlJPTSBkYXJ0Ont7ZGFydFZlcnNpb259fSBBUyBidWlsZAoKV09SS0RJUiAvYXBwCnt7I2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KCiMgQ29weSBleHRlcm5hbCBkZXBlbmRlbmNpZXMKQ09QWSAuLy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMgIC4vLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcwpDT1BZIC4vcHVic3BlY19vdmVycmlkZXMueWFtbCAuL3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwKe3svaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXN9fQojIENvcHkgRGVwZW5kZW5jaWVzCnt7I3BhdGhEZXBlbmRlbmNpZXN9fUNPUFkge3t7Ln19fSAuL3t7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7Xmhhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBJbnN0YWxsIERlcGVuZGVuY2llcwp7eyNwYXRoRGVwZW5kZW5jaWVzfX1SVU4gZGFydCBwdWIgZ2V0IC1DIHt7ey59fX0Ke3svcGF0aERlcGVuZGVuY2llc319Cnt7L2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzfX0KIyBSZXNvbHZlIGFwcCBkZXBlbmRlbmNpZXMuCkNPUFkgcHVic3BlYy4qIC4vCkNPUFkgcHVic3BlY19vdmVycmlkZXMueWFtbCogLi8KUlVOIGRhcnQgcHViIGdldAoKIyBDb3B5IGFwcCBzb3VyY2UgY29kZSBhbmQgQU9UIGNvbXBpbGUgaXQuCkNPUFkgLiAuCiMgRW5zdXJlIHBhY2thZ2VzIGFyZSBzdGlsbCB1cC10by1kYXRlIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkClJVTiBkYXJ0IHB1YiBnZXQgLS1vZmZsaW5lClJVTiBkYXJ0IGNvbXBpbGUgZXhlIGJpbi9zZXJ2ZXIuZGFydCAtbyBiaW4vc2VydmVyCgojIEJ1aWxkIG1pbmltYWwgc2VydmluZyBpbWFnZSBmcm9tIEFPVC1jb21waWxlZCBgL3NlcnZlcmAgYW5kIHJlcXVpcmVkIHN5c3RlbQojIGxpYnJhcmllcyBhbmQgY29uZmlndXJhdGlvbiBmaWxlcyBzdG9yZWQgaW4gYC9ydW50aW1lL2AgZnJvbSB0aGUgYnVpbGQgc3RhZ2UuCkZST00gc2NyYXRjaApDT1BZIC0tZnJvbT1idWlsZCAvcnVudGltZS8gLwpDT1BZIC0tZnJvbT1idWlsZCAvYXBwL2Jpbi9zZXJ2ZXIgL2FwcC9iaW4vCnt7I3NlcnZlU3RhdGljRmlsZXN9fUNPUFkgLS1mcm9tPWJ1aWxkIC9hcHAvcHVibGljIC9wdWJsaWMve3svc2VydmVTdGF0aWNGaWxlc319CgojIFN0YXJ0IHNlcnZlci4KQ01EIFsiL2FwcC9iaW4vc2VydmVyIl0K", "type": "text" } ], "hooks": [ { - "path": "lib/dart_frog_prod_server_hooks.dart", + "path": "build/lib/dart_frog_prod_server_hooks.dart", "data": "ZXhwb3J0ICdzcmMvY3JlYXRlX2J1bmRsZS5kYXJ0JzsKZXhwb3J0ICdzcmMvY3JlYXRlX2V4dGVybmFsX3BhY2thZ2VzX2ZvbGRlci5kYXJ0JzsKZXhwb3J0ICdzcmMvZGFydF9wdWJfZ2V0LmRhcnQnOwpleHBvcnQgJ3NyYy9leGl0X292ZXJyaWRlcy5kYXJ0JzsKZXhwb3J0ICdzcmMvZ2V0X2ludGVybmFsX3BhdGhfZGVwZW5kZW5jaWVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfcHVic3BlY19sb2NrLmRhcnQnOwo=", "type": "text" }, + { + "path": "build/lib/src/create_bundle.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTppby9pby5kYXJ0JyBzaG93IGNvcHlQYXRoOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTx2b2lkPiBjcmVhdGVCdW5kbGUoewogIHJlcXVpcmVkIEhvb2tDb250ZXh0IGNvbnRleHQsCiAgcmVxdWlyZWQgaW8uRGlyZWN0b3J5IHByb2plY3REaXJlY3RvcnksCiAgcmVxdWlyZWQgaW8uRGlyZWN0b3J5IGJ1aWxkRGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSBhc3luYyB7CiAgZmluYWwgZGFydEZyb2dEaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy5kYXJ0X2Zyb2cnKTsKICBmaW5hbCBkYXJ0RnJvZ0RpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeShkYXJ0RnJvZ0RpcmVjdG9yeVBhdGgpOwogIGZpbmFsIGJ1bmRsaW5nUHJvZ3Jlc3MgPSBjb250ZXh0LmxvZ2dlci5wcm9ncmVzcygnQnVuZGxpbmcgc291cmNlcycpOwogIGZpbmFsIHRlbXBEaXJlY3RvcnkgPSBhd2FpdCBpby5EaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wKCk7CgogIGlmIChidWlsZERpcmVjdG9yeS5leGlzdHNTeW5jKCkpIHsKICAgIGF3YWl0IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpOwogIH0KCiAgaWYgKGRhcnRGcm9nRGlyZWN0b3J5LmV4aXN0c1N5bmMoKSkgewogICAgYXdhaXQgZGFydEZyb2dEaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSk7CiAgfQoKICB0cnkgewogICAgYXdhaXQgY29weVBhdGgoCiAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgJyR7dGVtcERpcmVjdG9yeS5wYXRofSR7cGF0aC5zZXBhcmF0b3J9JywKICAgICk7CiAgICBidW5kbGluZ1Byb2dyZXNzLmNvbXBsZXRlKCk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBidW5kbGluZ1Byb2dyZXNzLmZhaWwoKTsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CiAgYXdhaXQgY29weVBhdGgodGVtcERpcmVjdG9yeS5wYXRoLCBidWlsZERpcmVjdG9yeS5wYXRoKTsKfQo=", + "type": "text" + }, + { + "path": "build/lib/src/create_external_packages_folder.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "type": "text" + }, + { + "path": "build/lib/src/dart_pub_get.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JzsKCnR5cGVkZWYgUHJvY2Vzc1J1bm5lciA9IEZ1dHVyZTxpby5Qcm9jZXNzUmVzdWx0PiBGdW5jdGlvbigKICBTdHJpbmcgZXhlY3V0YWJsZSwKICBMaXN0PFN0cmluZz4gYXJndW1lbnRzLCB7CiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgYm9vbCBydW5JblNoZWxsLAp9KTsKCkZ1dHVyZTx2b2lkPiBkYXJ0UHViR2V0KAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCBQcm9jZXNzUnVubmVyIHJ1blByb2Nlc3MsCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9ncmVzcyA9IGNvbnRleHQubG9nZ2VyLnByb2dyZXNzKCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcycpOwogIHRyeSB7CiAgICBmaW5hbCByZXN1bHQgPSBhd2FpdCBydW5Qcm9jZXNzKAogICAgICAnZGFydCcsCiAgICAgIFsncHViJywgJ2dldCddLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LAogICAgICBydW5JblNoZWxsOiB0cnVlLAogICAgKTsKICAgIHByb2dyZXNzLmNvbXBsZXRlKCk7CgogICAgaWYgKHJlc3VsdC5leGl0Q29kZSAhPSAwKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycignJHtyZXN1bHQuc3RkZXJyfScpOwogICAgICByZXR1cm4gZXhpdChyZXN1bHQuZXhpdENvZGUpOwogICAgfQogIH0gb24gaW8uUHJvY2Vzc0V4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycihlcnJvci5tZXNzYWdlKTsKICAgIHJldHVybiBleGl0KGVycm9yLmVycm9yQ29kZSk7CiAgfQp9Cg==", + "type": "text" + }, + { + "path": "build/lib/src/exit_overrides.dart", + "data": + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmNvbnN0IF9hc3luY1J1blpvbmVkID0gcnVuWm9uZWQ7CgphYnN0cmFjdCBjbGFzcyBFeGl0T3ZlcnJpZGVzIHsKICBzdGF0aWMgZmluYWwgX3Rva2VuID0gT2JqZWN0KCk7CgogIHN0YXRpYyBFeGl0T3ZlcnJpZGVzPyBnZXQgY3VycmVudCB7CiAgICByZXR1cm4gWm9uZS5jdXJyZW50W190b2tlbl0gYXMgRXhpdE92ZXJyaWRlcz87CiAgfQoKICBzdGF0aWMgUiBydW5ab25lZDxSPihSIEZ1bmN0aW9uKCkgYm9keSwge3ZvaWQgRnVuY3Rpb24oaW50KT8gZXhpdH0pIHsKICAgIGZpbmFsIG92ZXJyaWRlcyA9IF9FeGl0T3ZlcnJpZGVzU2NvcGUoZXhpdCk7CiAgICByZXR1cm4gX2FzeW5jUnVuWm9uZWQoYm9keSwgem9uZVZhbHVlczoge190b2tlbjogb3ZlcnJpZGVzfSk7CiAgfQoKICB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZ2V0IGV4aXQgPT4gaW8uZXhpdDsKfQoKY2xhc3MgX0V4aXRPdmVycmlkZXNTY29wZSBleHRlbmRzIEV4aXRPdmVycmlkZXMgewogIF9FeGl0T3ZlcnJpZGVzU2NvcGUodGhpcy5fZXhpdCk7CgogIGZpbmFsIEV4aXRPdmVycmlkZXM/IF9wcmV2aW91cyA9IEV4aXRPdmVycmlkZXMuY3VycmVudDsKICBmaW5hbCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSk/IF9leGl0OwoKICBAb3ZlcnJpZGUKICB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZ2V0IGV4aXQgewogICAgcmV0dXJuIF9leGl0ID8/IF9wcmV2aW91cz8uZXhpdCA/PyBzdXBlci5leGl0OwogIH0KfQo=", + "type": "text" + }, + { + "path": "build/lib/src/get_internal_path_dependencies.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soZGlyZWN0b3J5LnBhdGgpOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcy53aGVyZSgKICAgIChkZXBlbmRlbmN5KSB7CiAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICBpZiAocGF0aERlc2NyaXB0aW9uID09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICB9LAogICk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoRGVzY3JpcHRpb24hLnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQo=", + "type": "text" + }, + { + "path": "build/lib/src/get_pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3Mvc3JjL3B1YnNwZWNfbG9jay9wdWJzcGVjX2xvY2suZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTxQdWJzcGVjTG9jaz4gZ2V0UHVic3BlY0xvY2soCiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIHsKICBwYXRoLkNvbnRleHQ/IHBhdGhDb250ZXh0LAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUoCiAgICB3b3JraW5nRGlyZWN0b3J5LmlzRW1wdHkKICAgICAgICA/ICdwdWJzcGVjLmxvY2snCiAgICAgICAgOiBwYXRoUmVzb2x2ZXIuam9pbih3b3JraW5nRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJyksCiAgKTsKCiAgZmluYWwgY29udGVudCA9IGF3YWl0IHB1YnNwZWNMb2NrRmlsZS5yZWFkQXNTdHJpbmcoKTsKICByZXR1cm4gUHVic3BlY0xvY2suZnJvbVN0cmluZyhjb250ZW50KTsKfQo=", + "type": "text" + }, + { + "path": "build/lib/src/pubspec_lock/pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmNvbGxlY3Rpb24nOwoKaW1wb3J0ICdwYWNrYWdlOmVxdWF0YWJsZS9lcXVhdGFibGUuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfcGFyc2VfZXhjZXB0aW9ufQovLy8gVGhyb3duIHdoZW4gYSBbUHVic3BlY0xvY2tdIGZhaWxzIHRvIHBhcnNlLgovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgUHVic3BlY0xvY2tQYXJzZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbiB7CiAgLy8vIHtAbWFjcm8gcHVic3BlY19sb2NrX3BhcnNlX2V4Y2VwdGlvbn0KICBjb25zdCBQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uKCk7Cn0KCi8vLyBBIHJlcHJlc2VudGF0aW9uIG9mIGEgcHVic3BlYy5sb2NrIGZpbGUuCmNsYXNzIFB1YnNwZWNMb2NrIHsKICBjb25zdCBQdWJzcGVjTG9jay5fKHsKICAgIHJlcXVpcmVkIHRoaXMucGFja2FnZXMsCiAgfSk7CgogIC8vLyBQYXJzZXMgYSBbUHVic3BlY0xvY2tdIGZyb20gYSBzdHJpbmcuCiAgLy8vCiAgLy8vIElmIG5vIHBhY2thZ2VzIGFyZSBmb3VuZCwgYW4gZW1wdHkgW1B1YnNwZWNMb2NrXSBpcyByZXR1cm5lZC4gVGhvc2UKICAvLy8gcGFja2FnZXMgZW50cmllcyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXJlIGlnbm9yZWQuCiAgLy8vCiAgLy8vIEl0IHRocm93cyBhIFtQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uXSBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQKICAvLy8gYXMgYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKFN0cmluZyBjb250ZW50KSB7CiAgICBsYXRlIGZpbmFsIFlhbWxNYXAgeWFtbDsKICAgIHRyeSB7CiAgICAgIHlhbWwgPSBsb2FkWWFtbChjb250ZW50KSBhcyBZYW1sTWFwOwogICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAvLyBpZ25vcmU6IGF2b2lkX2NhdGNoZXNfd2l0aG91dF9vbl9jbGF1c2VzCiAgICB9IGNhdGNoIChfKSB7CiAgICAgIHRocm93IGNvbnN0IFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24oKTsKICAgIH0KCiAgICBpZiAoIXlhbWwuY29udGFpbnNLZXkoJ3BhY2thZ2VzJykpIHsKICAgICAgcmV0dXJuIFB1YnNwZWNMb2NrLmVtcHR5OwogICAgfQoKICAgIGZpbmFsIHBhY2thZ2VzID0geWFtbFsncGFja2FnZXMnXSBhcyBZYW1sTWFwOwoKICAgIGZpbmFsIHBhcnNlZFBhY2thZ2VzID0gPFB1YnNwZWNMb2NrUGFja2FnZT5bXTsKICAgIGZvciAoZmluYWwgZW50cnkgaW4gcGFja2FnZXMuZW50cmllcykgewogICAgICB0cnkgewogICAgICAgIGZpbmFsIHBhY2thZ2UgPSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoCiAgICAgICAgICBuYW1lOiBlbnRyeS5rZXkgYXMgU3RyaW5nLAogICAgICAgICAgZGF0YTogZW50cnkudmFsdWUgYXMgWWFtbE1hcCwKICAgICAgICApOwogICAgICAgIHBhcnNlZFBhY2thZ2VzLmFkZChwYWNrYWdlKTsKICAgICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAgIC8vIGlnbm9yZTogYXZvaWRfY2F0Y2hlc193aXRob3V0X29uX2NsYXVzZXMKICAgICAgfSBjYXRjaCAoXykgewogICAgICAgIC8vIElnbm9yZSB0aG9zZSBwYWNrYWdlcyB0aGF0IGZvciBzb21lIHJlYXNvbiBjYW5ub3QgYmUgcGFyc2VkLgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFB1YnNwZWNMb2NrLl8oCiAgICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhwYXJzZWRQYWNrYWdlcyksCiAgICApOwogIH0KCiAgLy8vIEFuIGVtcHR5IFtQdWJzcGVjTG9ja10uCiAgc3RhdGljIFB1YnNwZWNMb2NrIGVtcHR5ID0gUHVic3BlY0xvY2suXygKICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhbXSksCiAgKTsKCiAgLy8vIEFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBVbm1vZGlmaWFibGVMaXN0VmlldzxQdWJzcGVjTG9ja1BhY2thZ2U+IHBhY2thZ2VzOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeX0KLy8vIEEgcmVwcmVzZW50YXRpb24gb2YgYSBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjTG9ja1BhY2thZ2UgZXh0ZW5kcyBFcXVhdGFibGUgewogIC8vLyB7QG1hY3JvIHB1YnNwZWNfbG9ja19kZXBlbmRlbmN5fQogIGNvbnN0IFB1YnNwZWNMb2NrUGFja2FnZSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnR5cGUsCiAgICB0aGlzLnBhdGhEZXNjcmlwdGlvbiwKICB9KTsKCiAgLy8vIFBhcnNlcyBhIFtQdWJzcGVjTG9ja1BhY2thZ2VdIGZyb20gYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoewogICAgcmVxdWlyZWQgU3RyaW5nIG5hbWUsCiAgICByZXF1aXJlZCBZYW1sTWFwIGRhdGEsCiAgfSkgewogICAgZmluYWwgZGVwZW5kZW5jeSA9IGRhdGFbJ2RlcGVuZGVuY3knXSBhcyBTdHJpbmc7CiAgICBmaW5hbCBkZXBlbmRlbmN5VHlwZSA9IFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnBhcnNlKGRlcGVuZGVuY3kpOwoKICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gZGF0YVsnZGVzY3JpcHRpb24nXSBhcyBZYW1sTWFwPzsKICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGwKICAgICAgICA/IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRlc2NyaXB0aW9uKQogICAgICAgIDogbnVsbDsKCiAgICByZXR1cm4gUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICBuYW1lOiBuYW1lLAogICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZSwKICAgICAgcGF0aERlc2NyaXB0aW9uOiBwYXRoRGVzY3JpcHRpb24sCiAgICApOwogIH0KCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5LgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8ge0BtYWNybyBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQogIGZpbmFsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHR5cGU7CgogIC8vLyB7QG1hY3JvIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQogIGZpbmFsIFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPyBwYXRoRGVzY3JpcHRpb247CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtuYW1lLCB0eXBlLCBwYXRoRGVzY3JpcHRpb25dOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQovLy8gVGhlIHR5cGUgb2YgYSBbUHVic3BlY0xvY2tQYWNrYWdlXS4KLy8vIHtAZW5kdGVtcGxhdGV9CmVudW0gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUgewogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgdG8gd29yay4KICAvLy8KICAvLy8gU2VlIGFsc286CiAgLy8vCiAgLy8vICogW0RhcnQncyBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcykKICBkaXJlY3RNYWluLl8oJ2RpcmVjdCBtYWluJyksCgogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgZHVyaW5nIGRldmVsb3BtZW50LgogIC8vLwogIC8vLyBTZWUgYWxzbzoKICAvLy8KICAvLy8gKiBbRGFydCdzIGRldmVsb3BlciBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcyNkZXYtZGVwZW5kZW5jaWVzKQogIGRpcmVjdERldi5fKCdkaXJlY3QgZGV2JyksCgogIC8vLyBBIGRlcGVuZGVuY3kgdGhhdCB5b3VyIHBhY2thZ2UgaW5kaXJlY3RseSB1c2VzIGJlY2F1c2Ugb25lIG9mIGl0cwogIC8vLyBkZXBlbmRlbmNpZXMgcmVxdWlyZXMgaXQuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I3RyYW5zaXRpdmUtKQogIHRyYW5zaXRpdmUuXygndHJhbnNpdGl2ZScpLAoKICAvLy8gIEEgZGVwZW5kZW5jeSB0aGF0IHlvdXIgcGFja2FnZSBvdmVycmlkZXMgdGhhdCBpcyBub3QgYWxyZWFkeSBhCiAgLy8vIGBkaXJlY3QgbWFpbmAgb3IgYGRpcmVjdCBkZXZgIGRlcGVuZGVuY3kuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgZGVwZW5kZW5jeSBvdmVycmlkZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9kZXBlbmRlbmNpZXMjZGVwZW5kZW5jeS1vdmVycmlkZXMpCiAgZGlyZWN0T3ZlcnJpZGRlbi5fKCdkaXJlY3Qgb3ZlcnJpZGRlbicpOwoKICBjb25zdCBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5fKHRoaXMudmFsdWUpOwoKICAvLy8gUGFyc2VzIGEgW1B1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlXSBmcm9tIGEgc3RyaW5nLgogIC8vLwogIC8vLyBUaHJvd3MgYW4gW0FyZ3VtZW50RXJyb3JdIGlmIHRoZSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgZGVwZW5kZW5jeSB0eXBlLgogIGZhY3RvcnkgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoU3RyaW5nIHZhbHVlKSB7CiAgICBpZiAoX3ZhbHVlTWFwLmNvbnRhaW5zS2V5KHZhbHVlKSkgewogICAgICByZXR1cm4gX3ZhbHVlTWFwW3ZhbHVlXSE7CiAgICB9CgogICAgdGhyb3cgQXJndW1lbnRFcnJvci52YWx1ZSgKICAgICAgdmFsdWUsCiAgICAgICd2YWx1ZScsCiAgICAgICdJbnZhbGlkIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHZhbHVlLicsCiAgICApOwogIH0KCiAgc3RhdGljIE1hcDxTdHJpbmcsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlPiBfdmFsdWVNYXAgPSB7CiAgICBmb3IgKGZpbmFsIHR5cGUgaW4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudmFsdWVzKQogICAgICB0eXBlLnZhbHVlOiB0eXBlLAogIH07CgogIC8vLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGVdCiAgLy8vIGFzIGl0IGFwcGVhcnMgaW4gYSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBTdHJpbmcgdmFsdWU7Cn0KCi8vLyB7QHRlbXBsYXRlIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQovLy8gVGhlIGRlc2NyaXB0aW9uIG9mIGEgcGF0aCBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLwovLy8gRm9yIGV4YW1wbGUsIGluOgovLy8gYGBgeWFtbAovLy8gbXlfcGFja2FnZToKLy8vICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgovLy8gICBkZXNjcmlwdGlvbjoKLy8vICAgICBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vICAgICByZWxhdGl2ZTogdHJ1ZQovLy8gICBzb3VyY2U6IHBhdGgKLy8vICAgdmVyc2lvbjogIjEuMC4wKzEiCi8vLyBgYGAKLy8vCi8vLyBUaGUgZGVzY3JpcHRpb24gaXM6Ci8vLyBgYGB5YW1sCi8vLyBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vIHJlbGF0aXZlOiB0cnVlCi8vLyBgYGAKLy8vCi8vLyBTZWUgYWxzbzoKLy8vCi8vLyAqIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZV0sIHdoaWNoIGF0dGVtcHRzIHRvIHBhcnNlcyBhCi8vLyBbWWFtbE1hcF0gaW50byBhIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbl0uCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbiBleHRlbmRzIEVxdWF0YWJsZSB7CiAgY29uc3QgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oewogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogICAgcmVxdWlyZWQgdGhpcy5yZWxhdGl2ZSwKICB9KTsKCiAgLy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgW1lhbWxNYXBdIGludG8gYSBbUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb25dLgogIC8vLwogIC8vLyBSZXR1cm5zIGBudWxsYCBpZiB0aGUgW1lhbWxNYXBdIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGEKICAvLy8gdG8gY3JlYXRlIGEgW1B1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uXS4KICBzdGF0aWMgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24/IHRyeVBhcnNlKFlhbWxNYXAgZGF0YSkgewogICAgaWYgKCghZGF0YS5jb250YWluc0tleSgncGF0aCcpIHx8IGRhdGFbJ3BhdGgnXSBpcyEgU3RyaW5nKSB8fAogICAgICAgICghZGF0YS5jb250YWluc0tleSgncmVsYXRpdmUnKSB8fCBkYXRhWydyZWxhdGl2ZSddIGlzISBib29sKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmaW5hbCBwYXRoID0gZGF0YVsncGF0aCddIGFzIFN0cmluZzsKICAgIGZpbmFsIHJlbGF0aXZlID0gZGF0YVsncmVsYXRpdmUnXSBhcyBib29sOwoKICAgIHJldHVybiBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgcGF0aDogcGF0aCwKICAgICAgcmVsYXRpdmU6IHJlbGF0aXZlLAogICAgKTsKICB9CgogIGZpbmFsIFN0cmluZyBwYXRoOwogIGZpbmFsIGJvb2wgcmVsYXRpdmU7CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtwYXRoLCByZWxhdGl2ZV07Cn0K", + "type": "text" + }, + { + "path": "build/post_gen.dart", + "data": + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5UGF0aCA9IHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpOwoKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5UGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIHJlbGF0aXZlQnVpbGRQYXRoID0gcGF0aC5yZWxhdGl2ZShidWlsZERpcmVjdG9yeVBhdGgpOwogIGNvbnRleHQubG9nZ2VyCiAgICAuLmluZm8oJycpCiAgICAuLnN1Y2Nlc3MoJ0NyZWF0ZWQgYSBwcm9kdWN0aW9uIGJ1aWxkIScpCiAgICAuLmluZm8oJycpCiAgICAuLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpCiAgICAuLmluZm8oJycpCiAgICAuLmluZm8oCiAgICAgICcnJyR7bGlnaHRDeWFuLndyYXAoJ2RhcnQgJHtwYXRoLmpvaW4ocmVsYXRpdmVCdWlsZFBhdGgsICdiaW4nLCAnc2VydmVyLmRhcnQnKX0nKX0nJycsCiAgICApOwp9Cg==", + "type": "text" + }, + { + "path": "build/pre_gen.dart", + "data": + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCiAgRnV0dXJlPHZvaWQ+IEZ1bmN0aW9uKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIGNvcHlQYXRoID0gaW9fZXhwYW5kZWQuY29weVBhdGgsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBidWlsZERpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpLAogICk7CgogIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpIHsKICAgICAgZXhpdCgxKTsKICAgIH0sCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgewogICAgICBleGl0KDEpOwogICAgfSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", + "type": "text" + }, + { + "path": "build/pubspec.yaml", + "data": + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6IF45LjAuMAo=", + "type": "text" + }, + { + "path": "build/test/post_gen_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "build/test/pre_gen_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgKICAgICAgJ3dvcmtzIHdpdGggZXh0ZXJuYWwgZGVwZW5kZW5jaWVzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICAgIHJvdXRlczogW10sCiAgICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgICk7CgogICAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICAnJycKbmFtZTogZXhhbXBsZQp2ZXJzaW9uOiAwLjEuMAplbnZpcm9ubWVudDoKICBzZGs6IF4yLjE3LjAKZGVwZW5kZW5jaWVzOgogIG1hc29uOiBhbnkKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBhbnkKJycnLAogICAgICAgICk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICBmb29QYXRoLAogICAgICAgICk7CiAgICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgICApOwoKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICAgIH0sCiAgICApOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "build/test/pubspec_locks.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeSBhbmQgaGFzIGEgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSB0aGFuIHRoZSBkaXJlY3RvcnkgbmFtZS4KLy8vICogQSBkaXJlY3QgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBkZXYgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBvdmVycmlkZGVuIGRlcGVuZGVuY3kgZnJvbSBnaXQuCmNvbnN0IGZvb1BhdGggPSAnJycKcGFja2FnZXM6CiAgYXJnczoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBhcmdzCiAgICAgIHNoYTI1NjogZWVmNmM0NmI2MjJlMDQ5NGEzNmM1YTEyZDEwZDc3ZmI0ZTg1NTUwMWE5MWMxYjllZjkzMzkzMjZlNThmMDU5NgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjIuNC4yIgogIGZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgc2Vjb25kX2ZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vMiIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGRpcmVjdF9tYWluOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGRpcmVjdF9tYWluCiAgICAgIHNoYTI1NjogZmRjOWVhOTA1ZTdjNjkwZmUzOWQyZjk5NDZiN2FlYWQ4NmZkOTc2ZjhlZGY5N2QyNTIxYTY1ZDI2MGJiZjUwOQogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MCIKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBkZXYiCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogdGVzdAogICAgICBzaGEyNTY6ICI5YjBkZDhlMzZhZjRhNWIxNTY5MDI5OTQ5ZDUwYTUyY2IyYTJhMmZkYWEyMGNlYmI5NmU2NjAzYjlhZTI0MWY5IgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjEuMjQuNiIKICBkaXJlY3Rfb3ZlcnJpZGRlbjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3Qgb3ZlcnJpZGRlbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvbWFzb24iCiAgICAgIHJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHJlc29sdmVkLXJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24iCiAgICBzb3VyY2U6IGdpdAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MiIKc2RrczoKICBkYXJ0OiAiPj0zLjAuMCA8NC4wLjAiCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy5sb2NrYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIHRyYW5zaXRpdmUgZGVwZW5kZW5jeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5ID0gJycnCnBhY2thZ2VzOgogIGFyZ3M6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogYXJncwogICAgICBzaGEyNTY6IGVlZjZjNDZiNjIyZTA0OTRhMzZjNWExMmQxMGQ3N2ZiNGU4NTU1MDFhOTFjMWI5ZWY5MzM5MzI2ZTU4ZjA1OTYKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIyLjQuMiIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogIi4uLy4uL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGJhcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvYmFyIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IG5vUGF0aERlcGVuZGVuY2llcyA9ICcnJwpwYWNrYWdlczoKICBhcmdzOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFyZ3MKICAgICAgc2hhMjU2OiBlZWY2YzQ2YjYyMmUwNDk0YTM2YzVhMTJkMTBkNzdmYjRlODU1NTAxYTkxYzFiOWVmOTMzOTMyNmU1OGYwNTk2CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMi40LjIiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwo=", + "type": "text" + }, + { + "path": "build/test/src/create_bundle_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgaGlkZSBjcmVhdGVCdW5kbGU7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9CgpjbGFzcyBfTW9ja1Byb2dyZXNzIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIFByb2dyZXNzIHt9CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUJ1bmRsZScsICgpIHsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGNvbnRleHQgPSBfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKTsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBpZiBidW5kbGluZyB0aHJvd3MnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IERpcmVjdG9yeSgnL2ludmFsaWQvZGlyJyksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeSgnL2ludmFsaWQvZGlyL2J1aWxkJyksCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICB2ZXJpZnkoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpLmNhbGxlZCgxKTsKICAgIH0pOwoKICAgIHRlc3QoJ2RvZXMgbm90IHRocm93IHdoZW4gYnVuZGxpbmcgc3VjY2VlZHMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBmaW5hbCBkb3REYXJ0RnJvZ0RpciA9CiAgICAgICAgICBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy5kYXJ0X2Zyb2cnKSkKICAgICAgICAgICAgLi5jcmVhdGVTeW5jKCk7CiAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0KICAgICAgICAgIERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSkuLmNyZWF0ZVN5bmMoKTsKICAgICAgZmluYWwgb2xkQnVpbGRBcnRpZmFjdCA9CiAgICAgICAgICBGaWxlKHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAnYXJ0aWZhY3QudHh0JykpLi5jcmVhdGVTeW5jKCk7CgogICAgICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICAgICAgY29udGV4dDogY29udGV4dCwKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwoKICAgICAgZXhwZWN0KGRvdERhcnRGcm9nRGlyLmV4aXN0c1N5bmMoKSwgaXNGYWxzZSk7CiAgICAgIGV4cGVjdChidWlsZERpcmVjdG9yeS5leGlzdHNTeW5jKCksIGlzVHJ1ZSk7CiAgICAgIGV4cGVjdChvbGRCdWlsZEFydGlmYWN0LmV4aXN0c1N5bmMoKSwgaXNGYWxzZSk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "build/test/src/create_external_packages_folder_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "type": "text" + }, + { + "path": "build/test/src/dart_pub_get_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdkYXJ0UHViR2V0JywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb21wbGV0ZXMgd2hlbiBwcm9jZXNzIHN1Y2NlZWRzJywgKCkgYXN5bmMgewogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICBleHBlY3QoZXhlY3V0YWJsZSwgZXF1YWxzKCdkYXJ0JykpOwogICAgICAgICAgZXhwZWN0KGFyZ3MsIGVxdWFscyhbJ3B1YicsICdnZXQnXSkpOwogICAgICAgICAgZXhwZWN0KHdvcmtpbmdEaXJlY3RvcnksIGVxdWFscygnLicpKTsKICAgICAgICAgIGV4cGVjdChydW5JblNoZWxsLCBpc1RydWUpOwogICAgICAgICAgcmV0dXJuIHByb2Nlc3NSZXN1bHQ7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2hlbiBwcm9jZXNzIGZhaWxzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKCiAgICAgIGZpbmFsIHByb2Nlc3NSZXN1bHQgPSBQcm9jZXNzUmVzdWx0KAogICAgICAgIHByb2Nlc3NJZCwKICAgICAgICBFeGl0Q29kZS5zb2Z0d2FyZS5jb2RlLAogICAgICAgICcnLAogICAgICAgIGVycm9yLAogICAgICApOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbRXhpdENvZGUuc29mdHdhcmUuY29kZV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXJyb3IpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aGVuIFByb2Nlc3NFeGNlcHRpb24gb2NjdXJzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICB0aHJvdyBQcm9jZXNzRXhjZXB0aW9uKAogICAgICAgICAgICAnZGFydCcsCiAgICAgICAgICAgIFsncHViJywgJ2dldCddLAogICAgICAgICAgICBlcnJvciwKICAgICAgICAgICAgRXhpdENvZGUuc29mdHdhcmUuY29kZSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoW0V4aXRDb2RlLnNvZnR3YXJlLmNvZGVdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGVycm9yKSkuY2FsbGVkKDEpOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "build/test/src/exit_overrides_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdFeGl0T3ZlcnJpZGVzJywgKCkgewogICAgZ3JvdXAoJ3J1blpvbmVkJywgKCkgewogICAgICB0ZXN0KCd1c2VzIGRlZmF1bHQgZXhpdCB3aGVuIG5vdCBzcGVjaWZpZWQnLCAoKSB7CiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgoKSB7CiAgICAgICAgICBmaW5hbCBvdmVycmlkZXMgPSBFeGl0T3ZlcnJpZGVzLmN1cnJlbnQ7CiAgICAgICAgICBleHBlY3Qob3ZlcnJpZGVzIS5leGl0LCBlcXVhbHMoZXhpdCkpOwogICAgICAgIH0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3VzZXMgY3VzdG9tIGV4aXQgd2hlbiBzcGVjaWZpZWQnLCAoKSB7CiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpIHsKICAgICAgICAgICAgZmluYWwgb3ZlcnJpZGVzID0gRXhpdE92ZXJyaWRlcy5jdXJyZW50OwogICAgICAgICAgICBleHBlY3Qob3ZlcnJpZGVzIS5leGl0LCBpc05vdChlcXVhbHMoZXhpdCkpKTsKICAgICAgICAgIH0sCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "build/test/src/get_internal_path_dependencies_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpwYWNrYWdlczoKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgogIG1hc29uOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgonJycsCiAgICAgICk7CiAgICAgIGV4cGVjdChnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoZGlyZWN0b3J5KSwgY29tcGxldGlvbihpc0VtcHR5KSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldHVybnMgY29ycmVjdCBwYXRoIGRlcGVuZGVuY2llcycsICgpIHsKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCnBhY2thZ2VzOgogIGRhcnRfZnJvZzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGF0aC90by9kYXJ0X2Zyb2ciCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKICBkYXJ0X2Zyb2dfZ2VuOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIHBhdGg6ICJwYXRoL3RvL2RhcnRfZnJvZ19nZW4iCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKJycnLAogICAgICApOwogICAgICBleHBlY3QoCiAgICAgICAgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKGRpcmVjdG9yeSksCiAgICAgICAgY29tcGxldGlvbigKICAgICAgICAgIGVxdWFscyhbJ3BhdGgvdG8vZGFydF9mcm9nJywgJ3BhdGgvdG8vZGFydF9mcm9nX2dlbiddKSwKICAgICAgICApLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "build/test/src/pubspec_lock/pubspec_lock_test.dart", + "data": + "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsKCi8vLyBBIHZhbGlkIHB1YnNwZWMgbG9jayBmaWxlIHdpdGggbm8gcGFja2FnZXMuCmNvbnN0IF9lbXB0eVB1YnNwZWNMb2NrQ29udGVudCA9ICcnJwpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsK", + "type": "text" + }, + { + "path": "lib/dart_frog_prod_server_hooks.dart", + "data": + "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", + "type": "text" + }, + { + "path": "lib/src/copy_workspace_pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCnZvaWQgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICBmaW5hbCB3b3Jrc3BhY2VSb290ID0gX2dldFdvcmtzcGFjZVJvb3QoKTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRmx1dHRlciBwcm9qZWN0LgpEaXJlY3Rvcnk/IF9nZXRXb3Jrc3BhY2VSb290KCkgewogIGZpbmFsIGZpbGUgPSBfZmluZE5lYXJlc3RBbmNlc3RvcigKICAgIHdoZXJlOiAocGF0aCkgPT4gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbChjd2Q6IERpcmVjdG9yeShwYXRoKSksCiAgKTsKICBpZiAoZmlsZSA9PSBudWxsIHx8ICFmaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgcmV0dXJuIERpcmVjdG9yeShwYXRoLmRpcm5hbWUoZmlsZS5wYXRoKSk7Cn0KCi8vLyBUaGUgd29ya3NwYWNlIHJvb3QgYHB1YnNwZWMueWFtbGAgZmlsZSBmb3IgdGhpcyBwcm9qZWN0LgpGaWxlPyBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKHtyZXF1aXJlZCBEaXJlY3RvcnkgY3dkfSkgewogIHRyeSB7CiAgICBmaW5hbCBwdWJzcGVjWWFtbEZpbGUgPSBGaWxlKHBhdGguam9pbihjd2QucGF0aCwgJ3B1YnNwZWMueWFtbCcpKTsKICAgIGlmICghcHVic3BlY1lhbWxGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgICBmaW5hbCBwdWJzcGVjID0gUHVic3BlYy5wYXJzZShwdWJzcGVjWWFtbEZpbGUucmVhZEFzU3RyaW5nU3luYygpKTsKICAgIGlmIChwdWJzcGVjLndvcmtzcGFjZT8uaXNFbXB0eSA/PyB0cnVlKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBwdWJzcGVjWWFtbEZpbGU7CiAgfSBvbiBFeGNlcHRpb24gewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLy8gRmluZHMgbmVhcmVzdCBhbmNlc3RvciBmaWxlCi8vLyByZWxhdGl2ZSB0byB0aGUgW2N3ZF0gdGhhdCBzYXRpc2ZpZXMgW3doZXJlXS4KRmlsZT8gX2ZpbmROZWFyZXN0QW5jZXN0b3IoewogIHJlcXVpcmVkIEZpbGU/IEZ1bmN0aW9uKFN0cmluZyBwYXRoKSB3aGVyZSwKICBEaXJlY3Rvcnk/IGN3ZCwKfSkgewogIERpcmVjdG9yeT8gcHJldjsKICB2YXIgZGlyID0gY3dkID8/IERpcmVjdG9yeS5jdXJyZW50OwogIHdoaWxlIChwcmV2Py5wYXRoICE9IGRpci5wYXRoKSB7CiAgICBmaW5hbCBmaWxlID0gd2hlcmUoZGlyLnBhdGgpOwogICAgaWYgKGZpbGU/LmV4aXN0c1N5bmMoKSA/PyBmYWxzZSkgcmV0dXJuIGZpbGU7CiAgICBwcmV2ID0gZGlyOwogICAgZGlyID0gZGlyLnBhcmVudDsKICB9CiAgcmV0dXJuIG51bGw7Cn0K", + "type": "text" + }, { "path": "lib/src/create_bundle.dart", "data": @@ -40,7 +166,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKAogICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjLmRlcGVuZGVuY2llcy52YWx1ZXMKICAgICAgLm1hcCgKICAgICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgICAgaWYgKGRlcGVuZGVuY3kgaXMhIFBhdGhEZXBlbmRlbmN5KSByZXR1cm4gbnVsbDsKICAgICAgICAgIGlmIChwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIGRlcGVuZGVuY3kucGF0aCkpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogcGF0aC5iYXNlbmFtZVdpdGhvdXRFeHRlbnNpb24oZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgKQogICAgICAud2hlcmVUeXBlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PigpCiAgICAgIC50b0xpc3QoKTsKCiAgaWYgKGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5pc0VtcHR5KSByZXR1cm4gW107CgogIGZpbmFsIHBhY2thZ2VzRGlyZWN0b3J5ID0gRGlyZWN0b3J5KAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICksCiAgKS4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpOwoKICBmaW5hbCBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBGdXR1cmUud2FpdCgKICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChleHRlcm5hbFBhdGhEZXBlbmRlbmN5KSA9PiBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5OiBEaXJlY3RvcnkoCiAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICApLAogICAgKSwKICApOwoKICBhd2FpdCBGaWxlKAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJywKICAgICksCiAgKS53cml0ZUFzU3RyaW5nKAogICAgJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", "type": "text" }, { @@ -49,6 +175,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JzsKCnR5cGVkZWYgUHJvY2Vzc1J1bm5lciA9IEZ1dHVyZTxpby5Qcm9jZXNzUmVzdWx0PiBGdW5jdGlvbigKICBTdHJpbmcgZXhlY3V0YWJsZSwKICBMaXN0PFN0cmluZz4gYXJndW1lbnRzLCB7CiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgYm9vbCBydW5JblNoZWxsLAp9KTsKCkZ1dHVyZTx2b2lkPiBkYXJ0UHViR2V0KAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCBQcm9jZXNzUnVubmVyIHJ1blByb2Nlc3MsCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9ncmVzcyA9IGNvbnRleHQubG9nZ2VyLnByb2dyZXNzKCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcycpOwogIHRyeSB7CiAgICBmaW5hbCByZXN1bHQgPSBhd2FpdCBydW5Qcm9jZXNzKAogICAgICAnZGFydCcsCiAgICAgIFsncHViJywgJ2dldCddLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LAogICAgICBydW5JblNoZWxsOiB0cnVlLAogICAgKTsKICAgIHByb2dyZXNzLmNvbXBsZXRlKCk7CgogICAgaWYgKHJlc3VsdC5leGl0Q29kZSAhPSAwKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycignJHtyZXN1bHQuc3RkZXJyfScpOwogICAgICByZXR1cm4gZXhpdChyZXN1bHQuZXhpdENvZGUpOwogICAgfQogIH0gb24gaW8uUHJvY2Vzc0V4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycihlcnJvci5tZXNzYWdlKTsKICAgIHJldHVybiBleGl0KGVycm9yLmVycm9yQ29kZSk7CiAgfQp9Cg==", "type": "text" }, + { + "path": "lib/src/disable_workspace_resolution.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgRmlsZSgKICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgKS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbFxuJywgbW9kZTogRmlsZU1vZGUuYXBwZW5kKTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZScpOwogICAgZXhpdCgxKTsKICB9Cn0K", + "type": "text" + }, { "path": "lib/src/exit_overrides.dart", "data": @@ -58,19 +190,19 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/get_internal_path_dependencies.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soZGlyZWN0b3J5LnBhdGgpOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcy53aGVyZSgKICAgIChkZXBlbmRlbmN5KSB7CiAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICBpZiAocGF0aERlc2NyaXB0aW9uID09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICB9LAogICk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoRGVzY3JpcHRpb24hLnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKGRpcmVjdG9yeS5wYXRoKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gcHVic3BlYy5kZXBlbmRlbmNpZXMudmFsdWVzLndoZXJlKAogICAgKGRlcGVuZGVuY3kpIHsKICAgICAgaWYgKGRlcGVuZGVuY3kgaXMhIFBhdGhEZXBlbmRlbmN5KSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBkZXBlbmRlbmN5LnBhdGgpOwogICAgfSwKICApLmNhc3Q8UGF0aERlcGVuZGVuY3k+KCk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKChkZXBlbmRlbmN5KSA9PiBkZXBlbmRlbmN5LnBhdGgpLnRvTGlzdCgpOwp9Cg==", "type": "text" }, { - "path": "lib/src/get_pubspec_lock.dart", + "path": "lib/src/get_pubspec.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3Mvc3JjL3B1YnNwZWNfbG9jay9wdWJzcGVjX2xvY2suZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTxQdWJzcGVjTG9jaz4gZ2V0UHVic3BlY0xvY2soCiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIHsKICBwYXRoLkNvbnRleHQ/IHBhdGhDb250ZXh0LAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUoCiAgICB3b3JraW5nRGlyZWN0b3J5LmlzRW1wdHkKICAgICAgICA/ICdwdWJzcGVjLmxvY2snCiAgICAgICAgOiBwYXRoUmVzb2x2ZXIuam9pbih3b3JraW5nRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJyksCiAgKTsKCiAgZmluYWwgY29udGVudCA9IGF3YWl0IHB1YnNwZWNMb2NrRmlsZS5yZWFkQXNTdHJpbmcoKTsKICByZXR1cm4gUHVic3BlY0xvY2suZnJvbVN0cmluZyhjb250ZW50KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCkZ1dHVyZTxQdWJzcGVjPiBnZXRQdWJzcGVjKAogIFN0cmluZyB3b3JraW5nRGlyZWN0b3J5LCB7CiAgcGF0aC5Db250ZXh0PyBwYXRoQ29udGV4dCwKfSkgYXN5bmMgewogIGNvbnN0IHB1YnNwZWNZYW1sID0gJ3B1YnNwZWMueWFtbCc7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgIHdvcmtpbmdEaXJlY3RvcnkuaXNFbXB0eQogICAgICAgID8gcHVic3BlY1lhbWwKICAgICAgICA6IHBhdGhSZXNvbHZlci5qb2luKHdvcmtpbmdEaXJlY3RvcnksIHB1YnNwZWNZYW1sKSwKICApOwoKICBmaW5hbCBjb250ZW50ID0gYXdhaXQgcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nKCk7CiAgcmV0dXJuIFB1YnNwZWMucGFyc2UoY29udGVudCk7Cn0K", "type": "text" }, { - "path": "lib/src/pubspec_lock/pubspec_lock.dart", + "path": "lib/src/uses_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmNvbGxlY3Rpb24nOwoKaW1wb3J0ICdwYWNrYWdlOmVxdWF0YWJsZS9lcXVhdGFibGUuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfcGFyc2VfZXhjZXB0aW9ufQovLy8gVGhyb3duIHdoZW4gYSBbUHVic3BlY0xvY2tdIGZhaWxzIHRvIHBhcnNlLgovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgUHVic3BlY0xvY2tQYXJzZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbiB7CiAgLy8vIHtAbWFjcm8gcHVic3BlY19sb2NrX3BhcnNlX2V4Y2VwdGlvbn0KICBjb25zdCBQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uKCk7Cn0KCi8vLyBBIHJlcHJlc2VudGF0aW9uIG9mIGEgcHVic3BlYy5sb2NrIGZpbGUuCmNsYXNzIFB1YnNwZWNMb2NrIHsKICBjb25zdCBQdWJzcGVjTG9jay5fKHsKICAgIHJlcXVpcmVkIHRoaXMucGFja2FnZXMsCiAgfSk7CgogIC8vLyBQYXJzZXMgYSBbUHVic3BlY0xvY2tdIGZyb20gYSBzdHJpbmcuCiAgLy8vCiAgLy8vIElmIG5vIHBhY2thZ2VzIGFyZSBmb3VuZCwgYW4gZW1wdHkgW1B1YnNwZWNMb2NrXSBpcyByZXR1cm5lZC4gVGhvc2UKICAvLy8gcGFja2FnZXMgZW50cmllcyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXJlIGlnbm9yZWQuCiAgLy8vCiAgLy8vIEl0IHRocm93cyBhIFtQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uXSBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQKICAvLy8gYXMgYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKFN0cmluZyBjb250ZW50KSB7CiAgICBsYXRlIGZpbmFsIFlhbWxNYXAgeWFtbDsKICAgIHRyeSB7CiAgICAgIHlhbWwgPSBsb2FkWWFtbChjb250ZW50KSBhcyBZYW1sTWFwOwogICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAvLyBpZ25vcmU6IGF2b2lkX2NhdGNoZXNfd2l0aG91dF9vbl9jbGF1c2VzCiAgICB9IGNhdGNoIChfKSB7CiAgICAgIHRocm93IGNvbnN0IFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24oKTsKICAgIH0KCiAgICBpZiAoIXlhbWwuY29udGFpbnNLZXkoJ3BhY2thZ2VzJykpIHsKICAgICAgcmV0dXJuIFB1YnNwZWNMb2NrLmVtcHR5OwogICAgfQoKICAgIGZpbmFsIHBhY2thZ2VzID0geWFtbFsncGFja2FnZXMnXSBhcyBZYW1sTWFwOwoKICAgIGZpbmFsIHBhcnNlZFBhY2thZ2VzID0gPFB1YnNwZWNMb2NrUGFja2FnZT5bXTsKICAgIGZvciAoZmluYWwgZW50cnkgaW4gcGFja2FnZXMuZW50cmllcykgewogICAgICB0cnkgewogICAgICAgIGZpbmFsIHBhY2thZ2UgPSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoCiAgICAgICAgICBuYW1lOiBlbnRyeS5rZXkgYXMgU3RyaW5nLAogICAgICAgICAgZGF0YTogZW50cnkudmFsdWUgYXMgWWFtbE1hcCwKICAgICAgICApOwogICAgICAgIHBhcnNlZFBhY2thZ2VzLmFkZChwYWNrYWdlKTsKICAgICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAgIC8vIGlnbm9yZTogYXZvaWRfY2F0Y2hlc193aXRob3V0X29uX2NsYXVzZXMKICAgICAgfSBjYXRjaCAoXykgewogICAgICAgIC8vIElnbm9yZSB0aG9zZSBwYWNrYWdlcyB0aGF0IGZvciBzb21lIHJlYXNvbiBjYW5ub3QgYmUgcGFyc2VkLgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFB1YnNwZWNMb2NrLl8oCiAgICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhwYXJzZWRQYWNrYWdlcyksCiAgICApOwogIH0KCiAgLy8vIEFuIGVtcHR5IFtQdWJzcGVjTG9ja10uCiAgc3RhdGljIFB1YnNwZWNMb2NrIGVtcHR5ID0gUHVic3BlY0xvY2suXygKICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhbXSksCiAgKTsKCiAgLy8vIEFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBVbm1vZGlmaWFibGVMaXN0VmlldzxQdWJzcGVjTG9ja1BhY2thZ2U+IHBhY2thZ2VzOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeX0KLy8vIEEgcmVwcmVzZW50YXRpb24gb2YgYSBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjTG9ja1BhY2thZ2UgZXh0ZW5kcyBFcXVhdGFibGUgewogIC8vLyB7QG1hY3JvIHB1YnNwZWNfbG9ja19kZXBlbmRlbmN5fQogIGNvbnN0IFB1YnNwZWNMb2NrUGFja2FnZSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnR5cGUsCiAgICB0aGlzLnBhdGhEZXNjcmlwdGlvbiwKICB9KTsKCiAgLy8vIFBhcnNlcyBhIFtQdWJzcGVjTG9ja1BhY2thZ2VdIGZyb20gYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoewogICAgcmVxdWlyZWQgU3RyaW5nIG5hbWUsCiAgICByZXF1aXJlZCBZYW1sTWFwIGRhdGEsCiAgfSkgewogICAgZmluYWwgZGVwZW5kZW5jeSA9IGRhdGFbJ2RlcGVuZGVuY3knXSBhcyBTdHJpbmc7CiAgICBmaW5hbCBkZXBlbmRlbmN5VHlwZSA9IFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnBhcnNlKGRlcGVuZGVuY3kpOwoKICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gZGF0YVsnZGVzY3JpcHRpb24nXSBhcyBZYW1sTWFwPzsKICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGwKICAgICAgICA/IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRlc2NyaXB0aW9uKQogICAgICAgIDogbnVsbDsKCiAgICByZXR1cm4gUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICBuYW1lOiBuYW1lLAogICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZSwKICAgICAgcGF0aERlc2NyaXB0aW9uOiBwYXRoRGVzY3JpcHRpb24sCiAgICApOwogIH0KCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5LgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8ge0BtYWNybyBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQogIGZpbmFsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHR5cGU7CgogIC8vLyB7QG1hY3JvIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQogIGZpbmFsIFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPyBwYXRoRGVzY3JpcHRpb247CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtuYW1lLCB0eXBlLCBwYXRoRGVzY3JpcHRpb25dOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQovLy8gVGhlIHR5cGUgb2YgYSBbUHVic3BlY0xvY2tQYWNrYWdlXS4KLy8vIHtAZW5kdGVtcGxhdGV9CmVudW0gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUgewogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgdG8gd29yay4KICAvLy8KICAvLy8gU2VlIGFsc286CiAgLy8vCiAgLy8vICogW0RhcnQncyBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcykKICBkaXJlY3RNYWluLl8oJ2RpcmVjdCBtYWluJyksCgogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgZHVyaW5nIGRldmVsb3BtZW50LgogIC8vLwogIC8vLyBTZWUgYWxzbzoKICAvLy8KICAvLy8gKiBbRGFydCdzIGRldmVsb3BlciBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcyNkZXYtZGVwZW5kZW5jaWVzKQogIGRpcmVjdERldi5fKCdkaXJlY3QgZGV2JyksCgogIC8vLyBBIGRlcGVuZGVuY3kgdGhhdCB5b3VyIHBhY2thZ2UgaW5kaXJlY3RseSB1c2VzIGJlY2F1c2Ugb25lIG9mIGl0cwogIC8vLyBkZXBlbmRlbmNpZXMgcmVxdWlyZXMgaXQuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I3RyYW5zaXRpdmUtKQogIHRyYW5zaXRpdmUuXygndHJhbnNpdGl2ZScpLAoKICAvLy8gIEEgZGVwZW5kZW5jeSB0aGF0IHlvdXIgcGFja2FnZSBvdmVycmlkZXMgdGhhdCBpcyBub3QgYWxyZWFkeSBhCiAgLy8vIGBkaXJlY3QgbWFpbmAgb3IgYGRpcmVjdCBkZXZgIGRlcGVuZGVuY3kuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgZGVwZW5kZW5jeSBvdmVycmlkZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9kZXBlbmRlbmNpZXMjZGVwZW5kZW5jeS1vdmVycmlkZXMpCiAgZGlyZWN0T3ZlcnJpZGRlbi5fKCdkaXJlY3Qgb3ZlcnJpZGRlbicpOwoKICBjb25zdCBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5fKHRoaXMudmFsdWUpOwoKICAvLy8gUGFyc2VzIGEgW1B1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlXSBmcm9tIGEgc3RyaW5nLgogIC8vLwogIC8vLyBUaHJvd3MgYW4gW0FyZ3VtZW50RXJyb3JdIGlmIHRoZSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgZGVwZW5kZW5jeSB0eXBlLgogIGZhY3RvcnkgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoU3RyaW5nIHZhbHVlKSB7CiAgICBpZiAoX3ZhbHVlTWFwLmNvbnRhaW5zS2V5KHZhbHVlKSkgewogICAgICByZXR1cm4gX3ZhbHVlTWFwW3ZhbHVlXSE7CiAgICB9CgogICAgdGhyb3cgQXJndW1lbnRFcnJvci52YWx1ZSgKICAgICAgdmFsdWUsCiAgICAgICd2YWx1ZScsCiAgICAgICdJbnZhbGlkIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHZhbHVlLicsCiAgICApOwogIH0KCiAgc3RhdGljIE1hcDxTdHJpbmcsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlPiBfdmFsdWVNYXAgPSB7CiAgICBmb3IgKGZpbmFsIHR5cGUgaW4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudmFsdWVzKQogICAgICB0eXBlLnZhbHVlOiB0eXBlLAogIH07CgogIC8vLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGVdCiAgLy8vIGFzIGl0IGFwcGVhcnMgaW4gYSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBTdHJpbmcgdmFsdWU7Cn0KCi8vLyB7QHRlbXBsYXRlIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQovLy8gVGhlIGRlc2NyaXB0aW9uIG9mIGEgcGF0aCBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLwovLy8gRm9yIGV4YW1wbGUsIGluOgovLy8gYGBgeWFtbAovLy8gbXlfcGFja2FnZToKLy8vICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgovLy8gICBkZXNjcmlwdGlvbjoKLy8vICAgICBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vICAgICByZWxhdGl2ZTogdHJ1ZQovLy8gICBzb3VyY2U6IHBhdGgKLy8vICAgdmVyc2lvbjogIjEuMC4wKzEiCi8vLyBgYGAKLy8vCi8vLyBUaGUgZGVzY3JpcHRpb24gaXM6Ci8vLyBgYGB5YW1sCi8vLyBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vIHJlbGF0aXZlOiB0cnVlCi8vLyBgYGAKLy8vCi8vLyBTZWUgYWxzbzoKLy8vCi8vLyAqIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZV0sIHdoaWNoIGF0dGVtcHRzIHRvIHBhcnNlcyBhCi8vLyBbWWFtbE1hcF0gaW50byBhIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbl0uCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbiBleHRlbmRzIEVxdWF0YWJsZSB7CiAgY29uc3QgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oewogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogICAgcmVxdWlyZWQgdGhpcy5yZWxhdGl2ZSwKICB9KTsKCiAgLy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgW1lhbWxNYXBdIGludG8gYSBbUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb25dLgogIC8vLwogIC8vLyBSZXR1cm5zIGBudWxsYCBpZiB0aGUgW1lhbWxNYXBdIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGEKICAvLy8gdG8gY3JlYXRlIGEgW1B1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uXS4KICBzdGF0aWMgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24/IHRyeVBhcnNlKFlhbWxNYXAgZGF0YSkgewogICAgaWYgKCghZGF0YS5jb250YWluc0tleSgncGF0aCcpIHx8IGRhdGFbJ3BhdGgnXSBpcyEgU3RyaW5nKSB8fAogICAgICAgICghZGF0YS5jb250YWluc0tleSgncmVsYXRpdmUnKSB8fCBkYXRhWydyZWxhdGl2ZSddIGlzISBib29sKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmaW5hbCBwYXRoID0gZGF0YVsncGF0aCddIGFzIFN0cmluZzsKICAgIGZpbmFsIHJlbGF0aXZlID0gZGF0YVsncmVsYXRpdmUnXSBhcyBib29sOwoKICAgIHJldHVybiBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgcGF0aDogcGF0aCwKICAgICAgcmVsYXRpdmU6IHJlbGF0aXZlLAogICAgKTsKICB9CgogIGZpbmFsIFN0cmluZyBwYXRoOwogIGZpbmFsIGJvb2wgcmVsYXRpdmU7CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtwYXRoLCByZWxhdGl2ZV07Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIHB1YnNwZWMgPSBQdWJzcGVjLnBhcnNlKHB1YnNwZWNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlYy5yZXNvbHV0aW9uID09ICd3b3Jrc3BhY2UnOwp9Cg==", "type": "text" }, { @@ -82,13 +214,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIFJvdXRlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwogIHRyeSB7CiAgICBjb25maWd1cmF0aW9uID0gYnVpbGRDb25maWd1cmF0aW9uKHByb2plY3REaXJlY3RvcnkpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlcnJvcikgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZXJyb3InKTsKICAgIHJldHVybiBleGl0KDEpOwogIH0KCiAgcmVwb3J0Um91dGVDb25mbGljdHMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb3V0ZUNvbmZsaWN0OiAoCiAgICAgIG9yaWdpbmFsRmlsZVBhdGgsCiAgICAgIGNvbmZsaWN0aW5nRmlsZVBhdGgsCiAgICAgIGNvbmZsaWN0aW5nRW5kcG9pbnQsCiAgICApIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKG9yaWdpbmFsRmlsZVBhdGgpfSBhbmQgJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0ZpbGVQYXRoKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdFbmRwb2ludCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgewogICAgICBleGl0KDEpOwogICAgfSwKICApOwoKICByZXBvcnRSb2d1ZVJvdXRlcygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvZ3VlUm91dGU6IChmaWxlUGF0aCwgaWRlYWxQYXRoKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb2d1ZSByb3V0ZSBkZXRlY3RlZC4ke2RlZmF1bHRGb3JlZ3JvdW5kLndyYXAoJyAnKX1SZW5hbWUgJHtsaWdodEN5YW4ud3JhcChmaWxlUGF0aCl9IHRvICR7bGlnaHRDeWFuLndyYXAoaWRlYWxQYXRoKX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSB7CiAgICAgIGV4aXQoMSk7CiAgICB9LAogICk7CgogIGZpbmFsIGN1c3RvbURvY2tlckZpbGUgPSBpby5GaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ0RvY2tlcmZpbGUnKSwKICApOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoCiAgICBwcm9qZWN0RGlyZWN0b3J5LAogICk7CgogIGZpbmFsIGV4dGVybmFsRGVwZW5kZW5jaWVzID0gYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgKTsKCiAgZmluYWwgYWRkRG9ja2VyZmlsZSA9ICFjdXN0b21Eb2NrZXJGaWxlLmV4aXN0c1N5bmMoKTsKCiAgY29udGV4dC52YXJzID0gewogICAgJ2RpcmVjdG9yaWVzJzogY29uZmlndXJhdGlvbi5kaXJlY3RvcmllcwogICAgICAgIC5tYXAoKGMpID0+IGMudG9Kc29uKCkpCiAgICAgICAgLnRvTGlzdCgpCiAgICAgICAgLnJldmVyc2VkCiAgICAgICAgLnRvTGlzdCgpLAogICAgJ3JvdXRlcyc6IGNvbmZpZ3VyYXRpb24ucm91dGVzLm1hcCgocikgPT4gci50b0pzb24oKSkudG9MaXN0KCksCiAgICAnbWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24ubWlkZGxld2FyZS5tYXAoKG0pID0+IG0udG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUgIT0gbnVsbAogICAgICAgID8gY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlIS50b0pzb24oKQogICAgICAgIDogZmFsc2UsCiAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGNvbmZpZ3VyYXRpb24uc2VydmVTdGF0aWNGaWxlcywKICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21FbnRyeXBvaW50LAogICAgJ2ludm9rZUN1c3RvbUluaXQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUluaXQsCiAgICAncGF0aERlcGVuZGVuY2llcyc6IGludGVybmFsUGF0aERlcGVuZGVuY2llcywKICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGV4dGVybmFsRGVwZW5kZW5jaWVzLmlzTm90RW1wdHksCiAgICAnZGFydFZlcnNpb24nOiBjb250ZXh0LnZhcnNbJ2RhcnRWZXJzaW9uJ10sCiAgICAnYWRkRG9ja2VyZmlsZSc6IGFkZERvY2tlcmZpbGUsCiAgfTsKfQo=", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCiAgRnV0dXJlPHZvaWQ+IEZ1bmN0aW9uKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIGNvcHlQYXRoID0gaW9fZXhwYW5kZWQuY29weVBhdGgsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKICBmaW5hbCB1c2VzV29ya3NwYWNlcyA9IHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", "type": "text" }, { "path": "pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6IF45LjAuMAo=", "type": "text" }, { @@ -138,12 +270,6 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "data": "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpwYWNrYWdlczoKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgogIG1hc29uOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgonJycsCiAgICAgICk7CiAgICAgIGV4cGVjdChnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoZGlyZWN0b3J5KSwgY29tcGxldGlvbihpc0VtcHR5KSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldHVybnMgY29ycmVjdCBwYXRoIGRlcGVuZGVuY2llcycsICgpIHsKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCnBhY2thZ2VzOgogIGRhcnRfZnJvZzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGF0aC90by9kYXJ0X2Zyb2ciCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKICBkYXJ0X2Zyb2dfZ2VuOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIHBhdGg6ICJwYXRoL3RvL2RhcnRfZnJvZ19nZW4iCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKJycnLAogICAgICApOwogICAgICBleHBlY3QoCiAgICAgICAgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKGRpcmVjdG9yeSksCiAgICAgICAgY29tcGxldGlvbigKICAgICAgICAgIGVxdWFscyhbJ3BhdGgvdG8vZGFydF9mcm9nJywgJ3BhdGgvdG8vZGFydF9mcm9nX2dlbiddKSwKICAgICAgICApLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" - }, - { - "path": "test/src/pubspec_lock/pubspec_lock_test.dart", - "data": - "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsKCi8vLyBBIHZhbGlkIHB1YnNwZWMgbG9jayBmaWxlIHdpdGggbm8gcGFja2FnZXMuCmNvbnN0IF9lbXB0eVB1YnNwZWNMb2NrQ29udGVudCA9ICcnJwpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsK", - "type": "text" } ], "name": "dart_frog_prod_server", From be606328662386f29dae778c2404c1e2100ad571 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Aug 2025 17:45:59 -0500 Subject: [PATCH 04/31] chore: adjust comment --- .../hooks/lib/src/copy_workspace_pubspec_lock.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart index 9d33da8b7..bc815260c 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart @@ -28,7 +28,7 @@ void copyWorkspacePubspecLock( } } -/// Returns the root directory of the nearest Flutter project. +/// Returns the root directory of the nearest Dart workspace. Directory? _getWorkspaceRoot() { final file = _findNearestAncestor( where: (path) => _getWorkspaceRootPubspecYaml(cwd: Directory(path)), From 47779f4ba3594abbbead9fba2ab6141afe1b2a90 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Aug 2025 17:46:13 -0500 Subject: [PATCH 05/31] chore: regenerate bundle --- .../commands/build/templates/dart_frog_prod_server_bundle.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 8dcc3e00f..8b453245f 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -154,7 +154,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/copy_workspace_pubspec_lock.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCnZvaWQgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICBmaW5hbCB3b3Jrc3BhY2VSb290ID0gX2dldFdvcmtzcGFjZVJvb3QoKTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRmx1dHRlciBwcm9qZWN0LgpEaXJlY3Rvcnk/IF9nZXRXb3Jrc3BhY2VSb290KCkgewogIGZpbmFsIGZpbGUgPSBfZmluZE5lYXJlc3RBbmNlc3RvcigKICAgIHdoZXJlOiAocGF0aCkgPT4gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbChjd2Q6IERpcmVjdG9yeShwYXRoKSksCiAgKTsKICBpZiAoZmlsZSA9PSBudWxsIHx8ICFmaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgcmV0dXJuIERpcmVjdG9yeShwYXRoLmRpcm5hbWUoZmlsZS5wYXRoKSk7Cn0KCi8vLyBUaGUgd29ya3NwYWNlIHJvb3QgYHB1YnNwZWMueWFtbGAgZmlsZSBmb3IgdGhpcyBwcm9qZWN0LgpGaWxlPyBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKHtyZXF1aXJlZCBEaXJlY3RvcnkgY3dkfSkgewogIHRyeSB7CiAgICBmaW5hbCBwdWJzcGVjWWFtbEZpbGUgPSBGaWxlKHBhdGguam9pbihjd2QucGF0aCwgJ3B1YnNwZWMueWFtbCcpKTsKICAgIGlmICghcHVic3BlY1lhbWxGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgICBmaW5hbCBwdWJzcGVjID0gUHVic3BlYy5wYXJzZShwdWJzcGVjWWFtbEZpbGUucmVhZEFzU3RyaW5nU3luYygpKTsKICAgIGlmIChwdWJzcGVjLndvcmtzcGFjZT8uaXNFbXB0eSA/PyB0cnVlKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBwdWJzcGVjWWFtbEZpbGU7CiAgfSBvbiBFeGNlcHRpb24gewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLy8gRmluZHMgbmVhcmVzdCBhbmNlc3RvciBmaWxlCi8vLyByZWxhdGl2ZSB0byB0aGUgW2N3ZF0gdGhhdCBzYXRpc2ZpZXMgW3doZXJlXS4KRmlsZT8gX2ZpbmROZWFyZXN0QW5jZXN0b3IoewogIHJlcXVpcmVkIEZpbGU/IEZ1bmN0aW9uKFN0cmluZyBwYXRoKSB3aGVyZSwKICBEaXJlY3Rvcnk/IGN3ZCwKfSkgewogIERpcmVjdG9yeT8gcHJldjsKICB2YXIgZGlyID0gY3dkID8/IERpcmVjdG9yeS5jdXJyZW50OwogIHdoaWxlIChwcmV2Py5wYXRoICE9IGRpci5wYXRoKSB7CiAgICBmaW5hbCBmaWxlID0gd2hlcmUoZGlyLnBhdGgpOwogICAgaWYgKGZpbGU/LmV4aXN0c1N5bmMoKSA/PyBmYWxzZSkgcmV0dXJuIGZpbGU7CiAgICBwcmV2ID0gZGlyOwogICAgZGlyID0gZGlyLnBhcmVudDsKICB9CiAgcmV0dXJuIG51bGw7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCnZvaWQgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICBmaW5hbCB3b3Jrc3BhY2VSb290ID0gX2dldFdvcmtzcGFjZVJvb3QoKTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRGFydCB3b3Jrc3BhY2UuCkRpcmVjdG9yeT8gX2dldFdvcmtzcGFjZVJvb3QoKSB7CiAgZmluYWwgZmlsZSA9IF9maW5kTmVhcmVzdEFuY2VzdG9yKAogICAgd2hlcmU6IChwYXRoKSA9PiBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKGN3ZDogRGlyZWN0b3J5KHBhdGgpKSwKICApOwogIGlmIChmaWxlID09IG51bGwgfHwgIWZpbGUuZXhpc3RzU3luYygpKSByZXR1cm4gbnVsbDsKICByZXR1cm4gRGlyZWN0b3J5KHBhdGguZGlybmFtZShmaWxlLnBhdGgpKTsKfQoKLy8vIFRoZSB3b3Jrc3BhY2Ugcm9vdCBgcHVic3BlYy55YW1sYCBmaWxlIGZvciB0aGlzIHByb2plY3QuCkZpbGU/IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoe3JlcXVpcmVkIERpcmVjdG9yeSBjd2R9KSB7CiAgdHJ5IHsKICAgIGZpbmFsIHB1YnNwZWNZYW1sRmlsZSA9IEZpbGUocGF0aC5qb2luKGN3ZC5wYXRoLCAncHVic3BlYy55YW1sJykpOwogICAgaWYgKCFwdWJzcGVjWWFtbEZpbGUuZXhpc3RzU3luYygpKSByZXR1cm4gbnVsbDsKICAgIGZpbmFsIHB1YnNwZWMgPSBQdWJzcGVjLnBhcnNlKHB1YnNwZWNZYW1sRmlsZS5yZWFkQXNTdHJpbmdTeW5jKCkpOwogICAgaWYgKHB1YnNwZWMud29ya3NwYWNlPy5pc0VtcHR5ID8/IHRydWUpIHJldHVybiBudWxsOwogICAgcmV0dXJuIHB1YnNwZWNZYW1sRmlsZTsKICB9IG9uIEV4Y2VwdGlvbiB7CiAgICByZXR1cm4gbnVsbDsKICB9Cn0KCi8vLyBGaW5kcyBuZWFyZXN0IGFuY2VzdG9yIGZpbGUKLy8vIHJlbGF0aXZlIHRvIHRoZSBbY3dkXSB0aGF0IHNhdGlzZmllcyBbd2hlcmVdLgpGaWxlPyBfZmluZE5lYXJlc3RBbmNlc3Rvcih7CiAgcmVxdWlyZWQgRmlsZT8gRnVuY3Rpb24oU3RyaW5nIHBhdGgpIHdoZXJlLAogIERpcmVjdG9yeT8gY3dkLAp9KSB7CiAgRGlyZWN0b3J5PyBwcmV2OwogIHZhciBkaXIgPSBjd2QgPz8gRGlyZWN0b3J5LmN1cnJlbnQ7CiAgd2hpbGUgKHByZXY/LnBhdGggIT0gZGlyLnBhdGgpIHsKICAgIGZpbmFsIGZpbGUgPSB3aGVyZShkaXIucGF0aCk7CiAgICBpZiAoZmlsZT8uZXhpc3RzU3luYygpID8/IGZhbHNlKSByZXR1cm4gZmlsZTsKICAgIHByZXYgPSBkaXI7CiAgICBkaXIgPSBkaXIucGFyZW50OwogIH0KICByZXR1cm4gbnVsbDsKfQo=", "type": "text" }, { From 46517a3ac2cb68477bc83ea6ddba1075f9960da3 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Sat, 9 Aug 2025 17:47:25 -0500 Subject: [PATCH 06/31] chore: more doc fixes --- .../hooks/lib/src/copy_workspace_pubspec_lock.dart | 4 +++- .../build/templates/dart_frog_prod_server_bundle.dart | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart index bc815260c..deef4a09f 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart @@ -3,7 +3,9 @@ import 'package:mason/mason.dart'; import 'package:path/path.dart' as path; import 'package:pubspec_parse/pubspec_parse.dart'; -/// Opts out of dart workspaces until we can generate per package lockfiles. +/// Copies the pubspec.lock from the workspace root into the build directory +/// in order to ensure the production build uses the exact same versions of all +/// dependencies. void copyWorkspacePubspecLock( HookContext context, { required String buildDirectory, diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 8b453245f..3316cd5ff 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -154,7 +154,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/copy_workspace_pubspec_lock.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCnZvaWQgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICBmaW5hbCB3b3Jrc3BhY2VSb290ID0gX2dldFdvcmtzcGFjZVJvb3QoKTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRGFydCB3b3Jrc3BhY2UuCkRpcmVjdG9yeT8gX2dldFdvcmtzcGFjZVJvb3QoKSB7CiAgZmluYWwgZmlsZSA9IF9maW5kTmVhcmVzdEFuY2VzdG9yKAogICAgd2hlcmU6IChwYXRoKSA9PiBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKGN3ZDogRGlyZWN0b3J5KHBhdGgpKSwKICApOwogIGlmIChmaWxlID09IG51bGwgfHwgIWZpbGUuZXhpc3RzU3luYygpKSByZXR1cm4gbnVsbDsKICByZXR1cm4gRGlyZWN0b3J5KHBhdGguZGlybmFtZShmaWxlLnBhdGgpKTsKfQoKLy8vIFRoZSB3b3Jrc3BhY2Ugcm9vdCBgcHVic3BlYy55YW1sYCBmaWxlIGZvciB0aGlzIHByb2plY3QuCkZpbGU/IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoe3JlcXVpcmVkIERpcmVjdG9yeSBjd2R9KSB7CiAgdHJ5IHsKICAgIGZpbmFsIHB1YnNwZWNZYW1sRmlsZSA9IEZpbGUocGF0aC5qb2luKGN3ZC5wYXRoLCAncHVic3BlYy55YW1sJykpOwogICAgaWYgKCFwdWJzcGVjWWFtbEZpbGUuZXhpc3RzU3luYygpKSByZXR1cm4gbnVsbDsKICAgIGZpbmFsIHB1YnNwZWMgPSBQdWJzcGVjLnBhcnNlKHB1YnNwZWNZYW1sRmlsZS5yZWFkQXNTdHJpbmdTeW5jKCkpOwogICAgaWYgKHB1YnNwZWMud29ya3NwYWNlPy5pc0VtcHR5ID8/IHRydWUpIHJldHVybiBudWxsOwogICAgcmV0dXJuIHB1YnNwZWNZYW1sRmlsZTsKICB9IG9uIEV4Y2VwdGlvbiB7CiAgICByZXR1cm4gbnVsbDsKICB9Cn0KCi8vLyBGaW5kcyBuZWFyZXN0IGFuY2VzdG9yIGZpbGUKLy8vIHJlbGF0aXZlIHRvIHRoZSBbY3dkXSB0aGF0IHNhdGlzZmllcyBbd2hlcmVdLgpGaWxlPyBfZmluZE5lYXJlc3RBbmNlc3Rvcih7CiAgcmVxdWlyZWQgRmlsZT8gRnVuY3Rpb24oU3RyaW5nIHBhdGgpIHdoZXJlLAogIERpcmVjdG9yeT8gY3dkLAp9KSB7CiAgRGlyZWN0b3J5PyBwcmV2OwogIHZhciBkaXIgPSBjd2QgPz8gRGlyZWN0b3J5LmN1cnJlbnQ7CiAgd2hpbGUgKHByZXY/LnBhdGggIT0gZGlyLnBhdGgpIHsKICAgIGZpbmFsIGZpbGUgPSB3aGVyZShkaXIucGF0aCk7CiAgICBpZiAoZmlsZT8uZXhpc3RzU3luYygpID8/IGZhbHNlKSByZXR1cm4gZmlsZTsKICAgIHByZXYgPSBkaXI7CiAgICBkaXIgPSBkaXIucGFyZW50OwogIH0KICByZXR1cm4gbnVsbDsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCgpOwogIGlmICh3b3Jrc3BhY2VSb290ID09IG51bGwpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgJ1VuYWJsZSB0byBkZXRlcm1pbmUgd29ya3NwYWNlIHJvb3QgZm9yICR3b3JraW5nRGlyZWN0b3J5JywKICAgICk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CiAgZmluYWwgcHVic3BlY0xvY2tGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya3NwYWNlUm9vdC5wYXRoLCAncHVic3BlYy5sb2NrJykpOwogIGlmICghcHVic3BlY0xvY2tGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuOwoKICB0cnkgewogICAgcHVic3BlY0xvY2tGaWxlLmNvcHlTeW5jKHBhdGguam9pbihidWlsZERpcmVjdG9yeSwgJ3B1YnNwZWMubG9jaycpKTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9Cn0KCi8vLyBSZXR1cm5zIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgbmVhcmVzdCBEYXJ0IHdvcmtzcGFjZS4KRGlyZWN0b3J5PyBfZ2V0V29ya3NwYWNlUm9vdCgpIHsKICBmaW5hbCBmaWxlID0gX2ZpbmROZWFyZXN0QW5jZXN0b3IoCiAgICB3aGVyZTogKHBhdGgpID0+IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoY3dkOiBEaXJlY3RvcnkocGF0aCkpLAogICk7CiAgaWYgKGZpbGUgPT0gbnVsbCB8fCAhZmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogIHJldHVybiBEaXJlY3RvcnkocGF0aC5kaXJuYW1lKGZpbGUucGF0aCkpOwp9CgovLy8gVGhlIHdvcmtzcGFjZSByb290IGBwdWJzcGVjLnlhbWxgIGZpbGUgZm9yIHRoaXMgcHJvamVjdC4KRmlsZT8gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbCh7cmVxdWlyZWQgRGlyZWN0b3J5IGN3ZH0pIHsKICB0cnkgewogICAgZmluYWwgcHVic3BlY1lhbWxGaWxlID0gRmlsZShwYXRoLmpvaW4oY3dkLnBhdGgsICdwdWJzcGVjLnlhbWwnKSk7CiAgICBpZiAoIXB1YnNwZWNZYW1sRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogICAgZmluYWwgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UocHVic3BlY1lhbWxGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgICBpZiAocHVic3BlYy53b3Jrc3BhY2U/LmlzRW1wdHkgPz8gdHJ1ZSkgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gcHVic3BlY1lhbWxGaWxlOwogIH0gb24gRXhjZXB0aW9uIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8vIEZpbmRzIG5lYXJlc3QgYW5jZXN0b3IgZmlsZQovLy8gcmVsYXRpdmUgdG8gdGhlIFtjd2RdIHRoYXQgc2F0aXNmaWVzIFt3aGVyZV0uCkZpbGU/IF9maW5kTmVhcmVzdEFuY2VzdG9yKHsKICByZXF1aXJlZCBGaWxlPyBGdW5jdGlvbihTdHJpbmcgcGF0aCkgd2hlcmUsCiAgRGlyZWN0b3J5PyBjd2QsCn0pIHsKICBEaXJlY3Rvcnk/IHByZXY7CiAgdmFyIGRpciA9IGN3ZCA/PyBEaXJlY3RvcnkuY3VycmVudDsKICB3aGlsZSAocHJldj8ucGF0aCAhPSBkaXIucGF0aCkgewogICAgZmluYWwgZmlsZSA9IHdoZXJlKGRpci5wYXRoKTsKICAgIGlmIChmaWxlPy5leGlzdHNTeW5jKCkgPz8gZmFsc2UpIHJldHVybiBmaWxlOwogICAgcHJldiA9IGRpcjsKICAgIGRpciA9IGRpci5wYXJlbnQ7CiAgfQogIHJldHVybiBudWxsOwp9Cg==", "type": "text" }, { From d06d4a78304cf4d8c96b18fbbcdc36c4bb9ae1c7 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 21:57:54 -0500 Subject: [PATCH 07/31] test: fix broken tests and add missing unit tests --- .../lib/src/copy_workspace_pubspec_lock.dart | 9 +- .../lib/src/disable_workspace_resolution.dart | 2 +- .../hooks/test/pre_gen_test.dart | 2 +- .../hooks/test/pubspec_locks.dart | 149 ---------------- .../hooks/test/pubspecs.dart | 57 +++++++ .../src/copy_workspace_pubspec_lock_test.dart | 160 ++++++++++++++++++ .../create_external_packages_folder_test.dart | 115 ++++++------- .../disable_workspace_resolution_test.dart | 98 +++++++++++ .../get_internal_path_dependencies_test.dart | 42 ++--- .../src/uses_workspace_resolution_test.dart | 117 +++++++++++++ 10 files changed, 501 insertions(+), 250 deletions(-) delete mode 100644 bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart create mode 100644 bricks/dart_frog_prod_server/hooks/test/pubspecs.dart create mode 100644 bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart create mode 100644 bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart create mode 100644 bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart index deef4a09f..f26994771 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart @@ -12,7 +12,7 @@ void copyWorkspacePubspecLock( required String workingDirectory, required void Function(int exitCode) exit, }) { - final workspaceRoot = _getWorkspaceRoot(); + final workspaceRoot = _getWorkspaceRoot(workingDirectory); if (workspaceRoot == null) { context.logger.err( 'Unable to determine workspace root for $workingDirectory', @@ -31,9 +31,10 @@ void copyWorkspacePubspecLock( } /// Returns the root directory of the nearest Dart workspace. -Directory? _getWorkspaceRoot() { +Directory? _getWorkspaceRoot(String workingDirectory) { final file = _findNearestAncestor( where: (path) => _getWorkspaceRootPubspecYaml(cwd: Directory(path)), + cwd: Directory(workingDirectory), ); if (file == null || !file.existsSync()) return null; return Directory(path.dirname(file.path)); @@ -56,10 +57,10 @@ File? _getWorkspaceRootPubspecYaml({required Directory cwd}) { /// relative to the [cwd] that satisfies [where]. File? _findNearestAncestor({ required File? Function(String path) where, - Directory? cwd, + required Directory cwd, }) { Directory? prev; - var dir = cwd ?? Directory.current; + var dir = cwd; while (prev?.path != dir.path) { final file = where(dir.path); if (file?.existsSync() ?? false) return file; diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index 4830c8d5c..2c64312b8 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -12,7 +12,7 @@ void disableWorkspaceResolution( try { File( path.join(buildDirectory, 'pubspec_overrides.yaml'), - ).writeAsStringSync('resolution: null\n', mode: FileMode.append); + ).writeAsStringSync('\nresolution: null\n', mode: FileMode.append); } on Exception catch (e) { context.logger.err('$e'); exit(1); diff --git a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart index 3b3e449c8..24e484a31 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart @@ -9,7 +9,7 @@ import 'package:path/path.dart' as path; import 'package:test/test.dart'; import '../pre_gen.dart' as pre_gen; -import 'pubspec_locks.dart'; +import 'pubspecs.dart'; class _FakeHookContext extends Fake implements HookContext { _FakeHookContext({Logger? logger}) : _logger = logger ?? _MockLogger(); diff --git a/bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart b/bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart deleted file mode 100644 index c78d25653..000000000 --- a/bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart +++ /dev/null @@ -1,149 +0,0 @@ -/// An artificially crafted `pubspec.lock` file with: -/// -/// * A transitive dependency. -/// * A direct main path dependency that is not a child of the project -/// directory. -/// * A direct main path dependency that is not a child of the project -/// directory and has a different package name than the directory name. -/// * A direct main dependency that is hosted. -/// * A direct dev main dependency that is hosted. -/// * A direct overridden dependency from git. -const fooPath = ''' -packages: - args: - dependency: transitive - description: - name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - foo: - dependency: "direct main" - description: - path: "../../foo" - relative: true - source: path - version: "0.0.0" - second_foo: - dependency: "direct main" - description: - path: "../../foo2" - relative: true - source: path - version: "0.0.0" - direct_main: - dependency: "direct main" - description: - name: direct_main - sha256: fdc9ea905e7c690fe39d2f9946b7aead86fd976f8edf97d2521a65d260bbf509 - url: "https://pub.dev" - source: hosted - version: "0.1.0-dev.50" - test: - dependency: "direct dev" - description: - name: test - sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" - url: "https://pub.dev" - source: hosted - version: "1.24.6" - direct_overridden: - dependency: "direct overridden" - description: - path: "packages/mason" - ref: "72c306a8d8abf306b5d024f95aac29ba5fd96577" - resolved-ref: "72c306a8d8abf306b5d024f95aac29ba5fd96577" - url: "https://github.com/alestiago/mason" - source: git - version: "0.1.0-dev.52" -sdks: - dart: ">=3.0.0 <4.0.0" -'''; - -/// An artificially crafted `pubspec.lock` file with: -/// -/// * A transitive dependency. -/// * A direct main path dependency that is not a child of the project -/// directory. -/// * A direct main path dependency that is a child of the project directory. -/// * A direct main dependency that is hosted. -/// * A direct dev main dependency that is hosted. -const fooPathWithInternalDependency = ''' -packages: - args: - dependency: transitive - description: - name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - foo: - dependency: "direct main" - description: - path: "../../foo" - relative: true - source: path - version: "0.0.0" - bar: - dependency: "direct main" - description: - path: "packages/bar" - relative: true - source: path - version: "0.0.0" - mason: - dependency: "direct main" - description: - name: mason - sha256: fdc9ea905e7c690fe39d2f9946b7aead86fd976f8edf97d2521a65d260bbf509 - url: "https://pub.dev" - source: hosted - version: "0.1.0-dev.50" - test: - dependency: "direct dev" - description: - name: test - sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" - url: "https://pub.dev" - source: hosted - version: "1.24.6" -sdks: - dart: ">=3.0.0 <4.0.0" -'''; - -/// An artificially crafted `pubspec.lock` file with: -/// -/// * A transitive dependency. -/// * A direct main dependency that is hosted. -/// * A direct dev main dependency that is hosted. -const noPathDependencies = ''' -packages: - args: - dependency: transitive - description: - name: args - sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.dev" - source: hosted - version: "2.4.2" - mason: - dependency: "direct main" - description: - name: mason - sha256: fdc9ea905e7c690fe39d2f9946b7aead86fd976f8edf97d2521a65d260bbf509 - url: "https://pub.dev" - source: hosted - version: "0.1.0-dev.50" - test: - dependency: "direct dev" - description: - name: test - sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" - url: "https://pub.dev" - source: hosted - version: "1.24.6" -sdks: - dart: ">=3.0.0 <4.0.0" -'''; diff --git a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart new file mode 100644 index 000000000..777646a9e --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart @@ -0,0 +1,57 @@ +/// An artificially crafted `pubspec.lock` file with: +/// +/// * A direct main path dependency that is not a child of the project +/// directory. +/// * A direct main path dependency that is not a child of the project +/// directory and has a different package name than the directory name. +/// * A direct main dependency that is hosted. +/// * A direct dev main dependency that is hosted. +/// * A direct overridden dependency from git. +const fooPath = ''' +name: _ +dependencies: + foo: + path: ../../foo + foo2: + path: ../../foo2 + direct_main: ^0.1.0-dev.50 +dev_dependencies: + test: ^1.0.0 +dependency_overrides: + direct_overridden: + git: + url: https://github.com/alestiago/mason + path: packages/mason + ref: 72c306a8d8abf306b5d024f95aac29ba5fd96577 +'''; + +/// An artificially crafted `pubspec.lock` file with: +/// +/// * A direct main path dependency that is not a child of the project +/// directory. +/// * A direct main path dependency that is a child of the project directory. +/// * A direct main dependency that is hosted. +/// * A direct dev main dependency that is hosted. +const fooPathWithInternalDependency = ''' +name: _ +dependencies: + foo: + path: ../../foo + bar: + path: packages/bar + mason: ^0.1.0-dev.50 +dev_dependencies: + test: ^1.0.0 +'''; + +/// An artificially crafted `pubspec.lock` file with: +/// +/// * A direct main dependency that is hosted. +/// * A direct dev main dependency that is hosted. +const noPathDependencies = ''' +name: _ +dependencies: + mason: ^0.1.0-dev.50 +dev_dependencies: + test: ^1.0.0 +'''; diff --git a/bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart new file mode 100644 index 000000000..c47f7a99f --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart @@ -0,0 +1,160 @@ +import 'dart:io'; + +import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; +import 'package:mason/mason.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:path/path.dart' as path; +import 'package:test/test.dart'; + +class _MockHookContext extends Mock implements HookContext {} + +class _MockLogger extends Mock implements Logger {} + +void main() { + group('copyWorkspacePubspecLock', () { + late List exitCalls; + late HookContext context; + late Logger logger; + late Directory buildDirectory; + late Directory workingDirectory; + + setUp(() { + exitCalls = []; + context = _MockHookContext(); + logger = _MockLogger(); + buildDirectory = Directory.systemTemp.createTempSync('build'); + workingDirectory = Directory.systemTemp.createTempSync('working'); + + when(() => context.logger).thenReturn(logger); + + addTearDown(() { + buildDirectory.delete().ignore(); + workingDirectory.delete().ignore(); + }); + }); + + test('exits with error when unable to determine the workspace root', () { + copyWorkspacePubspecLock( + context, + buildDirectory: buildDirectory.path, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ); + expect(exitCalls, equals([1])); + verify( + () => logger.err( + 'Unable to determine workspace root for ${workingDirectory.path}', + ), + ); + }); + + test('exits with error when unable to parse pubspec.yaml', () { + File(path.join(workingDirectory.path, 'pubspec.yaml')) + .writeAsStringSync('invalid pubspec.yaml'); + copyWorkspacePubspecLock( + context, + buildDirectory: buildDirectory.path, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ); + expect(exitCalls, equals([1])); + verify( + () => logger.err( + 'Unable to determine workspace root for ${workingDirectory.path}', + ), + ); + }); + + test('does nothing when pubspec.lock does not exist in workspace root', () { + File(path.join(workingDirectory.path, 'pubspec.yaml')) + .writeAsStringSync(''' +name: _ +version: 0.0.0 +environment: + sdk: ^3.8.0 +workspace: + - packages/hello_world +'''); + copyWorkspacePubspecLock( + context, + buildDirectory: buildDirectory.path, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ); + expect(exitCalls, isEmpty); + verifyNever(() => logger.err(any())); + expect(buildDirectory.listSync(), isEmpty); + }); + + test('exits with error when unable to copy lockfile', () { + const pubspecLockContents = ''' +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: +'''; + File(path.join(workingDirectory.path, 'pubspec.yaml')) + .writeAsStringSync(''' +name: _ +version: 0.0.0 +environment: + sdk: ^3.8.0 +workspace: + - packages/hello_world +'''); + final file = File(path.join(workingDirectory.path, 'pubspec.lock')) + ..writeAsStringSync(pubspecLockContents); + Process.runSync('chmod', ['000', file.path]); + copyWorkspacePubspecLock( + context, + buildDirectory: buildDirectory.path, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ); + expect(exitCalls, equals([1])); + verify( + () => logger.err(any(that: contains('Permission denied'))), + ); + }); + + test('copies pubspec.lock to build directory when found', () { + const pubspecLockContents = ''' +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: +'''; + File(path.join(workingDirectory.path, 'pubspec.yaml')) + .writeAsStringSync(''' +name: _ +version: 0.0.0 +environment: + sdk: ^3.8.0 +workspace: + - packages/hello_world +'''); + File(path.join(workingDirectory.path, 'pubspec.lock')) + .writeAsStringSync(pubspecLockContents); + copyWorkspacePubspecLock( + context, + buildDirectory: buildDirectory.path, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ); + expect(exitCalls, isEmpty); + verifyNever(() => logger.err(any())); + final buildDirectoryContents = buildDirectory.listSync(); + expect(buildDirectoryContents, hasLength(1)); + expect( + buildDirectoryContents.first, + isA().having( + (f) => path.basename(f.path), + 'name', + 'pubspec.lock', + ), + ); + expect( + (buildDirectoryContents.first as File).readAsStringSync(), + equals(pubspecLockContents), + ); + }); + }); +} diff --git a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart index 6cb836d5f..a57bead0c 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart @@ -4,77 +4,66 @@ import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; -import '../pubspec_locks.dart'; +import '../pubspecs.dart'; void main() { group('createExternalPackagesFolder', () { - test( - 'bundles external dependencies with external dependencies', - () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'pubspec.lock')) - .writeAsStringSync(fooPath); - final copyCalls = []; + test('bundles external dependencies with external dependencies', () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File(path.join(projectDirectory.path, 'pubspec.yaml')) + .writeAsStringSync(fooPath); + final copyCalls = []; - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { - copyCalls.add('$from -> $to'); - return Future.value(); - }, - ); + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) async => copyCalls.add('$from -> $to'), + ); - final fooPackageDirectory = - path.join(projectDirectory.path, '../../foo'); - final fooPackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); + final fooPackageDirectory = path.join(projectDirectory.path, '../../foo'); + final fooPackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); - final secondFooPackageDirectory = - path.join(projectDirectory.path, '../../foo2'); - final secondFooPackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'second_foo', - ); - expect(copyCalls, [ - '$fooPackageDirectory -> $fooPackageDirectoryTarget', - '$secondFooPackageDirectory -> $secondFooPackageDirectoryTarget', - ]); - }, - ); + final foo2PackageDirectory = + path.join(projectDirectory.path, '../../foo2'); + final foo2PackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo2', + ); - test( - "don't bundle internal path dependencies", - () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'pubspec.lock')) - .writeAsStringSync(fooPathWithInternalDependency); - final copyCalls = []; + expect(copyCalls, [ + '$fooPackageDirectory -> $fooPackageDirectoryTarget', + '$foo2PackageDirectory -> $foo2PackageDirectoryTarget', + ]); + }); - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { - copyCalls.add('$from -> $to'); - return Future.value(); - }, - ); + test('does not bundle internal path dependencies', () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File( + path.join(projectDirectory.path, 'pubspec.yaml'), + ).writeAsStringSync(fooPathWithInternalDependency); + final copyCalls = []; - final from = path.join(projectDirectory.path, '../../foo'); - final to = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); - expect(copyCalls, ['$from -> $to']); - }, - ); + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) async => copyCalls.add('$from -> $to'), + ); + + final from = path.join(projectDirectory.path, '../../foo'); + final to = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); + expect(copyCalls, ['$from -> $to']); + }); }); } diff --git a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart new file mode 100644 index 000000000..0047b83e2 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart @@ -0,0 +1,98 @@ +import 'dart:io'; + +import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; +import 'package:mason/mason.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:path/path.dart' as path; +import 'package:test/test.dart'; + +class _MockHookContext extends Mock implements HookContext {} + +class _MockLogger extends Mock implements Logger {} + +void main() { + group('disableWorkspaceResolution', () { + late List exitCalls; + late HookContext context; + late Logger logger; + late Directory buildDirectory; + + setUp(() { + exitCalls = []; + context = _MockHookContext(); + logger = _MockLogger(); + buildDirectory = Directory.systemTemp.createTempSync('build'); + + when(() => context.logger).thenReturn(logger); + + addTearDown(() => buildDirectory.delete().ignore()); + }); + + group('when pubspec_overrides.yaml does not exist', () { + test('adds resolution: null', () { + disableWorkspaceResolution( + context, + buildDirectory: buildDirectory.path, + exit: exitCalls.add, + ); + final buildDirectoryContents = buildDirectory.listSync(); + expect(buildDirectoryContents, hasLength(1)); + final pubspecOverrides = buildDirectoryContents.first as File; + expect(pubspecOverrides.readAsStringSync(), equals(''' + +resolution: null +''')); + }); + }); + + group('when pubspec_overrides.yaml exists', () { + const originalPubspecOverridesContent = ''' +dependency_overrides: + foo: + path: ./path/to/foo'''; + + setUp(() { + File(path.join(buildDirectory.path, 'pubspec_overrides.yaml')) + .writeAsStringSync(originalPubspecOverridesContent); + }); + + test('adds resolution: null', () { + disableWorkspaceResolution( + context, + buildDirectory: buildDirectory.path, + exit: exitCalls.add, + ); + final buildDirectoryContents = buildDirectory.listSync(); + expect(buildDirectoryContents, hasLength(1)); + final pubspecOverrides = buildDirectoryContents.first as File; + expect(pubspecOverrides.readAsStringSync(), equals(''' +$originalPubspecOverridesContent +resolution: null +''')); + }); + }); + + group('when unable to read pubspec_overrides', () { + setUp(() { + final pubspecOverrides = File( + path.join(buildDirectory.path, 'pubspec_overrides.yaml'), + )..createSync(); + Process.runSync('chmod', ['000', pubspecOverrides.path]); + }); + + test('exits with error', () { + disableWorkspaceResolution( + context, + buildDirectory: buildDirectory.path, + exit: exitCalls.add, + ); + final buildDirectoryContents = buildDirectory.listSync(); + expect(buildDirectoryContents, hasLength(1)); + expect(exitCalls, equals([1])); + verify( + () => logger.err(any(that: contains('Permission denied'))), + ).called(1); + }); + }); + }); +} diff --git a/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart index 34dffe105..b7f39455e 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart @@ -8,25 +8,12 @@ void main() { group('getPathDependencies', () { test('returns nothing when there are no path dependencies', () { final directory = Directory.systemTemp.createTempSync(); - File(path.join(directory.path, 'pubspec.lock')).writeAsStringSync( + File(path.join(directory.path, 'pubspec.yaml')).writeAsStringSync( ''' -packages: - test: - dependency: transitive - description: - name: analyzer - sha256: f85566ec7b3d25cbea60f7dd4f157c5025f2f19233ca4feeed33b616c78a26a3 - url: "https://pub.dev" - source: hosted - version: "6.1.0" - mason: - dependency: transitive - description: - name: analyzer - sha256: f85566ec7b3d25cbea60f7dd4f157c5025f2f19233ca4feeed33b616c78a26a3 - url: "https://pub.dev" - source: hosted - version: "6.1.0" +name: _ +dependencies: + test: ^1.0.0 + mason: ^0.1.0 ''', ); expect(getInternalPathDependencies(directory), completion(isEmpty)); @@ -35,23 +22,14 @@ packages: test('returns correct path dependencies', () { final directory = Directory.systemTemp.createTempSync(); - File(path.join(directory.path, 'pubspec.lock')).writeAsStringSync( + File(path.join(directory.path, 'pubspec.yaml')).writeAsStringSync( ''' -packages: +name: _ +dependencies: dart_frog: - dependency: "direct main" - description: - path: "path/to/dart_frog" - relative: true - source: path - version: "0.0.0" + path: path/to/dart_frog dart_frog_gen: - dependency: "direct main" - description: - path: "path/to/dart_frog_gen" - relative: true - source: path - version: "0.0.0" + path: path/to/dart_frog_gen ''', ); expect( diff --git a/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart new file mode 100644 index 000000000..140104fac --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart @@ -0,0 +1,117 @@ +import 'dart:io'; + +import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; +import 'package:mason/mason.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:path/path.dart' as path; +import 'package:test/test.dart'; + +class _MockHookContext extends Mock implements HookContext {} + +class _MockLogger extends Mock implements Logger {} + +void main() { + group('usesWorkspaceResolution', () { + late List exitCalls; + late HookContext context; + late Logger logger; + late Directory buildDirectory; + late Directory workingDirectory; + + setUp(() { + exitCalls = []; + context = _MockHookContext(); + logger = _MockLogger(); + buildDirectory = Directory.systemTemp.createTempSync('build'); + workingDirectory = Directory.systemTemp.createTempSync('working'); + + when(() => context.logger).thenReturn(logger); + + addTearDown(() { + buildDirectory.delete().ignore(); + workingDirectory.delete().ignore(); + }); + }); + + group('when pubspec.yaml does not exist', () { + test('returns false', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isFalse, + ); + }); + }); + + group('when pubspec.yaml is malformed', () { + setUp(() { + File( + path.join(workingDirectory.path, 'pubspec.yaml'), + ).writeAsStringSync('invalid pubspec.yaml'); + }); + + test('returns false', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isFalse, + ); + expect(exitCalls, equals([1])); + verify(() => logger.err(any(that: contains('ParsedYamlException')))); + }); + }); + + group('when pubspec.yaml is valid with no resolution', () { + setUp(() { + File( + path.join(workingDirectory.path, 'pubspec.yaml'), + ).writeAsStringSync(''' +name: _ +'''); + }); + + test('returns false', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isFalse, + ); + expect(exitCalls, isEmpty); + verifyNever(() => logger.err(any())); + }); + }); + + group('when pubspec.yaml is valid with resolution workspace', () { + setUp(() { + File( + path.join(workingDirectory.path, 'pubspec.yaml'), + ).writeAsStringSync(''' +name: _ +resolution: workspace +'''); + }); + + test('returns true', () { + expect( + usesWorkspaceResolution( + context, + workingDirectory: workingDirectory.path, + exit: exitCalls.add, + ), + isTrue, + ); + expect(exitCalls, isEmpty); + verifyNever(() => logger.err(any())); + }); + }); + }); +} From d34ad3d7b19484e9dd7224fff0644b2328f0ed91 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 22:06:35 -0500 Subject: [PATCH 08/31] test: add more tests --- .../hooks/test/pre_gen_test.dart | 92 ++++++++++--------- .../hooks/test/pubspecs.dart | 19 +++- 2 files changed, 67 insertions(+), 44 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart index 24e484a31..2fc5084e2 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart @@ -161,49 +161,59 @@ void main() { expect(exitCalls, equals([1])); }); - test( - 'works with external dependencies', - () async { - const configuration = RouteConfiguration( - middleware: [], - directories: [], - routes: [], - rogueRoutes: [], - endpoints: {}, - ); + test('works with workspaces', () async { + const configuration = RouteConfiguration( + middleware: [], + directories: [], + routes: [], + rogueRoutes: [], + endpoints: {}, + ); - final directory = Directory.systemTemp.createTempSync(); - File(path.join(directory.path, 'pubspec.yaml')).writeAsStringSync( - ''' -name: example -version: 0.1.0 -environment: - sdk: ^2.17.0 -dependencies: - mason: any - foo: - path: ../../foo -dev_dependencies: - test: any -''', - ); - File(path.join(directory.path, 'pubspec.lock')).writeAsStringSync( - fooPath, - ); - final exitCalls = []; - await pre_gen.preGen( - context, - buildConfiguration: (_) => configuration, - exit: exitCalls.add, - directory: directory, - runProcess: successRunProcess, - copyPath: (_, __) async {}, - ); + final directory = Directory.systemTemp.createTempSync(); + File( + path.join(directory.path, 'pubspec.yaml'), + ).writeAsStringSync(workspaceRoot); + final exitCalls = []; + await pre_gen.preGen( + context, + buildConfiguration: (_) => configuration, + exit: exitCalls.add, + directory: directory, + runProcess: successRunProcess, + copyPath: (_, __) async {}, + ); - expect(exitCalls, isEmpty); - directory.delete(recursive: true).ignore(); - }, - ); + expect(exitCalls, isEmpty); + directory.delete(recursive: true).ignore(); + }); + + test('works with external dependencies', () async { + const configuration = RouteConfiguration( + middleware: [], + directories: [], + routes: [], + rogueRoutes: [], + endpoints: {}, + ); + + final directory = Directory.systemTemp.createTempSync(); + File( + path.join(directory.path, 'pubspec.yaml'), + ).writeAsStringSync(fooPath); + final exitCalls = []; + await pre_gen.preGen( + context, + buildConfiguration: (_) => configuration, + exit: exitCalls.add, + directory: directory, + runProcess: successRunProcess, + copyPath: (_, __) async {}, + ); + + expect(exitCalls, isEmpty); + directory.delete(recursive: true).ignore(); + }); test('retains invokeCustomEntrypoint (true)', () async { const configuration = RouteConfiguration( diff --git a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart index 777646a9e..c4aceea84 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart @@ -1,4 +1,4 @@ -/// An artificially crafted `pubspec.lock` file with: +/// An artificially crafted `pubspec.yaml` file with: /// /// * A direct main path dependency that is not a child of the project /// directory. @@ -25,7 +25,7 @@ dependency_overrides: ref: 72c306a8d8abf306b5d024f95aac29ba5fd96577 '''; -/// An artificially crafted `pubspec.lock` file with: +/// An artificially crafted `pubspec.yaml` file with: /// /// * A direct main path dependency that is not a child of the project /// directory. @@ -44,7 +44,7 @@ dev_dependencies: test: ^1.0.0 '''; -/// An artificially crafted `pubspec.lock` file with: +/// An artificially crafted `pubspec.yaml` file with: /// /// * A direct main dependency that is hosted. /// * A direct dev main dependency that is hosted. @@ -55,3 +55,16 @@ dependencies: dev_dependencies: test: ^1.0.0 '''; + +/// An artificially crafted `pubspec.yaml` file with: +/// +/// * A direct main path dependency that is a child of the project directory. +/// * Dart workspaces enabled +const workspaceRoot = ''' +name: _ +dependencies: + foo: + path: packages/foo +workspace: + - packages/foo +'''; From 63fb96ba860a789dc7643fd836c38f4099a10c69 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 22:11:24 -0500 Subject: [PATCH 09/31] more test fixes --- .../hooks/test/pre_gen_test.dart | 8 +++++++- .../dart_frog_prod_server/hooks/test/pubspecs.dart | 14 +++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart index 2fc5084e2..238a6960d 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart @@ -174,12 +174,18 @@ void main() { File( path.join(directory.path, 'pubspec.yaml'), ).writeAsStringSync(workspaceRoot); + final server = Directory( + path.join(directory.path, 'server'), + )..createSync(); + File( + path.join(server.path, 'pubspec.yaml'), + ).writeAsStringSync(workspaceChild); final exitCalls = []; await pre_gen.preGen( context, buildConfiguration: (_) => configuration, exit: exitCalls.add, - directory: directory, + directory: server, runProcess: successRunProcess, copyPath: (_, __) async {}, ); diff --git a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart index c4aceea84..1c75909ba 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart @@ -63,8 +63,16 @@ dev_dependencies: const workspaceRoot = ''' name: _ dependencies: - foo: - path: packages/foo + server: + path: packages/server workspace: - - packages/foo + - packages/server +'''; + +/// An artificially crafted `pubspec.yaml` file with: +/// +/// * Dart workspaces enabled +const workspaceChild = ''' +name: server +resolution: workspace '''; From acff678f62f6f781b8469bec4701ff8be0c46a26 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 22:14:06 -0500 Subject: [PATCH 10/31] cleanup --- .../hooks/lib/src/get_internal_path_dependencies.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart b/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart index 10a19307f..1bd341061 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart @@ -9,8 +9,7 @@ Future> getInternalPathDependencies(io.Directory directory) async { final internalPathDependencies = pubspec.dependencies.values.where( (dependency) { - if (dependency is! PathDependency) return false; - return path.isWithin('', dependency.path); + return dependency is PathDependency && path.isWithin('', dependency.path); }, ).cast(); From b3909487885f559ff58382a0f6bbdfd78a097230 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 22:16:07 -0500 Subject: [PATCH 11/31] fix coverage --- bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart index d1a44979c..714556989 100644 --- a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart @@ -54,7 +54,6 @@ void main() { expect( ExitOverrides.runZoned( () => post_gen.run(_FakeHookContext(logger: logger)), - exit: (_) {}, ), completes, ); From e3db437ee2cbaab6b49d793d1b9909e682ea9783 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 22:23:23 -0500 Subject: [PATCH 12/31] chore: coverage --- bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart | 3 --- 1 file changed, 3 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart index 714556989..2d4f987ed 100644 --- a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart @@ -61,7 +61,6 @@ void main() { test('runs dart pub get and outputs next steps', () async { var processRunnerCallCount = 0; - final exitCalls = []; await post_gen.postGen( context, @@ -81,10 +80,8 @@ void main() { expect(runInShell, isTrue); return processResult; }, - exit: exitCalls.add, ); expect(processRunnerCallCount, equals(1)); - expect(exitCalls, isEmpty); verify(() => logger.success('Created a production build!')).called(1); verify( () => logger.info('Start the production server by running:'), From 359538e29d2ee18cd821f1003493858d8d1d7c91 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 22:25:38 -0500 Subject: [PATCH 13/31] revert post_gen changes --- bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart index 2d4f987ed..714556989 100644 --- a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart @@ -61,6 +61,7 @@ void main() { test('runs dart pub get and outputs next steps', () async { var processRunnerCallCount = 0; + final exitCalls = []; await post_gen.postGen( context, @@ -80,8 +81,10 @@ void main() { expect(runInShell, isTrue); return processResult; }, + exit: exitCalls.add, ); expect(processRunnerCallCount, equals(1)); + expect(exitCalls, isEmpty); verify(() => logger.success('Created a production build!')).called(1); verify( () => logger.info('Start the production server by running:'), From eeed72b4d737886ce60f0e45b825080a7fcd5512 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 22:28:09 -0500 Subject: [PATCH 14/31] ci: use updated workflow --- .github/workflows/dart_frog_prod_server.yaml | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/.github/workflows/dart_frog_prod_server.yaml b/.github/workflows/dart_frog_prod_server.yaml index 6cb779a01..742c4d6f7 100644 --- a/.github/workflows/dart_frog_prod_server.yaml +++ b/.github/workflows/dart_frog_prod_server.yaml @@ -14,8 +14,15 @@ on: jobs: build: - uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1 - with: - working_directory: bricks/dart_frog_prod_server/hooks - analyze_directories: . - report_on: "pre_gen.dart,post_gen.dart" + runs-on: ubuntu-latest + + steps: + - name: 📚 Git Checkout + uses: actions/checkout@v5 + + - name: 🎯 Build + uses: ./.github/actions/dart_package + with: + analyze_directories: . + report_on: "pre_gen.dart,post_gen.dart" + working_directory: bricks/dart_frog_prod_server/hooks From 60031d5366e23999af08e188418f35ff18271f6b Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 23:14:01 -0500 Subject: [PATCH 15/31] revert ci changes --- .github/workflows/dart_frog_prod_server.yaml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/dart_frog_prod_server.yaml b/.github/workflows/dart_frog_prod_server.yaml index 742c4d6f7..6cb779a01 100644 --- a/.github/workflows/dart_frog_prod_server.yaml +++ b/.github/workflows/dart_frog_prod_server.yaml @@ -14,15 +14,8 @@ on: jobs: build: - runs-on: ubuntu-latest - - steps: - - name: 📚 Git Checkout - uses: actions/checkout@v5 - - - name: 🎯 Build - uses: ./.github/actions/dart_package - with: - analyze_directories: . - report_on: "pre_gen.dart,post_gen.dart" - working_directory: bricks/dart_frog_prod_server/hooks + uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/dart_package.yml@v1 + with: + working_directory: bricks/dart_frog_prod_server/hooks + analyze_directories: . + report_on: "pre_gen.dart,post_gen.dart" From 08478fdb6e74b43acc886bddb017ae5546017298 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Mon, 11 Aug 2025 23:18:45 -0500 Subject: [PATCH 16/31] chore: regenerate bundle --- .../dart_frog_prod_server_bundle.dart | 96 +++++++++++++------ 1 file changed, 69 insertions(+), 27 deletions(-) diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 3316cd5ff..0b31467f3 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -28,7 +28,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvY3JlYXRlX2J1bmRsZS5kYXJ0JzsKZXhwb3J0ICdzcmMvY3JlYXRlX2V4dGVybmFsX3BhY2thZ2VzX2ZvbGRlci5kYXJ0JzsKZXhwb3J0ICdzcmMvZGFydF9wdWJfZ2V0LmRhcnQnOwpleHBvcnQgJ3NyYy9leGl0X292ZXJyaWRlcy5kYXJ0JzsKZXhwb3J0ICdzcmMvZ2V0X2ludGVybmFsX3BhdGhfZGVwZW5kZW5jaWVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfcHVic3BlY19sb2NrLmRhcnQnOwo=", + "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", + "type": "text" + }, + { + "path": "build/lib/src/copy_workspace_pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRGFydCB3b3Jrc3BhY2UuCkRpcmVjdG9yeT8gX2dldFdvcmtzcGFjZVJvb3QoU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnkpIHsKICBmaW5hbCBmaWxlID0gX2ZpbmROZWFyZXN0QW5jZXN0b3IoCiAgICB3aGVyZTogKHBhdGgpID0+IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoY3dkOiBEaXJlY3RvcnkocGF0aCkpLAogICAgY3dkOiBEaXJlY3Rvcnkod29ya2luZ0RpcmVjdG9yeSksCiAgKTsKICBpZiAoZmlsZSA9PSBudWxsIHx8ICFmaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgcmV0dXJuIERpcmVjdG9yeShwYXRoLmRpcm5hbWUoZmlsZS5wYXRoKSk7Cn0KCi8vLyBUaGUgd29ya3NwYWNlIHJvb3QgYHB1YnNwZWMueWFtbGAgZmlsZSBmb3IgdGhpcyBwcm9qZWN0LgpGaWxlPyBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKHtyZXF1aXJlZCBEaXJlY3RvcnkgY3dkfSkgewogIHRyeSB7CiAgICBmaW5hbCBwdWJzcGVjWWFtbEZpbGUgPSBGaWxlKHBhdGguam9pbihjd2QucGF0aCwgJ3B1YnNwZWMueWFtbCcpKTsKICAgIGlmICghcHVic3BlY1lhbWxGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgICBmaW5hbCBwdWJzcGVjID0gUHVic3BlYy5wYXJzZShwdWJzcGVjWWFtbEZpbGUucmVhZEFzU3RyaW5nU3luYygpKTsKICAgIGlmIChwdWJzcGVjLndvcmtzcGFjZT8uaXNFbXB0eSA/PyB0cnVlKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBwdWJzcGVjWWFtbEZpbGU7CiAgfSBvbiBFeGNlcHRpb24gewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLy8gRmluZHMgbmVhcmVzdCBhbmNlc3RvciBmaWxlCi8vLyByZWxhdGl2ZSB0byB0aGUgW2N3ZF0gdGhhdCBzYXRpc2ZpZXMgW3doZXJlXS4KRmlsZT8gX2ZpbmROZWFyZXN0QW5jZXN0b3IoewogIHJlcXVpcmVkIEZpbGU/IEZ1bmN0aW9uKFN0cmluZyBwYXRoKSB3aGVyZSwKICByZXF1aXJlZCBEaXJlY3RvcnkgY3dkLAp9KSB7CiAgRGlyZWN0b3J5PyBwcmV2OwogIHZhciBkaXIgPSBjd2Q7CiAgd2hpbGUgKHByZXY/LnBhdGggIT0gZGlyLnBhdGgpIHsKICAgIGZpbmFsIGZpbGUgPSB3aGVyZShkaXIucGF0aCk7CiAgICBpZiAoZmlsZT8uZXhpc3RzU3luYygpID8/IGZhbHNlKSByZXR1cm4gZmlsZTsKICAgIHByZXYgPSBkaXI7CiAgICBkaXIgPSBkaXIucGFyZW50OwogIH0KICByZXR1cm4gbnVsbDsKfQo=", "type": "text" }, { @@ -40,7 +46,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKAogICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjLmRlcGVuZGVuY2llcy52YWx1ZXMKICAgICAgLm1hcCgKICAgICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgICAgaWYgKGRlcGVuZGVuY3kgaXMhIFBhdGhEZXBlbmRlbmN5KSByZXR1cm4gbnVsbDsKICAgICAgICAgIGlmIChwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIGRlcGVuZGVuY3kucGF0aCkpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogcGF0aC5iYXNlbmFtZVdpdGhvdXRFeHRlbnNpb24oZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgKQogICAgICAud2hlcmVUeXBlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PigpCiAgICAgIC50b0xpc3QoKTsKCiAgaWYgKGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5pc0VtcHR5KSByZXR1cm4gW107CgogIGZpbmFsIHBhY2thZ2VzRGlyZWN0b3J5ID0gRGlyZWN0b3J5KAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICksCiAgKS4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpOwoKICBmaW5hbCBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBGdXR1cmUud2FpdCgKICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChleHRlcm5hbFBhdGhEZXBlbmRlbmN5KSA9PiBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5OiBEaXJlY3RvcnkoCiAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICApLAogICAgKSwKICApOwoKICBhd2FpdCBGaWxlKAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJywKICAgICksCiAgKS53cml0ZUFzU3RyaW5nKAogICAgJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", "type": "text" }, { @@ -49,6 +55,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JzsKCnR5cGVkZWYgUHJvY2Vzc1J1bm5lciA9IEZ1dHVyZTxpby5Qcm9jZXNzUmVzdWx0PiBGdW5jdGlvbigKICBTdHJpbmcgZXhlY3V0YWJsZSwKICBMaXN0PFN0cmluZz4gYXJndW1lbnRzLCB7CiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksCiAgYm9vbCBydW5JblNoZWxsLAp9KTsKCkZ1dHVyZTx2b2lkPiBkYXJ0UHViR2V0KAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCBQcm9jZXNzUnVubmVyIHJ1blByb2Nlc3MsCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9ncmVzcyA9IGNvbnRleHQubG9nZ2VyLnByb2dyZXNzKCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcycpOwogIHRyeSB7CiAgICBmaW5hbCByZXN1bHQgPSBhd2FpdCBydW5Qcm9jZXNzKAogICAgICAnZGFydCcsCiAgICAgIFsncHViJywgJ2dldCddLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LAogICAgICBydW5JblNoZWxsOiB0cnVlLAogICAgKTsKICAgIHByb2dyZXNzLmNvbXBsZXRlKCk7CgogICAgaWYgKHJlc3VsdC5leGl0Q29kZSAhPSAwKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycignJHtyZXN1bHQuc3RkZXJyfScpOwogICAgICByZXR1cm4gZXhpdChyZXN1bHQuZXhpdENvZGUpOwogICAgfQogIH0gb24gaW8uUHJvY2Vzc0V4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycihlcnJvci5tZXNzYWdlKTsKICAgIHJldHVybiBleGl0KGVycm9yLmVycm9yQ29kZSk7CiAgfQp9Cg==", "type": "text" }, + { + "path": "build/lib/src/disable_workspace_resolution.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgRmlsZSgKICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgKS53cml0ZUFzU3RyaW5nU3luYygnXG5yZXNvbHV0aW9uOiBudWxsXG4nLCBtb2RlOiBGaWxlTW9kZS5hcHBlbmQpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogIH0KfQo=", + "type": "text" + }, { "path": "build/lib/src/exit_overrides.dart", "data": @@ -58,19 +70,19 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/get_internal_path_dependencies.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soZGlyZWN0b3J5LnBhdGgpOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcy53aGVyZSgKICAgIChkZXBlbmRlbmN5KSB7CiAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICBpZiAocGF0aERlc2NyaXB0aW9uID09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICB9LAogICk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoRGVzY3JpcHRpb24hLnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKGRpcmVjdG9yeS5wYXRoKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gcHVic3BlYy5kZXBlbmRlbmNpZXMudmFsdWVzLndoZXJlKAogICAgKGRlcGVuZGVuY3kpIHsKICAgICAgcmV0dXJuIGRlcGVuZGVuY3kgaXMgUGF0aERlcGVuZGVuY3kgJiYgcGF0aC5pc1dpdGhpbignJywgZGVwZW5kZW5jeS5wYXRoKTsKICAgIH0sCiAgKS5jYXN0PFBhdGhEZXBlbmRlbmN5PigpOwoKICByZXR1cm4gaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKS50b0xpc3QoKTsKfQo=", "type": "text" }, { - "path": "build/lib/src/get_pubspec_lock.dart", + "path": "build/lib/src/get_pubspec.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3Mvc3JjL3B1YnNwZWNfbG9jay9wdWJzcGVjX2xvY2suZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTxQdWJzcGVjTG9jaz4gZ2V0UHVic3BlY0xvY2soCiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIHsKICBwYXRoLkNvbnRleHQ/IHBhdGhDb250ZXh0LAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUoCiAgICB3b3JraW5nRGlyZWN0b3J5LmlzRW1wdHkKICAgICAgICA/ICdwdWJzcGVjLmxvY2snCiAgICAgICAgOiBwYXRoUmVzb2x2ZXIuam9pbih3b3JraW5nRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJyksCiAgKTsKCiAgZmluYWwgY29udGVudCA9IGF3YWl0IHB1YnNwZWNMb2NrRmlsZS5yZWFkQXNTdHJpbmcoKTsKICByZXR1cm4gUHVic3BlY0xvY2suZnJvbVN0cmluZyhjb250ZW50KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCkZ1dHVyZTxQdWJzcGVjPiBnZXRQdWJzcGVjKAogIFN0cmluZyB3b3JraW5nRGlyZWN0b3J5LCB7CiAgcGF0aC5Db250ZXh0PyBwYXRoQ29udGV4dCwKfSkgYXN5bmMgewogIGNvbnN0IHB1YnNwZWNZYW1sID0gJ3B1YnNwZWMueWFtbCc7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgIHdvcmtpbmdEaXJlY3RvcnkuaXNFbXB0eQogICAgICAgID8gcHVic3BlY1lhbWwKICAgICAgICA6IHBhdGhSZXNvbHZlci5qb2luKHdvcmtpbmdEaXJlY3RvcnksIHB1YnNwZWNZYW1sKSwKICApOwoKICBmaW5hbCBjb250ZW50ID0gYXdhaXQgcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nKCk7CiAgcmV0dXJuIFB1YnNwZWMucGFyc2UoY29udGVudCk7Cn0K", "type": "text" }, { - "path": "build/lib/src/pubspec_lock/pubspec_lock.dart", + "path": "build/lib/src/uses_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmNvbGxlY3Rpb24nOwoKaW1wb3J0ICdwYWNrYWdlOmVxdWF0YWJsZS9lcXVhdGFibGUuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfcGFyc2VfZXhjZXB0aW9ufQovLy8gVGhyb3duIHdoZW4gYSBbUHVic3BlY0xvY2tdIGZhaWxzIHRvIHBhcnNlLgovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgUHVic3BlY0xvY2tQYXJzZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbiB7CiAgLy8vIHtAbWFjcm8gcHVic3BlY19sb2NrX3BhcnNlX2V4Y2VwdGlvbn0KICBjb25zdCBQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uKCk7Cn0KCi8vLyBBIHJlcHJlc2VudGF0aW9uIG9mIGEgcHVic3BlYy5sb2NrIGZpbGUuCmNsYXNzIFB1YnNwZWNMb2NrIHsKICBjb25zdCBQdWJzcGVjTG9jay5fKHsKICAgIHJlcXVpcmVkIHRoaXMucGFja2FnZXMsCiAgfSk7CgogIC8vLyBQYXJzZXMgYSBbUHVic3BlY0xvY2tdIGZyb20gYSBzdHJpbmcuCiAgLy8vCiAgLy8vIElmIG5vIHBhY2thZ2VzIGFyZSBmb3VuZCwgYW4gZW1wdHkgW1B1YnNwZWNMb2NrXSBpcyByZXR1cm5lZC4gVGhvc2UKICAvLy8gcGFja2FnZXMgZW50cmllcyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXJlIGlnbm9yZWQuCiAgLy8vCiAgLy8vIEl0IHRocm93cyBhIFtQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uXSBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQKICAvLy8gYXMgYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKFN0cmluZyBjb250ZW50KSB7CiAgICBsYXRlIGZpbmFsIFlhbWxNYXAgeWFtbDsKICAgIHRyeSB7CiAgICAgIHlhbWwgPSBsb2FkWWFtbChjb250ZW50KSBhcyBZYW1sTWFwOwogICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAvLyBpZ25vcmU6IGF2b2lkX2NhdGNoZXNfd2l0aG91dF9vbl9jbGF1c2VzCiAgICB9IGNhdGNoIChfKSB7CiAgICAgIHRocm93IGNvbnN0IFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24oKTsKICAgIH0KCiAgICBpZiAoIXlhbWwuY29udGFpbnNLZXkoJ3BhY2thZ2VzJykpIHsKICAgICAgcmV0dXJuIFB1YnNwZWNMb2NrLmVtcHR5OwogICAgfQoKICAgIGZpbmFsIHBhY2thZ2VzID0geWFtbFsncGFja2FnZXMnXSBhcyBZYW1sTWFwOwoKICAgIGZpbmFsIHBhcnNlZFBhY2thZ2VzID0gPFB1YnNwZWNMb2NrUGFja2FnZT5bXTsKICAgIGZvciAoZmluYWwgZW50cnkgaW4gcGFja2FnZXMuZW50cmllcykgewogICAgICB0cnkgewogICAgICAgIGZpbmFsIHBhY2thZ2UgPSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoCiAgICAgICAgICBuYW1lOiBlbnRyeS5rZXkgYXMgU3RyaW5nLAogICAgICAgICAgZGF0YTogZW50cnkudmFsdWUgYXMgWWFtbE1hcCwKICAgICAgICApOwogICAgICAgIHBhcnNlZFBhY2thZ2VzLmFkZChwYWNrYWdlKTsKICAgICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAgIC8vIGlnbm9yZTogYXZvaWRfY2F0Y2hlc193aXRob3V0X29uX2NsYXVzZXMKICAgICAgfSBjYXRjaCAoXykgewogICAgICAgIC8vIElnbm9yZSB0aG9zZSBwYWNrYWdlcyB0aGF0IGZvciBzb21lIHJlYXNvbiBjYW5ub3QgYmUgcGFyc2VkLgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFB1YnNwZWNMb2NrLl8oCiAgICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhwYXJzZWRQYWNrYWdlcyksCiAgICApOwogIH0KCiAgLy8vIEFuIGVtcHR5IFtQdWJzcGVjTG9ja10uCiAgc3RhdGljIFB1YnNwZWNMb2NrIGVtcHR5ID0gUHVic3BlY0xvY2suXygKICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhbXSksCiAgKTsKCiAgLy8vIEFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBVbm1vZGlmaWFibGVMaXN0VmlldzxQdWJzcGVjTG9ja1BhY2thZ2U+IHBhY2thZ2VzOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeX0KLy8vIEEgcmVwcmVzZW50YXRpb24gb2YgYSBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjTG9ja1BhY2thZ2UgZXh0ZW5kcyBFcXVhdGFibGUgewogIC8vLyB7QG1hY3JvIHB1YnNwZWNfbG9ja19kZXBlbmRlbmN5fQogIGNvbnN0IFB1YnNwZWNMb2NrUGFja2FnZSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnR5cGUsCiAgICB0aGlzLnBhdGhEZXNjcmlwdGlvbiwKICB9KTsKCiAgLy8vIFBhcnNlcyBhIFtQdWJzcGVjTG9ja1BhY2thZ2VdIGZyb20gYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoewogICAgcmVxdWlyZWQgU3RyaW5nIG5hbWUsCiAgICByZXF1aXJlZCBZYW1sTWFwIGRhdGEsCiAgfSkgewogICAgZmluYWwgZGVwZW5kZW5jeSA9IGRhdGFbJ2RlcGVuZGVuY3knXSBhcyBTdHJpbmc7CiAgICBmaW5hbCBkZXBlbmRlbmN5VHlwZSA9IFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnBhcnNlKGRlcGVuZGVuY3kpOwoKICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gZGF0YVsnZGVzY3JpcHRpb24nXSBhcyBZYW1sTWFwPzsKICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGwKICAgICAgICA/IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRlc2NyaXB0aW9uKQogICAgICAgIDogbnVsbDsKCiAgICByZXR1cm4gUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICBuYW1lOiBuYW1lLAogICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZSwKICAgICAgcGF0aERlc2NyaXB0aW9uOiBwYXRoRGVzY3JpcHRpb24sCiAgICApOwogIH0KCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5LgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8ge0BtYWNybyBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQogIGZpbmFsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHR5cGU7CgogIC8vLyB7QG1hY3JvIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQogIGZpbmFsIFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPyBwYXRoRGVzY3JpcHRpb247CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtuYW1lLCB0eXBlLCBwYXRoRGVzY3JpcHRpb25dOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQovLy8gVGhlIHR5cGUgb2YgYSBbUHVic3BlY0xvY2tQYWNrYWdlXS4KLy8vIHtAZW5kdGVtcGxhdGV9CmVudW0gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUgewogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgdG8gd29yay4KICAvLy8KICAvLy8gU2VlIGFsc286CiAgLy8vCiAgLy8vICogW0RhcnQncyBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcykKICBkaXJlY3RNYWluLl8oJ2RpcmVjdCBtYWluJyksCgogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgZHVyaW5nIGRldmVsb3BtZW50LgogIC8vLwogIC8vLyBTZWUgYWxzbzoKICAvLy8KICAvLy8gKiBbRGFydCdzIGRldmVsb3BlciBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcyNkZXYtZGVwZW5kZW5jaWVzKQogIGRpcmVjdERldi5fKCdkaXJlY3QgZGV2JyksCgogIC8vLyBBIGRlcGVuZGVuY3kgdGhhdCB5b3VyIHBhY2thZ2UgaW5kaXJlY3RseSB1c2VzIGJlY2F1c2Ugb25lIG9mIGl0cwogIC8vLyBkZXBlbmRlbmNpZXMgcmVxdWlyZXMgaXQuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I3RyYW5zaXRpdmUtKQogIHRyYW5zaXRpdmUuXygndHJhbnNpdGl2ZScpLAoKICAvLy8gIEEgZGVwZW5kZW5jeSB0aGF0IHlvdXIgcGFja2FnZSBvdmVycmlkZXMgdGhhdCBpcyBub3QgYWxyZWFkeSBhCiAgLy8vIGBkaXJlY3QgbWFpbmAgb3IgYGRpcmVjdCBkZXZgIGRlcGVuZGVuY3kuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgZGVwZW5kZW5jeSBvdmVycmlkZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9kZXBlbmRlbmNpZXMjZGVwZW5kZW5jeS1vdmVycmlkZXMpCiAgZGlyZWN0T3ZlcnJpZGRlbi5fKCdkaXJlY3Qgb3ZlcnJpZGRlbicpOwoKICBjb25zdCBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5fKHRoaXMudmFsdWUpOwoKICAvLy8gUGFyc2VzIGEgW1B1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlXSBmcm9tIGEgc3RyaW5nLgogIC8vLwogIC8vLyBUaHJvd3MgYW4gW0FyZ3VtZW50RXJyb3JdIGlmIHRoZSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgZGVwZW5kZW5jeSB0eXBlLgogIGZhY3RvcnkgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoU3RyaW5nIHZhbHVlKSB7CiAgICBpZiAoX3ZhbHVlTWFwLmNvbnRhaW5zS2V5KHZhbHVlKSkgewogICAgICByZXR1cm4gX3ZhbHVlTWFwW3ZhbHVlXSE7CiAgICB9CgogICAgdGhyb3cgQXJndW1lbnRFcnJvci52YWx1ZSgKICAgICAgdmFsdWUsCiAgICAgICd2YWx1ZScsCiAgICAgICdJbnZhbGlkIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHZhbHVlLicsCiAgICApOwogIH0KCiAgc3RhdGljIE1hcDxTdHJpbmcsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlPiBfdmFsdWVNYXAgPSB7CiAgICBmb3IgKGZpbmFsIHR5cGUgaW4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudmFsdWVzKQogICAgICB0eXBlLnZhbHVlOiB0eXBlLAogIH07CgogIC8vLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGVdCiAgLy8vIGFzIGl0IGFwcGVhcnMgaW4gYSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBTdHJpbmcgdmFsdWU7Cn0KCi8vLyB7QHRlbXBsYXRlIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQovLy8gVGhlIGRlc2NyaXB0aW9uIG9mIGEgcGF0aCBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLwovLy8gRm9yIGV4YW1wbGUsIGluOgovLy8gYGBgeWFtbAovLy8gbXlfcGFja2FnZToKLy8vICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgovLy8gICBkZXNjcmlwdGlvbjoKLy8vICAgICBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vICAgICByZWxhdGl2ZTogdHJ1ZQovLy8gICBzb3VyY2U6IHBhdGgKLy8vICAgdmVyc2lvbjogIjEuMC4wKzEiCi8vLyBgYGAKLy8vCi8vLyBUaGUgZGVzY3JpcHRpb24gaXM6Ci8vLyBgYGB5YW1sCi8vLyBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vIHJlbGF0aXZlOiB0cnVlCi8vLyBgYGAKLy8vCi8vLyBTZWUgYWxzbzoKLy8vCi8vLyAqIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZV0sIHdoaWNoIGF0dGVtcHRzIHRvIHBhcnNlcyBhCi8vLyBbWWFtbE1hcF0gaW50byBhIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbl0uCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbiBleHRlbmRzIEVxdWF0YWJsZSB7CiAgY29uc3QgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oewogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogICAgcmVxdWlyZWQgdGhpcy5yZWxhdGl2ZSwKICB9KTsKCiAgLy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgW1lhbWxNYXBdIGludG8gYSBbUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb25dLgogIC8vLwogIC8vLyBSZXR1cm5zIGBudWxsYCBpZiB0aGUgW1lhbWxNYXBdIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGEKICAvLy8gdG8gY3JlYXRlIGEgW1B1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uXS4KICBzdGF0aWMgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24/IHRyeVBhcnNlKFlhbWxNYXAgZGF0YSkgewogICAgaWYgKCghZGF0YS5jb250YWluc0tleSgncGF0aCcpIHx8IGRhdGFbJ3BhdGgnXSBpcyEgU3RyaW5nKSB8fAogICAgICAgICghZGF0YS5jb250YWluc0tleSgncmVsYXRpdmUnKSB8fCBkYXRhWydyZWxhdGl2ZSddIGlzISBib29sKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmaW5hbCBwYXRoID0gZGF0YVsncGF0aCddIGFzIFN0cmluZzsKICAgIGZpbmFsIHJlbGF0aXZlID0gZGF0YVsncmVsYXRpdmUnXSBhcyBib29sOwoKICAgIHJldHVybiBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgcGF0aDogcGF0aCwKICAgICAgcmVsYXRpdmU6IHJlbGF0aXZlLAogICAgKTsKICB9CgogIGZpbmFsIFN0cmluZyBwYXRoOwogIGZpbmFsIGJvb2wgcmVsYXRpdmU7CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtwYXRoLCByZWxhdGl2ZV07Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIHB1YnNwZWMgPSBQdWJzcGVjLnBhcnNlKHB1YnNwZWNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlYy5yZXNvbHV0aW9uID09ICd3b3Jrc3BhY2UnOwp9Cg==", "type": "text" }, { @@ -82,31 +94,37 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCiAgRnV0dXJlPHZvaWQ+IEZ1bmN0aW9uKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIGNvcHlQYXRoID0gaW9fZXhwYW5kZWQuY29weVBhdGgsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBidWlsZERpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpLAogICk7CgogIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpIHsKICAgICAgZXhpdCgxKTsKICAgIH0sCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgewogICAgICBleGl0KDEpOwogICAgfSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCiAgRnV0dXJlPHZvaWQ+IEZ1bmN0aW9uKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIGNvcHlQYXRoID0gaW9fZXhwYW5kZWQuY29weVBhdGgsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKICBmaW5hbCB1c2VzV29ya3NwYWNlcyA9IHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", "type": "text" }, { "path": "build/pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6IF45LjAuMAo=", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6IF45LjAuMAo=", "type": "text" }, { "path": "build/test/post_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { "path": "build/test/pre_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgKICAgICAgJ3dvcmtzIHdpdGggZXh0ZXJuYWwgZGVwZW5kZW5jaWVzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICAgIHJvdXRlczogW10sCiAgICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgICk7CgogICAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICAnJycKbmFtZTogZXhhbXBsZQp2ZXJzaW9uOiAwLjEuMAplbnZpcm9ubWVudDoKICBzZGs6IF4yLjE3LjAKZGVwZW5kZW5jaWVzOgogIG1hc29uOiBhbnkKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBhbnkKJycnLAogICAgICAgICk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICBmb29QYXRoLAogICAgICAgICk7CiAgICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgICApOwoKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICAgIH0sCiAgICApOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY3MuZGFydCc7CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncHJlR2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIEZ1dHVyZTxQcm9jZXNzUmVzdWx0PiBzdWNjZXNzUnVuUHJvY2VzcygKICAgICAgZXhlY3V0YWJsZSwKICAgICAgYXJncywgewogICAgICBTdHJpbmc/IHdvcmtpbmdEaXJlY3RvcnksCiAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICB9KSA9PgogICAgICAgIEZ1dHVyZS52YWx1ZShQcm9jZXNzUmVzdWx0KDAsIDAsICcnLCAnJykpOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpCiAgICAgICAgLi52YXJzWydkYXJ0VmVyc2lvbiddID0gJ3N0YWJsZSc7CgogICAgICB3aGVuKCgpID0+IGxvZ2dlci5wcm9ncmVzcyhhbnkoKSkpLnRoZW5SZXR1cm4oX01vY2tQcm9ncmVzcygpKTsKICAgIH0pOwoKICAgIHRlc3QoJ3J1biBjb21wbGV0ZXMnLCAoKSB7CiAgICAgIGV4cGVjdCgKICAgICAgICBFeGl0T3ZlcnJpZGVzLnJ1blpvbmVkKAogICAgICAgICAgKCkgPT4gcHJlX2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICAgZXhpdDogKF8pIHt9LAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBpZiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiB0aHJvd3MnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGZpbmFsIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbignb29wcycpOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IHRocm93IGV4Y2VwdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGV4Y2VwdGlvbi50b1N0cmluZygpKSkuY2FsbGVkKDEpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm91dGUgY29uZmxpY3RzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHsKICAgICAgICAgICcvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvX2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoJ3JvdXRlcy9oZWxsby9pbmRleC5kYXJ0Jyl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKCcvaGVsbG8nKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXQoMSkgZm9yIHJvZ3VlIHJvdXRlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogWwogICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgKSwKICAgICAgICBdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb2d1ZSByb3V0ZSBkZXRlY3RlZC4ke2RlZmF1bHRGb3JlZ3JvdW5kLndyYXAoJyAnKX1SZW5hbWUgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gdG8gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ3dvcmtzIHdpdGggd29ya3NwYWNlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlUm9vdCk7CiAgICAgIGZpbmFsIHNlcnZlciA9IERpcmVjdG9yeSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdzZXJ2ZXInKSwKICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKHdvcmtzcGFjZUNoaWxkKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "type": "text" + }, + { + "path": "build/test/pubspecs.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5IGFuZCBoYXMgYSBkaWZmZXJlbnQgcGFja2FnZSBuYW1lIHRoYW4gdGhlIGRpcmVjdG9yeSBuYW1lLgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IG92ZXJyaWRkZW4gZGVwZW5kZW5jeSBmcm9tIGdpdC4KY29uc3QgZm9vUGF0aCA9ICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KICBmb28yOgogICAgcGF0aDogLi4vLi4vZm9vMgogIGRpcmVjdF9tYWluOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGRpcmVjdF9vdmVycmlkZGVuOgogICAgZ2l0OgogICAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24KICAgICAgcGF0aDogcGFja2FnZXMvbWFzb24KICAgICAgcmVmOiA3MmMzMDZhOGQ4YWJmMzA2YjVkMDI0Zjk1YWFjMjliYTVmZDk2NTc3CicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3QgZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZm9vOgogICAgcGF0aDogLi4vLi4vZm9vCiAgYmFyOgogICAgcGF0aDogcGFja2FnZXMvYmFyCiAgbWFzb246IF4wLjEuMC1kZXYuNTAKZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3Qgbm9QYXRoRGVwZW5kZW5jaWVzID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIG1hc29uOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VSb290ID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIHNlcnZlcjoKICAgIHBhdGg6IHBhY2thZ2VzL3NlcnZlciAgCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL3NlcnZlcgonJyc7CgovLy8gQW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgYHB1YnNwZWMueWFtbGAgZmlsZSB3aXRoOgovLy8KLy8vICogRGFydCB3b3Jrc3BhY2VzIGVuYWJsZWQKY29uc3Qgd29ya3NwYWNlQ2hpbGQgPSAnJycKbmFtZTogc2VydmVyCnJlc29sdXRpb246IHdvcmtzcGFjZQonJyc7Cg==", "type": "text" }, { - "path": "build/test/pubspec_locks.dart", + "path": "build/test/src/copy_workspace_pubspec_lock_test.dart", "data": - "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeSBhbmQgaGFzIGEgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSB0aGFuIHRoZSBkaXJlY3RvcnkgbmFtZS4KLy8vICogQSBkaXJlY3QgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBkZXYgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBvdmVycmlkZGVuIGRlcGVuZGVuY3kgZnJvbSBnaXQuCmNvbnN0IGZvb1BhdGggPSAnJycKcGFja2FnZXM6CiAgYXJnczoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBhcmdzCiAgICAgIHNoYTI1NjogZWVmNmM0NmI2MjJlMDQ5NGEzNmM1YTEyZDEwZDc3ZmI0ZTg1NTUwMWE5MWMxYjllZjkzMzkzMjZlNThmMDU5NgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjIuNC4yIgogIGZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgc2Vjb25kX2ZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vMiIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGRpcmVjdF9tYWluOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGRpcmVjdF9tYWluCiAgICAgIHNoYTI1NjogZmRjOWVhOTA1ZTdjNjkwZmUzOWQyZjk5NDZiN2FlYWQ4NmZkOTc2ZjhlZGY5N2QyNTIxYTY1ZDI2MGJiZjUwOQogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MCIKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBkZXYiCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogdGVzdAogICAgICBzaGEyNTY6ICI5YjBkZDhlMzZhZjRhNWIxNTY5MDI5OTQ5ZDUwYTUyY2IyYTJhMmZkYWEyMGNlYmI5NmU2NjAzYjlhZTI0MWY5IgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjEuMjQuNiIKICBkaXJlY3Rfb3ZlcnJpZGRlbjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3Qgb3ZlcnJpZGRlbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvbWFzb24iCiAgICAgIHJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHJlc29sdmVkLXJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24iCiAgICBzb3VyY2U6IGdpdAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MiIKc2RrczoKICBkYXJ0OiAiPj0zLjAuMCA8NC4wLjAiCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy5sb2NrYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIHRyYW5zaXRpdmUgZGVwZW5kZW5jeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5ID0gJycnCnBhY2thZ2VzOgogIGFyZ3M6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogYXJncwogICAgICBzaGEyNTY6IGVlZjZjNDZiNjIyZTA0OTRhMzZjNWExMmQxMGQ3N2ZiNGU4NTU1MDFhOTFjMWI5ZWY5MzM5MzI2ZTU4ZjA1OTYKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIyLjQuMiIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogIi4uLy4uL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGJhcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvYmFyIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IG5vUGF0aERlcGVuZGVuY2llcyA9ICcnJwpwYWNrYWdlczoKICBhcmdzOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFyZ3MKICAgICAgc2hhMjU2OiBlZWY2YzQ2YjYyMmUwNDk0YTM2YzVhMTJkMTBkNzdmYjRlODU1NTAxYTkxYzFiOWVmOTMzOTMyNmU1OGYwNTk2CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMi40LjIiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaycsICgpIHsKICAgIGxhdGUgTGlzdDxpbnQ+IGV4aXRDYWxsczsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKICAgIGxhdGUgRGlyZWN0b3J5IGJ1aWxkRGlyZWN0b3J5OwogICAgbGF0ZSBEaXJlY3Rvcnkgd29ya2luZ0RpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBidWlsZERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCdidWlsZCcpOwogICAgICB3b3JraW5nRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3dvcmtpbmcnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpIHsKICAgICAgICBidWlsZERpcmVjdG9yeS5kZWxldGUoKS5pZ25vcmUoKTsKICAgICAgICB3b3JraW5nRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICB9KTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3Igd2hlbiB1bmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB3b3Jrc3BhY2Ugcm9vdCcsICgpIHsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnVW5hYmxlIHRvIGRldGVybWluZSB3b3Jrc3BhY2Ugcm9vdCBmb3IgJHt3b3JraW5nRGlyZWN0b3J5LnBhdGh9JywKICAgICAgICApLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvciB3aGVuIHVuYWJsZSB0byBwYXJzZSBwdWJzcGVjLnlhbWwnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCdpbnZhbGlkIHB1YnNwZWMueWFtbCcpOwogICAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAke3dvcmtpbmdEaXJlY3RvcnkucGF0aH0nLAogICAgICAgICksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdGhpbmcgd2hlbiBwdWJzcGVjLmxvY2sgZG9lcyBub3QgZXhpc3QgaW4gd29ya3NwYWNlIHJvb3QnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKSwgaXNFbXB0eSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yIHdoZW4gdW5hYmxlIHRvIGNvcHkgbG9ja2ZpbGUnLCAoKSB7CiAgICAgIGNvbnN0IHB1YnNwZWNMb2NrQ29udGVudHMgPSAnJycKIyBHZW5lcmF0ZWQgYnkgcHViCiMgU2VlIGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I2xvY2tmaWxlCnBhY2thZ2VzOgonJyc7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGZpbmFsIGZpbGUgPSBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLndyaXRlQXNTdHJpbmdTeW5jKHB1YnNwZWNMb2NrQ29udGVudHMpOwogICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBmaWxlLnBhdGhdKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb3BpZXMgcHVic3BlYy5sb2NrIHRvIGJ1aWxkIGRpcmVjdG9yeSB3aGVuIGZvdW5kJywgKCkgewogICAgICBjb25zdCBwdWJzcGVjTG9ja0NvbnRlbnRzID0gJycnCiMgR2VuZXJhdGVkIGJ5IHB1YgojIFNlZSBodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9nbG9zc2FyeSNsb2NrZmlsZQpwYWNrYWdlczoKJycnOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwp2ZXJzaW9uOiAwLjAuMAplbnZpcm9ubWVudDoKICBzZGs6IF4zLjguMAp3b3Jrc3BhY2U6CiAgLSBwYWNrYWdlcy9oZWxsb193b3JsZAonJycpOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhwdWJzcGVjTG9ja0NvbnRlbnRzKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMgPSBidWlsZERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QsCiAgICAgICAgaXNBPEZpbGU+KCkuaGF2aW5nKAogICAgICAgICAgKGYpID0+IHBhdGguYmFzZW5hbWUoZi5wYXRoKSwKICAgICAgICAgICduYW1lJywKICAgICAgICAgICdwdWJzcGVjLmxvY2snLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdCgKICAgICAgICAoYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlKS5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgZXF1YWxzKHB1YnNwZWNMb2NrQ29udGVudHMpLAogICAgICApOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -118,7 +136,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNzLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyJywgKCkgewogICAgdGVzdCgnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyA9PiBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnkgPQogICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbzInKTsKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28yJywKICAgICAgKTsKCiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckZm9vMlBhY2thZ2VEaXJlY3RvcnkgLT4gJGZvbzJQYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgXSk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgPT4gY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyksCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -127,6 +145,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdkYXJ0UHViR2V0JywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb21wbGV0ZXMgd2hlbiBwcm9jZXNzIHN1Y2NlZWRzJywgKCkgYXN5bmMgewogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICBleHBlY3QoZXhlY3V0YWJsZSwgZXF1YWxzKCdkYXJ0JykpOwogICAgICAgICAgZXhwZWN0KGFyZ3MsIGVxdWFscyhbJ3B1YicsICdnZXQnXSkpOwogICAgICAgICAgZXhwZWN0KHdvcmtpbmdEaXJlY3RvcnksIGVxdWFscygnLicpKTsKICAgICAgICAgIGV4cGVjdChydW5JblNoZWxsLCBpc1RydWUpOwogICAgICAgICAgcmV0dXJuIHByb2Nlc3NSZXN1bHQ7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2hlbiBwcm9jZXNzIGZhaWxzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKCiAgICAgIGZpbmFsIHByb2Nlc3NSZXN1bHQgPSBQcm9jZXNzUmVzdWx0KAogICAgICAgIHByb2Nlc3NJZCwKICAgICAgICBFeGl0Q29kZS5zb2Z0d2FyZS5jb2RlLAogICAgICAgICcnLAogICAgICAgIGVycm9yLAogICAgICApOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbRXhpdENvZGUuc29mdHdhcmUuY29kZV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXJyb3IpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aGVuIFByb2Nlc3NFeGNlcHRpb24gb2NjdXJzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICB0aHJvdyBQcm9jZXNzRXhjZXB0aW9uKAogICAgICAgICAgICAnZGFydCcsCiAgICAgICAgICAgIFsncHViJywgJ2dldCddLAogICAgICAgICAgICBlcnJvciwKICAgICAgICAgICAgRXhpdENvZGUuc29mdHdhcmUuY29kZSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoW0V4aXRDb2RlLnNvZnR3YXJlLmNvZGVdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGVycm9yKSkuY2FsbGVkKDEpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, + { + "path": "build/test/src/disable_workspace_resolution_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdChwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwgZXF1YWxzKCcnJwoKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QocHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksIGVxdWFscygnJycKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiB1bmFibGUgdG8gcmVhZCBwdWJzcGVjX292ZXJyaWRlcycsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, { "path": "build/test/src/exit_overrides_test.dart", "data": @@ -136,13 +160,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/get_internal_path_dependencies_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpwYWNrYWdlczoKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgogIG1hc29uOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgonJycsCiAgICAgICk7CiAgICAgIGV4cGVjdChnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoZGlyZWN0b3J5KSwgY29tcGxldGlvbihpc0VtcHR5KSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldHVybnMgY29ycmVjdCBwYXRoIGRlcGVuZGVuY2llcycsICgpIHsKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCnBhY2thZ2VzOgogIGRhcnRfZnJvZzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGF0aC90by9kYXJ0X2Zyb2ciCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKICBkYXJ0X2Zyb2dfZ2VuOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIHBhdGg6ICJwYXRoL3RvL2RhcnRfZnJvZ19nZW4iCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKJycnLAogICAgICApOwogICAgICBleHBlY3QoCiAgICAgICAgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKGRpcmVjdG9yeSksCiAgICAgICAgY29tcGxldGlvbigKICAgICAgICAgIGVxdWFscyhbJ3BhdGgvdG8vZGFydF9mcm9nJywgJ3BhdGgvdG8vZGFydF9mcm9nX2dlbiddKSwKICAgICAgICApLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKICBtYXNvbjogXjAuMS4wCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLCBjb21wbGV0aW9uKGlzRW1wdHkpKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0dXJucyBjb3JyZWN0IHBhdGggZGVwZW5kZW5jaWVzJywgKCkgewogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZGFydF9mcm9nOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2cKICBkYXJ0X2Zyb2dfZ2VuOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2dfZ2VuCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KAogICAgICAgIGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLAogICAgICAgIGNvbXBsZXRpb24oCiAgICAgICAgICBlcXVhbHMoWydwYXRoL3RvL2RhcnRfZnJvZycsICdwYXRoL3RvL2RhcnRfZnJvZ19nZW4nXSksCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { - "path": "build/test/src/pubspec_lock/pubspec_lock_test.dart", + "path": "build/test/src/uses_workspace_resolution_test.dart", "data": - "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsKCi8vLyBBIHZhbGlkIHB1YnNwZWMgbG9jayBmaWxlIHdpdGggbm8gcGFja2FnZXMuCmNvbnN0IF9lbXB0eVB1YnNwZWNMb2NrQ29udGVudCA9ICcnJwpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKCicnJzsK", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJ2ludmFsaWQgcHVic3BlYy55YW1sJyk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBmYWxzZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzRmFsc2UsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQYXJzZWRZYW1sRXhjZXB0aW9uJykpKSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGlzIHZhbGlkIHdpdGggbm8gcmVzb2x1dGlvbicsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgZmFsc2UnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc0ZhbHNlLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIHJlc29sdXRpb24gd29ya3NwYWNlJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnJlc29sdXRpb246IHdvcmtzcGFjZQonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgdHJ1ZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzVHJ1ZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" }, { @@ -154,7 +178,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/copy_workspace_pubspec_lock.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCgpOwogIGlmICh3b3Jrc3BhY2VSb290ID09IG51bGwpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgJ1VuYWJsZSB0byBkZXRlcm1pbmUgd29ya3NwYWNlIHJvb3QgZm9yICR3b3JraW5nRGlyZWN0b3J5JywKICAgICk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CiAgZmluYWwgcHVic3BlY0xvY2tGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya3NwYWNlUm9vdC5wYXRoLCAncHVic3BlYy5sb2NrJykpOwogIGlmICghcHVic3BlY0xvY2tGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuOwoKICB0cnkgewogICAgcHVic3BlY0xvY2tGaWxlLmNvcHlTeW5jKHBhdGguam9pbihidWlsZERpcmVjdG9yeSwgJ3B1YnNwZWMubG9jaycpKTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9Cn0KCi8vLyBSZXR1cm5zIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgbmVhcmVzdCBEYXJ0IHdvcmtzcGFjZS4KRGlyZWN0b3J5PyBfZ2V0V29ya3NwYWNlUm9vdCgpIHsKICBmaW5hbCBmaWxlID0gX2ZpbmROZWFyZXN0QW5jZXN0b3IoCiAgICB3aGVyZTogKHBhdGgpID0+IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoY3dkOiBEaXJlY3RvcnkocGF0aCkpLAogICk7CiAgaWYgKGZpbGUgPT0gbnVsbCB8fCAhZmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogIHJldHVybiBEaXJlY3RvcnkocGF0aC5kaXJuYW1lKGZpbGUucGF0aCkpOwp9CgovLy8gVGhlIHdvcmtzcGFjZSByb290IGBwdWJzcGVjLnlhbWxgIGZpbGUgZm9yIHRoaXMgcHJvamVjdC4KRmlsZT8gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbCh7cmVxdWlyZWQgRGlyZWN0b3J5IGN3ZH0pIHsKICB0cnkgewogICAgZmluYWwgcHVic3BlY1lhbWxGaWxlID0gRmlsZShwYXRoLmpvaW4oY3dkLnBhdGgsICdwdWJzcGVjLnlhbWwnKSk7CiAgICBpZiAoIXB1YnNwZWNZYW1sRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogICAgZmluYWwgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UocHVic3BlY1lhbWxGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgICBpZiAocHVic3BlYy53b3Jrc3BhY2U/LmlzRW1wdHkgPz8gdHJ1ZSkgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gcHVic3BlY1lhbWxGaWxlOwogIH0gb24gRXhjZXB0aW9uIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8vIEZpbmRzIG5lYXJlc3QgYW5jZXN0b3IgZmlsZQovLy8gcmVsYXRpdmUgdG8gdGhlIFtjd2RdIHRoYXQgc2F0aXNmaWVzIFt3aGVyZV0uCkZpbGU/IF9maW5kTmVhcmVzdEFuY2VzdG9yKHsKICByZXF1aXJlZCBGaWxlPyBGdW5jdGlvbihTdHJpbmcgcGF0aCkgd2hlcmUsCiAgRGlyZWN0b3J5PyBjd2QsCn0pIHsKICBEaXJlY3Rvcnk/IHByZXY7CiAgdmFyIGRpciA9IGN3ZCA/PyBEaXJlY3RvcnkuY3VycmVudDsKICB3aGlsZSAocHJldj8ucGF0aCAhPSBkaXIucGF0aCkgewogICAgZmluYWwgZmlsZSA9IHdoZXJlKGRpci5wYXRoKTsKICAgIGlmIChmaWxlPy5leGlzdHNTeW5jKCkgPz8gZmFsc2UpIHJldHVybiBmaWxlOwogICAgcHJldiA9IGRpcjsKICAgIGRpciA9IGRpci5wYXJlbnQ7CiAgfQogIHJldHVybiBudWxsOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRGFydCB3b3Jrc3BhY2UuCkRpcmVjdG9yeT8gX2dldFdvcmtzcGFjZVJvb3QoU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnkpIHsKICBmaW5hbCBmaWxlID0gX2ZpbmROZWFyZXN0QW5jZXN0b3IoCiAgICB3aGVyZTogKHBhdGgpID0+IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoY3dkOiBEaXJlY3RvcnkocGF0aCkpLAogICAgY3dkOiBEaXJlY3Rvcnkod29ya2luZ0RpcmVjdG9yeSksCiAgKTsKICBpZiAoZmlsZSA9PSBudWxsIHx8ICFmaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgcmV0dXJuIERpcmVjdG9yeShwYXRoLmRpcm5hbWUoZmlsZS5wYXRoKSk7Cn0KCi8vLyBUaGUgd29ya3NwYWNlIHJvb3QgYHB1YnNwZWMueWFtbGAgZmlsZSBmb3IgdGhpcyBwcm9qZWN0LgpGaWxlPyBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKHtyZXF1aXJlZCBEaXJlY3RvcnkgY3dkfSkgewogIHRyeSB7CiAgICBmaW5hbCBwdWJzcGVjWWFtbEZpbGUgPSBGaWxlKHBhdGguam9pbihjd2QucGF0aCwgJ3B1YnNwZWMueWFtbCcpKTsKICAgIGlmICghcHVic3BlY1lhbWxGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgICBmaW5hbCBwdWJzcGVjID0gUHVic3BlYy5wYXJzZShwdWJzcGVjWWFtbEZpbGUucmVhZEFzU3RyaW5nU3luYygpKTsKICAgIGlmIChwdWJzcGVjLndvcmtzcGFjZT8uaXNFbXB0eSA/PyB0cnVlKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBwdWJzcGVjWWFtbEZpbGU7CiAgfSBvbiBFeGNlcHRpb24gewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLy8gRmluZHMgbmVhcmVzdCBhbmNlc3RvciBmaWxlCi8vLyByZWxhdGl2ZSB0byB0aGUgW2N3ZF0gdGhhdCBzYXRpc2ZpZXMgW3doZXJlXS4KRmlsZT8gX2ZpbmROZWFyZXN0QW5jZXN0b3IoewogIHJlcXVpcmVkIEZpbGU/IEZ1bmN0aW9uKFN0cmluZyBwYXRoKSB3aGVyZSwKICByZXF1aXJlZCBEaXJlY3RvcnkgY3dkLAp9KSB7CiAgRGlyZWN0b3J5PyBwcmV2OwogIHZhciBkaXIgPSBjd2Q7CiAgd2hpbGUgKHByZXY/LnBhdGggIT0gZGlyLnBhdGgpIHsKICAgIGZpbmFsIGZpbGUgPSB3aGVyZShkaXIucGF0aCk7CiAgICBpZiAoZmlsZT8uZXhpc3RzU3luYygpID8/IGZhbHNlKSByZXR1cm4gZmlsZTsKICAgIHByZXYgPSBkaXI7CiAgICBkaXIgPSBkaXIucGFyZW50OwogIH0KICByZXR1cm4gbnVsbDsKfQo=", "type": "text" }, { @@ -178,7 +202,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgRmlsZSgKICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgKS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbFxuJywgbW9kZTogRmlsZU1vZGUuYXBwZW5kKTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZScpOwogICAgZXhpdCgxKTsKICB9Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgRmlsZSgKICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgKS53cml0ZUFzU3RyaW5nU3luYygnXG5yZXNvbHV0aW9uOiBudWxsXG4nLCBtb2RlOiBGaWxlTW9kZS5hcHBlbmQpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogIH0KfQo=", "type": "text" }, { @@ -190,7 +214,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/get_internal_path_dependencies.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKGRpcmVjdG9yeS5wYXRoKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gcHVic3BlYy5kZXBlbmRlbmNpZXMudmFsdWVzLndoZXJlKAogICAgKGRlcGVuZGVuY3kpIHsKICAgICAgaWYgKGRlcGVuZGVuY3kgaXMhIFBhdGhEZXBlbmRlbmN5KSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBkZXBlbmRlbmN5LnBhdGgpOwogICAgfSwKICApLmNhc3Q8UGF0aERlcGVuZGVuY3k+KCk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKChkZXBlbmRlbmN5KSA9PiBkZXBlbmRlbmN5LnBhdGgpLnRvTGlzdCgpOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKGRpcmVjdG9yeS5wYXRoKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gcHVic3BlYy5kZXBlbmRlbmNpZXMudmFsdWVzLndoZXJlKAogICAgKGRlcGVuZGVuY3kpIHsKICAgICAgcmV0dXJuIGRlcGVuZGVuY3kgaXMgUGF0aERlcGVuZGVuY3kgJiYgcGF0aC5pc1dpdGhpbignJywgZGVwZW5kZW5jeS5wYXRoKTsKICAgIH0sCiAgKS5jYXN0PFBhdGhEZXBlbmRlbmN5PigpOwoKICByZXR1cm4gaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKS50b0xpc3QoKTsKfQo=", "type": "text" }, { @@ -214,7 +238,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCiAgRnV0dXJlPHZvaWQ+IEZ1bmN0aW9uKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIGNvcHlQYXRoID0gaW9fZXhwYW5kZWQuY29weVBhdGgsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKICBmaW5hbCB1c2VzV29ya3NwYWNlcyA9IHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwogIGZpbmFsIHVzZXNXb3Jrc3BhY2VzID0gdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgZXhpdDogZXhpdCwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgaWYgKHVzZXNXb3Jrc3BhY2VzKSB7CiAgICAvLyBEaXNhYmxlIHdvcmtzcGFjZSByZXNvbHV0aW9uIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXItcGFja2FnZSBsb2NrZmlsZXMuCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAogICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICAgIC8vIENvcHkgdGhlIHB1YnNwZWMubG9jayBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdCB0byBlbnN1cmUgdGhlIHNhbWUgdmVyc2lvbnMKICAgIC8vIG9mIGRlcGVuZGVuY2llcyBhcmUgdXNlZCBpbiB0aGUgcHJvZHVjdGlvbiBidWlsZC4KICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgY29udGV4dCwKICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", "type": "text" }, { @@ -226,19 +250,25 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/post_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { "path": "test/pre_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgKICAgICAgJ3dvcmtzIHdpdGggZXh0ZXJuYWwgZGVwZW5kZW5jaWVzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICAgIHJvdXRlczogW10sCiAgICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgICk7CgogICAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICAnJycKbmFtZTogZXhhbXBsZQp2ZXJzaW9uOiAwLjEuMAplbnZpcm9ubWVudDoKICBzZGs6IF4yLjE3LjAKZGVwZW5kZW5jaWVzOgogIG1hc29uOiBhbnkKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBhbnkKJycnLAogICAgICAgICk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgICBmb29QYXRoLAogICAgICAgICk7CiAgICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgICApOwoKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICAgIH0sCiAgICApOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY3MuZGFydCc7CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncHJlR2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIEZ1dHVyZTxQcm9jZXNzUmVzdWx0PiBzdWNjZXNzUnVuUHJvY2VzcygKICAgICAgZXhlY3V0YWJsZSwKICAgICAgYXJncywgewogICAgICBTdHJpbmc/IHdvcmtpbmdEaXJlY3RvcnksCiAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICB9KSA9PgogICAgICAgIEZ1dHVyZS52YWx1ZShQcm9jZXNzUmVzdWx0KDAsIDAsICcnLCAnJykpOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpCiAgICAgICAgLi52YXJzWydkYXJ0VmVyc2lvbiddID0gJ3N0YWJsZSc7CgogICAgICB3aGVuKCgpID0+IGxvZ2dlci5wcm9ncmVzcyhhbnkoKSkpLnRoZW5SZXR1cm4oX01vY2tQcm9ncmVzcygpKTsKICAgIH0pOwoKICAgIHRlc3QoJ3J1biBjb21wbGV0ZXMnLCAoKSB7CiAgICAgIGV4cGVjdCgKICAgICAgICBFeGl0T3ZlcnJpZGVzLnJ1blpvbmVkKAogICAgICAgICAgKCkgPT4gcHJlX2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICAgZXhpdDogKF8pIHt9LAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBpZiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiB0aHJvd3MnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGZpbmFsIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbignb29wcycpOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IHRocm93IGV4Y2VwdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGV4Y2VwdGlvbi50b1N0cmluZygpKSkuY2FsbGVkKDEpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm91dGUgY29uZmxpY3RzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHsKICAgICAgICAgICcvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvX2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoJ3JvdXRlcy9oZWxsby9pbmRleC5kYXJ0Jyl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKCcvaGVsbG8nKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXQoMSkgZm9yIHJvZ3VlIHJvdXRlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogWwogICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgKSwKICAgICAgICBdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb2d1ZSByb3V0ZSBkZXRlY3RlZC4ke2RlZmF1bHRGb3JlZ3JvdW5kLndyYXAoJyAnKX1SZW5hbWUgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gdG8gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ3dvcmtzIHdpdGggd29ya3NwYWNlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlUm9vdCk7CiAgICAgIGZpbmFsIHNlcnZlciA9IERpcmVjdG9yeSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdzZXJ2ZXInKSwKICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKHdvcmtzcGFjZUNoaWxkKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "type": "text" + }, + { + "path": "test/pubspecs.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5IGFuZCBoYXMgYSBkaWZmZXJlbnQgcGFja2FnZSBuYW1lIHRoYW4gdGhlIGRpcmVjdG9yeSBuYW1lLgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IG92ZXJyaWRkZW4gZGVwZW5kZW5jeSBmcm9tIGdpdC4KY29uc3QgZm9vUGF0aCA9ICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KICBmb28yOgogICAgcGF0aDogLi4vLi4vZm9vMgogIGRpcmVjdF9tYWluOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGRpcmVjdF9vdmVycmlkZGVuOgogICAgZ2l0OgogICAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24KICAgICAgcGF0aDogcGFja2FnZXMvbWFzb24KICAgICAgcmVmOiA3MmMzMDZhOGQ4YWJmMzA2YjVkMDI0Zjk1YWFjMjliYTVmZDk2NTc3CicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3QgZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZm9vOgogICAgcGF0aDogLi4vLi4vZm9vCiAgYmFyOgogICAgcGF0aDogcGFja2FnZXMvYmFyCiAgbWFzb246IF4wLjEuMC1kZXYuNTAKZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3Qgbm9QYXRoRGVwZW5kZW5jaWVzID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIG1hc29uOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VSb290ID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIHNlcnZlcjoKICAgIHBhdGg6IHBhY2thZ2VzL3NlcnZlciAgCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL3NlcnZlcgonJyc7CgovLy8gQW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgYHB1YnNwZWMueWFtbGAgZmlsZSB3aXRoOgovLy8KLy8vICogRGFydCB3b3Jrc3BhY2VzIGVuYWJsZWQKY29uc3Qgd29ya3NwYWNlQ2hpbGQgPSAnJycKbmFtZTogc2VydmVyCnJlc29sdXRpb246IHdvcmtzcGFjZQonJyc7Cg==", "type": "text" }, { - "path": "test/pubspec_locks.dart", + "path": "test/src/copy_workspace_pubspec_lock_test.dart", "data": - "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeSBhbmQgaGFzIGEgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSB0aGFuIHRoZSBkaXJlY3RvcnkgbmFtZS4KLy8vICogQSBkaXJlY3QgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBkZXYgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBvdmVycmlkZGVuIGRlcGVuZGVuY3kgZnJvbSBnaXQuCmNvbnN0IGZvb1BhdGggPSAnJycKcGFja2FnZXM6CiAgYXJnczoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBhcmdzCiAgICAgIHNoYTI1NjogZWVmNmM0NmI2MjJlMDQ5NGEzNmM1YTEyZDEwZDc3ZmI0ZTg1NTUwMWE5MWMxYjllZjkzMzkzMjZlNThmMDU5NgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjIuNC4yIgogIGZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgc2Vjb25kX2ZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vMiIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGRpcmVjdF9tYWluOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGRpcmVjdF9tYWluCiAgICAgIHNoYTI1NjogZmRjOWVhOTA1ZTdjNjkwZmUzOWQyZjk5NDZiN2FlYWQ4NmZkOTc2ZjhlZGY5N2QyNTIxYTY1ZDI2MGJiZjUwOQogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MCIKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBkZXYiCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogdGVzdAogICAgICBzaGEyNTY6ICI5YjBkZDhlMzZhZjRhNWIxNTY5MDI5OTQ5ZDUwYTUyY2IyYTJhMmZkYWEyMGNlYmI5NmU2NjAzYjlhZTI0MWY5IgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjEuMjQuNiIKICBkaXJlY3Rfb3ZlcnJpZGRlbjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3Qgb3ZlcnJpZGRlbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvbWFzb24iCiAgICAgIHJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHJlc29sdmVkLXJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24iCiAgICBzb3VyY2U6IGdpdAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MiIKc2RrczoKICBkYXJ0OiAiPj0zLjAuMCA8NC4wLjAiCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy5sb2NrYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIHRyYW5zaXRpdmUgZGVwZW5kZW5jeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5ID0gJycnCnBhY2thZ2VzOgogIGFyZ3M6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogYXJncwogICAgICBzaGEyNTY6IGVlZjZjNDZiNjIyZTA0OTRhMzZjNWExMmQxMGQ3N2ZiNGU4NTU1MDFhOTFjMWI5ZWY5MzM5MzI2ZTU4ZjA1OTYKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIyLjQuMiIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogIi4uLy4uL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGJhcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvYmFyIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IG5vUGF0aERlcGVuZGVuY2llcyA9ICcnJwpwYWNrYWdlczoKICBhcmdzOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFyZ3MKICAgICAgc2hhMjU2OiBlZWY2YzQ2YjYyMmUwNDk0YTM2YzVhMTJkMTBkNzdmYjRlODU1NTAxYTkxYzFiOWVmOTMzOTMyNmU1OGYwNTk2CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMi40LjIiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaycsICgpIHsKICAgIGxhdGUgTGlzdDxpbnQ+IGV4aXRDYWxsczsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKICAgIGxhdGUgRGlyZWN0b3J5IGJ1aWxkRGlyZWN0b3J5OwogICAgbGF0ZSBEaXJlY3Rvcnkgd29ya2luZ0RpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBidWlsZERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCdidWlsZCcpOwogICAgICB3b3JraW5nRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3dvcmtpbmcnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpIHsKICAgICAgICBidWlsZERpcmVjdG9yeS5kZWxldGUoKS5pZ25vcmUoKTsKICAgICAgICB3b3JraW5nRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICB9KTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3Igd2hlbiB1bmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB3b3Jrc3BhY2Ugcm9vdCcsICgpIHsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnVW5hYmxlIHRvIGRldGVybWluZSB3b3Jrc3BhY2Ugcm9vdCBmb3IgJHt3b3JraW5nRGlyZWN0b3J5LnBhdGh9JywKICAgICAgICApLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvciB3aGVuIHVuYWJsZSB0byBwYXJzZSBwdWJzcGVjLnlhbWwnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCdpbnZhbGlkIHB1YnNwZWMueWFtbCcpOwogICAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAke3dvcmtpbmdEaXJlY3RvcnkucGF0aH0nLAogICAgICAgICksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdGhpbmcgd2hlbiBwdWJzcGVjLmxvY2sgZG9lcyBub3QgZXhpc3QgaW4gd29ya3NwYWNlIHJvb3QnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKSwgaXNFbXB0eSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yIHdoZW4gdW5hYmxlIHRvIGNvcHkgbG9ja2ZpbGUnLCAoKSB7CiAgICAgIGNvbnN0IHB1YnNwZWNMb2NrQ29udGVudHMgPSAnJycKIyBHZW5lcmF0ZWQgYnkgcHViCiMgU2VlIGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I2xvY2tmaWxlCnBhY2thZ2VzOgonJyc7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGZpbmFsIGZpbGUgPSBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLndyaXRlQXNTdHJpbmdTeW5jKHB1YnNwZWNMb2NrQ29udGVudHMpOwogICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBmaWxlLnBhdGhdKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb3BpZXMgcHVic3BlYy5sb2NrIHRvIGJ1aWxkIGRpcmVjdG9yeSB3aGVuIGZvdW5kJywgKCkgewogICAgICBjb25zdCBwdWJzcGVjTG9ja0NvbnRlbnRzID0gJycnCiMgR2VuZXJhdGVkIGJ5IHB1YgojIFNlZSBodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9nbG9zc2FyeSNsb2NrZmlsZQpwYWNrYWdlczoKJycnOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwp2ZXJzaW9uOiAwLjAuMAplbnZpcm9ubWVudDoKICBzZGs6IF4zLjguMAp3b3Jrc3BhY2U6CiAgLSBwYWNrYWdlcy9oZWxsb193b3JsZAonJycpOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhwdWJzcGVjTG9ja0NvbnRlbnRzKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMgPSBidWlsZERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QsCiAgICAgICAgaXNBPEZpbGU+KCkuaGF2aW5nKAogICAgICAgICAgKGYpID0+IHBhdGguYmFzZW5hbWUoZi5wYXRoKSwKICAgICAgICAgICduYW1lJywKICAgICAgICAgICdwdWJzcGVjLmxvY2snLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdCgKICAgICAgICAoYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlKS5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgZXF1YWxzKHB1YnNwZWNMb2NrQ29udGVudHMpLAogICAgICApOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -250,7 +280,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNzLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyJywgKCkgewogICAgdGVzdCgnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyA9PiBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnkgPQogICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbzInKTsKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28yJywKICAgICAgKTsKCiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckZm9vMlBhY2thZ2VEaXJlY3RvcnkgLT4gJGZvbzJQYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgXSk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgPT4gY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyksCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -259,6 +289,12 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdkYXJ0UHViR2V0JywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb21wbGV0ZXMgd2hlbiBwcm9jZXNzIHN1Y2NlZWRzJywgKCkgYXN5bmMgewogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICBleHBlY3QoZXhlY3V0YWJsZSwgZXF1YWxzKCdkYXJ0JykpOwogICAgICAgICAgZXhwZWN0KGFyZ3MsIGVxdWFscyhbJ3B1YicsICdnZXQnXSkpOwogICAgICAgICAgZXhwZWN0KHdvcmtpbmdEaXJlY3RvcnksIGVxdWFscygnLicpKTsKICAgICAgICAgIGV4cGVjdChydW5JblNoZWxsLCBpc1RydWUpOwogICAgICAgICAgcmV0dXJuIHByb2Nlc3NSZXN1bHQ7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2hlbiBwcm9jZXNzIGZhaWxzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKCiAgICAgIGZpbmFsIHByb2Nlc3NSZXN1bHQgPSBQcm9jZXNzUmVzdWx0KAogICAgICAgIHByb2Nlc3NJZCwKICAgICAgICBFeGl0Q29kZS5zb2Z0d2FyZS5jb2RlLAogICAgICAgICcnLAogICAgICAgIGVycm9yLAogICAgICApOwoKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbRXhpdENvZGUuc29mdHdhcmUuY29kZV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXJyb3IpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aGVuIFByb2Nlc3NFeGNlcHRpb24gb2NjdXJzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBlcnJvciA9ICdvb3BzIHNvbWV0aGluZyB3ZW50IHdyb25nJzsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgZGFydFB1YkdldCgKICAgICAgICBjb250ZXh0LAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6ICcuJywKICAgICAgICBydW5Qcm9jZXNzOiAoCiAgICAgICAgICBleGVjdXRhYmxlLAogICAgICAgICAgYXJncywgewogICAgICAgICAgU3RyaW5nPyB3b3JraW5nRGlyZWN0b3J5LAogICAgICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgICAgICB9KSBhc3luYyB7CiAgICAgICAgICB0aHJvdyBQcm9jZXNzRXhjZXB0aW9uKAogICAgICAgICAgICAnZGFydCcsCiAgICAgICAgICAgIFsncHViJywgJ2dldCddLAogICAgICAgICAgICBlcnJvciwKICAgICAgICAgICAgRXhpdENvZGUuc29mdHdhcmUuY29kZSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoW0V4aXRDb2RlLnNvZnR3YXJlLmNvZGVdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGVycm9yKSkuY2FsbGVkKDEpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, + { + "path": "test/src/disable_workspace_resolution_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdChwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwgZXF1YWxzKCcnJwoKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QocHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksIGVxdWFscygnJycKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiB1bmFibGUgdG8gcmVhZCBwdWJzcGVjX292ZXJyaWRlcycsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, { "path": "test/src/exit_overrides_test.dart", "data": @@ -268,7 +304,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/get_internal_path_dependencies_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpwYWNrYWdlczoKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgogIG1hc29uOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgonJycsCiAgICAgICk7CiAgICAgIGV4cGVjdChnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoZGlyZWN0b3J5KSwgY29tcGxldGlvbihpc0VtcHR5KSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldHVybnMgY29ycmVjdCBwYXRoIGRlcGVuZGVuY2llcycsICgpIHsKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCnBhY2thZ2VzOgogIGRhcnRfZnJvZzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGF0aC90by9kYXJ0X2Zyb2ciCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKICBkYXJ0X2Zyb2dfZ2VuOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIHBhdGg6ICJwYXRoL3RvL2RhcnRfZnJvZ19nZW4iCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKJycnLAogICAgICApOwogICAgICBleHBlY3QoCiAgICAgICAgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKGRpcmVjdG9yeSksCiAgICAgICAgY29tcGxldGlvbigKICAgICAgICAgIGVxdWFscyhbJ3BhdGgvdG8vZGFydF9mcm9nJywgJ3BhdGgvdG8vZGFydF9mcm9nX2dlbiddKSwKICAgICAgICApLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKICBtYXNvbjogXjAuMS4wCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLCBjb21wbGV0aW9uKGlzRW1wdHkpKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0dXJucyBjb3JyZWN0IHBhdGggZGVwZW5kZW5jaWVzJywgKCkgewogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZGFydF9mcm9nOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2cKICBkYXJ0X2Zyb2dfZ2VuOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2dfZ2VuCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KAogICAgICAgIGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLAogICAgICAgIGNvbXBsZXRpb24oCiAgICAgICAgICBlcXVhbHMoWydwYXRoL3RvL2RhcnRfZnJvZycsICdwYXRoL3RvL2RhcnRfZnJvZ19nZW4nXSksCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CiAgfSk7Cn0K", + "type": "text" + }, + { + "path": "test/src/uses_workspace_resolution_test.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJ2ludmFsaWQgcHVic3BlYy55YW1sJyk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBmYWxzZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzRmFsc2UsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQYXJzZWRZYW1sRXhjZXB0aW9uJykpKSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGlzIHZhbGlkIHdpdGggbm8gcmVzb2x1dGlvbicsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgZmFsc2UnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc0ZhbHNlLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIHJlc29sdXRpb24gd29ya3NwYWNlJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnJlc29sdXRpb246IHdvcmtzcGFjZQonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgdHJ1ZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzVHJ1ZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" } ], From b0809167a0daa1a0055baf9515287834f08b3a02 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Tue, 26 Aug 2025 23:25:18 -0500 Subject: [PATCH 17/31] refactor: go back to lockfiles --- .../lib/dart_frog_prod_server_hooks.dart | 2 +- .../src/create_external_packages_folder.dart | 43 +-- .../src/get_internal_path_dependencies.dart | 18 +- .../hooks/lib/src/get_pubspec.dart | 20 -- .../hooks/lib/src/get_pubspec_lock.dart | 19 ++ .../lib/src/pubspec_lock/pubspec_lock.dart | 232 +++++++++++++ .../hooks/test/pre_gen_test.dart | 18 +- .../hooks/test/pubspec_locks.dart | 149 +++++++++ .../hooks/test/pubspecs.dart | 58 ---- .../create_external_packages_folder_test.dart | 115 ++++--- .../get_internal_path_dependencies_test.dart | 42 ++- .../src/pubspec_lock/pubspec_lock_test.dart | 316 ++++++++++++++++++ 12 files changed, 864 insertions(+), 168 deletions(-) delete mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart create mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart create mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart create mode 100644 bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart create mode 100644 bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart diff --git a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart index f4382304f..293a01883 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart @@ -5,5 +5,5 @@ export 'src/dart_pub_get.dart'; export 'src/disable_workspace_resolution.dart'; export 'src/exit_overrides.dart'; export 'src/get_internal_path_dependencies.dart'; -export 'src/get_pubspec.dart'; +export 'src/get_pubspec_lock.dart'; export 'src/uses_workspace_resolution.dart'; diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart index 4ec3b0139..21221adde 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart @@ -3,7 +3,6 @@ import 'dart:io'; import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:io/io.dart' as io; import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; /// Signature of [io.copyPath]. typedef CopyPath = Future Function(String from, String to); @@ -14,27 +13,34 @@ Future> createExternalPackagesFolder({ CopyPath copyPath = io.copyPath, }) async { final pathResolver = path.context; - final pubspec = await getPubspec( + final pubspecLock = await getPubspecLock( projectDirectory.path, pathContext: path.context, ); - final externalPathDependencies = pubspec.dependencies.values + final externalPathDependencies = pubspecLock.packages .map( (dependency) { - if (dependency is! PathDependency) return null; - if (pathResolver.isWithin('', dependency.path)) return null; + final pathDescription = dependency.pathDescription; + if (pathDescription == null) { + return null; + } + + final isExternal = !pathResolver.isWithin('', pathDescription.path); + if (!isExternal) return null; return _ExternalPathDependency( - name: path.basenameWithoutExtension(dependency.path), - path: path.join(projectDirectory.path, dependency.path), + name: dependency.name, + path: path.join(projectDirectory.path, pathDescription.path), ); }, ) .whereType<_ExternalPathDependency>() .toList(); - if (externalPathDependencies.isEmpty) return []; + if (externalPathDependencies.isEmpty) { + return []; + } final packagesDirectory = Directory( pathResolver.join( @@ -62,20 +68,17 @@ Future> createExternalPackagesFolder({ buildDirectory.path, 'pubspec_overrides.yaml', ), - ).writeAsString( - ''' + ).writeAsString(''' dependency_overrides: ${copiedExternalPathDependencies.map( - (dependency) { - final name = dependency.name; - final path = - pathResolver.relative(dependency.path, from: buildDirectory.path); - return ' $name:\n path: $path'; - }, - ).join('\n')} -''', - mode: FileMode.append, - ); + (dependency) { + final name = dependency.name; + final path = + pathResolver.relative(dependency.path, from: buildDirectory.path); + return ' $name:\n path: $path'; + }, + ).join('\n')} +'''); return copiedExternalPathDependencies .map((dependency) => dependency.path) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart b/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart index 1bd341061..70fc0ae08 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/get_internal_path_dependencies.dart @@ -2,16 +2,22 @@ import 'dart:io' as io; import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; Future> getInternalPathDependencies(io.Directory directory) async { - final pubspec = await getPubspec(directory.path); + final pubspecLock = await getPubspecLock(directory.path); - final internalPathDependencies = pubspec.dependencies.values.where( + final internalPathDependencies = pubspecLock.packages.where( (dependency) { - return dependency is PathDependency && path.isWithin('', dependency.path); + final pathDescription = dependency.pathDescription; + if (pathDescription == null) { + return false; + } + + return path.isWithin('', pathDescription.path); }, - ).cast(); + ); - return internalPathDependencies.map((dependency) => dependency.path).toList(); + return internalPathDependencies + .map((dependency) => dependency.pathDescription!.path) + .toList(); } diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart b/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart deleted file mode 100644 index 8b996dd3b..000000000 --- a/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'dart:io'; - -import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; - -Future getPubspec( - String workingDirectory, { - path.Context? pathContext, -}) async { - const pubspecYaml = 'pubspec.yaml'; - final pathResolver = pathContext ?? path.context; - final pubspecFile = File( - workingDirectory.isEmpty - ? pubspecYaml - : pathResolver.join(workingDirectory, pubspecYaml), - ); - - final content = await pubspecFile.readAsString(); - return Pubspec.parse(content); -} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart new file mode 100644 index 000000000..25d2d821b --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/get_pubspec_lock.dart @@ -0,0 +1,19 @@ +import 'dart:io'; + +import 'package:dart_frog_prod_server_hooks/src/pubspec_lock/pubspec_lock.dart'; +import 'package:path/path.dart' as path; + +Future getPubspecLock( + String workingDirectory, { + path.Context? pathContext, +}) async { + final pathResolver = pathContext ?? path.context; + final pubspecLockFile = File( + workingDirectory.isEmpty + ? 'pubspec.lock' + : pathResolver.join(workingDirectory, 'pubspec.lock'), + ); + + final content = await pubspecLockFile.readAsString(); + return PubspecLock.fromString(content); +} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart new file mode 100644 index 000000000..942926e06 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/pubspec_lock/pubspec_lock.dart @@ -0,0 +1,232 @@ +import 'dart:collection'; + +import 'package:equatable/equatable.dart'; +import 'package:yaml/yaml.dart'; + +/// {@template pubspec_lock_parse_exception} +/// Thrown when a [PubspecLock] fails to parse. +/// {@endtemplate} +class PubspecLockParseException implements Exception { + /// {@macro pubspec_lock_parse_exception} + const PubspecLockParseException(); +} + +/// A representation of a pubspec.lock file. +class PubspecLock { + const PubspecLock._({ + required this.packages, + }); + + /// Parses a [PubspecLock] from a string. + /// + /// If no packages are found, an empty [PubspecLock] is returned. Those + /// packages entries that cannot be parsed are ignored. + /// + /// It throws a [PubspecLockParseException] if the string cannot be parsed + /// as a [YamlMap]. + factory PubspecLock.fromString(String content) { + late final YamlMap yaml; + try { + yaml = loadYaml(content) as YamlMap; + // ignoring for backward compatibility + // ignore: avoid_catches_without_on_clauses + } catch (_) { + throw const PubspecLockParseException(); + } + + if (!yaml.containsKey('packages')) { + return PubspecLock.empty; + } + + final packages = yaml['packages'] as YamlMap; + + final parsedPackages = []; + for (final entry in packages.entries) { + try { + final package = PubspecLockPackage.fromYamlMap( + name: entry.key as String, + data: entry.value as YamlMap, + ); + parsedPackages.add(package); + // ignoring for backward compatibility + // ignore: avoid_catches_without_on_clauses + } catch (_) { + // Ignore those packages that for some reason cannot be parsed. + } + } + + return PubspecLock._( + packages: UnmodifiableListView(parsedPackages), + ); + } + + /// An empty [PubspecLock]. + static PubspecLock empty = PubspecLock._( + packages: UnmodifiableListView([]), + ); + + /// All the dependencies in the pubspec.lock file. + final UnmodifiableListView packages; +} + +/// {@template pubspec_lock_dependency} +/// A representation of a dependency in a pubspec.lock file. +/// {@endtemplate} +class PubspecLockPackage extends Equatable { + /// {@macro pubspec_lock_dependency} + const PubspecLockPackage({ + required this.name, + required this.type, + this.pathDescription, + }); + + /// Parses a [PubspecLockPackage] from a [YamlMap]. + factory PubspecLockPackage.fromYamlMap({ + required String name, + required YamlMap data, + }) { + final dependency = data['dependency'] as String; + final dependencyType = PubspecLockPackageDependencyType.parse(dependency); + + final description = data['description'] as YamlMap?; + final pathDescription = description != null + ? PubspecPackagePathDescription.tryParse(description) + : null; + + return PubspecLockPackage( + name: name, + type: dependencyType, + pathDescription: pathDescription, + ); + } + + /// The name of the dependency. + final String name; + + /// {@macro pubspec_lock_dependency_type} + final PubspecLockPackageDependencyType type; + + /// {@macro pubspec_package_path_description} + final PubspecPackagePathDescription? pathDescription; + + @override + List get props => [name, type, pathDescription]; +} + +/// {@template pubspec_lock_dependency_type} +/// The type of a [PubspecLockPackage]. +/// {@endtemplate} +enum PubspecLockPackageDependencyType { + /// Another package that your package needs to work. + /// + /// See also: + /// + /// * [Dart's dependency documentation](https://dart.dev/tools/pub/dependencies) + directMain._('direct main'), + + /// Another package that your package needs during development. + /// + /// See also: + /// + /// * [Dart's developer dependency documentation](https://dart.dev/tools/pub/dependencies#dev-dependencies) + directDev._('direct dev'), + + /// A dependency that your package indirectly uses because one of its + /// dependencies requires it. + /// + /// See also: + /// + /// * [Dart's transitive dependency documentation](https://dart.dev/tools/pub/glossary#transitive-) + transitive._('transitive'), + + /// A dependency that your package overrides that is not already a + /// `direct main` or `direct dev` dependency. + /// + /// See also: + /// + /// * [Dart's dependency override documentation](https://dart.dev/tools/pub/dependencies#dependency-overrides) + directOverridden._('direct overridden'); + + const PubspecLockPackageDependencyType._(this.value); + + /// Parses a [PubspecLockPackageDependencyType] from a string. + /// + /// Throws an [ArgumentError] if the string is not a valid dependency type. + factory PubspecLockPackageDependencyType.parse(String value) { + if (_valueMap.containsKey(value)) { + return _valueMap[value]!; + } + + throw ArgumentError.value( + value, + 'value', + 'Invalid PubspecLockPackageDependencyType value.', + ); + } + + static Map _valueMap = { + for (final type in PubspecLockPackageDependencyType.values) + type.value: type, + }; + + /// The string representation of the [PubspecLockPackageDependencyType] + /// as it appears in a pubspec.lock file. + final String value; +} + +/// {@template pubspec_package_path_description} +/// The description of a path dependency in a pubspec.lock file. +/// +/// For example, in: +/// ```yaml +/// my_package: +/// dependency: "direct main" +/// description: +/// path: "packages/my_package" +/// relative: true +/// source: path +/// version: "1.0.0+1" +/// ``` +/// +/// The description is: +/// ```yaml +/// path: "packages/my_package" +/// relative: true +/// ``` +/// +/// See also: +/// +/// * [PubspecPackagePathDescription.tryParse], which attempts to parses a +/// [YamlMap] into a [PubspecPackagePathDescription]. +/// {@endtemplate} +class PubspecPackagePathDescription extends Equatable { + const PubspecPackagePathDescription({ + required this.path, + required this.relative, + }); + + /// Attempts to parse a [YamlMap] into a [PubspecPackagePathDescription]. + /// + /// Returns `null` if the [YamlMap] does not contain the required data + /// to create a [PubspecPackagePathDescription]. + static PubspecPackagePathDescription? tryParse(YamlMap data) { + if ((!data.containsKey('path') || data['path'] is! String) || + (!data.containsKey('relative') || data['relative'] is! bool)) { + return null; + } + + final path = data['path'] as String; + final relative = data['relative'] as bool; + + return PubspecPackagePathDescription( + path: path, + relative: relative, + ); + } + + final String path; + final bool relative; + + @override + List get props => [path, relative]; +} diff --git a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart index 238a6960d..dbb00f1d4 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart @@ -9,6 +9,7 @@ import 'package:path/path.dart' as path; import 'package:test/test.dart'; import '../pre_gen.dart' as pre_gen; +import 'pubspec_locks.dart'; import 'pubspecs.dart'; class _FakeHookContext extends Fake implements HookContext { @@ -180,6 +181,21 @@ void main() { File( path.join(server.path, 'pubspec.yaml'), ).writeAsStringSync(workspaceChild); + File( + path.join(server.path, 'pubspec.lock'), + ).writeAsStringSync(''' +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + url: "https://pub.dev" + source: hosted + version: "85.0.0" +'''); final exitCalls = []; await pre_gen.preGen( context, @@ -205,7 +221,7 @@ void main() { final directory = Directory.systemTemp.createTempSync(); File( - path.join(directory.path, 'pubspec.yaml'), + path.join(directory.path, 'pubspec.lock'), ).writeAsStringSync(fooPath); final exitCalls = []; await pre_gen.preGen( diff --git a/bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart b/bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart new file mode 100644 index 000000000..c78d25653 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/pubspec_locks.dart @@ -0,0 +1,149 @@ +/// An artificially crafted `pubspec.lock` file with: +/// +/// * A transitive dependency. +/// * A direct main path dependency that is not a child of the project +/// directory. +/// * A direct main path dependency that is not a child of the project +/// directory and has a different package name than the directory name. +/// * A direct main dependency that is hosted. +/// * A direct dev main dependency that is hosted. +/// * A direct overridden dependency from git. +const fooPath = ''' +packages: + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + foo: + dependency: "direct main" + description: + path: "../../foo" + relative: true + source: path + version: "0.0.0" + second_foo: + dependency: "direct main" + description: + path: "../../foo2" + relative: true + source: path + version: "0.0.0" + direct_main: + dependency: "direct main" + description: + name: direct_main + sha256: fdc9ea905e7c690fe39d2f9946b7aead86fd976f8edf97d2521a65d260bbf509 + url: "https://pub.dev" + source: hosted + version: "0.1.0-dev.50" + test: + dependency: "direct dev" + description: + name: test + sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" + url: "https://pub.dev" + source: hosted + version: "1.24.6" + direct_overridden: + dependency: "direct overridden" + description: + path: "packages/mason" + ref: "72c306a8d8abf306b5d024f95aac29ba5fd96577" + resolved-ref: "72c306a8d8abf306b5d024f95aac29ba5fd96577" + url: "https://github.com/alestiago/mason" + source: git + version: "0.1.0-dev.52" +sdks: + dart: ">=3.0.0 <4.0.0" +'''; + +/// An artificially crafted `pubspec.lock` file with: +/// +/// * A transitive dependency. +/// * A direct main path dependency that is not a child of the project +/// directory. +/// * A direct main path dependency that is a child of the project directory. +/// * A direct main dependency that is hosted. +/// * A direct dev main dependency that is hosted. +const fooPathWithInternalDependency = ''' +packages: + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + foo: + dependency: "direct main" + description: + path: "../../foo" + relative: true + source: path + version: "0.0.0" + bar: + dependency: "direct main" + description: + path: "packages/bar" + relative: true + source: path + version: "0.0.0" + mason: + dependency: "direct main" + description: + name: mason + sha256: fdc9ea905e7c690fe39d2f9946b7aead86fd976f8edf97d2521a65d260bbf509 + url: "https://pub.dev" + source: hosted + version: "0.1.0-dev.50" + test: + dependency: "direct dev" + description: + name: test + sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" + url: "https://pub.dev" + source: hosted + version: "1.24.6" +sdks: + dart: ">=3.0.0 <4.0.0" +'''; + +/// An artificially crafted `pubspec.lock` file with: +/// +/// * A transitive dependency. +/// * A direct main dependency that is hosted. +/// * A direct dev main dependency that is hosted. +const noPathDependencies = ''' +packages: + args: + dependency: transitive + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + mason: + dependency: "direct main" + description: + name: mason + sha256: fdc9ea905e7c690fe39d2f9946b7aead86fd976f8edf97d2521a65d260bbf509 + url: "https://pub.dev" + source: hosted + version: "0.1.0-dev.50" + test: + dependency: "direct dev" + description: + name: test + sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" + url: "https://pub.dev" + source: hosted + version: "1.24.6" +sdks: + dart: ">=3.0.0 <4.0.0" +'''; diff --git a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart index 1c75909ba..5dca910f7 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pubspecs.dart @@ -1,61 +1,3 @@ -/// An artificially crafted `pubspec.yaml` file with: -/// -/// * A direct main path dependency that is not a child of the project -/// directory. -/// * A direct main path dependency that is not a child of the project -/// directory and has a different package name than the directory name. -/// * A direct main dependency that is hosted. -/// * A direct dev main dependency that is hosted. -/// * A direct overridden dependency from git. -const fooPath = ''' -name: _ -dependencies: - foo: - path: ../../foo - foo2: - path: ../../foo2 - direct_main: ^0.1.0-dev.50 -dev_dependencies: - test: ^1.0.0 -dependency_overrides: - direct_overridden: - git: - url: https://github.com/alestiago/mason - path: packages/mason - ref: 72c306a8d8abf306b5d024f95aac29ba5fd96577 -'''; - -/// An artificially crafted `pubspec.yaml` file with: -/// -/// * A direct main path dependency that is not a child of the project -/// directory. -/// * A direct main path dependency that is a child of the project directory. -/// * A direct main dependency that is hosted. -/// * A direct dev main dependency that is hosted. -const fooPathWithInternalDependency = ''' -name: _ -dependencies: - foo: - path: ../../foo - bar: - path: packages/bar - mason: ^0.1.0-dev.50 -dev_dependencies: - test: ^1.0.0 -'''; - -/// An artificially crafted `pubspec.yaml` file with: -/// -/// * A direct main dependency that is hosted. -/// * A direct dev main dependency that is hosted. -const noPathDependencies = ''' -name: _ -dependencies: - mason: ^0.1.0-dev.50 -dev_dependencies: - test: ^1.0.0 -'''; - /// An artificially crafted `pubspec.yaml` file with: /// /// * A direct main path dependency that is a child of the project directory. diff --git a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart index a57bead0c..6cb836d5f 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart @@ -4,66 +4,77 @@ import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:path/path.dart' as path; import 'package:test/test.dart'; -import '../pubspecs.dart'; +import '../pubspec_locks.dart'; void main() { group('createExternalPackagesFolder', () { - test('bundles external dependencies with external dependencies', () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'pubspec.yaml')) - .writeAsStringSync(fooPath); - final copyCalls = []; + test( + 'bundles external dependencies with external dependencies', + () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File(path.join(projectDirectory.path, 'pubspec.lock')) + .writeAsStringSync(fooPath); + final copyCalls = []; - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) async => copyCalls.add('$from -> $to'), - ); + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) { + copyCalls.add('$from -> $to'); + return Future.value(); + }, + ); - final fooPackageDirectory = path.join(projectDirectory.path, '../../foo'); - final fooPackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); + final fooPackageDirectory = + path.join(projectDirectory.path, '../../foo'); + final fooPackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); - final foo2PackageDirectory = - path.join(projectDirectory.path, '../../foo2'); - final foo2PackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo2', - ); + final secondFooPackageDirectory = + path.join(projectDirectory.path, '../../foo2'); + final secondFooPackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'second_foo', + ); + expect(copyCalls, [ + '$fooPackageDirectory -> $fooPackageDirectoryTarget', + '$secondFooPackageDirectory -> $secondFooPackageDirectoryTarget', + ]); + }, + ); - expect(copyCalls, [ - '$fooPackageDirectory -> $fooPackageDirectoryTarget', - '$foo2PackageDirectory -> $foo2PackageDirectoryTarget', - ]); - }); + test( + "don't bundle internal path dependencies", + () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File(path.join(projectDirectory.path, 'pubspec.lock')) + .writeAsStringSync(fooPathWithInternalDependency); + final copyCalls = []; - test('does not bundle internal path dependencies', () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File( - path.join(projectDirectory.path, 'pubspec.yaml'), - ).writeAsStringSync(fooPathWithInternalDependency); - final copyCalls = []; + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) { + copyCalls.add('$from -> $to'); + return Future.value(); + }, + ); - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) async => copyCalls.add('$from -> $to'), - ); - - final from = path.join(projectDirectory.path, '../../foo'); - final to = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); - expect(copyCalls, ['$from -> $to']); - }); + final from = path.join(projectDirectory.path, '../../foo'); + final to = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); + expect(copyCalls, ['$from -> $to']); + }, + ); }); } diff --git a/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart index b7f39455e..34dffe105 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/get_internal_path_dependencies_test.dart @@ -8,12 +8,25 @@ void main() { group('getPathDependencies', () { test('returns nothing when there are no path dependencies', () { final directory = Directory.systemTemp.createTempSync(); - File(path.join(directory.path, 'pubspec.yaml')).writeAsStringSync( + File(path.join(directory.path, 'pubspec.lock')).writeAsStringSync( ''' -name: _ -dependencies: - test: ^1.0.0 - mason: ^0.1.0 +packages: + test: + dependency: transitive + description: + name: analyzer + sha256: f85566ec7b3d25cbea60f7dd4f157c5025f2f19233ca4feeed33b616c78a26a3 + url: "https://pub.dev" + source: hosted + version: "6.1.0" + mason: + dependency: transitive + description: + name: analyzer + sha256: f85566ec7b3d25cbea60f7dd4f157c5025f2f19233ca4feeed33b616c78a26a3 + url: "https://pub.dev" + source: hosted + version: "6.1.0" ''', ); expect(getInternalPathDependencies(directory), completion(isEmpty)); @@ -22,14 +35,23 @@ dependencies: test('returns correct path dependencies', () { final directory = Directory.systemTemp.createTempSync(); - File(path.join(directory.path, 'pubspec.yaml')).writeAsStringSync( + File(path.join(directory.path, 'pubspec.lock')).writeAsStringSync( ''' -name: _ -dependencies: +packages: dart_frog: - path: path/to/dart_frog + dependency: "direct main" + description: + path: "path/to/dart_frog" + relative: true + source: path + version: "0.0.0" dart_frog_gen: - path: path/to/dart_frog_gen + dependency: "direct main" + description: + path: "path/to/dart_frog_gen" + relative: true + source: path + version: "0.0.0" ''', ); expect( diff --git a/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart new file mode 100644 index 000000000..88bf64da9 --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/test/src/pubspec_lock/pubspec_lock_test.dart @@ -0,0 +1,316 @@ +// ignoring for testing purposes +// ignore_for_file: prefer_const_constructors + +import 'package:dart_frog_prod_server_hooks/src/pubspec_lock/pubspec_lock.dart'; +import 'package:test/test.dart'; +import 'package:yaml/yaml.dart'; + +void main() { + group('$PubspecLock', () { + group('fromString', () { + test('parses correctly', () { + final pubspecLock = PubspecLock.fromString(_pubspecLockContent); + + expect( + pubspecLock.packages, + equals( + const [ + PubspecLockPackage( + name: 'very_good_test_runner', + type: PubspecLockPackageDependencyType.directMain, + ), + PubspecLockPackage( + name: 'very_good_analysis', + type: PubspecLockPackageDependencyType.directDev, + ), + PubspecLockPackage( + name: 'yaml', + type: PubspecLockPackageDependencyType.transitive, + ), + PubspecLockPackage( + name: 'path', + type: PubspecLockPackageDependencyType.directOverridden, + ), + PubspecLockPackage( + name: 'foo', + type: PubspecLockPackageDependencyType.directMain, + pathDescription: PubspecPackagePathDescription( + path: 'packages/foo', + relative: true, + ), + ), + PubspecLockPackage( + name: 'yaml2', + type: PubspecLockPackageDependencyType.transitive, + ), + ], + ), + ); + }); + + test('throws a $PubspecLockParseException when content is empty', () { + expect( + () => PubspecLock.fromString(''), + throwsA(isA()), + ); + }); + + test('returns empty PubspecLock when content has no packages entry', () { + final pubspecLock = PubspecLock.fromString(_emptyPubspecLockContent); + expect(pubspecLock.packages, isEmpty); + }); + }); + }); + + group('$PubspecLockPackage', () { + test('can be instantiated', () { + expect( + PubspecLockPackage( + name: 'foo', + type: PubspecLockPackageDependencyType.directMain, + ), + isA(), + ); + }); + + test('supports value equality', () { + final package1 = PubspecLockPackage( + name: 'foo', + type: PubspecLockPackageDependencyType.directMain, + ); + final package2 = PubspecLockPackage( + name: 'foo', + type: PubspecLockPackageDependencyType.directMain, + ); + final package3 = PubspecLockPackage( + name: 'bar', + type: PubspecLockPackageDependencyType.transitive, + ); + + expect(package1, equals(package2)); + expect(package1, isNot(equals(package3))); + expect(package2, isNot(equals(package3))); + }); + }); + + group('$PubspecLockPackageDependencyType', () { + group('parse', () { + test('parses successfully `direct main`', () { + expect( + PubspecLockPackageDependencyType.parse('direct main'), + equals(PubspecLockPackageDependencyType.directMain), + ); + }); + + test('parses successfully `direct dev`', () { + expect( + PubspecLockPackageDependencyType.parse('direct dev'), + equals(PubspecLockPackageDependencyType.directDev), + ); + }); + + test('parses successfully `direct overridden`', () { + expect( + PubspecLockPackageDependencyType.parse('direct overridden'), + equals(PubspecLockPackageDependencyType.directOverridden), + ); + }); + + test('parses successfully `transitive`', () { + expect( + PubspecLockPackageDependencyType.parse('transitive'), + equals(PubspecLockPackageDependencyType.transitive), + ); + }); + + test('throws a $ArgumentError when type is invalid', () { + expect( + () => PubspecLockPackageDependencyType.parse('invalid'), + throwsA(isA()), + ); + }); + }); + }); + + group('$PubspecPackagePathDescription', () { + test('can be instantiated', () { + expect( + PubspecPackagePathDescription( + path: 'packages/foo', + relative: true, + ), + isA(), + ); + }); + + test('supports value equality', () { + final description1 = PubspecPackagePathDescription( + path: 'packages/foo', + relative: true, + ); + final description2 = PubspecPackagePathDescription( + path: 'packages/foo', + relative: true, + ); + final description3 = PubspecPackagePathDescription( + path: 'packages/bar', + relative: true, + ); + final description4 = PubspecPackagePathDescription( + path: 'packages/foo', + relative: false, + ); + + expect(description1, equals(description2)); + expect(description1, isNot(equals(description3))); + expect(description1, isNot(equals(description4))); + expect(description3, isNot(equals(description4))); + }); + + group('tryParse', () { + test('parses', () { + final data = loadYaml( + ''' +path: "packages/foo" +relative: true + ''', + ) as YamlMap; + + final description = PubspecPackagePathDescription.tryParse(data); + + expect( + description, + equals( + PubspecPackagePathDescription( + path: 'packages/foo', + relative: true, + ), + ), + ); + }); + + group('returns null', () { + test('when missing "path"', () { + final data = loadYaml( + ''' +relative: true + ''', + ) as YamlMap; + + final description = PubspecPackagePathDescription.tryParse(data); + + expect(description, isNull); + }); + + test('when "path" is not a String', () { + final data = loadYaml( + ''' +path: 1 +relative: true + ''', + ) as YamlMap; + + final description = PubspecPackagePathDescription.tryParse(data); + + expect(description, isNull); + }); + + test('when missing "relative"', () { + final data = loadYaml( + ''' +path: "packages/foo" + ''', + ) as YamlMap; + + final description = PubspecPackagePathDescription.tryParse(data); + + expect(description, isNull); + }); + + test('when "relative" is not a bool', () { + final data = loadYaml( + ''' +path: "packages/foo" +relative: 5 + ''', + ) as YamlMap; + + final description = PubspecPackagePathDescription.tryParse(data); + + expect(description, isNull); + }); + }); + }); + }); +} + +/// An example pubspec.lock content used to test the [PubspecLock] class. +/// +/// It has been artificially crafted to include: +/// - one pub hosted direct main package entry +/// - one pub hosted direct dev package entry +/// - one pub hosted transitive package entry +/// - one pub hosted overridden package entry +/// - one path direct main package entry +/// - one not pub hosted transitive package entry +/// - one invalid package entry +const _pubspecLockContent = ''' +packages: + very_good_test_runner: + dependency: "direct main" + description: + name: very_good_test_runner + sha256: "4d41e5d7677d259b9a1599c78645ac2d36bc2bd6ff7773507bcb0bab41417fe2" + url: "https://pub.dev" + source: hosted + version: "0.1.2" + very_good_analysis: + dependency: "direct dev" + description: + name: very_good_analysis + sha256: "9ae7f3a3bd5764fb021b335ca28a34f040cd0ab6eec00a1b213b445dae58a4b8" + url: "https://pub.dev" + source: hosted + version: "5.1.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + path: + dependency: "direct overridden" + description: + name: path + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.dev" + source: hosted + version: "1.9.0" + foo: + dependency: "direct main" + description: + path: "packages/foo" + relative: true + source: path + version: "1.0.0+1" + yaml2: + dependency: transitive + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://not-pub.dev" + source: hosted + version: "3.1.2" + bad_package: + not_dependency: "bad" +sdks: + dart: ">=3.1.0 <4.0.0" +'''; + +/// A valid pubspec lock file with no packages. +const _emptyPubspecLockContent = ''' +sdks: + dart: ">=3.1.0 <4.0.0" +'''; From 29ed861afdda705b91ea209b12e9b7beffa2bd8f Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Tue, 26 Aug 2025 23:36:35 -0500 Subject: [PATCH 18/31] cleanup --- .../hooks/lib/src/copy_workspace_pubspec_lock.dart | 1 + bricks/dart_frog_prod_server/hooks/pre_gen.dart | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart index f26994771..4c2a01c2e 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart @@ -19,6 +19,7 @@ void copyWorkspacePubspecLock( ); return exit(1); } + final pubspecLockFile = File(path.join(workspaceRoot.path, 'pubspec.lock')); if (!pubspecLockFile.existsSync()) return; diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index ea5d43df1..5f51c31e7 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -32,6 +32,14 @@ Future preGen( exit: exit, ); + // We need to make sure that the pubspec.lock file is up to date + await dartPubGet( + context, + workingDirectory: projectDirectory.path, + runProcess: runProcess, + exit: exit, + ); + await createBundle( context: context, projectDirectory: projectDirectory, From b7adf481f8db5e07d4b4607b73eeaacd4fd72709 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Tue, 26 Aug 2025 23:37:03 -0500 Subject: [PATCH 19/31] chore: regen bundle --- .../dart_frog_prod_server_bundle.dart | 84 +++++++++++++------ 1 file changed, 60 insertions(+), 24 deletions(-) diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 0b31467f3..7944b659b 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -28,13 +28,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", + "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", "type": "text" }, { "path": "build/lib/src/copy_workspace_pubspec_lock.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRGFydCB3b3Jrc3BhY2UuCkRpcmVjdG9yeT8gX2dldFdvcmtzcGFjZVJvb3QoU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnkpIHsKICBmaW5hbCBmaWxlID0gX2ZpbmROZWFyZXN0QW5jZXN0b3IoCiAgICB3aGVyZTogKHBhdGgpID0+IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoY3dkOiBEaXJlY3RvcnkocGF0aCkpLAogICAgY3dkOiBEaXJlY3Rvcnkod29ya2luZ0RpcmVjdG9yeSksCiAgKTsKICBpZiAoZmlsZSA9PSBudWxsIHx8ICFmaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgcmV0dXJuIERpcmVjdG9yeShwYXRoLmRpcm5hbWUoZmlsZS5wYXRoKSk7Cn0KCi8vLyBUaGUgd29ya3NwYWNlIHJvb3QgYHB1YnNwZWMueWFtbGAgZmlsZSBmb3IgdGhpcyBwcm9qZWN0LgpGaWxlPyBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKHtyZXF1aXJlZCBEaXJlY3RvcnkgY3dkfSkgewogIHRyeSB7CiAgICBmaW5hbCBwdWJzcGVjWWFtbEZpbGUgPSBGaWxlKHBhdGguam9pbihjd2QucGF0aCwgJ3B1YnNwZWMueWFtbCcpKTsKICAgIGlmICghcHVic3BlY1lhbWxGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgICBmaW5hbCBwdWJzcGVjID0gUHVic3BlYy5wYXJzZShwdWJzcGVjWWFtbEZpbGUucmVhZEFzU3RyaW5nU3luYygpKTsKICAgIGlmIChwdWJzcGVjLndvcmtzcGFjZT8uaXNFbXB0eSA/PyB0cnVlKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBwdWJzcGVjWWFtbEZpbGU7CiAgfSBvbiBFeGNlcHRpb24gewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLy8gRmluZHMgbmVhcmVzdCBhbmNlc3RvciBmaWxlCi8vLyByZWxhdGl2ZSB0byB0aGUgW2N3ZF0gdGhhdCBzYXRpc2ZpZXMgW3doZXJlXS4KRmlsZT8gX2ZpbmROZWFyZXN0QW5jZXN0b3IoewogIHJlcXVpcmVkIEZpbGU/IEZ1bmN0aW9uKFN0cmluZyBwYXRoKSB3aGVyZSwKICByZXF1aXJlZCBEaXJlY3RvcnkgY3dkLAp9KSB7CiAgRGlyZWN0b3J5PyBwcmV2OwogIHZhciBkaXIgPSBjd2Q7CiAgd2hpbGUgKHByZXY/LnBhdGggIT0gZGlyLnBhdGgpIHsKICAgIGZpbmFsIGZpbGUgPSB3aGVyZShkaXIucGF0aCk7CiAgICBpZiAoZmlsZT8uZXhpc3RzU3luYygpID8/IGZhbHNlKSByZXR1cm4gZmlsZTsKICAgIHByZXYgPSBkaXI7CiAgICBkaXIgPSBkaXIucGFyZW50OwogIH0KICByZXR1cm4gbnVsbDsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICBmaW5hbCBwdWJzcGVjTG9ja0ZpbGUgPSBGaWxlKHBhdGguam9pbih3b3Jrc3BhY2VSb290LnBhdGgsICdwdWJzcGVjLmxvY2snKSk7CiAgaWYgKCFwdWJzcGVjTG9ja0ZpbGUuZXhpc3RzU3luYygpKSByZXR1cm47CgogIHRyeSB7CiAgICBwdWJzcGVjTG9ja0ZpbGUuY29weVN5bmMocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJykpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlcnJvcikgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZXJyb3InKTsKICAgIHJldHVybiBleGl0KDEpOwogIH0KfQoKLy8vIFJldHVybnMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBuZWFyZXN0IERhcnQgd29ya3NwYWNlLgpEaXJlY3Rvcnk/IF9nZXRXb3Jrc3BhY2VSb290KFN0cmluZyB3b3JraW5nRGlyZWN0b3J5KSB7CiAgZmluYWwgZmlsZSA9IF9maW5kTmVhcmVzdEFuY2VzdG9yKAogICAgd2hlcmU6IChwYXRoKSA9PiBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKGN3ZDogRGlyZWN0b3J5KHBhdGgpKSwKICAgIGN3ZDogRGlyZWN0b3J5KHdvcmtpbmdEaXJlY3RvcnkpLAogICk7CiAgaWYgKGZpbGUgPT0gbnVsbCB8fCAhZmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogIHJldHVybiBEaXJlY3RvcnkocGF0aC5kaXJuYW1lKGZpbGUucGF0aCkpOwp9CgovLy8gVGhlIHdvcmtzcGFjZSByb290IGBwdWJzcGVjLnlhbWxgIGZpbGUgZm9yIHRoaXMgcHJvamVjdC4KRmlsZT8gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbCh7cmVxdWlyZWQgRGlyZWN0b3J5IGN3ZH0pIHsKICB0cnkgewogICAgZmluYWwgcHVic3BlY1lhbWxGaWxlID0gRmlsZShwYXRoLmpvaW4oY3dkLnBhdGgsICdwdWJzcGVjLnlhbWwnKSk7CiAgICBpZiAoIXB1YnNwZWNZYW1sRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogICAgZmluYWwgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UocHVic3BlY1lhbWxGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgICBpZiAocHVic3BlYy53b3Jrc3BhY2U/LmlzRW1wdHkgPz8gdHJ1ZSkgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gcHVic3BlY1lhbWxGaWxlOwogIH0gb24gRXhjZXB0aW9uIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8vIEZpbmRzIG5lYXJlc3QgYW5jZXN0b3IgZmlsZQovLy8gcmVsYXRpdmUgdG8gdGhlIFtjd2RdIHRoYXQgc2F0aXNmaWVzIFt3aGVyZV0uCkZpbGU/IF9maW5kTmVhcmVzdEFuY2VzdG9yKHsKICByZXF1aXJlZCBGaWxlPyBGdW5jdGlvbihTdHJpbmcgcGF0aCkgd2hlcmUsCiAgcmVxdWlyZWQgRGlyZWN0b3J5IGN3ZCwKfSkgewogIERpcmVjdG9yeT8gcHJldjsKICB2YXIgZGlyID0gY3dkOwogIHdoaWxlIChwcmV2Py5wYXRoICE9IGRpci5wYXRoKSB7CiAgICBmaW5hbCBmaWxlID0gd2hlcmUoZGlyLnBhdGgpOwogICAgaWYgKGZpbGU/LmV4aXN0c1N5bmMoKSA/PyBmYWxzZSkgcmV0dXJuIGZpbGU7CiAgICBwcmV2ID0gZGlyOwogICAgZGlyID0gZGlyLnBhcmVudDsKICB9CiAgcmV0dXJuIG51bGw7Cn0K", "type": "text" }, { @@ -46,7 +46,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKAogICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjLmRlcGVuZGVuY2llcy52YWx1ZXMKICAgICAgLm1hcCgKICAgICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgICAgaWYgKGRlcGVuZGVuY3kgaXMhIFBhdGhEZXBlbmRlbmN5KSByZXR1cm4gbnVsbDsKICAgICAgICAgIGlmIChwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIGRlcGVuZGVuY3kucGF0aCkpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogcGF0aC5iYXNlbmFtZVdpdGhvdXRFeHRlbnNpb24oZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgKQogICAgICAud2hlcmVUeXBlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PigpCiAgICAgIC50b0xpc3QoKTsKCiAgaWYgKGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5pc0VtcHR5KSByZXR1cm4gW107CgogIGZpbmFsIHBhY2thZ2VzRGlyZWN0b3J5ID0gRGlyZWN0b3J5KAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICksCiAgKS4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpOwoKICBmaW5hbCBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBGdXR1cmUud2FpdCgKICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChleHRlcm5hbFBhdGhEZXBlbmRlbmN5KSA9PiBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5OiBEaXJlY3RvcnkoCiAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICApLAogICAgKSwKICApOwoKICBhd2FpdCBGaWxlKAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJywKICAgICksCiAgKS53cml0ZUFzU3RyaW5nKAogICAgJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", "type": "text" }, { @@ -64,19 +64,25 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/exit_overrides.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmNvbnN0IF9hc3luY1J1blpvbmVkID0gcnVuWm9uZWQ7CgphYnN0cmFjdCBjbGFzcyBFeGl0T3ZlcnJpZGVzIHsKICBzdGF0aWMgZmluYWwgX3Rva2VuID0gT2JqZWN0KCk7CgogIHN0YXRpYyBFeGl0T3ZlcnJpZGVzPyBnZXQgY3VycmVudCB7CiAgICByZXR1cm4gWm9uZS5jdXJyZW50W190b2tlbl0gYXMgRXhpdE92ZXJyaWRlcz87CiAgfQoKICBzdGF0aWMgUiBydW5ab25lZDxSPihSIEZ1bmN0aW9uKCkgYm9keSwge3ZvaWQgRnVuY3Rpb24oaW50KT8gZXhpdH0pIHsKICAgIGZpbmFsIG92ZXJyaWRlcyA9IF9FeGl0T3ZlcnJpZGVzU2NvcGUoZXhpdCk7CiAgICByZXR1cm4gX2FzeW5jUnVuWm9uZWQoYm9keSwgem9uZVZhbHVlczoge190b2tlbjogb3ZlcnJpZGVzfSk7CiAgfQoKICB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZ2V0IGV4aXQgPT4gaW8uZXhpdDsKfQoKY2xhc3MgX0V4aXRPdmVycmlkZXNTY29wZSBleHRlbmRzIEV4aXRPdmVycmlkZXMgewogIF9FeGl0T3ZlcnJpZGVzU2NvcGUodGhpcy5fZXhpdCk7CgogIGZpbmFsIEV4aXRPdmVycmlkZXM/IF9wcmV2aW91cyA9IEV4aXRPdmVycmlkZXMuY3VycmVudDsKICBmaW5hbCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSk/IF9leGl0OwoKICBAb3ZlcnJpZGUKICB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZ2V0IGV4aXQgewogICAgcmV0dXJuIF9leGl0ID8/IF9wcmV2aW91cz8uZXhpdCA/PyBzdXBlci5leGl0OwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmNvbnN0IF9hc3luY1J1blpvbmVkID0gcnVuWm9uZWQ7Cgp2b2lkIGRlZmF1bHRFeGl0KGludCBjb2RlKSA9PiBFeGl0T3ZlcnJpZGVzLmN1cnJlbnQ/LmV4aXQgPz8gaW8uZXhpdDsKCmFic3RyYWN0IGNsYXNzIEV4aXRPdmVycmlkZXMgewogIHN0YXRpYyBmaW5hbCBfdG9rZW4gPSBPYmplY3QoKTsKCiAgc3RhdGljIEV4aXRPdmVycmlkZXM/IGdldCBjdXJyZW50IHsKICAgIHJldHVybiBab25lLmN1cnJlbnRbX3Rva2VuXSBhcyBFeGl0T3ZlcnJpZGVzPzsKICB9CgogIHN0YXRpYyBSIHJ1blpvbmVkPFI+KFIgRnVuY3Rpb24oKSBib2R5LCB7dm9pZCBGdW5jdGlvbihpbnQpPyBleGl0fSkgewogICAgZmluYWwgb3ZlcnJpZGVzID0gX0V4aXRPdmVycmlkZXNTY29wZShleGl0KTsKICAgIHJldHVybiBfYXN5bmNSdW5ab25lZChib2R5LCB6b25lVmFsdWVzOiB7X3Rva2VuOiBvdmVycmlkZXN9KTsKICB9CgogIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBnZXQgZXhpdCA9PiBpby5leGl0Owp9CgpjbGFzcyBfRXhpdE92ZXJyaWRlc1Njb3BlIGV4dGVuZHMgRXhpdE92ZXJyaWRlcyB7CiAgX0V4aXRPdmVycmlkZXNTY29wZSh0aGlzLl9leGl0KTsKCiAgZmluYWwgRXhpdE92ZXJyaWRlcz8gX3ByZXZpb3VzID0gRXhpdE92ZXJyaWRlcy5jdXJyZW50OwogIGZpbmFsIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKT8gX2V4aXQ7CgogIEBvdmVycmlkZQogIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBnZXQgZXhpdCB7CiAgICByZXR1cm4gX2V4aXQgPz8gX3ByZXZpb3VzPy5leGl0ID8/IHN1cGVyLmV4aXQ7CiAgfQp9Cg==", "type": "text" }, { "path": "build/lib/src/get_internal_path_dependencies.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKGRpcmVjdG9yeS5wYXRoKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gcHVic3BlYy5kZXBlbmRlbmNpZXMudmFsdWVzLndoZXJlKAogICAgKGRlcGVuZGVuY3kpIHsKICAgICAgcmV0dXJuIGRlcGVuZGVuY3kgaXMgUGF0aERlcGVuZGVuY3kgJiYgcGF0aC5pc1dpdGhpbignJywgZGVwZW5kZW5jeS5wYXRoKTsKICAgIH0sCiAgKS5jYXN0PFBhdGhEZXBlbmRlbmN5PigpOwoKICByZXR1cm4gaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKS50b0xpc3QoKTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soZGlyZWN0b3J5LnBhdGgpOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcy53aGVyZSgKICAgIChkZXBlbmRlbmN5KSB7CiAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICBpZiAocGF0aERlc2NyaXB0aW9uID09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICB9LAogICk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoRGVzY3JpcHRpb24hLnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQo=", "type": "text" }, { - "path": "build/lib/src/get_pubspec.dart", + "path": "build/lib/src/get_pubspec_lock.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCkZ1dHVyZTxQdWJzcGVjPiBnZXRQdWJzcGVjKAogIFN0cmluZyB3b3JraW5nRGlyZWN0b3J5LCB7CiAgcGF0aC5Db250ZXh0PyBwYXRoQ29udGV4dCwKfSkgYXN5bmMgewogIGNvbnN0IHB1YnNwZWNZYW1sID0gJ3B1YnNwZWMueWFtbCc7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgIHdvcmtpbmdEaXJlY3RvcnkuaXNFbXB0eQogICAgICAgID8gcHVic3BlY1lhbWwKICAgICAgICA6IHBhdGhSZXNvbHZlci5qb2luKHdvcmtpbmdEaXJlY3RvcnksIHB1YnNwZWNZYW1sKSwKICApOwoKICBmaW5hbCBjb250ZW50ID0gYXdhaXQgcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nKCk7CiAgcmV0dXJuIFB1YnNwZWMucGFyc2UoY29udGVudCk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3Mvc3JjL3B1YnNwZWNfbG9jay9wdWJzcGVjX2xvY2suZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTxQdWJzcGVjTG9jaz4gZ2V0UHVic3BlY0xvY2soCiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIHsKICBwYXRoLkNvbnRleHQ/IHBhdGhDb250ZXh0LAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUoCiAgICB3b3JraW5nRGlyZWN0b3J5LmlzRW1wdHkKICAgICAgICA/ICdwdWJzcGVjLmxvY2snCiAgICAgICAgOiBwYXRoUmVzb2x2ZXIuam9pbih3b3JraW5nRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJyksCiAgKTsKCiAgZmluYWwgY29udGVudCA9IGF3YWl0IHB1YnNwZWNMb2NrRmlsZS5yZWFkQXNTdHJpbmcoKTsKICByZXR1cm4gUHVic3BlY0xvY2suZnJvbVN0cmluZyhjb250ZW50KTsKfQo=", + "type": "text" + }, + { + "path": "build/lib/src/pubspec_lock/pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmNvbGxlY3Rpb24nOwoKaW1wb3J0ICdwYWNrYWdlOmVxdWF0YWJsZS9lcXVhdGFibGUuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfcGFyc2VfZXhjZXB0aW9ufQovLy8gVGhyb3duIHdoZW4gYSBbUHVic3BlY0xvY2tdIGZhaWxzIHRvIHBhcnNlLgovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgUHVic3BlY0xvY2tQYXJzZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbiB7CiAgLy8vIHtAbWFjcm8gcHVic3BlY19sb2NrX3BhcnNlX2V4Y2VwdGlvbn0KICBjb25zdCBQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uKCk7Cn0KCi8vLyBBIHJlcHJlc2VudGF0aW9uIG9mIGEgcHVic3BlYy5sb2NrIGZpbGUuCmNsYXNzIFB1YnNwZWNMb2NrIHsKICBjb25zdCBQdWJzcGVjTG9jay5fKHsKICAgIHJlcXVpcmVkIHRoaXMucGFja2FnZXMsCiAgfSk7CgogIC8vLyBQYXJzZXMgYSBbUHVic3BlY0xvY2tdIGZyb20gYSBzdHJpbmcuCiAgLy8vCiAgLy8vIElmIG5vIHBhY2thZ2VzIGFyZSBmb3VuZCwgYW4gZW1wdHkgW1B1YnNwZWNMb2NrXSBpcyByZXR1cm5lZC4gVGhvc2UKICAvLy8gcGFja2FnZXMgZW50cmllcyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXJlIGlnbm9yZWQuCiAgLy8vCiAgLy8vIEl0IHRocm93cyBhIFtQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uXSBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQKICAvLy8gYXMgYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKFN0cmluZyBjb250ZW50KSB7CiAgICBsYXRlIGZpbmFsIFlhbWxNYXAgeWFtbDsKICAgIHRyeSB7CiAgICAgIHlhbWwgPSBsb2FkWWFtbChjb250ZW50KSBhcyBZYW1sTWFwOwogICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAvLyBpZ25vcmU6IGF2b2lkX2NhdGNoZXNfd2l0aG91dF9vbl9jbGF1c2VzCiAgICB9IGNhdGNoIChfKSB7CiAgICAgIHRocm93IGNvbnN0IFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24oKTsKICAgIH0KCiAgICBpZiAoIXlhbWwuY29udGFpbnNLZXkoJ3BhY2thZ2VzJykpIHsKICAgICAgcmV0dXJuIFB1YnNwZWNMb2NrLmVtcHR5OwogICAgfQoKICAgIGZpbmFsIHBhY2thZ2VzID0geWFtbFsncGFja2FnZXMnXSBhcyBZYW1sTWFwOwoKICAgIGZpbmFsIHBhcnNlZFBhY2thZ2VzID0gPFB1YnNwZWNMb2NrUGFja2FnZT5bXTsKICAgIGZvciAoZmluYWwgZW50cnkgaW4gcGFja2FnZXMuZW50cmllcykgewogICAgICB0cnkgewogICAgICAgIGZpbmFsIHBhY2thZ2UgPSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoCiAgICAgICAgICBuYW1lOiBlbnRyeS5rZXkgYXMgU3RyaW5nLAogICAgICAgICAgZGF0YTogZW50cnkudmFsdWUgYXMgWWFtbE1hcCwKICAgICAgICApOwogICAgICAgIHBhcnNlZFBhY2thZ2VzLmFkZChwYWNrYWdlKTsKICAgICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAgIC8vIGlnbm9yZTogYXZvaWRfY2F0Y2hlc193aXRob3V0X29uX2NsYXVzZXMKICAgICAgfSBjYXRjaCAoXykgewogICAgICAgIC8vIElnbm9yZSB0aG9zZSBwYWNrYWdlcyB0aGF0IGZvciBzb21lIHJlYXNvbiBjYW5ub3QgYmUgcGFyc2VkLgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFB1YnNwZWNMb2NrLl8oCiAgICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhwYXJzZWRQYWNrYWdlcyksCiAgICApOwogIH0KCiAgLy8vIEFuIGVtcHR5IFtQdWJzcGVjTG9ja10uCiAgc3RhdGljIFB1YnNwZWNMb2NrIGVtcHR5ID0gUHVic3BlY0xvY2suXygKICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhbXSksCiAgKTsKCiAgLy8vIEFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBVbm1vZGlmaWFibGVMaXN0VmlldzxQdWJzcGVjTG9ja1BhY2thZ2U+IHBhY2thZ2VzOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeX0KLy8vIEEgcmVwcmVzZW50YXRpb24gb2YgYSBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjTG9ja1BhY2thZ2UgZXh0ZW5kcyBFcXVhdGFibGUgewogIC8vLyB7QG1hY3JvIHB1YnNwZWNfbG9ja19kZXBlbmRlbmN5fQogIGNvbnN0IFB1YnNwZWNMb2NrUGFja2FnZSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnR5cGUsCiAgICB0aGlzLnBhdGhEZXNjcmlwdGlvbiwKICB9KTsKCiAgLy8vIFBhcnNlcyBhIFtQdWJzcGVjTG9ja1BhY2thZ2VdIGZyb20gYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoewogICAgcmVxdWlyZWQgU3RyaW5nIG5hbWUsCiAgICByZXF1aXJlZCBZYW1sTWFwIGRhdGEsCiAgfSkgewogICAgZmluYWwgZGVwZW5kZW5jeSA9IGRhdGFbJ2RlcGVuZGVuY3knXSBhcyBTdHJpbmc7CiAgICBmaW5hbCBkZXBlbmRlbmN5VHlwZSA9IFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnBhcnNlKGRlcGVuZGVuY3kpOwoKICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gZGF0YVsnZGVzY3JpcHRpb24nXSBhcyBZYW1sTWFwPzsKICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGwKICAgICAgICA/IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRlc2NyaXB0aW9uKQogICAgICAgIDogbnVsbDsKCiAgICByZXR1cm4gUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICBuYW1lOiBuYW1lLAogICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZSwKICAgICAgcGF0aERlc2NyaXB0aW9uOiBwYXRoRGVzY3JpcHRpb24sCiAgICApOwogIH0KCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5LgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8ge0BtYWNybyBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQogIGZpbmFsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHR5cGU7CgogIC8vLyB7QG1hY3JvIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQogIGZpbmFsIFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPyBwYXRoRGVzY3JpcHRpb247CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtuYW1lLCB0eXBlLCBwYXRoRGVzY3JpcHRpb25dOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQovLy8gVGhlIHR5cGUgb2YgYSBbUHVic3BlY0xvY2tQYWNrYWdlXS4KLy8vIHtAZW5kdGVtcGxhdGV9CmVudW0gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUgewogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgdG8gd29yay4KICAvLy8KICAvLy8gU2VlIGFsc286CiAgLy8vCiAgLy8vICogW0RhcnQncyBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcykKICBkaXJlY3RNYWluLl8oJ2RpcmVjdCBtYWluJyksCgogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgZHVyaW5nIGRldmVsb3BtZW50LgogIC8vLwogIC8vLyBTZWUgYWxzbzoKICAvLy8KICAvLy8gKiBbRGFydCdzIGRldmVsb3BlciBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcyNkZXYtZGVwZW5kZW5jaWVzKQogIGRpcmVjdERldi5fKCdkaXJlY3QgZGV2JyksCgogIC8vLyBBIGRlcGVuZGVuY3kgdGhhdCB5b3VyIHBhY2thZ2UgaW5kaXJlY3RseSB1c2VzIGJlY2F1c2Ugb25lIG9mIGl0cwogIC8vLyBkZXBlbmRlbmNpZXMgcmVxdWlyZXMgaXQuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I3RyYW5zaXRpdmUtKQogIHRyYW5zaXRpdmUuXygndHJhbnNpdGl2ZScpLAoKICAvLy8gIEEgZGVwZW5kZW5jeSB0aGF0IHlvdXIgcGFja2FnZSBvdmVycmlkZXMgdGhhdCBpcyBub3QgYWxyZWFkeSBhCiAgLy8vIGBkaXJlY3QgbWFpbmAgb3IgYGRpcmVjdCBkZXZgIGRlcGVuZGVuY3kuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgZGVwZW5kZW5jeSBvdmVycmlkZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9kZXBlbmRlbmNpZXMjZGVwZW5kZW5jeS1vdmVycmlkZXMpCiAgZGlyZWN0T3ZlcnJpZGRlbi5fKCdkaXJlY3Qgb3ZlcnJpZGRlbicpOwoKICBjb25zdCBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5fKHRoaXMudmFsdWUpOwoKICAvLy8gUGFyc2VzIGEgW1B1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlXSBmcm9tIGEgc3RyaW5nLgogIC8vLwogIC8vLyBUaHJvd3MgYW4gW0FyZ3VtZW50RXJyb3JdIGlmIHRoZSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgZGVwZW5kZW5jeSB0eXBlLgogIGZhY3RvcnkgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoU3RyaW5nIHZhbHVlKSB7CiAgICBpZiAoX3ZhbHVlTWFwLmNvbnRhaW5zS2V5KHZhbHVlKSkgewogICAgICByZXR1cm4gX3ZhbHVlTWFwW3ZhbHVlXSE7CiAgICB9CgogICAgdGhyb3cgQXJndW1lbnRFcnJvci52YWx1ZSgKICAgICAgdmFsdWUsCiAgICAgICd2YWx1ZScsCiAgICAgICdJbnZhbGlkIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHZhbHVlLicsCiAgICApOwogIH0KCiAgc3RhdGljIE1hcDxTdHJpbmcsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlPiBfdmFsdWVNYXAgPSB7CiAgICBmb3IgKGZpbmFsIHR5cGUgaW4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudmFsdWVzKQogICAgICB0eXBlLnZhbHVlOiB0eXBlLAogIH07CgogIC8vLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGVdCiAgLy8vIGFzIGl0IGFwcGVhcnMgaW4gYSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBTdHJpbmcgdmFsdWU7Cn0KCi8vLyB7QHRlbXBsYXRlIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQovLy8gVGhlIGRlc2NyaXB0aW9uIG9mIGEgcGF0aCBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLwovLy8gRm9yIGV4YW1wbGUsIGluOgovLy8gYGBgeWFtbAovLy8gbXlfcGFja2FnZToKLy8vICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgovLy8gICBkZXNjcmlwdGlvbjoKLy8vICAgICBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vICAgICByZWxhdGl2ZTogdHJ1ZQovLy8gICBzb3VyY2U6IHBhdGgKLy8vICAgdmVyc2lvbjogIjEuMC4wKzEiCi8vLyBgYGAKLy8vCi8vLyBUaGUgZGVzY3JpcHRpb24gaXM6Ci8vLyBgYGB5YW1sCi8vLyBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vIHJlbGF0aXZlOiB0cnVlCi8vLyBgYGAKLy8vCi8vLyBTZWUgYWxzbzoKLy8vCi8vLyAqIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZV0sIHdoaWNoIGF0dGVtcHRzIHRvIHBhcnNlcyBhCi8vLyBbWWFtbE1hcF0gaW50byBhIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbl0uCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbiBleHRlbmRzIEVxdWF0YWJsZSB7CiAgY29uc3QgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oewogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogICAgcmVxdWlyZWQgdGhpcy5yZWxhdGl2ZSwKICB9KTsKCiAgLy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgW1lhbWxNYXBdIGludG8gYSBbUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb25dLgogIC8vLwogIC8vLyBSZXR1cm5zIGBudWxsYCBpZiB0aGUgW1lhbWxNYXBdIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGEKICAvLy8gdG8gY3JlYXRlIGEgW1B1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uXS4KICBzdGF0aWMgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24/IHRyeVBhcnNlKFlhbWxNYXAgZGF0YSkgewogICAgaWYgKCghZGF0YS5jb250YWluc0tleSgncGF0aCcpIHx8IGRhdGFbJ3BhdGgnXSBpcyEgU3RyaW5nKSB8fAogICAgICAgICghZGF0YS5jb250YWluc0tleSgncmVsYXRpdmUnKSB8fCBkYXRhWydyZWxhdGl2ZSddIGlzISBib29sKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmaW5hbCBwYXRoID0gZGF0YVsncGF0aCddIGFzIFN0cmluZzsKICAgIGZpbmFsIHJlbGF0aXZlID0gZGF0YVsncmVsYXRpdmUnXSBhcyBib29sOwoKICAgIHJldHVybiBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgcGF0aDogcGF0aCwKICAgICAgcmVsYXRpdmU6IHJlbGF0aXZlLAogICAgKTsKICB9CgogIGZpbmFsIFN0cmluZyBwYXRoOwogIGZpbmFsIGJvb2wgcmVsYXRpdmU7CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtwYXRoLCByZWxhdGl2ZV07Cn0K", "type": "text" }, { @@ -88,13 +94,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/post_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5UGF0aCA9IHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpOwoKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5UGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIHJlbGF0aXZlQnVpbGRQYXRoID0gcGF0aC5yZWxhdGl2ZShidWlsZERpcmVjdG9yeVBhdGgpOwogIGNvbnRleHQubG9nZ2VyCiAgICAuLmluZm8oJycpCiAgICAuLnN1Y2Nlc3MoJ0NyZWF0ZWQgYSBwcm9kdWN0aW9uIGJ1aWxkIScpCiAgICAuLmluZm8oJycpCiAgICAuLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpCiAgICAuLmluZm8oJycpCiAgICAuLmluZm8oCiAgICAgICcnJyR7bGlnaHRDeWFuLndyYXAoJ2RhcnQgJHtwYXRoLmpvaW4ocmVsYXRpdmVCdWlsZFBhdGgsICdiaW4nLCAnc2VydmVyLmRhcnQnKX0nKX0nJycsCiAgICApOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CgogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogYnVpbGREaXJlY3RvcnlQYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", "type": "text" }, { "path": "build/pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7Cgp2b2lkIF9kZWZhdWx0RXhpdChpbnQgY29kZSkgPT4gRXhpdE92ZXJyaWRlcy5jdXJyZW50Py5leGl0ID8/IGlvLmV4aXQ7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBfZGVmYXVsdEV4aXQsCiAgRnV0dXJlPHZvaWQ+IEZ1bmN0aW9uKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8pIGNvcHlQYXRoID0gaW9fZXhwYW5kZWQuY29weVBhdGgsCn0pIGFzeW5jIHsKICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gZGlyZWN0b3J5ID8/IGlvLkRpcmVjdG9yeS5jdXJyZW50OwogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKICBmaW5hbCB1c2VzV29ya3NwYWNlcyA9IHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwogIGZpbmFsIHVzZXNXb3Jrc3BhY2VzID0gdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgZXhpdDogZXhpdCwKICApOwoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgaWYgKHVzZXNXb3Jrc3BhY2VzKSB7CiAgICAvLyBEaXNhYmxlIHdvcmtzcGFjZSByZXNvbHV0aW9uIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXItcGFja2FnZSBsb2NrZmlsZXMuCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAogICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICAgIC8vIENvcHkgdGhlIHB1YnNwZWMubG9jayBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdCB0byBlbnN1cmUgdGhlIHNhbWUgdmVyc2lvbnMKICAgIC8vIG9mIGRlcGVuZGVuY2llcyBhcmUgdXNlZCBpbiB0aGUgcHJvZHVjdGlvbiBidWlsZC4KICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgY29udGV4dCwKICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", "type": "text" }, { @@ -112,13 +118,19 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/pre_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY3MuZGFydCc7CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncHJlR2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIEZ1dHVyZTxQcm9jZXNzUmVzdWx0PiBzdWNjZXNzUnVuUHJvY2VzcygKICAgICAgZXhlY3V0YWJsZSwKICAgICAgYXJncywgewogICAgICBTdHJpbmc/IHdvcmtpbmdEaXJlY3RvcnksCiAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICB9KSA9PgogICAgICAgIEZ1dHVyZS52YWx1ZShQcm9jZXNzUmVzdWx0KDAsIDAsICcnLCAnJykpOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpCiAgICAgICAgLi52YXJzWydkYXJ0VmVyc2lvbiddID0gJ3N0YWJsZSc7CgogICAgICB3aGVuKCgpID0+IGxvZ2dlci5wcm9ncmVzcyhhbnkoKSkpLnRoZW5SZXR1cm4oX01vY2tQcm9ncmVzcygpKTsKICAgIH0pOwoKICAgIHRlc3QoJ3J1biBjb21wbGV0ZXMnLCAoKSB7CiAgICAgIGV4cGVjdCgKICAgICAgICBFeGl0T3ZlcnJpZGVzLnJ1blpvbmVkKAogICAgICAgICAgKCkgPT4gcHJlX2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICAgZXhpdDogKF8pIHt9LAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBpZiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiB0aHJvd3MnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGZpbmFsIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbignb29wcycpOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IHRocm93IGV4Y2VwdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGV4Y2VwdGlvbi50b1N0cmluZygpKSkuY2FsbGVkKDEpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm91dGUgY29uZmxpY3RzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHsKICAgICAgICAgICcvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvX2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoJ3JvdXRlcy9oZWxsby9pbmRleC5kYXJ0Jyl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKCcvaGVsbG8nKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXQoMSkgZm9yIHJvZ3VlIHJvdXRlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogWwogICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgKSwKICAgICAgICBdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb2d1ZSByb3V0ZSBkZXRlY3RlZC4ke2RlZmF1bHRGb3JlZ3JvdW5kLndyYXAoJyAnKX1SZW5hbWUgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gdG8gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ3dvcmtzIHdpdGggd29ya3NwYWNlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlUm9vdCk7CiAgICAgIGZpbmFsIHNlcnZlciA9IERpcmVjdG9yeSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdzZXJ2ZXInKSwKICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKHdvcmtzcGFjZUNoaWxkKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "type": "text" + }, + { + "path": "build/test/pubspec_locks.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeSBhbmQgaGFzIGEgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSB0aGFuIHRoZSBkaXJlY3RvcnkgbmFtZS4KLy8vICogQSBkaXJlY3QgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBkZXYgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBvdmVycmlkZGVuIGRlcGVuZGVuY3kgZnJvbSBnaXQuCmNvbnN0IGZvb1BhdGggPSAnJycKcGFja2FnZXM6CiAgYXJnczoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBhcmdzCiAgICAgIHNoYTI1NjogZWVmNmM0NmI2MjJlMDQ5NGEzNmM1YTEyZDEwZDc3ZmI0ZTg1NTUwMWE5MWMxYjllZjkzMzkzMjZlNThmMDU5NgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjIuNC4yIgogIGZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgc2Vjb25kX2ZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vMiIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGRpcmVjdF9tYWluOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGRpcmVjdF9tYWluCiAgICAgIHNoYTI1NjogZmRjOWVhOTA1ZTdjNjkwZmUzOWQyZjk5NDZiN2FlYWQ4NmZkOTc2ZjhlZGY5N2QyNTIxYTY1ZDI2MGJiZjUwOQogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MCIKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBkZXYiCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogdGVzdAogICAgICBzaGEyNTY6ICI5YjBkZDhlMzZhZjRhNWIxNTY5MDI5OTQ5ZDUwYTUyY2IyYTJhMmZkYWEyMGNlYmI5NmU2NjAzYjlhZTI0MWY5IgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjEuMjQuNiIKICBkaXJlY3Rfb3ZlcnJpZGRlbjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3Qgb3ZlcnJpZGRlbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvbWFzb24iCiAgICAgIHJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHJlc29sdmVkLXJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24iCiAgICBzb3VyY2U6IGdpdAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MiIKc2RrczoKICBkYXJ0OiAiPj0zLjAuMCA8NC4wLjAiCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy5sb2NrYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIHRyYW5zaXRpdmUgZGVwZW5kZW5jeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5ID0gJycnCnBhY2thZ2VzOgogIGFyZ3M6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogYXJncwogICAgICBzaGEyNTY6IGVlZjZjNDZiNjIyZTA0OTRhMzZjNWExMmQxMGQ3N2ZiNGU4NTU1MDFhOTFjMWI5ZWY5MzM5MzI2ZTU4ZjA1OTYKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIyLjQuMiIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogIi4uLy4uL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGJhcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvYmFyIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IG5vUGF0aERlcGVuZGVuY2llcyA9ICcnJwpwYWNrYWdlczoKICBhcmdzOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFyZ3MKICAgICAgc2hhMjU2OiBlZWY2YzQ2YjYyMmUwNDk0YTM2YzVhMTJkMTBkNzdmYjRlODU1NTAxYTkxYzFiOWVmOTMzOTMyNmU1OGYwNTk2CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMi40LjIiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwo=", "type": "text" }, { "path": "build/test/pubspecs.dart", "data": - "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5IGFuZCBoYXMgYSBkaWZmZXJlbnQgcGFja2FnZSBuYW1lIHRoYW4gdGhlIGRpcmVjdG9yeSBuYW1lLgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IG92ZXJyaWRkZW4gZGVwZW5kZW5jeSBmcm9tIGdpdC4KY29uc3QgZm9vUGF0aCA9ICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KICBmb28yOgogICAgcGF0aDogLi4vLi4vZm9vMgogIGRpcmVjdF9tYWluOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGRpcmVjdF9vdmVycmlkZGVuOgogICAgZ2l0OgogICAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24KICAgICAgcGF0aDogcGFja2FnZXMvbWFzb24KICAgICAgcmVmOiA3MmMzMDZhOGQ4YWJmMzA2YjVkMDI0Zjk1YWFjMjliYTVmZDk2NTc3CicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3QgZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZm9vOgogICAgcGF0aDogLi4vLi4vZm9vCiAgYmFyOgogICAgcGF0aDogcGFja2FnZXMvYmFyCiAgbWFzb246IF4wLjEuMC1kZXYuNTAKZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3Qgbm9QYXRoRGVwZW5kZW5jaWVzID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIG1hc29uOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VSb290ID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIHNlcnZlcjoKICAgIHBhdGg6IHBhY2thZ2VzL3NlcnZlciAgCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL3NlcnZlcgonJyc7CgovLy8gQW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgYHB1YnNwZWMueWFtbGAgZmlsZSB3aXRoOgovLy8KLy8vICogRGFydCB3b3Jrc3BhY2VzIGVuYWJsZWQKY29uc3Qgd29ya3NwYWNlQ2hpbGQgPSAnJycKbmFtZTogc2VydmVyCnJlc29sdXRpb246IHdvcmtzcGFjZQonJyc7Cg==", + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIERhcnQgd29ya3NwYWNlcyBlbmFibGVkCmNvbnN0IHdvcmtzcGFjZVJvb3QgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgc2VydmVyOgogICAgcGF0aDogcGFja2FnZXMvc2VydmVyICAKd29ya3NwYWNlOgogIC0gcGFja2FnZXMvc2VydmVyCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VDaGlsZCA9ICcnJwpuYW1lOiBzZXJ2ZXIKcmVzb2x1dGlvbjogd29ya3NwYWNlCicnJzsK", "type": "text" }, { @@ -136,7 +148,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNzLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyJywgKCkgewogICAgdGVzdCgnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyA9PiBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnkgPQogICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbzInKTsKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28yJywKICAgICAgKTsKCiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckZm9vMlBhY2thZ2VEaXJlY3RvcnkgLT4gJGZvbzJQYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgXSk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgPT4gY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyksCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", "type": "text" }, { @@ -160,7 +172,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/get_internal_path_dependencies_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKICBtYXNvbjogXjAuMS4wCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLCBjb21wbGV0aW9uKGlzRW1wdHkpKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0dXJucyBjb3JyZWN0IHBhdGggZGVwZW5kZW5jaWVzJywgKCkgewogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZGFydF9mcm9nOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2cKICBkYXJ0X2Zyb2dfZ2VuOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2dfZ2VuCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KAogICAgICAgIGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLAogICAgICAgIGNvbXBsZXRpb24oCiAgICAgICAgICBlcXVhbHMoWydwYXRoL3RvL2RhcnRfZnJvZycsICdwYXRoL3RvL2RhcnRfZnJvZ19nZW4nXSksCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpwYWNrYWdlczoKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgogIG1hc29uOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgonJycsCiAgICAgICk7CiAgICAgIGV4cGVjdChnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoZGlyZWN0b3J5KSwgY29tcGxldGlvbihpc0VtcHR5KSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldHVybnMgY29ycmVjdCBwYXRoIGRlcGVuZGVuY2llcycsICgpIHsKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCnBhY2thZ2VzOgogIGRhcnRfZnJvZzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGF0aC90by9kYXJ0X2Zyb2ciCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKICBkYXJ0X2Zyb2dfZ2VuOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIHBhdGg6ICJwYXRoL3RvL2RhcnRfZnJvZ19nZW4iCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKJycnLAogICAgICApOwogICAgICBleHBlY3QoCiAgICAgICAgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKGRpcmVjdG9yeSksCiAgICAgICAgY29tcGxldGlvbigKICAgICAgICAgIGVxdWFscyhbJ3BhdGgvdG8vZGFydF9mcm9nJywgJ3BhdGgvdG8vZGFydF9mcm9nX2dlbiddKSwKICAgICAgICApLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "build/test/src/pubspec_lock/pubspec_lock_test.dart", + "data": + "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKJycnOwoKLy8vIEEgdmFsaWQgcHVic3BlYyBsb2NrIGZpbGUgd2l0aCBubyBwYWNrYWdlcy4KY29uc3QgX2VtcHR5UHVic3BlY0xvY2tDb250ZW50ID0gJycnCnNka3M6CiAgZGFydDogIj49My4xLjAgPDQuMC4wIgonJyc7Cg==", "type": "text" }, { @@ -172,13 +190,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", + "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", "type": "text" }, { "path": "lib/src/copy_workspace_pubspec_lock.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUocGF0aC5qb2luKHdvcmtzcGFjZVJvb3QucGF0aCwgJ3B1YnNwZWMubG9jaycpKTsKICBpZiAoIXB1YnNwZWNMb2NrRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybjsKCiAgdHJ5IHsKICAgIHB1YnNwZWNMb2NrRmlsZS5jb3B5U3luYyhwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLmxvY2snKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQp9CgovLy8gUmV0dXJucyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIG5lYXJlc3QgRGFydCB3b3Jrc3BhY2UuCkRpcmVjdG9yeT8gX2dldFdvcmtzcGFjZVJvb3QoU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnkpIHsKICBmaW5hbCBmaWxlID0gX2ZpbmROZWFyZXN0QW5jZXN0b3IoCiAgICB3aGVyZTogKHBhdGgpID0+IF9nZXRXb3Jrc3BhY2VSb290UHVic3BlY1lhbWwoY3dkOiBEaXJlY3RvcnkocGF0aCkpLAogICAgY3dkOiBEaXJlY3Rvcnkod29ya2luZ0RpcmVjdG9yeSksCiAgKTsKICBpZiAoZmlsZSA9PSBudWxsIHx8ICFmaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgcmV0dXJuIERpcmVjdG9yeShwYXRoLmRpcm5hbWUoZmlsZS5wYXRoKSk7Cn0KCi8vLyBUaGUgd29ya3NwYWNlIHJvb3QgYHB1YnNwZWMueWFtbGAgZmlsZSBmb3IgdGhpcyBwcm9qZWN0LgpGaWxlPyBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKHtyZXF1aXJlZCBEaXJlY3RvcnkgY3dkfSkgewogIHRyeSB7CiAgICBmaW5hbCBwdWJzcGVjWWFtbEZpbGUgPSBGaWxlKHBhdGguam9pbihjd2QucGF0aCwgJ3B1YnNwZWMueWFtbCcpKTsKICAgIGlmICghcHVic3BlY1lhbWxGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIG51bGw7CiAgICBmaW5hbCBwdWJzcGVjID0gUHVic3BlYy5wYXJzZShwdWJzcGVjWWFtbEZpbGUucmVhZEFzU3RyaW5nU3luYygpKTsKICAgIGlmIChwdWJzcGVjLndvcmtzcGFjZT8uaXNFbXB0eSA/PyB0cnVlKSByZXR1cm4gbnVsbDsKICAgIHJldHVybiBwdWJzcGVjWWFtbEZpbGU7CiAgfSBvbiBFeGNlcHRpb24gewogICAgcmV0dXJuIG51bGw7CiAgfQp9CgovLy8gRmluZHMgbmVhcmVzdCBhbmNlc3RvciBmaWxlCi8vLyByZWxhdGl2ZSB0byB0aGUgW2N3ZF0gdGhhdCBzYXRpc2ZpZXMgW3doZXJlXS4KRmlsZT8gX2ZpbmROZWFyZXN0QW5jZXN0b3IoewogIHJlcXVpcmVkIEZpbGU/IEZ1bmN0aW9uKFN0cmluZyBwYXRoKSB3aGVyZSwKICByZXF1aXJlZCBEaXJlY3RvcnkgY3dkLAp9KSB7CiAgRGlyZWN0b3J5PyBwcmV2OwogIHZhciBkaXIgPSBjd2Q7CiAgd2hpbGUgKHByZXY/LnBhdGggIT0gZGlyLnBhdGgpIHsKICAgIGZpbmFsIGZpbGUgPSB3aGVyZShkaXIucGF0aCk7CiAgICBpZiAoZmlsZT8uZXhpc3RzU3luYygpID8/IGZhbHNlKSByZXR1cm4gZmlsZTsKICAgIHByZXYgPSBkaXI7CiAgICBkaXIgPSBkaXIucGFyZW50OwogIH0KICByZXR1cm4gbnVsbDsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICBmaW5hbCBwdWJzcGVjTG9ja0ZpbGUgPSBGaWxlKHBhdGguam9pbih3b3Jrc3BhY2VSb290LnBhdGgsICdwdWJzcGVjLmxvY2snKSk7CiAgaWYgKCFwdWJzcGVjTG9ja0ZpbGUuZXhpc3RzU3luYygpKSByZXR1cm47CgogIHRyeSB7CiAgICBwdWJzcGVjTG9ja0ZpbGUuY29weVN5bmMocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJykpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlcnJvcikgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZXJyb3InKTsKICAgIHJldHVybiBleGl0KDEpOwogIH0KfQoKLy8vIFJldHVybnMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBuZWFyZXN0IERhcnQgd29ya3NwYWNlLgpEaXJlY3Rvcnk/IF9nZXRXb3Jrc3BhY2VSb290KFN0cmluZyB3b3JraW5nRGlyZWN0b3J5KSB7CiAgZmluYWwgZmlsZSA9IF9maW5kTmVhcmVzdEFuY2VzdG9yKAogICAgd2hlcmU6IChwYXRoKSA9PiBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKGN3ZDogRGlyZWN0b3J5KHBhdGgpKSwKICAgIGN3ZDogRGlyZWN0b3J5KHdvcmtpbmdEaXJlY3RvcnkpLAogICk7CiAgaWYgKGZpbGUgPT0gbnVsbCB8fCAhZmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogIHJldHVybiBEaXJlY3RvcnkocGF0aC5kaXJuYW1lKGZpbGUucGF0aCkpOwp9CgovLy8gVGhlIHdvcmtzcGFjZSByb290IGBwdWJzcGVjLnlhbWxgIGZpbGUgZm9yIHRoaXMgcHJvamVjdC4KRmlsZT8gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbCh7cmVxdWlyZWQgRGlyZWN0b3J5IGN3ZH0pIHsKICB0cnkgewogICAgZmluYWwgcHVic3BlY1lhbWxGaWxlID0gRmlsZShwYXRoLmpvaW4oY3dkLnBhdGgsICdwdWJzcGVjLnlhbWwnKSk7CiAgICBpZiAoIXB1YnNwZWNZYW1sRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogICAgZmluYWwgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UocHVic3BlY1lhbWxGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgICBpZiAocHVic3BlYy53b3Jrc3BhY2U/LmlzRW1wdHkgPz8gdHJ1ZSkgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gcHVic3BlY1lhbWxGaWxlOwogIH0gb24gRXhjZXB0aW9uIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8vIEZpbmRzIG5lYXJlc3QgYW5jZXN0b3IgZmlsZQovLy8gcmVsYXRpdmUgdG8gdGhlIFtjd2RdIHRoYXQgc2F0aXNmaWVzIFt3aGVyZV0uCkZpbGU/IF9maW5kTmVhcmVzdEFuY2VzdG9yKHsKICByZXF1aXJlZCBGaWxlPyBGdW5jdGlvbihTdHJpbmcgcGF0aCkgd2hlcmUsCiAgcmVxdWlyZWQgRGlyZWN0b3J5IGN3ZCwKfSkgewogIERpcmVjdG9yeT8gcHJldjsKICB2YXIgZGlyID0gY3dkOwogIHdoaWxlIChwcmV2Py5wYXRoICE9IGRpci5wYXRoKSB7CiAgICBmaW5hbCBmaWxlID0gd2hlcmUoZGlyLnBhdGgpOwogICAgaWYgKGZpbGU/LmV4aXN0c1N5bmMoKSA/PyBmYWxzZSkgcmV0dXJuIGZpbGU7CiAgICBwcmV2ID0gZGlyOwogICAgZGlyID0gZGlyLnBhcmVudDsKICB9CiAgcmV0dXJuIG51bGw7Cn0K", "type": "text" }, { @@ -190,7 +208,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKAogICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjLmRlcGVuZGVuY2llcy52YWx1ZXMKICAgICAgLm1hcCgKICAgICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgICAgaWYgKGRlcGVuZGVuY3kgaXMhIFBhdGhEZXBlbmRlbmN5KSByZXR1cm4gbnVsbDsKICAgICAgICAgIGlmIChwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIGRlcGVuZGVuY3kucGF0aCkpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogcGF0aC5iYXNlbmFtZVdpdGhvdXRFeHRlbnNpb24oZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgZGVwZW5kZW5jeS5wYXRoKSwKICAgICAgICAgICk7CiAgICAgICAgfSwKICAgICAgKQogICAgICAud2hlcmVUeXBlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PigpCiAgICAgIC50b0xpc3QoKTsKCiAgaWYgKGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5pc0VtcHR5KSByZXR1cm4gW107CgogIGZpbmFsIHBhY2thZ2VzRGlyZWN0b3J5ID0gRGlyZWN0b3J5KAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICksCiAgKS4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpOwoKICBmaW5hbCBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBGdXR1cmUud2FpdCgKICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChleHRlcm5hbFBhdGhEZXBlbmRlbmN5KSA9PiBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgdGFyZ2V0RGlyZWN0b3J5OiBEaXJlY3RvcnkoCiAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgKSwKICAgICAgICApLAogICAgICApLAogICAgKSwKICApOwoKICBhd2FpdCBGaWxlKAogICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgIGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJywKICAgICksCiAgKS53cml0ZUFzU3RyaW5nKAogICAgJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", "type": "text" }, { @@ -214,13 +232,19 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/get_internal_path_dependencies.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWMgPSBhd2FpdCBnZXRQdWJzcGVjKGRpcmVjdG9yeS5wYXRoKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gcHVic3BlYy5kZXBlbmRlbmNpZXMudmFsdWVzLndoZXJlKAogICAgKGRlcGVuZGVuY3kpIHsKICAgICAgcmV0dXJuIGRlcGVuZGVuY3kgaXMgUGF0aERlcGVuZGVuY3kgJiYgcGF0aC5pc1dpdGhpbignJywgZGVwZW5kZW5jeS5wYXRoKTsKICAgIH0sCiAgKS5jYXN0PFBhdGhEZXBlbmRlbmN5PigpOwoKICByZXR1cm4gaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKS50b0xpc3QoKTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8TGlzdDxTdHJpbmc+PiBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoaW8uRGlyZWN0b3J5IGRpcmVjdG9yeSkgYXN5bmMgewogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soZGlyZWN0b3J5LnBhdGgpOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcy53aGVyZSgKICAgIChkZXBlbmRlbmN5KSB7CiAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICBpZiAocGF0aERlc2NyaXB0aW9uID09IG51bGwpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBwYXRoLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICB9LAogICk7CgogIHJldHVybiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoRGVzY3JpcHRpb24hLnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQo=", "type": "text" }, { - "path": "lib/src/get_pubspec.dart", + "path": "lib/src/get_pubspec_lock.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKaW1wb3J0ICdwYWNrYWdlOnB1YnNwZWNfcGFyc2UvcHVic3BlY19wYXJzZS5kYXJ0JzsKCkZ1dHVyZTxQdWJzcGVjPiBnZXRQdWJzcGVjKAogIFN0cmluZyB3b3JraW5nRGlyZWN0b3J5LCB7CiAgcGF0aC5Db250ZXh0PyBwYXRoQ29udGV4dCwKfSkgYXN5bmMgewogIGNvbnN0IHB1YnNwZWNZYW1sID0gJ3B1YnNwZWMueWFtbCc7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgIHdvcmtpbmdEaXJlY3RvcnkuaXNFbXB0eQogICAgICAgID8gcHVic3BlY1lhbWwKICAgICAgICA6IHBhdGhSZXNvbHZlci5qb2luKHdvcmtpbmdEaXJlY3RvcnksIHB1YnNwZWNZYW1sKSwKICApOwoKICBmaW5hbCBjb250ZW50ID0gYXdhaXQgcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nKCk7CiAgcmV0dXJuIFB1YnNwZWMucGFyc2UoY29udGVudCk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3Mvc3JjL3B1YnNwZWNfbG9jay9wdWJzcGVjX2xvY2suZGFydCc7CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTxQdWJzcGVjTG9jaz4gZ2V0UHVic3BlY0xvY2soCiAgU3RyaW5nIHdvcmtpbmdEaXJlY3RvcnksIHsKICBwYXRoLkNvbnRleHQ/IHBhdGhDb250ZXh0LAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aENvbnRleHQgPz8gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrRmlsZSA9IEZpbGUoCiAgICB3b3JraW5nRGlyZWN0b3J5LmlzRW1wdHkKICAgICAgICA/ICdwdWJzcGVjLmxvY2snCiAgICAgICAgOiBwYXRoUmVzb2x2ZXIuam9pbih3b3JraW5nRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJyksCiAgKTsKCiAgZmluYWwgY29udGVudCA9IGF3YWl0IHB1YnNwZWNMb2NrRmlsZS5yZWFkQXNTdHJpbmcoKTsKICByZXR1cm4gUHVic3BlY0xvY2suZnJvbVN0cmluZyhjb250ZW50KTsKfQo=", + "type": "text" + }, + { + "path": "lib/src/pubspec_lock/pubspec_lock.dart", + "data": + "aW1wb3J0ICdkYXJ0OmNvbGxlY3Rpb24nOwoKaW1wb3J0ICdwYWNrYWdlOmVxdWF0YWJsZS9lcXVhdGFibGUuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfcGFyc2VfZXhjZXB0aW9ufQovLy8gVGhyb3duIHdoZW4gYSBbUHVic3BlY0xvY2tdIGZhaWxzIHRvIHBhcnNlLgovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgUHVic3BlY0xvY2tQYXJzZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEV4Y2VwdGlvbiB7CiAgLy8vIHtAbWFjcm8gcHVic3BlY19sb2NrX3BhcnNlX2V4Y2VwdGlvbn0KICBjb25zdCBQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uKCk7Cn0KCi8vLyBBIHJlcHJlc2VudGF0aW9uIG9mIGEgcHVic3BlYy5sb2NrIGZpbGUuCmNsYXNzIFB1YnNwZWNMb2NrIHsKICBjb25zdCBQdWJzcGVjTG9jay5fKHsKICAgIHJlcXVpcmVkIHRoaXMucGFja2FnZXMsCiAgfSk7CgogIC8vLyBQYXJzZXMgYSBbUHVic3BlY0xvY2tdIGZyb20gYSBzdHJpbmcuCiAgLy8vCiAgLy8vIElmIG5vIHBhY2thZ2VzIGFyZSBmb3VuZCwgYW4gZW1wdHkgW1B1YnNwZWNMb2NrXSBpcyByZXR1cm5lZC4gVGhvc2UKICAvLy8gcGFja2FnZXMgZW50cmllcyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXJlIGlnbm9yZWQuCiAgLy8vCiAgLy8vIEl0IHRocm93cyBhIFtQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uXSBpZiB0aGUgc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQKICAvLy8gYXMgYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKFN0cmluZyBjb250ZW50KSB7CiAgICBsYXRlIGZpbmFsIFlhbWxNYXAgeWFtbDsKICAgIHRyeSB7CiAgICAgIHlhbWwgPSBsb2FkWWFtbChjb250ZW50KSBhcyBZYW1sTWFwOwogICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAvLyBpZ25vcmU6IGF2b2lkX2NhdGNoZXNfd2l0aG91dF9vbl9jbGF1c2VzCiAgICB9IGNhdGNoIChfKSB7CiAgICAgIHRocm93IGNvbnN0IFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24oKTsKICAgIH0KCiAgICBpZiAoIXlhbWwuY29udGFpbnNLZXkoJ3BhY2thZ2VzJykpIHsKICAgICAgcmV0dXJuIFB1YnNwZWNMb2NrLmVtcHR5OwogICAgfQoKICAgIGZpbmFsIHBhY2thZ2VzID0geWFtbFsncGFja2FnZXMnXSBhcyBZYW1sTWFwOwoKICAgIGZpbmFsIHBhcnNlZFBhY2thZ2VzID0gPFB1YnNwZWNMb2NrUGFja2FnZT5bXTsKICAgIGZvciAoZmluYWwgZW50cnkgaW4gcGFja2FnZXMuZW50cmllcykgewogICAgICB0cnkgewogICAgICAgIGZpbmFsIHBhY2thZ2UgPSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoCiAgICAgICAgICBuYW1lOiBlbnRyeS5rZXkgYXMgU3RyaW5nLAogICAgICAgICAgZGF0YTogZW50cnkudmFsdWUgYXMgWWFtbE1hcCwKICAgICAgICApOwogICAgICAgIHBhcnNlZFBhY2thZ2VzLmFkZChwYWNrYWdlKTsKICAgICAgICAvLyBpZ25vcmluZyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogICAgICAgIC8vIGlnbm9yZTogYXZvaWRfY2F0Y2hlc193aXRob3V0X29uX2NsYXVzZXMKICAgICAgfSBjYXRjaCAoXykgewogICAgICAgIC8vIElnbm9yZSB0aG9zZSBwYWNrYWdlcyB0aGF0IGZvciBzb21lIHJlYXNvbiBjYW5ub3QgYmUgcGFyc2VkLgogICAgICB9CiAgICB9CgogICAgcmV0dXJuIFB1YnNwZWNMb2NrLl8oCiAgICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhwYXJzZWRQYWNrYWdlcyksCiAgICApOwogIH0KCiAgLy8vIEFuIGVtcHR5IFtQdWJzcGVjTG9ja10uCiAgc3RhdGljIFB1YnNwZWNMb2NrIGVtcHR5ID0gUHVic3BlY0xvY2suXygKICAgIHBhY2thZ2VzOiBVbm1vZGlmaWFibGVMaXN0VmlldyhbXSksCiAgKTsKCiAgLy8vIEFsbCB0aGUgZGVwZW5kZW5jaWVzIGluIHRoZSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBVbm1vZGlmaWFibGVMaXN0VmlldzxQdWJzcGVjTG9ja1BhY2thZ2U+IHBhY2thZ2VzOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeX0KLy8vIEEgcmVwcmVzZW50YXRpb24gb2YgYSBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjTG9ja1BhY2thZ2UgZXh0ZW5kcyBFcXVhdGFibGUgewogIC8vLyB7QG1hY3JvIHB1YnNwZWNfbG9ja19kZXBlbmRlbmN5fQogIGNvbnN0IFB1YnNwZWNMb2NrUGFja2FnZSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnR5cGUsCiAgICB0aGlzLnBhdGhEZXNjcmlwdGlvbiwKICB9KTsKCiAgLy8vIFBhcnNlcyBhIFtQdWJzcGVjTG9ja1BhY2thZ2VdIGZyb20gYSBbWWFtbE1hcF0uCiAgZmFjdG9yeSBQdWJzcGVjTG9ja1BhY2thZ2UuZnJvbVlhbWxNYXAoewogICAgcmVxdWlyZWQgU3RyaW5nIG5hbWUsCiAgICByZXF1aXJlZCBZYW1sTWFwIGRhdGEsCiAgfSkgewogICAgZmluYWwgZGVwZW5kZW5jeSA9IGRhdGFbJ2RlcGVuZGVuY3knXSBhcyBTdHJpbmc7CiAgICBmaW5hbCBkZXBlbmRlbmN5VHlwZSA9IFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnBhcnNlKGRlcGVuZGVuY3kpOwoKICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gZGF0YVsnZGVzY3JpcHRpb24nXSBhcyBZYW1sTWFwPzsKICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uICE9IG51bGwKICAgICAgICA/IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRlc2NyaXB0aW9uKQogICAgICAgIDogbnVsbDsKCiAgICByZXR1cm4gUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICBuYW1lOiBuYW1lLAogICAgICB0eXBlOiBkZXBlbmRlbmN5VHlwZSwKICAgICAgcGF0aERlc2NyaXB0aW9uOiBwYXRoRGVzY3JpcHRpb24sCiAgICApOwogIH0KCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBkZXBlbmRlbmN5LgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8ge0BtYWNybyBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQogIGZpbmFsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHR5cGU7CgogIC8vLyB7QG1hY3JvIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQogIGZpbmFsIFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPyBwYXRoRGVzY3JpcHRpb247CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtuYW1lLCB0eXBlLCBwYXRoRGVzY3JpcHRpb25dOwp9CgovLy8ge0B0ZW1wbGF0ZSBwdWJzcGVjX2xvY2tfZGVwZW5kZW5jeV90eXBlfQovLy8gVGhlIHR5cGUgb2YgYSBbUHVic3BlY0xvY2tQYWNrYWdlXS4KLy8vIHtAZW5kdGVtcGxhdGV9CmVudW0gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUgewogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgdG8gd29yay4KICAvLy8KICAvLy8gU2VlIGFsc286CiAgLy8vCiAgLy8vICogW0RhcnQncyBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcykKICBkaXJlY3RNYWluLl8oJ2RpcmVjdCBtYWluJyksCgogIC8vLyBBbm90aGVyIHBhY2thZ2UgdGhhdCB5b3VyIHBhY2thZ2UgbmVlZHMgZHVyaW5nIGRldmVsb3BtZW50LgogIC8vLwogIC8vLyBTZWUgYWxzbzoKICAvLy8KICAvLy8gKiBbRGFydCdzIGRldmVsb3BlciBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2RlcGVuZGVuY2llcyNkZXYtZGVwZW5kZW5jaWVzKQogIGRpcmVjdERldi5fKCdkaXJlY3QgZGV2JyksCgogIC8vLyBBIGRlcGVuZGVuY3kgdGhhdCB5b3VyIHBhY2thZ2UgaW5kaXJlY3RseSB1c2VzIGJlY2F1c2Ugb25lIG9mIGl0cwogIC8vLyBkZXBlbmRlbmNpZXMgcmVxdWlyZXMgaXQuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5IGRvY3VtZW50YXRpb25dKGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I3RyYW5zaXRpdmUtKQogIHRyYW5zaXRpdmUuXygndHJhbnNpdGl2ZScpLAoKICAvLy8gIEEgZGVwZW5kZW5jeSB0aGF0IHlvdXIgcGFja2FnZSBvdmVycmlkZXMgdGhhdCBpcyBub3QgYWxyZWFkeSBhCiAgLy8vIGBkaXJlY3QgbWFpbmAgb3IgYGRpcmVjdCBkZXZgIGRlcGVuZGVuY3kuCiAgLy8vCiAgLy8vIFNlZSBhbHNvOgogIC8vLwogIC8vLyAqIFtEYXJ0J3MgZGVwZW5kZW5jeSBvdmVycmlkZSBkb2N1bWVudGF0aW9uXShodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9kZXBlbmRlbmNpZXMjZGVwZW5kZW5jeS1vdmVycmlkZXMpCiAgZGlyZWN0T3ZlcnJpZGRlbi5fKCdkaXJlY3Qgb3ZlcnJpZGRlbicpOwoKICBjb25zdCBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5fKHRoaXMudmFsdWUpOwoKICAvLy8gUGFyc2VzIGEgW1B1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlXSBmcm9tIGEgc3RyaW5nLgogIC8vLwogIC8vLyBUaHJvd3MgYW4gW0FyZ3VtZW50RXJyb3JdIGlmIHRoZSBzdHJpbmcgaXMgbm90IGEgdmFsaWQgZGVwZW5kZW5jeSB0eXBlLgogIGZhY3RvcnkgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoU3RyaW5nIHZhbHVlKSB7CiAgICBpZiAoX3ZhbHVlTWFwLmNvbnRhaW5zS2V5KHZhbHVlKSkgewogICAgICByZXR1cm4gX3ZhbHVlTWFwW3ZhbHVlXSE7CiAgICB9CgogICAgdGhyb3cgQXJndW1lbnRFcnJvci52YWx1ZSgKICAgICAgdmFsdWUsCiAgICAgICd2YWx1ZScsCiAgICAgICdJbnZhbGlkIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlIHZhbHVlLicsCiAgICApOwogIH0KCiAgc3RhdGljIE1hcDxTdHJpbmcsIFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlPiBfdmFsdWVNYXAgPSB7CiAgICBmb3IgKGZpbmFsIHR5cGUgaW4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudmFsdWVzKQogICAgICB0eXBlLnZhbHVlOiB0eXBlLAogIH07CgogIC8vLyBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBbUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGVdCiAgLy8vIGFzIGl0IGFwcGVhcnMgaW4gYSBwdWJzcGVjLmxvY2sgZmlsZS4KICBmaW5hbCBTdHJpbmcgdmFsdWU7Cn0KCi8vLyB7QHRlbXBsYXRlIHB1YnNwZWNfcGFja2FnZV9wYXRoX2Rlc2NyaXB0aW9ufQovLy8gVGhlIGRlc2NyaXB0aW9uIG9mIGEgcGF0aCBkZXBlbmRlbmN5IGluIGEgcHVic3BlYy5sb2NrIGZpbGUuCi8vLwovLy8gRm9yIGV4YW1wbGUsIGluOgovLy8gYGBgeWFtbAovLy8gbXlfcGFja2FnZToKLy8vICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgovLy8gICBkZXNjcmlwdGlvbjoKLy8vICAgICBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vICAgICByZWxhdGl2ZTogdHJ1ZQovLy8gICBzb3VyY2U6IHBhdGgKLy8vICAgdmVyc2lvbjogIjEuMC4wKzEiCi8vLyBgYGAKLy8vCi8vLyBUaGUgZGVzY3JpcHRpb24gaXM6Ci8vLyBgYGB5YW1sCi8vLyBwYXRoOiAicGFja2FnZXMvbXlfcGFja2FnZSIKLy8vIHJlbGF0aXZlOiB0cnVlCi8vLyBgYGAKLy8vCi8vLyBTZWUgYWxzbzoKLy8vCi8vLyAqIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZV0sIHdoaWNoIGF0dGVtcHRzIHRvIHBhcnNlcyBhCi8vLyBbWWFtbE1hcF0gaW50byBhIFtQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbl0uCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbiBleHRlbmRzIEVxdWF0YWJsZSB7CiAgY29uc3QgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oewogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogICAgcmVxdWlyZWQgdGhpcy5yZWxhdGl2ZSwKICB9KTsKCiAgLy8vIEF0dGVtcHRzIHRvIHBhcnNlIGEgW1lhbWxNYXBdIGludG8gYSBbUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb25dLgogIC8vLwogIC8vLyBSZXR1cm5zIGBudWxsYCBpZiB0aGUgW1lhbWxNYXBdIGRvZXMgbm90IGNvbnRhaW4gdGhlIHJlcXVpcmVkIGRhdGEKICAvLy8gdG8gY3JlYXRlIGEgW1B1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uXS4KICBzdGF0aWMgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24/IHRyeVBhcnNlKFlhbWxNYXAgZGF0YSkgewogICAgaWYgKCghZGF0YS5jb250YWluc0tleSgncGF0aCcpIHx8IGRhdGFbJ3BhdGgnXSBpcyEgU3RyaW5nKSB8fAogICAgICAgICghZGF0YS5jb250YWluc0tleSgncmVsYXRpdmUnKSB8fCBkYXRhWydyZWxhdGl2ZSddIGlzISBib29sKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBmaW5hbCBwYXRoID0gZGF0YVsncGF0aCddIGFzIFN0cmluZzsKICAgIGZpbmFsIHJlbGF0aXZlID0gZGF0YVsncmVsYXRpdmUnXSBhcyBib29sOwoKICAgIHJldHVybiBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgcGF0aDogcGF0aCwKICAgICAgcmVsYXRpdmU6IHJlbGF0aXZlLAogICAgKTsKICB9CgogIGZpbmFsIFN0cmluZyBwYXRoOwogIGZpbmFsIGJvb2wgcmVsYXRpdmU7CgogIEBvdmVycmlkZQogIExpc3Q8T2JqZWN0Pz4gZ2V0IHByb3BzID0+IFtwYXRoLCByZWxhdGl2ZV07Cn0K", "type": "text" }, { @@ -238,7 +262,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwogIGZpbmFsIHVzZXNXb3Jrc3BhY2VzID0gdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgZXhpdDogZXhpdCwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgaWYgKHVzZXNXb3Jrc3BhY2VzKSB7CiAgICAvLyBEaXNhYmxlIHdvcmtzcGFjZSByZXNvbHV0aW9uIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXItcGFja2FnZSBsb2NrZmlsZXMuCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAogICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICAgIC8vIENvcHkgdGhlIHB1YnNwZWMubG9jayBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdCB0byBlbnN1cmUgdGhlIHNhbWUgdmVyc2lvbnMKICAgIC8vIG9mIGRlcGVuZGVuY2llcyBhcmUgdXNlZCBpbiB0aGUgcHJvZHVjdGlvbiBidWlsZC4KICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgY29udGV4dCwKICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwogIGZpbmFsIHVzZXNXb3Jrc3BhY2VzID0gdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgZXhpdDogZXhpdCwKICApOwoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgaWYgKHVzZXNXb3Jrc3BhY2VzKSB7CiAgICAvLyBEaXNhYmxlIHdvcmtzcGFjZSByZXNvbHV0aW9uIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXItcGFja2FnZSBsb2NrZmlsZXMuCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAogICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICAgIC8vIENvcHkgdGhlIHB1YnNwZWMubG9jayBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdCB0byBlbnN1cmUgdGhlIHNhbWUgdmVyc2lvbnMKICAgIC8vIG9mIGRlcGVuZGVuY2llcyBhcmUgdXNlZCBpbiB0aGUgcHJvZHVjdGlvbiBidWlsZC4KICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgY29udGV4dCwKICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", "type": "text" }, { @@ -256,13 +280,19 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/pre_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY3MuZGFydCc7CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncHJlR2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIEZ1dHVyZTxQcm9jZXNzUmVzdWx0PiBzdWNjZXNzUnVuUHJvY2VzcygKICAgICAgZXhlY3V0YWJsZSwKICAgICAgYXJncywgewogICAgICBTdHJpbmc/IHdvcmtpbmdEaXJlY3RvcnksCiAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICB9KSA9PgogICAgICAgIEZ1dHVyZS52YWx1ZShQcm9jZXNzUmVzdWx0KDAsIDAsICcnLCAnJykpOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpCiAgICAgICAgLi52YXJzWydkYXJ0VmVyc2lvbiddID0gJ3N0YWJsZSc7CgogICAgICB3aGVuKCgpID0+IGxvZ2dlci5wcm9ncmVzcyhhbnkoKSkpLnRoZW5SZXR1cm4oX01vY2tQcm9ncmVzcygpKTsKICAgIH0pOwoKICAgIHRlc3QoJ3J1biBjb21wbGV0ZXMnLCAoKSB7CiAgICAgIGV4cGVjdCgKICAgICAgICBFeGl0T3ZlcnJpZGVzLnJ1blpvbmVkKAogICAgICAgICAgKCkgPT4gcHJlX2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICAgZXhpdDogKF8pIHt9LAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBpZiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiB0aHJvd3MnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGZpbmFsIGV4Y2VwdGlvbiA9IEV4Y2VwdGlvbignb29wcycpOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IHRocm93IGV4Y2VwdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgIHZlcmlmeSgoKSA9PiBsb2dnZXIuZXJyKGV4Y2VwdGlvbi50b1N0cmluZygpKSkuY2FsbGVkKDEpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm91dGUgY29uZmxpY3RzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHsKICAgICAgICAgICcvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvX2luZGV4JywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoJ3JvdXRlcy9oZWxsby9pbmRleC5kYXJ0Jyl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKCcvaGVsbG8nKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXQoMSkgZm9yIHJvZ3VlIHJvdXRlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogWwogICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgKSwKICAgICAgICBdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnJydSb2d1ZSByb3V0ZSBkZXRlY3RlZC4ke2RlZmF1bHRGb3JlZ3JvdW5kLndyYXAoJyAnKX1SZW5hbWUgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvLmRhcnQnKX0gdG8gJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0uJycnLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgIH0pOwoKICAgIHRlc3QoJ3dvcmtzIHdpdGggd29ya3NwYWNlcycsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlUm9vdCk7CiAgICAgIGZpbmFsIHNlcnZlciA9IERpcmVjdG9yeSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdzZXJ2ZXInKSwKICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKHdvcmtzcGFjZUNoaWxkKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "type": "text" + }, + { + "path": "test/pubspec_locks.dart", + "data": + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeSBhbmQgaGFzIGEgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSB0aGFuIHRoZSBkaXJlY3RvcnkgbmFtZS4KLy8vICogQSBkaXJlY3QgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBkZXYgbWFpbiBkZXBlbmRlbmN5IHRoYXQgaXMgaG9zdGVkLgovLy8gKiBBIGRpcmVjdCBvdmVycmlkZGVuIGRlcGVuZGVuY3kgZnJvbSBnaXQuCmNvbnN0IGZvb1BhdGggPSAnJycKcGFja2FnZXM6CiAgYXJnczoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBhcmdzCiAgICAgIHNoYTI1NjogZWVmNmM0NmI2MjJlMDQ5NGEzNmM1YTEyZDEwZDc3ZmI0ZTg1NTUwMWE5MWMxYjllZjkzMzkzMjZlNThmMDU5NgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjIuNC4yIgogIGZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgc2Vjb25kX2ZvbzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAiLi4vLi4vZm9vMiIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGRpcmVjdF9tYWluOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGRpcmVjdF9tYWluCiAgICAgIHNoYTI1NjogZmRjOWVhOTA1ZTdjNjkwZmUzOWQyZjk5NDZiN2FlYWQ4NmZkOTc2ZjhlZGY5N2QyNTIxYTY1ZDI2MGJiZjUwOQogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MCIKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBkZXYiCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogdGVzdAogICAgICBzaGEyNTY6ICI5YjBkZDhlMzZhZjRhNWIxNTY5MDI5OTQ5ZDUwYTUyY2IyYTJhMmZkYWEyMGNlYmI5NmU2NjAzYjlhZTI0MWY5IgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjEuMjQuNiIKICBkaXJlY3Rfb3ZlcnJpZGRlbjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3Qgb3ZlcnJpZGRlbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvbWFzb24iCiAgICAgIHJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHJlc29sdmVkLXJlZjogIjcyYzMwNmE4ZDhhYmYzMDZiNWQwMjRmOTVhYWMyOWJhNWZkOTY1NzciCiAgICAgIHVybDogImh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24iCiAgICBzb3VyY2U6IGdpdAogICAgdmVyc2lvbjogIjAuMS4wLWRldi41MiIKc2RrczoKICBkYXJ0OiAiPj0zLjAuMCA8NC4wLjAiCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy5sb2NrYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIHRyYW5zaXRpdmUgZGVwZW5kZW5jeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5ID0gJycnCnBhY2thZ2VzOgogIGFyZ3M6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogYXJncwogICAgICBzaGEyNTY6IGVlZjZjNDZiNjIyZTA0OTRhMzZjNWExMmQxMGQ3N2ZiNGU4NTU1MDFhOTFjMWI5ZWY5MzM5MzI2ZTU4ZjA1OTYKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIyLjQuMiIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogIi4uLy4uL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjAuMC4wIgogIGJhcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGFja2FnZXMvYmFyIgogICAgICByZWxhdGl2ZTogdHJ1ZQogICAgc291cmNlOiBwYXRoCiAgICB2ZXJzaW9uOiAiMC4wLjAiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLmxvY2tgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgdHJhbnNpdGl2ZSBkZXBlbmRlbmN5LgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCmNvbnN0IG5vUGF0aERlcGVuZGVuY2llcyA9ICcnJwpwYWNrYWdlczoKICBhcmdzOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFyZ3MKICAgICAgc2hhMjU2OiBlZWY2YzQ2YjYyMmUwNDk0YTM2YzVhMTJkMTBkNzdmYjRlODU1NTAxYTkxYzFiOWVmOTMzOTMyNmU1OGYwNTk2CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMi40LjIiCiAgbWFzb246CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogbWFzb24KICAgICAgc2hhMjU2OiBmZGM5ZWE5MDVlN2M2OTBmZTM5ZDJmOTk0NmI3YWVhZDg2ZmQ5NzZmOGVkZjk3ZDI1MjFhNjVkMjYwYmJmNTA5CiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMC4xLjAtZGV2LjUwIgogIHRlc3Q6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB0ZXN0CiAgICAgIHNoYTI1NjogIjliMGRkOGUzNmFmNGE1YjE1NjkwMjk5NDlkNTBhNTJjYjJhMmEyZmRhYTIwY2ViYjk2ZTY2MDNiOWFlMjQxZjkiCiAgICAgIHVybDogImh0dHBzOi8vcHViLmRldiIKICAgIHNvdXJjZTogaG9zdGVkCiAgICB2ZXJzaW9uOiAiMS4yNC42IgpzZGtzOgogIGRhcnQ6ICI+PTMuMC4wIDw0LjAuMCIKJycnOwo=", "type": "text" }, { "path": "test/pubspecs.dart", "data": - "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IGEgY2hpbGQgb2YgdGhlIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vICogQSBkaXJlY3QgbWFpbiBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3QgYSBjaGlsZCBvZiB0aGUgcHJvamVjdAovLy8gZGlyZWN0b3J5IGFuZCBoYXMgYSBkaWZmZXJlbnQgcGFja2FnZSBuYW1lIHRoYW4gdGhlIGRpcmVjdG9yeSBuYW1lLgovLy8gKiBBIGRpcmVjdCBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IGRldiBtYWluIGRlcGVuZGVuY3kgdGhhdCBpcyBob3N0ZWQuCi8vLyAqIEEgZGlyZWN0IG92ZXJyaWRkZW4gZGVwZW5kZW5jeSBmcm9tIGdpdC4KY29uc3QgZm9vUGF0aCA9ICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICBmb286CiAgICBwYXRoOiAuLi8uLi9mb28KICBmb28yOgogICAgcGF0aDogLi4vLi4vZm9vMgogIGRpcmVjdF9tYWluOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGRpcmVjdF9vdmVycmlkZGVuOgogICAgZ2l0OgogICAgICB1cmw6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbGVzdGlhZ28vbWFzb24KICAgICAgcGF0aDogcGFja2FnZXMvbWFzb24KICAgICAgcmVmOiA3MmMzMDZhOGQ4YWJmMzA2YjVkMDI0Zjk1YWFjMjliYTVmZDk2NTc3CicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBhIGNoaWxkIG9mIHRoZSBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3QgZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZm9vOgogICAgcGF0aDogLi4vLi4vZm9vCiAgYmFyOgogICAgcGF0aDogcGFja2FnZXMvYmFyCiAgbWFzb246IF4wLjEuMC1kZXYuNTAKZGV2X2RlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKJycnOwoKLy8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KLy8vICogQSBkaXJlY3QgZGV2IG1haW4gZGVwZW5kZW5jeSB0aGF0IGlzIGhvc3RlZC4KY29uc3Qgbm9QYXRoRGVwZW5kZW5jaWVzID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIG1hc29uOiBeMC4xLjAtZGV2LjUwCmRldl9kZXBlbmRlbmNpZXM6CiAgdGVzdDogXjEuMC4wCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBBIGRpcmVjdCBtYWluIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIGEgY2hpbGQgb2YgdGhlIHByb2plY3QgZGlyZWN0b3J5LgovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VSb290ID0gJycnCm5hbWU6IF8KZGVwZW5kZW5jaWVzOgogIHNlcnZlcjoKICAgIHBhdGg6IHBhY2thZ2VzL3NlcnZlciAgCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL3NlcnZlcgonJyc7CgovLy8gQW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgYHB1YnNwZWMueWFtbGAgZmlsZSB3aXRoOgovLy8KLy8vICogRGFydCB3b3Jrc3BhY2VzIGVuYWJsZWQKY29uc3Qgd29ya3NwYWNlQ2hpbGQgPSAnJycKbmFtZTogc2VydmVyCnJlc29sdXRpb246IHdvcmtzcGFjZQonJyc7Cg==", + "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIERhcnQgd29ya3NwYWNlcyBlbmFibGVkCmNvbnN0IHdvcmtzcGFjZVJvb3QgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgc2VydmVyOgogICAgcGF0aDogcGFja2FnZXMvc2VydmVyICAKd29ya3NwYWNlOgogIC0gcGFja2FnZXMvc2VydmVyCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VDaGlsZCA9ICcnJwpuYW1lOiBzZXJ2ZXIKcmVzb2x1dGlvbjogd29ya3NwYWNlCicnJzsK", "type": "text" }, { @@ -280,7 +310,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNzLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyJywgKCkgewogICAgdGVzdCgnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyA9PiBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnkgPQogICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbzInKTsKICAgICAgZmluYWwgZm9vMlBhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28yJywKICAgICAgKTsKCiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckZm9vMlBhY2thZ2VEaXJlY3RvcnkgLT4gJGZvbzJQYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgXSk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgPT4gY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyksCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", "type": "text" }, { @@ -304,7 +334,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/get_internal_path_dependencies_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBfCmRlcGVuZGVuY2llczoKICB0ZXN0OiBeMS4wLjAKICBtYXNvbjogXjAuMS4wCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLCBjb21wbGV0aW9uKGlzRW1wdHkpKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0dXJucyBjb3JyZWN0IHBhdGggZGVwZW5kZW5jaWVzJywgKCkgewogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgZGFydF9mcm9nOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2cKICBkYXJ0X2Zyb2dfZ2VuOgogICAgcGF0aDogcGF0aC90by9kYXJ0X2Zyb2dfZ2VuCicnJywKICAgICAgKTsKICAgICAgZXhwZWN0KAogICAgICAgIGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcyhkaXJlY3RvcnkpLAogICAgICAgIGNvbXBsZXRpb24oCiAgICAgICAgICBlcXVhbHMoWydwYXRoL3RvL2RhcnRfZnJvZycsICdwYXRoL3RvL2RhcnRfZnJvZ19nZW4nXSksCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2dldFBhdGhEZXBlbmRlbmNpZXMnLCAoKSB7CiAgICB0ZXN0KCdyZXR1cm5zIG5vdGhpbmcgd2hlbiB0aGVyZSBhcmUgbm8gcGF0aCBkZXBlbmRlbmNpZXMnLCAoKSB7CiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpwYWNrYWdlczoKICB0ZXN0OgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgogIG1hc29uOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IGFuYWx5emVyCiAgICAgIHNoYTI1NjogZjg1NTY2ZWM3YjNkMjVjYmVhNjBmN2RkNGYxNTdjNTAyNWYyZjE5MjMzY2E0ZmVlZWQzM2I2MTZjNzhhMjZhMwogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjYuMS4wIgonJycsCiAgICAgICk7CiAgICAgIGV4cGVjdChnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoZGlyZWN0b3J5KSwgY29tcGxldGlvbihpc0VtcHR5KSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldHVybnMgY29ycmVjdCBwYXRoIGRlcGVuZGVuY2llcycsICgpIHsKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCnBhY2thZ2VzOgogIGRhcnRfZnJvZzoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBwYXRoOiAicGF0aC90by9kYXJ0X2Zyb2ciCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKICBkYXJ0X2Zyb2dfZ2VuOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBtYWluIgogICAgZGVzY3JpcHRpb246CiAgICAgIHBhdGg6ICJwYXRoL3RvL2RhcnRfZnJvZ19nZW4iCiAgICAgIHJlbGF0aXZlOiB0cnVlCiAgICBzb3VyY2U6IHBhdGgKICAgIHZlcnNpb246ICIwLjAuMCIKJycnLAogICAgICApOwogICAgICBleHBlY3QoCiAgICAgICAgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKGRpcmVjdG9yeSksCiAgICAgICAgY29tcGxldGlvbigKICAgICAgICAgIGVxdWFscyhbJ3BhdGgvdG8vZGFydF9mcm9nJywgJ3BhdGgvdG8vZGFydF9mcm9nX2dlbiddKSwKICAgICAgICApLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKICB9KTsKfQo=", + "type": "text" + }, + { + "path": "test/src/pubspec_lock/pubspec_lock_test.dart", + "data": + "Ly8gaWdub3JpbmcgZm9yIHRlc3RpbmcgcHVycG9zZXMKLy8gaWdub3JlX2Zvcl9maWxlOiBwcmVmZXJfY29uc3RfY29uc3RydWN0b3JzCgppbXBvcnQgJ3BhY2thZ2U6ZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzL3NyYy9wdWJzcGVjX2xvY2svcHVic3BlY19sb2NrLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6eWFtbC95YW1sLmRhcnQnOwoKdm9pZCBtYWluKCkgewogIGdyb3VwKCckUHVic3BlY0xvY2snLCAoKSB7CiAgICBncm91cCgnZnJvbVN0cmluZycsICgpIHsKICAgICAgdGVzdCgncGFyc2VzIGNvcnJlY3RseScsICgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjTG9jayA9IFB1YnNwZWNMb2NrLmZyb21TdHJpbmcoX3B1YnNwZWNMb2NrQ29udGVudCk7CgogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNMb2NrLnBhY2thZ2VzLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICBjb25zdCBbCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF90ZXN0X3J1bm5lcicsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3RNYWluLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3ZlcnlfZ29vZF9hbmFseXNpcycsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5kaXJlY3REZXYsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbCcsCiAgICAgICAgICAgICAgICB0eXBlOiBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS50cmFuc2l0aXZlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlKAogICAgICAgICAgICAgICAgbmFtZTogJ3BhdGgnLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiwKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICAgICAgICAgIHBhdGhEZXNjcmlwdGlvbjogUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgICAgICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgICAgICAgICBuYW1lOiAneWFtbDInLAogICAgICAgICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3Rocm93cyBhICRQdWJzcGVjTG9ja1BhcnNlRXhjZXB0aW9uIHdoZW4gY29udGVudCBpcyBlbXB0eScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICAoKSA9PiBQdWJzcGVjTG9jay5mcm9tU3RyaW5nKCcnKSwKICAgICAgICAgIHRocm93c0EoaXNBPFB1YnNwZWNMb2NrUGFyc2VFeGNlcHRpb24+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBlbXB0eSBQdWJzcGVjTG9jayB3aGVuIGNvbnRlbnQgaGFzIG5vIHBhY2thZ2VzIGVudHJ5JywgKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNMb2NrID0gUHVic3BlY0xvY2suZnJvbVN0cmluZyhfZW1wdHlQdWJzcGVjTG9ja0NvbnRlbnQpOwogICAgICAgIGV4cGVjdChwdWJzcGVjTG9jay5wYWNrYWdlcywgaXNFbXB0eSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY0xvY2tQYWNrYWdlJywgKCkgewogICAgdGVzdCgnY2FuIGJlIGluc3RhbnRpYXRlZCcsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIFB1YnNwZWNMb2NrUGFja2FnZSgKICAgICAgICAgIG5hbWU6ICdmb28nLAogICAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgICApLAogICAgICAgIGlzQTxQdWJzcGVjTG9ja1BhY2thZ2U+KCksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdzdXBwb3J0cyB2YWx1ZSBlcXVhbGl0eScsICgpIHsKICAgICAgZmluYWwgcGFja2FnZTEgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTIgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2ZvbycsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiwKICAgICAgKTsKICAgICAgZmluYWwgcGFja2FnZTMgPSBQdWJzcGVjTG9ja1BhY2thZ2UoCiAgICAgICAgbmFtZTogJ2JhcicsCiAgICAgICAgdHlwZTogUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUudHJhbnNpdGl2ZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChwYWNrYWdlMSwgZXF1YWxzKHBhY2thZ2UyKSk7CiAgICAgIGV4cGVjdChwYWNrYWdlMSwgaXNOb3QoZXF1YWxzKHBhY2thZ2UzKSkpOwogICAgICBleHBlY3QocGFja2FnZTIsIGlzTm90KGVxdWFscyhwYWNrYWdlMykpKTsKICAgIH0pOwogIH0pOwoKICBncm91cCgnJFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlJywgKCkgewogICAgZ3JvdXAoJ3BhcnNlJywgKCkgewogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgbWFpbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBtYWluJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0TWFpbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3QgZGV2YCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgnZGlyZWN0IGRldicpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLmRpcmVjdERldiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGBkaXJlY3Qgb3ZlcnJpZGRlbmAnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2RpcmVjdCBvdmVycmlkZGVuJyksCiAgICAgICAgICBlcXVhbHMoUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUuZGlyZWN0T3ZlcnJpZGRlbiksCiAgICAgICAgKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdwYXJzZXMgc3VjY2Vzc2Z1bGx5IGB0cmFuc2l0aXZlYCcsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBQdWJzcGVjTG9ja1BhY2thZ2VEZXBlbmRlbmN5VHlwZS5wYXJzZSgndHJhbnNpdGl2ZScpLAogICAgICAgICAgZXF1YWxzKFB1YnNwZWNMb2NrUGFja2FnZURlcGVuZGVuY3lUeXBlLnRyYW5zaXRpdmUpLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgndGhyb3dzIGEgJEFyZ3VtZW50RXJyb3Igd2hlbiB0eXBlIGlzIGludmFsaWQnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgKCkgPT4gUHVic3BlY0xvY2tQYWNrYWdlRGVwZW5kZW5jeVR5cGUucGFyc2UoJ2ludmFsaWQnKSwKICAgICAgICAgIHRocm93c0EoaXNBPEFyZ3VtZW50RXJyb3I+KCkpLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7CgogIGdyb3VwKCckUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24nLCAoKSB7CiAgICB0ZXN0KCdjYW4gYmUgaW5zdGFudGlhdGVkJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICAgICksCiAgICAgICAgaXNBPFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uPigpLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnc3VwcG9ydHMgdmFsdWUgZXF1YWxpdHknLCAoKSB7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uMSA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBkZXNjcmlwdGlvbjIgPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbigKICAgICAgICBwYXRoOiAncGFja2FnZXMvZm9vJywKICAgICAgICByZWxhdGl2ZTogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZGVzY3JpcHRpb24zID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2JhcicsCiAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGRlc2NyaXB0aW9uNCA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uKAogICAgICAgIHBhdGg6ICdwYWNrYWdlcy9mb28nLAogICAgICAgIHJlbGF0aXZlOiBmYWxzZSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChkZXNjcmlwdGlvbjEsIGVxdWFscyhkZXNjcmlwdGlvbjIpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uMykpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMSwgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uMywgaXNOb3QoZXF1YWxzKGRlc2NyaXB0aW9uNCkpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd0cnlQYXJzZScsICgpIHsKICAgICAgdGVzdCgncGFyc2VzJywgKCkgewogICAgICAgIGZpbmFsIGRhdGEgPSBsb2FkWWFtbCgKICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgpyZWxhdGl2ZTogdHJ1ZQogICAgICAgICAgICAnJycsCiAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICBleHBlY3QoCiAgICAgICAgICBkZXNjcmlwdGlvbiwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24oCiAgICAgICAgICAgICAgcGF0aDogJ3BhY2thZ2VzL2ZvbycsCiAgICAgICAgICAgICAgcmVsYXRpdmU6IHRydWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwoKICAgICAgZ3JvdXAoJ3JldHVybnMgbnVsbCcsICgpIHsKICAgICAgICB0ZXN0KCd3aGVuIG1pc3NpbmcgInBhdGgiJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcmVsYXRpdmU6IHRydWUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwoKICAgICAgICB0ZXN0KCd3aGVuICJwYXRoIiBpcyBub3QgYSBTdHJpbmcnLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAxCnJlbGF0aXZlOiB0cnVlCiAgICAgICAgICAgICcnJywKICAgICAgICAgICkgYXMgWWFtbE1hcDsKCiAgICAgICAgICBmaW5hbCBkZXNjcmlwdGlvbiA9IFB1YnNwZWNQYWNrYWdlUGF0aERlc2NyaXB0aW9uLnRyeVBhcnNlKGRhdGEpOwoKICAgICAgICAgIGV4cGVjdChkZXNjcmlwdGlvbiwgaXNOdWxsKTsKICAgICAgICB9KTsKCiAgICAgICAgdGVzdCgnd2hlbiBtaXNzaW5nICJyZWxhdGl2ZSInLCAoKSB7CiAgICAgICAgICBmaW5hbCBkYXRhID0gbG9hZFlhbWwoCiAgICAgICAgICAgICcnJwpwYXRoOiAicGFja2FnZXMvZm9vIgogICAgICAgICAgICAnJycsCiAgICAgICAgICApIGFzIFlhbWxNYXA7CgogICAgICAgICAgZmluYWwgZGVzY3JpcHRpb24gPSBQdWJzcGVjUGFja2FnZVBhdGhEZXNjcmlwdGlvbi50cnlQYXJzZShkYXRhKTsKCiAgICAgICAgICBleHBlY3QoZGVzY3JpcHRpb24sIGlzTnVsbCk7CiAgICAgICAgfSk7CgogICAgICAgIHRlc3QoJ3doZW4gInJlbGF0aXZlIiBpcyBub3QgYSBib29sJywgKCkgewogICAgICAgICAgZmluYWwgZGF0YSA9IGxvYWRZYW1sKAogICAgICAgICAgICAnJycKcGF0aDogInBhY2thZ2VzL2ZvbyIKcmVsYXRpdmU6IDUKICAgICAgICAgICAgJycnLAogICAgICAgICAgKSBhcyBZYW1sTWFwOwoKICAgICAgICAgIGZpbmFsIGRlc2NyaXB0aW9uID0gUHVic3BlY1BhY2thZ2VQYXRoRGVzY3JpcHRpb24udHJ5UGFyc2UoZGF0YSk7CgogICAgICAgICAgZXhwZWN0KGRlc2NyaXB0aW9uLCBpc051bGwpOwogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9CgovLy8gQW4gZXhhbXBsZSBwdWJzcGVjLmxvY2sgY29udGVudCB1c2VkIHRvIHRlc3QgdGhlIFtQdWJzcGVjTG9ja10gY2xhc3MuCi8vLwovLy8gSXQgaGFzIGJlZW4gYXJ0aWZpY2lhbGx5IGNyYWZ0ZWQgdG8gaW5jbHVkZToKLy8vIC0gb25lIHB1YiBob3N0ZWQgZGlyZWN0IG1haW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcHViIGhvc3RlZCBkaXJlY3QgZGV2IHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIHB1YiBob3N0ZWQgdHJhbnNpdGl2ZSBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBwdWIgaG9zdGVkIG92ZXJyaWRkZW4gcGFja2FnZSBlbnRyeQovLy8gLSBvbmUgcGF0aCBkaXJlY3QgbWFpbiBwYWNrYWdlIGVudHJ5Ci8vLyAtIG9uZSBub3QgcHViIGhvc3RlZCB0cmFuc2l0aXZlIHBhY2thZ2UgZW50cnkKLy8vIC0gb25lIGludmFsaWQgcGFja2FnZSBlbnRyeQpjb25zdCBfcHVic3BlY0xvY2tDb250ZW50ID0gJycnCnBhY2thZ2VzOgogIHZlcnlfZ29vZF90ZXN0X3J1bm5lcjoKICAgIGRlcGVuZGVuY3k6ICJkaXJlY3QgbWFpbiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfdGVzdF9ydW5uZXIKICAgICAgc2hhMjU2OiAiNGQ0MWU1ZDc2NzdkMjU5YjlhMTU5OWM3ODY0NWFjMmQzNmJjMmJkNmZmNzc3MzUwN2JjYjBiYWI0MTQxN2ZlMiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIwLjEuMiIKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IGRldiIKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiB2ZXJ5X2dvb2RfYW5hbHlzaXMKICAgICAgc2hhMjU2OiAiOWFlN2YzYTNiZDU3NjRmYjAyMWIzMzVjYTI4YTM0ZjA0MGNkMGFiNmVlYzAwYTFiMjEzYjQ0NWRhZTU4YTRiOCIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICI1LjEuMCIKICB5YW1sOgogICAgZGVwZW5kZW5jeTogdHJhbnNpdGl2ZQogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHlhbWwKICAgICAgc2hhMjU2OiAiNzU3Njk1MDFlYTM0ODlmY2E1NjYwMWZmMzM0NTRmZTQ1NTA3ZWEzYmZiMDE0MTYxYWJjM2I0M2FlMjU5ODlkNSIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBwYXRoOgogICAgZGVwZW5kZW5jeTogImRpcmVjdCBvdmVycmlkZGVuIgogICAgZGVzY3JpcHRpb246CiAgICAgIG5hbWU6IHBhdGgKICAgICAgc2hhMjU2OiAiMDg3Y2U0OWMzZjBkYzM5MTgwYmVmZWZjNjBmZGI0YWNkOGY4NjIwZTU2ODJmZTI0NzZhZmQwYjM2ODhiYjRhZiIKICAgICAgdXJsOiAiaHR0cHM6Ly9wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIxLjkuMCIKICBmb286CiAgICBkZXBlbmRlbmN5OiAiZGlyZWN0IG1haW4iCiAgICBkZXNjcmlwdGlvbjoKICAgICAgcGF0aDogInBhY2thZ2VzL2ZvbyIKICAgICAgcmVsYXRpdmU6IHRydWUKICAgIHNvdXJjZTogcGF0aAogICAgdmVyc2lvbjogIjEuMC4wKzEiCiAgeWFtbDI6CiAgICBkZXBlbmRlbmN5OiB0cmFuc2l0aXZlCiAgICBkZXNjcmlwdGlvbjoKICAgICAgbmFtZTogeWFtbAogICAgICBzaGEyNTY6ICI3NTc2OTUwMWVhMzQ4OWZjYTU2NjAxZmYzMzQ1NGZlNDU1MDdlYTNiZmIwMTQxNjFhYmMzYjQzYWUyNTk4OWQ1IgogICAgICB1cmw6ICJodHRwczovL25vdC1wdWIuZGV2IgogICAgc291cmNlOiBob3N0ZWQKICAgIHZlcnNpb246ICIzLjEuMiIKICBiYWRfcGFja2FnZToKICAgIG5vdF9kZXBlbmRlbmN5OiAiYmFkIgpzZGtzOgogIGRhcnQ6ICI+PTMuMS4wIDw0LjAuMCIKJycnOwoKLy8vIEEgdmFsaWQgcHVic3BlYyBsb2NrIGZpbGUgd2l0aCBubyBwYWNrYWdlcy4KY29uc3QgX2VtcHR5UHVic3BlY0xvY2tDb250ZW50ID0gJycnCnNka3M6CiAgZGFydDogIj49My4xLjAgPDQuMC4wIgonJyc7Cg==", "type": "text" }, { From 22cc6ffd00138352e341bf5a79c1767ab38eb429 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Tue, 26 Aug 2025 23:38:02 -0500 Subject: [PATCH 20/31] minimize diff --- bricks/dart_frog_prod_server/hooks/pre_gen.dart | 7 ++++--- .../build/templates/dart_frog_prod_server_bundle.dart | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index 5f51c31e7..504814ccb 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -23,9 +23,6 @@ Future preGen( Future Function(String from, String to) copyPath = io_expanded.copyPath, }) async { final projectDirectory = directory ?? io.Directory.current; - final buildDirectory = io.Directory( - path.join(projectDirectory.path, 'build'), - ); final usesWorkspaces = usesWorkspaceResolution( context, workingDirectory: projectDirectory.path, @@ -40,6 +37,10 @@ Future preGen( exit: exit, ); + final buildDirectory = io.Directory( + path.join(projectDirectory.path, 'build'), + ); + await createBundle( context: context, projectDirectory: projectDirectory, diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 7944b659b..04b286194 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -262,7 +262,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwogIGZpbmFsIHVzZXNXb3Jrc3BhY2VzID0gdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgZXhpdDogZXhpdCwKICApOwoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgaWYgKHVzZXNXb3Jrc3BhY2VzKSB7CiAgICAvLyBEaXNhYmxlIHdvcmtzcGFjZSByZXNvbHV0aW9uIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXItcGFja2FnZSBsb2NrZmlsZXMuCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAogICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICAgIC8vIENvcHkgdGhlIHB1YnNwZWMubG9jayBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdCB0byBlbnN1cmUgdGhlIHNhbWUgdmVyc2lvbnMKICAgIC8vIG9mIGRlcGVuZGVuY2llcyBhcmUgdXNlZCBpbiB0aGUgcHJvZHVjdGlvbiBidWlsZC4KICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgY29udGV4dCwKICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", "type": "text" }, { From 3d267667b325735c1a7b9301c2f822772094b8aa Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Tue, 26 Aug 2025 23:40:15 -0500 Subject: [PATCH 21/31] regen bundle --- .../commands/build/templates/dart_frog_prod_server_bundle.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 04b286194..79948f399 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -268,7 +268,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6IF45LjAuMAo=", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", "type": "text" }, { From a3b8d814b49c6116de507e82a6d774fe6801cc0d Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Tue, 26 Aug 2025 23:42:02 -0500 Subject: [PATCH 22/31] fix analysis warning --- .../src/disable_workspace_resolution_test.dart | 18 ++++++++++++++---- .../dart_frog_prod_server_bundle.dart | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart index 0047b83e2..9cc4286a2 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart @@ -38,10 +38,15 @@ void main() { final buildDirectoryContents = buildDirectory.listSync(); expect(buildDirectoryContents, hasLength(1)); final pubspecOverrides = buildDirectoryContents.first as File; - expect(pubspecOverrides.readAsStringSync(), equals(''' + expect( + pubspecOverrides.readAsStringSync(), + equals( + ''' resolution: null -''')); +''', + ), + ); }); }); @@ -65,10 +70,15 @@ dependency_overrides: final buildDirectoryContents = buildDirectory.listSync(); expect(buildDirectoryContents, hasLength(1)); final pubspecOverrides = buildDirectoryContents.first as File; - expect(pubspecOverrides.readAsStringSync(), equals(''' + expect( + pubspecOverrides.readAsStringSync(), + equals( + ''' $originalPubspecOverridesContent resolution: null -''')); +''', + ), + ); }); }); diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 79948f399..e4b0eed0f 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -322,7 +322,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdChwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwgZXF1YWxzKCcnJwoKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QocHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksIGVxdWFscygnJycKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiB1bmFibGUgdG8gcmVhZCBwdWJzcGVjX292ZXJyaWRlcycsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICAnJycKCnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICAnJycKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQKcmVzb2x1dGlvbjogbnVsbAonJycsCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gdW5hYmxlIHRvIHJlYWQgcHVic3BlY19vdmVycmlkZXMnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMgPSBidWlsZERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChidWlsZERpcmVjdG9yeUNvbnRlbnRzLCBoYXNMZW5ndGgoMSkpOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgICB2ZXJpZnkoCiAgICAgICAgICAoKSA9PiBsb2dnZXIuZXJyKGFueSh0aGF0OiBjb250YWlucygnUGVybWlzc2lvbiBkZW5pZWQnKSkpLAogICAgICAgICkuY2FsbGVkKDEpOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9Cg==", "type": "text" }, { From ff77d3b131344d91c7f771a4c862ee2cc235cf5c Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 28 Aug 2025 23:00:03 -0500 Subject: [PATCH 23/31] various fixes --- .../lib/dart_frog_prod_server_hooks.dart | 1 + .../src/adjust_relative_pubspec_imports.dart | 40 ++++++ .../src/create_external_packages_folder.dart | 61 ++++----- .../lib/src/disable_workspace_resolution.dart | 21 ++- .../dart_frog_prod_server/hooks/post_gen.dart | 11 -- .../dart_frog_prod_server/hooks/pre_gen.dart | 23 +++- .../dart_frog_prod_server/hooks/pubspec.yaml | 1 + .../hooks/test/post_gen_test.dart | 42 +----- .../create_external_packages_folder_test.dart | 120 +++++++++--------- .../disable_workspace_resolution_test.dart | 7 +- 10 files changed, 171 insertions(+), 156 deletions(-) create mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart diff --git a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart index 293a01883..9fce5a857 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart @@ -1,3 +1,4 @@ +export 'src/adjust_relative_pubspec_imports.dart'; export 'src/copy_workspace_pubspec_lock.dart'; export 'src/create_bundle.dart'; export 'src/create_external_packages_folder.dart'; diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart b/bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart new file mode 100644 index 000000000..dab8298ae --- /dev/null +++ b/bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart @@ -0,0 +1,40 @@ +import 'dart:io'; +import 'package:mason/mason.dart'; +import 'package:path/path.dart' as path; +import 'package:pubspec_parse/pubspec_parse.dart'; +import 'package:yaml_edit/yaml_edit.dart'; + +/// Fixes up the relative path imports in the build/pubspec.yaml +void adjustRelativePubspecImports( + HookContext context, { + required String buildDirectory, + required void Function(int exitCode) exit, +}) { + final pubspecFile = File(path.join(buildDirectory, 'pubspec.yaml')); + if (!pubspecFile.existsSync()) { + context.logger.err('Unable to find ${pubspecFile.path}'); + exit(1); + } + + final String contents; + final Pubspec pubspec; + try { + contents = pubspecFile.readAsStringSync(); + pubspec = Pubspec.parse(contents); + } on Exception catch (e) { + context.logger.err('$e'); + return exit(1); + } + + final yamlEditor = YamlEditor(contents); + for (final dependency in pubspec.dependencies.entries) { + final dep = dependency.value; + if (dep is! PathDependency) continue; + yamlEditor.update( + ['dependencies', dependency.key, 'path'], + path.relative(dep.path, from: buildDirectory), + ); + } + + pubspecFile.writeAsStringSync(yamlEditor.toString()); +} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart index 21221adde..b77f252fc 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart @@ -14,7 +14,7 @@ Future> createExternalPackagesFolder({ }) async { final pathResolver = path.context; final pubspecLock = await getPubspecLock( - projectDirectory.path, + buildDirectory.path, pathContext: path.context, ); @@ -22,25 +22,21 @@ Future> createExternalPackagesFolder({ .map( (dependency) { final pathDescription = dependency.pathDescription; - if (pathDescription == null) { - return null; - } + if (pathDescription == null) return null; final isExternal = !pathResolver.isWithin('', pathDescription.path); if (!isExternal) return null; return _ExternalPathDependency( name: dependency.name, - path: path.join(projectDirectory.path, pathDescription.path), + path: path.join(buildDirectory.path, pathDescription.path), ); }, ) .whereType<_ExternalPathDependency>() .toList(); - if (externalPathDependencies.isEmpty) { - return []; - } + if (externalPathDependencies.isEmpty) return []; final packagesDirectory = Directory( pathResolver.join( @@ -51,34 +47,39 @@ Future> createExternalPackagesFolder({ final copiedExternalPathDependencies = await Future.wait( externalPathDependencies.map( - (externalPathDependency) => externalPathDependency.copyTo( - copyPath: copyPath, - targetDirectory: Directory( - pathResolver.join( - packagesDirectory.path, - externalPathDependency.name, + (externalPathDependency) async { + final copy = await externalPathDependency.copyTo( + copyPath: copyPath, + targetDirectory: Directory( + pathResolver.join( + packagesDirectory.path, + externalPathDependency.name, + ), ), - ), - ), + ); + overrideResolutionInPubspecOverrides(copy.path); + return copy; + }, ), ); - await File( - pathResolver.join( - buildDirectory.path, - 'pubspec_overrides.yaml', - ), - ).writeAsString(''' + File( + pathResolver.join(buildDirectory.path, 'pubspec_overrides.yaml'), + ).writeAsStringSync( + ''' + dependency_overrides: ${copiedExternalPathDependencies.map( - (dependency) { - final name = dependency.name; - final path = - pathResolver.relative(dependency.path, from: buildDirectory.path); - return ' $name:\n path: $path'; - }, - ).join('\n')} -'''); + (dependency) { + final name = dependency.name; + final path = + pathResolver.relative(dependency.path, from: buildDirectory.path); + return ' $name:\n path: $path'; + }, + ).join('\n')} +''', + mode: FileMode.append, + ); return copiedExternalPathDependencies .map((dependency) => dependency.path) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index 2c64312b8..57dbc99f1 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -10,11 +10,26 @@ void disableWorkspaceResolution( required void Function(int exitCode) exit, }) { try { - File( - path.join(buildDirectory, 'pubspec_overrides.yaml'), - ).writeAsStringSync('\nresolution: null\n', mode: FileMode.append); + overrideResolutionInPubspecOverrides(buildDirectory); } on Exception catch (e) { context.logger.err('$e'); exit(1); } } + +void overrideResolutionInPubspecOverrides(String directory) { + final pubspecOverrides = File( + path.join(directory, 'pubspec_overrides.yaml'), + ); + + if (pubspecOverrides.existsSync()) { + return pubspecOverrides.writeAsStringSync( + '\nresolution: null\n', + mode: FileMode.append, + ); + } + + pubspecOverrides + ..createSync(recursive: true) + ..writeAsStringSync('resolution: null'); +} diff --git a/bricks/dart_frog_prod_server/hooks/post_gen.dart b/bricks/dart_frog_prod_server/hooks/post_gen.dart index c56980bcc..1a2eacfe1 100644 --- a/bricks/dart_frog_prod_server/hooks/post_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/post_gen.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'dart:io' as io; -import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:mason/mason.dart' show HookContext, lightCyan; import 'package:path/path.dart' as path; @@ -10,19 +9,9 @@ Future run(HookContext context) => postGen(context); Future postGen( HookContext context, { io.Directory? directory, - ProcessRunner runProcess = io.Process.run, - void Function(int exitCode) exit = defaultExit, }) async { final projectDirectory = directory ?? io.Directory.current; final buildDirectoryPath = path.join(projectDirectory.path, 'build'); - - await dartPubGet( - context, - workingDirectory: buildDirectoryPath, - runProcess: runProcess, - exit: exit, - ); - final relativeBuildPath = path.relative(buildDirectoryPath); context.logger ..info('') diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index 504814ccb..eefd2bc69 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -64,8 +64,22 @@ Future preGen( workingDirectory: projectDirectory.path, exit: exit, ); + // Adjust all relative pubspec.yaml imports. + adjustRelativePubspecImports( + context, + buildDirectory: buildDirectory.path, + exit: exit, + ); } + // We need to make sure that the pubspec.lock file is up to date + await dartPubGet( + context, + workingDirectory: buildDirectory.path, + runProcess: runProcess, + exit: exit, + ); + final RouteConfiguration configuration; try { configuration = buildConfiguration(projectDirectory); @@ -98,12 +112,8 @@ Future preGen( onViolationEnd: () => exit(1), ); - final customDockerFile = io.File( - path.join(projectDirectory.path, 'Dockerfile'), - ); - final internalPathDependencies = await getInternalPathDependencies( - projectDirectory, + buildDirectory, ); final externalDependencies = await createExternalPackagesFolder( @@ -112,6 +122,9 @@ Future preGen( copyPath: copyPath, ); + final customDockerFile = io.File( + path.join(buildDirectory.path, 'Dockerfile'), + ); final addDockerfile = !customDockerFile.existsSync(); context.vars = { diff --git a/bricks/dart_frog_prod_server/hooks/pubspec.yaml b/bricks/dart_frog_prod_server/hooks/pubspec.yaml index d2db4f35b..2e4836c0c 100644 --- a/bricks/dart_frog_prod_server/hooks/pubspec.yaml +++ b/bricks/dart_frog_prod_server/hooks/pubspec.yaml @@ -12,6 +12,7 @@ dependencies: path: ^1.8.1 pubspec_parse: ^1.5.0 yaml: ^3.1.2 + yaml_edit: ^2.2.2 dev_dependencies: mocktail: ^1.0.0 diff --git a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart index 714556989..53e1eda67 100644 --- a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart @@ -1,10 +1,6 @@ -import 'dart:io'; - import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; -import 'package:mason/mason.dart' - show ExitCode, HookContext, Logger, Progress, lightCyan; +import 'package:mason/mason.dart' show HookContext, Logger, Progress, lightCyan; import 'package:mocktail/mocktail.dart'; -import 'package:path/path.dart' as path; import 'package:test/test.dart'; import '../post_gen.dart' as post_gen; @@ -35,14 +31,6 @@ void main() { late HookContext context; late Logger logger; - const processId = 42; - final processResult = ProcessResult( - processId, - ExitCode.success.code, - '', - '', - ); - setUp(() { logger = _MockLogger(); context = _FakeHookContext(logger: logger); @@ -59,32 +47,8 @@ void main() { ); }); - test('runs dart pub get and outputs next steps', () async { - var processRunnerCallCount = 0; - final exitCalls = []; - - await post_gen.postGen( - context, - runProcess: ( - executable, - args, { - String? workingDirectory, - bool? runInShell, - }) async { - processRunnerCallCount++; - expect(executable, equals('dart')); - expect(args, equals(['pub', 'get'])); - expect( - workingDirectory, - equals(path.join(Directory.current.path, 'build')), - ); - expect(runInShell, isTrue); - return processResult; - }, - exit: exitCalls.add, - ); - expect(processRunnerCallCount, equals(1)); - expect(exitCalls, isEmpty); + test('outputs next steps', () async { + await post_gen.postGen(context); verify(() => logger.success('Created a production build!')).called(1); verify( () => logger.info('Start the production server by running:'), diff --git a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart index 6cb836d5f..e20c2b075 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart @@ -8,73 +8,69 @@ import '../pubspec_locks.dart'; void main() { group('createExternalPackagesFolder', () { - test( - 'bundles external dependencies with external dependencies', - () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'pubspec.lock')) - .writeAsStringSync(fooPath); - final copyCalls = []; + test('bundles external dependencies with external dependencies', () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File(path.join(projectDirectory.path, 'build', 'pubspec.lock')) + ..createSync(recursive: true) + ..writeAsStringSync(fooPath); + final copyCalls = []; - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { - copyCalls.add('$from -> $to'); - return Future.value(); - }, - ); + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) { + copyCalls.add('$from -> $to'); + return Future.value(); + }, + ); - final fooPackageDirectory = - path.join(projectDirectory.path, '../../foo'); - final fooPackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); + final fooPackageDirectory = + path.join(projectDirectory.path, 'build', '../../foo'); + final fooPackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); - final secondFooPackageDirectory = - path.join(projectDirectory.path, '../../foo2'); - final secondFooPackageDirectoryTarget = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'second_foo', - ); - expect(copyCalls, [ - '$fooPackageDirectory -> $fooPackageDirectoryTarget', - '$secondFooPackageDirectory -> $secondFooPackageDirectoryTarget', - ]); - }, - ); + final secondFooPackageDirectory = + path.join(projectDirectory.path, 'build', '../../foo2'); + final secondFooPackageDirectoryTarget = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'second_foo', + ); + expect(copyCalls, [ + '$fooPackageDirectory -> $fooPackageDirectoryTarget', + '$secondFooPackageDirectory -> $secondFooPackageDirectoryTarget', + ]); + }); - test( - "don't bundle internal path dependencies", - () async { - final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'pubspec.lock')) - .writeAsStringSync(fooPathWithInternalDependency); - final copyCalls = []; + test("doesn't bundle internal path dependencies", () async { + final projectDirectory = Directory.systemTemp.createTempSync(); + File(path.join(projectDirectory.path, 'build', 'pubspec.lock')) + ..createSync(recursive: true) + ..writeAsStringSync(fooPathWithInternalDependency); + final copyCalls = []; - await createExternalPackagesFolder( - projectDirectory: projectDirectory, - buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { - copyCalls.add('$from -> $to'); - return Future.value(); - }, - ); + await createExternalPackagesFolder( + projectDirectory: projectDirectory, + buildDirectory: Directory(path.join(projectDirectory.path, 'build')), + copyPath: (from, to) { + copyCalls.add('$from -> $to'); + return Future.value(); + }, + ); - final from = path.join(projectDirectory.path, '../../foo'); - final to = path.join( - projectDirectory.path, - 'build', - '.dart_frog_path_dependencies', - 'foo', - ); - expect(copyCalls, ['$from -> $to']); - }, - ); + final from = path.join(projectDirectory.path, 'build', '../../foo'); + final to = path.join( + projectDirectory.path, + 'build', + '.dart_frog_path_dependencies', + 'foo', + ); + expect(copyCalls, ['$from -> $to']); + }); }); } diff --git a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart index 9cc4286a2..b20554874 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart @@ -40,12 +40,7 @@ void main() { final pubspecOverrides = buildDirectoryContents.first as File; expect( pubspecOverrides.readAsStringSync(), - equals( - ''' - -resolution: null -''', - ), + equals('resolution: null'), ); }); }); From be5d71d8ed5552bd387bce22d74f709f99e867f6 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 28 Aug 2025 23:00:13 -0500 Subject: [PATCH 24/31] regen bundles --- .../dart_frog_prod_server_bundle.dart | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index e4b0eed0f..1ecd760f0 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -28,7 +28,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", + "ZXhwb3J0ICdzcmMvYWRqdXN0X3JlbGF0aXZlX3B1YnNwZWNfaW1wb3J0cy5kYXJ0JzsKZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", + "type": "text" + }, + { + "path": "build/lib/src/adjust_relative_pubspec_imports.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEZpeGVzIHVwIHRoZSByZWxhdGl2ZSBwYXRoIGltcG9ydHMgaW4gdGhlIGJ1aWxkL3B1YnNwZWMueWFtbAp2b2lkIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLnlhbWwnKSk7CiAgaWYgKCFwdWJzcGVjRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignVW5hYmxlIHRvIGZpbmQgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgZXhpdCgxKTsKICB9CgogIGZpbmFsIFN0cmluZyBjb250ZW50czsKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGNvbnRlbnRzID0gcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogICAgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UoY29udGVudHMpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIGZpbmFsIHlhbWxFZGl0b3IgPSBZYW1sRWRpdG9yKGNvbnRlbnRzKTsKICBmb3IgKGZpbmFsIGRlcGVuZGVuY3kgaW4gcHVic3BlYy5kZXBlbmRlbmNpZXMuZW50cmllcykgewogICAgZmluYWwgZGVwID0gZGVwZW5kZW5jeS52YWx1ZTsKICAgIGlmIChkZXAgaXMhIFBhdGhEZXBlbmRlbmN5KSBjb250aW51ZTsKICAgIHlhbWxFZGl0b3IudXBkYXRlKAogICAgICBbJ2RlcGVuZGVuY2llcycsIGRlcGVuZGVuY3kua2V5LCAncGF0aCddLAogICAgICBwYXRoLnJlbGF0aXZlKGRlcC5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeSksCiAgICApOwogIH0KCiAgcHVic3BlY0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoeWFtbEVkaXRvci50b1N0cmluZygpKTsKfQo=", "type": "text" }, { @@ -46,7 +52,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcwogICAgICAubWFwKAogICAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgICBmaW5hbCBwYXRoRGVzY3JpcHRpb24gPSBkZXBlbmRlbmN5LnBhdGhEZXNjcmlwdGlvbjsKICAgICAgICAgIGlmIChwYXRoRGVzY3JpcHRpb24gPT0gbnVsbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgZmluYWwgaXNFeHRlcm5hbCA9ICFwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIHBhdGhEZXNjcmlwdGlvbi5wYXRoKTsKICAgICAgICAgIGlmICghaXNFeHRlcm5hbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KAogICAgICAgICAgICBuYW1lOiBkZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgIHBhdGg6IHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgcmV0dXJuIFtdOwoKICBmaW5hbCBwYWNrYWdlc0RpcmVjdG9yeSA9IERpcmVjdG9yeSgKICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICApLAogICkuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKCiAgZmluYWwgY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgRnV0dXJlLndhaXQoCiAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSkgYXN5bmMgewogICAgICAgIGZpbmFsIGNvcHkgPSBhd2FpdCBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICAgIHRhcmdldERpcmVjdG9yeTogRGlyZWN0b3J5KAogICAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgKSwKICAgICAgICAgICksCiAgICAgICAgKTsKICAgICAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMoY29weS5wYXRoKTsKICAgICAgICByZXR1cm4gY29weTsKICAgICAgfSwKICAgICksCiAgKTsKCiAgRmlsZSgKICAgIHBhdGhSZXNvbHZlci5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKS53cml0ZUFzU3RyaW5nU3luYygKICAgICcnJwoKZGVwZW5kZW5jeV9vdmVycmlkZXM6CiR7Y29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICAgIGZpbmFsIHBhdGggPQogICAgICAgICAgICBwYXRoUmVzb2x2ZXIucmVsYXRpdmUoZGVwZW5kZW5jeS5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeS5wYXRoKTsKICAgICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgICB9LAogICAgKS5qb2luKCdcbicpfQonJycsCiAgICBtb2RlOiBGaWxlTW9kZS5hcHBlbmQsCiAgKTsKCiAgcmV0dXJuIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcwogICAgICAubWFwKChkZXBlbmRlbmN5KSA9PiBkZXBlbmRlbmN5LnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQoKLy8vIHtAdGVtcGxhdGUgZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQovLy8gQSBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3Qgd2l0aGluIHRoZSBidW5kbGVkIERhcnQgRnJvZyBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLwovLy8gRm9yIGV4YW1wbGU6Ci8vLyBgYGB5YW1sCi8vLyBuYW1lOiBteV9kYXJ0X2Zyb2dfcHJvamVjdAovLy8gZGVwZW5kZW5jaWVzOgovLy8gICBteV9wYWNrYWdlOgovLy8gICAgIHBhdGg6IC4uL215X3BhY2thZ2UKLy8vIGBgYAovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgX0V4dGVybmFsUGF0aERlcGVuZGVuY3kgewogIC8vLyB7QG1hY3JvIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KICBjb25zdCBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnBhdGgsCiAgfSk7CgogIC8vLyBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgbmFtZTsKCiAgLy8vIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBwYXRoOwoKICAvLy8gQ29waWVzIHRoZSBbX0V4dGVybmFsUGF0aERlcGVuZGVuY3ldIHRvIFt0YXJnZXREaXJlY3RvcnldLgogIEZ1dHVyZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4gY29weVRvKHsKICAgIHJlcXVpcmVkIERpcmVjdG9yeSB0YXJnZXREaXJlY3RvcnksCiAgICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAogIH0pIGFzeW5jIHsKICAgIGF3YWl0IGNvcHlQYXRoKHBhdGgsIHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeShuYW1lOiBuYW1lLCBwYXRoOiB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgfQp9Cg==", "type": "text" }, { @@ -58,7 +64,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgRmlsZSgKICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgKS53cml0ZUFzU3RyaW5nU3luYygnXG5yZXNvbHV0aW9uOiBudWxsXG4nLCBtb2RlOiBGaWxlTW9kZS5hcHBlbmQpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGJ1aWxkRGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZScpOwogICAgZXhpdCgxKTsKICB9Cn0KCnZvaWQgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBkaXJlY3RvcnkpIHsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgIHBhdGguam9pbihkaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", "type": "text" }, { @@ -94,25 +100,25 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/post_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CgogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogYnVpbGREaXJlY3RvcnlQYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTx2b2lkPiBydW4oSG9va0NvbnRleHQgY29udGV4dCkgPT4gcG9zdEdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwb3N0R2VuKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICBpby5EaXJlY3Rvcnk/IGRpcmVjdG9yeSwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", "type": "text" }, { "path": "build/pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwogIGZpbmFsIHVzZXNXb3Jrc3BhY2VzID0gdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgZXhpdDogZXhpdCwKICApOwoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgaWYgKHVzZXNXb3Jrc3BhY2VzKSB7CiAgICAvLyBEaXNhYmxlIHdvcmtzcGFjZSByZXNvbHV0aW9uIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXItcGFja2FnZSBsb2NrZmlsZXMuCiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAogICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICAgIC8vIENvcHkgdGhlIHB1YnNwZWMubG9jayBmcm9tIHRoZSB3b3Jrc3BhY2Ugcm9vdCB0byBlbnN1cmUgdGhlIHNhbWUgdmVyc2lvbnMKICAgIC8vIG9mIGRlcGVuZGVuY2llcyBhcmUgdXNlZCBpbiB0aGUgcHJvZHVjdGlvbiBidWlsZC4KICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgY29udGV4dCwKICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogICAgLy8gQWRqdXN0IGFsbCByZWxhdGl2ZSBwdWJzcGVjLnlhbWwgaW1wb3J0cy4KICAgIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICB9CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoCiAgICBidWlsZERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGN1c3RvbURvY2tlckZpbGUgPSBpby5GaWxlKAogICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", "type": "text" }, { "path": "build/pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAKICB2ZXJ5X2dvb2RfYW5hbHlzaXM6IF45LjAuMAo=", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", "type": "text" }, { "path": "build/test/post_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdwYWNrYWdlOmRhcnRfZnJvZ19wcm9kX3NlcnZlcl9ob29rcy9kYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MuZGFydCc7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmltcG9ydCAnLi4vcG9zdF9nZW4uZGFydCcgYXMgcG9zdF9nZW47CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncG9zdEdlbicsICgpIHsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGNvbnRleHQgPSBfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKTsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwb3N0X2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKGNvbnRleHQpOwogICAgICB2ZXJpZnkoKCkgPT4gbG9nZ2VyLnN1Y2Nlc3MoJ0NyZWF0ZWQgYSBwcm9kdWN0aW9uIGJ1aWxkIScpKS5jYWxsZWQoMSk7CiAgICAgIHZlcmlmeSgKICAgICAgICAoKSA9PiBsb2dnZXIuaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJyR7bGlnaHRDeWFuLndyYXAoJ2RhcnQgYnVpbGQvYmluL3NlcnZlci5kYXJ0Jyl9JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" }, { @@ -148,7 +154,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJ3B1YnNwZWMubG9jaycpKQogICAgICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAgICAgLi53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSB7CiAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgIHJldHVybiBGdXR1cmUudmFsdWUoKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vMicpOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKQogICAgICAgIC4ud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -160,7 +166,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdChwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwgZXF1YWxzKCcnJwoKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QocHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksIGVxdWFscygnJycKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQKcmVzb2x1dGlvbjogbnVsbAonJycpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiB1bmFibGUgdG8gcmVhZCBwdWJzcGVjX292ZXJyaWRlcycsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKCdyZXNvbHV0aW9uOiBudWxsJyksCiAgICAgICAgKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnKSwKICAgICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgICAgUHJvY2Vzcy5ydW5TeW5jKCdjaG1vZCcsIFsnMDAwJywgcHVic3BlY092ZXJyaWRlcy5wYXRoXSk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvcicsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" }, { @@ -190,7 +196,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", + "ZXhwb3J0ICdzcmMvYWRqdXN0X3JlbGF0aXZlX3B1YnNwZWNfaW1wb3J0cy5kYXJ0JzsKZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", + "type": "text" + }, + { + "path": "lib/src/adjust_relative_pubspec_imports.dart", + "data": + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEZpeGVzIHVwIHRoZSByZWxhdGl2ZSBwYXRoIGltcG9ydHMgaW4gdGhlIGJ1aWxkL3B1YnNwZWMueWFtbAp2b2lkIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLnlhbWwnKSk7CiAgaWYgKCFwdWJzcGVjRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignVW5hYmxlIHRvIGZpbmQgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgZXhpdCgxKTsKICB9CgogIGZpbmFsIFN0cmluZyBjb250ZW50czsKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGNvbnRlbnRzID0gcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogICAgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UoY29udGVudHMpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIGZpbmFsIHlhbWxFZGl0b3IgPSBZYW1sRWRpdG9yKGNvbnRlbnRzKTsKICBmb3IgKGZpbmFsIGRlcGVuZGVuY3kgaW4gcHVic3BlYy5kZXBlbmRlbmNpZXMuZW50cmllcykgewogICAgZmluYWwgZGVwID0gZGVwZW5kZW5jeS52YWx1ZTsKICAgIGlmIChkZXAgaXMhIFBhdGhEZXBlbmRlbmN5KSBjb250aW51ZTsKICAgIHlhbWxFZGl0b3IudXBkYXRlKAogICAgICBbJ2RlcGVuZGVuY2llcycsIGRlcGVuZGVuY3kua2V5LCAncGF0aCddLAogICAgICBwYXRoLnJlbGF0aXZlKGRlcC5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeSksCiAgICApOwogIH0KCiAgcHVic3BlY0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoeWFtbEVkaXRvci50b1N0cmluZygpKTsKfQo=", "type": "text" }, { @@ -208,7 +220,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgfQoKICAgICAgICAgIGZpbmFsIGlzRXh0ZXJuYWwgPSAhcGF0aFJlc29sdmVyLmlzV2l0aGluKCcnLCBwYXRoRGVzY3JpcHRpb24ucGF0aCk7CiAgICAgICAgICBpZiAoIWlzRXh0ZXJuYWwpIHJldHVybiBudWxsOwoKICAgICAgICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSgKICAgICAgICAgICAgbmFtZTogZGVwZW5kZW5jeS5uYW1lLAogICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgewogICAgcmV0dXJuIFtdOwogIH0KCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpID0+IGV4dGVybmFsUGF0aERlcGVuZGVuY3kuY29weVRvKAogICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICApLAogICAgICAgICksCiAgICAgICksCiAgICApLAogICk7CgogIGF3YWl0IEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnLAogICAgKSwKICApLndyaXRlQXNTdHJpbmcoJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAoZGVwZW5kZW5jeSkgewogICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgfSwKICApLmpvaW4oJ1xuJyl9CicnJyk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcwogICAgICAubWFwKAogICAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgICBmaW5hbCBwYXRoRGVzY3JpcHRpb24gPSBkZXBlbmRlbmN5LnBhdGhEZXNjcmlwdGlvbjsKICAgICAgICAgIGlmIChwYXRoRGVzY3JpcHRpb24gPT0gbnVsbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgZmluYWwgaXNFeHRlcm5hbCA9ICFwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIHBhdGhEZXNjcmlwdGlvbi5wYXRoKTsKICAgICAgICAgIGlmICghaXNFeHRlcm5hbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KAogICAgICAgICAgICBuYW1lOiBkZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgIHBhdGg6IHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgcmV0dXJuIFtdOwoKICBmaW5hbCBwYWNrYWdlc0RpcmVjdG9yeSA9IERpcmVjdG9yeSgKICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICApLAogICkuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKCiAgZmluYWwgY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgRnV0dXJlLndhaXQoCiAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSkgYXN5bmMgewogICAgICAgIGZpbmFsIGNvcHkgPSBhd2FpdCBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICAgIHRhcmdldERpcmVjdG9yeTogRGlyZWN0b3J5KAogICAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgKSwKICAgICAgICAgICksCiAgICAgICAgKTsKICAgICAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMoY29weS5wYXRoKTsKICAgICAgICByZXR1cm4gY29weTsKICAgICAgfSwKICAgICksCiAgKTsKCiAgRmlsZSgKICAgIHBhdGhSZXNvbHZlci5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKS53cml0ZUFzU3RyaW5nU3luYygKICAgICcnJwoKZGVwZW5kZW5jeV9vdmVycmlkZXM6CiR7Y29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICAgIGZpbmFsIHBhdGggPQogICAgICAgICAgICBwYXRoUmVzb2x2ZXIucmVsYXRpdmUoZGVwZW5kZW5jeS5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeS5wYXRoKTsKICAgICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgICB9LAogICAgKS5qb2luKCdcbicpfQonJycsCiAgICBtb2RlOiBGaWxlTW9kZS5hcHBlbmQsCiAgKTsKCiAgcmV0dXJuIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcwogICAgICAubWFwKChkZXBlbmRlbmN5KSA9PiBkZXBlbmRlbmN5LnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQoKLy8vIHtAdGVtcGxhdGUgZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQovLy8gQSBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3Qgd2l0aGluIHRoZSBidW5kbGVkIERhcnQgRnJvZyBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLwovLy8gRm9yIGV4YW1wbGU6Ci8vLyBgYGB5YW1sCi8vLyBuYW1lOiBteV9kYXJ0X2Zyb2dfcHJvamVjdAovLy8gZGVwZW5kZW5jaWVzOgovLy8gICBteV9wYWNrYWdlOgovLy8gICAgIHBhdGg6IC4uL215X3BhY2thZ2UKLy8vIGBgYAovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgX0V4dGVybmFsUGF0aERlcGVuZGVuY3kgewogIC8vLyB7QG1hY3JvIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KICBjb25zdCBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnBhdGgsCiAgfSk7CgogIC8vLyBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgbmFtZTsKCiAgLy8vIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBwYXRoOwoKICAvLy8gQ29waWVzIHRoZSBbX0V4dGVybmFsUGF0aERlcGVuZGVuY3ldIHRvIFt0YXJnZXREaXJlY3RvcnldLgogIEZ1dHVyZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4gY29weVRvKHsKICAgIHJlcXVpcmVkIERpcmVjdG9yeSB0YXJnZXREaXJlY3RvcnksCiAgICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAogIH0pIGFzeW5jIHsKICAgIGF3YWl0IGNvcHlQYXRoKHBhdGgsIHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeShuYW1lOiBuYW1lLCBwYXRoOiB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgfQp9Cg==", "type": "text" }, { @@ -220,7 +232,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgRmlsZSgKICAgICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgKS53cml0ZUFzU3RyaW5nU3luYygnXG5yZXNvbHV0aW9uOiBudWxsXG4nLCBtb2RlOiBGaWxlTW9kZS5hcHBlbmQpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGJ1aWxkRGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZScpOwogICAgZXhpdCgxKTsKICB9Cn0KCnZvaWQgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBkaXJlY3RvcnkpIHsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgIHBhdGguam9pbihkaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", "type": "text" }, { @@ -256,25 +268,25 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "post_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CgogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogYnVpbGREaXJlY3RvcnlQYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTx2b2lkPiBydW4oSG9va0NvbnRleHQgY29udGV4dCkgPT4gcG9zdEdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwb3N0R2VuKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICBpby5EaXJlY3Rvcnk/IGRpcmVjdG9yeSwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", "type": "text" }, { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogICAgLy8gQWRqdXN0IGFsbCByZWxhdGl2ZSBwdWJzcGVjLnlhbWwgaW1wb3J0cy4KICAgIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICB9CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoCiAgICBidWlsZERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGN1c3RvbURvY2tlckZpbGUgPSBpby5GaWxlKAogICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", "type": "text" }, { "path": "pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", "type": "text" }, { "path": "test/post_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdwYWNrYWdlOmRhcnRfZnJvZ19wcm9kX3NlcnZlcl9ob29rcy9kYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MuZGFydCc7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmltcG9ydCAnLi4vcG9zdF9nZW4uZGFydCcgYXMgcG9zdF9nZW47CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncG9zdEdlbicsICgpIHsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGNvbnRleHQgPSBfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKTsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwb3N0X2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKGNvbnRleHQpOwogICAgICB2ZXJpZnkoKCkgPT4gbG9nZ2VyLnN1Y2Nlc3MoJ0NyZWF0ZWQgYSBwcm9kdWN0aW9uIGJ1aWxkIScpKS5jYWxsZWQoMSk7CiAgICAgIHZlcmlmeSgKICAgICAgICAoKSA9PiBsb2dnZXIuaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJyR7bGlnaHRDeWFuLndyYXAoJ2RhcnQgYnVpbGQvYmluL3NlcnZlci5kYXJ0Jyl9JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" }, { @@ -310,7 +322,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KAogICAgICAnYnVuZGxlcyBleHRlcm5hbCBkZXBlbmRlbmNpZXMgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLAogICAgICAoKSBhc3luYyB7CiAgICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0KICAgICAgICAgICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAnYnVpbGQnLAogICAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICAgJ2ZvbycsCiAgICAgICAgKTsKCiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28yJyk7CiAgICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgICdidWlsZCcsCiAgICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICAgJyRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICBdKTsKICAgICAgfSwKICAgICk7CgogICAgdGVzdCgKICAgICAgImRvbid0IGJ1bmRsZSBpbnRlcm5hbCBwYXRoIGRlcGVuZGVuY2llcyIsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGhXaXRoSW50ZXJuYWxEZXBlbmRlbmN5KTsKICAgICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgewogICAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICAgIGZpbmFsIHRvID0gcGF0aC5qb2luKAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgJ2J1aWxkJywKICAgICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAgICdmb28nLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGNvcHlDYWxscywgWyckZnJvbSAtPiAkdG8nXSk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJ3B1YnNwZWMubG9jaycpKQogICAgICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAgICAgLi53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSB7CiAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgIHJldHVybiBGdXR1cmUudmFsdWUoKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vMicpOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKQogICAgICAgIC4ud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -322,7 +334,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICAnJycKCnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZShwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnKSkKICAgICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKAogICAgICAgICAgICAnJycKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQKcmVzb2x1dGlvbjogbnVsbAonJycsCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gdW5hYmxlIHRvIHJlYWQgcHVic3BlY19vdmVycmlkZXMnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMgPSBidWlsZERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChidWlsZERpcmVjdG9yeUNvbnRlbnRzLCBoYXNMZW5ndGgoMSkpOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgICB2ZXJpZnkoCiAgICAgICAgICAoKSA9PiBsb2dnZXIuZXJyKGFueSh0aGF0OiBjb250YWlucygnUGVybWlzc2lvbiBkZW5pZWQnKSkpLAogICAgICAgICkuY2FsbGVkKDEpOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKCdyZXNvbHV0aW9uOiBudWxsJyksCiAgICAgICAgKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnKSwKICAgICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgICAgUHJvY2Vzcy5ydW5TeW5jKCdjaG1vZCcsIFsnMDAwJywgcHVic3BlY092ZXJyaWRlcy5wYXRoXSk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvcicsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" }, { From c64b055401d76f2241bb5cd2baee68ae49ae2f4d Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Wed, 3 Sep 2025 21:52:57 -0500 Subject: [PATCH 25/31] refactor: simplify approach --- .../lib/dart_frog_prod_server_hooks.dart | 2 - .../src/adjust_relative_pubspec_imports.dart | 40 ----- .../lib/src/copy_workspace_pubspec_lock.dart | 72 -------- .../src/create_external_packages_folder.dart | 4 +- .../lib/src/disable_workspace_resolution.dart | 8 +- .../dart_frog_prod_server/hooks/post_gen.dart | 11 ++ .../dart_frog_prod_server/hooks/pre_gen.dart | 51 ++---- .../hooks/test/post_gen_test.dart | 42 ++++- .../src/copy_workspace_pubspec_lock_test.dart | 160 ------------------ .../create_external_packages_folder_test.dart | 21 ++- .../disable_workspace_resolution_test.dart | 35 ++-- .../dart_frog_prod_server_bundle.dart | 68 ++------ 12 files changed, 115 insertions(+), 399 deletions(-) delete mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart delete mode 100644 bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart delete mode 100644 bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart diff --git a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart index 9fce5a857..3fe46487e 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/dart_frog_prod_server_hooks.dart @@ -1,5 +1,3 @@ -export 'src/adjust_relative_pubspec_imports.dart'; -export 'src/copy_workspace_pubspec_lock.dart'; export 'src/create_bundle.dart'; export 'src/create_external_packages_folder.dart'; export 'src/dart_pub_get.dart'; diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart b/bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart deleted file mode 100644 index dab8298ae..000000000 --- a/bricks/dart_frog_prod_server/hooks/lib/src/adjust_relative_pubspec_imports.dart +++ /dev/null @@ -1,40 +0,0 @@ -import 'dart:io'; -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; -import 'package:yaml_edit/yaml_edit.dart'; - -/// Fixes up the relative path imports in the build/pubspec.yaml -void adjustRelativePubspecImports( - HookContext context, { - required String buildDirectory, - required void Function(int exitCode) exit, -}) { - final pubspecFile = File(path.join(buildDirectory, 'pubspec.yaml')); - if (!pubspecFile.existsSync()) { - context.logger.err('Unable to find ${pubspecFile.path}'); - exit(1); - } - - final String contents; - final Pubspec pubspec; - try { - contents = pubspecFile.readAsStringSync(); - pubspec = Pubspec.parse(contents); - } on Exception catch (e) { - context.logger.err('$e'); - return exit(1); - } - - final yamlEditor = YamlEditor(contents); - for (final dependency in pubspec.dependencies.entries) { - final dep = dependency.value; - if (dep is! PathDependency) continue; - yamlEditor.update( - ['dependencies', dependency.key, 'path'], - path.relative(dep.path, from: buildDirectory), - ); - } - - pubspecFile.writeAsStringSync(yamlEditor.toString()); -} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart b/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart deleted file mode 100644 index 4c2a01c2e..000000000 --- a/bricks/dart_frog_prod_server/hooks/lib/src/copy_workspace_pubspec_lock.dart +++ /dev/null @@ -1,72 +0,0 @@ -import 'dart:io'; -import 'package:mason/mason.dart'; -import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; - -/// Copies the pubspec.lock from the workspace root into the build directory -/// in order to ensure the production build uses the exact same versions of all -/// dependencies. -void copyWorkspacePubspecLock( - HookContext context, { - required String buildDirectory, - required String workingDirectory, - required void Function(int exitCode) exit, -}) { - final workspaceRoot = _getWorkspaceRoot(workingDirectory); - if (workspaceRoot == null) { - context.logger.err( - 'Unable to determine workspace root for $workingDirectory', - ); - return exit(1); - } - - final pubspecLockFile = File(path.join(workspaceRoot.path, 'pubspec.lock')); - if (!pubspecLockFile.existsSync()) return; - - try { - pubspecLockFile.copySync(path.join(buildDirectory, 'pubspec.lock')); - } on Exception catch (error) { - context.logger.err('$error'); - return exit(1); - } -} - -/// Returns the root directory of the nearest Dart workspace. -Directory? _getWorkspaceRoot(String workingDirectory) { - final file = _findNearestAncestor( - where: (path) => _getWorkspaceRootPubspecYaml(cwd: Directory(path)), - cwd: Directory(workingDirectory), - ); - if (file == null || !file.existsSync()) return null; - return Directory(path.dirname(file.path)); -} - -/// The workspace root `pubspec.yaml` file for this project. -File? _getWorkspaceRootPubspecYaml({required Directory cwd}) { - try { - final pubspecYamlFile = File(path.join(cwd.path, 'pubspec.yaml')); - if (!pubspecYamlFile.existsSync()) return null; - final pubspec = Pubspec.parse(pubspecYamlFile.readAsStringSync()); - if (pubspec.workspace?.isEmpty ?? true) return null; - return pubspecYamlFile; - } on Exception { - return null; - } -} - -/// Finds nearest ancestor file -/// relative to the [cwd] that satisfies [where]. -File? _findNearestAncestor({ - required File? Function(String path) where, - required Directory cwd, -}) { - Directory? prev; - var dir = cwd; - while (prev?.path != dir.path) { - final file = where(dir.path); - if (file?.existsSync() ?? false) return file; - prev = dir; - dir = dir.parent; - } - return null; -} diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart index b77f252fc..436a4c335 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart @@ -14,7 +14,7 @@ Future> createExternalPackagesFolder({ }) async { final pathResolver = path.context; final pubspecLock = await getPubspecLock( - buildDirectory.path, + projectDirectory.path, pathContext: path.context, ); @@ -29,7 +29,7 @@ Future> createExternalPackagesFolder({ return _ExternalPathDependency( name: dependency.name, - path: path.join(buildDirectory.path, pathDescription.path), + path: path.join(projectDirectory.path, pathDescription.path), ); }, ) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index 57dbc99f1..80d597d0e 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -6,20 +6,20 @@ import 'package:path/path.dart' as path; /// https://github.com/dart-lang/pub/issues/4594 void disableWorkspaceResolution( HookContext context, { - required String buildDirectory, + required String projectDirectory, required void Function(int exitCode) exit, }) { try { - overrideResolutionInPubspecOverrides(buildDirectory); + overrideResolutionInPubspecOverrides(projectDirectory); } on Exception catch (e) { context.logger.err('$e'); exit(1); } } -void overrideResolutionInPubspecOverrides(String directory) { +void overrideResolutionInPubspecOverrides(String projectDirectory) { final pubspecOverrides = File( - path.join(directory, 'pubspec_overrides.yaml'), + path.join(projectDirectory, 'pubspec_overrides.yaml'), ); if (pubspecOverrides.existsSync()) { diff --git a/bricks/dart_frog_prod_server/hooks/post_gen.dart b/bricks/dart_frog_prod_server/hooks/post_gen.dart index 1a2eacfe1..c56980bcc 100644 --- a/bricks/dart_frog_prod_server/hooks/post_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/post_gen.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'dart:io' as io; +import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; import 'package:mason/mason.dart' show HookContext, lightCyan; import 'package:path/path.dart' as path; @@ -9,9 +10,19 @@ Future run(HookContext context) => postGen(context); Future postGen( HookContext context, { io.Directory? directory, + ProcessRunner runProcess = io.Process.run, + void Function(int exitCode) exit = defaultExit, }) async { final projectDirectory = directory ?? io.Directory.current; final buildDirectoryPath = path.join(projectDirectory.path, 'build'); + + await dartPubGet( + context, + workingDirectory: buildDirectoryPath, + runProcess: runProcess, + exit: exit, + ); + final relativeBuildPath = path.relative(buildDirectoryPath); context.logger ..info('') diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index eefd2bc69..ac32bcb15 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -29,6 +29,16 @@ Future preGen( exit: exit, ); + if (usesWorkspaces) { + // Disable workspace resolution until we can generate per-package lockfiles. + // https://github.com/dart-lang/pub/issues/4594 + disableWorkspaceResolution( + context, + projectDirectory: projectDirectory.path, + exit: exit, + ); + } + // We need to make sure that the pubspec.lock file is up to date await dartPubGet( context, @@ -48,38 +58,6 @@ Future preGen( exit: exit, ); - if (usesWorkspaces) { - // Disable workspace resolution until we can generate per-package lockfiles. - // https://github.com/dart-lang/pub/issues/4594 - disableWorkspaceResolution( - context, - buildDirectory: buildDirectory.path, - exit: exit, - ); - // Copy the pubspec.lock from the workspace root to ensure the same versions - // of dependencies are used in the production build. - copyWorkspacePubspecLock( - context, - buildDirectory: buildDirectory.path, - workingDirectory: projectDirectory.path, - exit: exit, - ); - // Adjust all relative pubspec.yaml imports. - adjustRelativePubspecImports( - context, - buildDirectory: buildDirectory.path, - exit: exit, - ); - } - - // We need to make sure that the pubspec.lock file is up to date - await dartPubGet( - context, - workingDirectory: buildDirectory.path, - runProcess: runProcess, - exit: exit, - ); - final RouteConfiguration configuration; try { configuration = buildConfiguration(projectDirectory); @@ -112,8 +90,12 @@ Future preGen( onViolationEnd: () => exit(1), ); + final customDockerFile = io.File( + path.join(projectDirectory.path, 'Dockerfile'), + ); + final internalPathDependencies = await getInternalPathDependencies( - buildDirectory, + projectDirectory, ); final externalDependencies = await createExternalPackagesFolder( @@ -122,9 +104,6 @@ Future preGen( copyPath: copyPath, ); - final customDockerFile = io.File( - path.join(buildDirectory.path, 'Dockerfile'), - ); final addDockerfile = !customDockerFile.existsSync(); context.vars = { diff --git a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart index 53e1eda67..714556989 100644 --- a/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/post_gen_test.dart @@ -1,6 +1,10 @@ +import 'dart:io'; + import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; -import 'package:mason/mason.dart' show HookContext, Logger, Progress, lightCyan; +import 'package:mason/mason.dart' + show ExitCode, HookContext, Logger, Progress, lightCyan; import 'package:mocktail/mocktail.dart'; +import 'package:path/path.dart' as path; import 'package:test/test.dart'; import '../post_gen.dart' as post_gen; @@ -31,6 +35,14 @@ void main() { late HookContext context; late Logger logger; + const processId = 42; + final processResult = ProcessResult( + processId, + ExitCode.success.code, + '', + '', + ); + setUp(() { logger = _MockLogger(); context = _FakeHookContext(logger: logger); @@ -47,8 +59,32 @@ void main() { ); }); - test('outputs next steps', () async { - await post_gen.postGen(context); + test('runs dart pub get and outputs next steps', () async { + var processRunnerCallCount = 0; + final exitCalls = []; + + await post_gen.postGen( + context, + runProcess: ( + executable, + args, { + String? workingDirectory, + bool? runInShell, + }) async { + processRunnerCallCount++; + expect(executable, equals('dart')); + expect(args, equals(['pub', 'get'])); + expect( + workingDirectory, + equals(path.join(Directory.current.path, 'build')), + ); + expect(runInShell, isTrue); + return processResult; + }, + exit: exitCalls.add, + ); + expect(processRunnerCallCount, equals(1)); + expect(exitCalls, isEmpty); verify(() => logger.success('Created a production build!')).called(1); verify( () => logger.info('Start the production server by running:'), diff --git a/bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart deleted file mode 100644 index c47f7a99f..000000000 --- a/bricks/dart_frog_prod_server/hooks/test/src/copy_workspace_pubspec_lock_test.dart +++ /dev/null @@ -1,160 +0,0 @@ -import 'dart:io'; - -import 'package:dart_frog_prod_server_hooks/dart_frog_prod_server_hooks.dart'; -import 'package:mason/mason.dart'; -import 'package:mocktail/mocktail.dart'; -import 'package:path/path.dart' as path; -import 'package:test/test.dart'; - -class _MockHookContext extends Mock implements HookContext {} - -class _MockLogger extends Mock implements Logger {} - -void main() { - group('copyWorkspacePubspecLock', () { - late List exitCalls; - late HookContext context; - late Logger logger; - late Directory buildDirectory; - late Directory workingDirectory; - - setUp(() { - exitCalls = []; - context = _MockHookContext(); - logger = _MockLogger(); - buildDirectory = Directory.systemTemp.createTempSync('build'); - workingDirectory = Directory.systemTemp.createTempSync('working'); - - when(() => context.logger).thenReturn(logger); - - addTearDown(() { - buildDirectory.delete().ignore(); - workingDirectory.delete().ignore(); - }); - }); - - test('exits with error when unable to determine the workspace root', () { - copyWorkspacePubspecLock( - context, - buildDirectory: buildDirectory.path, - workingDirectory: workingDirectory.path, - exit: exitCalls.add, - ); - expect(exitCalls, equals([1])); - verify( - () => logger.err( - 'Unable to determine workspace root for ${workingDirectory.path}', - ), - ); - }); - - test('exits with error when unable to parse pubspec.yaml', () { - File(path.join(workingDirectory.path, 'pubspec.yaml')) - .writeAsStringSync('invalid pubspec.yaml'); - copyWorkspacePubspecLock( - context, - buildDirectory: buildDirectory.path, - workingDirectory: workingDirectory.path, - exit: exitCalls.add, - ); - expect(exitCalls, equals([1])); - verify( - () => logger.err( - 'Unable to determine workspace root for ${workingDirectory.path}', - ), - ); - }); - - test('does nothing when pubspec.lock does not exist in workspace root', () { - File(path.join(workingDirectory.path, 'pubspec.yaml')) - .writeAsStringSync(''' -name: _ -version: 0.0.0 -environment: - sdk: ^3.8.0 -workspace: - - packages/hello_world -'''); - copyWorkspacePubspecLock( - context, - buildDirectory: buildDirectory.path, - workingDirectory: workingDirectory.path, - exit: exitCalls.add, - ); - expect(exitCalls, isEmpty); - verifyNever(() => logger.err(any())); - expect(buildDirectory.listSync(), isEmpty); - }); - - test('exits with error when unable to copy lockfile', () { - const pubspecLockContents = ''' -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: -'''; - File(path.join(workingDirectory.path, 'pubspec.yaml')) - .writeAsStringSync(''' -name: _ -version: 0.0.0 -environment: - sdk: ^3.8.0 -workspace: - - packages/hello_world -'''); - final file = File(path.join(workingDirectory.path, 'pubspec.lock')) - ..writeAsStringSync(pubspecLockContents); - Process.runSync('chmod', ['000', file.path]); - copyWorkspacePubspecLock( - context, - buildDirectory: buildDirectory.path, - workingDirectory: workingDirectory.path, - exit: exitCalls.add, - ); - expect(exitCalls, equals([1])); - verify( - () => logger.err(any(that: contains('Permission denied'))), - ); - }); - - test('copies pubspec.lock to build directory when found', () { - const pubspecLockContents = ''' -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: -'''; - File(path.join(workingDirectory.path, 'pubspec.yaml')) - .writeAsStringSync(''' -name: _ -version: 0.0.0 -environment: - sdk: ^3.8.0 -workspace: - - packages/hello_world -'''); - File(path.join(workingDirectory.path, 'pubspec.lock')) - .writeAsStringSync(pubspecLockContents); - copyWorkspacePubspecLock( - context, - buildDirectory: buildDirectory.path, - workingDirectory: workingDirectory.path, - exit: exitCalls.add, - ); - expect(exitCalls, isEmpty); - verifyNever(() => logger.err(any())); - final buildDirectoryContents = buildDirectory.listSync(); - expect(buildDirectoryContents, hasLength(1)); - expect( - buildDirectoryContents.first, - isA().having( - (f) => path.basename(f.path), - 'name', - 'pubspec.lock', - ), - ); - expect( - (buildDirectoryContents.first as File).readAsStringSync(), - equals(pubspecLockContents), - ); - }); - }); -} diff --git a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart index e20c2b075..d16d23a5e 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart @@ -10,9 +10,8 @@ void main() { group('createExternalPackagesFolder', () { test('bundles external dependencies with external dependencies', () async { final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'build', 'pubspec.lock')) - ..createSync(recursive: true) - ..writeAsStringSync(fooPath); + File(path.join(projectDirectory.path, 'pubspec.lock')) + .writeAsStringSync(fooPath); final copyCalls = []; await createExternalPackagesFolder( @@ -24,8 +23,7 @@ void main() { }, ); - final fooPackageDirectory = - path.join(projectDirectory.path, 'build', '../../foo'); + final fooPackageDirectory = path.join(projectDirectory.path, '../../foo'); final fooPackageDirectoryTarget = path.join( projectDirectory.path, 'build', @@ -33,8 +31,10 @@ void main() { 'foo', ); - final secondFooPackageDirectory = - path.join(projectDirectory.path, 'build', '../../foo2'); + final secondFooPackageDirectory = path.join( + projectDirectory.path, + '../../foo2', + ); final secondFooPackageDirectoryTarget = path.join( projectDirectory.path, 'build', @@ -49,9 +49,8 @@ void main() { test("doesn't bundle internal path dependencies", () async { final projectDirectory = Directory.systemTemp.createTempSync(); - File(path.join(projectDirectory.path, 'build', 'pubspec.lock')) - ..createSync(recursive: true) - ..writeAsStringSync(fooPathWithInternalDependency); + File(path.join(projectDirectory.path, 'pubspec.lock')) + .writeAsStringSync(fooPathWithInternalDependency); final copyCalls = []; await createExternalPackagesFolder( @@ -63,7 +62,7 @@ void main() { }, ); - final from = path.join(projectDirectory.path, 'build', '../../foo'); + final from = path.join(projectDirectory.path, '../../foo'); final to = path.join( projectDirectory.path, 'build', diff --git a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart index b20554874..de811941c 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart @@ -15,29 +15,29 @@ void main() { late List exitCalls; late HookContext context; late Logger logger; - late Directory buildDirectory; + late Directory projectDirectory; setUp(() { exitCalls = []; context = _MockHookContext(); logger = _MockLogger(); - buildDirectory = Directory.systemTemp.createTempSync('build'); + projectDirectory = Directory.systemTemp.createTempSync('project'); when(() => context.logger).thenReturn(logger); - addTearDown(() => buildDirectory.delete().ignore()); + addTearDown(() => projectDirectory.delete().ignore()); }); group('when pubspec_overrides.yaml does not exist', () { test('adds resolution: null', () { disableWorkspaceResolution( context, - buildDirectory: buildDirectory.path, + projectDirectory: projectDirectory.path, exit: exitCalls.add, ); - final buildDirectoryContents = buildDirectory.listSync(); - expect(buildDirectoryContents, hasLength(1)); - final pubspecOverrides = buildDirectoryContents.first as File; + final contents = projectDirectory.listSync(); + expect(contents, hasLength(1)); + final pubspecOverrides = contents.first as File; expect( pubspecOverrides.readAsStringSync(), equals('resolution: null'), @@ -52,19 +52,20 @@ dependency_overrides: path: ./path/to/foo'''; setUp(() { - File(path.join(buildDirectory.path, 'pubspec_overrides.yaml')) - .writeAsStringSync(originalPubspecOverridesContent); + File( + path.join(projectDirectory.path, 'pubspec_overrides.yaml'), + ).writeAsStringSync(originalPubspecOverridesContent); }); test('adds resolution: null', () { disableWorkspaceResolution( context, - buildDirectory: buildDirectory.path, + projectDirectory: projectDirectory.path, exit: exitCalls.add, ); - final buildDirectoryContents = buildDirectory.listSync(); - expect(buildDirectoryContents, hasLength(1)); - final pubspecOverrides = buildDirectoryContents.first as File; + final contents = projectDirectory.listSync(); + expect(contents, hasLength(1)); + final pubspecOverrides = contents.first as File; expect( pubspecOverrides.readAsStringSync(), equals( @@ -80,7 +81,7 @@ resolution: null group('when unable to read pubspec_overrides', () { setUp(() { final pubspecOverrides = File( - path.join(buildDirectory.path, 'pubspec_overrides.yaml'), + path.join(projectDirectory.path, 'pubspec_overrides.yaml'), )..createSync(); Process.runSync('chmod', ['000', pubspecOverrides.path]); }); @@ -88,11 +89,11 @@ resolution: null test('exits with error', () { disableWorkspaceResolution( context, - buildDirectory: buildDirectory.path, + projectDirectory: projectDirectory.path, exit: exitCalls.add, ); - final buildDirectoryContents = buildDirectory.listSync(); - expect(buildDirectoryContents, hasLength(1)); + final contents = projectDirectory.listSync(); + expect(contents, hasLength(1)); expect(exitCalls, equals([1])); verify( () => logger.err(any(that: contains('Permission denied'))), diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 1ecd760f0..b53d02d0f 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -28,19 +28,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvYWRqdXN0X3JlbGF0aXZlX3B1YnNwZWNfaW1wb3J0cy5kYXJ0JzsKZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", - "type": "text" - }, - { - "path": "build/lib/src/adjust_relative_pubspec_imports.dart", - "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEZpeGVzIHVwIHRoZSByZWxhdGl2ZSBwYXRoIGltcG9ydHMgaW4gdGhlIGJ1aWxkL3B1YnNwZWMueWFtbAp2b2lkIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLnlhbWwnKSk7CiAgaWYgKCFwdWJzcGVjRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignVW5hYmxlIHRvIGZpbmQgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgZXhpdCgxKTsKICB9CgogIGZpbmFsIFN0cmluZyBjb250ZW50czsKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGNvbnRlbnRzID0gcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogICAgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UoY29udGVudHMpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIGZpbmFsIHlhbWxFZGl0b3IgPSBZYW1sRWRpdG9yKGNvbnRlbnRzKTsKICBmb3IgKGZpbmFsIGRlcGVuZGVuY3kgaW4gcHVic3BlYy5kZXBlbmRlbmNpZXMuZW50cmllcykgewogICAgZmluYWwgZGVwID0gZGVwZW5kZW5jeS52YWx1ZTsKICAgIGlmIChkZXAgaXMhIFBhdGhEZXBlbmRlbmN5KSBjb250aW51ZTsKICAgIHlhbWxFZGl0b3IudXBkYXRlKAogICAgICBbJ2RlcGVuZGVuY2llcycsIGRlcGVuZGVuY3kua2V5LCAncGF0aCddLAogICAgICBwYXRoLnJlbGF0aXZlKGRlcC5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeSksCiAgICApOwogIH0KCiAgcHVic3BlY0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoeWFtbEVkaXRvci50b1N0cmluZygpKTsKfQo=", - "type": "text" - }, - { - "path": "build/lib/src/copy_workspace_pubspec_lock.dart", - "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICBmaW5hbCBwdWJzcGVjTG9ja0ZpbGUgPSBGaWxlKHBhdGguam9pbih3b3Jrc3BhY2VSb290LnBhdGgsICdwdWJzcGVjLmxvY2snKSk7CiAgaWYgKCFwdWJzcGVjTG9ja0ZpbGUuZXhpc3RzU3luYygpKSByZXR1cm47CgogIHRyeSB7CiAgICBwdWJzcGVjTG9ja0ZpbGUuY29weVN5bmMocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJykpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlcnJvcikgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZXJyb3InKTsKICAgIHJldHVybiBleGl0KDEpOwogIH0KfQoKLy8vIFJldHVybnMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBuZWFyZXN0IERhcnQgd29ya3NwYWNlLgpEaXJlY3Rvcnk/IF9nZXRXb3Jrc3BhY2VSb290KFN0cmluZyB3b3JraW5nRGlyZWN0b3J5KSB7CiAgZmluYWwgZmlsZSA9IF9maW5kTmVhcmVzdEFuY2VzdG9yKAogICAgd2hlcmU6IChwYXRoKSA9PiBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKGN3ZDogRGlyZWN0b3J5KHBhdGgpKSwKICAgIGN3ZDogRGlyZWN0b3J5KHdvcmtpbmdEaXJlY3RvcnkpLAogICk7CiAgaWYgKGZpbGUgPT0gbnVsbCB8fCAhZmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogIHJldHVybiBEaXJlY3RvcnkocGF0aC5kaXJuYW1lKGZpbGUucGF0aCkpOwp9CgovLy8gVGhlIHdvcmtzcGFjZSByb290IGBwdWJzcGVjLnlhbWxgIGZpbGUgZm9yIHRoaXMgcHJvamVjdC4KRmlsZT8gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbCh7cmVxdWlyZWQgRGlyZWN0b3J5IGN3ZH0pIHsKICB0cnkgewogICAgZmluYWwgcHVic3BlY1lhbWxGaWxlID0gRmlsZShwYXRoLmpvaW4oY3dkLnBhdGgsICdwdWJzcGVjLnlhbWwnKSk7CiAgICBpZiAoIXB1YnNwZWNZYW1sRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogICAgZmluYWwgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UocHVic3BlY1lhbWxGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgICBpZiAocHVic3BlYy53b3Jrc3BhY2U/LmlzRW1wdHkgPz8gdHJ1ZSkgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gcHVic3BlY1lhbWxGaWxlOwogIH0gb24gRXhjZXB0aW9uIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8vIEZpbmRzIG5lYXJlc3QgYW5jZXN0b3IgZmlsZQovLy8gcmVsYXRpdmUgdG8gdGhlIFtjd2RdIHRoYXQgc2F0aXNmaWVzIFt3aGVyZV0uCkZpbGU/IF9maW5kTmVhcmVzdEFuY2VzdG9yKHsKICByZXF1aXJlZCBGaWxlPyBGdW5jdGlvbihTdHJpbmcgcGF0aCkgd2hlcmUsCiAgcmVxdWlyZWQgRGlyZWN0b3J5IGN3ZCwKfSkgewogIERpcmVjdG9yeT8gcHJldjsKICB2YXIgZGlyID0gY3dkOwogIHdoaWxlIChwcmV2Py5wYXRoICE9IGRpci5wYXRoKSB7CiAgICBmaW5hbCBmaWxlID0gd2hlcmUoZGlyLnBhdGgpOwogICAgaWYgKGZpbGU/LmV4aXN0c1N5bmMoKSA/PyBmYWxzZSkgcmV0dXJuIGZpbGU7CiAgICBwcmV2ID0gZGlyOwogICAgZGlyID0gZGlyLnBhcmVudDsKICB9CiAgcmV0dXJuIG51bGw7Cn0K", + "ZXhwb3J0ICdzcmMvY3JlYXRlX2J1bmRsZS5kYXJ0JzsKZXhwb3J0ICdzcmMvY3JlYXRlX2V4dGVybmFsX3BhY2thZ2VzX2ZvbGRlci5kYXJ0JzsKZXhwb3J0ICdzcmMvZGFydF9wdWJfZ2V0LmRhcnQnOwpleHBvcnQgJ3NyYy9kaXNhYmxlX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwpleHBvcnQgJ3NyYy9leGl0X292ZXJyaWRlcy5kYXJ0JzsKZXhwb3J0ICdzcmMvZ2V0X2ludGVybmFsX3BhdGhfZGVwZW5kZW5jaWVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", "type": "text" }, { @@ -52,7 +40,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcwogICAgICAubWFwKAogICAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgICBmaW5hbCBwYXRoRGVzY3JpcHRpb24gPSBkZXBlbmRlbmN5LnBhdGhEZXNjcmlwdGlvbjsKICAgICAgICAgIGlmIChwYXRoRGVzY3JpcHRpb24gPT0gbnVsbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgZmluYWwgaXNFeHRlcm5hbCA9ICFwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIHBhdGhEZXNjcmlwdGlvbi5wYXRoKTsKICAgICAgICAgIGlmICghaXNFeHRlcm5hbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KAogICAgICAgICAgICBuYW1lOiBkZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgIHBhdGg6IHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgcmV0dXJuIFtdOwoKICBmaW5hbCBwYWNrYWdlc0RpcmVjdG9yeSA9IERpcmVjdG9yeSgKICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICApLAogICkuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKCiAgZmluYWwgY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgRnV0dXJlLndhaXQoCiAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSkgYXN5bmMgewogICAgICAgIGZpbmFsIGNvcHkgPSBhd2FpdCBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICAgIHRhcmdldERpcmVjdG9yeTogRGlyZWN0b3J5KAogICAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgKSwKICAgICAgICAgICksCiAgICAgICAgKTsKICAgICAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMoY29weS5wYXRoKTsKICAgICAgICByZXR1cm4gY29weTsKICAgICAgfSwKICAgICksCiAgKTsKCiAgRmlsZSgKICAgIHBhdGhSZXNvbHZlci5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKS53cml0ZUFzU3RyaW5nU3luYygKICAgICcnJwoKZGVwZW5kZW5jeV9vdmVycmlkZXM6CiR7Y29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICAgIGZpbmFsIHBhdGggPQogICAgICAgICAgICBwYXRoUmVzb2x2ZXIucmVsYXRpdmUoZGVwZW5kZW5jeS5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeS5wYXRoKTsKICAgICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgICB9LAogICAgKS5qb2luKCdcbicpfQonJycsCiAgICBtb2RlOiBGaWxlTW9kZS5hcHBlbmQsCiAgKTsKCiAgcmV0dXJuIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcwogICAgICAubWFwKChkZXBlbmRlbmN5KSA9PiBkZXBlbmRlbmN5LnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQoKLy8vIHtAdGVtcGxhdGUgZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQovLy8gQSBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3Qgd2l0aGluIHRoZSBidW5kbGVkIERhcnQgRnJvZyBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLwovLy8gRm9yIGV4YW1wbGU6Ci8vLyBgYGB5YW1sCi8vLyBuYW1lOiBteV9kYXJ0X2Zyb2dfcHJvamVjdAovLy8gZGVwZW5kZW5jaWVzOgovLy8gICBteV9wYWNrYWdlOgovLy8gICAgIHBhdGg6IC4uL215X3BhY2thZ2UKLy8vIGBgYAovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgX0V4dGVybmFsUGF0aERlcGVuZGVuY3kgewogIC8vLyB7QG1hY3JvIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KICBjb25zdCBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnBhdGgsCiAgfSk7CgogIC8vLyBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgbmFtZTsKCiAgLy8vIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBwYXRoOwoKICAvLy8gQ29waWVzIHRoZSBbX0V4dGVybmFsUGF0aERlcGVuZGVuY3ldIHRvIFt0YXJnZXREaXJlY3RvcnldLgogIEZ1dHVyZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4gY29weVRvKHsKICAgIHJlcXVpcmVkIERpcmVjdG9yeSB0YXJnZXREaXJlY3RvcnksCiAgICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAogIH0pIGFzeW5jIHsKICAgIGF3YWl0IGNvcHlQYXRoKHBhdGgsIHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeShuYW1lOiBuYW1lLCBwYXRoOiB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgfQp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", "type": "text" }, { @@ -64,7 +52,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGJ1aWxkRGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZScpOwogICAgZXhpdCgxKTsKICB9Cn0KCnZvaWQgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBkaXJlY3RvcnkpIHsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgIHBhdGguam9pbihkaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgfQp9Cgp2b2lkIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", "type": "text" }, { @@ -100,13 +88,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/post_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTx2b2lkPiBydW4oSG9va0NvbnRleHQgY29udGV4dCkgPT4gcG9zdEdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwb3N0R2VuKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICBpby5EaXJlY3Rvcnk/IGRpcmVjdG9yeSwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CgogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogYnVpbGREaXJlY3RvcnlQYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", "type": "text" }, { "path": "build/pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogICAgLy8gQWRqdXN0IGFsbCByZWxhdGl2ZSBwdWJzcGVjLnlhbWwgaW1wb3J0cy4KICAgIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICB9CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoCiAgICBidWlsZERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGN1c3RvbURvY2tlckZpbGUgPSBpby5GaWxlKAogICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHVic3BlYy5sb2NrIGZpbGUgaXMgdXAgdG8gZGF0ZQogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", "type": "text" }, { @@ -118,7 +106,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/post_gen_test.dart", "data": - "aW1wb3J0ICdwYWNrYWdlOmRhcnRfZnJvZ19wcm9kX3NlcnZlcl9ob29rcy9kYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MuZGFydCc7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmltcG9ydCAnLi4vcG9zdF9nZW4uZGFydCcgYXMgcG9zdF9nZW47CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncG9zdEdlbicsICgpIHsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGNvbnRleHQgPSBfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKTsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwb3N0X2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKGNvbnRleHQpOwogICAgICB2ZXJpZnkoKCkgPT4gbG9nZ2VyLnN1Y2Nlc3MoJ0NyZWF0ZWQgYSBwcm9kdWN0aW9uIGJ1aWxkIScpKS5jYWxsZWQoMSk7CiAgICAgIHZlcmlmeSgKICAgICAgICAoKSA9PiBsb2dnZXIuaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJyR7bGlnaHRDeWFuLndyYXAoJ2RhcnQgYnVpbGQvYmluL3NlcnZlci5kYXJ0Jyl9JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -139,12 +127,6 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIERhcnQgd29ya3NwYWNlcyBlbmFibGVkCmNvbnN0IHdvcmtzcGFjZVJvb3QgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgc2VydmVyOgogICAgcGF0aDogcGFja2FnZXMvc2VydmVyICAKd29ya3NwYWNlOgogIC0gcGFja2FnZXMvc2VydmVyCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VDaGlsZCA9ICcnJwpuYW1lOiBzZXJ2ZXIKcmVzb2x1dGlvbjogd29ya3NwYWNlCicnJzsK", "type": "text" }, - { - "path": "build/test/src/copy_workspace_pubspec_lock_test.dart", - "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaycsICgpIHsKICAgIGxhdGUgTGlzdDxpbnQ+IGV4aXRDYWxsczsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKICAgIGxhdGUgRGlyZWN0b3J5IGJ1aWxkRGlyZWN0b3J5OwogICAgbGF0ZSBEaXJlY3Rvcnkgd29ya2luZ0RpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBidWlsZERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCdidWlsZCcpOwogICAgICB3b3JraW5nRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3dvcmtpbmcnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpIHsKICAgICAgICBidWlsZERpcmVjdG9yeS5kZWxldGUoKS5pZ25vcmUoKTsKICAgICAgICB3b3JraW5nRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICB9KTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3Igd2hlbiB1bmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB3b3Jrc3BhY2Ugcm9vdCcsICgpIHsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnVW5hYmxlIHRvIGRldGVybWluZSB3b3Jrc3BhY2Ugcm9vdCBmb3IgJHt3b3JraW5nRGlyZWN0b3J5LnBhdGh9JywKICAgICAgICApLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvciB3aGVuIHVuYWJsZSB0byBwYXJzZSBwdWJzcGVjLnlhbWwnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCdpbnZhbGlkIHB1YnNwZWMueWFtbCcpOwogICAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAke3dvcmtpbmdEaXJlY3RvcnkucGF0aH0nLAogICAgICAgICksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdGhpbmcgd2hlbiBwdWJzcGVjLmxvY2sgZG9lcyBub3QgZXhpc3QgaW4gd29ya3NwYWNlIHJvb3QnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKSwgaXNFbXB0eSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yIHdoZW4gdW5hYmxlIHRvIGNvcHkgbG9ja2ZpbGUnLCAoKSB7CiAgICAgIGNvbnN0IHB1YnNwZWNMb2NrQ29udGVudHMgPSAnJycKIyBHZW5lcmF0ZWQgYnkgcHViCiMgU2VlIGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I2xvY2tmaWxlCnBhY2thZ2VzOgonJyc7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGZpbmFsIGZpbGUgPSBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLndyaXRlQXNTdHJpbmdTeW5jKHB1YnNwZWNMb2NrQ29udGVudHMpOwogICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBmaWxlLnBhdGhdKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb3BpZXMgcHVic3BlYy5sb2NrIHRvIGJ1aWxkIGRpcmVjdG9yeSB3aGVuIGZvdW5kJywgKCkgewogICAgICBjb25zdCBwdWJzcGVjTG9ja0NvbnRlbnRzID0gJycnCiMgR2VuZXJhdGVkIGJ5IHB1YgojIFNlZSBodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9nbG9zc2FyeSNsb2NrZmlsZQpwYWNrYWdlczoKJycnOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwp2ZXJzaW9uOiAwLjAuMAplbnZpcm9ubWVudDoKICBzZGs6IF4zLjguMAp3b3Jrc3BhY2U6CiAgLSBwYWNrYWdlcy9oZWxsb193b3JsZAonJycpOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhwdWJzcGVjTG9ja0NvbnRlbnRzKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMgPSBidWlsZERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QsCiAgICAgICAgaXNBPEZpbGU+KCkuaGF2aW5nKAogICAgICAgICAgKGYpID0+IHBhdGguYmFzZW5hbWUoZi5wYXRoKSwKICAgICAgICAgICduYW1lJywKICAgICAgICAgICdwdWJzcGVjLmxvY2snLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdCgKICAgICAgICAoYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlKS5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgZXF1YWxzKHB1YnNwZWNMb2NrQ29udGVudHMpLAogICAgICApOwogICAgfSk7CiAgfSk7Cn0K", - "type": "text" - }, { "path": "build/test/src/create_bundle_test.dart", "data": @@ -154,7 +136,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJ3B1YnNwZWMubG9jaycpKQogICAgICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAgICAgLi53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSB7CiAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgIHJldHVybiBGdXR1cmUudmFsdWUoKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vMicpOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKQogICAgICAgIC4ud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnZm9vJywKICAgICAgKTsKCiAgICAgIGZpbmFsIHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICcuLi8uLi9mb28yJywKICAgICAgKTsKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ3NlY29uZF9mb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgJyRmb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICAnJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICBdKTsKICAgIH0pOwoKICAgIHRlc3QoImRvZXNuJ3QgYnVuZGxlIGludGVybmFsIHBhdGggZGVwZW5kZW5jaWVzIiwgKCkgYXN5bmMgewogICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -166,7 +148,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKCdyZXNvbHV0aW9uOiBudWxsJyksCiAgICAgICAgKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnKSwKICAgICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgICAgUHJvY2Vzcy5ydW5TeW5jKCdjaG1vZCcsIFsnMDAwJywgcHVic3BlY092ZXJyaWRlcy5wYXRoXSk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvcicsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -196,19 +178,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/dart_frog_prod_server_hooks.dart", "data": - "ZXhwb3J0ICdzcmMvYWRqdXN0X3JlbGF0aXZlX3B1YnNwZWNfaW1wb3J0cy5kYXJ0JzsKZXhwb3J0ICdzcmMvY29weV93b3Jrc3BhY2VfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfYnVuZGxlLmRhcnQnOwpleHBvcnQgJ3NyYy9jcmVhdGVfZXh0ZXJuYWxfcGFja2FnZXNfZm9sZGVyLmRhcnQnOwpleHBvcnQgJ3NyYy9kYXJ0X3B1Yl9nZXQuZGFydCc7CmV4cG9ydCAnc3JjL2Rpc2FibGVfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7CmV4cG9ydCAnc3JjL2V4aXRfb3ZlcnJpZGVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfaW50ZXJuYWxfcGF0aF9kZXBlbmRlbmNpZXMuZGFydCc7CmV4cG9ydCAnc3JjL2dldF9wdWJzcGVjX2xvY2suZGFydCc7CmV4cG9ydCAnc3JjL3VzZXNfd29ya3NwYWNlX3Jlc29sdXRpb24uZGFydCc7Cg==", - "type": "text" - }, - { - "path": "lib/src/adjust_relative_pubspec_imports.dart", - "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEZpeGVzIHVwIHRoZSByZWxhdGl2ZSBwYXRoIGltcG9ydHMgaW4gdGhlIGJ1aWxkL3B1YnNwZWMueWFtbAp2b2lkIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksICdwdWJzcGVjLnlhbWwnKSk7CiAgaWYgKCFwdWJzcGVjRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignVW5hYmxlIHRvIGZpbmQgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgZXhpdCgxKTsKICB9CgogIGZpbmFsIFN0cmluZyBjb250ZW50czsKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGNvbnRlbnRzID0gcHVic3BlY0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogICAgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UoY29udGVudHMpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIGZpbmFsIHlhbWxFZGl0b3IgPSBZYW1sRWRpdG9yKGNvbnRlbnRzKTsKICBmb3IgKGZpbmFsIGRlcGVuZGVuY3kgaW4gcHVic3BlYy5kZXBlbmRlbmNpZXMuZW50cmllcykgewogICAgZmluYWwgZGVwID0gZGVwZW5kZW5jeS52YWx1ZTsKICAgIGlmIChkZXAgaXMhIFBhdGhEZXBlbmRlbmN5KSBjb250aW51ZTsKICAgIHlhbWxFZGl0b3IudXBkYXRlKAogICAgICBbJ2RlcGVuZGVuY2llcycsIGRlcGVuZGVuY3kua2V5LCAncGF0aCddLAogICAgICBwYXRoLnJlbGF0aXZlKGRlcC5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeSksCiAgICApOwogIH0KCiAgcHVic3BlY0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoeWFtbEVkaXRvci50b1N0cmluZygpKTsKfQo=", - "type": "text" - }, - { - "path": "lib/src/copy_workspace_pubspec_lock.dart", - "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gQ29waWVzIHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5Ci8vLyBpbiBvcmRlciB0byBlbnN1cmUgdGhlIHByb2R1Y3Rpb24gYnVpbGQgdXNlcyB0aGUgZXhhY3Qgc2FtZSB2ZXJzaW9ucyBvZiBhbGwKLy8vIGRlcGVuZGVuY2llcy4Kdm9pZCBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBidWlsZERpcmVjdG9yeSwKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHdvcmtzcGFjZVJvb3QgPSBfZ2V0V29ya3NwYWNlUm9vdCh3b3JraW5nRGlyZWN0b3J5KTsKICBpZiAod29ya3NwYWNlUm9vdCA9PSBudWxsKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAkd29ya2luZ0RpcmVjdG9yeScsCiAgICApOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICBmaW5hbCBwdWJzcGVjTG9ja0ZpbGUgPSBGaWxlKHBhdGguam9pbih3b3Jrc3BhY2VSb290LnBhdGgsICdwdWJzcGVjLmxvY2snKSk7CiAgaWYgKCFwdWJzcGVjTG9ja0ZpbGUuZXhpc3RzU3luYygpKSByZXR1cm47CgogIHRyeSB7CiAgICBwdWJzcGVjTG9ja0ZpbGUuY29weVN5bmMocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCAncHVic3BlYy5sb2NrJykpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlcnJvcikgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZXJyb3InKTsKICAgIHJldHVybiBleGl0KDEpOwogIH0KfQoKLy8vIFJldHVybnMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBuZWFyZXN0IERhcnQgd29ya3NwYWNlLgpEaXJlY3Rvcnk/IF9nZXRXb3Jrc3BhY2VSb290KFN0cmluZyB3b3JraW5nRGlyZWN0b3J5KSB7CiAgZmluYWwgZmlsZSA9IF9maW5kTmVhcmVzdEFuY2VzdG9yKAogICAgd2hlcmU6IChwYXRoKSA9PiBfZ2V0V29ya3NwYWNlUm9vdFB1YnNwZWNZYW1sKGN3ZDogRGlyZWN0b3J5KHBhdGgpKSwKICAgIGN3ZDogRGlyZWN0b3J5KHdvcmtpbmdEaXJlY3RvcnkpLAogICk7CiAgaWYgKGZpbGUgPT0gbnVsbCB8fCAhZmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogIHJldHVybiBEaXJlY3RvcnkocGF0aC5kaXJuYW1lKGZpbGUucGF0aCkpOwp9CgovLy8gVGhlIHdvcmtzcGFjZSByb290IGBwdWJzcGVjLnlhbWxgIGZpbGUgZm9yIHRoaXMgcHJvamVjdC4KRmlsZT8gX2dldFdvcmtzcGFjZVJvb3RQdWJzcGVjWWFtbCh7cmVxdWlyZWQgRGlyZWN0b3J5IGN3ZH0pIHsKICB0cnkgewogICAgZmluYWwgcHVic3BlY1lhbWxGaWxlID0gRmlsZShwYXRoLmpvaW4oY3dkLnBhdGgsICdwdWJzcGVjLnlhbWwnKSk7CiAgICBpZiAoIXB1YnNwZWNZYW1sRmlsZS5leGlzdHNTeW5jKCkpIHJldHVybiBudWxsOwogICAgZmluYWwgcHVic3BlYyA9IFB1YnNwZWMucGFyc2UocHVic3BlY1lhbWxGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgICBpZiAocHVic3BlYy53b3Jrc3BhY2U/LmlzRW1wdHkgPz8gdHJ1ZSkgcmV0dXJuIG51bGw7CiAgICByZXR1cm4gcHVic3BlY1lhbWxGaWxlOwogIH0gb24gRXhjZXB0aW9uIHsKICAgIHJldHVybiBudWxsOwogIH0KfQoKLy8vIEZpbmRzIG5lYXJlc3QgYW5jZXN0b3IgZmlsZQovLy8gcmVsYXRpdmUgdG8gdGhlIFtjd2RdIHRoYXQgc2F0aXNmaWVzIFt3aGVyZV0uCkZpbGU/IF9maW5kTmVhcmVzdEFuY2VzdG9yKHsKICByZXF1aXJlZCBGaWxlPyBGdW5jdGlvbihTdHJpbmcgcGF0aCkgd2hlcmUsCiAgcmVxdWlyZWQgRGlyZWN0b3J5IGN3ZCwKfSkgewogIERpcmVjdG9yeT8gcHJldjsKICB2YXIgZGlyID0gY3dkOwogIHdoaWxlIChwcmV2Py5wYXRoICE9IGRpci5wYXRoKSB7CiAgICBmaW5hbCBmaWxlID0gd2hlcmUoZGlyLnBhdGgpOwogICAgaWYgKGZpbGU/LmV4aXN0c1N5bmMoKSA/PyBmYWxzZSkgcmV0dXJuIGZpbGU7CiAgICBwcmV2ID0gZGlyOwogICAgZGlyID0gZGlyLnBhcmVudDsKICB9CiAgcmV0dXJuIG51bGw7Cn0K", + "ZXhwb3J0ICdzcmMvY3JlYXRlX2J1bmRsZS5kYXJ0JzsKZXhwb3J0ICdzcmMvY3JlYXRlX2V4dGVybmFsX3BhY2thZ2VzX2ZvbGRlci5kYXJ0JzsKZXhwb3J0ICdzcmMvZGFydF9wdWJfZ2V0LmRhcnQnOwpleHBvcnQgJ3NyYy9kaXNhYmxlX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwpleHBvcnQgJ3NyYy9leGl0X292ZXJyaWRlcy5kYXJ0JzsKZXhwb3J0ICdzcmMvZ2V0X2ludGVybmFsX3BhdGhfZGVwZW5kZW5jaWVzLmRhcnQnOwpleHBvcnQgJ3NyYy9nZXRfcHVic3BlY19sb2NrLmRhcnQnOwpleHBvcnQgJ3NyYy91c2VzX3dvcmtzcGFjZV9yZXNvbHV0aW9uLmRhcnQnOwo=", "type": "text" }, { @@ -220,7 +190,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgcGF0aENvbnRleHQ6IHBhdGguY29udGV4dCwKICApOwoKICBmaW5hbCBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBwdWJzcGVjTG9jay5wYWNrYWdlcwogICAgICAubWFwKAogICAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgICBmaW5hbCBwYXRoRGVzY3JpcHRpb24gPSBkZXBlbmRlbmN5LnBhdGhEZXNjcmlwdGlvbjsKICAgICAgICAgIGlmIChwYXRoRGVzY3JpcHRpb24gPT0gbnVsbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgZmluYWwgaXNFeHRlcm5hbCA9ICFwYXRoUmVzb2x2ZXIuaXNXaXRoaW4oJycsIHBhdGhEZXNjcmlwdGlvbi5wYXRoKTsKICAgICAgICAgIGlmICghaXNFeHRlcm5hbCkgcmV0dXJuIG51bGw7CgogICAgICAgICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KAogICAgICAgICAgICBuYW1lOiBkZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgIHBhdGg6IHBhdGguam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCBwYXRoRGVzY3JpcHRpb24ucGF0aCksCiAgICAgICAgICApOwogICAgICAgIH0sCiAgICAgICkKICAgICAgLndoZXJlVHlwZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4oKQogICAgICAudG9MaXN0KCk7CgogIGlmIChleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMuaXNFbXB0eSkgcmV0dXJuIFtdOwoKICBmaW5hbCBwYWNrYWdlc0RpcmVjdG9yeSA9IERpcmVjdG9yeSgKICAgIHBhdGhSZXNvbHZlci5qb2luKAogICAgICBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICApLAogICkuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKCiAgZmluYWwgY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgRnV0dXJlLndhaXQoCiAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSkgYXN5bmMgewogICAgICAgIGZpbmFsIGNvcHkgPSBhd2FpdCBleHRlcm5hbFBhdGhEZXBlbmRlbmN5LmNvcHlUbygKICAgICAgICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICAgICAgICAgIHRhcmdldERpcmVjdG9yeTogRGlyZWN0b3J5KAogICAgICAgICAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgICAgICAgICBwYWNrYWdlc0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICAgIGV4dGVybmFsUGF0aERlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgKSwKICAgICAgICAgICksCiAgICAgICAgKTsKICAgICAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMoY29weS5wYXRoKTsKICAgICAgICByZXR1cm4gY29weTsKICAgICAgfSwKICAgICksCiAgKTsKCiAgRmlsZSgKICAgIHBhdGhSZXNvbHZlci5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKS53cml0ZUFzU3RyaW5nU3luYygKICAgICcnJwoKZGVwZW5kZW5jeV9vdmVycmlkZXM6CiR7Y29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICBmaW5hbCBuYW1lID0gZGVwZW5kZW5jeS5uYW1lOwogICAgICAgIGZpbmFsIHBhdGggPQogICAgICAgICAgICBwYXRoUmVzb2x2ZXIucmVsYXRpdmUoZGVwZW5kZW5jeS5wYXRoLCBmcm9tOiBidWlsZERpcmVjdG9yeS5wYXRoKTsKICAgICAgICByZXR1cm4gJyAgJG5hbWU6XG4gICAgcGF0aDogJHBhdGgnOwogICAgICB9LAogICAgKS5qb2luKCdcbicpfQonJycsCiAgICBtb2RlOiBGaWxlTW9kZS5hcHBlbmQsCiAgKTsKCiAgcmV0dXJuIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcwogICAgICAubWFwKChkZXBlbmRlbmN5KSA9PiBkZXBlbmRlbmN5LnBhdGgpCiAgICAgIC50b0xpc3QoKTsKfQoKLy8vIHtAdGVtcGxhdGUgZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQovLy8gQSBwYXRoIGRlcGVuZGVuY3kgdGhhdCBpcyBub3Qgd2l0aGluIHRoZSBidW5kbGVkIERhcnQgRnJvZyBwcm9qZWN0Ci8vLyBkaXJlY3RvcnkuCi8vLwovLy8gRm9yIGV4YW1wbGU6Ci8vLyBgYGB5YW1sCi8vLyBuYW1lOiBteV9kYXJ0X2Zyb2dfcHJvamVjdAovLy8gZGVwZW5kZW5jaWVzOgovLy8gICBteV9wYWNrYWdlOgovLy8gICAgIHBhdGg6IC4uL215X3BhY2thZ2UKLy8vIGBgYAovLy8ge0BlbmR0ZW1wbGF0ZX0KY2xhc3MgX0V4dGVybmFsUGF0aERlcGVuZGVuY3kgewogIC8vLyB7QG1hY3JvIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KICBjb25zdCBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSh7CiAgICByZXF1aXJlZCB0aGlzLm5hbWUsCiAgICByZXF1aXJlZCB0aGlzLnBhdGgsCiAgfSk7CgogIC8vLyBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgbmFtZTsKCiAgLy8vIFRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBwYXRoOwoKICAvLy8gQ29waWVzIHRoZSBbX0V4dGVybmFsUGF0aERlcGVuZGVuY3ldIHRvIFt0YXJnZXREaXJlY3RvcnldLgogIEZ1dHVyZTxfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeT4gY29weVRvKHsKICAgIHJlcXVpcmVkIERpcmVjdG9yeSB0YXJnZXREaXJlY3RvcnksCiAgICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAogIH0pIGFzeW5jIHsKICAgIGF3YWl0IGNvcHlQYXRoKHBhdGgsIHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICAgIHJldHVybiBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeShuYW1lOiBuYW1lLCBwYXRoOiB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgfQp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", "type": "text" }, { @@ -232,7 +202,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgYnVpbGREaXJlY3RvcnksCiAgcmVxdWlyZWQgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQsCn0pIHsKICB0cnkgewogICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGJ1aWxkRGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZSkgewogICAgY29udGV4dC5sb2dnZXIuZXJyKCckZScpOwogICAgZXhpdCgxKTsKICB9Cn0KCnZvaWQgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBkaXJlY3RvcnkpIHsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgIHBhdGguam9pbihkaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgfQp9Cgp2b2lkIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", "type": "text" }, { @@ -268,13 +238,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "post_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCkZ1dHVyZTx2b2lkPiBydW4oSG9va0NvbnRleHQgY29udGV4dCkgPT4gcG9zdEdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwb3N0R2VuKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICBpby5EaXJlY3Rvcnk/IGRpcmVjdG9yeSwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcgc2hvdyBIb29rQ29udGV4dCwgbGlnaHRDeWFuOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHBvc3RHZW4oY29udGV4dCk7CgpGdXR1cmU8dm9pZD4gcG9zdEdlbigKICBIb29rQ29udGV4dCBjb250ZXh0LCB7CiAgaW8uRGlyZWN0b3J5PyBkaXJlY3RvcnksCiAgUHJvY2Vzc1J1bm5lciBydW5Qcm9jZXNzID0gaW8uUHJvY2Vzcy5ydW4sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgYnVpbGREaXJlY3RvcnlQYXRoID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyk7CgogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogYnVpbGREaXJlY3RvcnlQYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgcmVsYXRpdmVCdWlsZFBhdGggPSBwYXRoLnJlbGF0aXZlKGJ1aWxkRGlyZWN0b3J5UGF0aCk7CiAgY29udGV4dC5sb2dnZXIKICAgIC4uaW5mbygnJykKICAgIC4uc3VjY2VzcygnQ3JlYXRlZCBhIHByb2R1Y3Rpb24gYnVpbGQhJykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JykKICAgIC4uaW5mbygnJykKICAgIC4uaW5mbygKICAgICAgJycnJHtsaWdodEN5YW4ud3JhcCgnZGFydCAke3BhdGguam9pbihyZWxhdGl2ZUJ1aWxkUGF0aCwgJ2JpbicsICdzZXJ2ZXIuZGFydCcpfScpfScnJywKICAgICk7Cn0K", "type": "text" }, { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgIHJ1blByb2Nlc3M6IHJ1blByb2Nlc3MsCiAgICBleGl0OiBleGl0LAogICk7CgogIGZpbmFsIGJ1aWxkRGlyZWN0b3J5ID0gaW8uRGlyZWN0b3J5KAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJyksCiAgKTsKCiAgYXdhaXQgY3JlYXRlQnVuZGxlKAogICAgY29udGV4dDogY29udGV4dCwKICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnksCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgICAvLyBDb3B5IHRoZSBwdWJzcGVjLmxvY2sgZnJvbSB0aGUgd29ya3NwYWNlIHJvb3QgdG8gZW5zdXJlIHRoZSBzYW1lIHZlcnNpb25zCiAgICAvLyBvZiBkZXBlbmRlbmNpZXMgYXJlIHVzZWQgaW4gdGhlIHByb2R1Y3Rpb24gYnVpbGQuCiAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogICAgLy8gQWRqdXN0IGFsbCByZWxhdGl2ZSBwdWJzcGVjLnlhbWwgaW1wb3J0cy4KICAgIGFkanVzdFJlbGF0aXZlUHVic3BlY0ltcG9ydHMoCiAgICAgIGNvbnRleHQsCiAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICBleGl0OiBleGl0LAogICAgKTsKICB9CgogIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHB1YnNwZWMubG9jayBmaWxlIGlzIHVwIHRvIGRhdGUKICBhd2FpdCBkYXJ0UHViR2V0KAogICAgY29udGV4dCwKICAgIHdvcmtpbmdEaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMgPSBhd2FpdCBnZXRJbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMoCiAgICBidWlsZERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGN1c3RvbURvY2tlckZpbGUgPSBpby5GaWxlKAogICAgcGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHVic3BlYy5sb2NrIGZpbGUgaXMgdXAgdG8gZGF0ZQogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", "type": "text" }, { @@ -286,7 +256,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/post_gen_test.dart", "data": - "aW1wb3J0ICdwYWNrYWdlOmRhcnRfZnJvZ19wcm9kX3NlcnZlcl9ob29rcy9kYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MuZGFydCc7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JyBzaG93IEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnRlc3QvdGVzdC5kYXJ0JzsKCmltcG9ydCAnLi4vcG9zdF9nZW4uZGFydCcgYXMgcG9zdF9nZW47CgpjbGFzcyBfRmFrZUhvb2tDb250ZXh0IGV4dGVuZHMgRmFrZSBpbXBsZW1lbnRzIEhvb2tDb250ZXh0IHsKICBfRmFrZUhvb2tDb250ZXh0KHtMb2dnZXI/IGxvZ2dlcn0pIDogX2xvZ2dlciA9IGxvZ2dlciA/PyBfTW9ja0xvZ2dlcigpOwoKICBmaW5hbCBMb2dnZXIgX2xvZ2dlcjsKCiAgdmFyIF92YXJzID0gPFN0cmluZywgZHluYW1pYz57fTsKCiAgQG92ZXJyaWRlCiAgTWFwPFN0cmluZywgZHluYW1pYz4gZ2V0IHZhcnMgPT4gX3ZhcnM7CgogIEBvdmVycmlkZQogIHNldCB2YXJzKE1hcDxTdHJpbmcsIGR5bmFtaWM+IHZhbHVlKSA9PiBfdmFycyA9IHZhbHVlOwoKICBAb3ZlcnJpZGUKICBMb2dnZXIgZ2V0IGxvZ2dlciA9PiBfbG9nZ2VyOwp9CgpjbGFzcyBfTW9ja0xvZ2dlciBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBMb2dnZXIge30KCmNsYXNzIF9Nb2NrUHJvZ3Jlc3MgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgUHJvZ3Jlc3Mge30KCnZvaWQgbWFpbigpIHsKICBncm91cCgncG9zdEdlbicsICgpIHsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGNvbnRleHQgPSBfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKTsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwb3N0X2dlbi5ydW4oX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikpLAogICAgICAgICksCiAgICAgICAgY29tcGxldGVzLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKGNvbnRleHQpOwogICAgICB2ZXJpZnkoKCkgPT4gbG9nZ2VyLnN1Y2Nlc3MoJ0NyZWF0ZWQgYSBwcm9kdWN0aW9uIGJ1aWxkIScpKS5jYWxsZWQoMSk7CiAgICAgIHZlcmlmeSgKICAgICAgICAoKSA9PiBsb2dnZXIuaW5mbygnU3RhcnQgdGhlIHByb2R1Y3Rpb24gc2VydmVyIGJ5IHJ1bm5pbmc6JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJyR7bGlnaHRDeWFuLndyYXAoJ2RhcnQgYnVpbGQvYmluL3NlcnZlci5kYXJ0Jyl9JyksCiAgICAgICkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgRXhpdENvZGUsIEhvb2tDb250ZXh0LCBMb2dnZXIsIFByb2dyZXNzLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wb3N0X2dlbi5kYXJ0JyBhcyBwb3N0X2dlbjsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwb3N0R2VuJywgKCkgewogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwoKICAgIGNvbnN0IHByb2Nlc3NJZCA9IDQyOwogICAgZmluYWwgcHJvY2Vzc1Jlc3VsdCA9IFByb2Nlc3NSZXN1bHQoCiAgICAgIHByb2Nlc3NJZCwKICAgICAgRXhpdENvZGUuc3VjY2Vzcy5jb2RlLAogICAgICAnJywKICAgICAgJycsCiAgICApOwoKICAgIHNldFVwKCgpIHsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgY29udGV4dCA9IF9GYWtlSG9va0NvbnRleHQobG9nZ2VyOiBsb2dnZXIpOwoKICAgICAgd2hlbigoKSA9PiBsb2dnZXIucHJvZ3Jlc3MoYW55KCkpKS50aGVuUmV0dXJuKF9Nb2NrUHJvZ3Jlc3MoKSk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW4gY29tcGxldGVzJywgKCkgewogICAgICBleHBlY3QoCiAgICAgICAgRXhpdE92ZXJyaWRlcy5ydW5ab25lZCgKICAgICAgICAgICgpID0+IHBvc3RfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdydW5zIGRhcnQgcHViIGdldCBhbmQgb3V0cHV0cyBuZXh0IHN0ZXBzJywgKCkgYXN5bmMgewogICAgICB2YXIgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCA9IDA7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CgogICAgICBhd2FpdCBwb3N0X2dlbi5wb3N0R2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgcnVuUHJvY2VzczogKAogICAgICAgICAgZXhlY3V0YWJsZSwKICAgICAgICAgIGFyZ3MsIHsKICAgICAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgIGJvb2w/IHJ1bkluU2hlbGwsCiAgICAgICAgfSkgYXN5bmMgewogICAgICAgICAgcHJvY2Vzc1J1bm5lckNhbGxDb3VudCsrOwogICAgICAgICAgZXhwZWN0KGV4ZWN1dGFibGUsIGVxdWFscygnZGFydCcpKTsKICAgICAgICAgIGV4cGVjdChhcmdzLCBlcXVhbHMoWydwdWInLCAnZ2V0J10pKTsKICAgICAgICAgIGV4cGVjdCgKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeSwKICAgICAgICAgICAgZXF1YWxzKHBhdGguam9pbihEaXJlY3RvcnkuY3VycmVudC5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgICApOwogICAgICAgICAgZXhwZWN0KHJ1bkluU2hlbGwsIGlzVHJ1ZSk7CiAgICAgICAgICByZXR1cm4gcHJvY2Vzc1Jlc3VsdDsKICAgICAgICB9LAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChwcm9jZXNzUnVubmVyQ2FsbENvdW50LCBlcXVhbHMoMSkpOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5zdWNjZXNzKCdDcmVhdGVkIGEgcHJvZHVjdGlvbiBidWlsZCEnKSkuY2FsbGVkKDEpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmluZm8oJ1N0YXJ0IHRoZSBwcm9kdWN0aW9uIHNlcnZlciBieSBydW5uaW5nOicpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5pbmZvKCcke2xpZ2h0Q3lhbi53cmFwKCdkYXJ0IGJ1aWxkL2Jpbi9zZXJ2ZXIuZGFydCcpfScpLAogICAgICApLmNhbGxlZCgxKTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -307,12 +277,6 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ "Ly8vIEFuIGFydGlmaWNpYWxseSBjcmFmdGVkIGBwdWJzcGVjLnlhbWxgIGZpbGUgd2l0aDoKLy8vCi8vLyAqIEEgZGlyZWN0IG1haW4gcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgYSBjaGlsZCBvZiB0aGUgcHJvamVjdCBkaXJlY3RvcnkuCi8vLyAqIERhcnQgd29ya3NwYWNlcyBlbmFibGVkCmNvbnN0IHdvcmtzcGFjZVJvb3QgPSAnJycKbmFtZTogXwpkZXBlbmRlbmNpZXM6CiAgc2VydmVyOgogICAgcGF0aDogcGFja2FnZXMvc2VydmVyICAKd29ya3NwYWNlOgogIC0gcGFja2FnZXMvc2VydmVyCicnJzsKCi8vLyBBbiBhcnRpZmljaWFsbHkgY3JhZnRlZCBgcHVic3BlYy55YW1sYCBmaWxlIHdpdGg6Ci8vLwovLy8gKiBEYXJ0IHdvcmtzcGFjZXMgZW5hYmxlZApjb25zdCB3b3Jrc3BhY2VDaGlsZCA9ICcnJwpuYW1lOiBzZXJ2ZXIKcmVzb2x1dGlvbjogd29ya3NwYWNlCicnJzsK", "type": "text" }, - { - "path": "test/src/copy_workspace_pubspec_lock_test.dart", - "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaycsICgpIHsKICAgIGxhdGUgTGlzdDxpbnQ+IGV4aXRDYWxsczsKICAgIGxhdGUgSG9va0NvbnRleHQgY29udGV4dDsKICAgIGxhdGUgTG9nZ2VyIGxvZ2dlcjsKICAgIGxhdGUgRGlyZWN0b3J5IGJ1aWxkRGlyZWN0b3J5OwogICAgbGF0ZSBEaXJlY3Rvcnkgd29ya2luZ0RpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBidWlsZERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCdidWlsZCcpOwogICAgICB3b3JraW5nRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3dvcmtpbmcnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpIHsKICAgICAgICBidWlsZERpcmVjdG9yeS5kZWxldGUoKS5pZ25vcmUoKTsKICAgICAgICB3b3JraW5nRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICB9KTsKICAgIH0pOwoKICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3Igd2hlbiB1bmFibGUgdG8gZGV0ZXJtaW5lIHRoZSB3b3Jrc3BhY2Ugcm9vdCcsICgpIHsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoCiAgICAgICAgICAnVW5hYmxlIHRvIGRldGVybWluZSB3b3Jrc3BhY2Ugcm9vdCBmb3IgJHt3b3JraW5nRGlyZWN0b3J5LnBhdGh9JywKICAgICAgICApLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvciB3aGVuIHVuYWJsZSB0byBwYXJzZSBwdWJzcGVjLnlhbWwnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCdpbnZhbGlkIHB1YnNwZWMueWFtbCcpOwogICAgICBjb3B5V29ya3NwYWNlUHVic3BlY0xvY2soCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICdVbmFibGUgdG8gZGV0ZXJtaW5lIHdvcmtzcGFjZSByb290IGZvciAke3dvcmtpbmdEaXJlY3RvcnkucGF0aH0nLAogICAgICAgICksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdkb2VzIG5vdGhpbmcgd2hlbiBwdWJzcGVjLmxvY2sgZG9lcyBub3QgZXhpc3QgaW4gd29ya3NwYWNlIHJvb3QnLCAoKSB7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGNvcHlXb3Jrc3BhY2VQdWJzcGVjTG9jaygKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeS5wYXRoLAogICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKSwgaXNFbXB0eSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yIHdoZW4gdW5hYmxlIHRvIGNvcHkgbG9ja2ZpbGUnLCAoKSB7CiAgICAgIGNvbnN0IHB1YnNwZWNMb2NrQ29udGVudHMgPSAnJycKIyBHZW5lcmF0ZWQgYnkgcHViCiMgU2VlIGh0dHBzOi8vZGFydC5kZXYvdG9vbHMvcHViL2dsb3NzYXJ5I2xvY2tmaWxlCnBhY2thZ2VzOgonJyc7CiAgICAgIEZpbGUocGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnZlcnNpb246IDAuMC4wCmVudmlyb25tZW50OgogIHNkazogXjMuOC4wCndvcmtzcGFjZToKICAtIHBhY2thZ2VzL2hlbGxvX3dvcmxkCicnJyk7CiAgICAgIGZpbmFsIGZpbGUgPSBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLndyaXRlQXNTdHJpbmdTeW5jKHB1YnNwZWNMb2NrQ29udGVudHMpOwogICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBmaWxlLnBhdGhdKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KAogICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdjb3BpZXMgcHVic3BlYy5sb2NrIHRvIGJ1aWxkIGRpcmVjdG9yeSB3aGVuIGZvdW5kJywgKCkgewogICAgICBjb25zdCBwdWJzcGVjTG9ja0NvbnRlbnRzID0gJycnCiMgR2VuZXJhdGVkIGJ5IHB1YgojIFNlZSBodHRwczovL2RhcnQuZGV2L3Rvb2xzL3B1Yi9nbG9zc2FyeSNsb2NrZmlsZQpwYWNrYWdlczoKJycnOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwp2ZXJzaW9uOiAwLjAuMAplbnZpcm9ubWVudDoKICBzZGs6IF4zLjguMAp3b3Jrc3BhY2U6CiAgLSBwYWNrYWdlcy9oZWxsb193b3JsZAonJycpOwogICAgICBGaWxlKHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhwdWJzcGVjTG9ja0NvbnRlbnRzKTsKICAgICAgY29weVdvcmtzcGFjZVB1YnNwZWNMb2NrKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGZpbmFsIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMgPSBidWlsZERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QsCiAgICAgICAgaXNBPEZpbGU+KCkuaGF2aW5nKAogICAgICAgICAgKGYpID0+IHBhdGguYmFzZW5hbWUoZi5wYXRoKSwKICAgICAgICAgICduYW1lJywKICAgICAgICAgICdwdWJzcGVjLmxvY2snLAogICAgICAgICksCiAgICAgICk7CiAgICAgIGV4cGVjdCgKICAgICAgICAoYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlKS5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgZXF1YWxzKHB1YnNwZWNMb2NrQ29udGVudHMpLAogICAgICApOwogICAgfSk7CiAgfSk7Cn0K", - "type": "text" - }, { "path": "test/src/create_bundle_test.dart", "data": @@ -322,7 +286,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJ3B1YnNwZWMubG9jaycpKQogICAgICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAgICAgLi53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoKTsKICAgICAgZmluYWwgY29weUNhbGxzID0gPFN0cmluZz5bXTsKCiAgICAgIGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgICAgICBidWlsZERpcmVjdG9yeTogRGlyZWN0b3J5KHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpKSwKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSB7CiAgICAgICAgICBjb3B5Q2FsbHMuYWRkKCckZnJvbSAtPiAkdG8nKTsKICAgICAgICAgIHJldHVybiBGdXR1cmUudmFsdWUoKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9CiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnLCAnLi4vLi4vZm9vMicpOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAuLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKQogICAgICAgIC4ud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJywgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnZm9vJywKICAgICAgKTsKCiAgICAgIGZpbmFsIHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICcuLi8uLi9mb28yJywKICAgICAgKTsKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ3NlY29uZF9mb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgJyRmb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICAnJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICBdKTsKICAgIH0pOwoKICAgIHRlc3QoImRvZXNuJ3QgYnVuZGxlIGludGVybmFsIHBhdGggZGVwZW5kZW5jaWVzIiwgKCkgYXN5bmMgewogICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -334,7 +298,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CgogICAgc2V0VXAoKCkgewogICAgICBleGl0Q2FsbHMgPSBbXTsKICAgICAgY29udGV4dCA9IF9Nb2NrSG9va0NvbnRleHQoKTsKICAgICAgbG9nZ2VyID0gX01vY2tMb2dnZXIoKTsKICAgICAgYnVpbGREaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnYnVpbGQnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpKTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZG9lcyBub3QgZXhpc3QnLCAoKSB7CiAgICAgIHRlc3QoJ2FkZHMgcmVzb2x1dGlvbjogbnVsbCcsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gYnVpbGREaXJlY3RvcnlDb250ZW50cy5maXJzdCBhcyBGaWxlOwogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHB1YnNwZWNPdmVycmlkZXMucmVhZEFzU3RyaW5nU3luYygpLAogICAgICAgICAgZXF1YWxzKCdyZXNvbHV0aW9uOiBudWxsJyksCiAgICAgICAgKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjX292ZXJyaWRlcy55YW1sIGV4aXN0cycsICgpIHsKICAgICAgY29uc3Qgb3JpZ2luYWxQdWJzcGVjT3ZlcnJpZGVzQ29udGVudCA9ICcnJwpkZXBlbmRlbmN5X292ZXJyaWRlczoKICBmb286CiAgICBwYXRoOiAuL3BhdGgvdG8vZm9vJycnOwoKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUocGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJykpCiAgICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICk7CiAgICAgICAgZmluYWwgYnVpbGREaXJlY3RvcnlDb250ZW50cyA9IGJ1aWxkRGlyZWN0b3J5Lmxpc3RTeW5jKCk7CiAgICAgICAgZXhwZWN0KGJ1aWxkRGlyZWN0b3J5Q29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGJ1aWxkRGlyZWN0b3J5Q29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4oYnVpbGREaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWNfb3ZlcnJpZGVzLnlhbWwnKSwKICAgICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgICAgUHJvY2Vzcy5ydW5TeW5jKCdjaG1vZCcsIFsnMDAwJywgcHVic3BlY092ZXJyaWRlcy5wYXRoXSk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgnZXhpdHMgd2l0aCBlcnJvcicsICgpIHsKICAgICAgICBkaXNhYmxlV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICBidWlsZERpcmVjdG9yeTogYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBidWlsZERpcmVjdG9yeUNvbnRlbnRzID0gYnVpbGREaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoYnVpbGREaXJlY3RvcnlDb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { From c44d1294e74d28f381e3a36a1be942590269936f Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Wed, 3 Sep 2025 21:54:01 -0500 Subject: [PATCH 26/31] chore: remove unnecessary dep --- bricks/dart_frog_prod_server/hooks/pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/bricks/dart_frog_prod_server/hooks/pubspec.yaml b/bricks/dart_frog_prod_server/hooks/pubspec.yaml index 2e4836c0c..d2db4f35b 100644 --- a/bricks/dart_frog_prod_server/hooks/pubspec.yaml +++ b/bricks/dart_frog_prod_server/hooks/pubspec.yaml @@ -12,7 +12,6 @@ dependencies: path: ^1.8.1 pubspec_parse: ^1.5.0 yaml: ^3.1.2 - yaml_edit: ^2.2.2 dev_dependencies: mocktail: ^1.0.0 From 64f1c2850d70fbdc4c62e7ed263a1abf7fcf29b4 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Wed, 3 Sep 2025 21:54:42 -0500 Subject: [PATCH 27/31] regen bundle --- .../commands/build/templates/dart_frog_prod_server_bundle.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index b53d02d0f..1a835f34b 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -250,7 +250,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", "type": "text" }, { From 776f1544460695bcdff8663549e550e290814662 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Wed, 3 Sep 2025 23:18:16 -0500 Subject: [PATCH 28/31] refactor: improve pubspec_overrides handling --- .../src/create_external_packages_folder.dart | 3 +- .../lib/src/disable_workspace_resolution.dart | 35 +++++++++++------- .../lib/src/uses_workspace_resolution.dart | 12 ++++--- .../dart_frog_prod_server/hooks/pre_gen.dart | 6 +++- .../dart_frog_prod_server/hooks/pubspec.yaml | 1 - .../hooks/test/pre_gen_test.dart | 6 +++- .../create_external_packages_folder_test.dart | 12 ++++--- .../disable_workspace_resolution_test.dart | 3 +- .../src/uses_workspace_resolution_test.dart | 11 ++++-- .../dart_frog_prod_server_bundle.dart | 36 +++++++++---------- 10 files changed, 77 insertions(+), 48 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart index 436a4c335..6bf3bec91 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/create_external_packages_folder.dart @@ -67,7 +67,7 @@ Future> createExternalPackagesFolder({ pathResolver.join(buildDirectory.path, 'pubspec_overrides.yaml'), ).writeAsStringSync( ''' - +resolution: null dependency_overrides: ${copiedExternalPathDependencies.map( (dependency) { @@ -78,7 +78,6 @@ ${copiedExternalPathDependencies.map( }, ).join('\n')} ''', - mode: FileMode.append, ); return copiedExternalPathDependencies diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index 80d597d0e..a69a7b4ff 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -1,35 +1,46 @@ import 'dart:io'; import 'package:mason/mason.dart'; import 'package:path/path.dart' as path; +import 'package:yaml/yaml.dart'; + +/// A void callback function (e.g. `void Function()`). +typedef VoidCallback = void Function(); /// Opts out of dart workspaces until we can generate per package lockfiles. /// https://github.com/dart-lang/pub/issues/4594 -void disableWorkspaceResolution( +VoidCallback disableWorkspaceResolution( HookContext context, { required String projectDirectory, required void Function(int exitCode) exit, }) { try { - overrideResolutionInPubspecOverrides(projectDirectory); + return overrideResolutionInPubspecOverrides(projectDirectory); } on Exception catch (e) { context.logger.err('$e'); exit(1); + return () {}; } } -void overrideResolutionInPubspecOverrides(String projectDirectory) { - final pubspecOverrides = File( +void Function() overrideResolutionInPubspecOverrides(String projectDirectory) { + final pubspecOverridesFile = File( path.join(projectDirectory, 'pubspec_overrides.yaml'), ); - if (pubspecOverrides.existsSync()) { - return pubspecOverrides.writeAsStringSync( - '\nresolution: null\n', - mode: FileMode.append, - ); + if (!pubspecOverridesFile.existsSync()) { + pubspecOverridesFile.writeAsStringSync('resolution: null'); + return pubspecOverridesFile.deleteSync; } - pubspecOverrides - ..createSync(recursive: true) - ..writeAsStringSync('resolution: null'); + final contents = pubspecOverridesFile.readAsStringSync(); + final pubspecOverrides = loadYaml(contents) as YamlMap?; + + if (pubspecOverrides?['resolution'] == 'null') return () {}; + pubspecOverridesFile.writeAsStringSync( + ''' +resolution: null +$contents''', + ); + + return () => pubspecOverridesFile.writeAsStringSync(contents); } diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart index db8aee704..d6394ef7a 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/uses_workspace_resolution.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:mason/mason.dart'; import 'package:path/path.dart' as path; -import 'package:pubspec_parse/pubspec_parse.dart'; +import 'package:yaml/yaml.dart'; /// Determines whether the project in the provided [workingDirectory] /// is configured to use `resolution: workspace`. @@ -13,14 +13,18 @@ bool usesWorkspaceResolution( final pubspecFile = File(path.join(workingDirectory, 'pubspec.yaml')); if (!pubspecFile.existsSync()) return false; - final Pubspec pubspec; + final YamlMap pubspec; try { - pubspec = Pubspec.parse(pubspecFile.readAsStringSync()); + final yaml = loadYaml(pubspecFile.readAsStringSync()); + if (yaml is! YamlMap) { + throw Exception('Unable to parse ${pubspecFile.path}'); + } + pubspec = yaml; } on Exception catch (e) { context.logger.err('$e'); exit(1); return false; } - return pubspec.resolution == 'workspace'; + return pubspec['resolution'] == 'workspace'; } diff --git a/bricks/dart_frog_prod_server/hooks/pre_gen.dart b/bricks/dart_frog_prod_server/hooks/pre_gen.dart index ac32bcb15..e3f50c410 100644 --- a/bricks/dart_frog_prod_server/hooks/pre_gen.dart +++ b/bricks/dart_frog_prod_server/hooks/pre_gen.dart @@ -29,10 +29,12 @@ Future preGen( exit: exit, ); + VoidCallback? restoreWorkspaceResolution; + if (usesWorkspaces) { // Disable workspace resolution until we can generate per-package lockfiles. // https://github.com/dart-lang/pub/issues/4594 - disableWorkspaceResolution( + restoreWorkspaceResolution = disableWorkspaceResolution( context, projectDirectory: projectDirectory.path, exit: exit, @@ -58,6 +60,8 @@ Future preGen( exit: exit, ); + restoreWorkspaceResolution?.call(); + final RouteConfiguration configuration; try { configuration = buildConfiguration(projectDirectory); diff --git a/bricks/dart_frog_prod_server/hooks/pubspec.yaml b/bricks/dart_frog_prod_server/hooks/pubspec.yaml index d2db4f35b..2e4c17ae8 100644 --- a/bricks/dart_frog_prod_server/hooks/pubspec.yaml +++ b/bricks/dart_frog_prod_server/hooks/pubspec.yaml @@ -10,7 +10,6 @@ dependencies: io: ^1.0.3 mason: ^0.1.0 path: ^1.8.1 - pubspec_parse: ^1.5.0 yaml: ^3.1.2 dev_dependencies: diff --git a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart index dbb00f1d4..5ae6e8dee 100644 --- a/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/pre_gen_test.dart @@ -230,7 +230,11 @@ packages: exit: exitCalls.add, directory: directory, runProcess: successRunProcess, - copyPath: (_, __) async {}, + copyPath: (from, to) async { + File( + path.join(to, 'pubspec_overrides.yaml'), + ).createSync(recursive: true); + }, ); expect(exitCalls, isEmpty); diff --git a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart index d16d23a5e..dd14e05ad 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/create_external_packages_folder_test.dart @@ -17,9 +17,11 @@ void main() { await createExternalPackagesFolder( projectDirectory: projectDirectory, buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { + copyPath: (from, to) async { copyCalls.add('$from -> $to'); - return Future.value(); + File( + path.join(to, 'pubspec_overrides.yaml'), + ).createSync(recursive: true); }, ); @@ -56,9 +58,11 @@ void main() { await createExternalPackagesFolder( projectDirectory: projectDirectory, buildDirectory: Directory(path.join(projectDirectory.path, 'build')), - copyPath: (from, to) { + copyPath: (from, to) async { copyCalls.add('$from -> $to'); - return Future.value(); + File( + path.join(to, 'pubspec_overrides.yaml'), + ).createSync(recursive: true); }, ); diff --git a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart index de811941c..da9786c9d 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart @@ -70,9 +70,8 @@ dependency_overrides: pubspecOverrides.readAsStringSync(), equals( ''' -$originalPubspecOverridesContent resolution: null -''', +$originalPubspecOverridesContent''', ), ); }); diff --git a/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart index 140104fac..15fc3754e 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/uses_workspace_resolution_test.dart @@ -47,10 +47,11 @@ void main() { }); group('when pubspec.yaml is malformed', () { + late File pubspecFile; setUp(() { - File( + pubspecFile = File( path.join(workingDirectory.path, 'pubspec.yaml'), - ).writeAsStringSync('invalid pubspec.yaml'); + )..writeAsStringSync('invalid pubspec.yaml'); }); test('returns false', () { @@ -63,7 +64,11 @@ void main() { isFalse, ); expect(exitCalls, equals([1])); - verify(() => logger.err(any(that: contains('ParsedYamlException')))); + verify( + () => logger.err( + any(that: contains('Unable to parse ${pubspecFile.path}')), + ), + ); }); }); diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 1a835f34b..b08577611 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -40,7 +40,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKcmVzb2x1dGlvbjogbnVsbApkZXBlbmRlbmN5X292ZXJyaWRlczoKJHtjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgIGZpbmFsIG5hbWUgPSBkZXBlbmRlbmN5Lm5hbWU7CiAgICAgICAgZmluYWwgcGF0aCA9CiAgICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICAgIHJldHVybiAnICAkbmFtZTpcbiAgICBwYXRoOiAkcGF0aCc7CiAgICAgIH0sCiAgICApLmpvaW4oJ1xuJyl9CicnJywKICApOwoKICByZXR1cm4gY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzCiAgICAgIC5tYXAoKGRlcGVuZGVuY3kpID0+IGRlcGVuZGVuY3kucGF0aCkKICAgICAgLnRvTGlzdCgpOwp9CgovLy8ge0B0ZW1wbGF0ZSBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9Ci8vLyBBIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCB3aXRoaW4gdGhlIGJ1bmRsZWQgRGFydCBGcm9nIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vCi8vLyBGb3IgZXhhbXBsZToKLy8vIGBgYHlhbWwKLy8vIG5hbWU6IG15X2RhcnRfZnJvZ19wcm9qZWN0Ci8vLyBkZXBlbmRlbmNpZXM6Ci8vLyAgIG15X3BhY2thZ2U6Ci8vLyAgICAgcGF0aDogLi4vbXlfcGFja2FnZQovLy8gYGBgCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSB7CiAgLy8vIHtAbWFjcm8gZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQogIGNvbnN0IF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KHsKICAgIHJlcXVpcmVkIHRoaXMubmFtZSwKICAgIHJlcXVpcmVkIHRoaXMucGF0aCwKICB9KTsKCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIHBhdGg7CgogIC8vLyBDb3BpZXMgdGhlIFtfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeV0gdG8gW3RhcmdldERpcmVjdG9yeV0uCiAgRnV0dXJlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PiBjb3B5VG8oewogICAgcmVxdWlyZWQgRGlyZWN0b3J5IHRhcmdldERpcmVjdG9yeSwKICAgIENvcHlQYXRoIGNvcHlQYXRoID0gaW8uY29weVBhdGgsCiAgfSkgYXN5bmMgewogICAgYXdhaXQgY29weVBhdGgocGF0aCwgdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KG5hbWU6IG5hbWUsIHBhdGg6IHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICB9Cn0K", "type": "text" }, { @@ -52,7 +52,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgfQp9Cgp2b2lkIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gQSB2b2lkIGNhbGxiYWNrIGZ1bmN0aW9uIChlLmcuIGB2b2lkIEZ1bmN0aW9uKClgKS4KdHlwZWRlZiBWb2lkQ2FsbGJhY2sgPSB2b2lkIEZ1bmN0aW9uKCk7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gKCkge307CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzP1sncmVzb2x1dGlvbiddID09ICdudWxsJykgcmV0dXJuICgpIHt9OwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKAogICAgJycnCnJlc29sdXRpb246IG51bGwKJGNvbnRlbnRzJycnLAogICk7CgogIHJldHVybiAoKSA9PiBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYyhjb250ZW50cyk7Cn0K", "type": "text" }, { @@ -82,7 +82,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/uses_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIHB1YnNwZWMgPSBQdWJzcGVjLnBhcnNlKHB1YnNwZWNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlYy5yZXNvbHV0aW9uID09ICd3b3Jrc3BhY2UnOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBZYW1sTWFwIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGZpbmFsIHlhbWwgPSBsb2FkWWFtbChwdWJzcGVjRmlsZS5yZWFkQXNTdHJpbmdTeW5jKCkpOwogICAgaWYgKHlhbWwgaXMhIFlhbWxNYXApIHsKICAgICAgdGhyb3cgRXhjZXB0aW9uKCdVbmFibGUgdG8gcGFyc2UgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgfQogICAgcHVic3BlYyA9IHlhbWw7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlY1sncmVzb2x1dGlvbiddID09ICd3b3Jrc3BhY2UnOwp9Cg==", "type": "text" }, { @@ -94,13 +94,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHVic3BlYy5sb2NrIGZpbGUgaXMgdXAgdG8gZGF0ZQogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIFZvaWRDYWxsYmFjaz8gcmVzdG9yZVdvcmtzcGFjZVJlc29sdXRpb247CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIHJlc3RvcmVXb3Jrc3BhY2VSZXNvbHV0aW9uID0gZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBidWlsZERpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpLAogICk7CgogIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgZXhpdDogZXhpdCwKICApOwoKICByZXN0b3JlV29ya3NwYWNlUmVzb2x1dGlvbj8uY2FsbCgpOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", "type": "text" }, { "path": "build/pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", "type": "text" }, { @@ -112,7 +112,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/pre_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyB7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", "type": "text" }, { @@ -136,7 +136,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnZm9vJywKICAgICAgKTsKCiAgICAgIGZpbmFsIHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICcuLi8uLi9mb28yJywKICAgICAgKTsKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ3NlY29uZF9mb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgJyRmb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICAnJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICBdKTsKICAgIH0pOwoKICAgIHRlc3QoImRvZXNuJ3QgYnVuZGxlIGludGVybmFsIHBhdGggZGVwZW5kZW5jaWVzIiwgKCkgYXN5bmMgewogICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIGFzeW5jIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgRmlsZSgKICAgICAgICAgICAgcGF0aC5qb2luKHRvLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICAgKS5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJy4uLy4uL2ZvbzInLAogICAgICApOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgewogICAgICAgICAgY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyk7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZnJvbSA9IHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28nKTsKICAgICAgZmluYWwgdG8gPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbJyRmcm9tIC0+ICR0byddKTsKICAgIH0pOwogIH0pOwp9Cg==", "type": "text" }, { @@ -148,7 +148,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCnJlc29sdXRpb246IG51bGwKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQnJycsCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gdW5hYmxlIHRvIHJlYWQgcHVic3BlY19vdmVycmlkZXMnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" }, { @@ -172,7 +172,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/uses_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJ2ludmFsaWQgcHVic3BlYy55YW1sJyk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBmYWxzZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzRmFsc2UsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQYXJzZWRZYW1sRXhjZXB0aW9uJykpKSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGlzIHZhbGlkIHdpdGggbm8gcmVzb2x1dGlvbicsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgZmFsc2UnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc0ZhbHNlLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIHJlc29sdXRpb24gd29ya3NwYWNlJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnJlc29sdXRpb246IHdvcmtzcGFjZQonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgdHJ1ZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzVHJ1ZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIGxhdGUgRmlsZSBwdWJzcGVjRmlsZTsKICAgICAgc2V0VXAoKCkgewogICAgICAgIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLi53cml0ZUFzU3RyaW5nU3luYygnaW52YWxpZCBwdWJzcGVjLnlhbWwnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgICB2ZXJpZnkoCiAgICAgICAgICAoKSA9PiBsb2dnZXIuZXJyKAogICAgICAgICAgICBhbnkodGhhdDogY29udGFpbnMoJ1VuYWJsZSB0byBwYXJzZSAke3B1YnNwZWNGaWxlLnBhdGh9JykpLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIG5vIHJlc29sdXRpb24nLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJycnCm5hbWU6IF8KJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjLnlhbWwgaXMgdmFsaWQgd2l0aCByZXNvbHV0aW9uIHdvcmtzcGFjZScsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwpyZXNvbHV0aW9uOiB3b3Jrc3BhY2UKJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIHRydWUnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc1RydWUsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -190,7 +190,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/create_external_packages_folder.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgoke2NvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcy5tYXAoCiAgICAgIChkZXBlbmRlbmN5KSB7CiAgICAgICAgZmluYWwgbmFtZSA9IGRlcGVuZGVuY3kubmFtZTsKICAgICAgICBmaW5hbCBwYXRoID0KICAgICAgICAgICAgcGF0aFJlc29sdmVyLnJlbGF0aXZlKGRlcGVuZGVuY3kucGF0aCwgZnJvbTogYnVpbGREaXJlY3RvcnkucGF0aCk7CiAgICAgICAgcmV0dXJuICcgICRuYW1lOlxuICAgIHBhdGg6ICRwYXRoJzsKICAgICAgfSwKICAgICkuam9pbignXG4nKX0KJycnLAogICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICk7CgogIHJldHVybiBjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMKICAgICAgLm1hcCgoZGVwZW5kZW5jeSkgPT4gZGVwZW5kZW5jeS5wYXRoKQogICAgICAudG9MaXN0KCk7Cn0KCi8vLyB7QHRlbXBsYXRlIGV4dGVybmFsX3BhdGhfZGVwZW5kZW5jeX0KLy8vIEEgcGF0aCBkZXBlbmRlbmN5IHRoYXQgaXMgbm90IHdpdGhpbiB0aGUgYnVuZGxlZCBEYXJ0IEZyb2cgcHJvamVjdAovLy8gZGlyZWN0b3J5LgovLy8KLy8vIEZvciBleGFtcGxlOgovLy8gYGBgeWFtbAovLy8gbmFtZTogbXlfZGFydF9mcm9nX3Byb2plY3QKLy8vIGRlcGVuZGVuY2llczoKLy8vICAgbXlfcGFja2FnZToKLy8vICAgICBwYXRoOiAuLi9teV9wYWNrYWdlCi8vLyBgYGAKLy8vIHtAZW5kdGVtcGxhdGV9CmNsYXNzIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5IHsKICAvLy8ge0BtYWNybyBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9CiAgY29uc3QgX0V4dGVybmFsUGF0aERlcGVuZGVuY3koewogICAgcmVxdWlyZWQgdGhpcy5uYW1lLAogICAgcmVxdWlyZWQgdGhpcy5wYXRoLAogIH0pOwoKICAvLy8gVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIG5hbWU7CgogIC8vLyBUaGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgcGFja2FnZS4KICBmaW5hbCBTdHJpbmcgcGF0aDsKCiAgLy8vIENvcGllcyB0aGUgW19FeHRlcm5hbFBhdGhEZXBlbmRlbmN5XSB0byBbdGFyZ2V0RGlyZWN0b3J5XS4KICBGdXR1cmU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+IGNvcHlUbyh7CiAgICByZXF1aXJlZCBEaXJlY3RvcnkgdGFyZ2V0RGlyZWN0b3J5LAogICAgQ29weVBhdGggY29weVBhdGggPSBpby5jb3B5UGF0aCwKICB9KSBhc3luYyB7CiAgICBhd2FpdCBjb3B5UGF0aChwYXRoLCB0YXJnZXREaXJlY3RvcnkucGF0aCk7CiAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3kobmFtZTogbmFtZSwgcGF0aDogdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogIH0KfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW87CmltcG9ydCAncGFja2FnZTpwYXRoL3BhdGguZGFydCcgYXMgcGF0aDsKCi8vLyBTaWduYXR1cmUgb2YgW2lvLmNvcHlQYXRoXS4KdHlwZWRlZiBDb3B5UGF0aCA9IEZ1dHVyZTx2b2lkPiBGdW5jdGlvbihTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKTsKCkZ1dHVyZTxMaXN0PFN0cmluZz4+IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoewogIHJlcXVpcmVkIERpcmVjdG9yeSBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIERpcmVjdG9yeSBidWlsZERpcmVjdG9yeSwKICBDb3B5UGF0aCBjb3B5UGF0aCA9IGlvLmNvcHlQYXRoLAp9KSBhc3luYyB7CiAgZmluYWwgcGF0aFJlc29sdmVyID0gcGF0aC5jb250ZXh0OwogIGZpbmFsIHB1YnNwZWNMb2NrID0gYXdhaXQgZ2V0UHVic3BlY0xvY2soCiAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBwYXRoQ29udGV4dDogcGF0aC5jb250ZXh0LAogICk7CgogIGZpbmFsIGV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IHB1YnNwZWNMb2NrLnBhY2thZ2VzCiAgICAgIC5tYXAoCiAgICAgICAgKGRlcGVuZGVuY3kpIHsKICAgICAgICAgIGZpbmFsIHBhdGhEZXNjcmlwdGlvbiA9IGRlcGVuZGVuY3kucGF0aERlc2NyaXB0aW9uOwogICAgICAgICAgaWYgKHBhdGhEZXNjcmlwdGlvbiA9PSBudWxsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICBmaW5hbCBpc0V4dGVybmFsID0gIXBhdGhSZXNvbHZlci5pc1dpdGhpbignJywgcGF0aERlc2NyaXB0aW9uLnBhdGgpOwogICAgICAgICAgaWYgKCFpc0V4dGVybmFsKSByZXR1cm4gbnVsbDsKCiAgICAgICAgICByZXR1cm4gX0V4dGVybmFsUGF0aERlcGVuZGVuY3koCiAgICAgICAgICAgIG5hbWU6IGRlcGVuZGVuY3kubmFtZSwKICAgICAgICAgICAgcGF0aDogcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgcGF0aERlc2NyaXB0aW9uLnBhdGgpLAogICAgICAgICAgKTsKICAgICAgICB9LAogICAgICApCiAgICAgIC53aGVyZVR5cGU8X0V4dGVybmFsUGF0aERlcGVuZGVuY3k+KCkKICAgICAgLnRvTGlzdCgpOwoKICBpZiAoZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLmlzRW1wdHkpIHJldHVybiBbXTsKCiAgZmluYWwgcGFja2FnZXNEaXJlY3RvcnkgPSBEaXJlY3RvcnkoCiAgICBwYXRoUmVzb2x2ZXIuam9pbigKICAgICAgYnVpbGREaXJlY3RvcnkucGF0aCwKICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgKSwKICApLi5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CgogIGZpbmFsIGNvcGllZEV4dGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IEZ1dHVyZS53YWl0KAogICAgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLm1hcCgKICAgICAgKGV4dGVybmFsUGF0aERlcGVuZGVuY3kpIGFzeW5jIHsKICAgICAgICBmaW5hbCBjb3B5ID0gYXdhaXQgZXh0ZXJuYWxQYXRoRGVwZW5kZW5jeS5jb3B5VG8oCiAgICAgICAgICBjb3B5UGF0aDogY29weVBhdGgsCiAgICAgICAgICB0YXJnZXREaXJlY3Rvcnk6IERpcmVjdG9yeSgKICAgICAgICAgICAgcGF0aFJlc29sdmVyLmpvaW4oCiAgICAgICAgICAgICAgcGFja2FnZXNEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgICBleHRlcm5hbFBhdGhEZXBlbmRlbmN5Lm5hbWUsCiAgICAgICAgICAgICksCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgICAgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKGNvcHkucGF0aCk7CiAgICAgICAgcmV0dXJuIGNvcHk7CiAgICAgIH0sCiAgICApLAogICk7CgogIEZpbGUoCiAgICBwYXRoUmVzb2x2ZXIuam9pbihidWlsZERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAnJycKcmVzb2x1dGlvbjogbnVsbApkZXBlbmRlbmN5X292ZXJyaWRlczoKJHtjb3BpZWRFeHRlcm5hbFBhdGhEZXBlbmRlbmNpZXMubWFwKAogICAgICAoZGVwZW5kZW5jeSkgewogICAgICAgIGZpbmFsIG5hbWUgPSBkZXBlbmRlbmN5Lm5hbWU7CiAgICAgICAgZmluYWwgcGF0aCA9CiAgICAgICAgICAgIHBhdGhSZXNvbHZlci5yZWxhdGl2ZShkZXBlbmRlbmN5LnBhdGgsIGZyb206IGJ1aWxkRGlyZWN0b3J5LnBhdGgpOwogICAgICAgIHJldHVybiAnICAkbmFtZTpcbiAgICBwYXRoOiAkcGF0aCc7CiAgICAgIH0sCiAgICApLmpvaW4oJ1xuJyl9CicnJywKICApOwoKICByZXR1cm4gY29waWVkRXh0ZXJuYWxQYXRoRGVwZW5kZW5jaWVzCiAgICAgIC5tYXAoKGRlcGVuZGVuY3kpID0+IGRlcGVuZGVuY3kucGF0aCkKICAgICAgLnRvTGlzdCgpOwp9CgovLy8ge0B0ZW1wbGF0ZSBleHRlcm5hbF9wYXRoX2RlcGVuZGVuY3l9Ci8vLyBBIHBhdGggZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCB3aXRoaW4gdGhlIGJ1bmRsZWQgRGFydCBGcm9nIHByb2plY3QKLy8vIGRpcmVjdG9yeS4KLy8vCi8vLyBGb3IgZXhhbXBsZToKLy8vIGBgYHlhbWwKLy8vIG5hbWU6IG15X2RhcnRfZnJvZ19wcm9qZWN0Ci8vLyBkZXBlbmRlbmNpZXM6Ci8vLyAgIG15X3BhY2thZ2U6Ci8vLyAgICAgcGF0aDogLi4vbXlfcGFja2FnZQovLy8gYGBgCi8vLyB7QGVuZHRlbXBsYXRlfQpjbGFzcyBfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeSB7CiAgLy8vIHtAbWFjcm8gZXh0ZXJuYWxfcGF0aF9kZXBlbmRlbmN5fQogIGNvbnN0IF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KHsKICAgIHJlcXVpcmVkIHRoaXMubmFtZSwKICAgIHJlcXVpcmVkIHRoaXMucGF0aCwKICB9KTsKCiAgLy8vIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlLgogIGZpbmFsIFN0cmluZyBuYW1lOwoKICAvLy8gVGhlIGFic29sdXRlIHBhdGggdG8gdGhlIHBhY2thZ2UuCiAgZmluYWwgU3RyaW5nIHBhdGg7CgogIC8vLyBDb3BpZXMgdGhlIFtfRXh0ZXJuYWxQYXRoRGVwZW5kZW5jeV0gdG8gW3RhcmdldERpcmVjdG9yeV0uCiAgRnV0dXJlPF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5PiBjb3B5VG8oewogICAgcmVxdWlyZWQgRGlyZWN0b3J5IHRhcmdldERpcmVjdG9yeSwKICAgIENvcHlQYXRoIGNvcHlQYXRoID0gaW8uY29weVBhdGgsCiAgfSkgYXN5bmMgewogICAgYXdhaXQgY29weVBhdGgocGF0aCwgdGFyZ2V0RGlyZWN0b3J5LnBhdGgpOwogICAgcmV0dXJuIF9FeHRlcm5hbFBhdGhEZXBlbmRlbmN5KG5hbWU6IG5hbWUsIHBhdGg6IHRhcmdldERpcmVjdG9yeS5wYXRoKTsKICB9Cn0K", "type": "text" }, { @@ -202,7 +202,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NAp2b2lkIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgfQp9Cgp2b2lkIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKHB1YnNwZWNPdmVycmlkZXMuZXhpc3RzU3luYygpKSB7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlcy53cml0ZUFzU3RyaW5nU3luYygKICAgICAgJ1xucmVzb2x1dGlvbjogbnVsbFxuJywKICAgICAgbW9kZTogRmlsZU1vZGUuYXBwZW5kLAogICAgKTsKICB9CgogIHB1YnNwZWNPdmVycmlkZXMKICAgIC4uY3JlYXRlU3luYyhyZWN1cnNpdmU6IHRydWUpCiAgICAuLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gQSB2b2lkIGNhbGxiYWNrIGZ1bmN0aW9uIChlLmcuIGB2b2lkIEZ1bmN0aW9uKClgKS4KdHlwZWRlZiBWb2lkQ2FsbGJhY2sgPSB2b2lkIEZ1bmN0aW9uKCk7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gKCkge307CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzP1sncmVzb2x1dGlvbiddID09ICdudWxsJykgcmV0dXJuICgpIHt9OwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKAogICAgJycnCnJlc29sdXRpb246IG51bGwKJGNvbnRlbnRzJycnLAogICk7CgogIHJldHVybiAoKSA9PiBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYyhjb250ZW50cyk7Cn0K", "type": "text" }, { @@ -232,7 +232,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/uses_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTpwdWJzcGVjX3BhcnNlL3B1YnNwZWNfcGFyc2UuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBQdWJzcGVjIHB1YnNwZWM7CiAgdHJ5IHsKICAgIHB1YnNwZWMgPSBQdWJzcGVjLnBhcnNlKHB1YnNwZWNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlYy5yZXNvbHV0aW9uID09ICd3b3Jrc3BhY2UnOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBwcm9qZWN0IGluIHRoZSBwcm92aWRlZCBbd29ya2luZ0RpcmVjdG9yeV0KLy8vIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGByZXNvbHV0aW9uOiB3b3Jrc3BhY2VgLgpib29sIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgd29ya2luZ0RpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIGZpbmFsIHB1YnNwZWNGaWxlID0gRmlsZShwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeSwgJ3B1YnNwZWMueWFtbCcpKTsKICBpZiAoIXB1YnNwZWNGaWxlLmV4aXN0c1N5bmMoKSkgcmV0dXJuIGZhbHNlOwoKICBmaW5hbCBZYW1sTWFwIHB1YnNwZWM7CiAgdHJ5IHsKICAgIGZpbmFsIHlhbWwgPSBsb2FkWWFtbChwdWJzcGVjRmlsZS5yZWFkQXNTdHJpbmdTeW5jKCkpOwogICAgaWYgKHlhbWwgaXMhIFlhbWxNYXApIHsKICAgICAgdGhyb3cgRXhjZXB0aW9uKCdVbmFibGUgdG8gcGFyc2UgJHtwdWJzcGVjRmlsZS5wYXRofScpOwogICAgfQogICAgcHVic3BlYyA9IHlhbWw7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICByZXR1cm4gcHVic3BlY1sncmVzb2x1dGlvbiddID09ICd3b3Jrc3BhY2UnOwp9Cg==", "type": "text" }, { @@ -244,13 +244,13 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICBjb250ZXh0LAogICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgIGV4aXQ6IGV4aXQsCiAgICApOwogIH0KCiAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcHVic3BlYy5sb2NrIGZpbGUgaXMgdXAgdG8gZGF0ZQogIGF3YWl0IGRhcnRQdWJHZXQoCiAgICBjb250ZXh0LAogICAgd29ya2luZ0RpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgcnVuUHJvY2VzczogcnVuUHJvY2VzcywKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgYnVpbGREaXJlY3RvcnkgPSBpby5EaXJlY3RvcnkoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSwKICApOwoKICBhd2FpdCBjcmVhdGVCdW5kbGUoCiAgICBjb250ZXh0OiBjb250ZXh0LAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGV4aXQ6IGV4aXQsCiAgKTsKCiAgZmluYWwgUm91dGVDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CiAgdHJ5IHsKICAgIGNvbmZpZ3VyYXRpb24gPSBidWlsZENvbmZpZ3VyYXRpb24ocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGVycm9yKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlcnJvcicpOwogICAgcmV0dXJuIGV4aXQoMSk7CiAgfQoKICByZXBvcnRSb3V0ZUNvbmZsaWN0cygKICAgIGNvbmZpZ3VyYXRpb24sCiAgICBvblJvdXRlQ29uZmxpY3Q6ICgKICAgICAgb3JpZ2luYWxGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdGaWxlUGF0aCwKICAgICAgY29uZmxpY3RpbmdFbmRwb2ludCwKICAgICkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm91dGUgY29uZmxpY3QgZGV0ZWN0ZWQuICR7bGlnaHRDeWFuLndyYXAob3JpZ2luYWxGaWxlUGF0aCl9IGFuZCAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRmlsZVBhdGgpfSBib3RoIHJlc29sdmUgdG8gJHtsaWdodEN5YW4ud3JhcChjb25mbGljdGluZ0VuZHBvaW50KX0uJycnLAogICAgICApOwogICAgfSwKICAgIG9uVmlvbGF0aW9uRW5kOiAoKSA9PiBleGl0KDEpLAogICk7CgogIHJlcG9ydFJvZ3VlUm91dGVzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm9ndWVSb3V0ZTogKGZpbGVQYXRoLCBpZGVhbFBhdGgpIHsKICAgICAgY29udGV4dC5sb2dnZXIuZXJyKAogICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKGZpbGVQYXRoKX0gdG8gJHtsaWdodEN5YW4ud3JhcChpZGVhbFBhdGgpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgZmluYWwgY3VzdG9tRG9ja2VyRmlsZSA9IGlvLkZpbGUoCiAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpLAogICk7CgogIGZpbmFsIGludGVybmFsUGF0aERlcGVuZGVuY2llcyA9IGF3YWl0IGdldEludGVybmFsUGF0aERlcGVuZGVuY2llcygKICAgIHByb2plY3REaXJlY3RvcnksCiAgKTsKCiAgZmluYWwgZXh0ZXJuYWxEZXBlbmRlbmNpZXMgPSBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeSwKICAgIGJ1aWxkRGlyZWN0b3J5OiBidWlsZERpcmVjdG9yeSwKICAgIGNvcHlQYXRoOiBjb3B5UGF0aCwKICApOwoKICBmaW5hbCBhZGREb2NrZXJmaWxlID0gIWN1c3RvbURvY2tlckZpbGUuZXhpc3RzU3luYygpOwoKICBjb250ZXh0LnZhcnMgPSB7CiAgICAnZGlyZWN0b3JpZXMnOiBjb25maWd1cmF0aW9uLmRpcmVjdG9yaWVzCiAgICAgICAgLm1hcCgoYykgPT4gYy50b0pzb24oKSkKICAgICAgICAudG9MaXN0KCkKICAgICAgICAucmV2ZXJzZWQKICAgICAgICAudG9MaXN0KCksCiAgICAncm91dGVzJzogY29uZmlndXJhdGlvbi5yb3V0ZXMubWFwKChyKSA9PiByLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdtaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5taWRkbGV3YXJlLm1hcCgobSkgPT4gbS50b0pzb24oKSkudG9MaXN0KCksCiAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSAhPSBudWxsCiAgICAgICAgPyBjb25maWd1cmF0aW9uLmdsb2JhbE1pZGRsZXdhcmUhLnRvSnNvbigpCiAgICAgICAgOiBmYWxzZSwKICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogY29uZmlndXJhdGlvbi5zZXJ2ZVN0YXRpY0ZpbGVzLAogICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBjb25maWd1cmF0aW9uLmludm9rZUN1c3RvbUVudHJ5cG9pbnQsCiAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tSW5pdCwKICAgICdwYXRoRGVwZW5kZW5jaWVzJzogaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzLAogICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZXh0ZXJuYWxEZXBlbmRlbmNpZXMuaXNOb3RFbXB0eSwKICAgICdkYXJ0VmVyc2lvbic6IGNvbnRleHQudmFyc1snZGFydFZlcnNpb24nXSwKICAgICdhZGREb2NrZXJmaWxlJzogYWRkRG9ja2VyZmlsZSwKICB9Owp9Cg==", + "aW1wb3J0ICdkYXJ0OmFzeW5jJzsKaW1wb3J0ICdkYXJ0OmlvJyBhcyBpbzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6aW8vaW8uZGFydCcgYXMgaW9fZXhwYW5kZWQ7CmltcG9ydCAncGFja2FnZTptYXNvbi9tYXNvbi5kYXJ0JwogICAgc2hvdyBIb29rQ29udGV4dCwgZGVmYXVsdEZvcmVncm91bmQsIGxpZ2h0Q3lhbjsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwoKdHlwZWRlZiBSb3V0ZUNvbmZpZ3VyYXRpb25CdWlsZGVyID0gUm91dGVDb25maWd1cmF0aW9uIEZ1bmN0aW9uKAogIGlvLkRpcmVjdG9yeSBkaXJlY3RvcnksCik7CgpGdXR1cmU8dm9pZD4gcnVuKEhvb2tDb250ZXh0IGNvbnRleHQpID0+IHByZUdlbihjb250ZXh0KTsKCkZ1dHVyZTx2b2lkPiBwcmVHZW4oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIGlvLkRpcmVjdG9yeT8gZGlyZWN0b3J5LAogIFByb2Nlc3NSdW5uZXIgcnVuUHJvY2VzcyA9IGlvLlByb2Nlc3MucnVuLAogIFJvdXRlQ29uZmlndXJhdGlvbkJ1aWxkZXIgYnVpbGRDb25maWd1cmF0aW9uID0gYnVpbGRSb3V0ZUNvbmZpZ3VyYXRpb24sCiAgdm9pZCBGdW5jdGlvbihpbnQgZXhpdENvZGUpIGV4aXQgPSBkZWZhdWx0RXhpdCwKICBGdXR1cmU8dm9pZD4gRnVuY3Rpb24oU3RyaW5nIGZyb20sIFN0cmluZyB0bykgY29weVBhdGggPSBpb19leHBhbmRlZC5jb3B5UGF0aCwKfSkgYXN5bmMgewogIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBkaXJlY3RvcnkgPz8gaW8uRGlyZWN0b3J5LmN1cnJlbnQ7CiAgZmluYWwgdXNlc1dvcmtzcGFjZXMgPSB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBleGl0OiBleGl0LAogICk7CgogIFZvaWRDYWxsYmFjaz8gcmVzdG9yZVdvcmtzcGFjZVJlc29sdXRpb247CgogIGlmICh1c2VzV29ya3NwYWNlcykgewogICAgLy8gRGlzYWJsZSB3b3Jrc3BhY2UgcmVzb2x1dGlvbiB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyLXBhY2thZ2UgbG9ja2ZpbGVzLgogICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKICAgIHJlc3RvcmVXb3Jrc3BhY2VSZXNvbHV0aW9uID0gZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgIGNvbnRleHQsCiAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgZXhpdDogZXhpdCwKICAgICk7CiAgfQoKICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwdWJzcGVjLmxvY2sgZmlsZSBpcyB1cCB0byBkYXRlCiAgYXdhaXQgZGFydFB1YkdldCgKICAgIGNvbnRleHQsCiAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICBydW5Qcm9jZXNzOiBydW5Qcm9jZXNzLAogICAgZXhpdDogZXhpdCwKICApOwoKICBmaW5hbCBidWlsZERpcmVjdG9yeSA9IGlvLkRpcmVjdG9yeSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdidWlsZCcpLAogICk7CgogIGF3YWl0IGNyZWF0ZUJ1bmRsZSgKICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgZXhpdDogZXhpdCwKICApOwoKICByZXN0b3JlV29ya3NwYWNlUmVzb2x1dGlvbj8uY2FsbCgpOwoKICBmaW5hbCBSb3V0ZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKICB0cnkgewogICAgY29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbihwcm9qZWN0RGlyZWN0b3J5KTsKICB9IG9uIEV4Y2VwdGlvbiBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGVycm9yJyk7CiAgICByZXR1cm4gZXhpdCgxKTsKICB9CgogIHJlcG9ydFJvdXRlQ29uZmxpY3RzKAogICAgY29uZmlndXJhdGlvbiwKICAgIG9uUm91dGVDb25mbGljdDogKAogICAgICBvcmlnaW5hbEZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0ZpbGVQYXRoLAogICAgICBjb25mbGljdGluZ0VuZHBvaW50LAogICAgKSB7CiAgICAgIGNvbnRleHQubG9nZ2VyLmVycigKICAgICAgICAnJydSb3V0ZSBjb25mbGljdCBkZXRlY3RlZC4gJHtsaWdodEN5YW4ud3JhcChvcmlnaW5hbEZpbGVQYXRoKX0gYW5kICR7bGlnaHRDeWFuLndyYXAoY29uZmxpY3RpbmdGaWxlUGF0aCl9IGJvdGggcmVzb2x2ZSB0byAke2xpZ2h0Q3lhbi53cmFwKGNvbmZsaWN0aW5nRW5kcG9pbnQpfS4nJycsCiAgICAgICk7CiAgICB9LAogICAgb25WaW9sYXRpb25FbmQ6ICgpID0+IGV4aXQoMSksCiAgKTsKCiAgcmVwb3J0Um9ndWVSb3V0ZXMoCiAgICBjb25maWd1cmF0aW9uLAogICAgb25Sb2d1ZVJvdXRlOiAoZmlsZVBhdGgsIGlkZWFsUGF0aCkgewogICAgICBjb250ZXh0LmxvZ2dlci5lcnIoCiAgICAgICAgJycnUm9ndWUgcm91dGUgZGV0ZWN0ZWQuJHtkZWZhdWx0Rm9yZWdyb3VuZC53cmFwKCcgJyl9UmVuYW1lICR7bGlnaHRDeWFuLndyYXAoZmlsZVBhdGgpfSB0byAke2xpZ2h0Q3lhbi53cmFwKGlkZWFsUGF0aCl9LicnJywKICAgICAgKTsKICAgIH0sCiAgICBvblZpb2xhdGlvbkVuZDogKCkgPT4gZXhpdCgxKSwKICApOwoKICBmaW5hbCBjdXN0b21Eb2NrZXJGaWxlID0gaW8uRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJyksCiAgKTsKCiAgZmluYWwgaW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzID0gYXdhaXQgZ2V0SW50ZXJuYWxQYXRoRGVwZW5kZW5jaWVzKAogICAgcHJvamVjdERpcmVjdG9yeSwKICApOwoKICBmaW5hbCBleHRlcm5hbERlcGVuZGVuY2llcyA9IGF3YWl0IGNyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXIoCiAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgYnVpbGREaXJlY3Rvcnk6IGJ1aWxkRGlyZWN0b3J5LAogICAgY29weVBhdGg6IGNvcHlQYXRoLAogICk7CgogIGZpbmFsIGFkZERvY2tlcmZpbGUgPSAhY3VzdG9tRG9ja2VyRmlsZS5leGlzdHNTeW5jKCk7CgogIGNvbnRleHQudmFycyA9IHsKICAgICdkaXJlY3Rvcmllcyc6IGNvbmZpZ3VyYXRpb24uZGlyZWN0b3JpZXMKICAgICAgICAubWFwKChjKSA9PiBjLnRvSnNvbigpKQogICAgICAgIC50b0xpc3QoKQogICAgICAgIC5yZXZlcnNlZAogICAgICAgIC50b0xpc3QoKSwKICAgICdyb3V0ZXMnOiBjb25maWd1cmF0aW9uLnJvdXRlcy5tYXAoKHIpID0+IHIudG9Kc29uKCkpLnRvTGlzdCgpLAogICAgJ21pZGRsZXdhcmUnOiBjb25maWd1cmF0aW9uLm1pZGRsZXdhcmUubWFwKChtKSA9PiBtLnRvSnNvbigpKS50b0xpc3QoKSwKICAgICdnbG9iYWxNaWRkbGV3YXJlJzogY29uZmlndXJhdGlvbi5nbG9iYWxNaWRkbGV3YXJlICE9IG51bGwKICAgICAgICA/IGNvbmZpZ3VyYXRpb24uZ2xvYmFsTWlkZGxld2FyZSEudG9Kc29uKCkKICAgICAgICA6IGZhbHNlLAogICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBjb25maWd1cmF0aW9uLnNlcnZlU3RhdGljRmlsZXMsCiAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGNvbmZpZ3VyYXRpb24uaW52b2tlQ3VzdG9tRW50cnlwb2ludCwKICAgICdpbnZva2VDdXN0b21Jbml0JzogY29uZmlndXJhdGlvbi5pbnZva2VDdXN0b21Jbml0LAogICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiBpbnRlcm5hbFBhdGhEZXBlbmRlbmNpZXMsCiAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBleHRlcm5hbERlcGVuZGVuY2llcy5pc05vdEVtcHR5LAogICAgJ2RhcnRWZXJzaW9uJzogY29udGV4dC52YXJzWydkYXJ0VmVyc2lvbiddLAogICAgJ2FkZERvY2tlcmZpbGUnOiBhZGREb2NrZXJmaWxlLAogIH07Cn0K", "type": "text" }, { "path": "pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICBwdWJzcGVjX3BhcnNlOiBeMS41LjAKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", "type": "text" }, { @@ -262,7 +262,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/pre_gen_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKF8sIF9fKSBhc3luYyB7fSwKICAgICAgKTsKCiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUVudHJ5cG9pbnQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUVudHJ5cG9pbnQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IHRydWUsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoImRvbid0IGNyZWF0ZSB0aGUgZG9ja2VyZmlsZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMgb24gdGhlIGZvbGRlci4iLAogICAgICAgICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGRpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnJwpuYW1lOiBleGFtcGxlCnZlcnNpb246IDAuMS4wCmVudmlyb25tZW50OgogIHNkazogXjIuMTcuMApkZXBlbmRlbmNpZXM6CiAgbWFzb246IGFueQogIHRlc3Q6IGFueQonJycsCiAgICAgICk7CgogICAgICBGaWxlKHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICBub1BhdGhEZXBlbmRlbmNpZXMsCiAgICAgICk7CiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAnRG9ja2VyZmlsZScpKS53cml0ZUFzU3RyaW5nU3luYygKICAgICAgICAnJywKICAgICAgKTsKCiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIGRpcmVjdG9yeTogZGlyZWN0b3J5LAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwoKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiBmYWxzZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgncmV0YWlucyBpbnZva2VDdXN0b21Jbml0ICh0cnVlKScsICgpIGFzeW5jIHsKICAgICAgY29uc3QgY29uZmlndXJhdGlvbiA9IFJvdXRlQ29uZmlndXJhdGlvbigKICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICBkaXJlY3RvcmllczogW10sCiAgICAgICAgcm91dGVzOiBbXSwKICAgICAgICByb2d1ZVJvdXRlczogW10sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21Jbml0OiB0cnVlLAogICAgICApOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgZXhwZWN0KAogICAgICAgIGNvbnRleHQudmFycywKICAgICAgICBlcXVhbHMoewogICAgICAgICAgJ2RpcmVjdG9yaWVzJzogPFJvdXRlRGlyZWN0b3J5PltdLAogICAgICAgICAgJ3JvdXRlcyc6IDxSb3V0ZUZpbGU+W10sCiAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNaWRkbGV3YXJlRmlsZT5bXSwKICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogZmFsc2UsCiAgICAgICAgICAnc2VydmVTdGF0aWNGaWxlcyc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogdHJ1ZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IHRydWUsCiAgICAgICAgfSksCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KAogICAgICAndXBkYXRlcyBjb250ZXh0LnZhcnMgd2hlbiBidWlsZFJvdXRlQ29uZmlndXJhdGlvbiBzdWNjZWVkcycsCiAgICAgICgpIGFzeW5jIHsKICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgICAgZ2xvYmFsTWlkZGxld2FyZTogTWlkZGxld2FyZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdtaWRkbGV3YXJlJywKICAgICAgICAgICAgcGF0aDogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICApLAogICAgICAgICAgbWlkZGxld2FyZTogWwogICAgICAgICAgICBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgZGlyZWN0b3JpZXM6IFsKICAgICAgICAgICAgUm91dGVEaXJlY3RvcnkoCiAgICAgICAgICAgICAgbmFtZTogJ18nLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgICAgICAgZmlsZXM6IFsKICAgICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgICAgbmFtZTogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm91dGVzOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgbmFtZTogJ2hlbGxvJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgICAnLyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJy9oZWxsbyc6IFsKICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgICAgcGF0aDogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgfSwKICAgICAgICAgIHNlcnZlU3RhdGljRmlsZXM6IHRydWUsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICAgJ2RpcmVjdG9yaWVzJzogWwogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ18nLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWFwPFN0cmluZywgZHluYW1pYz4+W10sCiAgICAgICAgICAgICAgICAnZmlsZXMnOiBbCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy8nLAogICAgICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ3BhdGgnOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICdkaXJlY3RvcnlfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdyb3V0ZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgJ3BhdGgnOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ21pZGRsZXdhcmUnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnaGVsbG9fbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby9taWRkbGV3YXJlLmRhcnQnLAogICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdnbG9iYWxNaWRkbGV3YXJlJzogewogICAgICAgICAgICAgICduYW1lJzogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICAgICdwYXRoJzogJ21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogdHJ1ZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUVudHJ5cG9pbnQnOiBmYWxzZSwKICAgICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAgICdwYXRoRGVwZW5kZW5jaWVzJzogPFN0cmluZz5bXSwKICAgICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICAgIH0pLAogICAgICAgICk7CiAgICAgIH0sCiAgICApOwogIH0pOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfZ2VuL2RhcnRfZnJvZ19nZW4uZGFydCc7CmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCcKICAgIHNob3cgSG9va0NvbnRleHQsIExvZ2dlciwgUHJvZ3Jlc3MsIGRlZmF1bHRGb3JlZ3JvdW5kLCBsaWdodEN5YW47CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKaW1wb3J0ICcuLi9wcmVfZ2VuLmRhcnQnIGFzIHByZV9nZW47CmltcG9ydCAncHVic3BlY19sb2Nrcy5kYXJ0JzsKaW1wb3J0ICdwdWJzcGVjcy5kYXJ0JzsKCmNsYXNzIF9GYWtlSG9va0NvbnRleHQgZXh0ZW5kcyBGYWtlIGltcGxlbWVudHMgSG9va0NvbnRleHQgewogIF9GYWtlSG9va0NvbnRleHQoe0xvZ2dlcj8gbG9nZ2VyfSkgOiBfbG9nZ2VyID0gbG9nZ2VyID8/IF9Nb2NrTG9nZ2VyKCk7CgogIGZpbmFsIExvZ2dlciBfbG9nZ2VyOwoKICB2YXIgX3ZhcnMgPSA8U3RyaW5nLCBkeW5hbWljPnt9OwoKICBAb3ZlcnJpZGUKICBNYXA8U3RyaW5nLCBkeW5hbWljPiBnZXQgdmFycyA9PiBfdmFyczsKCiAgQG92ZXJyaWRlCiAgc2V0IHZhcnMoTWFwPFN0cmluZywgZHluYW1pYz4gdmFsdWUpID0+IF92YXJzID0gdmFsdWU7CgogIEBvdmVycmlkZQogIExvZ2dlciBnZXQgbG9nZ2VyID0+IF9sb2dnZXI7Cn0KCmNsYXNzIF9Nb2NrTG9nZ2VyIGV4dGVuZHMgTW9jayBpbXBsZW1lbnRzIExvZ2dlciB7fQoKY2xhc3MgX01vY2tQcm9ncmVzcyBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBQcm9ncmVzcyB7fQoKdm9pZCBtYWluKCkgewogIGdyb3VwKCdwcmVHZW4nLCAoKSB7CiAgICBsYXRlIEhvb2tDb250ZXh0IGNvbnRleHQ7CiAgICBsYXRlIExvZ2dlciBsb2dnZXI7CgogICAgRnV0dXJlPFByb2Nlc3NSZXN1bHQ+IHN1Y2Nlc3NSdW5Qcm9jZXNzKAogICAgICBleGVjdXRhYmxlLAogICAgICBhcmdzLCB7CiAgICAgIFN0cmluZz8gd29ya2luZ0RpcmVjdG9yeSwKICAgICAgYm9vbD8gcnVuSW5TaGVsbCwKICAgIH0pID0+CiAgICAgICAgRnV0dXJlLnZhbHVlKFByb2Nlc3NSZXN1bHQoMCwgMCwgJycsICcnKSk7CgogICAgc2V0VXAoKCkgewogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBjb250ZXh0ID0gX0Zha2VIb29rQ29udGV4dChsb2dnZXI6IGxvZ2dlcikKICAgICAgICAuLnZhcnNbJ2RhcnRWZXJzaW9uJ10gPSAnc3RhYmxlJzsKCiAgICAgIHdoZW4oKCkgPT4gbG9nZ2VyLnByb2dyZXNzKGFueSgpKSkudGhlblJldHVybihfTW9ja1Byb2dyZXNzKCkpOwogICAgfSk7CgogICAgdGVzdCgncnVuIGNvbXBsZXRlcycsICgpIHsKICAgICAgZXhwZWN0KAogICAgICAgIEV4aXRPdmVycmlkZXMucnVuWm9uZWQoCiAgICAgICAgICAoKSA9PiBwcmVfZ2VuLnJ1bihfRmFrZUhvb2tDb250ZXh0KGxvZ2dlcjogbG9nZ2VyKSksCiAgICAgICAgICBleGl0OiAoXykge30sCiAgICAgICAgKSwKICAgICAgICBjb21wbGV0ZXMsCiAgICAgICk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGlmIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHRocm93cycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgZmluYWwgZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdvb3BzJyk7CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gdGhyb3cgZXhjZXB0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoZXhjZXB0aW9uLnRvU3RyaW5nKCkpKS5jYWxsZWQoMSk7CiAgICB9KTsKCiAgICB0ZXN0KCdleGl0KDEpIGZvciByb3V0ZSBjb25mbGljdHMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czogewogICAgICAgICAgJy8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICAgICcvaGVsbG8nOiBbCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG9faW5kZXgnLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby9pbmRleC5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICApLAogICAgICAgICAgXSwKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvdXRlIGNvbmZsaWN0IGRldGVjdGVkLiAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSBhbmQgJHtsaWdodEN5YW4ud3JhcCgncm91dGVzL2hlbGxvL2luZGV4LmRhcnQnKX0gYm90aCByZXNvbHZlIHRvICR7bGlnaHRDeWFuLndyYXAoJy9oZWxsbycpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnZXhpdCgxKSBmb3Igcm9ndWUgcm91dGVzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbCiAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICApLAogICAgICAgIF0sCiAgICAgICAgZW5kcG9pbnRzOiB7fSwKICAgICAgICBpbnZva2VDdXN0b21FbnRyeXBvaW50OiB0cnVlLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICB2ZXJpZnkoCiAgICAgICAgKCkgPT4gbG9nZ2VyLmVycigKICAgICAgICAgICcnJ1JvZ3VlIHJvdXRlIGRldGVjdGVkLiR7ZGVmYXVsdEZvcmVncm91bmQud3JhcCgnICcpfVJlbmFtZSAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8uZGFydCcpfSB0byAke2xpZ2h0Q3lhbi53cmFwKCdyb3V0ZXMvaGVsbG8vaW5kZXguZGFydCcpfS4nJycsCiAgICAgICAgKSwKICAgICAgKTsKICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCB3b3Jrc3BhY2VzJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZSgKICAgICAgICBwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyh3b3Jrc3BhY2VSb290KTsKICAgICAgZmluYWwgc2VydmVyID0gRGlyZWN0b3J5KAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3NlcnZlcicpLAogICAgICApLi5jcmVhdGVTeW5jKCk7CiAgICAgIEZpbGUoCiAgICAgICAgcGF0aC5qb2luKHNlcnZlci5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMod29ya3NwYWNlQ2hpbGQpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihzZXJ2ZXIucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwojIEdlbmVyYXRlZCBieSBwdWIKIyBTZWUgaHR0cHM6Ly9kYXJ0LmRldi90b29scy9wdWIvZ2xvc3NhcnkjbG9ja2ZpbGUKcGFja2FnZXM6CiAgX2ZlX2FuYWx5emVyX3NoYXJlZDoKICAgIGRlcGVuZGVuY3k6IHRyYW5zaXRpdmUKICAgIGRlc2NyaXB0aW9uOgogICAgICBuYW1lOiBfZmVfYW5hbHl6ZXJfc2hhcmVkCiAgICAgIHNoYTI1NjogZGEwZDkyMDljYTc2YmRlNTc5ZjJkYTMzMGFlYjlkZjYyYjYzMTljODM0ZmE3YmFhZTA1MjAyMWIwNDYyNDAxZgogICAgICB1cmw6ICJodHRwczovL3B1Yi5kZXYiCiAgICBzb3VyY2U6IGhvc3RlZAogICAgdmVyc2lvbjogIjg1LjAuMCIKJycnKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBzZXJ2ZXIsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICAgY29weVBhdGg6IChfLCBfXykgYXN5bmMge30sCiAgICAgICk7CgogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgZGlyZWN0b3J5LmRlbGV0ZShyZWN1cnNpdmU6IHRydWUpLmlnbm9yZSgpOwogICAgfSk7CgogICAgdGVzdCgnd29ya3Mgd2l0aCBleHRlcm5hbCBkZXBlbmRlbmNpZXMnLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICk7CgogICAgICBmaW5hbCBkaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKAogICAgICAgIHBhdGguam9pbihkaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpLAogICAgICApLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBleGl0Q2FsbHMgPSA8aW50PltdOwogICAgICBhd2FpdCBwcmVfZ2VuLnByZUdlbigKICAgICAgICBjb250ZXh0LAogICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbjogKF8pID0+IGNvbmZpZ3VyYXRpb24sCiAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICBkaXJlY3Rvcnk6IGRpcmVjdG9yeSwKICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICBjb3B5UGF0aDogKGZyb20sIHRvKSBhc3luYyB7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgIGRpcmVjdG9yeS5kZWxldGUocmVjdXJzaXZlOiB0cnVlKS5pZ25vcmUoKTsKICAgIH0pOwoKICAgIHRlc3QoJ3JldGFpbnMgaW52b2tlQ3VzdG9tRW50cnlwb2ludCAodHJ1ZSknLCAoKSBhc3luYyB7CiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgbWlkZGxld2FyZTogW10sCiAgICAgICAgZGlyZWN0b3JpZXM6IFtdLAogICAgICAgIHJvdXRlczogW10sCiAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgIGVuZHBvaW50czoge30sCiAgICAgICAgaW52b2tlQ3VzdG9tRW50cnlwb2ludDogdHJ1ZSwKICAgICAgKTsKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CiAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIGV4cGVjdCgKICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgZXF1YWxzKHsKICAgICAgICAgICdkaXJlY3Rvcmllcyc6IDxSb3V0ZURpcmVjdG9yeT5bXSwKICAgICAgICAgICdyb3V0ZXMnOiA8Um91dGVGaWxlPltdLAogICAgICAgICAgJ21pZGRsZXdhcmUnOiA8TWlkZGxld2FyZUZpbGU+W10sCiAgICAgICAgICAnZ2xvYmFsTWlkZGxld2FyZSc6IGZhbHNlLAogICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiBmYWxzZSwKICAgICAgICAgICdpbnZva2VDdXN0b21FbnRyeXBvaW50JzogdHJ1ZSwKICAgICAgICAgICdpbnZva2VDdXN0b21Jbml0JzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICdkYXJ0VmVyc2lvbic6ICdzdGFibGUnLAogICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgIH0pLAogICAgICApOwogICAgfSk7CgogICAgdGVzdCgiZG9uJ3QgY3JlYXRlIHRoZSBkb2NrZXJmaWxlIGlmIG9uZSBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgZm9sZGVyLiIsCiAgICAgICAgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICApOwoKICAgICAgZmluYWwgZGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSkud3JpdGVBc1N0cmluZ1N5bmMoCiAgICAgICAgJycnCm5hbWU6IGV4YW1wbGUKdmVyc2lvbjogMC4xLjAKZW52aXJvbm1lbnQ6CiAgc2RrOiBeMi4xNy4wCmRlcGVuZGVuY2llczoKICBtYXNvbjogYW55CiAgdGVzdDogYW55CicnJywKICAgICAgKTsKCiAgICAgIEZpbGUocGF0aC5qb2luKGRpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgIG5vUGF0aERlcGVuZGVuY2llcywKICAgICAgKTsKICAgICAgRmlsZShwYXRoLmpvaW4oZGlyZWN0b3J5LnBhdGgsICdEb2NrZXJmaWxlJykpLndyaXRlQXNTdHJpbmdTeW5jKAogICAgICAgICcnLAogICAgICApOwoKICAgICAgZmluYWwgZXhpdENhbGxzID0gPGludD5bXTsKICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgY29udGV4dCwKICAgICAgICBidWlsZENvbmZpZ3VyYXRpb246IChfKSA9PiBjb25maWd1cmF0aW9uLAogICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgZGlyZWN0b3J5OiBkaXJlY3RvcnksCiAgICAgICAgcnVuUHJvY2Vzczogc3VjY2Vzc1J1blByb2Nlc3MsCiAgICAgICk7CgogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiBmYWxzZSwKICAgICAgICAgICdoYXNFeHRlcm5hbERlcGVuZGVuY2llcyc6IGZhbHNlLAogICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgJ2RhcnRWZXJzaW9uJzogJ3N0YWJsZScsCiAgICAgICAgICAnYWRkRG9ja2VyZmlsZSc6IGZhbHNlLAogICAgICAgIH0pLAogICAgICApOwogICAgICBkaXJlY3RvcnkuZGVsZXRlKHJlY3Vyc2l2ZTogdHJ1ZSkuaWdub3JlKCk7CiAgICB9KTsKCiAgICB0ZXN0KCdyZXRhaW5zIGludm9rZUN1c3RvbUluaXQgKHRydWUpJywgKCkgYXN5bmMgewogICAgICBjb25zdCBjb25maWd1cmF0aW9uID0gUm91dGVDb25maWd1cmF0aW9uKAogICAgICAgIG1pZGRsZXdhcmU6IFtdLAogICAgICAgIGRpcmVjdG9yaWVzOiBbXSwKICAgICAgICByb3V0ZXM6IFtdLAogICAgICAgIHJvZ3VlUm91dGVzOiBbXSwKICAgICAgICBlbmRwb2ludHM6IHt9LAogICAgICAgIGludm9rZUN1c3RvbUluaXQ6IHRydWUsCiAgICAgICk7CiAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgIGF3YWl0IHByZV9nZW4ucHJlR2VuKAogICAgICAgIGNvbnRleHQsCiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgIHJ1blByb2Nlc3M6IHN1Y2Nlc3NSdW5Qcm9jZXNzLAogICAgICApOwogICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICBleHBlY3QoCiAgICAgICAgY29udGV4dC52YXJzLAogICAgICAgIGVxdWFscyh7CiAgICAgICAgICAnZGlyZWN0b3JpZXMnOiA8Um91dGVEaXJlY3Rvcnk+W10sCiAgICAgICAgICAncm91dGVzJzogPFJvdXRlRmlsZT5bXSwKICAgICAgICAgICdtaWRkbGV3YXJlJzogPE1pZGRsZXdhcmVGaWxlPltdLAogICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiBmYWxzZSwKICAgICAgICAgICdzZXJ2ZVN0YXRpY0ZpbGVzJzogZmFsc2UsCiAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgJ2ludm9rZUN1c3RvbUluaXQnOiB0cnVlLAogICAgICAgICAgJ2hhc0V4dGVybmFsRGVwZW5kZW5jaWVzJzogZmFsc2UsCiAgICAgICAgICAncGF0aERlcGVuZGVuY2llcyc6IDxTdHJpbmc+W10sCiAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICdhZGREb2NrZXJmaWxlJzogdHJ1ZSwKICAgICAgICB9KSwKICAgICAgKTsKICAgIH0pOwoKICAgIHRlc3QoCiAgICAgICd1cGRhdGVzIGNvbnRleHQudmFycyB3aGVuIGJ1aWxkUm91dGVDb25maWd1cmF0aW9uIHN1Y2NlZWRzJywKICAgICAgKCkgYXN5bmMgewogICAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBSb3V0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICBnbG9iYWxNaWRkbGV3YXJlOiBNaWRkbGV3YXJlRmlsZSgKICAgICAgICAgICAgbmFtZTogJ21pZGRsZXdhcmUnLAogICAgICAgICAgICBwYXRoOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICksCiAgICAgICAgICBtaWRkbGV3YXJlOiBbCiAgICAgICAgICAgIE1pZGRsZXdhcmVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8vbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICBkaXJlY3RvcmllczogWwogICAgICAgICAgICBSb3V0ZURpcmVjdG9yeSgKICAgICAgICAgICAgICBuYW1lOiAnXycsCiAgICAgICAgICAgICAgcm91dGU6ICcvJywKICAgICAgICAgICAgICBtaWRkbGV3YXJlOiBbXSwKICAgICAgICAgICAgICBmaWxlczogWwogICAgICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgICAgICBuYW1lOiAnaW5kZXgnLAogICAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgICAgIHBhcmFtczogW10sCiAgICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBSb3V0ZUZpbGUoCiAgICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgcm91dGU6ICcvaGVsbG8nLAogICAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgKSwKICAgICAgICAgIF0sCiAgICAgICAgICByb3V0ZXM6IFsKICAgICAgICAgICAgUm91dGVGaWxlKAogICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgcGF0aDogJ2luZGV4LmRhcnQnLAogICAgICAgICAgICAgIHJvdXRlOiAnLycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICBuYW1lOiAnaGVsbG8nLAogICAgICAgICAgICAgIHBhdGg6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICB3aWxkY2FyZDogZmFsc2UsCiAgICAgICAgICAgICksCiAgICAgICAgICBdLAogICAgICAgICAgcm9ndWVSb3V0ZXM6IFtdLAogICAgICAgICAgZW5kcG9pbnRzOiB7CiAgICAgICAgICAgICcvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdpbmRleCcsCiAgICAgICAgICAgICAgICBwYXRoOiAnaW5kZXguZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy8nLAogICAgICAgICAgICAgICAgcGFyYW1zOiBbXSwKICAgICAgICAgICAgICAgIHdpbGRjYXJkOiBmYWxzZSwKICAgICAgICAgICAgICApLAogICAgICAgICAgICBdLAogICAgICAgICAgICAnL2hlbGxvJzogWwogICAgICAgICAgICAgIFJvdXRlRmlsZSgKICAgICAgICAgICAgICAgIG5hbWU6ICdoZWxsbycsCiAgICAgICAgICAgICAgICBwYXRoOiAnaGVsbG8uZGFydCcsCiAgICAgICAgICAgICAgICByb3V0ZTogJy9oZWxsbycsCiAgICAgICAgICAgICAgICBwYXJhbXM6IFtdLAogICAgICAgICAgICAgICAgd2lsZGNhcmQ6IGZhbHNlLAogICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICB9LAogICAgICAgICAgc2VydmVTdGF0aWNGaWxlczogdHJ1ZSwKICAgICAgICApOwogICAgICAgIGZpbmFsIGV4aXRDYWxscyA9IDxpbnQ+W107CiAgICAgICAgYXdhaXQgcHJlX2dlbi5wcmVHZW4oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uOiAoXykgPT4gY29uZmlndXJhdGlvbiwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICBydW5Qcm9jZXNzOiBzdWNjZXNzUnVuUHJvY2VzcywKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBjb250ZXh0LnZhcnMsCiAgICAgICAgICBlcXVhbHMoewogICAgICAgICAgICAnZGlyZWN0b3JpZXMnOiBbCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ25hbWUnOiAnXycsCiAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAnbWlkZGxld2FyZSc6IDxNYXA8U3RyaW5nLCBkeW5hbWljPj5bXSwKICAgICAgICAgICAgICAgICdmaWxlcyc6IFsKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2luZGV4JywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnLycsCiAgICAgICAgICAgICAgICAgICAgJ2ZpbGVfcGFyYW1zJzogY29uc3QgPFN0cmluZz5bXSwKICAgICAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAncGF0aCc6ICdoZWxsby5kYXJ0JywKICAgICAgICAgICAgICAgICAgICAncm91dGUnOiAnL2hlbGxvJywKICAgICAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgICAgICd3aWxkY2FyZCc6IGZhbHNlLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgJ2RpcmVjdG9yeV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ3JvdXRlcyc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdpbmRleCcsCiAgICAgICAgICAgICAgICAncGF0aCc6ICdpbmRleC5kYXJ0JywKICAgICAgICAgICAgICAgICdyb3V0ZSc6ICcvJywKICAgICAgICAgICAgICAgICdmaWxlX3BhcmFtcyc6IGNvbnN0IDxTdHJpbmc+W10sCiAgICAgICAgICAgICAgICAnd2lsZGNhcmQnOiBmYWxzZSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICduYW1lJzogJ2hlbGxvJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvLmRhcnQnLAogICAgICAgICAgICAgICAgJ3JvdXRlJzogJy9oZWxsbycsCiAgICAgICAgICAgICAgICAnZmlsZV9wYXJhbXMnOiBjb25zdCA8U3RyaW5nPltdLAogICAgICAgICAgICAgICAgJ3dpbGRjYXJkJzogZmFsc2UsCiAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAnbWlkZGxld2FyZSc6IFsKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnbmFtZSc6ICdoZWxsb19taWRkbGV3YXJlJywKICAgICAgICAgICAgICAgICdwYXRoJzogJ2hlbGxvL21pZGRsZXdhcmUuZGFydCcsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ2dsb2JhbE1pZGRsZXdhcmUnOiB7CiAgICAgICAgICAgICAgJ25hbWUnOiAnbWlkZGxld2FyZScsCiAgICAgICAgICAgICAgJ3BhdGgnOiAnbWlkZGxld2FyZS5kYXJ0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3NlcnZlU3RhdGljRmlsZXMnOiB0cnVlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tRW50cnlwb2ludCc6IGZhbHNlLAogICAgICAgICAgICAnaW52b2tlQ3VzdG9tSW5pdCc6IGZhbHNlLAogICAgICAgICAgICAnaGFzRXh0ZXJuYWxEZXBlbmRlbmNpZXMnOiBmYWxzZSwKICAgICAgICAgICAgJ3BhdGhEZXBlbmRlbmNpZXMnOiA8U3RyaW5nPltdLAogICAgICAgICAgICAnZGFydFZlcnNpb24nOiAnc3RhYmxlJywKICAgICAgICAgICAgJ2FkZERvY2tlcmZpbGUnOiB0cnVlLAogICAgICAgICAgfSksCiAgICAgICAgKTsKICAgICAgfSwKICAgICk7CiAgfSk7Cn0K", "type": "text" }, { @@ -286,7 +286,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/create_external_packages_folder_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5ID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCBmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnZm9vJywKICAgICAgKTsKCiAgICAgIGZpbmFsIHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICcuLi8uLi9mb28yJywKICAgICAgKTsKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ3NlY29uZF9mb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbCiAgICAgICAgJyRmb29QYWNrYWdlRGlyZWN0b3J5IC0+ICRmb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0JywKICAgICAgICAnJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJHNlY29uZEZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICBdKTsKICAgIH0pOwoKICAgIHRlc3QoImRvZXNuJ3QgYnVuZGxlIGludGVybmFsIHBhdGggZGVwZW5kZW5jaWVzIiwgKCkgYXN5bmMgewogICAgICBmaW5hbCBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoKTsKICAgICAgRmlsZShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlYy5sb2NrJykpCiAgICAgICAgICAud3JpdGVBc1N0cmluZ1N5bmMoZm9vUGF0aFdpdGhJbnRlcm5hbERlcGVuZGVuY3kpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgcmV0dXJuIEZ1dHVyZS52YWx1ZSgpOwogICAgICAgIH0sCiAgICAgICk7CgogICAgICBmaW5hbCBmcm9tID0gcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJy4uLy4uL2ZvbycpOwogICAgICBmaW5hbCB0byA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJ2J1aWxkJywKICAgICAgICAnLmRhcnRfZnJvZ19wYXRoX2RlcGVuZGVuY2llcycsCiAgICAgICAgJ2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsnJGZyb20gLT4gJHRvJ10pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp0ZXN0L3Rlc3QuZGFydCc7CgppbXBvcnQgJy4uL3B1YnNwZWNfbG9ja3MuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2NyZWF0ZUV4dGVybmFsUGFja2FnZXNGb2xkZXInLCAoKSB7CiAgICB0ZXN0KCdidW5kbGVzIGV4dGVybmFsIGRlcGVuZGVuY2llcyB3aXRoIGV4dGVybmFsIGRlcGVuZGVuY2llcycsICgpIGFzeW5jIHsKICAgICAgZmluYWwgcHJvamVjdERpcmVjdG9yeSA9IERpcmVjdG9yeS5zeXN0ZW1UZW1wLmNyZWF0ZVRlbXBTeW5jKCk7CiAgICAgIEZpbGUocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMubG9jaycpKQogICAgICAgICAgLndyaXRlQXNTdHJpbmdTeW5jKGZvb1BhdGgpOwogICAgICBmaW5hbCBjb3B5Q2FsbHMgPSA8U3RyaW5nPltdOwoKICAgICAgYXdhaXQgY3JlYXRlRXh0ZXJuYWxQYWNrYWdlc0ZvbGRlcigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5OiBwcm9qZWN0RGlyZWN0b3J5LAogICAgICAgIGJ1aWxkRGlyZWN0b3J5OiBEaXJlY3RvcnkocGF0aC5qb2luKHByb2plY3REaXJlY3RvcnkucGF0aCwgJ2J1aWxkJykpLAogICAgICAgIGNvcHlQYXRoOiAoZnJvbSwgdG8pIGFzeW5jIHsKICAgICAgICAgIGNvcHlDYWxscy5hZGQoJyRmcm9tIC0+ICR0bycpOwogICAgICAgICAgRmlsZSgKICAgICAgICAgICAgcGF0aC5qb2luKHRvLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICAgKS5jcmVhdGVTeW5jKHJlY3Vyc2l2ZTogdHJ1ZSk7CiAgICAgICAgfSwKICAgICAgKTsKCiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnkgPSBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnLi4vLi4vZm9vJyk7CiAgICAgIGZpbmFsIGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQgPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwoKICAgICAgZmluYWwgc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSA9IHBhdGguam9pbigKICAgICAgICBwcm9qZWN0RGlyZWN0b3J5LnBhdGgsCiAgICAgICAgJy4uLy4uL2ZvbzInLAogICAgICApOwogICAgICBmaW5hbCBzZWNvbmRGb29QYWNrYWdlRGlyZWN0b3J5VGFyZ2V0ID0gcGF0aC5qb2luKAogICAgICAgIHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAnYnVpbGQnLAogICAgICAgICcuZGFydF9mcm9nX3BhdGhfZGVwZW5kZW5jaWVzJywKICAgICAgICAnc2Vjb25kX2ZvbycsCiAgICAgICk7CiAgICAgIGV4cGVjdChjb3B5Q2FsbHMsIFsKICAgICAgICAnJGZvb1BhY2thZ2VEaXJlY3RvcnkgLT4gJGZvb1BhY2thZ2VEaXJlY3RvcnlUYXJnZXQnLAogICAgICAgICckc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeSAtPiAkc2Vjb25kRm9vUGFja2FnZURpcmVjdG9yeVRhcmdldCcsCiAgICAgIF0pOwogICAgfSk7CgogICAgdGVzdCgiZG9lc24ndCBidW5kbGUgaW50ZXJuYWwgcGF0aCBkZXBlbmRlbmNpZXMiLCAoKSBhc3luYyB7CiAgICAgIGZpbmFsIHByb2plY3REaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygpOwogICAgICBGaWxlKHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLmxvY2snKSkKICAgICAgICAgIC53cml0ZUFzU3RyaW5nU3luYyhmb29QYXRoV2l0aEludGVybmFsRGVwZW5kZW5jeSk7CiAgICAgIGZpbmFsIGNvcHlDYWxscyA9IDxTdHJpbmc+W107CgogICAgICBhd2FpdCBjcmVhdGVFeHRlcm5hbFBhY2thZ2VzRm9sZGVyKAogICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnksCiAgICAgICAgYnVpbGREaXJlY3Rvcnk6IERpcmVjdG9yeShwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAnYnVpbGQnKSksCiAgICAgICAgY29weVBhdGg6IChmcm9tLCB0bykgYXN5bmMgewogICAgICAgICAgY29weUNhbGxzLmFkZCgnJGZyb20gLT4gJHRvJyk7CiAgICAgICAgICBGaWxlKAogICAgICAgICAgICBwYXRoLmpvaW4odG8sICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgICApLmNyZWF0ZVN5bmMocmVjdXJzaXZlOiB0cnVlKTsKICAgICAgICB9LAogICAgICApOwoKICAgICAgZmluYWwgZnJvbSA9IHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICcuLi8uLi9mb28nKTsKICAgICAgZmluYWwgdG8gPSBwYXRoLmpvaW4oCiAgICAgICAgcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICdidWlsZCcsCiAgICAgICAgJy5kYXJ0X2Zyb2dfcGF0aF9kZXBlbmRlbmNpZXMnLAogICAgICAgICdmb28nLAogICAgICApOwogICAgICBleHBlY3QoY29weUNhbGxzLCBbJyRmcm9tIC0+ICR0byddKTsKICAgIH0pOwogIH0pOwp9Cg==", "type": "text" }, { @@ -298,7 +298,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCnJlc29sdXRpb246IG51bGwKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQnJycsCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gdW5hYmxlIHRvIHJlYWQgcHVic3BlY19vdmVycmlkZXMnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", "type": "text" }, { @@ -322,7 +322,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/uses_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJ2ludmFsaWQgcHVic3BlYy55YW1sJyk7CiAgICAgIH0pOwoKICAgICAgdGVzdCgncmV0dXJucyBmYWxzZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzRmFsc2UsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KCgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQYXJzZWRZYW1sRXhjZXB0aW9uJykpKSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGlzIHZhbGlkIHdpdGggbm8gcmVzb2x1dGlvbicsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgZmFsc2UnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc0ZhbHNlLAogICAgICAgICk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgaXNFbXB0eSk7CiAgICAgICAgdmVyaWZ5TmV2ZXIoKCkgPT4gbG9nZ2VyLmVycihhbnkoKSkpOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIHJlc29sdXRpb24gd29ya3NwYWNlJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLndyaXRlQXNTdHJpbmdTeW5jKCcnJwpuYW1lOiBfCnJlc29sdXRpb246IHdvcmtzcGFjZQonJycpOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ3JldHVybnMgdHJ1ZScsICgpIHsKICAgICAgICBleHBlY3QoCiAgICAgICAgICB1c2VzV29ya3NwYWNlUmVzb2x1dGlvbigKICAgICAgICAgICAgY29udGV4dCwKICAgICAgICAgICAgd29ya2luZ0RpcmVjdG9yeTogd29ya2luZ0RpcmVjdG9yeS5wYXRoLAogICAgICAgICAgICBleGl0OiBleGl0Q2FsbHMuYWRkLAogICAgICAgICAgKSwKICAgICAgICAgIGlzVHJ1ZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ3VzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgYnVpbGREaXJlY3Rvcnk7CiAgICBsYXRlIERpcmVjdG9yeSB3b3JraW5nRGlyZWN0b3J5OwoKICAgIHNldFVwKCgpIHsKICAgICAgZXhpdENhbGxzID0gW107CiAgICAgIGNvbnRleHQgPSBfTW9ja0hvb2tDb250ZXh0KCk7CiAgICAgIGxvZ2dlciA9IF9Nb2NrTG9nZ2VyKCk7CiAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ2J1aWxkJyk7CiAgICAgIHdvcmtpbmdEaXJlY3RvcnkgPSBEaXJlY3Rvcnkuc3lzdGVtVGVtcC5jcmVhdGVUZW1wU3luYygnd29ya2luZycpOwoKICAgICAgd2hlbigoKSA9PiBjb250ZXh0LmxvZ2dlcikudGhlblJldHVybihsb2dnZXIpOwoKICAgICAgYWRkVGVhckRvd24oKCkgewogICAgICAgIGJ1aWxkRGlyZWN0b3J5LmRlbGV0ZSgpLmlnbm9yZSgpOwogICAgICAgIHdvcmtpbmdEaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlYy55YW1sIGRvZXMgbm90IGV4aXN0JywgKCkgewogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyBtYWxmb3JtZWQnLCAoKSB7CiAgICAgIGxhdGUgRmlsZSBwdWJzcGVjRmlsZTsKICAgICAgc2V0VXAoKCkgewogICAgICAgIHB1YnNwZWNGaWxlID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbih3b3JraW5nRGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjLnlhbWwnKSwKICAgICAgICApLi53cml0ZUFzU3RyaW5nU3luYygnaW52YWxpZCBwdWJzcGVjLnlhbWwnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGVxdWFscyhbMV0pKTsKICAgICAgICB2ZXJpZnkoCiAgICAgICAgICAoKSA9PiBsb2dnZXIuZXJyKAogICAgICAgICAgICBhbnkodGhhdDogY29udGFpbnMoJ1VuYWJsZSB0byBwYXJzZSAke3B1YnNwZWNGaWxlLnBhdGh9JykpLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWMueWFtbCBpcyB2YWxpZCB3aXRoIG5vIHJlc29sdXRpb24nLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBGaWxlKAogICAgICAgICAgcGF0aC5qb2luKHdvcmtpbmdEaXJlY3RvcnkucGF0aCwgJ3B1YnNwZWMueWFtbCcpLAogICAgICAgICkud3JpdGVBc1N0cmluZ1N5bmMoJycnCm5hbWU6IF8KJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIGZhbHNlJywgKCkgewogICAgICAgIGV4cGVjdCgKICAgICAgICAgIHVzZXNXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3JraW5nRGlyZWN0b3J5LnBhdGgsCiAgICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgICApLAogICAgICAgICAgaXNGYWxzZSwKICAgICAgICApOwogICAgICAgIGV4cGVjdChleGl0Q2FsbHMsIGlzRW1wdHkpOwogICAgICAgIHZlcmlmeU5ldmVyKCgpID0+IGxvZ2dlci5lcnIoYW55KCkpKTsKICAgICAgfSk7CiAgICB9KTsKCiAgICBncm91cCgnd2hlbiBwdWJzcGVjLnlhbWwgaXMgdmFsaWQgd2l0aCByZXNvbHV0aW9uIHdvcmtzcGFjZScsICgpIHsKICAgICAgc2V0VXAoKCkgewogICAgICAgIEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4od29ya2luZ0RpcmVjdG9yeS5wYXRoLCAncHVic3BlYy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYygnJycKbmFtZTogXwpyZXNvbHV0aW9uOiB3b3Jrc3BhY2UKJycnKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdyZXR1cm5zIHRydWUnLCAoKSB7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgdXNlc1dvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICAgIGNvbnRleHQsCiAgICAgICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtpbmdEaXJlY3RvcnkucGF0aCwKICAgICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICAgICksCiAgICAgICAgICBpc1RydWUsCiAgICAgICAgKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBpc0VtcHR5KTsKICAgICAgICB2ZXJpZnlOZXZlcigoKSA9PiBsb2dnZXIuZXJyKGFueSgpKSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" } ], From 8ada4907376de9846da288c683926ba87e0970eb Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Wed, 3 Sep 2025 23:32:27 -0500 Subject: [PATCH 29/31] more edge case fixes --- .../lib/src/disable_workspace_resolution.dart | 20 ++++++++++++------- .../dart_frog_prod_server/hooks/pubspec.yaml | 1 + .../disable_workspace_resolution_test.dart | 3 ++- .../dart_frog_prod_server_bundle.dart | 12 +++++------ 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index a69a7b4ff..8e8ce583f 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -2,10 +2,13 @@ import 'dart:io'; import 'package:mason/mason.dart'; import 'package:path/path.dart' as path; import 'package:yaml/yaml.dart'; +import 'package:yaml_edit/yaml_edit.dart'; /// A void callback function (e.g. `void Function()`). typedef VoidCallback = void Function(); +void _noop() {} + /// Opts out of dart workspaces until we can generate per package lockfiles. /// https://github.com/dart-lang/pub/issues/4594 VoidCallback disableWorkspaceResolution( @@ -18,7 +21,7 @@ VoidCallback disableWorkspaceResolution( } on Exception catch (e) { context.logger.err('$e'); exit(1); - return () {}; + return _noop; } } @@ -35,12 +38,15 @@ void Function() overrideResolutionInPubspecOverrides(String projectDirectory) { final contents = pubspecOverridesFile.readAsStringSync(); final pubspecOverrides = loadYaml(contents) as YamlMap?; - if (pubspecOverrides?['resolution'] == 'null') return () {}; - pubspecOverridesFile.writeAsStringSync( - ''' -resolution: null -$contents''', - ); + if (pubspecOverrides == null) { + pubspecOverridesFile.writeAsStringSync('resolution: null'); + return () => pubspecOverridesFile.writeAsStringSync(contents); + } + + if (pubspecOverrides['resolution'] == 'null') return _noop; + + final editor = YamlEditor(contents)..update(['resolution'], null); + pubspecOverridesFile.writeAsStringSync(editor.toString()); return () => pubspecOverridesFile.writeAsStringSync(contents); } diff --git a/bricks/dart_frog_prod_server/hooks/pubspec.yaml b/bricks/dart_frog_prod_server/hooks/pubspec.yaml index 2e4c17ae8..a3aeeacc1 100644 --- a/bricks/dart_frog_prod_server/hooks/pubspec.yaml +++ b/bricks/dart_frog_prod_server/hooks/pubspec.yaml @@ -11,6 +11,7 @@ dependencies: mason: ^0.1.0 path: ^1.8.1 yaml: ^3.1.2 + yaml_edit: ^2.2.2 dev_dependencies: mocktail: ^1.0.0 diff --git a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart index da9786c9d..de811941c 100644 --- a/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart +++ b/bricks/dart_frog_prod_server/hooks/test/src/disable_workspace_resolution_test.dart @@ -70,8 +70,9 @@ dependency_overrides: pubspecOverrides.readAsStringSync(), equals( ''' +$originalPubspecOverridesContent resolution: null -$originalPubspecOverridesContent''', +''', ), ); }); diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index b08577611..0d6897bdb 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -52,7 +52,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gQSB2b2lkIGNhbGxiYWNrIGZ1bmN0aW9uIChlLmcuIGB2b2lkIEZ1bmN0aW9uKClgKS4KdHlwZWRlZiBWb2lkQ2FsbGJhY2sgPSB2b2lkIEZ1bmN0aW9uKCk7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gKCkge307CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzP1sncmVzb2x1dGlvbiddID09ICdudWxsJykgcmV0dXJuICgpIHt9OwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKAogICAgJycnCnJlc29sdXRpb246IG51bGwKJGNvbnRlbnRzJycnLAogICk7CgogIHJldHVybiAoKSA9PiBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYyhjb250ZW50cyk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKdm9pZCBfbm9vcCgpIHt9CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gX25vb3A7CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzID09IG51bGwpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwogIH0KCiAgaWYgKHB1YnNwZWNPdmVycmlkZXNbJ3Jlc29sdXRpb24nXSA9PSAnbnVsbCcpIHJldHVybiBfbm9vcDsKCiAgZmluYWwgZWRpdG9yID0gWWFtbEVkaXRvcihjb250ZW50cykuLnVwZGF0ZShbJ3Jlc29sdXRpb24nXSwgbnVsbCk7CiAgcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoZWRpdG9yLnRvU3RyaW5nKCkpOwoKICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwp9Cg==", "type": "text" }, { @@ -100,7 +100,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", "type": "text" }, { @@ -148,7 +148,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "build/test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCnJlc29sdXRpb246IG51bGwKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQnJycsCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gdW5hYmxlIHRvIHJlYWQgcHVic3BlY19vdmVycmlkZXMnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { @@ -202,7 +202,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CgovLy8gQSB2b2lkIGNhbGxiYWNrIGZ1bmN0aW9uIChlLmcuIGB2b2lkIEZ1bmN0aW9uKClgKS4KdHlwZWRlZiBWb2lkQ2FsbGJhY2sgPSB2b2lkIEZ1bmN0aW9uKCk7CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gKCkge307CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzP1sncmVzb2x1dGlvbiddID09ICdudWxsJykgcmV0dXJuICgpIHt9OwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKAogICAgJycnCnJlc29sdXRpb246IG51bGwKJGNvbnRlbnRzJycnLAogICk7CgogIHJldHVybiAoKSA9PiBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYyhjb250ZW50cyk7Cn0K", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKdm9pZCBfbm9vcCgpIHt9CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gX25vb3A7CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzID09IG51bGwpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwogIH0KCiAgaWYgKHB1YnNwZWNPdmVycmlkZXNbJ3Jlc29sdXRpb24nXSA9PSAnbnVsbCcpIHJldHVybiBfbm9vcDsKCiAgZmluYWwgZWRpdG9yID0gWWFtbEVkaXRvcihjb250ZW50cykuLnVwZGF0ZShbJ3Jlc29sdXRpb24nXSwgbnVsbCk7CiAgcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoZWRpdG9yLnRvU3RyaW5nKCkpOwoKICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwp9Cg==", "type": "text" }, { @@ -250,7 +250,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "pubspec.yaml", "data": - "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKCmRldl9kZXBlbmRlbmNpZXM6CiAgbW9ja3RhaWw6IF4xLjAuMAogIHRlc3Q6IF4xLjI1LjAK", + "bmFtZTogZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzCnB1Ymxpc2hfdG86IG5vbmUKCmVudmlyb25tZW50OgogIHNkazogIj49My4wLjAgPDQuMC4wIgoKZGVwZW5kZW5jaWVzOgogIGRhcnRfZnJvZ19nZW46IF4yLjAuMAogIGVxdWF0YWJsZTogXjIuMC41CiAgaW86IF4xLjAuMwogIG1hc29uOiBeMC4xLjAKICBwYXRoOiBeMS44LjEKICB5YW1sOiBeMy4xLjIKICB5YW1sX2VkaXQ6IF4yLjIuMgoKZGV2X2RlcGVuZGVuY2llczoKICBtb2NrdGFpbDogXjEuMC4wCiAgdGVzdDogXjEuMjUuMAo=", "type": "text" }, { @@ -298,7 +298,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "test/src/disable_workspace_resolution_test.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCnJlc29sdXRpb246IG51bGwKJG9yaWdpbmFsUHVic3BlY092ZXJyaWRlc0NvbnRlbnQnJycsCiAgICAgICAgICApLAogICAgICAgICk7CiAgICAgIH0pOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gdW5hYmxlIHRvIHJlYWQgcHVic3BlY19vdmVycmlkZXMnLCAoKSB7CiAgICAgIHNldFVwKCgpIHsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS4uY3JlYXRlU3luYygpOwogICAgICAgIFByb2Nlc3MucnVuU3luYygnY2htb2QnLCBbJzAwMCcsIHB1YnNwZWNPdmVycmlkZXMucGF0aF0pOwogICAgICB9KTsKCiAgICAgIHRlc3QoJ2V4aXRzIHdpdGggZXJyb3InLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBleHBlY3QoZXhpdENhbGxzLCBlcXVhbHMoWzFdKSk7CiAgICAgICAgdmVyaWZ5KAogICAgICAgICAgKCkgPT4gbG9nZ2VyLmVycihhbnkodGhhdDogY29udGFpbnMoJ1Blcm1pc3Npb24gZGVuaWVkJykpKSwKICAgICAgICApLmNhbGxlZCgxKTsKICAgICAgfSk7CiAgICB9KTsKICB9KTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKCmltcG9ydCAncGFja2FnZTpkYXJ0X2Zyb2dfcHJvZF9zZXJ2ZXJfaG9va3MvZGFydF9mcm9nX3Byb2Rfc2VydmVyX2hvb2tzLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7CmltcG9ydCAncGFja2FnZTptb2NrdGFpbC9tb2NrdGFpbC5kYXJ0JzsKaW1wb3J0ICdwYWNrYWdlOnBhdGgvcGF0aC5kYXJ0JyBhcyBwYXRoOwppbXBvcnQgJ3BhY2thZ2U6dGVzdC90ZXN0LmRhcnQnOwoKY2xhc3MgX01vY2tIb29rQ29udGV4dCBleHRlbmRzIE1vY2sgaW1wbGVtZW50cyBIb29rQ29udGV4dCB7fQoKY2xhc3MgX01vY2tMb2dnZXIgZXh0ZW5kcyBNb2NrIGltcGxlbWVudHMgTG9nZ2VyIHt9Cgp2b2lkIG1haW4oKSB7CiAgZ3JvdXAoJ2Rpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uJywgKCkgewogICAgbGF0ZSBMaXN0PGludD4gZXhpdENhbGxzOwogICAgbGF0ZSBIb29rQ29udGV4dCBjb250ZXh0OwogICAgbGF0ZSBMb2dnZXIgbG9nZ2VyOwogICAgbGF0ZSBEaXJlY3RvcnkgcHJvamVjdERpcmVjdG9yeTsKCiAgICBzZXRVcCgoKSB7CiAgICAgIGV4aXRDYWxscyA9IFtdOwogICAgICBjb250ZXh0ID0gX01vY2tIb29rQ29udGV4dCgpOwogICAgICBsb2dnZXIgPSBfTW9ja0xvZ2dlcigpOwogICAgICBwcm9qZWN0RGlyZWN0b3J5ID0gRGlyZWN0b3J5LnN5c3RlbVRlbXAuY3JlYXRlVGVtcFN5bmMoJ3Byb2plY3QnKTsKCiAgICAgIHdoZW4oKCkgPT4gY29udGV4dC5sb2dnZXIpLnRoZW5SZXR1cm4obG9nZ2VyKTsKCiAgICAgIGFkZFRlYXJEb3duKCgpID0+IHByb2plY3REaXJlY3RvcnkuZGVsZXRlKCkuaWdub3JlKCkpOwogICAgfSk7CgogICAgZ3JvdXAoJ3doZW4gcHVic3BlY19vdmVycmlkZXMueWFtbCBkb2VzIG5vdCBleGlzdCcsICgpIHsKICAgICAgdGVzdCgnYWRkcyByZXNvbHV0aW9uOiBudWxsJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IGNvbnRlbnRzLmZpcnN0IGFzIEZpbGU7CiAgICAgICAgZXhwZWN0KAogICAgICAgICAgcHVic3BlY092ZXJyaWRlcy5yZWFkQXNTdHJpbmdTeW5jKCksCiAgICAgICAgICBlcXVhbHMoJ3Jlc29sdXRpb246IG51bGwnKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHB1YnNwZWNfb3ZlcnJpZGVzLnlhbWwgZXhpc3RzJywgKCkgewogICAgICBjb25zdCBvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50ID0gJycnCmRlcGVuZGVuY3lfb3ZlcnJpZGVzOgogIGZvbzoKICAgIHBhdGg6IC4vcGF0aC90by9mb28nJyc7CgogICAgICBzZXRVcCgoKSB7CiAgICAgICAgRmlsZSgKICAgICAgICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LnBhdGgsICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgICAgICAgKS53cml0ZUFzU3RyaW5nU3luYyhvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50KTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdhZGRzIHJlc29sdXRpb246IG51bGwnLCAoKSB7CiAgICAgICAgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgcHJvamVjdERpcmVjdG9yeTogcHJvamVjdERpcmVjdG9yeS5wYXRoLAogICAgICAgICAgZXhpdDogZXhpdENhbGxzLmFkZCwKICAgICAgICApOwogICAgICAgIGZpbmFsIGNvbnRlbnRzID0gcHJvamVjdERpcmVjdG9yeS5saXN0U3luYygpOwogICAgICAgIGV4cGVjdChjb250ZW50cywgaGFzTGVuZ3RoKDEpKTsKICAgICAgICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gY29udGVudHMuZmlyc3QgYXMgRmlsZTsKICAgICAgICBleHBlY3QoCiAgICAgICAgICBwdWJzcGVjT3ZlcnJpZGVzLnJlYWRBc1N0cmluZ1N5bmMoKSwKICAgICAgICAgIGVxdWFscygKICAgICAgICAgICAgJycnCiRvcmlnaW5hbFB1YnNwZWNPdmVycmlkZXNDb250ZW50CnJlc29sdXRpb246IG51bGwKJycnLAogICAgICAgICAgKSwKICAgICAgICApOwogICAgICB9KTsKICAgIH0pOwoKICAgIGdyb3VwKCd3aGVuIHVuYWJsZSB0byByZWFkIHB1YnNwZWNfb3ZlcnJpZGVzJywgKCkgewogICAgICBzZXRVcCgoKSB7CiAgICAgICAgZmluYWwgcHVic3BlY092ZXJyaWRlcyA9IEZpbGUoCiAgICAgICAgICBwYXRoLmpvaW4ocHJvamVjdERpcmVjdG9yeS5wYXRoLCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICAgICAgICkuLmNyZWF0ZVN5bmMoKTsKICAgICAgICBQcm9jZXNzLnJ1blN5bmMoJ2NobW9kJywgWycwMDAnLCBwdWJzcGVjT3ZlcnJpZGVzLnBhdGhdKTsKICAgICAgfSk7CgogICAgICB0ZXN0KCdleGl0cyB3aXRoIGVycm9yJywgKCkgewogICAgICAgIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogICAgICAgICAgY29udGV4dCwKICAgICAgICAgIHByb2plY3REaXJlY3Rvcnk6IHByb2plY3REaXJlY3RvcnkucGF0aCwKICAgICAgICAgIGV4aXQ6IGV4aXRDYWxscy5hZGQsCiAgICAgICAgKTsKICAgICAgICBmaW5hbCBjb250ZW50cyA9IHByb2plY3REaXJlY3RvcnkubGlzdFN5bmMoKTsKICAgICAgICBleHBlY3QoY29udGVudHMsIGhhc0xlbmd0aCgxKSk7CiAgICAgICAgZXhwZWN0KGV4aXRDYWxscywgZXF1YWxzKFsxXSkpOwogICAgICAgIHZlcmlmeSgKICAgICAgICAgICgpID0+IGxvZ2dlci5lcnIoYW55KHRoYXQ6IGNvbnRhaW5zKCdQZXJtaXNzaW9uIGRlbmllZCcpKSksCiAgICAgICAgKS5jYWxsZWQoMSk7CiAgICAgIH0pOwogICAgfSk7CiAgfSk7Cn0K", "type": "text" }, { From b3ccf5b040e72f70e303c450d405520a1ce55477 Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Wed, 3 Sep 2025 23:33:36 -0500 Subject: [PATCH 30/31] cleanup --- .../hooks/lib/src/disable_workspace_resolution.dart | 6 ++---- .../build/templates/dart_frog_prod_server_bundle.dart | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index 8e8ce583f..01c273e6a 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -7,8 +7,6 @@ import 'package:yaml_edit/yaml_edit.dart'; /// A void callback function (e.g. `void Function()`). typedef VoidCallback = void Function(); -void _noop() {} - /// Opts out of dart workspaces until we can generate per package lockfiles. /// https://github.com/dart-lang/pub/issues/4594 VoidCallback disableWorkspaceResolution( @@ -21,7 +19,7 @@ VoidCallback disableWorkspaceResolution( } on Exception catch (e) { context.logger.err('$e'); exit(1); - return _noop; + return () {}; // no-op } } @@ -43,7 +41,7 @@ void Function() overrideResolutionInPubspecOverrides(String projectDirectory) { return () => pubspecOverridesFile.writeAsStringSync(contents); } - if (pubspecOverrides['resolution'] == 'null') return _noop; + if (pubspecOverrides['resolution'] == 'null') return () {}; // no-op final editor = YamlEditor(contents)..update(['resolution'], null); pubspecOverridesFile.writeAsStringSync(editor.toString()); diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 0d6897bdb..4facaaf8c 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -202,7 +202,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKdm9pZCBfbm9vcCgpIHt9CgovLy8gT3B0cyBvdXQgb2YgZGFydCB3b3Jrc3BhY2VzIHVudGlsIHdlIGNhbiBnZW5lcmF0ZSBwZXIgcGFja2FnZSBsb2NrZmlsZXMuCi8vLyBodHRwczovL2dpdGh1Yi5jb20vZGFydC1sYW5nL3B1Yi9pc3N1ZXMvNDU5NApWb2lkQ2FsbGJhY2sgZGlzYWJsZVdvcmtzcGFjZVJlc29sdXRpb24oCiAgSG9va0NvbnRleHQgY29udGV4dCwgewogIHJlcXVpcmVkIFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5LAogIHJlcXVpcmVkIHZvaWQgRnVuY3Rpb24oaW50IGV4aXRDb2RlKSBleGl0LAp9KSB7CiAgdHJ5IHsKICAgIHJldHVybiBvdmVycmlkZVJlc29sdXRpb25JblB1YnNwZWNPdmVycmlkZXMocHJvamVjdERpcmVjdG9yeSk7CiAgfSBvbiBFeGNlcHRpb24gY2F0Y2ggKGUpIHsKICAgIGNvbnRleHQubG9nZ2VyLmVycignJGUnKTsKICAgIGV4aXQoMSk7CiAgICByZXR1cm4gX25vb3A7CiAgfQp9Cgp2b2lkIEZ1bmN0aW9uKCkgb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKFN0cmluZyBwcm9qZWN0RGlyZWN0b3J5KSB7CiAgZmluYWwgcHVic3BlY092ZXJyaWRlc0ZpbGUgPSBGaWxlKAogICAgcGF0aC5qb2luKHByb2plY3REaXJlY3RvcnksICdwdWJzcGVjX292ZXJyaWRlcy55YW1sJyksCiAgKTsKCiAgaWYgKCFwdWJzcGVjT3ZlcnJpZGVzRmlsZS5leGlzdHNTeW5jKCkpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gcHVic3BlY092ZXJyaWRlc0ZpbGUuZGVsZXRlU3luYzsKICB9CgogIGZpbmFsIGNvbnRlbnRzID0gcHVic3BlY092ZXJyaWRlc0ZpbGUucmVhZEFzU3RyaW5nU3luYygpOwogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXMgPSBsb2FkWWFtbChjb250ZW50cykgYXMgWWFtbE1hcD87CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzID09IG51bGwpIHsKICAgIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdyZXNvbHV0aW9uOiBudWxsJyk7CiAgICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwogIH0KCiAgaWYgKHB1YnNwZWNPdmVycmlkZXNbJ3Jlc29sdXRpb24nXSA9PSAnbnVsbCcpIHJldHVybiBfbm9vcDsKCiAgZmluYWwgZWRpdG9yID0gWWFtbEVkaXRvcihjb250ZW50cykuLnVwZGF0ZShbJ3Jlc29sdXRpb24nXSwgbnVsbCk7CiAgcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoZWRpdG9yLnRvU3RyaW5nKCkpOwoKICByZXR1cm4gKCkgPT4gcHVic3BlY092ZXJyaWRlc0ZpbGUud3JpdGVBc1N0cmluZ1N5bmMoY29udGVudHMpOwp9Cg==", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKLy8vIE9wdHMgb3V0IG9mIGRhcnQgd29ya3NwYWNlcyB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyIHBhY2thZ2UgbG9ja2ZpbGVzLgovLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKVm9pZENhbGxiYWNrIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICByZXR1cm4gb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKHByb2plY3REaXJlY3RvcnkpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogICAgcmV0dXJuICgpIHt9OyAvLyBuby1vcAogIH0KfQoKdm9pZCBGdW5jdGlvbigpIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXNGaWxlID0gRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICk7CgogIGlmICghcHVic3BlY092ZXJyaWRlc0ZpbGUuZXhpc3RzU3luYygpKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuIHB1YnNwZWNPdmVycmlkZXNGaWxlLmRlbGV0ZVN5bmM7CiAgfQoKICBmaW5hbCBjb250ZW50cyA9IHB1YnNwZWNPdmVycmlkZXNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKTsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gbG9hZFlhbWwoY29udGVudHMpIGFzIFlhbWxNYXA/OwoKICBpZiAocHVic3BlY092ZXJyaWRlcyA9PSBudWxsKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKICB9CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzWydyZXNvbHV0aW9uJ10gPT0gJ251bGwnKSByZXR1cm4gKCkge307IC8vIG5vLW9wCgogIGZpbmFsIGVkaXRvciA9IFlhbWxFZGl0b3IoY29udGVudHMpLi51cGRhdGUoWydyZXNvbHV0aW9uJ10sIG51bGwpOwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGVkaXRvci50b1N0cmluZygpKTsKCiAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKfQo=", "type": "text" }, { From 6c110f42df29847dce9efa71d503e68f8ce57fac Mon Sep 17 00:00:00 2001 From: Felix Angelov Date: Thu, 4 Sep 2025 22:20:12 -0500 Subject: [PATCH 31/31] chore: use `VoidCallback` --- .../hooks/lib/src/disable_workspace_resolution.dart | 2 +- .../commands/build/templates/dart_frog_prod_server_bundle.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart index 01c273e6a..1236fe23e 100644 --- a/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart +++ b/bricks/dart_frog_prod_server/hooks/lib/src/disable_workspace_resolution.dart @@ -23,7 +23,7 @@ VoidCallback disableWorkspaceResolution( } } -void Function() overrideResolutionInPubspecOverrides(String projectDirectory) { +VoidCallback overrideResolutionInPubspecOverrides(String projectDirectory) { final pubspecOverridesFile = File( path.join(projectDirectory, 'pubspec_overrides.yaml'), ); diff --git a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart index 4facaaf8c..d621f622d 100644 --- a/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart +++ b/packages/dart_frog_cli/lib/src/commands/build/templates/dart_frog_prod_server_bundle.dart @@ -202,7 +202,7 @@ final dartFrogProdServerBundle = MasonBundle.fromJson({ { "path": "lib/src/disable_workspace_resolution.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKLy8vIE9wdHMgb3V0IG9mIGRhcnQgd29ya3NwYWNlcyB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyIHBhY2thZ2UgbG9ja2ZpbGVzLgovLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKVm9pZENhbGxiYWNrIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICByZXR1cm4gb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKHByb2plY3REaXJlY3RvcnkpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogICAgcmV0dXJuICgpIHt9OyAvLyBuby1vcAogIH0KfQoKdm9pZCBGdW5jdGlvbigpIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXNGaWxlID0gRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICk7CgogIGlmICghcHVic3BlY092ZXJyaWRlc0ZpbGUuZXhpc3RzU3luYygpKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuIHB1YnNwZWNPdmVycmlkZXNGaWxlLmRlbGV0ZVN5bmM7CiAgfQoKICBmaW5hbCBjb250ZW50cyA9IHB1YnNwZWNPdmVycmlkZXNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKTsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gbG9hZFlhbWwoY29udGVudHMpIGFzIFlhbWxNYXA/OwoKICBpZiAocHVic3BlY092ZXJyaWRlcyA9PSBudWxsKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKICB9CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzWydyZXNvbHV0aW9uJ10gPT0gJ251bGwnKSByZXR1cm4gKCkge307IC8vIG5vLW9wCgogIGZpbmFsIGVkaXRvciA9IFlhbWxFZGl0b3IoY29udGVudHMpLi51cGRhdGUoWydyZXNvbHV0aW9uJ10sIG51bGwpOwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGVkaXRvci50b1N0cmluZygpKTsKCiAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKfQo=", + "aW1wb3J0ICdkYXJ0OmlvJzsKaW1wb3J0ICdwYWNrYWdlOm1hc29uL21hc29uLmRhcnQnOwppbXBvcnQgJ3BhY2thZ2U6cGF0aC9wYXRoLmRhcnQnIGFzIHBhdGg7CmltcG9ydCAncGFja2FnZTp5YW1sL3lhbWwuZGFydCc7CmltcG9ydCAncGFja2FnZTp5YW1sX2VkaXQveWFtbF9lZGl0LmRhcnQnOwoKLy8vIEEgdm9pZCBjYWxsYmFjayBmdW5jdGlvbiAoZS5nLiBgdm9pZCBGdW5jdGlvbigpYCkuCnR5cGVkZWYgVm9pZENhbGxiYWNrID0gdm9pZCBGdW5jdGlvbigpOwoKLy8vIE9wdHMgb3V0IG9mIGRhcnQgd29ya3NwYWNlcyB1bnRpbCB3ZSBjYW4gZ2VuZXJhdGUgcGVyIHBhY2thZ2UgbG9ja2ZpbGVzLgovLy8gaHR0cHM6Ly9naXRodWIuY29tL2RhcnQtbGFuZy9wdWIvaXNzdWVzLzQ1OTQKVm9pZENhbGxiYWNrIGRpc2FibGVXb3Jrc3BhY2VSZXNvbHV0aW9uKAogIEhvb2tDb250ZXh0IGNvbnRleHQsIHsKICByZXF1aXJlZCBTdHJpbmcgcHJvamVjdERpcmVjdG9yeSwKICByZXF1aXJlZCB2b2lkIEZ1bmN0aW9uKGludCBleGl0Q29kZSkgZXhpdCwKfSkgewogIHRyeSB7CiAgICByZXR1cm4gb3ZlcnJpZGVSZXNvbHV0aW9uSW5QdWJzcGVjT3ZlcnJpZGVzKHByb2plY3REaXJlY3RvcnkpOwogIH0gb24gRXhjZXB0aW9uIGNhdGNoIChlKSB7CiAgICBjb250ZXh0LmxvZ2dlci5lcnIoJyRlJyk7CiAgICBleGl0KDEpOwogICAgcmV0dXJuICgpIHt9OyAvLyBuby1vcAogIH0KfQoKVm9pZENhbGxiYWNrIG92ZXJyaWRlUmVzb2x1dGlvbkluUHVic3BlY092ZXJyaWRlcyhTdHJpbmcgcHJvamVjdERpcmVjdG9yeSkgewogIGZpbmFsIHB1YnNwZWNPdmVycmlkZXNGaWxlID0gRmlsZSgKICAgIHBhdGguam9pbihwcm9qZWN0RGlyZWN0b3J5LCAncHVic3BlY19vdmVycmlkZXMueWFtbCcpLAogICk7CgogIGlmICghcHVic3BlY092ZXJyaWRlc0ZpbGUuZXhpc3RzU3luYygpKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuIHB1YnNwZWNPdmVycmlkZXNGaWxlLmRlbGV0ZVN5bmM7CiAgfQoKICBmaW5hbCBjb250ZW50cyA9IHB1YnNwZWNPdmVycmlkZXNGaWxlLnJlYWRBc1N0cmluZ1N5bmMoKTsKICBmaW5hbCBwdWJzcGVjT3ZlcnJpZGVzID0gbG9hZFlhbWwoY29udGVudHMpIGFzIFlhbWxNYXA/OwoKICBpZiAocHVic3BlY092ZXJyaWRlcyA9PSBudWxsKSB7CiAgICBwdWJzcGVjT3ZlcnJpZGVzRmlsZS53cml0ZUFzU3RyaW5nU3luYygncmVzb2x1dGlvbjogbnVsbCcpOwogICAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKICB9CgogIGlmIChwdWJzcGVjT3ZlcnJpZGVzWydyZXNvbHV0aW9uJ10gPT0gJ251bGwnKSByZXR1cm4gKCkge307IC8vIG5vLW9wCgogIGZpbmFsIGVkaXRvciA9IFlhbWxFZGl0b3IoY29udGVudHMpLi51cGRhdGUoWydyZXNvbHV0aW9uJ10sIG51bGwpOwogIHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGVkaXRvci50b1N0cmluZygpKTsKCiAgcmV0dXJuICgpID0+IHB1YnNwZWNPdmVycmlkZXNGaWxlLndyaXRlQXNTdHJpbmdTeW5jKGNvbnRlbnRzKTsKfQo=", "type": "text" }, {